Function at 0x422700
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x110
push ebx
push esi
push edi
mov esi, ecx
call fcn.00424fc0
mov edi, dword [sym.imp.USER32.dll_GetWindowLongW]
test al, al
jne 0x42273d
mov eax, dword [0x52fe14]
push 0xfffffffffffffff0
push eax
call edi
test eax, 0x8000000
je 0x42273d
mov ecx, dword [0x52fe14]
push 1
push ecx
call dword [sym.imp.USER32.dll_EnableWindow]
lea edx, [ebp - 0xc]
push edx
xor ebx, ebx
push 1
push ebx
mov ecx, esi
mov dword [ebp - 0xc], ebx
call fcn.004169e0
mov byte [ebp - 1], al
test al, al
je 0x42276a
cmp dword [esi + 0x26ce], ebx
jne 0x42276a
push 1
push 1
mov ecx, esi
call fcn.0040d640
mov eax, dword [0x52fe14]
push 0xffffffffffffffec
push eax
call edi
mov ecx, dword [0x52fe30]
cmp byte [ecx + 0x1235], bl
jne 0x42278d
test al, 8
je 0x42278d
mov ecx, esi
call fcn.0040e960
mov ecx, dword [esi + 0x40a8]
call fcn.004a5620
call fcn.004b8600
cmp dword [esi + 0x4820], ebx
jne 0x4227c3
cmp byte [esi + 0x54eb], bl
je 0x4227d1
mov ecx, esi
call fcn.0041c060
pop edi
mov byte [esi + 0x54eb], bl
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp byte [esi + 0x54ec], bl
jne 0x4227d1
mov byte [esi + 0x54ec], bl
call fcn.004b7440
call fcn.004b9e10
movzx edx, al
mov dword [ebp - 8], edx
cmp byte [esi + 0x47d4], bl
je 0x422888
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
sub eax, dword [esi + 0x47d8]
mov ecx, dword [0x52fe30]
cmp eax, dword [ecx + 0x113fc]
jbe 0x422888
mov edx, dword [esi + 0x47d0]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x42287c
mov ecx, dword [ebp + 8]
cmp ecx, ebx
je 0x42287c
push 0x1510001
push 0x22
push 0x100
mov byte [esi + 0x47d4], bl
call fcn.004bcc80
mov ecx, eax
call fcn.004accc0
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call ebx
mov ecx, dword [ebp + 8]
push 0xc1510001
push 0x22
push 0x101
call fcn.004bcc80
mov ecx, eax
call fcn.004accc0
push eax
call ebx
call fcn.004b9e10
call edi
mov dword [esi + 0x47d8], eax
mov byte [esi + 0x47d4], 1
jmp 0x422888
mov dword [esi + 0x47d0], ebx
mov byte [esi + 0x47d4], bl
mov ecx, dword [esi + 0x40a4]
test ecx, ecx
je 0x422897
call fcn.00442c90
cmp dword [ebp - 8], 0
jne 0x4228e2
cmp byte [esi + 0x47cc], 0
je 0x4228e2
push 0
push 0
mov byte [esi + 0x47cc], 0
call fcn.004ba500
mov eax, dword [0x52fe14]
add esp, 8
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
call fcn.004b9d20
call fcn.004b8fe0
mov ecx, dword [esi + 0x40a0]
test ecx, ecx
je 0x4228e2
call fcn.004a5bd0
mov ecx, dword [0x52fe14]
push ecx
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
setne al
test al, al
jne 0x422977
mov edx, dword [0x52fe30]
cmp byte [edx + 0x1220], al
je 0x42290e
cmp byte [esi + 0x40ee], al
jne 0x422977
cmp byte [esi + 0x4090], 0
jne 0x422927
mov eax, dword [0x52fe14]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x422977
mov ax, word [esi + 0x4148]
mov ecx, 0x80
and ax, cx
jne 0x422940
cmp byte [esi + 0x414c], al
je 0x422970
mov edx, ecx
cmp ax, dx
jne 0x422967
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
and ax, cx
mov edx, ecx
cmp ax, dx
je 0x422970
push 0
mov ecx, esi
call fcn.00416b10
push 0
mov ecx, esi
call fcn.004153b0
call fcn.004b7d40
jmp 0x422987
cmp byte [esi + 0x414c], 0
je 0x422987
mov byte [esi + 0x414c], 0
mov ecx, dword [0x52fe30]
push 0
call fcn.0044e640
test al, al
je 0x4229ae
cmp byte [ebp - 1], 0
jne 0x4229ed
cmp dword [esi + 0x5510], 0
je 0x4229ae
mov ecx, esi
call fcn.0041ff20
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x422ada
mov edx, dword [0x52fe30]
cmp byte [edx + 0x11295], 0
mov cl, byte [ebx + 0x14ec]
je 0x422aa6
cmp byte [ebp - 1], 0
jne 0x422aa6
cmp dword [ebp - 8], 0
jne 0x422aa6
mov al, 1
jmp 0x422aa8
push 0
mov ecx, esi
call fcn.004098e0
test al, al
jne 0x4229ae
cmp dword [esi + 0x40e4], 0x51f
jne 0x4229ae
push 1
mov ecx, esi
call fcn.0041ce20
mov bl, al
xor eax, eax
cmp dword [esi + 0x5510], eax
movzx ecx, bl
setne al
cmp ecx, eax
je 0x4229ae
mov edi, dword [sym.imp.USER32.dll_KillTimer]
xor edx, edx
test bl, bl
setne dl
push 3
mov dword [esi + 0x5510], edx
mov eax, dword [0x52fe14]
push eax
call edi
mov ecx, dword [0x52fe14]
push 4
push ecx
call edi
xor edx, edx
test bl, bl
sete dl
add edx, 3
movzx ecx, dx
test bl, bl
je 0x422a69
mov eax, dword [0x52fe30]
mov eax, dword [eax + 0x122c]
jmp 0x422a75
mov edx, dword [0x52fe30]
mov eax, dword [edx + 0x1230]
test eax, eax
je 0x422a92
push 0
push eax
movzx eax, cx
mov ecx, dword [0x52fe14]
push eax
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x4229ae
test bl, bl
je 0x4229a7
mov ecx, esi
call fcn.0041fee0
jmp 0x4229ae
xor al, al
cmp cl, al
je 0x422aba
lea ecx, [ebx + 8]
mov byte [ebx + 0x14ec], al
call fcn.004b37a0
mov edi, dword [ebp - 0xc]
test edi, edi
je 0x422ada
mov ecx, ebx
call fcn.004bcc90
cmp edi, eax
jne 0x422ada
mov ecx, ebx
call fcn.004bcc80
mov ecx, eax
call fcn.0048c820
cmp dword [esi + 0x7868], 0
je 0x422af5
cmp byte [esi + 0x786c], 0
jne 0x422af5
push 0
mov ecx, esi
call fcn.00416770
mov ecx, dword [esi + 0x409c]
call fcn.00447fc0
test eax, eax
je 0x422b75
cmp dword [esi + 0x40ac], 0
je 0x422b75
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
push ecx
push edx
call dword [sym.imp.USER32.dll_WindowFromPoint]
test eax, eax
je 0x422b75
push 0x80
lea ecx, [ebp - 0x110]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClassNameW]
test eax, eax
je 0x422b75
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpW]
push str.VirtualConsoleClass
lea edx, [ebp - 0x110]
push edx
call edi
test eax, eax
je 0x422b6a
push str.VirtualConsoleClass
lea eax, [ebp - 0x110]
push eax
call edi
test eax, eax
jne 0x422b75
mov ecx, dword [esi + 0x40ac]
call fcn.004c6db0
push 0
push str.TIMER_MAIN_ID
push 0
push 0
push 0
push 0
mov ecx, esi
call fcn.00421760
cmp dword [ebp - 8], 0
jne 0x422baa
mov eax, dword [0x52fe30]
cmp byte [eax + 0x11861], 0
je 0x422baa
lea ecx, [eax + 0x1185c]
call fcn.004b2a00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4