Function at 0x40bfb0
Capabilities:
Create process on windows
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x288
cmp dword [ebp + 0xc], 0x8007
je 0x40c108
cmp dword [ebp + 0xc], 0x8007
ja 0x40c03e
cmp dword [ebp + 0xc], 0x8006
je 0x40c05c
cmp dword [ebp + 0xc], 0x8006
ja 0x40c03e
cmp dword [ebp + 0xc], 0x8005
je 0x40c630
cmp dword [ebp + 0xc], 0x8005
ja 0x40c03e
cmp dword [ebp + 0xc], 0x112
ja 0x40c03e
cmp dword [ebp + 0xc], 0x111
jae 0x40c181
cmp dword [ebp + 0xc], 1
je 0x40c023
cmp dword [ebp + 0xc], 2
je 0x40c649
jmp 0x40c03e
mov dword [esp], 0x460b64
mov eax, dword [sym.imp.USER32.dll_RegisterWindowMessageA]
call eax
sub esp, 4
mov dword [0x47d0fc], eax
jmp 0x40c673
mov eax, dword [0x47d0fc]
cmp dword [ebp + 0xc], eax
jne 0x40c66c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._AddTrayIcon
jmp 0x40c66c
cmp dword [ebp + 0x14], 0x205
jne 0x40c0a0
lea eax, [ebp - 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_GetCursorPos]
call eax
sub esp, 4
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], 0x8007
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_PostMessageA]
call eax
sub esp, 0x10
jmp 0x40c66f
cmp dword [ebp + 0x14], 0x203
jne 0x40c66f
mov eax, dword [0x47d0b8]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_GetMenuDefaultItem]
call eax
sub esp, 0xc
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
je 0x40c66f
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0xc]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x111
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_PostMessageA]
call eax
sub esp, 0x10
jmp 0x40c66f
movzx eax, byte [0x47d100]
xor eax, 1
test al, al
je 0x40c672
mov byte [0x47d100], 1
call sym._update_sessions
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetForegroundWindow]
call eax
sub esp, 4
mov edx, dword [ebp + 0x10]
mov eax, dword [0x47d0b8]
mov dword [esp + 0x18], 0
mov ecx, dword [ebp + 8]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], 0
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], 0x2a
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_TrackPopupMenu]
call eax
sub esp, 0x1c
mov byte [0x47d100], 0
jmp 0x40c672
mov eax, dword [ebp + 0x10]
and eax, 0xfffffff0
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0x90
je 0x40c23b
cmp dword [ebp - 0x10], 0x90
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x80
je 0x40c3f8
cmp dword [ebp - 0x10], 0x80
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x70
je 0x40c4af
cmp dword [ebp - 0x10], 0x70
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x60
je 0x40c3e9
cmp dword [ebp - 0x10], 0x60
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x50
je 0x40c3da
cmp dword [ebp - 0x10], 0x50
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x40
je 0x40c392
cmp dword [ebp - 0x10], 0x40
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x30
je 0x40c392
cmp dword [ebp - 0x10], 0x30
ja 0x40c4c7
cmp dword [ebp - 0x10], 0x10
je 0x40c2d4
cmp dword [ebp - 0x10], 0x20
je 0x40c334
jmp 0x40c4c7
mov byte [ebp - 0x22], 0
movzx eax, byte [0x47d0c8]
test al, al
je 0x40c265
lea eax, [ebp - 0x22]
mov dword [esp], eax
call sym._strlen
mov edx, eax
lea eax, [ebp - 0x22]
add eax, edx
mov word [eax], 0x5226
mov byte [eax + 2], 0
mov eax, dword [0x47d0c4]
mov dword [esp + 0x14], 5
mov dword [esp + 0x10], 0x460849
lea edx, [ebp - 0x22]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.SHELL32.dll_ShellExecuteA]
call eax
sub esp, 0x18
cmp eax, 0x20
jg 0x40c627
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0x460b71
mov dword [esp + 4], 0x460b76
mov dword [esp], 0
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
call eax
sub esp, 0x10
jmp 0x40c627
mov eax, dword [0x47d0d4]
test eax, eax
je 0x40c307
mov eax, dword [0x47d0d4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x10
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
call eax
sub esp, 0x10
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x10
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
call eax
sub esp, 0x10
jmp 0x40c62e
call sym._create_keylist_window
mov eax, dword [0x47d0b0]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetForegroundWindow]
call eax
sub esp, 4
mov eax, dword [0x47d0b0]
mov dword [esp + 0x18], 0x43
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetWindowPos]
call eax
sub esp, 0x1c
jmp 0x40c62e
mov eax, dword [0x47d0d4]
test eax, eax
je 0x40c3c3
mov dword [esp], 0x10
mov eax, dword [sym.imp.USER32.dll_MessageBeep]
call eax
sub esp, 4
mov eax, dword [0x47d0d4]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetForegroundWindow]
call eax
sub esp, 4
jmp 0x40c62e
cmp dword [ebp - 0x10], 0x40
sete al
movzx eax, al
mov dword [esp], eax
call sym._prompt_add_keyfile
jmp 0x40c62e
call sym._pageant_delete_all
call sym._keylist_update
jmp 0x40c62e
call sym._pageant_reencrypt_all
call sym._keylist_update
jmp 0x40c62e
mov eax, dword [0x47d0b4]
test eax, eax
jne 0x40c62a
mov eax, dword [0x47d0a8]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], sym._AboutProc_16
mov dword [esp + 8], 0
mov dword [esp + 4], 0xd5
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_CreateDialogParamA]
call eax
sub esp, 0x14
mov dword [0x47d0b4], eax
mov eax, dword [0x47d0b4]
mov dword [esp + 4], 1
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_ShowWindow]
call eax
sub esp, 8
mov eax, dword [0x47d0b4]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetForegroundWindow]
call eax
sub esp, 4
mov eax, dword [0x47d0b4]
mov dword [esp + 0x18], 0x43
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_SetWindowPos]
call eax
sub esp, 0x1c
jmp 0x40c62a
mov dword [esp + 4], str.pageant
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._launch_help
jmp 0x40c62e
cmp dword [ebp + 0x10], 0xfff
jbe 0x40c62d
cmp dword [ebp + 0x10], 0x2000
ja 0x40c62d
mov dword [esp + 8], 0x30
mov dword [esp + 4], 0
lea eax, [ebp - 0x25c]
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x25c], 0x30
mov dword [ebp - 0x258], 0x10
mov dword [ebp - 0x234], 0x104
lea eax, [ebp - 0x22c]
mov dword [ebp - 0x238], eax
mov eax, dword [0x47d0bc]
lea edx, [ebp - 0x25c]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_GetMenuItemInfoA]
call eax
sub esp, 0x10
mov byte [ebp - 0x127], 0
movzx eax, byte [0x47d0c8]
test al, al
je 0x40c587
lea eax, [ebp - 0x127]
mov dword [esp], eax
call sym._strlen
mov edx, eax
lea eax, [ebp - 0x127]
add eax, edx
mov word [eax], 0x5226
mov byte [eax + 2], 0
lea eax, [ebp - 0x127]
mov dword [esp], eax
call sym._strlen
mov edx, eax
lea eax, [ebp - 0x127]
add eax, edx
mov word [eax], 0x40
mov eax, dword [ebp - 0x238]
mov dword [esp + 4], eax
lea eax, [ebp - 0x127]
mov dword [esp], eax
call sym._strcat
mov eax, dword [0x47d0c4]
mov dword [esp + 0x14], 5
mov dword [esp + 0x10], 0x460849
lea edx, [ebp - 0x127]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.SHELL32.dll_ShellExecuteA]
call eax
sub esp, 0x18
cmp eax, 0x20
jg 0x40c62d
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0x460b71
mov dword [esp + 4], 0x460b76
mov dword [esp], 0
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
call eax
sub esp, 0x10
jmp 0x40c62d
nop
jmp 0x40c673
nop
jmp 0x40c673
nop
jmp 0x40c673
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
call sym._winselgui_response
mov eax, 0
jmp 0x40c698
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._quit_help
mov dword [esp], 0
mov eax, dword [sym.imp.USER32.dll_PostQuitMessage]
call eax
sub esp, 4
mov eax, 0
jmp 0x40c698
nop
jmp 0x40c673
nop
jmp 0x40c673
nop
mov eax, dword [ebp + 0x14]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.USER32.dll_DefWindowProcA]
call eax
sub esp, 0x10
leave
ret 0x10