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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x58cbf1
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x1a84
call fcn.00561ec0
mov eax, dword [0x5f01b4]
xor eax, esp
mov dword [esp + 0x1a80], eax
push ebx
push esi
push edi
mov eax, dword [0x5f01b4]
xor eax, esp
push eax
lea eax, [esp + 0x1a98]
mov dword fs:[0], eax
lea eax, [esp + 0x34]
push eax
mov edi, ecx
mov dword [esp + 0x38], 8
mov dword [esp + 0x3c], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, edi
call fcn.0046d8fb
call fcn.0046dcd7
test eax, eax
jne 0x405a31
push 0xffffffffffffffff
push eax
push 0x64
call fcn.0046e0a2
jmp 0x40615a
push 0x5bdd9c
mov ecx, edi
call fcn.0046e104
mov eax, dword [0x5f205c]
xor esi, esi
cmp eax, esi
je 0x405a5e
cmp dword [eax + 4], esi
je 0x405a5e
mov eax, dword [eax + 4]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
push str.STMNW
call eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], vtable.CAppliEndEvent.0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1aa0], esi
call dword [0x5c81e4]
mov ecx, dword [0x5f906c]
push ecx
push esi
push 1
push esi
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
cmp eax, esi
jne 0x405a9e
xor ecx, ecx
jmp 0x405aac
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x405aa3
sub ecx, esi
push ecx
push eax
lea ecx, [edi + 0xb8]
call fcn.00401f50
push str._CmdLine
push 0x40000
push 0x5f2054
call fcn.00433010
mov edx, dword [edi + 0xb8]
add esp, 0xc
push edx
push str.__s__n
push 0x40000
push 0x5f2054
call fcn.00433010
add esp, 0x10
call fcn.0046b8a8
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405b08
push 0x80004005
call fcn.004020e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea esi, [esp + 0x18]
mov byte [esp + 0x1aa0], 1
call fcn.00435540
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x1aa4], 2
call fcn.00402070
mov byte [esp + 0x1aa0], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405b63
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.BRSTMONW
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00404ea0
add esp, 0xc
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x1aa4], 3
call fcn.00402070
mov byte [esp + 0x1aa0], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405bb4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
cmp dword [ecx - 0xc], 0x104
jge 0x405bd0
lea edx, [esp + 0x14]
push edx
call fcn.00407450
jmp 0x405ca7
lea esi, [esp + 0x18]
call fcn.00456ae0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x1aa4], 4
call fcn.00402070
mov byte [esp + 0x1aa0], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405c13
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x5bddd0
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.00404ea0
add esp, 0xc
push str.BRSTMONW
push eax
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x1aac], 5
call fcn.00404ea0
add esp, 0xc
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x1aa4], 6
call fcn.00402070
mov byte [esp + 0x1aa0], 5
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405c7f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1aa0], 1
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405ca7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
push ecx
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x405cd0
cmp eax, 5
jne 0x405de3
lea ecx, [edi + 0xb8]
call fcn.00434d50
mov esi, eax
cmp esi, 5
jne 0x405d03
call fcn.00456f00
mov dword [edi + 0xd0], eax
test eax, eax
je 0x405d90
push 0
push esi
push 0x421
push eax
jmp 0x405d8a
cmp esi, 1
je 0x405d5c
cmp esi, 4
je 0x405d5c
cmp esi, 8
jne 0x405d3d
call fcn.00456f00
push 1
lea ecx, [edi + 0xb8]
mov dword [edi + 0xd0], eax
call fcn.00406a00
mov ecx, dword [edi + 0xd0]
test ecx, ecx
je 0x405d90
test eax, eax
js 0x405d90
push eax
push 1
jmp 0x405d84
cmp esi, 6
jne 0x405d90
call fcn.00456f00
mov dword [edi + 0xd0], eax
test eax, eax
je 0x405d90
push 0
push esi
push 0x421
push eax
jmp 0x405d8a
call fcn.00456f00
push 0
lea ecx, [edi + 0xb8]
mov dword [edi + 0xd0], eax
call fcn.00406a00
mov ecx, dword [edi + 0xd0]
test ecx, ecx
je 0x405d90
test eax, eax
js 0x405d90
push eax
push esi
push 0x421
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
push str._Detect_:_Mutex__n
push 0x40000
push 0x5f2054
call fcn.00433010
mov eax, dword [0x5f205c]
add esp, 0xc
test eax, eax
je 0x405dc2
cmp dword [eax + 4], 0
je 0x405dc2
mov eax, dword [eax + 4]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x10]
call eax
mov edi, dword [esp + 0x2c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
je 0x40611f
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push edi
call esi
jmp 0x40611f
call fcn.0046b8a8
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405dfd
push 0x80004005
call fcn.004020e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x18]
mov bl, 7
push ecx
mov byte [esp + 0x1aa4], bl
call fcn.004356e0
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x1aa4], 8
call fcn.00402070
mov byte [esp + 0x1aa0], bl
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x405e59
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x24]
push ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
mov dword [edi + 0xc4], esi
test esi, esi
je 0x4060ad
call fcn.0046f0ea
mov dword [eax + 0xc], esi
lea esi, [edi + 0xd4]
mov ecx, esi
call fcn.00435920
test eax, eax
jne 0x405ebd
mov esi, dword [esp + 0x2c]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push str._CheckSum_FAILED__n
push 0x20000
push 0x5f2054
call fcn.00433010
add esp, 0xc
jmp 0x4060fb
call fcn.00435f90
push 0x5bda14
lea ecx, [esp + 0x2c]
call fcn.00401ca0
push str.UITitle
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1aa4], 9
call fcn.00401ca0
mov bl, 0xa
lea eax, [esp + 0x18]
lea esi, [esp + 0x30]
mov byte [esp + 0x1aa0], bl
call fcn.00436010
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1aa4], 0xb
call fcn.00402070
mov byte [esp + 0x1aa0], bl
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405f35
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1aa0], 9
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405f5d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x28]
cmp dword [ecx - 0xc], 0
je 0x405f83
mov edx, dword [edi + 0x50]
push edx
call fcn.0055e351
mov eax, dword [esp + 0x2c]
add esp, 4
push eax
call fcn.0055e4c5
add esp, 4
mov dword [edi + 0x50], eax
mov edx, dword [edi + 0xc8]
mov eax, dword [edi + 0x44]
mov edx, dword [edx + 4]
lea ecx, [edi + 0xc8]
push eax
call edx
lea ebx, [esp + 0x3c]
call fcn.00408a20
mov eax, ebx
mov byte [esp + 0x1aa0], 0xc
mov ecx, ebx
mov dword [edi + 0x20], eax
call fcn.0046f9d7
push str.__________________END___________________n
push 3
push 0x5f2054
call fcn.00433010
mov eax, dword [0x5f205c]
xor ebx, ebx
add esp, 0xc
cmp eax, ebx
je 0x405fe5
cmp dword [eax + 4], ebx
je 0x405fe5
mov eax, dword [eax + 4]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x10]
call eax
mov eax, dword [esp + 0x20]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, ebx
je 0x405ffa
push eax
call edi
mov dword [esp + 0x20], ebx
mov esi, dword [esp + 0x2c]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call edi
lea ecx, [esp + 0x3c]
push ecx
mov byte [esp + 0x1aa4], 9
call fcn.00406180
mov byte [esp + 0x1aa0], 7
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406042
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1aa0], 1
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40606a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1aa0], bl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406091
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1c], vtable.CBrEvent.0
cmp eax, ebx
je 0x40615a
push eax
call edi
jmp 0x40615a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push str.__There_is_no_LangDLL__s__GetLastError___d_n
push 0x20000
push 0x5f2054
call fcn.00433010
mov eax, dword [0x5f205c]
add esp, 0x14
test eax, eax
je 0x4060e7
cmp dword [eax + 4], 0
je 0x4060e7
mov eax, dword [eax + 4]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x10]
call eax
mov esi, dword [esp + 0x2c]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
lea eax, [ebx - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x1aa0], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40611f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1aa0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406147
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1c], vtable.CBrEvent.0
test eax, eax
je 0x40615a
push eax
call esi
xor eax, eax
mov ecx, dword [esp + 0x1a98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1a80]
xor ecx, esp
call fcn.0055db96
mov esp, ebp
pop ebp
ret