Function at 0x404f90
Capabilities:
Accept command line arguments
Copy file
Delete file
Get common file path
Get file system object information
Set current directory
Set environment variable
Shutdown system
Terminate process
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40cd10
push 0x40a818
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
mov eax, 0x42d8
call fcn.0040a750
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
xor eax, eax
mov dword [ebp - 0x2c], eax
mov edi, str.Error_writing_temporary_file._Make_sure_your_temp_folder_is_valid.
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], 0x20
push 0x8001
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
call dword [sym.imp.KERNEL32.dll_GetVersion]
and eax, 0xbfffffff
mov dword [0x439520], eax
mov esi, str.UXTHEME
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebx, [ebx]
push esi
call fcn.004080d0
push esi
call ebx
inc esi
add esi, eax
cmp byte [esi], 0
jne 0x405000
push 0xa
call fcn.00408ae0
push 8
call fcn.00408ae0
mov dword [0x437510], eax
push 6
call fcn.00408ae0
test eax, eax
je 0x405041
push 0x1e
call eax
test eax, eax
je 0x405041
or dword [0x439520], 0x40000000
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
mov dword [0x4395c0], eax
push 0
push 0x2b4
lea eax, [ebp - 0x2f0]
push eax
push 0
push 0x40c8a4
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
push str.NSIS_Error
push 0x437520
call fcn.00408dc0
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push 0x44f000
call fcn.00408dc0
mov dword [0x437514], 0x400000
mov eax, 0x44f000
cmp word [0x44f000], 0x22
jne 0x4050b4
mov dword [ebp - 0x24], 0x22
mov eax, 0x44f002
push dword [ebp - 0x24]
push eax
call fcn.004086a0
push eax
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [ebp - 0x20], eax
movzx ecx, word [eax]
test cx, cx
je 0x405189
cmp cx, 0x20
jne 0x4050e9
lea esp, [esp]
add eax, 2
cmp word [eax], 0x20
je 0x4050e0
mov edx, 0x20
cmp word [eax], 0x22
jne 0x4050fc
add eax, 2
mov edx, 0x22
cmp word [eax], 0x2f
jne 0x405157
add eax, 2
cmp word [eax], 0x53
jne 0x405123
movzx ecx, word [eax + 2]
cmp ecx, 0x20
je 0x405119
test cx, cx
jne 0x405123
mov dword [0x439640], 1
cmp dword [eax], 0x43004e
jne 0x405146
cmp dword [eax + 4], 0x430052
jne 0x405146
movzx ecx, word [eax + 8]
cmp ecx, 0x20
je 0x405142
test cx, cx
jne 0x405146
or dword [ebp - 0x1c], 4
cmp dword [eax - 4], 0x2f0020
jne 0x405157
cmp dword [eax], 0x3d0044
je 0x405175
push edx
push eax
call fcn.004086a0
cmp word [eax], 0x22
jne 0x405167
add eax, 2
movzx ecx, word [eax]
test cx, cx
jne 0x4050d3
jmp 0x405189
xor ecx, ecx
mov word [eax - 4], cx
add eax, 4
push eax
push 0x450000
call fcn.00408dc0
push 0x454000
push 0x800
mov esi, dword [sym.imp.KERNEL32.dll_GetTempPathW]
call esi
push 0x454000
call fcn.00408fe0
push 0x454000
call fcn.004090f0
test eax, eax
je 0x4051de
push 0x454000
call fcn.004085d0
push 0x454000
call fcn.00407cc0
push 0x454000
push 0x453000
call fcn.00408cb0
test eax, eax
jne 0x4052c0
push 0x7fb
push 0x454000
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push str.Temp
push 0x454000
call sub.KERNEL32.dll_lstrcatW
push 0x454000
call fcn.00408fe0
push 0x454000
call fcn.004090f0
test eax, eax
je 0x405240
push 0x454000
call fcn.004085d0
push 0x454000
call fcn.00407cc0
push 0x454000
push 0x453000
call fcn.00408cb0
test eax, eax
jne 0x4052c0
push 0x454000
push 0x7fc
call esi
push 0x40c8cc
push 0x454000
call sub.KERNEL32.dll_lstrcatW
push 0x454000
push str.TEMP
mov esi, dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
call esi
push 0x454000
push 0x40c8e0
call esi
push 0x454000
call fcn.00408fe0
push 0x454000
call fcn.004090f0
test eax, eax
je 0x405618
push 0x454000
call fcn.004085d0
push 0x454000
call fcn.00407cc0
push 0x454000
push 0x453000
call fcn.00408cb0
test eax, eax
je 0x405618
push 0x453000
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileW]
call ebx
push dword [ebp - 0x1c]
call fcn.004045f0
mov edi, eax
test edi, edi
jne 0x405618
mov ecx, dword [0x439558]
test ecx, ecx
je 0x405364
push eax
push 0x44f000
call fcn.004086a0
mov esi, eax
cmp esi, 0x44f000
jb 0x40531c
mov edi, edi
cmp dword [esi], 0x5f0020
jne 0x405311
cmp dword [esi + 4], 0x3d003f
je 0x40531c
sub esi, 2
cmp esi, 0x44f000
jae 0x405300
mov edi, str.Error_launching_installer
mov dword [ebp - 0x24], edi
cmp esi, 0x44f000
jb 0x40537f
xor eax, eax
mov word [esi], ax
add esi, 8
push esi
call fcn.00408700
test eax, eax
je 0x405618
push esi
push 0x450000
call fcn.00408dc0
push esi
push 0x451000
call fcn.00408dc0
xor edi, edi
mov ecx, dword [0x439558]
test ecx, ecx
jne 0x405369
call fcn.00404ae0
mov dword [0x43964c], 0xffffffff
call fcn.004078c0
mov ebx, eax
jmp 0x40561a
call fcn.00408500
mov esi, eax
mov dword [ebp - 0x28], esi
push str.nsu
push 0x454000
call sub.KERNEL32.dll_lstrcatW
test esi, esi
je 0x4053ab
push 0x40c8f4
push 0x454000
call sub.KERNEL32.dll_lstrcatW
push 0x40c8f8
push 0x454000
call sub.KERNEL32.dll_lstrcatW
push 0x452000
push 0x454000
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x405618
push 0x454000
test esi, esi
je 0x4053e2
call fcn.00407ce0
jmp 0x4053e7
call fcn.00407cc0
push 0x454000
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp word [0x450000], 0
jne 0x40540b
push 0x452000
push 0x450000
call fcn.00408dc0
push dword [ebp - 0x20]
push section..ndata
call fcn.00408dc0
mov dword [0x43c000], 0x41
xor esi, esi
mov dword [ebp - 0x20], esi
cmp esi, 0x1a
jge 0x405607
mov eax, dword [0x439564]
push dword [eax + 0x120]
push 0x427230
call fcn.00407d70
push 0x427230
call ebx
test edi, edi
je 0x4055fa
push 1
push 0x427230
push 0x456000
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4055fa
push 0
push 0x427230
call fcn.004081a0
cmp dword [ebp - 0x28], 0
je 0x4054be
xor eax, eax
mov word [ebp - 0x42f0], ax
push 0x1ffe
push eax
lea eax, [ebp - 0x42ee]
push eax
call fcn.0040a780
add esp, 0xc
push 0x427230
lea eax, [ebp - 0x42f0]
push eax
call fcn.00408dc0
lea eax, [ebp - 0x42f0]
push eax
call fcn.00405730
add esp, 4
mov dword [ebp - 0x1c], 0
mov dword [ebp - 4], 0
call fcn.00404e60
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x4054fd
xor eax, eax
mov word [ebp - 0x22f0], ax
push 0x1ffe
push eax
lea eax, [ebp - 0x22ee]
push eax
call fcn.0040a780
add esp, 0xc
push 0x427230
lea eax, [ebp - 0x22f0]
push eax
call fcn.00408dc0
push 0x40c904
lea eax, [ebp - 0x22f0]
push eax
call sub.KERNEL32.dll_lstrcatW
lea eax, [ebp - 0x22f0]
push eax
call ebx
cmp dword [ebp - 0x1c], 0
je 0x4055b0
push 0
push 0x80
push 2
push 0
push 1
push 0x40000000
lea eax, [ebp - 0x22f0]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x4055b0
mov dword [ebp - 0x20], 0
push 0
lea eax, [ebp - 0x20]
push eax
push 4
lea eax, [ebp - 0x1c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call edi
lea eax, [ebp - 0x22f0]
cmp dword [ebp - 0x20], 4
je 0x4055a6
push eax
call ebx
jmp 0x4055b6
push 0
push eax
call fcn.004081a0
jmp 0x4055b6
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x439564]
push dword [eax + 0x124]
push 0x427230
call fcn.00407d70
push 0x427230
call fcn.00408850
test eax, eax
je 0x4055ee
push eax
call edi
xor edi, edi
mov dword [ebp - 0x24], edi
inc word [0x43c000]
inc esi
jmp 0x405424
lea eax, [ebp - 0x22f0]
push eax
call ebx
mov edi, dword [ebp - 0x24]
inc word [0x43c000]
inc esi
jmp 0x405424
push 0
push 0x454000
call fcn.004081a0
mov ebx, dword [ebp - 0x2c]
jmp 0x40561a
xor ebx, ebx
mov eax, dword [0x40e010]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, 0xffffffff
je 0x405637
push eax
call esi
mov dword [0x40e010], 0xffffffff
mov eax, dword [0x40e014]
cmp eax, 0xffffffff
je 0x40564e
push eax
call esi
mov dword [0x40e014], 0xffffffff
call fcn.00405880
push 7
push 0x455000
call fcn.004088b0
call fcn.00404ae0
call dword [sym.imp.ole32.dll_OleUninitialize]
test edi, edi
je 0x405681
push 0x200010
push edi
call fcn.00408d30
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]
cmp dword [0x439634], 0
je 0x40570f
lea eax, [ebp - 0x28]
push eax
push 0x28
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x4056d9
lea eax, [ebp - 0x38]
push eax
push str.SeShutdownPrivilege
push 0
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
mov dword [ebp - 0x3c], 1
mov dword [ebp - 0x30], 2
push 0
push 0
push 0
lea eax, [ebp - 0x3c]
push eax
push 0
push dword [ebp - 0x28]
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
push 4
call fcn.00408ae0
test eax, eax
je 0x4056f7
push 0x80040002
push 0x25
push 0
push 0
push 0
call eax
test eax, eax
je 0x405708
push 0x80040002
push 2
call dword [sym.imp.USER32.dll_ExitWindowsEx]
test eax, eax
jne 0x40570f
push 9
call fcn.00401590
cmp dword [0x43964c], 0xffffffff
cmovne ebx, dword [0x43964c]
push ebx
call dword [sym.imp.KERNEL32.dll_ExitProcess]