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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41b048
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xca4
push ebx
push esi
mov esi, ecx
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x193]
mov byte [ebp - 0x194], 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 - 0x49e]
mov word [ebp - 0x4a0], dx
mov byte [ebp - 0x8a0], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x89f]
mov byte [ebp - 0x90], 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 - 0x8f]
mov byte [ebp - 0x298], 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 - 0x297]
mov dword [ebp - 0x40], edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp + 8]
cmp eax, edx
je 0x409d8a
mov dword [eax], edx
lea edi, [esi + 0x18]
lea eax, [ebp - 0x90]
push edi
push 0x40
push eax
push edx
push str.version
mov ecx, 0x424428
call fcn.004021c0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
call ebx
test eax, eax
je 0x40a07b
push edi
lea ecx, [ebp - 0x8a0]
push 0x400
push ecx
push 0
push 0x421770
mov ecx, 0x424428
call fcn.004021c0
push eax
call ebx
test eax, eax
je 0x40a07b
lea edx, [esi + 0x224]
push 0x104
lea eax, [ebp - 0x194]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea ecx, [ebp - 0x194]
push str.Setup.exe
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
push edi
lea edx, [ebp - 0x298]
push 0x104
xor edi, edi
push edx
push edi
push str.general
mov ecx, 0x424428
call fcn.004021c0
push eax
call ebx
test eax, eax
je 0x40a07b
lea eax, [ebp - 0x298]
lea ecx, [ebp - 0x194]
push eax
lea edx, [ebp - 0x8a0]
push ecx
push edx
mov ecx, esi
call fcn.0040ae70
test eax, eax
je 0x40a07b
lea eax, [ebp - 0x4a0]
push 0x104
push eax
lea ecx, [ebp - 0x194]
push 0xffffffffffffffff
push ecx
push edi
push edi
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x40a07b
lea edx, [ebp - 0x4a0]
push edx
call fcn.0040b940
test eax, eax
je 0x40a07b
cmp dword [esi + 4], edi
jne 0x40a07b
mov esi, dword [ebp + 8]
cmp esi, edi
je 0x409ea9
mov dword [esi], 1
mov al, 0x84
mov cl, 0xe9
mov byte [ebp - 0x33], al
mov byte [ebp - 0x32], al
mov al, 0xfc
mov dl, 0xfb
mov byte [ebp - 0x31], al
mov byte [ebp - 0x28], cl
mov byte [ebp - 0x24], cl
mov byte [ebp - 0x19], al
mov byte [ebp - 0x11], al
mov cl, 0xf7
lea eax, [ebp - 0x3c]
mov byte [ebp - 0x29], dl
mov byte [ebp - 0x25], dl
push 0x2e
mov bl, 0x8c
mov dl, 0xfa
mov byte [ebp - 0x1c], cl
mov byte [ebp - 0x13], cl
push eax
push 0x3a
lea ecx, [ebp - 0x50]
mov byte [ebp - 0x3c], 0x89
mov byte [ebp - 0x3b], 0xa5
mov byte [ebp - 0x3a], 0xcf
mov byte [ebp - 0x39], 0xbc
mov byte [ebp - 0x38], 0xb3
mov byte [ebp - 0x37], 0xaf
mov byte [ebp - 0x36], 0xd2
mov byte [ebp - 0x35], 0x93
mov byte [ebp - 0x34], 0xa1
mov byte [ebp - 0x30], 0xe8
mov byte [ebp - 0x2f], 0xf3
mov byte [ebp - 0x2e], 0x8b
mov byte [ebp - 0x2d], pe_nt_image_headers32
mov byte [ebp - 0x2c], 0xef
mov byte [ebp - 0x2b], 0xed
mov byte [ebp - 0x2a], bl
mov byte [ebp - 0x27], 0xf4
mov byte [ebp - 0x26], 0x91
mov byte [ebp - 0x23], 0xa4
mov byte [ebp - 0x22], bl
mov byte [ebp - 0x21], 0xe2
mov byte [ebp - 0x20], 0x9b
mov byte [ebp - 0x1f], 0xf0
mov byte [ebp - 0x1e], 0x88
mov byte [ebp - 0x1d], dl
mov byte [ebp - 0x1b], 0xf5
mov byte [ebp - 0x1a], 0x8e
mov byte [ebp - 0x18], 0x9e
mov byte [ebp - 0x17], 0x82
mov byte [ebp - 0x16], dl
mov byte [ebp - 0x15], 0xfd
mov byte [ebp - 0x14], 0xec
mov byte [ebp - 0x12], 0x89
mov byte [ebp - 0x10], 0xef
mov byte [ebp - 0xf], 0xbd
call fcn.00402130
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], edi
call fcn.004021c0
push eax
push 1
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebx, eax
cmp ebx, edi
je 0x40a068
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x40a061
mov word [ebp - 0xcb0], di
mov ecx, 0x103
xor eax, eax
lea edi, [ebp - 0xcae]
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0x194]
test ecx, ecx
stosw word es:[edi], ax
jne 0x409fc6
xor edi, edi
jmp 0x40a002
lea edx, [ebp - 0x194]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.0041abf0
mov edi, esp
push esi
push edi
lea eax, [ebp - 0x194]
push 0xffffffffffffffff
push eax
push 0
push 0
mov word [edi], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, dword [ebp + 8]
push str._Update
push edi
push 0x421778
lea ecx, [ebp - 0xcb0]
push 0x207
push ecx
call sub.MSVCRT.dll__snwprintf
lea edx, [ebp - 0xcb0]
push 0xea60
push edx
push 0
call fcn.0040a4f0
add esp, 0x20
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
jne 0x40a04b
test esi, esi
je 0x40a04b
mov dword [esi], 1
lea ecx, [ebp - 0x50]
mov esi, 1
mov dword [ebp - 4], 0xffffffff
call fcn.00402180
jmp 0x40a07e
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0xffffffff
call fcn.00402180
xor eax, eax
jmp 0x40a0a2
mov esi, dword [ebp - 0x40]
lea eax, [ebp - 0x194]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x40a0a0
lea ecx, [ebp - 0x194]
push 1
push ecx
call fcn.004025e0
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xcbc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4