Function at 0x40efb0
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
sub esp, 0x24
push ebx
push ebp
push esi
xor ebx, ebx
push edi
mov dword [0x420864], ebx
mov dword [0x420a30], ebx
mov dword [0x4210e4], ebx
mov dword [0x420bd4], ebx
mov dword [0x420754], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push 0x100
push 0x42075c
push ebx
mov dword [0x420b50], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov edi, 0x42075c
or ecx, 0xffffffff
xor eax, eax
push 0x420928
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x420928
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0040ef60
push 0x420928
call fcn.004112e1
add esp, 8
xor ecx, ecx
mov dword [esp + 0x14], ebx
xor eax, eax
mov dl, byte [eax + 0x41ab98]
sub dl, 0x10
cmp dl, byte [eax + str.8C_456nn]
jne 0x40f049
inc ecx
inc eax
cmp eax, 8
jl 0x40f037
cmp ecx, ebx
jne 0x40f0ed
push str.48640
call fcn.00410aed
mov ebp, eax
add ebp, 0x10000
push ebp
push 0x42075c
mov dword [esp + 0x1c], ebp
call fcn.00403510
mov dword [esp + 0x20], eax
mov al, byte [0x41aba9]
add esp, 0xc
cmp al, 0x66
jne 0x40f090
inc dword [0x420bd4]
jmp 0x40f09a
cmp al, 0x73
jne 0x40f09a
inc dword [0x420864]
mov edi, dword [esp + 0x40]
or ecx, 0xffffffff
xor eax, eax
mov byte [0x420a34], 0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x420ce0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
movsx edx, word [0x41abaf]
mov ecx, eax
movsx eax, word [0x41abb2]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
movsx ecx, word [0x41abac]
mov dword [0x41aabc], ecx
mov dword [0x41aac0], edx
mov dword [0x421980], eax
jmp 0x40f107
push ebx
push str.data.dpm
call fcn.00403510
mov dword [esp + 0x18], 0xffffffff
add esp, 8
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
push ecx
call fcn.0040e8e0
add esp, 4
call fcn.0040e7a0
call fcn.00403910
mov esi, eax
mov eax, dword [0x420864]
cmp eax, ebx
je 0x40f1db
movsx edx, byte [0x420ce1]
push edx
call fcn.00410ebb
add esp, 4
mov bl, al
mov byte [0x420ce1], bl
push 0
push str.oniwndp
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x40f162
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24
ret 0x10
cmp bl, 0x70
jne 0x40f19f
push 0x420ce3
call fcn.00410aed
mov edi, eax
push edi
call fcn.00401f60
push edi
mov ebp, eax
call fcn.00401f90
push esi
push eax
push ebp
push eax
push ebp
push 0
push 0
push 7
push 0
call fcn.0040eb80
mov ebp, dword [esp + 0x40]
add esp, 0x30
jmp 0x40f23e
cmp bl, 0x73
jne 0x40f1d9
mov edi, dword [0x420a30]
push 0x420b48
inc edi
mov dword [0x420a30], edi
call dword [sym.imp.USER32.dll_GetCursorPos]
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
mov eax, dword [0x420864]
mov dword [0x4210e4], 0xa
inc eax
mov dword [0x420864], eax
xor ebx, ebx
mov eax, dword [0x420bd4]
mov ecx, dword [0x41aabc]
cmp eax, ebx
mov eax, dword [0x41aac0]
push esi
push eax
push ecx
je 0x40f22d
mov edx, dword [0x421174]
mov eax, dword [0x421170]
push edx
push eax
push 0xffffffffffffffff
push 0xffffffffffffffff
push 2
push 1
call fcn.0040eb80
mov eax, dword [0x41aac0]
mov ecx, dword [0x41aabc]
push esi
push eax
push ecx
push eax
push ecx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push ebx
call fcn.0040eb80
add esp, 0x48
jmp 0x40f23e
push eax
push ecx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push ebx
call fcn.0040eb80
add esp, 0x24
mov ecx, dword [0x420750]
push 0x11
mov ebx, dword [ecx + 0x34]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
jne 0x40f259
cmp ebp, 0xffffffff
jne 0x40f282
xor ebp, ebp
push ebp
push ebx
call dword [sym.imp.USER32.dll_GetSystemMenu]
mov edi, dword [sym.imp.USER32.dll_AppendMenuA]
push ebp
mov esi, eax
push ebp
push 0x800
push esi
call edi
push str.About_HSP...
push 0x64
push ebp
push esi
call edi
jmp 0x40f284
xor ebp, ebp
cmp dword [esp + 0x14], ebp
je 0x40f2ac
push 0x40
push str.error
push 0x41ab5c
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push ebp
push ebp
push 0x10
push ebx
call esi
jmp 0x40f2b2
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push ebx
call fcn.004100e0
add esp, 4
call fcn.00406b20
mov al, byte [0x420a34]
test al, al
jne 0x40f2f4
mov edi, str.start.ax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x420a34
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0x420a34
call fcn.004087e0
add esp, 4
test eax, eax
jne 0x40f56b
cmp dword [0x421984], ebp
je 0x40f31b
push 2
call fcn.00408820
add esp, 4
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov dword [esp + 0x40], eax
mov dword [0x42197c], ebp
mov dword [0x420b34], ebp
push 1
push ebp
push ebp
lea eax, [esp + 0x24]
push ebp
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x40f3b9
cmp dword [esp + 0x1c], 0x12
je 0x40f588
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp dword [esp + 0x1c], 0x100
jne 0x40f333
cmp dword [0x420a30], ebp
je 0x40f383
push ebx
call fcn.0040e830
add esp, 4
push 1
call fcn.004080a0
add esp, 4
test eax, eax
je 0x40f333
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [0x420748], eax
and eax, 0xff
mov dword [0x420a2c], ecx
mov dword [0x42074c], eax
mov dword [0x41fdf8], ebp
jmp 0x40f333
mov eax, dword [0x41fdf8]
cmp eax, ebp
jne 0x40f50a
call fcn.00408860
mov ecx, dword [0x420864]
mov dword [0x41fdf8], eax
cmp ecx, ebp
je 0x40f3eb
mov ecx, dword [0x4210e4]
cmp ecx, ebp
je 0x40f3eb
dec ecx
mov dword [0x4210e4], ecx
cmp eax, 0xffffffff
je 0x40f588
cmp eax, 0xfffffffd
jne 0x40f417
call fcn.00406750
push ebp
push ebp
push 0x7400
push ebx
mov dword [0x41fdf8], 0xfffffffe
call esi
mov eax, dword [0x41fdf8]
cmp eax, 0xfffffffc
je 0x40f52f
cmp eax, 0xfffffffb
jne 0x40f43a
push 1
push ebx
call dword [sym.imp.USER32.dll_KillTimer]
mov dword [0x41fdf8], 0xfffffffe
jmp 0x40f462
cmp eax, ebp
jle 0x40f459
test eax, 0x10000
je 0x40f4c3
mov ecx, dword [esp + 0x40]
mov edx, eax
and edx, 0xffff
add edx, ecx
mov dword [0x420b34], edx
cmp eax, 0xfffffffe
jne 0x40f333
push ebp
push ebp
lea eax, [esp + 0x20]
push ebp
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x40f588
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp dword [esp + 0x1c], 0x100
jne 0x40f4b7
cmp dword [0x420a30], ebp
je 0x40f4a9
push ebx
call fcn.0040e830
add esp, 4
push 1
call fcn.004080a0
add esp, 4
test eax, eax
jne 0x40f4da
mov eax, dword [0x41fdf8]
cmp eax, 0xfffffffe
jne 0x40f502
jmp 0x40f462
push ebp
push eax
push 1
push ebx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [0x41fdf8], 0xfffffffe
jmp 0x40f462
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [0x420748], eax
and eax, 0xff
mov dword [0x420a2c], ecx
mov dword [0x42074c], eax
mov dword [0x41fdf8], ebp
jmp 0x40f3c6
cmp eax, ebp
je 0x40f3c6
jle 0x40f333
call edi
mov ecx, dword [0x420b34]
mov dword [esp + 0x40], eax
cmp ecx, eax
ja 0x40f333
mov dword [0x41fdf8], ebp
jmp 0x40f333
call fcn.00406750
call fcn.00408840
call fcn.004087d0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x420a34
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x40f2c0
push 0x40
push str.error
call fcn.004087d0
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebp
push ebp
push 0x10
push ebx
call esi
jmp 0x40f5a3
call fcn.0040a440
push 0xffffffffffffffff
call fcn.00408070
add esp, 4
push ebp
push ebp
push 0x10
push ebx
call esi
call fcn.00406750
call fcn.00410240
call fcn.00408840
call fcn.004036a0
call fcn.0040e800
call fcn.0040eac0
call fcn.00406b50
mov eax, dword [esp + 0x20]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x10