Function at 0x531c7d
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
movzx ecx, word [edx + 8]
push ebx
push esi
mov esi, eax
lea eax, [esi + 0xb0]
push edi
mov edi, dword [eax + 0x10]
sub edi, dword [eax + 0xc]
xor ebx, ebx
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x8c]
sar edi, 2
cmp ecx, 0x21
mov dword [ebp - 4], ebx
mov dword [ebp - 8], eax
jg 0x531e12
je 0x531dda
cmp ecx, 9
je 0x531d62
cmp ecx, 0xd
je 0x531d03
cmp ecx, 0x12
je 0x531cf8
cmp ecx, 0x1b
jne 0x531e20
mov ecx, dword [esi + 0x80]
mov dword [esi + 0xa0], ebx
cmp ecx, ebx
je 0x531cee
mov eax, dword [ecx]
push 1
call dword [eax + 8]
call fcn.0053168d
jmp 0x531edf
mov dword [esi + 0xa0], ebx
jmp 0x531e8f
cmp dword [esi + 0xa8], ebx
je 0x531d43
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
je 0x531d43
push ebx
push ebx
push 0x1f
push dword [esi + 0x28]
call dword [sym.imp.USER32.dll_PostMessageW]
mov esi, dword [esi + 0x80]
cmp esi, ebx
je 0x531edf
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
jmp 0x531edf
call fcn.005335f4
test eax, eax
jne 0x531edf
push ebx
push ebx
push 0x1f
push dword [esi + 0x28]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x531e8f
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test ax, ax
je 0x531da4
dec dword [esi + 0x8c]
jns 0x531d82
dec edi
mov dword [esi + 0x8c], edi
push dword [esi + 0x8c]
mov ecx, esi
call fcn.0053359d
test eax, eax
jne 0x531e8f
lea edx, [esi + 0x44]
call fcn.00535080
jmp 0x531e8c
inc dword [esi + 0x8c]
cmp dword [esi + 0x8c], edi
jl 0x531db8
mov dword [esi + 0x8c], ebx
push dword [esi + 0x8c]
mov ecx, esi
call fcn.0053359d
test eax, eax
jne 0x531e8f
lea eax, [esi + 0x44]
call fcn.0053509d
jmp 0x531e8c
mov eax, dword [esi + 0x60]
cdq
idiv dword [esi + 0x64]
sub dword [esi + 0x8c], eax
js 0x531ded
cmp eax, ebx
jne 0x531df3
mov dword [esi + 0x8c], ebx
push dword [esi + 0x8c]
mov ecx, esi
call fcn.0053359d
test eax, eax
jne 0x531e8f
lea edx, [esi + 0x44]
call fcn.005350cd
jmp 0x531e8c
sub ecx, 0x22
je 0x531e53
sub ecx, 4
je 0x531e3f
dec ecx
dec ecx
je 0x531e31
cmp dword [esi + 0xa4], ebx
je 0x531e8f
push edx
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x531e8f
inc eax
mov dword [esi + 0x8c], eax
cmp eax, edi
jmp 0x531db0
dec eax
cmp eax, ebx
mov dword [esi + 0x8c], eax
jge 0x531d82
jmp 0x531d7b
mov eax, dword [esi + 0x60]
cdq
idiv dword [esi + 0x64]
add dword [esi + 0x8c], eax
cmp dword [esi + 0x8c], edi
jge 0x531e6c
cmp eax, ebx
jne 0x531e73
dec edi
mov dword [esi + 0x8c], edi
push dword [esi + 0x8c]
mov ecx, esi
call fcn.0053359d
test eax, eax
jne 0x531e8f
lea eax, [esi + 0x44]
call fcn.005350ea
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x8c]
jne 0x531e9f
cmp dword [ebp - 4], ebx
je 0x531eaa
mov dword [esi + 0x68], ebx
mov dword [esi + 0x6c], ebx
call fcn.005321ca
mov edi, dword [esi + 0x8c]
cmp dword [ebp - 8], edi
je 0x531edf
push edi
mov eax, esi
call fcn.00533549
test eax, eax
je 0x531edf
lea ebx, [esi + 0x80]
cmp dword [ebx], 0
je 0x531edf
mov esi, dword [ebp - 0xc]
call fcn.004750c1
mov eax, dword [eax]
mov ecx, dword [ebx]
push dword [eax + 0x1c]
mov edx, dword [ecx]
call dword [edx]
pop edi
pop esi
pop ebx
leave
ret