Function at 0x401650
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Delete file
Get common file path
Read file on windows
Terminate process
Write file on windows

Disassembly:
sub esp, 0x40c
push ebx
push esi
push edi
push ebp
push str.d2bb4cb31ca3b5a
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401687
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]
xor ebx, ebx
call fcn.00401580
push 0x7f02
mov dword [0x407494], ebx
push ebx
mov dword [0x407498], ebx
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
mov ecx, dword [section..data]
call fcn.00401620
mov ecx, 0x30d40
mov dword [esp + 0x14], eax
call fcn.00401620
push 0x200
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x20]
push eax
push ebx
call ebp
lea ecx, [esp + 0x1c]
push ebx
push 0x80000000
mov edi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 3
push ebx
push 3
push 0x80000000
push ecx
call edi
mov esi, eax
push ebx
lea eax, [esp + 0x14]
mov ecx, dword [section..data]
mov edx, dword [esp + 0x18]
push eax
push ecx
push edx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40195d
mov edx, dword [section..data]
cmp edx, dword [esp + 0x10]
jne 0x40195d
push 0xffffffffffffffff
mov eax, dword [0x405004]
sub edx, eax
mov ecx, dword [esp + 0x18]
add ecx, eax
call fcn.004015e0
cmp eax, dword [0x405010]
jne 0x40195d
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0x1c]
mov ebp, dword [sym.imp.KERNEL32.dll_GetTempPathA]
push eax
push 0xff
call ebp
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
dec eax
mov dword [esp + 0x10], eax
lea eax, [esp + eax + 0x1c]
cmp byte [eax], 0x5c
jne 0x401781
mov byte [eax], bl
mov eax, dword [0x405020]
cmp eax, 0xffffffff
mov dword [esp + 0x10], eax
jne 0x401797
mov dword [esp + 0x10], 0
mov eax, dword [0x405024]
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
mov dword [0x405024], eax
test eax, eax
je 0x4017c0
lea eax, [esp + 0x1c]
push 0x4050d8
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [0x405024]
mov ebp, 0x64
mov dword [0x405024], eax
mov dword [0x40749c], eax
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x21c]
push eax
push ecx
push str._sgert_i.dll
push edx
call esi
add esp, 0x10
cmp dword [0x405020], 0xffffffff
jne 0x40188a
lea eax, [esp + 0x21c]
push 0
push 0x80000000
push 2
push 0
push 0
push 0xc0000000
push eax
call edi
cmp eax, 0xffffffff
mov ebx, eax
jne 0x401853
cmp dword [esp + 0x10], ebp
je 0x401849
mov eax, dword [esp + 0x10]
inc dword [esp + 0x10]
cmp eax, 0xc8
jb 0x4017cf
lea eax, [esp + 0x1c]
push eax
push str.Cannot_create__s_
lea eax, [esp + 0x24]
push eax
call esi
add esp, 0xc
jmp 0x40196d
mov eax, 1
jmp 0x4017a2
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
add ecx, dword [0x405004]
mov edx, dword [esp + 0x18]
mov dword [0x405020], eax
call fcn.004011e0
lea ecx, [esp + 0x10]
push 0
mov edx, dword [esp + 0x1c]
push ecx
push eax
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x18]
call fcn.00401640
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
lea eax, [esp + 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
push str.Launcher
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x4018e3
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x1c]
push eax
push str.Cannot_load_Launcher_function_in__s_
push ecx
call esi
add esp, 0xc
jmp 0x40196d
mov ecx, dword [esp + 0x14]
mov edx, dword [0x405018]
mov dword [0x407480], ecx
mov dword [0x407484], edx
mov ebx, dword [0x405020]
push 0x407480
mov dword [0x407488], 0x401400
mov dword [0x40748c], 0x401470
mov dword [0x407490], 0x4015e0
mov dword [0x4074a0], ebx
call eax
mov ecx, dword [esp + 0x14]
call fcn.00401640
push edi
mov ebp, dword [sym.imp.KERNEL32.dll_FreeLibrary]
call ebp
cmp dword [0x407498], 0
jne 0x401953
lea eax, [esp + 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
lea eax, [esp + 0x1c]
push str.The_installer_file_is_corrupted._It_was_downloaded_with_errors_or_otherwise_damaged._nPlease_download_it_again_and_make_sure_that_you_do_not_have_viruses.
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
lea eax, [esp + 0x1c]
push 0x10
push str.Error
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x40c
ret