Function at 0x4b8730
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x1c]
sub esp, 8
test eax, eax
mov edx, 1
cmovne edx, eax
push ebx
push esi
push edi
mov edi, ecx
push dword [edi + 4]
mov dword [edi + 0x80], edx
call dword [sym.imp.USER32.dll_IsWindow]
mov esi, dword [ebp + 8]
test eax, eax
jne 0x4b876c
push esi
call fcn.004c66e0
push eax
mov ecx, edi
call fcn.004b5c40
xor ebx, ebx
mov dword [ebp + 0x1c], ebx
mov dword [ebp - 4], ebx
test esi, esi
je 0x4b87d0
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x4b87d0
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0x68]
push ebx
push ebx
mov ecx, esi
mov dword [ebp + 0x1c], eax
call fcn.0049ec60
mov ebx, dword [ebp + 0x1c]
test eax, 0x2000000
je 0x4b87a6
mov dword [ebp - 4], 1
jmp 0x4b87d0
test ebx, ebx
je 0x4b87d0
push 0
push 0
mov ecx, esi
call fcn.0049ec60
test eax, 0x1000
je 0x4b87d0
call fcn.004c9150
xor edx, edx
test eax, eax
mov eax, 1
cmove edx, eax
mov dword [ebp - 4], edx
xor ecx, ecx
test ebx, ebx
sete cl
mov dword [ebp - 8], ecx
test ecx, ecx
jne 0x4b87ff
test esi, esi
je 0x4b87ef
push ecx
push ecx
mov ecx, esi
call fcn.0049ec60
test al, 4
jne 0x4b87f8
cmp byte [edi + 0x90], 0
je 0x4b87ff
mov dword [ebp - 8], 1
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x78], eax
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4b8839
mov ecx, dword [edi + 0x48]
test ecx, ecx
jns 0x4b8818
or ebx, 0xffffffff
jmp 0x4b881f
xor ebx, ebx
test ecx, ecx
setg bl
test eax, eax
jns 0x4b8828
or edx, 0xffffffff
jmp 0x4b882f
xor edx, edx
test eax, eax
setg dl
xor eax, eax
cmp ebx, edx
cmovne ecx, eax
mov dword [edi + 0x48], ecx
mov ebx, dword [edi + 8]
cmp ebx, 1
jne 0x4b884b
cmp dword [edi + 0x3c], 0
jne 0x4b8858
xor ebx, ebx
jmp 0x4b8858
cmp ebx, 3
jne 0x4b8858
xor ebx, ebx
cmp dword [edi + 0x3c], ebx
setne bl
test byte [edi + 0x34], 8
jne 0x4b8886
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x4b8886
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x4b8886
mov ecx, 0x6570a8
call fcn.0047dd50
test eax, eax
je 0x4b8888
xor ebx, ebx
mov ecx, dword [edi + 0x34]
mov eax, 4
test cl, 0x40
cmovne ebx, eax
mov eax, dword [edi + 0x64]
test al, 1
je 0x4b88ab
cmp dword [ebp + 0x1c], 0
jne 0x4b88ab
mov ebx, eax
shr ebx, 0xa
and ebx, 4
test ecx, 0x4000000
mov eax, 1
cmovne ebx, eax
cmp byte [edi + 0x91], 0
je 0x4b88c8
cmp dword [ebp + 0x20], 6
je 0x4b88da
push 0
push 0
mov ecx, esi
call fcn.0049f9e0
test eax, 0x8000
je 0x4b88df
mov ebx, 4
push 0
push 0
mov ecx, esi
call fcn.0049ec60
test eax, 0x8000
jne 0x4b8912
push 0
push 0
mov ecx, esi
call fcn.0049ec60
test eax, 0x40000
je 0x4b8917
push 0
call fcn.004c7a40
add esp, 4
cmp eax, 0xa
jne 0x4b8917
mov ebx, 4
test byte [0x652fc0], 4
je 0x4b8935
push ebx
push str.eTemp_d_n
push 3
push str.CScrollWidget::ScrollVertical
call fcn.004cb3a0
add esp, 0x10
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x4b89c4
cmp dword [edi + 0x80], 1
je 0x4b89c4
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [edi + 0x80]
cmp eax, edx
jge 0x4b89a0
add dword [edi + 0x84], ecx
mov eax, dword [edi + 0x84]
cdq
xor eax, edx
sub eax, edx
cmp eax, dword [edi + 0x80]
jl 0x4b8a3e
cmp dword [ebp + 0x1c], 0
je 0x4b8985
mov ecx, dword [edi + 0x84]
jmp 0x4b89c4
push ecx
call fcn.00408e20
imul eax, dword [edi + 0x84]
add esp, 4
cdq
idiv dword [edi + 0x80]
mov ecx, eax
jmp 0x4b89c4
test ebx, ebx
jne 0x4b89aa
test byte [edi + 0x34], 2
jne 0x4b89c4
lea eax, [edx - 1]
xor ecx, ecx
cmp dword [edi + 0x84], eax
mov eax, dword [ebp + 0x10]
setge cl
cdq
idiv dword [edi + 0x80]
add ecx, eax
cmp dword [ebp - 8], 0
mov dword [ebp + 0x10], ecx
je 0x4b89da
push dword [ebp + 0x20]
push ecx
mov ecx, edi
call fcn.004b4320
mov ecx, eax
add dword [edi + 0x48], ecx
cmp dword [ebp + 0x18], 0
je 0x4b8a4c
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x4b8a4c
cmp dword [ebp + 0x24], 0
je 0x4b8a21
cdq
mov esi, eax
mov eax, dword [edi + 0x48]
xor esi, edx
sub esi, edx
cdq
xor eax, edx
sub eax, edx
lea ecx, [esi + esi]
cmp eax, ecx
jle 0x4b8a21
mov ecx, dword [edi + 0x48]
test ecx, ecx
jns 0x4b8a12
or eax, 0xffffffff
jmp 0x4b8a19
xor eax, eax
test ecx, ecx
setg al
imul esi, eax
add esi, esi
mov dword [edi + 0x48], esi
test byte [0x652fc0], 4
je 0x4b8a3e
push str.we_have_pending_pkt__return_pending..._n
push 3
push str.CScrollWidget::ScrollVertical
call fcn.004cb3a0
add esp, 0xc
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
push dword [ebp + 0x30]
mov ecx, edi
push 2
push dword [ebp + 0x2c]
push esi
call fcn.004b7720
cmp eax, 1
jne 0x4b8aaa
cmp dword [esi + 0x24], 0
jne 0x4b8a7e
push 0x1a9
push str.g:checkpoints_tpdrvheadgit1_syntpenhCZone.h
push str.m_pManagedPointingDevice
call fcn.004904e0
add esp, 0xc
mov ecx, dword [ebp + 8]
mov esi, dword [esi + 0x24]
call fcn.004a0190
push eax
mov ecx, esi
call fcn.0042fb80
test eax, eax
je 0x4b8abd
mov dword [edi + 0x48], 0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
test eax, eax
je 0x4b8bdb
cmp eax, 2
je 0x4b8bdb
jmp 0x4b8ac0
mov esi, dword [ebp + 8]
cmp dword [edi + 0x34], 0
jne 0x4b8aed
cmp dword [edi + 0x74], 0
je 0x4b8aed
push 0
push 0
mov ecx, esi
call fcn.0049ec60
test eax, 0x4000
je 0x4b8aed
xor eax, eax
mov dword [ebp + 0x1c], 0
cmp ebx, 4
cmovne ebx, eax
mov ecx, dword [ebp + 0x1c]
xor eax, eax
test ecx, ecx
jne 0x4b8aff
test dword [edi + 0x34], 0x200000
je 0x4b8b12
push 0
push 0
mov ecx, esi
call fcn.0049f9e0
mov ecx, dword [ebp + 0x1c]
and eax, 0x10000
cmp ebx, 5
ja case.0x4b8b1b.3
jmp dword [ebx*4 + 0x4b8be4]
push dword [ebp + 0x20]
push ecx
push 1
push esi
mov ecx, edi
call fcn.004b6b30
jmp 0x4b8b9e
push eax
push dword [ebp + 0x20]
push dword [ebp - 4]
push dword [ebp + 0x28]
push ecx
push 1
push dword [ebp + 0x14]
mov ecx, edi
push dword [edi + 4]
call fcn.004b6490
jmp 0x4b8b9e
test dword [edi + 0x34], 0x400000
mov ecx, edi
push 1
push dword [ebp + 0x28]
je 0x4b8b6d
push dword [edi + 4]
push dword [edi + 0x38]
push 1
call fcn.004b4520
jmp 0x4b8b9e
push dword [edi + 0x3c]
push dword [edi + 0x38]
push 1
call fcn.004b4520
jmp 0x4b8b9e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
push eax
push dword [edi + 4]
mov ecx, edi
push 1
call fcn.004b6250
jmp 0x4b8b9e
push dword [edi + 4]
mov ecx, edi
push 1
call fcn.004b4dc0
mov ebx, eax
test ebx, ebx
jle 0x4b8bbc
mov eax, dword [ebp + 0x10]
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg 0x4b8bbc
mov dword [edi + 0x48], 0
jmp 0x4b8bbc
xor ebx, ebx
push 3
push esi
mov ecx, edi
mov dword [edi + 0x4c], ebx
call fcn.004b8c00
test ebx, ebx
jg 0x4b8a9c
xor eax, eax
test ebx, ebx
sets al
add eax, 2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c