Function at 0x4017de
Capabilities:
Shutdown system

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe50
push ebx
push esi
push edi
mov edi, 0x104
lea eax, [ebp - 0x770]
xor ebx, ebx
push edi
push eax
push ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x1c], 0x402a5e
mov dword [ebp - 0x18], 0x402a55
mov dword [ebp - 0x58], 0x402a5e
mov dword [ebp - 0x54], 0x402a55
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, ebx
je 0x401fa9
cmp eax, edi
ja 0x401fa9
lea edx, [ebp - 0x770]
lea ecx, [ebp - 0x70]
call fcn.00404db3
mov esi, eax
cmp esi, ebx
jne 0x401879
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
call fcn.004022b2
test eax, eax
jne 0x401867
mov dword [ebp - 0x10], str.Cant_find_7z_archive
jmp 0x401880
push ebx
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x70]
call fcn.00404ef2
mov esi, eax
cmp esi, ebx
je 0x401895
mov dword [ebp - 4], 0xb
cmp dword [ebp - 0x10], ebx
je 0x40188c
mov dword [ebp - 4], 0xb
cmp dword [ebp - 4], ebx
jne 0x401e8a
cmp dword [0x40a8b8], ebx
mov esi, 0x40a44c
jne 0x4018b2
push edi
push esi
push 0x6f
push dword [0x40a8bc]
call dword [sym.imp.USER32.dll_GetDlgItemTextW]
lea ecx, [ebp - 0x78]
call fcn.00404f66
xor edx, edx
lea ecx, [ebp - 0x9c]
call fcn.004056c7
mov ecx, esi
mov dword [ebp - 0x80], ebx
call 0x402a03
mov eax, dword [0x40a44c]
xor edi, edi
push 1
cmp ax, bx
pop edx
je 0x4018f8
mov ecx, 0x40a44e
cmp ax, 0x20
je 0x4018ed
mov edi, edx
mov ax, word [ecx]
inc edx
inc ecx
inc ecx
cmp ax, bx
jne 0x4018e5
mov word [edi*2 + 0x40a44c], bx
cmp word [0x40a44c], bx
jne 0x401915
xor edx, edx
mov ecx, str.Incorrect_path
jmp 0x401fa4
mov ecx, esi
call fcn.00401448
call fcn.004020f7
cmp eax, ebx
mov dword [ebp - 0x20], eax
je 0x40192f
mov dword [ebp - 4], 0xb
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp dword [ebp - 4], ebx
mov dword [ebp - 0x14], eax
jne 0x401973
mov edi, 0x40000
lea ecx, [ebp - 0x1c]
mov edx, edi
call dword [ebp - 0x1c]
cmp eax, ebx
mov dword [ebp - 0x80], eax
jne 0x40195b
mov dword [ebp - 4], 2
jmp 0x401973
lea eax, [ebp - 0x78]
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x88], ebx
lea ecx, [ebp - 0x140]
call 0x402a6e
cmp dword [ebp - 4], ebx
jne 0x401e63
lea eax, [ebp - 0x58]
lea edx, [ebp - 0x9c]
push eax
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x140]
call fcn.0040304d
cmp eax, ebx
mov dword [ebp - 4], eax
jne 0x401e63
or dword [ebp - 0x38], 0xffffffff
cmp dword [0x40a8b8], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x50], ebx
mov dword [0x40a8c0], ebx
jne 0x4019f5
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
push 5
push dword [0x40a448]
call edi
push 5
push dword [0x40a8ac]
call edi
push dword [ebp - 0xf8]
push ebx
push 0x406
push dword [0x40a448]
call dword [sym.imp.USER32.dll_SendMessageW]
cmp dword [ebp - 0xf8], ebx
mov dword [ebp - 0xc], ebx
jbe 0x401df4
cmp dword [0x40a8b8], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x24], ebx
jne 0x401a8a
mov edi, dword [sym.imp.USER32.dll_PeekMessageW]
push 1
push ebx
push ebx
lea eax, [ebp - 0xb8]
push ebx
push eax
call edi
test eax, eax
je 0x401a75
lea eax, [ebp - 0xb8]
push eax
push dword [0x40a8bc]
call dword [sym.imp.USER32.dll_IsDialogMessageW]
test eax, eax
jne 0x401a5b
lea eax, [ebp - 0xb8]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0xb8]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
cmp dword [0x40a8bc], ebx
push 1
je 0x401fab
push ebx
push ebx
lea eax, [ebp - 0xb8]
push ebx
push eax
jmp 0x401a24
push ebx
push dword [ebp - 0xc]
push 0x402
push dword [0x40a448]
call dword [sym.imp.USER32.dll_SendMessageW]
mov edx, dword [ebp - 0xc]
push ebx
lea ecx, [ebp - 0x140]
call fcn.00404bbb
cmp eax, 0x104
jae 0x401dd9
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
lea ecx, [ebp - 0x140]
lea edi, [eax*2 + 0x40a44c]
push edi
call fcn.00404bbb
cmp dword [0x40a8b8], ebx
jne 0x401ad2
push edi
push dword [0x40a8ac]
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea eax, [ebp - 0x58]
lea edx, [ebp - 0x9c]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x140]
push dword [ebp - 0xc]
call fcn.00404a51
cmp eax, ebx
mov dword [ebp - 4], eax
jne 0x401df4
mov eax, dword [ebp - 0x14]
mov dword [ebp - 8], ebx
mov dword [ebp - 0x2c], 4
cmp word [eax*2 + 0x40a44c], bx
lea eax, [eax*2 + 0x40a44c]
je 0x401b55
mov eax, dword [ebp - 0x14]
lea eax, [eax*2 + 0x40a44c]
mov edi, eax
cmp word [eax], 0x2f
jne 0x401b4c
mov ecx, esi
mov word [edi], bx
call fcn.004020e0
mov word [edi], 0x5c
inc edi
inc edi
mov eax, edi
cmp word [edi], bx
jne 0x401b37
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0xf0]
and ecx, 7
mov eax, 0x80
sar eax, cl
mov ecx, dword [ebp - 0xc]
shr ecx, 3
mov dword [ebp - 0x4c], ecx
test byte [ecx + edx], al
mov dword [ebp - 0x40], eax
je 0x401b85
mov ecx, esi
call fcn.004020e0
jmp 0x401dc6
lea eax, [ebp - 0x564]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
cmp dword [ebp - 8], ebx
je 0x401be4
cmp dword [ebp - 8], 0x64
ja 0x401dd9
lea eax, [ebp - 0x564]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov edx, str..tmp
mov ecx, esi
call fcn.004013af
cmp dword [ebp - 8], 1
jbe 0x401bd8
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [ebp - 8]
lea edx, [eax*2 + 0x40a44c]
call fcn.004023a7
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x401c05
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov edx, esi
lea ecx, [ebp - 0x30]
call fcn.00404e02
mov edi, eax
cmp edi, ebx
je 0x401cf5
cmp dword [ebp - 8], ebx
je 0x401c0a
inc dword [ebp - 8]
jmp 0x401b93
mov eax, dword [ebp - 0x14]
mov edx, str.7_zip.dll
lea ecx, [eax*2 + 0x40a44c]
call fcn.004014aa
test eax, eax
jne 0x401cce
mov eax, dword [ebp - 0x14]
mov edx, str.7_zip32.dll
lea ecx, [eax*2 + 0x40a44c]
call fcn.004014aa
test eax, eax
jne 0x401cce
cmp dword [0x40a8b8], ebx
jne 0x401cc2
mov edx, str.Cant_open_file_n
lea ecx, [ebp - 0xe50]
call fcn.00401312
lea eax, [ebp - 0xe50]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov edx, 0x40854c
lea ecx, [ebp - 0xe50]
call fcn.004013af
lea eax, [ebp - 0xe50]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea edx, [ebp + eax*2 - 0xe50]
mov ecx, edi
call fcn.00402a1b
lea eax, [ebp - 0xe50]
push 0x212
push str.Error
push eax
push dword [0x40a8bc]
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 3
je 0x401de2
cmp eax, 5
jne 0x401b93
mov dword [ebp - 8], 1
jmp 0x401b93
mov ecx, esi
call 0x401fb1
cmp eax, 0x100003
jb 0x401cec
cmp eax, 0x170001
ja 0x401cec
mov dword [ebp - 0x2c], 1
jmp 0x401cc2
mov dword [ebp - 0x2c], 2
jmp 0x401cc2
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x44]
push eax
mov eax, dword [ebp - 0x34]
lea edx, [ecx + eax]
lea ecx, [ebp - 0x30]
call fcn.00404e90
mov dword [ebp - 0x20], eax
cmp eax, ebx
mov eax, dword [ebp - 0x24]
jne 0x401d1f
cmp dword [ebp - 0x44], eax
je 0x401d2d
mov dword [ebp - 0x10], str.Cant_write_output_file
mov dword [ebp - 4], 0xb
add dword [0x40a8c0], eax
mov eax, dword [ebp - 0xdc]
cmp eax, ebx
je 0x401d6e
mov edx, dword [ebp - 0x4c]
mov cl, byte [ebp - 0x40]
test byte [edx + eax], cl
je 0x401d6e
mov eax, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xc]
lea eax, [eax + ecx*8]
mov ecx, dword [eax]
mov dword [ebp - 0x60], ecx
mov eax, dword [eax + 4]
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x60]
push eax
push ebx
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_SetFileTime]
lea ecx, [ebp - 0x30]
call fcn.00404e0a
cmp dword [ebp - 4], ebx
jne 0x401df4
cmp eax, ebx
jne 0x401df1
mov eax, dword [ebp - 0xe4]
cmp eax, ebx
je 0x401da7
mov edx, dword [ebp - 0x4c]
mov cl, byte [ebp - 0x40]
test byte [edx + eax], cl
je 0x401da7
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xc]
push dword [eax + ecx*4]
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
cmp dword [ebp - 8], ebx
je 0x401dc6
lea eax, [ebp - 0x564]
push 5
push eax
push esi
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x401deb
mov eax, dword [ebp - 0x2c]
or dword [ebp - 0x28], eax
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0xf8]
jae 0x401df4
jmp 0x401a04
mov dword [ebp - 4], 0xb
jmp 0x401df4
mov dword [ebp - 4], 0x64
jmp 0x401df4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x34]
lea ecx, [ebp - 0x1c]
call dword [ebp - 0x18]
cmp dword [0x40a8b8], ebx
jne 0x401e1a
push ebx
push dword [ebp - 0xc]
push 0x402
push dword [0x40a448]
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x14]
mov word [eax*2 + 0x40a44c], bx
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0xf8]
jne 0x401e63
call fcn.004023f4
call fcn.00402637
call fcn.004027c8
mov ecx, dword [0x40a8bc]
call fcn.004024a0
cmp dword [0x40a8b8], ebx
jne 0x401e63
push str.7_Zip_23.01__x64__is_installed
push dword [0x40a8ac]
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x140]
call fcn.00402ad9
mov edx, dword [ebp - 0x80]
lea ecx, [ebp - 0x1c]
call dword [ebp - 0x18]
lea ecx, [ebp - 0x70]
call fcn.00404e0a
mov esi, dword [ebp - 0x20]
mov edi, 0x104
cmp esi, ebx
je 0x401e95
mov dword [ebp - 4], 0xb
cmp dword [ebp - 4], ebx
jne 0x401f27
cmp dword [0x40a8b8], ebx
jne 0x401f20
cmp dword [ebp - 0x28], 1
jle 0x401f20
push edi
push dword [0x40815c]
push str.You_must_restart_your_system_to_complete_the_installation._nRestart_now_
push dword [0x40a8bc]
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
jne 0x401f20
lea eax, [ebp - 0x38]
push eax
push 0x28
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x401f20
lea eax, [ebp - 0x64]
push eax
push str.SeShutdownPrivilege
push ebx
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
lea eax, [ebp - 0x68]
mov dword [ebp - 0x68], 1
push 2
pop esi
push ebx
push ebx
push ebx
push eax
push ebx
mov dword [ebp - 0x5c], esi
push dword [ebp - 0x38]
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x401f20
push ebx
push esi
call dword [sym.imp.USER32.dll_ExitWindowsEx]
xor eax, eax
invalid