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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x56fb1d
mov eax, dword fs:[0]
push eax
sub esp, 0x830
mov eax, dword [0x5d7f50]
xor eax, esp
mov dword [esp + 0x828], eax
push ebx
push esi
push edi
mov eax, dword [0x5d7f50]
xor eax, esp
push eax
lea eax, [esp + 0x840]
mov dword fs:[0], eax
push 0x5acfcc
push 1
mov edi, ecx
xor ebx, ebx
push ebx
mov dword [esp + 0x28], edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, ebx
je 0x4015fa
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4015fa
push 0x5acfd8
push ebx
call dword [sym.imp.USER32.dll_FindWindowA]
mov esi, eax
cmp esi, ebx
je 0x401b66
lea eax, [esp + 0x50]
push eax
push esi
call dword [sym.imp.USER32.dll_GetWindowPlacement]
lea ecx, [esp + 0x50]
push ecx
push esi
mov dword [esp + 0x60], 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 0x401b66
mov dword [edi + 0xc4], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
lea esi, [edi + 0xc0]
cmp eax, ebx
jne 0x401614
xor ecx, ecx
jmp 0x40162d
mov ecx, eax
lea edi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
cmp dl, bl
jne 0x401620
sub ecx, edi
mov edi, dword [esp + 0x1c]
push ecx
push eax
mov ecx, esi
call fcn.00402a20
call fcn.0044b779
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401650
push 0x80004005
call fcn.00402bc0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 0x20
mov dword [esp + 0x84c], ebx
mov eax, dword [esi]
push 1
push eax
lea ecx, [esp + 0x24]
push ecx
call fcn.0044cb29
lea edx, [esp + 0x18]
push edx
mov ecx, esi
call fcn.00402ac0
mov eax, dword [0x5e3510]
push str._hide
push eax
call fcn.0053cf63
add esp, 8
cmp eax, ebx
sete al
xor ecx, ecx
cmp al, bl
setne cl
mov dword [edi + 0xc4], ecx
call fcn.00401000
xor edx, edx
cmp edx, 0x5e2c10
je 0x4016c2
push 0x5e2c10
call fcn.0041ef20
push 4
call fcn.0044affb
cmp eax, ebx
je 0x4016d5
mov dword [eax], vtable.CCustomOccManager.0
jmp 0x4016d7
xor eax, eax
push 8
mov dword [edi + 0xb8], eax
call fcn.0043cd3c
add esp, 4
cmp eax, ebx
je 0x4016f6
mov dword [eax], vtable.CImpIDispatch.0
mov dword [eax + 4], ebx
jmp 0x4016f8
xor eax, eax
mov dword [edi + 0xbc], 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.0044d8cc
call fcn.0044dca8
mov ecx, dword [edi + 0xb8]
push ecx
call fcn.0044e5d3
add esp, 4
push str.Local_AppWizard_Generated_Applications
mov ecx, edi
call fcn.0044eac1
call fcn.00414cd0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push 7
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], ebx
push str.Version
mov byte [ecx], bl
call fcn.00402320
lea esi, [esp + 0x50]
call fcn.00414e40
mov byte [esp + 0x848], 1
cmp dword [esp + 0x48], 0x10
mov edx, dword [esp + 0x34]
jae 0x401784
mov edx, esi
xor eax, eax
mov ecx, 0x5ad324
call fcn.00401e20
cmp eax, ebx
jne 0x40179f
xor eax, eax
cmp dword [esp + 0x44], ebx
setne al
cmp eax, ebx
sete al
cmp al, bl
je 0x4017b3
push ebx
xor ecx, ecx
call fcn.0040fa60
jmp 0x401928
push 0x103
lea edx, [esp + 0x631]
push ebx
push edx
mov byte [esp + 0x638], bl
call fcn.00543bb0
add esp, 0xc
push 0x103
lea eax, [esp + 0x421]
push ebx
push eax
mov byte [esp + 0x428], bl
call fcn.00543bb0
add esp, 0xc
lea ecx, [esp + 0x62c]
call fcn.0041f670
lea eax, [esp + 0x62c]
dec eax
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x401801
mov ecx, dword [str.ver.TXT]
mov edx, dword [0x5acd3c]
mov dword [eax], ecx
mov dword [eax + 4], edx
lea eax, [esp + 0x62c]
push eax
mov dword [esp + 0x28], vtable.CIni.0
call fcn.0053fe9a
add esp, 4
mov dword [esp + 0x28], eax
push 0xff
lea ecx, [esp + 0x739]
push ebx
mov byte [esp + 0x850], 2
push ecx
mov byte [esp + 0x740], bl
call fcn.00543bb0
add esp, 0xc
push 0x5ad028
push str.version
lea edx, [esp + 0x2c]
mov byte [esp + 0x424], bl
push edx
lea ebx, [esp + 0x740]
call fcn.00425c60
mov esi, eax
push 0x100
push esi
lea eax, [esp + 0x424]
push 0x100
push eax
call fcn.005403b4
push esi
call fcn.0043cd76
lea eax, [esp + 0x430]
add esp, 0x14
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4018b0
mov ebx, dword [esp + 0x44]
sub eax, edx
mov esi, eax
mov eax, ebx
cmp ebx, esi
jb 0x4018c7
mov eax, esi
cmp dword [esp + 0x48], 0x10
mov edx, dword [esp + 0x34]
jae 0x4018d6
lea edx, [esp + 0x34]
lea ecx, [esp + 0x41c]
call fcn.00401e20
test eax, eax
jne 0x4018f8
cmp ebx, esi
jae 0x4018ef
or eax, 0xffffffff
jmp 0x4018f6
xor eax, eax
cmp ebx, esi
setne al
test eax, eax
sete al
test al, al
sete al
test al, al
je 0x40190d
push 0
xor ecx, ecx
call fcn.0040fa60
mov byte [esp + 0x848], 1
mov eax, dword [esp + 0x28]
test eax, eax
je 0x401926
push eax
call fcn.0053e8c6
add esp, 4
xor ebx, ebx
push 0x103
lea ecx, [esp + 0x529]
push ebx
push ecx
mov byte [esp + 0x530], bl
call fcn.00543bb0
add esp, 0xc
lea ecx, [esp + 0x524]
call fcn.0041f670
lea eax, [esp + 0x524]
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
cmp cl, bl
jne 0x401960
mov edx, dword [0x5acd4c]
mov ecx, dword [0x5acd50]
mov dword [eax], edx
mov edx, dword [0x5acd54]
mov dword [eax + 4], ecx
mov ecx, dword [0x5acd58]
mov dword [eax + 8], edx
mov edx, dword [0x5acd5c]
mov dword [eax + 0xc], ecx
push str.__SP____VERYSILENT__norestart__SUPPRESSMSGBOXES
lea ecx, [esp + 0x24]
mov dword [eax + 0x10], edx
call fcn.00402770
lea eax, [esp + 0x50]
push eax
mov edx, str.DisplayVersion
mov ecx, 0x5ad080
mov byte [esp + 0x84c], 3
call fcn.0040ac80
add esp, 4
mov esi, dword [eax + 0x10]
mov ecx, esi
cmp ecx, esi
jae 0x4019ca
cmp dword [eax + 0x14], 0x10
jb 0x4019d4
mov edx, dword [eax]
jmp 0x4019d6
mov edx, eax
xor eax, eax
mov ecx, 0x5ad324
call fcn.00401e20
cmp eax, ebx
jne 0x4019ef
xor eax, eax
cmp esi, ebx
setne al
cmp eax, ebx
sete byte [esp + 0x17]
mov byte [esp + 0x848], 3
cmp dword [esp + 0x64], 0x10
jb 0x401a10
mov ecx, dword [esp + 0x50]
push ecx
call fcn.0043cd76
add esp, 4
mov dword [esp + 0x64], 0xf
mov dword [esp + 0x60], ebx
mov byte [esp + 0x50], bl
cmp byte [esp + 0x17], bl
je 0x401a6a
mov eax, dword [esp + 0x20]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x20], esp
mov esi, esp
push eax
call fcn.00402b50
add eax, 0x10
mov dword [esi], eax
mov byte [esp + 0x850], 5
lea edx, [esp + 0x52c]
mov ecx, esp
mov dword [esp + 0x2c], esp
push edx
call fcn.00402770
mov byte [esp + 0x850], 3
call fcn.00401c30
add esp, 8
lea eax, [esp + 0x7c]
push eax
call fcn.00402ce0
push ebx
lea ecx, [esp + 0x80]
mov byte [esp + 0x84c], 6
push 0x66
mov dword [edi + 0x20], ecx
call fcn.0043d7d1
cmp dword [edi + 0xc4], ebx
je 0x401aa3
push ebx
lea ecx, [esp + 0x80]
call fcn.00444516
push ebx
lea ecx, [esp + 0x80]
call fcn.00440557
mov byte [esp + 0x848], 3
push 0x5e2bb8
mov dword [esp + 0x80], vtable.CBHTML_AssistDlg.0
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
lea eax, [esp + 0x378]
call fcn.004184e0
lea ecx, [esp + 0x114]
call fcn.00430510
lea ecx, [esp + 0x7c]
call fcn.0043cdbf
mov byte [esp + 0x848], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401b17
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x48], 0x10
jb 0x401b2b
mov ecx, dword [esp + 0x34]
push ecx
call fcn.0043cd76
add esp, 4
mov dword [esp + 0x848], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], ebx
mov byte [esp + 0x34], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401b66
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x840]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x828]
xor ecx, esp
call fcn.0053c99c
mov esp, ebp
pop ebp
ret