Function at 0x401000
Capabilities:
Check mutex on windows
Create process on windows
Extract resource via kernel32 functions
Get common file path
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a0
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push str._MYCRONIC_Installation_
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebp - 0x114], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x240], eax
push 0x40b1d4
push 0
call dword [sym.imp.ADVAPI32.dll_RegisterEventSourceA]
mov dword [0x40efe0], eax
cmp dword [ebp - 0x240], 0xb7
jne 0x401081
push 0x40b1e0
call fcn.004013c0
add esp, 4
push str.Installation_already_running
call fcn.00401400
add esp, 4
push str.Installation_ended
call fcn.004013c0
add esp, 4
or eax, 0xffffffff
jmp 0x4012ff
cmp dword [0x40efe0], 0
jne 0x401097
push str.Failed_to_install_event_source
call fcn.00401310
add esp, 4
push str.Installation_started
call fcn.004013c0
add esp, 4
push str.EXEFILE
push 0x82
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov dword [ebp - 0x244], eax
cmp dword [ebp - 0x244], 0
jne 0x4010d4
push str.FindResource_failed
call fcn.00401440
add esp, 4
mov ecx, dword [ebp - 0x244]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x354], eax
cmp dword [ebp - 0x354], 0
jne 0x4010ff
push str.LoadResource_failed
call fcn.00401440
add esp, 4
mov edx, dword [ebp - 0x354]
push edx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x23c], eax
cmp dword [ebp - 0x23c], 0
jne 0x401128
push str.LockResource_failed
call fcn.00401440
add esp, 4
lea eax, [ebp - 0x220]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [ebp - 0x350]
push ecx
push 0
push 0x40b2b0
lea edx, [ebp - 0x220]
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
mov dword [ebp - 0x238], 0
push 0x40b2b4
lea eax, [ebp - 0x350]
push eax
lea ecx, [ebp - 0x238]
push ecx
call fcn.004018e5
add esp, 0xc
cmp dword [ebp - 0x238], 0
jne 0x401190
push str.Failed_to_create_file
call fcn.00401440
add esp, 4
mov edx, dword [ebp - 0x244]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [ebp - 0x224], eax
cmp dword [ebp - 0x224], 0
jne 0x4011bd
push str.Failed_to_get_size_of_resource
call fcn.00401440
add esp, 4
mov ecx, dword [ebp - 0x238]
push ecx
mov edx, dword [ebp - 0x224]
push edx
push 1
mov eax, dword [ebp - 0x23c]
push eax
call fcn.0040179f
add esp, 0x10
cmp eax, dword [ebp - 0x224]
je 0x4011f1
push str.Failed_to_write_file_to_disk
call fcn.00401440
add esp, 4
mov ecx, dword [ebp - 0x238]
push ecx
call fcn.004015c1
add esp, 4
push 0x44
push 0
lea edx, [ebp - 0x3a0]
push edx
call fcn.004014d0
add esp, 0xc
mov dword [ebp - 0x3a0], 0x44
push 0x10
push 0
lea eax, [ebp - 0x234]
push eax
call fcn.004014d0
add esp, 0xc
push 0x104
push 0
lea ecx, [ebp - 0x110]
push ecx
call fcn.004014d0
add esp, 0xc
lea edx, [ebp - 0x350]
push edx
lea eax, [ebp - 0x110]
push eax
call fcn.00401480
add esp, 8
cmp dword [ebp + 0x10], 0
je 0x401289
push 0x40b310
lea ecx, [ebp - 0x110]
push ecx
call fcn.00401480
add esp, 8
mov edx, dword [ebp + 0x10]
push edx
lea eax, [ebp - 0x110]
push eax
call fcn.00401480
add esp, 8
lea ecx, [ebp - 0x234]
push ecx
lea edx, [ebp - 0x3a0]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x110]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x4012d2
lea ecx, [ebp - 0x350]
push ecx
call fcn.0040149a
add esp, 4
push str.Failed_to_start_process
call fcn.00401440
add esp, 4
push 0xffffffffffffffff
mov edx, dword [ebp - 0x234]
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x350]
push eax
call fcn.0040149a
add esp, 4
push str.Installation_successfully_ended
call fcn.004013c0
add esp, 4
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00401938
mov esp, ebp
pop ebp
ret 0x10