Function at 0x410c40
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 esi, esi
push edi
mov ebp, 0x280
mov ebx, 0x1e0
mov dword [0x422644], esi
mov dword [0x422640], esi
mov dword [0x4225b8], esi
mov dword [0x421198], esi
mov dword [0x4225b0], esi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push 0x104
push 0x421090
push esi
mov dword [0x42239c], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xor eax, eax
nop
mov cl, byte [eax + 0x421090]
mov byte [eax + 0x4223a0], cl
inc eax
test cl, cl
jne 0x410c90
push 0x4223a0
call fcn.0040fb40
mov dl, byte [0x41d3d8]
mov ecx, 0x10
mov esi, 0x41a588
mov edi, 0x422648
rep movsd dword es:[edi], dword [esi]
mov cl, byte [0x422648]
xor eax, eax
sub cl, 0x30
add esp, 4
cmp cl, dl
mov dword [esp + 0x14], eax
jne 0x410cdd
mov eax, 1
mov dl, byte [0x422649]
mov cl, byte [0x41d3d9]
sub dl, 0x30
cmp dl, cl
jne 0x410cf1
inc eax
mov cl, byte [0x42264a]
mov dl, byte [0x41d3da]
sub cl, 0x30
cmp cl, dl
jne 0x410d05
inc eax
mov dl, byte [0x42264b]
mov cl, byte [0x41d3db]
sub dl, 0x30
cmp dl, cl
jne 0x410d19
inc eax
mov dl, byte [0x42264c]
mov ecx, dword [0x41d3dc]
sub dl, 0x30
cmp dl, cl
jne 0x410d2d
inc eax
mov dl, byte [0x42264d]
sub dl, 0x30
cmp dl, ch
jne 0x410d3b
inc eax
mov dl, byte [0x42264e]
mov cx, word [str.NN_]
sub dl, 0x30
cmp dl, cl
jne 0x410d50
inc eax
mov dl, byte [0x42264f]
sub dl, 0x30
cmp dl, ch
jne 0x410d5e
inc eax
test eax, eax
jne 0x410e8a
push 0x422651
call fcn.004127a8
mov esi, eax
mov al, byte [0x422659]
add esi, 0x10000
add esp, 4
cmp al, 0x66
mov dword [esp + 0x10], esi
jne 0x410d90
inc dword [0x421198]
jmp 0x410d9a
cmp al, 0x73
jne 0x410d9a
inc dword [0x422644]
mov eax, dword [esp + 0x40]
mov edx, 0x4212c0
mov byte [0x4224b0], 0
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x410db0
mov ecx, dword [0x422668]
movsx ebp, word [0x42265c]
movsx ebx, word [0x42265f]
xor eax, eax
mov al, byte [0x422662]
push ecx
and eax, 1
mov dword [0x422718], eax
movzx eax, word [0x422665]
push eax
push esi
push 0x421090
call fcn.004038d0
mov dword [esp + 0x24], eax
xor eax, eax
mov al, byte [0x422662]
add esp, 0x10
and eax, 2
test eax, eax
jne 0x410e13
push 0x4223a0
call fcn.004130a6
add esp, 4
cmp esi, 0xffffffff
jne 0x410e29
push esi
push esi
push 0
push str.data.dpm
call fcn.004038d0
add esp, 0x10
call fcn.00407ef0
mov edx, dword [esp + 0x38]
push edx
call fcn.004106f0
add esp, 4
call fcn.0040f740
call fcn.00404170
mov esi, eax
mov eax, dword [0x422644]
test eax, eax
je 0x410f05
movsx eax, byte [0x4212c1]
push eax
call fcn.00412af9
add esp, 4
push 0
push str.oniwndp
mov byte [esp + 0x48], al
mov byte [0x4212c1], al
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x410e96
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24
ret 0x10
or esi, 0xffffffff
mov dword [esp + 0x10], esi
jmp 0x410e06
mov al, byte [esp + 0x40]
cmp al, 0x70
jne 0x410ed1
push 0x4212c3
call fcn.004127a8
mov edi, eax
push edi
call fcn.00401f30
push edi
mov ebp, eax
call fcn.00401f50
push esi
push eax
push ebp
push eax
push ebp
xor ebp, ebp
push ebp
push ebp
push 7
push ebp
call fcn.004108a0
add esp, 0x30
jmp 0x410f57
cmp al, 0x73
jne 0x410f05
mov edi, dword [0x422640]
inc edi
push 0x421088
mov dword [0x422640], edi
call dword [sym.imp.USER32.dll_GetCursorPos]
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
inc dword [0x422644]
mov dword [0x4225b8], 0xa
mov eax, dword [0x421198]
test eax, eax
push esi
push ebx
push ebp
je 0x410f43
mov ecx, dword [0x4224ac]
mov edx, dword [0x422390]
push ecx
push edx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 2
push 1
call fcn.004108a0
push esi
push ebx
push ebp
push ebx
push ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push 0
call fcn.004108a0
add esp, 0x48
jmp 0x410f55
push ebx
push ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push 0
call fcn.004108a0
add esp, 0x24
xor ebp, ebp
mov eax, dword [0x4224a4]
mov ebx, dword [eax + 0x34]
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, ah
js 0x410f72
cmp dword [esp + 0x10], 0xffffffff
jne 0x410f97
push ebp
push ebx
call dword [sym.imp.USER32.dll_GetSystemMenu]
mov edi, dword [sym.imp.USER32.dll_AppendMenuA]
push ebp
push ebp
mov esi, eax
push 0x800
push esi
call edi
push str.About_HSP...
push 0x64
push ebp
push esi
call edi
cmp dword [esp + 0x14], ebp
push ebx
jne 0x411308
call fcn.004113d0
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
add esp, 4
mov esi, 0xfffffffe
mov al, byte [0x4224b0]
test al, al
jne 0x411018
mov al, byte [0x41d3e0]
xor ecx, ecx
test al, al
mov esi, 0x4224b0
mov edi, 0x41d3e1
je 0x411307
imul ecx, ecx, 0x11
add al, 0x28
movzx edx, al
mov byte [esi], al
mov al, byte [edi]
inc esi
add ecx, edx
inc edi
test al, al
jne 0x410fd7
cmp ecx, 0x6cced385
jne 0x411307
push 0x4224b0
call fcn.00403e90
add esp, 4
cmp eax, 1
jne 0x411307
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov esi, 0xfffffffe
push 0x4224b0
call fcn.0040b3e0
add esp, 4
test eax, eax
jne 0x411312
cmp dword [0x42271c], ebp
je 0x41103f
push 2
call fcn.0040b420
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x40], eax
mov dword [0x422398], ebp
mov dword [0x421234], ebp
mov dword [0x4211a8], 5
nop
push 1
push ebp
push ebp
push ebp
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x4110fa
cmp dword [esp + 0x1c], 0x12
je 0x411333
lea ecx, [esp + 0x18]
push ecx
call edi
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp dword [esp + 0x1c], 0x100
jne 0x411060
cmp dword [0x422640], ebp
je 0x4110b0
push ebx
call fcn.0040f7f0
add esp, 4
cmp dword [esp + 0x20], 9
jne 0x4110c5
call fcn.0040fa20
push eax
call fcn.0040fa60
add esp, 4
push 1
call fcn.0040abe0
add esp, 4
test eax, eax
je 0x411060
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
movzx edx, al
mov dword [0x422694], eax
mov dword [0x4211a4], ecx
mov dword [0x421ae4], edx
mov dword [0x41fce0], ebp
jmp 0x411060
mov eax, dword [0x41fce0]
cmp eax, ebp
jne 0x411229
call fcn.0040b4f0
cmp dword [0x422644], ebp
mov dword [0x41fce0], eax
je 0x41112a
mov ecx, dword [0x4225b8]
cmp ecx, ebp
je 0x41112a
dec ecx
mov dword [0x4225b8], ecx
cmp eax, 0xffffffff
je 0x411333
cmp eax, 0xfffffffd
jne 0x411168
push 4
call fcn.0040abe0
add esp, 4
test eax, eax
jne 0x4112a1
call fcn.00407b70
push ebp
push ebp
push 0x7400
push ebx
mov dword [0x41fce0], esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [0x41fce0]
cmp eax, 0xfffffffc
je 0x4112ca
cmp eax, 0xfffffffb
jne 0x411187
push 1
push ebx
call dword [sym.imp.USER32.dll_KillTimer]
mov dword [0x41fce0], esi
jmp 0x4111b2
cmp eax, ebp
jle 0x4111aa
test eax, 0x10000
je 0x41124c
mov edx, dword [esp + 0x40]
mov ecx, eax
and ecx, 0xffff
add ecx, edx
mov dword [0x421234], ecx
cmp eax, esi
jne 0x411060
push ebp
push ebp
push ebp
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x411333
lea eax, [esp + 0x18]
push eax
call edi
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp dword [esp + 0x1c], 0x100
jne 0x411218
cmp dword [0x422640], ebp
je 0x4111f5
push ebx
call fcn.0040f7f0
add esp, 4
cmp dword [esp + 0x20], 9
jne 0x41120a
call fcn.0040fa20
push eax
call fcn.0040fa60
add esp, 4
push 1
call fcn.0040abe0
add esp, 4
test eax, eax
jne 0x411262
mov eax, dword [0x41fce0]
cmp eax, esi
je 0x4111b2
cmp eax, ebp
je 0x411107
jle 0x411060
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [0x421234], eax
mov dword [esp + 0x40], eax
ja 0x411288
mov dword [0x41fce0], ebp
jmp 0x411060
push ebp
push eax
push 1
push ebx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [0x41fce0], esi
jmp 0x4111b2
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [0x422694], eax
movzx eax, al
mov dword [0x4211a4], edx
mov dword [0x421ae4], eax
mov dword [0x41fce0], ebp
jmp 0x411107
mov eax, dword [0x4211a8]
cmp eax, ebp
je 0x411060
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x411060
mov ecx, dword [0x420638]
mov edx, dword [0x41fad8]
mov dword [0x422694], ecx
mov dword [0x4211a4], edx
mov dword [0x421ae4], ebp
mov dword [0x41fce0], ebp
jmp 0x411060
call fcn.00407b70
call fcn.0040b440
call fcn.0040b3c0
mov edx, 0x4224b0
mov edi, edi
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4112e0
push 0x800
call fcn.0040b3d0
push eax
push 0x4212c0
call fcn.00413530
add esp, 0xc
jmp 0x410fb5
push ebx
call fcn.0040fb90
add esp, 4
jmp 0x411352
push 0x40
push 0x41a301
call fcn.0040b3c0
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebp
push ebp
push 0x10
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x411352
call fcn.0040b5d0
push 0xffffffffffffffff
call fcn.0040ab90
add esp, 4
push ebp
push ebp
push 0x10
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
call fcn.00407b70
call fcn.00411540
call fcn.0040b440
call fcn.00403b50
call fcn.0040f7a0
call fcn.00407f20
mov eax, dword [esp + 0x20]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x10