Function at 0x410980
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 [0x4221cc], esi
mov dword [0x4221c8], esi
mov dword [0x422140], esi
mov dword [0x421120], esi
mov dword [0x422138], esi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push 0x104
push 0x421018
push esi
mov dword [0x421f24], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xor eax, eax
nop
mov cl, byte [eax + 0x421018]
mov byte [eax + 0x421f28], cl
inc eax
test cl, cl
jne 0x4109d0
push 0x421f28
call fcn.0040f910
push 0x421f28
call fcn.00412ce6
mov dl, byte [0x41d3d8]
mov ecx, 0x10
mov esi, 0x41a584
mov edi, 0x4221d0
rep movsd dword es:[edi], dword [esi]
mov cl, byte [0x4221d0]
xor eax, eax
sub cl, 0x30
add esp, 8
cmp cl, dl
mov dword [esp + 0x14], eax
jne 0x410a27
mov eax, 1
mov dl, byte [0x4221d1]
mov cl, byte [0x41d3d9]
sub dl, 0x30
cmp dl, cl
jne 0x410a3b
inc eax
mov cl, byte [0x4221d2]
mov dl, byte [0x41d3da]
sub cl, 0x30
cmp cl, dl
jne 0x410a4f
inc eax
mov dl, byte [0x4221d3]
mov cl, byte [0x41d3db]
sub dl, 0x30
cmp dl, cl
jne 0x410a63
inc eax
mov dl, byte [0x4221d4]
mov ecx, dword [0x41d3dc]
sub dl, 0x30
cmp dl, cl
jne 0x410a77
inc eax
mov dl, byte [0x4221d5]
sub dl, 0x30
cmp dl, ch
jne 0x410a85
inc eax
mov dl, byte [0x4221d6]
mov cx, word [str.NN_]
sub dl, 0x30
cmp dl, cl
jne 0x410a9a
inc eax
mov dl, byte [0x4221d7]
sub dl, 0x30
cmp dl, ch
jne 0x410aa8
inc eax
test eax, eax
jne 0x410b3a
push 0x4221d9
call fcn.004123e8
mov esi, eax
mov al, byte [0x4221e1]
add esi, 0x10000
add esp, 4
cmp al, 0x66
mov dword [esp + 0x10], esi
jne 0x410ada
inc dword [0x421120]
jmp 0x410ae4
cmp al, 0x73
jne 0x410ae4
inc dword [0x4221cc]
mov eax, dword [esp + 0x40]
mov edx, 0x421248
mov byte [0x422038], 0
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x410af6
movsx eax, word [0x4221ea]
mov ecx, dword [0x4221f0]
movsx ebp, word [0x4221e4]
movsx ebx, word [0x4221e7]
mov dword [0x4222a0], eax
movzx eax, word [0x4221ed]
push ecx
push eax
push esi
push 0x421018
call fcn.00403860
mov dword [esp + 0x24], eax
jmp 0x410b52
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push str.data.dpm
call fcn.00403860
mov dword [esp + 0x20], 0xffffffff
mov edx, dword [esp + 0x48]
add esp, 0x10
push edx
call fcn.00410430
add esp, 4
call fcn.0040f540
call fcn.00404050
mov esi, eax
mov eax, dword [0x4221cc]
test eax, eax
je 0x410c20
movsx eax, byte [0x421249]
push eax
call fcn.00412739
add esp, 4
push 0
push str.oniwndp
mov byte [esp + 0x48], al
mov byte [0x421249], al
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x410bb1
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24
ret 0x10
mov al, byte [esp + 0x40]
cmp al, 0x70
jne 0x410bec
push 0x42124b
call fcn.004123e8
mov edi, eax
push edi
call fcn.00401e90
push edi
mov ebp, eax
call fcn.00401eb0
push esi
push eax
push ebp
push eax
push ebp
xor ebp, ebp
push ebp
push ebp
push 7
push ebp
call fcn.004105e0
add esp, 0x30
jmp 0x410c72
cmp al, 0x73
jne 0x410c20
mov edi, dword [0x4221c8]
inc edi
push 0x421010
mov dword [0x4221c8], edi
call dword [sym.imp.USER32.dll_GetCursorPos]
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
inc dword [0x4221cc]
mov dword [0x422140], 0xa
mov eax, dword [0x421120]
test eax, eax
push esi
push ebx
push ebp
je 0x410c5e
mov ecx, dword [0x422034]
mov edx, dword [0x421f18]
push ecx
push edx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 2
push 1
call fcn.004105e0
push esi
push ebx
push ebp
push ebx
push ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push 0
call fcn.004105e0
add esp, 0x48
jmp 0x410c70
push ebx
push ebp
push 0xffffffffffffffff
push 0xffffffffffffffff
push 3
push 0
call fcn.004105e0
add esp, 0x24
xor ebp, ebp
mov eax, dword [0x42202c]
mov ebx, dword [eax + 0x34]
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, ah
js 0x410c8d
cmp dword [esp + 0x10], 0xffffffff
jne 0x410cb2
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
je 0x410cc1
push ebx
call fcn.0040f960
add esp, 4
push ebx
call fcn.004110f0
add esp, 4
call fcn.00407da0
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov esi, 0xfffffffe
lea ebx, [ebx]
mov al, byte [0x422038]
test al, al
jne 0x410d2d
mov al, byte [0x41d3e0]
xor ecx, ecx
test al, al
mov esi, 0x422038
mov edi, 0x41d3e1
je 0x411027
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 0x410d02
cmp ecx, 0x6cced385
jne 0x411027
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov esi, 0xfffffffe
push 0x422038
call fcn.0040b1f0
add esp, 4
test eax, eax
jne 0x411032
cmp dword [0x4222a4], ebp
je 0x410d54
push 2
call fcn.0040b230
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x40], eax
mov dword [0x421f20], ebp
mov dword [0x4211bc], ebp
mov dword [0x421130], 5
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 0x410e0e
cmp dword [esp + 0x1c], 0x12
je 0x411053
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 0x410d74
cmp dword [0x4221c8], ebp
je 0x410dc4
push ebx
call fcn.0040f5f0
add esp, 4
cmp dword [esp + 0x20], 9
jne 0x410dd9
call fcn.0040f820
push eax
call fcn.0040f860
add esp, 4
push 1
call fcn.0040a9f0
add esp, 4
test eax, eax
je 0x410d74
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
movzx edx, al
mov dword [0x42221c], eax
mov dword [0x42112c], ecx
mov dword [0x421668], edx
mov dword [0x41fcc8], ebp
jmp 0x410d74
mov eax, dword [0x41fcc8]
cmp eax, ebp
jne 0x410f47
jmp 0x410e20
call fcn.0040b300
cmp dword [0x4221cc], ebp
mov dword [0x41fcc8], eax
je 0x410e43
mov ecx, dword [0x422140]
cmp ecx, ebp
je 0x410e43
dec ecx
mov dword [0x422140], ecx
cmp eax, 0xffffffff
je 0x411053
cmp eax, 0xfffffffd
jne 0x410e81
push 4
call fcn.0040a9f0
add esp, 4
test eax, eax
jne 0x410fbf
call fcn.00407a20
push ebp
push ebp
push 0x7400
push ebx
mov dword [0x41fcc8], esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [0x41fcc8]
cmp eax, 0xfffffffc
je 0x410fe8
cmp eax, 0xfffffffb
jne 0x410ea0
push 1
push ebx
call dword [sym.imp.USER32.dll_KillTimer]
mov dword [0x41fcc8], esi
jmp 0x410ed0
cmp eax, ebp
jle 0x410ec3
test eax, 0x10000
je 0x410f6a
mov edx, dword [esp + 0x40]
mov ecx, eax
and ecx, 0xffff
add ecx, edx
mov dword [0x4211bc], ecx
cmp eax, esi
jne 0x410d74
jmp 0x410ed0
push ebp
push ebp
push ebp
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x411053
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 0x410f36
cmp dword [0x4221c8], ebp
je 0x410f13
push ebx
call fcn.0040f5f0
add esp, 4
cmp dword [esp + 0x20], 9
jne 0x410f28
call fcn.0040f820
push eax
call fcn.0040f860
add esp, 4
push 1
call fcn.0040a9f0
add esp, 4
test eax, eax
jne 0x410f80
mov eax, dword [0x41fcc8]
cmp eax, esi
je 0x410ed0
cmp eax, ebp
je 0x410e20
jle 0x410d74
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [0x4211bc], eax
mov dword [esp + 0x40], eax
ja 0x410fa6
mov dword [0x41fcc8], ebp
jmp 0x410d74
push ebp
push eax
push 1
push ebx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [0x41fcc8], esi
jmp 0x410ed0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [0x42221c], eax
movzx eax, al
mov dword [0x42112c], edx
mov dword [0x421668], eax
mov dword [0x41fcc8], ebp
jmp 0x410e20
mov eax, dword [0x421130]
cmp eax, ebp
je 0x410d74
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x410d74
mov ecx, dword [0x420620]
mov edx, dword [0x41fad8]
mov dword [0x42221c], ecx
mov dword [0x42112c], edx
mov dword [0x421668], ebp
mov dword [0x41fcc8], ebp
jmp 0x410d74
call fcn.00407a20
call fcn.0040b250
call fcn.0040b1d0
mov edx, 0x422038
lea esp, [esp]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x411000
push 0x400
call fcn.0040b1e0
push eax
push 0x421248
call fcn.00412e30
add esp, 0xc
jmp 0x410ce0
push ebx
call fcn.0040f960
add esp, 4
jmp 0x411072
push 0x40
push str.error
call fcn.0040b1d0
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 0x411072
call fcn.0040b3e0
push 0xffffffffffffffff
call fcn.0040a9a0
add esp, 4
push ebp
push ebp
push 0x10
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
call fcn.00407a20
call fcn.00411240
call fcn.0040b250
call fcn.00403ae0
call fcn.0040f5a0
call fcn.00407dd0
mov eax, dword [esp + 0x20]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x10