Function at 0x50875a
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x48
mov eax, 0x57af49
call fcn.00550d66
mov edi, ecx
cmp byte [edi + 0x2c8], 0
je 0x508778
mov byte [edi + 0x2c8], 0
cmp dword [edi + 0x35c], 0
je 0x508af5
mov eax, dword [edi]
call dword [eax + 0x19c]
push eax
mov ecx, 0x5d17ec
call fcn.004d9404
mov dword [ebp - 0x38], eax
test eax, eax
jne 0x5087ac
cmp dword [0x5d17f0], eax
jne 0x5087ac
call fcn.00427961
mov eax, dword [edi + 0x35c]
mov ecx, edi
mov esi, dword [edi + 0x358]
mov dword [ebp - 0x34], eax
mov eax, dword [edi]
call dword [eax + 0x38c]
mov ecx, edi
call fcn.00507d3e
mov edx, dword [ebp - 0x34]
mov ebx, eax
cmp esi, edx
jne 0x5087f9
mov ecx, edx
sub ecx, 8
je 0x508a30
sub ecx, 1
je 0x50889c
sub ecx, 0xa
je 0x508805
mov eax, dword [edi]
mov ecx, edi
push edx
call dword [eax + 0x37c]
mov ecx, edi
call fcn.0042c315
jmp 0x508b03
mov esi, dword [0x5da5bc]
test esi, esi
jne 0x50881c
mov ecx, edi
call fcn.0042cab2
mov esi, eax
test esi, esi
je 0x50888d
push esi
push 0x591f88
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
je 0x50883a
mov edx, dword [eax]
mov ecx, eax
push edi
call dword [edx + 0x218]
jmp 0x508885
push esi
push 0x5919f8
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
je 0x508858
mov edx, dword [eax]
mov ecx, eax
push edi
call dword [edx + 0x1f8]
jmp 0x508885
push esi
push 0x592598
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
jne 0x50887a
push esi
push 0x592950
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
je 0x50888d
mov edx, dword [eax]
mov ecx, eax
push edi
call dword [edx + 0x210]
test eax, eax
je 0x5087f9
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x2dc]
jmp 0x5087f9
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x5089db
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x340]
test eax, eax
je 0x5089db
mov eax, dword [edi + 0xa4]
xor esi, esi
push esi
push esi
push 0xb
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
cmp dword [edi + 0x2f8], esi
jne 0x508963
push 0xa
lea ecx, [ebp - 0x54]
call fcn.0044f755
lea eax, [ebp - 0x54]
mov dword [ebp - 4], esi
push eax
mov ecx, ebx
call fcn.005343eb
mov eax, dword [ebp - 0x50]
test eax, eax
je 0x508955
mov ecx, eax
test eax, eax
je 0x5087a7
push dword [ecx + 8]
mov eax, dword [eax]
push 0x5d1a44
mov dword [ebp - 0x38], eax
call fcn.00437a50
mov esi, eax
pop ecx
pop ecx
mov ecx, esi
mov dword [ebp - 0x34], esi
mov edx, dword [esi]
call dword [edx + 0x340]
test eax, eax
je 0x50894c
mov eax, dword [ebx]
mov ecx, ebx
mov esi, dword [esi]
push 0
push 0
call dword [eax + 0x194]
mov ecx, dword [ebp - 0x34]
push eax
push 1
call dword [esi + 0x368]
mov eax, dword [ebp - 0x38]
test eax, eax
jne 0x5088ff
xor esi, esi
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x54]
call fcn.0044f77b
jmp 0x50898a
mov ecx, dword [edi + 0x330]
mov eax, dword [ecx]
call dword [eax + 0x1a0]
push eax
push 0x5a07d4
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
je 0x50898a
push esi
mov ecx, eax
call fcn.00537608
mov eax, dword [edi + 0xa4]
push esi
push 1
push 0xb
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
push dword [edi + 0xa4]
push 0x5833bc
call fcn.00437a50
pop ecx
pop ecx
test eax, eax
je 0x5089c0
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx + 0x178]
mov eax, dword [edi + 0xa4]
push 0x181
push esi
push esi
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_RedrawWindow]
jmp 0x508b03
mov esi, dword [ebp - 0x38]
test esi, esi
je 0x508b03
test ebx, ebx
je 0x508b03
mov eax, dword [ebx]
mov ecx, ebx
mov esi, dword [esi + 0x11c]
call dword [eax + 0x194]
test esi, eax
je 0x508b03
mov eax, dword [ebx]
mov ecx, ebx
mov esi, dword [edi]
push 1
push 0
call dword [eax + 0x194]
push eax
xor eax, eax
mov ecx, edi
cmp dword [edi + 0x2f8], eax
sete al
push eax
call dword [esi + 0x368]
jmp 0x508b03
cmp dword [0x5da8dc], 0
je 0x508b03
push 8
mov ecx, edi
call fcn.00507cb4
mov ebx, eax
test ebx, ebx
je 0x508b03
mov edx, dword [ebx]
lea eax, [ebp - 0x30]
push eax
mov ecx, ebx
call dword [edx + 0xc]
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x20]
push eax
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [ebp - 0x20]
mov ecx, edi
push eax
call fcn.00436013
push dword [ebp - 0x1c]
lea eax, [ebp - 0x30]
push dword [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_OffsetRect]
lea eax, [ebp - 0x30]
mov ecx, edi
push eax
call fcn.0043593e
mov dword [ebx + 0x14], 1
mov ecx, edi
mov eax, dword [ebp - 0x24]
mov esi, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x38], eax
call fcn.0043448a
test eax, 0x400000
je 0x508ac9
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x30]
add esi, eax
mov dword [ebp - 0x34], esi
push dword [ebp - 0x38]
mov eax, dword [edi]
mov ecx, edi
push dword [ebp - 0x34]
mov esi, dword [edi + 0x20]
call dword [eax + 0x2e4]
push esi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x508b03
and dword [ebx + 0x14], 0
mov ecx, edi
push ebx
call fcn.00509dfa
jmp 0x508b03
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0046f099
call fcn.00550d10
ret 0xc