Function at 0x4cc890
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xb0
push ebx
mov ebx, dword [esp + 0xbc]
push ebp
push esi
mov esi, dword [ebx + 4]
push edi
cmp esi, 0x200
mov ebp, ecx
je 0x4cc8d2
cmp esi, 0xa0
je 0x4cc8d2
cmp esi, 0x202
je 0x4cc8d2
cmp esi, 0x205
je 0x4cc8d2
cmp esi, 0x208
jne 0x4cce57
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call edi
test ax, ax
jl 0x4cce57
push 2
call edi
test ax, ax
jl 0x4cce57
push 4
call edi
test ax, ax
jl 0x4cce57
mov eax, dword [esp + 0xcc]
mov edi, dword [esp + 0xc4]
mov esi, dword [sym.imp.USER32.dll_GetParent]
test eax, eax
jne 0x4cc944
mov eax, dword [ebx]
push eax
call fcn.0050e339
test eax, eax
je 0x4cc93c
test dword [eax + 0x24], 0x401
jne 0x4cc93c
mov ecx, dword [eax + 0x1c]
push ecx
call esi
push eax
call fcn.0050e339
test eax, eax
jne 0x4cc923
cmp eax, edi
jne 0x4ccf27
test edi, edi
jne 0x4cc94c
xor eax, eax
jmp 0x4cc94f
mov eax, dword [edi + 0x1c]
push eax
call fcn.004c0020
mov esi, eax
mov eax, dword [ebp + 0x58]
add esp, 4
mov dword [esp + 0x24], esi
test eax, eax
je 0x4cc99e
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x4cc99e
mov edx, ecx
push edx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x4cc99e
test esi, esi
jne 0x4cc99e
mov eax, dword [ebp + 0x58]
push esi
push esi
push 0x401
mov ecx, dword [eax + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 0xc
mov ecx, edi
call fcn.0050fa12
mov ebx, dword [ebp + 0x58]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
test ebx, ebx
mov edi, eax
je 0x4cc9ea
mov eax, dword [ebx + 0x20]
test eax, eax
jne 0x4cc9c5
mov edx, dword [ebx + 0x1c]
push edx
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.0050e339
cmp eax, edi
je 0x4ccab9
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x58]
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx + 4]
mov dword [ebp + 0x58], 0
mov eax, dword [ebp]
push edi
mov ecx, ebp
call dword [eax + 0x50]
mov ebx, eax
test ebx, ebx
je 0x4ccf27
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x4ccbba
mov ecx, dword [ebp + 0x34]
push ecx
push 0
push 0x418
push eax
call esi
mov eax, dword [ebx + 0x1c]
lea edx, [ebp + 0x3c]
push edx
push 0
push 0x41a
push eax
call esi
mov eax, dword [ebp + 0x88]
or edi, 0xffffffff
cmp eax, edi
je 0x4cca42
mov ecx, dword [ebx + 0x1c]
push 0
push eax
push 0x413
push ecx
call esi
mov eax, dword [ebp + 0x8c]
cmp eax, edi
je 0x4cca5a
mov edx, dword [ebx + 0x1c]
push 0
push eax
push 0x414
push edx
call esi
cmp dword [ebp + 0x50], edi
je 0x4cca73
mov ecx, dword [ebx + 0x1c]
xor eax, eax
mov ax, word [ebp + 0x50]
push eax
push 1
push 0x403
push ecx
call esi
mov eax, dword [ebp + 0x4c]
cmp eax, edi
je 0x4cca8d
xor edx, edx
mov dx, ax
mov eax, dword [ebx + 0x1c]
push edx
push 3
push 0x403
push eax
call esi
mov eax, dword [ebp + 0x54]
cmp eax, edi
je 0x4ccaa7
mov edx, dword [ebx + 0x1c]
xor ecx, ecx
mov cx, ax
push ecx
push 2
push 0x403
push edx
call esi
mov eax, dword [ebx + 0x1c]
push 0
push 0
push 0x401
push eax
call esi
mov dword [ebp + 0x58], ebx
mov ecx, 8
xor eax, eax
lea edi, [esp + 0x28]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x20], edx
lea eax, [esp + 0x1c]
mov edx, dword [ecx + 0x1c]
push eax
push edx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ecx, 0xb
xor eax, eax
lea edi, [esp + 0x48]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x4ccb14
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x48], 0x28
test eax, eax
je 0x4ccb1c
mov dword [esp + 0x48], 0x2c
mov ecx, dword [esp + 0xc4]
lea eax, [esp + 0x28]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x48]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x24]
push eax
call dword [edx + 0x64]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x1c]
xor edi, edi
cmp eax, edi
je 0x4ccb7b
mov ecx, dword [esp + 0x28]
cmp ecx, edi
je 0x4ccb7b
mov eax, dword [esp + 0x2c]
cmp eax, edi
je 0x4ccb7b
push eax
push ecx
call fcn.004625b8
add esp, 8
test eax, eax
jne 0x4ccb7b
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0046185f
add esp, 4
mov dword [esp + 0x28], edi
test byte [ebp + 0x38], 2
jne 0x4ccb9b
mov edx, dword [esp + 0x6c]
push edx
call fcn.004bfb00
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 4]
push ecx
call fcn.004bfb00
add esp, 8
mov edx, dword [ebp + 0x68]
mov eax, dword [esp + 0x54]
cmp edx, eax
jne 0x4ccbd7
mov eax, dword [ebp + 0x64]
mov ecx, dword [esp + 0x50]
cmp eax, ecx
jne 0x4ccbd7
mov dword [esp + 0x10], edi
jmp 0x4cccc2
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x58]
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 0xc
mov dword [esp + 0x10], 1
mov ecx, dword [ebp + 0x5c]
lea eax, [ebp + 0x5c]
cmp ecx, 0x28
mov dword [esp + 0x18], eax
jb 0x4ccc04
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x4ccc04
mov edx, dword [ebx + 0x1c]
push eax
push 0
push 0x405
push edx
call esi
cmp dword [esp + 0x14], 0xffffffff
je 0x4ccdb7
mov eax, dword [esp + 0x4c]
mov edx, dword [ebx + 0x1c]
mov ecx, 0xb
lea esi, [esp + 0x48]
lea edi, [esp + 0x94]
and eax, 0x3fffffff
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x94]
mov dword [esp + 0x98], eax
push ecx
push 0
push 0x404
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [ebp + 0x28]
cmp eax, 3
je 0x4ccd34
cmp dword [ebp + 0x2c], 0x50050
jae 0x4ccc67
test eax, eax
je 0x4ccd34
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4ccd1d
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4ccd1d
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4ccd1d
mov ecx, dword [ebx + 0x1c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push eax
mov eax, dword [ebp + 0x30]
push eax
push 0x420
push ecx
call esi
mov ecx, dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x94]
mov dword [esp + 0xb8], edx
push eax
push 0
push 0x40c
push ecx
call esi
jmp 0x4ccd3a
mov edi, dword [sym.imp.USER32.dll_CopyRect]
lea ecx, [esp + 0x58]
lea edx, [esp + 0x84]
push ecx
push edx
call edi
lea eax, [ebp + 0x6c]
lea ecx, [esp + 0x74]
push eax
push ecx
call edi
lea edx, [esp + 0x84]
lea eax, [esp + 0x74]
push edx
push eax
call dword [sym.imp.USER32.dll_EqualRect]
test eax, eax
je 0x4ccbdf
cmp dword [esp + 0x14], 0xffffffff
je 0x4cce0a
mov ecx, dword [esp + 0xc8]
push ecx
push ebx
mov ecx, ebp
call fcn.004cc220
jmp 0x4cce0a
mov edx, dword [ebx + 0x1c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
push 0x420
push edx
call esi
jmp 0x4ccd3a
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4ccd7b
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4ccd6c
mov eax, dword [ebp + 0x24]
mov edi, dword [esp + 0x14]
add eax, edi
push 1
push eax
call fcn.004938d0
test eax, eax
je 0x4ccd6c
mov ecx, dword [ebx + 0x1c]
push eax
push 0
push 0x2a49
push ecx
jmp 0x4ccd79
mov edx, dword [ebx + 0x1c]
push 0
push 0
push 0x2a49
push edx
call esi
test dword [esp + 0x4c], 0x40000000
jne 0x4ccd8d
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4ccdcc
mov eax, dword [ebx + 0x1c]
push 0
push 1
push 0x401
push eax
call esi
mov ecx, dword [ebx + 0x1c]
push 0x213
push 0
push 0
push 0
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x4ccdcc
mov edx, dword [ebx + 0x1c]
push 0
push 0
push 0x401
push edx
call esi
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0xc8]
mov ecx, ebp
push eax
push ebx
call fcn.004cc220
mov eax, dword [esp + 0x18]
cmp dword [eax], 0x28
jb 0x4ccdfb
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x4ccdfb
mov ecx, dword [ebx + 0x1c]
push eax
push 0
push 0x405
push ecx
call esi
mov edi, dword [esp + 0x18]
mov ecx, 0xb
lea esi, [esp + 0x48]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x6c]
cmp eax, 0xffffffff
je 0x4cce24
mov ecx, dword [esp + 0x68]
test ecx, ecx
jne 0x4cce24
push eax
call fcn.0046185f
add esp, 4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4cce35
push eax
call fcn.0046185f
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4ccf27
push eax
call fcn.0046185f
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 0xc
mov eax, dword [esp + 0xcc]
test eax, eax
jne 0x4ccea0
mov edx, dword [ebx]
push edx
call fcn.0050e339
mov ebx, dword [esp + 0xc4]
test eax, eax
je 0x4cce98
mov edi, dword [sym.imp.USER32.dll_GetParent]
cmp eax, ebx
je 0x4ccea0
test dword [eax + 0x24], 0x401
jne 0x4cce98
mov eax, dword [eax + 0x1c]
push eax
call edi
push eax
call fcn.0050e339
test eax, eax
jne 0x4cce7b
cmp eax, ebx
jne 0x4ccf27
cmp esi, 0x100
jb 0x4cceb0
cmp esi, 0x108
jbe 0x4ccf20
cmp esi, 0x104
jb 0x4ccec0
cmp esi, 0x107
jbe 0x4ccf20
cmp esi, 0x201
je 0x4ccf20
cmp esi, 0x203
je 0x4ccf20
cmp esi, 0x204
je 0x4ccf20
cmp esi, 0x206
je 0x4ccf20
cmp esi, 0x207
je 0x4ccf20
cmp esi, 0x209
je 0x4ccf20
cmp esi, 0xa1
je 0x4ccf20
cmp esi, 0xa3
je 0x4ccf20
cmp esi, 0xa4
je 0x4ccf20
cmp esi, 0xa6
je 0x4ccf20
cmp esi, 0xa7
je 0x4ccf20
cmp esi, 0xa9
jne 0x4ccf27
mov ecx, ebp
call fcn.004cc860
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 0xc