Function at 0x407ec0
Capabilities:
Check if file exists
Check mutex on windows
Copy file
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x411a88
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xdb0
push ebx
push esi
mov ebx, ecx
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x157]
mov byte [ebp - 0x158], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor edx, edx
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x5aa]
mov word [ebp - 0x5ac], dx
mov byte [ebp - 0x2a0], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x41
xor eax, eax
lea edi, [ebp - 0x29f]
mov byte [ebp - 0x9ac], dl
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x9ab]
mov byte [ebp - 0x198], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xf
xor eax, eax
lea edi, [ebp - 0x197]
mov byte [ebp - 0x3a4], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x3a3]
mov dword [ebp - 0x44], ebx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp + 8]
mov dword [ebp - 0x40], edx
cmp eax, edx
je 0x407f83
mov dword [eax], edx
lea edi, [ebx + 0x14]
lea eax, [ebp - 0x198]
push edi
push 0x40
push eax
push edx
push str.version
mov ecx, 0x41cd88
call fcn.00402260
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
call esi
test eax, eax
je 0x408378
push edi
lea ecx, [ebp - 0x9ac]
push 0x400
push ecx
push 0
push 0x418694
mov ecx, 0x41cd88
call fcn.00402260
push eax
call esi
test eax, eax
je 0x408378
call fcn.004068e0
test eax, eax
je 0x408084
lea edx, [ebx + 0x220]
push 0x104
lea eax, [ebp - 0x158]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea ecx, [ebp - 0x2a0]
push 0x104
push ecx
push 0x10
call fcn.004060b0
add esp, 0xc
lea edx, [ebp - 0x2a0]
push edx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
lea eax, [ebp - 0x2a0]
push str.Update
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea ecx, [ebp - 0x2a0]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40805e
lea edx, [ebp - 0x2a0]
push eax
push edx
call fcn.00402db0
add esp, 8
test eax, eax
je 0x408378
lea eax, [ebp - 0x158]
push str.Setup.exe
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea ecx, [ebp - 0x2a0]
push str.Setup.exe
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
jmp 0x4080ca
push 0x418684
push 0
call sub.MSVCRT.dll__tempnam
add esp, 8
mov ebx, eax
lea edx, [ebp - 0x158]
push 0x104
push ebx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push ebx
call sub.MSVCRT.dll_free
push 0x104
lea eax, [ebp - 0x158]
push str..exe
push eax
call fcn.00403370
mov ebx, dword [ebp - 0x44]
add esp, 0x10
push edi
lea ecx, [ebp - 0x3a4]
push 0x104
push ecx
push 0
push str.general
mov ecx, 0x41cd88
call fcn.00402260
push eax
call esi
test eax, eax
je 0x408378
lea edx, [ebp - 0x3a4]
lea eax, [ebp - 0x158]
push edx
lea ecx, [ebp - 0x9ac]
push eax
push ecx
mov ecx, ebx
call fcn.00408df0
test eax, eax
je 0x408378
lea edx, [ebp - 0x5ac]
push 0x104
or esi, 0xffffffff
push edx
lea eax, [ebp - 0x158]
push esi
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x408378
lea ecx, [ebp - 0x5ac]
push ecx
call fcn.00406b10
test eax, eax
je 0x408378
mov eax, dword [ebx + 4]
test eax, eax
jne 0x408378
mov eax, dword [ebp + 8]
test eax, eax
je 0x40816c
mov dword [eax], 1
call fcn.004068e0
test eax, eax
je 0x4081bd
lea edx, [ebp - 0x2a0]
push 0
lea eax, [ebp - 0x158]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x408378
lea ecx, [ebp - 0x158]
push 1
push ecx
call fcn.004023d0
add esp, 8
lea edx, [ebp - 0x2a0]
lea eax, [ebp - 0x158]
push 0x104
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
mov cl, 0x9f
push 0x2e
mov byte [ebp - 0x27], cl
mov byte [ebp - 0x23], cl
mov cl, 0x82
mov al, 0x93
mov byte [ebp - 0x20], cl
mov byte [ebp - 0x18], cl
mov byte [ebp - 0x10], cl
lea ecx, [ebp - 0x3c]
mov bl, 0xe7
mov dl, 0x86
push ecx
push 0x20
lea ecx, [ebp - 0x54]
mov byte [ebp - 0x3c], al
mov byte [ebp - 0x3b], 0xc3
mov byte [ebp - 0x3a], 0xd1
mov byte [ebp - 0x39], 0xc6
mov byte [ebp - 0x38], 0xa9
mov byte [ebp - 0x37], 0xc9
mov byte [ebp - 0x36], 0xcc
mov byte [ebp - 0x35], 0xe9
mov byte [ebp - 0x34], 0xbb
mov byte [ebp - 0x33], bl
mov byte [ebp - 0x32], al
mov byte [ebp - 0x31], 0x8d
mov byte [ebp - 0x30], 0x85
mov byte [ebp - 0x2f], 0x9e
mov byte [ebp - 0x2e], 0x91
mov byte [ebp - 0x2d], 0xf3
mov byte [ebp - 0x2c], 0xf2
mov byte [ebp - 0x2b], 0x8b
mov byte [ebp - 0x2a], 0x95
mov byte [ebp - 0x29], 0xf7
mov byte [ebp - 0x28], dl
mov byte [ebp - 0x26], 0x8f
mov byte [ebp - 0x25], 0x81
mov byte [ebp - 0x24], 0x83
mov byte [ebp - 0x22], 0xe6
mov byte [ebp - 0x21], 0x98
mov byte [ebp - 0x1f], 0xe3
mov byte [ebp - 0x1e], 0x9b
mov byte [ebp - 0x1d], 0x87
mov byte [ebp - 0x1c], 0xed
mov byte [ebp - 0x1b], 0xe4
mov byte [ebp - 0x1a], al
mov byte [ebp - 0x19], 0x8c
mov byte [ebp - 0x17], 0x96
mov byte [ebp - 0x16], bl
mov byte [ebp - 0x15], 0xf1
mov byte [ebp - 0x14], dl
mov byte [ebp - 0x13], 0x97
mov byte [ebp - 0x12], al
mov byte [ebp - 0x11], dl
mov byte [ebp - 0xf], 0xdb
call fcn.004021d0
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], 0
call fcn.00402260
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebx, eax
test ebx, ebx
je 0x4083bd
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x4083b6
mov ecx, 0x103
xor eax, eax
lea edi, [ebp - 0xdba]
mov word [ebp - 0xdbc], 0
rep stosd dword es:[edi], eax
lea edx, [ebp - 0x158]
test edx, edx
stosw word es:[edi], ax
jne 0x4082de
xor edi, edi
jmp 0x40831a
lea eax, [ebp - 0x158]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.0040fab0
mov edi, esp
push esi
push edi
lea ecx, [ebp - 0x158]
push 0xffffffffffffffff
push ecx
push 0
push 0
mov word [edi], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
or esi, 0xffffffff
push str._Update
push edi
push str.__s___s
lea edx, [ebp - 0xdbc]
push 0x207
push edx
call sub.MSVCRT.dll__snwprintf
lea eax, [ebp - 0xdbc]
push 0xea60
push eax
push 0
call fcn.00408b70
add esp, 0x20
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
jne 0x408366
mov eax, dword [ebp + 8]
test eax, eax
je 0x408366
mov dword [eax], 1
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x40], 1
mov dword [ebp - 4], esi
call fcn.00402220
lea ecx, [ebp - 0x158]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x40839a
lea edx, [ebp - 0x158]
push 1
push edx
call fcn.004023d0
add esp, 8
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xdc8]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], esi
call fcn.00402220
xor eax, eax
jmp 0x40839d