Function at 0x404250
Capabilities:
Accept command line arguments
Copy file
Create directory
Delete file
Get common file path
Get file system object information
Set current directory
Shutdown system

Disassembly:
sub esp, 0x17c
push ebx
push ebp
push esi
xor esi, esi
mov bl, 0x20
push edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], str.Error_writing_temporary_file._Make_sure_your_temp_folder_is_valid.
mov byte [esp + 0x10], bl
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 0x8001
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push esi
call dword [sym.imp.ole32.dll_OleInitialize]
push 8
mov dword [0x43d8f8], eax
call fcn.00407360
push esi
push 0x160
mov dword [0x43d800], eax
lea eax, [esp + 0x34]
push eax
push esi
push 0x40ab13
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
push str.NSIS_Error
push 0x439800
call fcn.00407020
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
push 0x466000
call fcn.00407020
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
cmp byte [0x466000], 0x22
mov dword [0x43d808], eax
mov eax, 0x466000
jne 0x4042f2
mov byte [esp + 0x10], 0x22
mov eax, 0x466001
mov ecx, dword [esp + 0x10]
push ecx
push eax
call fcn.00406d00
push eax
call dword [sym.imp.USER32.dll_CharNextA]
mov cl, byte [eax]
test cl, cl
mov ebp, eax
je 0x40439a
mov edi, 0x3d442f20
cmp cl, bl
jne 0x404327
lea esp, [esp]
add eax, 1
cmp byte [eax], bl
je 0x404320
cmp byte [eax], 0x22
mov byte [esp + 0x10], bl
jne 0x404338
add eax, 1
mov byte [esp + 0x10], 0x22
cmp byte [eax], 0x2f
jne 0x40436a
add eax, 1
cmp byte [eax], 0x53
jne 0x404351
mov dl, byte [eax + 1]
or dl, bl
cmp dl, bl
jne 0x404351
or esi, 2
cmp dword [eax], 0x4352434e
jne 0x404365
mov cl, byte [eax + 4]
or cl, bl
cmp cl, bl
jne 0x404365
or esi, 4
cmp dword [eax - 2], edi
je 0x404385
mov edx, dword [esp + 0x10]
push edx
push eax
call fcn.00406d00
cmp byte [eax], 0x22
jne 0x40437d
add eax, 1
mov cl, byte [eax]
test cl, cl
jne 0x404315
jmp 0x40439a
mov dword [eax - 2], 0
add eax, 2
push eax
push 0x468000
call fcn.00407020
push 0x470000
push 0x2000
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push 0x470000
call fcn.00407060
push 0x470000
call fcn.00406d30
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
je 0x4043ee
push 0x470000
call fcn.004073f0
push 0
push 0x470000
call edi
push 0x470000
push 0x46e000
call fcn.00406e60
test eax, eax
jne 0x404453
push 0x1ffb
push 0x470000
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.Temp
push 0x470000
call sub.KERNEL32.dll_lstrcatA
push 0x470000
call fcn.00407060
push 0x470000
call fcn.00406d30
test eax, eax
je 0x4044ff
push 0x470000
call fcn.004073f0
push 0
push 0x470000
call edi
push 0x470000
push 0x46e000
call fcn.00406e60
test eax, eax
je 0x4044ff
push 0x46e000
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push esi
call fcn.00403f00
test eax, eax
mov dword [esp + 0x14], eax
jne 0x4044ff
cmp dword [0x43d864], eax
je 0x4044e5
push eax
push 0x466000
call fcn.00406d00
mov esi, eax
cmp esi, 0x466000
jb 0x4044a3
lea ecx, [ecx]
cmp dword [esi], 0x3d3f5f20
je 0x4044a3
sub esi, 1
cmp esi, 0x466000
jae 0x404490
cmp esi, 0x466000
mov dword [esp + 0x14], str.Error_launching_installer
jb 0x40456e
mov byte [esi], 0
add esi, 4
push esi
call fcn.00407450
test eax, eax
je 0x4044ff
push esi
push 0x468000
call fcn.00407020
push esi
push 0x46a000
call fcn.00407020
mov dword [esp + 0x14], 0
mov dword [0x43d8ec], 0xffffffff
call fcn.004068c0
push 1
mov dword [esp + 0x1c], eax
call fcn.00407140
mov eax, dword [0x40d010]
or ebp, 0xffffffff
cmp eax, ebp
je 0x404518
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x40d010], ebp
mov eax, dword [0x40d014]
cmp eax, ebp
je 0x40452e
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x40d014], ebp
call fcn.00404760
push 7
push 0x472000
call fcn.00407a60
call dword [sym.imp.ole32.dll_OleUninitialize]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x40467f
push 0x200010
push eax
call fcn.00406c90
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x17c
ret 0x10
push str.nsu.tmp
push 0x470000
call sub.KERNEL32.dll_lstrcatA
push 0x46c000
push 0x470000
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x4044ff
push 0
push 0x470000
call edi
push 0x470000
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp byte [0x468000], 0
jne 0x4045c1
push 0x46c000
push 0x468000
call fcn.00407020
push ebp
push section..ndata
call fcn.00407020
mov edi, dword [sym.imp.msvcrt.dll_malloc]
mov ebp, dword [sym.imp.msvcrt.dll_free]
mov word [0x440000], 0x41
mov ebx, 0x1a
push 0x2000
call edi
mov esi, eax
mov eax, dword [0x43d80c]
mov ecx, dword [eax + 0x120]
add esp, 4
push ecx
push esi
call fcn.004075a0
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp dword [esp + 0x14], 0
je 0x404658
push 1
push esi
push 0x474000
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x404658
push 0
push esi
call fcn.00407860
mov edx, dword [0x43d80c]
mov eax, dword [edx + 0x124]
push eax
push esi
call fcn.004075a0
push esi
call fcn.00406c10
test eax, eax
je 0x404658
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x14], 0
add byte [0x440000], 1
push esi
call ebp
add esp, 4
sub ebx, 1
jne 0x4045e6
push 0
push 0x470000
call fcn.00407860
jmp 0x4044ff
cmp dword [0x43d8d4], 0
je 0x40470e
push 3
call fcn.00407360
push 4
mov ebx, eax
call fcn.00407360
push 5
mov esi, eax
call fcn.00407360
test ebx, ebx
mov edi, eax
je 0x4046f9
test esi, esi
je 0x4046f9
test edi, edi
je 0x4046f9
lea ecx, [esp + 0x10]
push ecx
push 0x28
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call ebx
test eax, eax
je 0x4046f9
lea edx, [esp + 0x20]
push edx
push str.SeShutdownPrivilege
push 0
call esi
mov ecx, dword [esp + 0x10]
push 0
push 0
push 0
lea eax, [esp + 0x28]
push eax
push 0
push ecx
mov dword [esp + 0x34], 1
mov dword [esp + 0x40], 2
call edi
push 0
push 2
call dword [sym.imp.USER32.dll_ExitWindowsEx]
test eax, eax
jne 0x40470e
push 9
call fcn.004015e0
mov eax, dword [0x43d8ec]
cmp eax, ebp
je 0x40471b
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x17c
ret 0x10