Function at 0x401000
Capabilities:
Check if file exists
Create directory
Create process on windows
Enumerate processes
Extract resource via kernel32 functions
Get common file path
Get file attributes
Terminate process
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1080
call fcn.0040b860
mov eax, dword [0x413004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x410c1c
lea eax, [ebp - 0xe3c]
push 0x104
push eax
call fcn.00403230
add esp, 0xc
mov dword [ebp - 0x1078], 0x22c
push 0
push 2
call dword [sym.imp.KERNEL32.dll_CreateToolhelp32Snapshot]
mov esi, eax
lea eax, [ebp - 0x1078]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_Process32FirstW]
test eax, eax
je 0x4010b1
mov edi, dword [sym.imp.KERNEL32.dll_Process32NextW]
lea ecx, [ebp - 0xe3c]
lea eax, [ebp - 0x1054]
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x401096
test dx, dx
je 0x401092
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x401096
add eax, 4
add ecx, 4
test dx, dx
jne 0x401070
xor eax, eax
jmp 0x40109b
sbb eax, eax
or eax, 1
test eax, eax
je 0x4015d3
lea eax, [ebp - 0x1078]
push eax
push esi
call edi
test eax, eax
jne 0x401061
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call edi
lea eax, [ebp - 0x20c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, 0x104
ja 0x4015c2
test eax, eax
je 0x4015c2
push str.SupremeViewer_Setup
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.00403294
add esp, 0xc
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40115c
test al, 0x10
je 0x40115c
lea ecx, [ebp - 0x20c]
call fcn.004015f0
test eax, eax
je 0x40115c
mov edx, str.SupremeViewer_Setup:_Unable_to_delete_directory:
lea ecx, [ebp - 0x414]
call fcn.00401780
lea edx, [ebp - 0x20c]
lea ecx, [ebp - 0x414]
call fcn.00401790
push 0x30
push str.SupremeViewer_Setup
lea eax, [ebp - 0x414]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x401176
mov edx, str.SupremeViewer_Setup:_Create_directory_failed:
jmp 0x401122
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x61c]
push 0x104
push eax
call fcn.00403230
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x824]
push 0x104
push eax
call fcn.00403230
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0xa2c]
push 0x104
push eax
call fcn.00403230
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0xc34]
push 0x104
push eax
call fcn.00403230
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [ebp - 0x61c]
add esp, 0x30
push str.SupremeViewer_Installer.exe
push eax
call esi
push str.SupremeViewer_Installer.exe.config
lea eax, [ebp - 0x824]
push eax
call esi
push str.SupremeViewer_Installer.exe.manifest
lea eax, [ebp - 0xa2c]
push eax
call esi
push str.SupremeViewer_Installer.msi
lea eax, [ebp - 0xc34]
push eax
call esi
push str.RT_RCDATA
push 0x65
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 0x1080], eax
test eax, eax
jne 0x401241
push 0x30
push str.SupremeViewer_Setup
push str.Executable_resource_file_not_found_
jmp 0x40114c
mov esi, dword [sym.imp.KERNEL32.dll_SizeofResource]
push eax
push 0
call esi
mov ebx, eax
test ebx, ebx
jne 0x401263
push 0x30
push str.SupremeViewer_Setup
push str.SizeofResource_exe_size_:_ERROR_INSUFFICIENT_BUFFER_
jmp 0x40114c
push dword [ebp - 0x1080]
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x401286
push 0x30
push str.SupremeViewer_Setup
push str.LoadResource_exe_res_:_ERROR_INSUFFICIENT_BUFFER.
jmp 0x40114c
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push 0
push 0
push 2
push 0
push 0
mov dword [ebp - 0x1080], eax
lea eax, [ebp - 0x61c]
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x107c], eax
cmp eax, 0xffffffff
jne 0x4012cb
push 0x30
push str.SupremeViewer_Setup
push str.CreateFile_exe_path_:_INVALID_HANDLE_VALUE_
jmp 0x40114c
push 0
lea ecx, [ebp - 0xe40]
mov dword [ebp - 0xe40], ebx
push ecx
push ebx
push dword [ebp - 0x1080]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4012fd
push 0x30
push str.SupremeViewer_Setup
push str.WriteFile_exe_path_:_Error_creating_the_file_
jmp 0x40114c
push dword [ebp - 0x107c]
call edi
push str.RT_RCDATA
push 0x66
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
jne 0x40132b
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_configuration_resource_file_not_found_
jmp 0x40114c
push ebx
push 0
call esi
mov dword [ebp - 0x107c], eax
test eax, eax
jne 0x40134b
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_config_file_error:_ERROR_INSUFFICIENT_BUFFER_
jmp 0x40114c
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x401369
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_conf_file_error:_ERROR_INSUFFICIENT_BUFFER.
jmp 0x40114c
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push 0
push 0
push 2
push 0
push 0
mov dword [ebp - 0x1080], eax
lea eax, [ebp - 0x824]
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x4013aa
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_config_file_error:_INVALID_HANDLE_VALUE_
jmp 0x40114c
mov eax, dword [ebp - 0x107c]
lea ecx, [ebp - 0xe44]
push 0
push ecx
push eax
push dword [ebp - 0x1080]
mov dword [ebp - 0xe44], eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4013e2
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_error_creating_config_file_
jmp 0x40114c
push ebx
call edi
push str.RT_RCDATA
push 0x68
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
jne 0x40140b
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_manifest_resource_file_not_found_
jmp 0x40114c
push ebx
push 0
call esi
mov dword [ebp - 0x107c], eax
test eax, eax
jne 0x40142b
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_manifest_file_error:_ERROR_INSUFFICIENT_BUFFER_
jmp 0x40114c
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x401449
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_manifest_file_error:_ERROR_INSUFFICIENT_BUFFER.
jmp 0x40114c
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push 0
push 0
push 2
push 0
push 0
mov dword [ebp - 0x1080], eax
lea eax, [ebp - 0xa2c]
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x40148a
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_manifest_file_error:_INVALID_HANDLE_VALUE_
jmp 0x40114c
mov eax, dword [ebp - 0x107c]
lea ecx, [ebp - 0xe48]
push 0
push ecx
push eax
push dword [ebp - 0x1080]
mov dword [ebp - 0xe48], eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4014c2
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_error_creating_manifest_file_
jmp 0x40114c
push ebx
call edi
push str.RT_RCDATA
push 0x67
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 0x107c], eax
test eax, eax
jne 0x4014ef
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_msi_file_not_found_
jmp 0x40114c
push eax
push 0
call esi
mov ebx, eax
test ebx, ebx
jne 0x40150b
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_msi_file_error:_ERROR_INSUFFICIENT_BUFFER_
jmp 0x40114c
push dword [ebp - 0x107c]
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x40152e
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_msi_file_error:_ERROR_INSUFFICIENT_BUFFER.
jmp 0x40114c
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push 0
push 0
push 2
push 0
push 0
mov dword [ebp - 0x107c], eax
lea eax, [ebp - 0xc34]
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40156f
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_msi_file_error:_INVALID_HANDLE_VALUE_
jmp 0x40114c
push 0
lea eax, [ebp - 0xe4c]
mov dword [ebp - 0xe4c], ebx
push eax
push ebx
push dword [ebp - 0x107c]
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x4015a1
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_error_creating_msi_file_
jmp 0x40114c
push esi
call edi
push 1
push 0
push 0
lea eax, [ebp - 0x61c]
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
push 0
jmp 0x401156
push 0x30
push str.SupremeViewer_Setup
push str.GetTempPath_failed
jmp 0x40114c
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x30
push str.SupremeViewer_Setup
push str.SupremeViewer_Setup_is_already_running...
jmp 0x40114c