Function at 0x52a4ec
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
sub esp, 0x30
mov eax, 0
mov edx, dword [ebp + 0x14]
cmp eax, edx
jne 0x52a50e
mov eax, dword [ebp + 0x10]
cmp eax, 0x3e8
jge 0x52a50e
jmp 0x52a512
xor eax, eax
jmp 0x52a515
xor eax, eax
inc eax
cmp eax, 0
je 0x52a545
mov eax, 0
mov edx, dword [0x5839e8]
cmp eax, edx
sete al
xor ah, ah
cwde
xor al, 1
cmp eax, 0
je 0x52a545
push dword [ebp + 8]
call fcn.00531a57
jmp 0x52ac23
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x30], eax
mov eax, 0
mov edx, dword [0x583b60]
cmp eax, edx
jne 0x52a561
call fcn.0052a49f
jmp 0x52a56b
mov eax, dword [0x583b60]
mov eax, dword [eax]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
sar eax, 0x10
cmp eax, 0
je 0x52a5da
cmp eax, 3
je 0x52a7bd
cmp eax, 0x300
je 0x52a876
cmp eax, 0x100
je 0x52a910
cmp eax, 4
je 0x52a910
cmp eax, 0x200
je 0x52a9e9
cmp eax, 1
je 0x52aa08
cmp eax, 5
je 0x52ab5e
cmp eax, 0
je 0x52abe2
mov eax, 0
jmp 0x52abfc
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
push eax
call fcn.0044ebdc
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582ea4]
cmp eax, edx
jne 0x52a61e
mov eax, 9
jmp 0x52a76d
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582eb0]
cmp eax, edx
jne 0x52a640
push dword [0x583b60]
call fcn.0053e650
mov eax, 0x1a
jmp 0x52a76d
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582ebc]
cmp eax, edx
jne 0x52a6ea
push 0xb
push dword [0x583b60]
call fcn.0053ca15
push eax
call fcn.00525842
mov edx, eax
mov eax, 0x20000
and eax, edx
mov edx, eax
mov eax, 0
cmp eax, edx
je 0x52a6d5
push 0
push 0
push 0xf0
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
cmp eax, 0
je 0x52a6ac
cmp eax, 2
je 0x52a6b3
cmp eax, 1
je 0x52a6ba
mov eax, 0
jmp 0x52a6bf
mov eax, 1
jmp 0x52a6bf
mov eax, 0
jmp 0x52a6bf
mov eax, 2
mov dword [ebp - 0x28], eax
push 0
push dword [ebp - 0x28]
push 0xf1
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
push dword [0x583b60]
call fcn.0053e650
mov eax, 0x1a
jmp 0x52a76d
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582ec8]
cmp eax, edx
jne 0x52a733
push 0
push 0
push 0xf2
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
mov edx, eax
mov eax, 1
and eax, edx
mov edx, eax
mov eax, 1
cmp eax, edx
je 0x52a733
push 9
call dword [sym.imp.USER32.DLL_GetKeyState]
and eax, 0x8000
cmp eax, 0
jne 0x52a733
jmp 0x52a737
xor eax, eax
jmp 0x52a73a
xor eax, eax
inc eax
cmp eax, 0
je 0x52a753
push dword [0x583b60]
call fcn.0053e650
mov eax, 9
jmp 0x52a76d
xor eax, eax
inc eax
je 0x52a75f
mov eax, 0
jmp 0x52a76d
call fcn.0052a764
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582ec8]
cmp eax, edx
jne 0x52a821
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0
push 0
push 0xf2
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
xor edi, edi
cmp eax, 0
je 0x52a805
inc edi
mov eax, edi
xor al, 1
cmp eax, 0
je 0x52a81f
push 0x1a
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52a871
push dword [ebp + 8]
call fcn.0053c977
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp eax, 0
je 0x52a847
mov eax, dword [ebp - 0x10]
add eax, 0xa0
push eax
push dword [ebp - 0x30]
call fcn.00528b4c
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
push 0x11
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52abfc
mov eax, 0
mov edx, dword [0x583b60]
cmp eax, edx
je 0x52a898
push dword [ebp + 8]
call fcn.0053c8ac
cmp eax, 0
jne 0x52a898
xor eax, eax
jmp 0x52a89b
xor eax, eax
inc eax
xor al, 1
cmp eax, 0
je 0x52a906
push dword [ebp - 0x30]
call fcn.0053c8ac
xor al, 1
cmp eax, 0
je 0x52a906
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0x1a
push 0xffffffffffffffff
push dword [0x583b60]
call fcn.00529d65
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582ee0]
cmp eax, edx
jne 0x52a906
push 0x10
push dword [ebp - 0x30]
call fcn.00540b53
push 0
push dword [ebp - 0x30]
call fcn.0053cef9
mov eax, 0
jmp 0x52abfc
push dword [ebp + 8]
call fcn.0053c977
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp eax, 0
je 0x52a936
mov eax, dword [ebp - 0x10]
add eax, 0xa0
push eax
push dword [ebp - 0x30]
call fcn.00528b4c
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
push eax
call fcn.0044ebdc
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582ed4]
cmp eax, edx
je 0x52a981
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582ee0]
cmp eax, edx
je 0x52a981
xor eax, eax
jmp 0x52a984
xor eax, eax
inc eax
cmp eax, 0
je 0x52a99c
push dword [ebp - 0x30]
call fcn.0053c977
push eax
push dword [ebp - 0x30]
call fcn.00540da6
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582f28]
cmp eax, edx
je 0x52a9ba
mov eax, dword [ebp - 0x24]
mov edx, dword [0x582f38]
cmp eax, edx
je 0x52a9ba
xor eax, eax
jmp 0x52a9bd
xor eax, eax
inc eax
cmp eax, 0
je 0x52a9d5
push 0x12
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52a9e4
push 0x11
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52abfc
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0x12
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52abfc
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push dword [ebp - 0x30]
call fcn.0053c977
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
add eax, 0
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582efc]
cmp eax, edx
jne 0x52aa43
mov eax, 0x188
jmp 0x52aa48
mov eax, 0x147
mov dword [ebp - 0x38], eax
push 0
push 0
push dword [ebp - 0x38]
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
add eax, 0xa0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
and eax, 0xff
cmp eax, 0xb
jne 0x52aa91
mov eax, dword [ebp - 0x1c]
inc eax
push eax
pop edx
xchg edx, eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 8]
xchg edx, eax
cmp eax, edx
jne 0x52aa91
jmp 0x52aa95
xor eax, eax
jmp 0x52aa98
xor eax, eax
inc eax
cmp eax, 0
je 0x52aaa4
jmp 0x52ac23
push 0x19
push dword [ebp - 0x1c]
push dword [0x583b60]
call fcn.00529d65
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 0xf0
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
and eax, 0xff
cmp eax, 5
je 0x52aad8
jmp 0x52ac23
push 0
push 0
push dword [ebp - 0x38]
push dword [ebp - 0x30]
call dword [sym.imp.USER32.DLL_SendMessageW]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
and eax, 0xff
cmp eax, 0xb
jne 0x52ab13
mov eax, dword [ebp - 0x1c]
inc eax
push eax
pop edx
xchg edx, eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 8]
xchg edx, eax
cmp eax, edx
jne 0x52ab13
jmp 0x52ab17
xor eax, eax
jmp 0x52ab1a
xor eax, eax
inc eax
cmp eax, 0
je 0x52ab26
jmp 0x52ac23
mov eax, 0xb
xchg edx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax], edx
mov eax, dword [ebp - 0x1c]
inc eax
mov edx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + 8], edx
mov eax, dword [ebp - 0x20]
cmp eax, 1
jne 0x52ab59
push 0x1a
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52abfc
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 0
push dword [0x583b60]
call fcn.0053ca15
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582efc]
cmp eax, edx
je 0x52aba3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582ec8]
cmp eax, edx
je 0x52aba3
xor eax, eax
jmp 0x52aba6
xor eax, eax
inc eax
xor al, 1
cmp eax, 0
je 0x52abbe
push 0x1a
push 0xffffffffffffffff
push dword [0x583b60]
call fcn.00529d65
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [0x582efc]
cmp eax, edx
jne 0x52abe0
push 0x12
push 0
push dword [0x583b60]
call fcn.00529d65
jmp 0x52abfc
mov eax, dword [ebp - 0x30]
xchg edx, eax
mov eax, dword [0x583b60]
mov dword [eax], edx
push 1
push 0
push dword [0x583b60]
call fcn.00529d65