Function at 0x7ac0a240
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x4c
mov dword [esp], 0x10
call dword [sym.imp.user32.dll_GetKeyState]
mov esi, eax
mov eax, dword [ebx + 0x10]
sub esp, 4
test al, 2
je 0x7ac0a3a0
test al, 4
jne 0x7ac0a3b0
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp], ebx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 8], eax
lea eax, [ebp - 0x20]
mov dword [esp + 4], eax
mov dword [ebp - 0x30], edx
call fcn.7ac01ab0
mov dword [esp], ebx
mov edi, dword [ebx + 0x4a8]
call fcn.7ac01b90
sub eax, dword [ebp - 0x1c]
add eax, dword [ebp - 0x20]
cmp edi, eax
jle 0x7ac0a391
test byte [ebx + 4], 1
jne 0x7ac0a3d0
mov ecx, dword [ebp - 0x2c]
test byte [ecx + 0xe8], 0x10
jne 0x7ac0a5c8
mov eax, dword [ebx + 0xc]
mov edx, dword [ebp - 0x2c]
cmp edx, dword [eax + 0xc]
je 0x7ac0a498
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.7ac2eac0
mov ecx, dword [ebp - 0x2c]
mov edi, eax
cmp word [ecx + 8], 0
je 0x7ac0a2ff
mov eax, dword [ecx + 0x114]
mov eax, dword [eax]
mov dword [esp], ebx
mov dword [ebp - 0x2c], eax
call fcn.7ac35bd0
test si, si
mov eax, dword [ebp - 0x2c]
js 0x7ac0a5b0
test byte [ebx + 4], 1
mov dword [esp + 0x10], eax
jne 0x7ac0a470
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x7ac438f8
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac03540
mov dword [esp], ebx
call fcn.7ac35c50
mov dword [esp], 0
call dword [sym.imp.user32.dll_SetCursor]
mov eax, dword [ebx + 0x4c0]
sub esp, 4
test eax, eax
je 0x7ac0a36d
mov eax, ebx
call fcn.7ac0a0d0
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac13930
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.7ac2eb60
mov dword [esp], edi
call fcn.7ac2e940
lea esp, [ebp - 0xc]
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
test ah, 8
je 0x7ac0a391
mov dword [esp], 0x10
call dword [sym.imp.user32.dll_MessageBeep]
sub esp, 4
jmp 0x7ac0a391
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.7ac146f0
test eax, eax
je 0x7ac0a460
mov eax, dword [ebp - 0x30]
test byte [eax + 0x16], 0x10
je 0x7ac0a62a
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x20], eax
jne 0x7ac0a460
mov dword [esp], ebx
call fcn.7ac35bd0
mov eax, dword [ebp - 0x2c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7ac2f570
mov edx, dword [ebx + 0xc]
mov dword [edx], eax
mov esi, dword [ebx + 0xc]
mov dword [esp], eax
call fcn.7ac14670
mov dword [esi + 4], eax
mov eax, dword [ebx + 0xc]
mov dword [eax + 8], 0
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
mov dword [eax + 0x14], edx
mov dword [esp], ebx
call fcn.7ac35c50
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac13930
jmp 0x7ac0a391
mov eax, dword [ebx + 0xc]
jmp 0x7ac0a2df
mov dword [esp + 0xc], 2
mov dword [esp + 8], 0x7ac43bce
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac03540
jmp 0x7ac0a344
mov edi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
add ecx, dword [edi + 8]
jne 0x7ac0a2df
mov dword [esp], edx
call fcn.7ac14560
test eax, eax
je 0x7ac0a460
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.7ac14560
test byte [eax + 0xe8], 8
je 0x7ac0a460
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.7ac14560
mov edx, dword [eax + 0xe4]
test edx, edx
jne 0x7ac0a460
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.7ac14560
and dword [eax + 0xe8], 0xfffffff7
mov edx, dword [ebx + 0xc]
mov dword [edx], eax
mov esi, dword [ebx + 0xc]
mov dword [esp], eax
call fcn.7ac14670
mov dword [esi + 4], eax
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
mov dword [eax + 0x14], edx
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x7ac438f8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac03540
mov eax, dword [ebx + 8]
mov eax, dword [eax]
add eax, 0xc
mov dword [esp], eax
call fcn.7ac14540
mov dword [esp], ebx
mov dword [esp + 4], eax
mov esi, eax
call fcn.7ac16540
mov dword [esi + 0xe8], 0
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.7ac143f0
mov eax, dword [ebx + 0xc]
mov dword [eax], esi
mov edi, dword [ebx + 0xc]
mov dword [esp], esi
call fcn.7ac14670
mov dword [edi + 4], eax
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
mov dword [eax + 0x14], edx
mov dword [esp], esi
call fcn.7ac14540
or dword [eax + 0xe8], 8
jmp 0x7ac0a440
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac034b0
jmp 0x7ac0a344
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.7ac2f570
mov dword [esp], eax
call fcn.7ac14540
mov edx, dword [ebx + 0xc]
mov dword [edx], eax
mov esi, dword [ebx + 0xc]
mov dword [esp], eax
call fcn.7ac14670
mov dword [esi + 4], eax
mov eax, dword [ebx + 0xc]
mov dword [eax + 8], 0
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
mov dword [eax + 0x14], edx
mov dword [esp], ebx
call fcn.7ac35b40
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac13930
jmp 0x7ac0a391
mov dword [esp], ebx
call fcn.7ac35bd0
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
add esi, dword [eax + 8]
jne 0x7ac0a660
mov esi, dword [ebp - 0x2c]
mov dword [esp], esi
call fcn.7ac14560
test eax, eax
je 0x7ac0a660
mov dword [esp], esi
call fcn.7ac14560
mov dword [esp], eax
call fcn.7ac146f0
test eax, eax
je 0x7ac0a679
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 4]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
mov dword [eax + 0x14], edx
jmp 0x7ac0a400
mov edi, dword [ebp - 0x2c]
mov dword [esp], edi
call fcn.7ac14560
mov dword [esp], eax
call fcn.7ac146e0
test eax, eax
je 0x7ac0a6a3
mov edx, dword [ebx + 0xc]
mov dword [edx + 4], eax
mov esi, dword [ebx + 0xc]
mov dword [esp], edi
call fcn.7ac14560
mov dword [esi], eax
mov eax, dword [ebx + 0xc]
mov ecx, 3
mov dword [eax + 8], 0
mov esi, dword [ebx + 0xc]
lea edi, [esi + 0xc]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x7ac438f8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.7ac03540
jmp 0x7ac0a440