Function at 0x401550
Capabilities:
Accept command line arguments
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4a62bd
mov eax, dword fs:[0]
push eax
sub esp, 0x818
mov eax, dword [0x4d8b40]
xor eax, esp
mov dword [esp + 0x810], eax
push ebx
push esi
push edi
mov eax, dword [0x4d8b40]
xor eax, esp
push eax
lea eax, [esp + 0x828]
mov dword fs:[0], eax
push 0x4c0db8
push 1
xor ebx, ebx
push ebx
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, ebx
je 0x401606
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401606
push 0x4c0dc4
push ebx
call dword [sym.imp.USER32.dll_FindWindowA]
mov esi, eax
cmp esi, ebx
je 0x401b13
lea eax, [esp + 0x34]
push eax
push esi
call dword [sym.imp.USER32.dll_GetWindowPlacement]
lea ecx, [esp + 0x34]
push ecx
push esi
mov dword [esp + 0x44], 1
call dword [sym.imp.USER32.dll_SetWindowPlacement]
push 3
push ebx
push ebx
push ebx
push ebx
push 0xfffffffffffffffe
push esi
call dword [sym.imp.USER32.dll_SetWindowPos]
push 1
push esi
call dword [sym.imp.USER32.dll_FlashWindow]
jmp 0x401b13
mov dword [edi + 0xb0], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
lea esi, [edi + 0xac]
cmp eax, ebx
jne 0x401620
xor ecx, ecx
jmp 0x40163b
mov ecx, eax
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
cmp dl, bl
jne 0x401630
sub ecx, dword [esp + 0x18]
push ecx
push eax
mov ecx, esi
call fcn.00402900
call fcn.0044dc0d
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x40165e
push 0x80004005
call fcn.00402ae0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
push 0x20
mov dword [esp + 0x834], ebx
mov eax, dword [esi]
push 1
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.0044e6c5
lea edx, [esp + 0x1c]
push edx
mov ecx, esi
call fcn.00402990
mov eax, dword [0x4e0d6c]
push str._hide
push eax
call fcn.0045ff67
add esp, 8
cmp eax, ebx
sete al
xor ecx, ecx
cmp al, bl
setne cl
mov dword [edi + 0xb0], ecx
call fcn.00401000
xor edx, edx
cmp edx, 0x4e0480
je 0x4016d0
push 0x4e0480
call fcn.004204c0
push 4
call fcn.0044d4bc
cmp eax, ebx
je 0x4016e3
mov dword [eax], vtable.CCustomOccManager.0
jmp 0x4016e5
xor eax, eax
push 8
mov dword [edi + 0xa4], eax
call fcn.0043fbfc
add esp, 4
cmp eax, ebx
je 0x401704
mov dword [eax], vtable.CImpIDispatch.0
mov dword [eax + 4], ebx
jmp 0x401706
xor eax, eax
mov dword [edi + 0xa8], eax
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x30], 8
mov dword [esp + 0x34], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, edi
call fcn.0044ed99
call fcn.0044f5bb
mov ecx, dword [edi + 0xa4]
push ecx
call fcn.00450086
add esp, 4
push str.Local_AppWizard_Generated_Applications
mov ecx, edi
call fcn.00450559
call fcn.00414140
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x34], esp
push 7
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], ebx
push str.Version
mov byte [ecx + 4], bl
call fcn.00402240
lea esi, [esp + 0x7c]
call fcn.00414260
push ebx
mov byte [esp + 0x834], 1
mov edx, dword [esp + 0x78]
push 0x4c10b4
push edx
push ebx
mov ecx, esi
call fcn.00401d40
test eax, eax
jne 0x4017aa
push ebx
xor ecx, ecx
call fcn.0040f140
jmp 0x4018e9
push 0x103
lea eax, [esp + 0x511]
push ebx
push eax
mov byte [esp + 0x518], bl
call fcn.00465b60
add esp, 0xc
push 0x103
lea ecx, [esp + 0x409]
push ebx
push ecx
mov byte [esp + 0x410], bl
call fcn.00465b60
add esp, 0xc
lea ecx, [esp + 0x50c]
call fcn.00420c70
lea eax, [esp + 0x50c]
dec eax
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x4017f8
mov edx, dword [str.ver.TXT]
mov ecx, dword [0x4c0b38]
mov dword [eax], edx
lea edx, [esp + 0x50c]
push edx
mov dword [eax + 4], ecx
mov dword [esp + 0x28], vtable.CIni.0
call fcn.0046361e
mov esi, eax
add esp, 4
mov dword [esp + 0x28], esi
push 0xff
lea eax, [esp + 0x721]
push ebx
mov byte [esp + 0x838], 2
push eax
mov byte [esp + 0x728], bl
call fcn.00465b60
add esp, 0xc
push 0x4c0e14
push str.version
lea ecx, [esp + 0x2c]
mov byte [esp + 0x40c], bl
push ecx
lea ebx, [esp + 0x728]
call fcn.00427180
push 0x100
mov ebx, eax
push ebx
lea edx, [esp + 0x40c]
push 0x100
push edx
call fcn.00463b74
push ebx
call fcn.0043fc36
lea eax, [esp + 0x418]
add esp, 0x14
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4018a3
mov ecx, dword [esp + 0x74]
sub eax, edx
push eax
lea eax, [esp + 0x408]
push eax
push ecx
push 0
lea ecx, [esp + 0x70]
call fcn.00401d40
test eax, eax
je 0x4018d2
push 0
xor ecx, ecx
call fcn.0040f140
mov byte [esp + 0x830], 1
test esi, esi
je 0x4018e7
push esi
call fcn.00461668
add esp, 4
xor ebx, ebx
push 0x103
lea edx, [esp + 0x619]
push ebx
push edx
mov byte [esp + 0x620], bl
call fcn.00465b60
add esp, 0xc
lea ecx, [esp + 0x614]
call fcn.00420c70
lea eax, [esp + 0x614]
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x401920
mov ecx, dword [0x4c0b48]
mov edx, dword [0x4c0b4c]
mov dword [eax], ecx
mov ecx, dword [0x4c0b50]
mov dword [eax + 4], edx
mov edx, dword [0x4c0b54]
mov dword [eax + 8], ecx
mov ecx, dword [0x4c0b58]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
push str.__SP____VERYSILENT__norestart__SUPPRESSMSGBOXES
lea ecx, [esp + 0x24]
call fcn.00402670
lea edx, [esp + 0x34]
push edx
mov edx, str.DisplayVersion
mov ecx, 0x4c0e6c
mov byte [esp + 0x834], 3
call fcn.0040a790
add esp, 4
push ebx
mov byte [esp + 0x834], 4
mov ecx, dword [eax + 0x14]
push 0x4c10b4
push ecx
push ebx
mov ecx, eax
call fcn.00401d40
test eax, eax
sete byte [esp + 0x17]
mov byte [esp + 0x830], 3
cmp dword [esp + 0x4c], 0x10
jb 0x4019be
mov edx, dword [esp + 0x38]
push edx
call fcn.0043fc36
add esp, 4
mov dword [esp + 0x4c], 0xf
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
cmp byte [esp + 0x17], bl
je 0x401a18
mov eax, dword [esp + 0x20]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x1c], esp
mov esi, esp
push eax
call fcn.00402a50
add eax, 0x10
mov dword [esi], eax
mov byte [esp + 0x838], 5
lea eax, [esp + 0x61c]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.00402670
mov byte [esp + 0x838], 3
call fcn.00401b90
add esp, 8
lea ecx, [esp + 0x7c]
push ecx
call fcn.00402bc0
lea edx, [esp + 0x7c]
push ebx
mov byte [esp + 0x834], 6
push 0x66
mov ecx, edx
mov dword [edi + 0x20], edx
call fcn.004405cf
cmp dword [edi + 0xb0], ebx
je 0x401a50
push ebx
lea ecx, [esp + 0x80]
call fcn.004465aa
push ebx
lea ecx, [esp + 0x80]
call fcn.004430d9
mov byte [esp + 0x830], 3
push 0x4e0428
mov dword [esp + 0x80], vtable.CBHTML_AssistDlg.0
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
lea eax, [esp + 0x360]
call fcn.004198d0
lea ecx, [esp + 0xf4]
call fcn.004327b0
lea ecx, [esp + 0x7c]
call fcn.0043fc7f
mov byte [esp + 0x830], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ac4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x78], 0x10
jb 0x401ad8
mov ecx, dword [esp + 0x64]
push ecx
call fcn.0043fc36
add esp, 4
mov dword [esp + 0x830], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401b13
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x828]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x810]
xor ecx, esp
call fcn.0045f97b
mov esp, ebp
pop ebp
ret