Function at 0x52c398
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov eax, dword [ebp + 8]
mov esi, dword [eax - 4]
mov si, word [esi + 4]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov edx, dword [eax]
call dword [edx + 0x328]
test al, al
je 0x52c3f3
mov eax, esi
sub ax, 0x25
je 0x52c3d3
dec ax
je 0x52c3df
dec ax
je 0x52c3d9
dec ax
je 0x52c3e5
jmp 0x52c3e9
mov si, 0x26
jmp 0x52c3e9
mov si, 0x28
jmp 0x52c3e9
mov si, 0x25
jmp 0x52c3e9
mov si, 0x27
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov word [eax + 4], si
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov edx, dword [0x4ff310]
call fcn.004040b8
test al, al
je 0x52c42f
mov eax, esi
sub ax, 0x25
je 0x52c421
dec ax
je 0x52c425
dec ax
je 0x52c421
dec ax
je 0x52c42b
jmp 0x52c42f
xor esi, esi
jmp 0x52c42f
mov si, 0x25
jmp 0x52c42f
mov si, 0x27
cmp si, 9
sete byte [ebp - 1]
xor ebx, ebx
cmp byte [ebp - 1], 0
je 0x52c473
push 0x11
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x52c45d
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
setl bl
xor bl, 1
jmp 0x52c473
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x52c46f
mov si, 0x25
jmp 0x52c473
mov si, 0x27
movzx eax, si
cmp eax, 0x24
jg 0x52c499
je 0x52c62a
sub eax, 9
je 0x52c4b1
sub eax, 9
je 0x52c4c3
sub eax, 0x11
je 0x52c65b
jmp 0x52c685
sub eax, 0x25
je 0x52c502
sub eax, 2
je 0x52c594
sub eax, 0x52
je 0x52c4c3
jmp 0x52c685
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov edx, ebx
call fcn.0052e9e0
jmp 0x52c6e5
cmp si, 0x12
je 0x52c4e1
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052bff4
cmp byte [eax + 0x139], 0
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov word [eax + 4], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0x320]
jmp 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x284]
test eax, eax
jne 0x52c527
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
call fcn.00526bd0
mov esi, eax
jmp 0x52c541
mov edx, dword [ebp + 8]
mov edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
xor ecx, ecx
call fcn.00526cb4
mov esi, eax
test esi, esi
je 0x52c556
mov edx, dword [esi + 0x18]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov ecx, dword [eax]
call dword [ecx + 0x2c8]
cmp byte [ebp - 1], 0
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052c1f0
mov eax, dword [eax]
call dword [eax + 0x1dc]
test al, al
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052c1f0
xor ecx, ecx
xor edx, edx
mov ebx, dword [eax]
call dword [ebx + 0x7c]
jmp 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x284]
test eax, eax
jne 0x52c5b9
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
call fcn.00526bd0
mov esi, eax
jmp 0x52c5d3
mov edx, dword [ebp + 8]
mov edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
xor ecx, ecx
call fcn.00526c48
mov esi, eax
test esi, esi
je 0x52c6e5
mov edx, dword [esi + 0x18]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov ecx, dword [eax]
call dword [ecx + 0x2c8]
cmp byte [ebp - 1], 0
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052c1f0
mov eax, dword [eax]
call dword [eax + 0x1dc]
test al, al
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052c1f0
xor ecx, ecx
xor edx, edx
mov ebx, dword [eax]
call dword [ebx + 0x7c]
jmp 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
call fcn.00526bd0
mov esi, eax
test esi, esi
je 0x52c6e5
mov edx, dword [esi + 0x18]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov ecx, dword [eax]
call dword [ecx + 0x2c8]
jmp 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov eax, dword [eax + 0x258]
call fcn.00526c0c
mov esi, eax
test esi, esi
je 0x52c6e5
mov edx, dword [esi + 0x18]
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov ecx, dword [eax]
call dword [ecx + 0x2c8]
jmp 0x52c6e5
mov eax, esi
call fcn.0050ac64
test al, al
je 0x52c6e5
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
call fcn.0052c1f0
call fcn.0050ad2c
push eax
lea eax, [ebp - 2]
push eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 4]
mov eax, dword [eax + 8]
call fcn.0046b6e0
mov ecx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov edx, esi
mov ebx, dword [eax]
call dword [ebx + 0x1b4]
mov esi, eax
test esi, esi
je 0x52c6e5
mov eax, esi
call fcn.0050ad20
mov edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax - 8]
mov cl, byte [ebp - 2]
mov ebx, dword [eax]
call dword [ebx + 0x2c4]
pop esi
pop ebx
pop ecx
pop ebp
ret