Function at 0x1002c0e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
push ebx
push esi
push edi
mov edi, ecx
mov esi, dword [edi + 0x108]
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
xor ebx, ebx
test eax, 0xfffffffc
jle 0x1002c157
mov byte [esp + 0x13], 0
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
sar ecx, 2
cmp ebx, ecx
jb 0x1002c11b
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov edx, dword [esi + 0xc]
mov ecx, dword [edx + ebx*4]
mov eax, dword [ecx]
mov eax, dword [eax]
lea edx, [esp + 0x13]
push edx
mov edx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push edx
call eax
cmp byte [esp + 0x13], 0
jne 0x1002c1fd
mov esi, dword [edi + 0x108]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
inc ebx
sar ecx, 2
cmp ebx, ecx
jl 0x1002c103
mov eax, dword [ebp + 8]
add eax, 0xffffff00
cmp eax, 0x18
ja case.0x1002c16f.257
movzx edx, byte [eax + 0x1002c328]
jmp dword [edx*4 + 0x1002c314]
cmp dword [ebp + 0xc], 9
jne case.0x1002c16f.257
cmp dword [edi + 0x94], 0
je 0x1002c1e4
mov ecx, dword [edi + 0x94]
mov eax, dword [ecx]
mov edx, dword [eax + 0xe4]
call edx
test al, al
je 0x1002c1e4
mov ecx, dword [edi + 0x94]
mov eax, dword [ecx]
mov edx, dword [eax + 0xf0]
call edx
test al, al
je 0x1002c1e4
mov ecx, dword [edi + 0x94]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
push str.RichEditUI
call edx
push eax
call dword [sym.imp.MSVCR90.dll_wcsstr]
add esp, 8
test eax, eax
je 0x1002c1e4
mov eax, dword [edi + 0x94]
cmp byte [eax + 0x779], 0
jne case.0x1002c16f.257
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setge cl
movzx edx, cl
push edx
mov ecx, edi
call sym.DTLUI.dll_public:_bool___thiscall_DuiLib::CPaintManagerUI::SetNextTabControl_bool_
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 0xc]
xor eax, eax
xor ecx, ecx
push edx
mov word [esp + 0x18], ax
mov word [esp + 0x1a], cx
call dword [sym.imp.MSVCR90.dll_toupper]
mov ecx, dword [edi + 0x90]
add esp, 4
push 0x8000000a
mov word [esp + 0x18], ax
mov eax, dword [ecx]
mov eax, dword [eax + 0x118]
lea edx, [esp + 0x18]
push edx
push sym.DTLUI.dll_private:_static_class_DuiLib::CControlUI____stdcall_DuiLib::CPaintManagerUI::__FindControlFromShortcut_class_DuiLib::CControlUI___void__
call eax
mov esi, eax
test esi, esi
je case.0x1002c16f.257
mov edx, dword [esi]
mov eax, dword [edx + 0x10c]
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [edi + 0x94], 0
je case.0x1002c16f.257
mov cx, word [ebp + 0xc]
mov edx, dword [edi + 0xa4]
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0xa8]
mov dword [esp + 0x18], 6
mov word [esp + 0x2c], cx
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
call fcn.1002a5d0
mov word [esp + 0x2e], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [edi + 0x94]
mov dword [esp + 0x20], eax
mov edx, dword [edi]
mov edx, dword [edx + 0x124]
lea eax, [esp + 0x18]
push eax
mov ecx, edi
call edx
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [edi]
push 0
push 0
push 0x8002
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0x10