Function at 0x50a7e0
Capabilities:
Check if file exists
Check mutex on windows
Get common file path
Get file attributes
Get program files directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xeb8
cmp dword [0x731ff8], 3
push ebx
push ebp
push esi
push edi
jl 0x50ab06
mov eax, dword [0x735b94]
mov ebp, dword [eax + 8]
push ebp
mov dword [esp + 0x1c], ebp
call fcn.00507ce0
test al, al
jne 0x50a9f6
mov eax, dword [str.Crescendo]
xor ebx, ebx
test eax, eax
je 0x50ab06
mov ecx, ebp
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x50a84e
test dx, dx
je 0x50a84a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x50a84e
add eax, 4
add ecx, 4
test dx, dx
jne 0x50a828
xor eax, eax
jmp 0x50a853
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x50a871
add ebx, 1
mov ecx, ebx
shl ecx, 4
mov eax, dword [ecx + 0x732318]
test eax, eax
jne 0x50a826
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push ebp
push str.ExtSysRun__s
mov esi, 0x104
lea edi, [esp + 0x8b8]
call fcn.004af0d0
add esp, 8
mov edx, edi
push edx
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ebp, eax
test ebp, ebp
je 0x50a8bc
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x50a8bc
push 0x927c0
push ebp
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x50a9e7
shl ebx, 4
mov eax, dword [ebx + 0x732324]
push eax
push str.https:___sindex.html_refnchiodabout
lea edi, [esp + 0xac0]
call fcn.004af0d0
mov edx, dword [ebx + 0x732320]
add esp, 8
mov ecx, edi
push ecx
push edx
lea eax, [esp + 0x28]
call fcn.00509fe0
lea eax, [esp + 0x20]
push eax
call fcn.004f61f0
test al, al
jne 0x50a917
test ebp, ebp
je 0x50a906
push ebp
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea edi, [esp + 0x20]
call fcn.0050ab10
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
lea esi, [esp + 0x14]
mov dword [esp + 0x14], 0
call fcn.004982f0
mov eax, esi
lea ecx, [esp + 0x320]
call fcn.0049d860
mov ecx, dword [ebx + 0x73231c]
push 1
push 0x700e04
push ecx
lea edx, [esp + 0x41b]
push edx
lea eax, [esp + 0x2c]
push eax
xor eax, eax
call fcn.004a6570
cmp dword [esp + 0x1c], 0
je 0x50a992
test ebp, ebp
je 0x50a96a
push ebp
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea eax, [esp + 0x320]
call fcn.004156d0
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.USER32.dll_DestroyIcon]
lea edi, [esp + 0x20]
call fcn.0050ab10
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x320]
call fcn.004156d0
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_DestroyIcon]
call fcn.0050abd0
mov ebx, dword [esp + 0x18]
push ebx
mov esi, 0x3c0
call fcn.00507ce0
test al, al
jne 0x50a9de
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x7d
call edi
mov eax, esi
sub esi, 1
test eax, eax
jl 0x50a9de
push ebx
call fcn.00507ce0
test al, al
je 0x50a9c7
lea edi, [esp + 0x20]
call fcn.0050ab10
test ebp, ebp
je 0x50a9f2
push ebp
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ebp, dword [esp + 0x18]
lea ecx, [esp + 0x4a0]
push ecx
push 0
push 0
push 0x26
push 0
mov word [esp + 0x4b4], 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
cmp word [esp + 0x4a0], 0
je 0x50ab06
push ebp
push ebp
push str.NCH_Software_s_s.exe
mov esi, 0x104
lea edi, [esp + 0x6b4]
call fcn.004af0d0
add esp, 0xc
push 0x6bc0cc
mov edx, edi
push edx
lea eax, [esp + 0x120]
push eax
lea eax, [esp + 0x4ac]
call fcn.004ad3a0
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
lea ecx, [esp + 0x118]
push ecx
call ebx
cmp eax, 0xffffffff
jne 0x50aaab
push ebp
push ebp
push str.NCH_Swift_Sound_s_s.exe
call fcn.004af0d0
add esp, 0xc
push 0x6bc0cc
mov edx, edi
push edx
lea eax, [esp + 0x120]
push eax
lea eax, [esp + 0x4ac]
call fcn.004ad3a0
lea ecx, [esp + 0x118]
push ecx
call ebx
cmp eax, 0xffffffff
je 0x50ab06
cmp dword [0x731ff8], 3
jle 0x50aabf
mov edx, dword [0x735b94]
mov eax, dword [edx + 0xc]
jmp 0x50aac1
xor eax, eax
test eax, eax
je 0x50aaf8
push eax
lea eax, [esp + 0x11c]
push eax
push str._s___s_
mov esi, 0x208
lea edi, [esp + 0xac4]
call fcn.004af0d0
add esp, 0xc
mov eax, edi
push 1
call fcn.004012a0
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x118]
push 1
call fcn.004012a0
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret