Function at 0x404666
Capabilities:
Accept command line arguments
Hide graphical window
Read .ini file
Set global application hook

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a8
push ebx
push esi
push edi
mov esi, 0x478670
lea edi, [ebp - 0x2c]
lea ebx, [ebp - 0x5c]
nop
call sub.KERNEL32.DLL_GetCommandLineA
mov dword [ebp + 0x10], eax
call sub.KERNEL32.DLL_GetCurrentThreadId
mov dword [0x478684], eax
mov eax, dword [ebp + 8]
mov dword [esi], eax
push 0x3f
push 0x3f
call fcn.00464247
add esp, 8
call fcn.00404ade
push 0x7f00
push 0
call sub.USER32.DLL_LoadCursorA
mov dword [0x478254], eax
push 0x7f02
push 0
call sub.USER32.DLL_LoadCursorA
mov dword [0x478258], eax
push 0
push str.ccideFrame
call sub.USER32.DLL_FindWindowA
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x4046f2
push 0x4716d5
push dword [ebp + 0x10]
call fcn.00460586
add esp, 8
test eax, eax
jne 0x404706
push 0x4716d2
push dword [ebp + 0x10]
call fcn.00460586
add esp, 8
test eax, eax
je 0x404715
call fcn.0042a3bc
mov eax, 0
jmp 0x404ad5
call fcn.0042a63b
push 0x104
lea eax, [ebp - 0x274]
push eax
push 0
call sub.KERNEL32.DLL_GetModuleFileNameA
push 0x5c
lea eax, [ebp - 0x274]
push eax
call fcn.00460545
add esp, 8
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40474e
mov eax, dword [ebp - 0x6c]
mov byte [eax], 0
lea eax, [ebp - 0x274]
push eax
push 0x47825c
call fcn.0045f361
add esp, 8
push 0x5c
push 0x47825c
call fcn.00460545
add esp, 8
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x404781
mov eax, dword [ebp - 0x6c]
mov byte [eax], 0
push str.ccide.cfg
lea eax, [ebp - 0x274]
push eax
call fcn.0045f2e4
add esp, 8
push 0x47825c
lea eax, [ebp - 0x170]
push eax
call fcn.0045f361
add esp, 8
lea eax, [ebp - 0x274]
push eax
push 0x104
push 0x47825c
lea eax, [ebp - 0x170]
push eax
push str.InstallPath
push str.Init
call sub.KERNEL32.DLL_GetPrivateProfileStringA
push 1
call fcn.00404605
pop ecx
call fcn.0043e4b8
call fcn.004250a7
call fcn.0044348e
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x278], 0x2f
lea eax, [ebp - 0x27c]
push eax
call sub.comctl32.DLL_InitCommonControlsEx
push str.commdlg_help
call sub.USER32.DLL_RegisterWindowMessageA
mov dword [0x47867c], eax
push str.riched32.dll
call sub.KERNEL32.DLL_LoadLibraryA
mov dword [0x478674], eax
push 0x28
push 0
lea eax, [ebp - 0x2a8]
push eax
call fcn.0045e1bd
add esp, 0xc
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2a4], 0x402048
mov dword [ebp - 0x2a0], 0
mov dword [ebp - 0x29c], 0
mov eax, dword [esi]
mov dword [ebp - 0x298], eax
push 1
push dword [esi]
call sub.USER32.DLL_LoadIconA
mov dword [ebp - 0x294], eax
push 0x7f00
push 0
call sub.USER32.DLL_LoadCursorA
mov dword [ebp - 0x290], eax
mov dword [ebp - 0x28c], 0
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x284], str.ccideFrame
lea eax, [ebp - 0x2a8]
push eax
call sub.USER32.DLL_RegisterClassA
call fcn.0045aac7
call fcn.00432776
push dword [esi]
call fcn.0042c94c
pop ecx
push dword [esi]
call fcn.0042cf1b
pop ecx
push dword [esi]
call fcn.00431263
pop ecx
push dword [esi]
call fcn.0042d735
pop ecx
push dword [esi]
call fcn.0042bd7f
pop ecx
push dword [esi]
call fcn.0042b84d
pop ecx
push dword [esi]
call fcn.004300bf
pop ecx
push dword [esi]
call fcn.00432f77
pop ecx
call fcn.004290c0
push dword [esi]
call fcn.00440dda
pop ecx
call fcn.0041e2c1
call fcn.0043e3a3
call fcn.0042a1e3
call fcn.0040ba37
call fcn.00410e98
call fcn.0041198a
call fcn.00410125
call fcn.0040f934
call fcn.0044b599
call fcn.00413ab3
call fcn.0042b6d0
call fcn.00409040
push str.MAINMENU
push dword [esi]
call fcn.004377d2
add esp, 8
mov dword [0x47865c], eax
push 8
push dword [0x47865c]
call sub.USER32.DLL_GetSubMenu
mov dword [ebp - 0x64], eax
push dword [ebp - 0x64]
call sub.USER32.DLL_GetMenuItemCount
mov dword [0x46ae90], eax
push str.MAINACCELERATORS
push dword [esi]
call sub.USER32.DLL_LoadAcceleratorsA
mov dword [0x478660], eax
push edi
call fcn.0041a3f0
pop ecx
test eax, eax
jne 0x4049b1
mov dword [edi + 0x24], 0x80000000
mov dword [edi + 0x1c], 0x80000000
mov dword [edi + 0x28], 0x80000000
mov dword [edi + 0x20], 0x80000000
jmp 0x4049bd
mov eax, dword [edi + 0x1c]
sub dword [edi + 0x24], eax
mov eax, dword [edi + 0x20]
sub dword [edi + 0x28], eax
push 0
push dword [esi]
push dword [0x47865c]
push 0
push dword [edi + 0x28]
push dword [edi + 0x24]
push dword [edi + 0x20]
push dword [edi + 0x1c]
push 0x6cf0000
push str.CC386_IDE
push str.ccideFrame
push 0
call sub.USER32.DLL_CreateWindowExA
mov dword [0x478664], eax
push dword [0x478664]
call sub.USER32.DLL_UpdateWindow
push 3
push str.Show
call fcn.0043a968
add esp, 8
cmp eax, 3
jne 0x404a12
sub eax, eax
test eax, 0x40c02990
nop
sub eax, eax
inc eax
mov dword [0x46a09c], eax
push 3
push str.Show
call fcn.0043a968
add esp, 8
push eax
push dword [0x478664]
call sub.USER32.DLL_ShowWindow
mov dword [0x46a09c], 1
push 0
call fcn.00437a14
pop ecx
push 1
call fcn.00437a14
pop ecx
call fcn.00424219
call fcn.004231d5
push 0
call fcn.004377f8
pop ecx
push 1
call fcn.004377f8
pop ecx
call fcn.00422fd6
call fcn.00428a4f
call fcn.00406a6b
call fcn.00405ef0
call sub.KERNEL32.DLL_GetCurrentThreadId
push eax
push 0
push 0x404439
push 0xc
call sub.USER32.DLL_SetWindowsHookExA
mov dword [0x478250], eax
jmp 0x404aa0
push ebx
call fcn.00404516
pop ecx
push 0
push 0
push 0
push ebx
call sub.USER32.DLL_GetMessageA
test eax, eax
jg 0x404a99
call fcn.0041a952
call fcn.0042a691
push dword [0x478674]
call sub.KERNEL32.DLL_FreeLibrary
call fcn.00428acb
push 0
call fcn.00404605
pop ecx
mov eax, dword [ebx + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10