Function at 0x403100
Capabilities:
Create process on windows
Create process suspended
Create thread
Log keystrokes via application hook
Set global application hook
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x2e8
mov eax, dword [0x40a008]
xor eax, esp
mov dword [esp + 0x2e4], eax
mov eax, dword [ebp + 0x10]
push esi
push edi
mov edi, dword [ebp + 8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403125
sub eax, edx
je 0x4031ce
push 0
push 0
push 0
push 0x402690
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
push 0
push 0x402cf0
push 0xd
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
push 0
push 0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x98]
push 0
push eax
call esi
test eax, eax
je 0x4031ac
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
nop
lea eax, [esp + 0x90]
push eax
call edi
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea eax, [esp + 0x9c]
push eax
call esi
test eax, eax
jne 0x403180
push dword [esp + 8]
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x2e4]
xor ecx, esp
call fcn.00404d0f
mov esp, ebp
pop ebp
ret 0x10
push 0x407360
call dword [sym.imp.KERNEL32.dll_GlobalFindAtomA]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
test ax, ax
je 0x4031fc
push 0x1014
push 0x407374
push 0x407394
push 0
call esi
cmp eax, 6
jne 0x4031b6
push 0x407360
call dword [sym.imp.KERNEL32.dll_GlobalAddAtomA]
push 0x65
push edi
mov word [0x40a66c], ax
mov dword [esp + 0x28], 3
mov dword [esp + 0x2c], 0x403680
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], edi
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
push 0
mov dword [esp + 0x3c], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 0xc4c4c4
mov dword [esp + 0x3c], eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], str.Asst4Stu
call dword [sym.imp.USER32.dll_RegisterClassA]
test ax, ax
jne 0x4032a9
push 0x50010
push 0x407374
push 0x40737c
push 0
call esi
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x2e4]
xor ecx, esp
call fcn.00404d0f
mov esp, ebp
pop ebp
ret 0x10
push 0
push edi
push 0
push 0
push 0
push 0
push 0
push 0
push 0xcf0000
push str.Asst4Stu
push str.Asst4Stu
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
mov dword [esp + 8], esi
call fcn.004013e0
call fcn.004013e0
mov edi, dword [sym.imp.KERNEL32.dll_GlobalAddAtomW]
push str.g_hot_key_goto_current
call edi
mov ecx, 0x4000
add ax, cx
push 0x5a
mov word [0x40a660], ax
push 1
movzx eax, ax
push eax
push esi
mov esi, dword [sym.imp.USER32.dll_RegisterHotKey]
call esi
push str.g_hot_key_goto_current_res
call edi
mov ecx, 0x4000
add ax, cx
push 0x5a
mov word [0x40a65c], ax
push 3
movzx eax, ax
push eax
push dword [esp + 0x14]
call esi
push str.g_hot_key_goto_virtual
call edi
mov ecx, 0x4000
add ax, cx
push 0x41
mov word [0x40a664], ax
push 1
movzx eax, ax
push eax
push dword [esp + 0x14]
call esi
push str.g_hot_key_goto_virtual_res
call edi
mov ecx, 0x4000
add ax, cx
push 0x41
mov word [0x40a64c], ax
push 3
movzx eax, ax
push eax
push dword [esp + 0x14]
call esi
push str.g_hot_key_quit
call edi
mov ecx, 0x4000
add ax, cx
push 0x51
mov word [0x40a658], ax
push 3
movzx eax, ax
push eax
push dword [esp + 0x14]
call esi
push str.g_hot_key_goto_force
call edi
mov ecx, 0x4000
add ax, cx
push 0x42
mov word [0x40a650], ax
push 2
movzx eax, ax
push eax
push dword [esp + 0x14]
call esi
push 0
push 0
push 0
push 0x402130
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0x104
lea eax, [esp + 0xdc]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [esp + 0xd8]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x104
lea eax, [esp + 0x1e4]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0x1e4]
push str.__s__key
push eax
call fcn.00404240
add esp, 0xc
push dword [0x40a668]
call dword [sym.imp.USER32.dll_SetThreadDesktop]
lea eax, [esp + 0x10]
mov dword [esp + 0x4c], 0
push eax
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 0x44
push eax
push 0
push 0
push 0
push 0
xorps xmm0, xmm0
mov dword [esp + 0x68], str.DESKTOP_BE
push 0
push 0
lea eax, [esp + 0x200]
movlpd qword [esp + 0x74], xmm0
push eax
push 0
movlpd qword [esp + 0x84], xmm0
movlpd qword [esp + 0x8c], xmm0
movlpd qword [esp + 0x94], xmm0
movlpd qword [esp + 0x9c], xmm0
movlpd qword [esp + 0xa4], xmm0
movlpd qword [esp + 0xac], xmm0
movaps xmmword [esp + 0x38], xmm0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
movaps xmm0, xmmword [esp + 0x10]
push 0
push 0
push 0x402cf0
push 0xd
movaps xmmword [esp + 0xa0], xmm0
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
push 0
push 0
mov dword [esp + 0x14], eax
lea eax, [esp + 0xc4]
push 0
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x40352f
mov esi, dword [sym.imp.USER32.dll_TranslateMessage]
mov edi, dword [sym.imp.USER32.dll_DispatchMessageA]
lea eax, [esp + 0xbc]
push eax
call esi
lea eax, [esp + 0xbc]
push eax
call edi
push 0
push 0
push 0
lea eax, [esp + 0xc8]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
jne 0x403503
push dword [esp + 0xc]
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
push 0
push dword [esp + 0x14]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push dword [esp + 0x90]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [esp + 0x94]
call esi
movzx eax, word [0x40a660]
mov esi, dword [sym.imp.USER32.dll_UnregisterHotKey]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a660]
mov edi, dword [sym.imp.KERNEL32.dll_GlobalDeleteAtom]
push eax
call edi
movzx eax, word [0x40a65c]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a65c]
push eax
call edi
movzx eax, word [0x40a664]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a664]
push eax
call edi
movzx eax, word [0x40a64c]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a64c]
push eax
call edi
movzx eax, word [0x40a650]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a650]
push eax
call edi
movzx eax, word [0x40a658]
push eax
push dword [esp + 0xc]
call esi
movzx eax, word [0x40a658]
push eax
call edi
movzx eax, word [0x40a66c]
push eax
call edi
push dword [0x40a668]
call dword [sym.imp.USER32.dll_CloseDesktop]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
test eax, eax
jne 0x40362b
push 0x50000
push str.info
push str.no_close_desktop
push eax
call esi
push 0x50040
push str.Beadd
push 0x407444
push 0
call esi
mov ecx, dword [esp + 0x2ec]
mov eax, dword [esp + 0xc4]
pop edi
pop esi
xor ecx, esp
call fcn.00404d0f
mov esp, ebp
pop ebp
ret 0x10