Function at 0x403b02
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
Terminate process

Disassembly:
sub esp, 0x318
push ebx
push ebp
push esi
push edi
push 0x20
xor ebp, ebp
pop esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x10], str.Error_writing_temporary_file._Make_sure_your_temp_folder_is_valid.
mov dword [esp + 0x18], ebp
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 0x8001
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push ebp
call dword [sym.imp.ole32.dll_OleInitialize]
push 8
mov dword [0x473eb8], eax
call fcn.0040663c
push ebp
push 0x2b4
mov dword [0x473dd0], eax
lea eax, [esp + 0x7c]
push eax
push ebp
push 0x40a33c
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
push str.NSIS_Error
push 0x46bdc0
call fcn.00406347
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
mov edi, 0x4c40a0
push edi
call fcn.00406347
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x22
pop ebx
mov dword [0x473dd8], eax
mov eax, edi
cmp word [0x4c40a0], bx
jne 0x403ba3
mov esi, ebx
mov eax, 0x4c40a2
push esi
push eax
call fcn.00406042
push eax
call dword [sym.imp.USER32.dll_CharNextW]
mov esi, eax
mov dword [esp + 0x1c], esi
jmp 0x403cf6
push 0x20
pop ecx
cmp ax, cx
jne 0x403bcb
inc esi
inc esi
cmp word [esi], cx
je 0x403bc4
mov dword [esp + 0x14], ecx
cmp word [esi], bx
jne 0x403bda
inc esi
inc esi
mov dword [esp + 0x14], ebx
cmp word [esi], 0x2f
jne 0x403ce0
inc esi
inc esi
movzx ebx, word [esi]
cmp bx, 0x53
jne 0x403c03
movzx eax, word [esi + 2]
cmp ax, 0x20
je 0x403bfe
cmp ax, bp
jne 0x403c03
or dword [esp + 0x18], 2
push 4
push str.NCRC
push esi
call fcn.00403a2c
add esp, 0xc
test eax, eax
jne 0x403c2b
movzx eax, word [esi + 8]
cmp ax, 0x20
je 0x403c26
cmp ax, bp
jne 0x403c2b
or dword [esp + 0x18], 4
push 4
lea eax, [esi - 4]
push str.__D
push eax
call fcn.00403a2c
add esp, 0xc
test eax, eax
je 0x403d04
push 0xa
push str.updateDlg
push esi
call fcn.00403a2c
add esp, 0xc
test eax, eax
jne 0x403ce0
mov eax, esi
cmp bx, 0x20
je 0x403c79
movzx ecx, bx
cmp cx, bp
je 0x403c79
inc eax
inc eax
movzx ecx, word [eax]
cmp cx, 0x20
jne 0x403c69
sub eax, esi
sub eax, 0xa
mov ebx, eax
je 0x403ce0
xor eax, eax
push 0x3e
mov word [esp + 0x38], ax
lea eax, [esp + 0x3a]
push ebp
push eax
call fcn.004080c3
push 0x40
lea eax, [esp + 0x44]
push ebp
push eax
call fcn.004080c3
add esp, 0x18
cmp ebx, 0x1f
jb 0x403cae
push 0x1f
pop ebx
lea eax, [esi + 0x14]
push eax
lea eax, [esp + 0x38]
push ebx
push eax
call fcn.00403a83
add esp, 0xc
lea eax, [esp + 0x34]
push eax
call fcn.004062a7
push eax
mov dword [0x458288], eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x403ce0
mov dword [0x458288], ebp
push dword [esp + 0x14]
push esi
call fcn.00406042
push 0x22
mov esi, eax
pop ebx
cmp word [esi], bx
jne 0x403cf6
inc esi
inc esi
movzx eax, word [esi]
cmp ax, bp
jne 0x403bbc
jmp 0x403d21
push 8
lea eax, [esi - 4]
push ebp
push eax
call fcn.004080c3
add esp, 0xc
add esi, 4
push esi
push 0x4c80a8
call fcn.00406347
mov ebx, 0x4d80c8
push ebx
push 0x2004
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
call fcn.004039f8
test eax, eax
jne 0x403d5f
push 0x1fff
push ebx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push str.Temp
push ebx
call sub.KERNEL32.dll_lstrcatW
call fcn.004039f8
test eax, eax
je 0x403dfc
mov ebp, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0x4d40c0
call ebp
push dword [esp + 0x18]
call fcn.0040375d
mov dword [esp + 0x10], eax
test eax, eax
jne 0x403dfa
cmp dword [0x473e24], eax
je 0x403de3
push eax
push edi
call fcn.00406042
mov esi, eax
jmp 0x403da6
push 4
push str.___
push esi
call fcn.00403a2c
add esp, 0xc
test eax, eax
je 0x403daa
dec esi
dec esi
cmp esi, edi
jae 0x403d90
mov dword [esp + 0x10], str.Error_launching_installer
cmp esi, edi
jb 0x403e27
xor eax, eax
mov word [esi], ax
add esi, 8
push esi
call fcn.00406abf
test eax, eax
je 0x403dfa
push esi
push 0x4c80a8
call fcn.00406347
push esi
push 0x4cc0b0
call fcn.00406347
and dword [esp + 0x10], 0
or dword [0x473eac], 0xffffffff
call fcn.00405c68
push 1
mov dword [esp + 0x24], eax
call fcn.00406427
xor ebp, ebp
call fcn.00403ac0
call dword [sym.imp.ole32.dll_OleUninitialize]
cmp dword [esp + 0x10], ebp
je 0x403f04
push 0x200010
push dword [esp + 0x14]
call fcn.00405fdc
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0x40a2c8
push ebx
call sub.KERNEL32.dll_lstrcatW
mov esi, 0x4d00b8
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x403dfa
xor edi, edi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push ebx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp word [0x4c80a8], di
jne 0x403e68
push esi
push 0x4c80a8
call fcn.00406347
push dword [esp + 0x1c]
push section..ndata
call fcn.00406347
push 0x40a2c4
push 0x478008
call fcn.00406347
mov dword [esp + 0x14], 0x1a
mov esi, 0x4341f8
mov eax, dword [0x473ddc]
push dword [eax + 0x120]
push esi
call fcn.00406b47
push esi
call ebp
cmp dword [esp + 0x10], edi
je 0x403eeb
push 1
push esi
push 0x4e00d8
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x403eeb
push edi
push esi
call fcn.00406fa3
mov eax, dword [0x473ddc]
push dword [eax + 0x124]
push esi
call fcn.00406b47
push esi
call fcn.00405f7b
cmp eax, edi
je 0x403eeb
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x10], edi
inc word [0x478008]
dec dword [esp + 0x14]
jne 0x403e92
push edi
push ebx
call fcn.00406fa3
jmp 0x403dfa
cmp dword [0x473e94], ebp
je 0x403f87
push 3
call fcn.0040663c
push 4
mov ebx, eax
call fcn.0040663c
push 5
mov esi, eax
call fcn.0040663c
mov edi, eax
cmp ebx, ebp
je 0x403f73
cmp esi, ebp
je 0x403f73
cmp edi, ebp
je 0x403f73
lea eax, [esp + 0x1c]
push eax
push 0x28
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call ebx
test eax, eax
je 0x403f73
lea eax, [esp + 0x28]
push eax
push str.SeShutdownPrivilege
push ebp
call esi
push ebp
push ebp
push ebp
lea eax, [esp + 0x30]
push eax
push ebp
push dword [esp + 0x30]
mov dword [esp + 0x3c], 1
mov dword [esp + 0x48], 2
call edi
push ebp
push 2
call dword [sym.imp.USER32.dll_ExitWindowsEx]
test eax, eax
jne 0x403f87
push 9
call fcn.004014db
mov eax, dword [0x473eac]
cmp eax, 0xffffffff
je 0x403f95
mov dword [esp + 0x20], eax
push dword [esp + 0x20]
jmp 0x403e21