Function at 0x46a6ec
Capabilities:
Shutdown system

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x4b4
mov eax, dword [0x500144]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor eax, eax
mov esi, ecx
push 0x414
push eax
mov byte [ebp - 0x431], al
mov bl, dl
mov dword [ebp - 0x444], eax
lea eax, [ebp - 0x430]
push eax
mov dword [ebp - 0x438], esi
call sub.msvcrt.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x440]
xor edi, edi
mov dword [ebp - 0x440], edi
mov dword [ebp - 0x43c], edi
push esi
call fcn.0046a39c
mov esi, eax
test esi, esi
jns 0x46a78f
mov ecx, dword [section..data]
cmp ecx, section..data
je 0x46a78f
test byte [ecx + 0x1c], 8
je 0x46a78f
cmp byte [ecx + 0x19], 2
jb 0x46a78f
call fcn.0042386b
push esi
push 0x40f584
push eax
mov eax, dword [section..data]
mov edx, 0x40f87c
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x34
pop ecx
call fcn.0042371b
push edi
push edi
push 1
call dword [sym.imp.DismApi.DLL_DismInitialize]
mov esi, eax
test esi, esi
jns 0x46a7f6
mov eax, dword [section..data]
cmp eax, section..data
je 0x46a7db
test byte [eax + 0x1c], 8
je 0x46a7db
cmp byte [eax + 0x19], 2
jb 0x46a7db
call fcn.0042386b
push esi
push 0x40f5ac
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x35
mov edx, 0x40f87c
pop ecx
call fcn.0042371b
lea ecx, [ebp - 0x43c]
call fcn.0046b529
lea ecx, [ebp - 0x440]
call fcn.00422f35
jmp 0x46abf7
mov edi, dword [ebp - 0x444]
mov byte [ebp - 0x431], 1
test edi, edi
je 0x46a81d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
mov esi, eax
call dword [sym.imp.DismApi.DLL_DismCloseSession]
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea eax, [ebp - 0x444]
xor edi, edi
push eax
push edi
push edi
push 0x40f5c8
call dword [sym.imp.DismApi.DLL_DismOpenSession]
mov esi, eax
test esi, esi
jns 0x46a86f
mov eax, dword [section..data]
cmp eax, section..data
je 0x46a7db
test byte [eax + 0x1c], 8
je 0x46a7db
cmp byte [eax + 0x19], 2
jb 0x46a7db
call fcn.0042386b
push esi
push 0x40f620
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x36
jmp 0x46a7d0
mov ecx, dword [ebp - 0x444]
lea eax, [ebp - 0x430]
push eax
call fcn.004f63fc
mov esi, eax
test esi, esi
jns 0x46a8c9
mov eax, dword [section..data]
cmp eax, section..data
je 0x46a7db
test byte [eax + 0x1c], 8
je 0x46a7db
cmp byte [eax + 0x19], 2
jb 0x46a7db
call fcn.0042386b
push esi
push 0x40f638
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x37
jmp 0x46a7d0
lea eax, [ebp - 0x440]
push eax
push 0x46a6c0
push edi
push edi
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x226]
push eax
push dword [ebp - 0x444]
call dword [sym.imp.DismApi.DLL_DismDisableFeature]
mov esi, eax
test esi, esi
jns 0x46a939
mov eax, dword [section..data]
cmp eax, section..data
je 0x46a7db
test byte [eax + 0x1c], 8
je 0x46a7db
cmp byte [eax + 0x19], 2
jb 0x46a7db
call fcn.0042386b
push esi
push 0x40f660
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x38
jmp 0x46a7d0
lea ecx, [ebp - 0x43c]
call fcn.0046b529
lea ecx, [ebp - 0x440]
call fcn.00422f35
cmp esi, 0xbc2
jne 0x46abf7
mov dword [ebp - 0x43c], edi
test bl, bl
je 0x46aa39
push 0x60
pop esi
push esi
xor ebx, ebx
lea eax, [ebp - 0x4b0]
push ebx
push eax
call sub.msvcrt.dll_memset
mov eax, dword [ebp - 0x438]
add esp, 0xc
mov dword [ebp - 0x4a8], eax
lea eax, [ebp - 0x43c]
mov dword [ebp - 0x4b0], esi
mov dword [ebp - 0x4a4], 0x1000000
push 6
pop edi
push ebx
push ebx
push eax
lea eax, [ebp - 0x4b0]
mov dword [ebp - 0x49c], 0x3ec
push eax
mov dword [ebp - 0x490], 0x7532
mov dword [ebp - 0x4a0], edi
mov dword [ebp - 0x498], 0xffff
call dword [sym.imp.COMCTL32.dll_TaskDialogIndirect]
mov esi, eax
test esi, esi
jns 0x46aa2b
mov eax, dword [section..data]
cmp eax, section..data
je 0x46abf7
test byte [eax + 0x1c], 8
je 0x46abf7
cmp byte [eax + 0x19], 2
jb 0x46abf7
call fcn.0042386b
push esi
push 0x40f67c
push eax
mov eax, dword [section..data]
mov edx, 0x40f87c
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x39
pop ecx
call fcn.0042371b
jmp 0x46abf7
cmp dword [ebp - 0x43c], edi
jne 0x46abf7
jmp 0x46aa3b
xor ebx, ebx
push ecx
lea ecx, [ebp - 0x438]
mov dword [ebp - 0x44c], ebx
mov dword [ebp - 0x448], ebx
mov dword [ebp - 0x438], ebx
call fcn.00468df7
mov esi, eax
test esi, esi
jns 0x46aaac
mov eax, dword [section..data]
cmp eax, section..data
je 0x46abe1
test byte [eax + 0x1c], 8
je 0x46abe1
cmp byte [eax + 0x19], 2
jb 0x46abe1
call fcn.0042386b
push esi
push 0x40f698
push eax
mov eax, dword [section..data]
mov edx, 0x40f87c
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x3a
pop ecx
call fcn.0042371b
jmp 0x46abe1
lea eax, [ebp - 0x44c]
push eax
push 0x40f6c4
push ebx
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
test eax, eax
jne 0x46ab08
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [section..data]
cmp eax, section..data
je 0x46abcb
test byte [eax + 0x1c], 8
je 0x46abcb
cmp byte [eax + 0x19], 2
jb 0x46abcb
call fcn.0042386b
push esi
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x3b
jmp 0x46abc0
mov eax, dword [ebp - 0x44c]
mov ecx, dword [ebp - 0x448]
push ebx
push ebx
push 0x10
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x14]
push eax
push ebx
push dword [ebp - 0x438]
mov dword [ebp - 0x14], 1
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], 2
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
test eax, eax
jne 0x46ab77
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [section..data]
cmp eax, section..data
je 0x46abcb
test byte [eax + 0x1c], 8
je 0x46abcb
cmp byte [eax + 0x19], 2
jb 0x46abcb
call fcn.0042386b
push esi
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x3c
jmp 0x46abc0
push 0x80040002
push 1
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_InitiateSystemShutdownExW]
test eax, eax
jne 0x46abe1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [section..data]
cmp eax, section..data
je 0x46abcb
test byte [eax + 0x1c], 8
je 0x46abcb
cmp byte [eax + 0x19], 2
jb 0x46abcb
call fcn.0042386b
push esi
push eax
mov eax, dword [section..data]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x3d
mov edx, 0x40f87c
pop ecx
call fcn.00421fda
test esi, esi
jle 0x46abda
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x46abe1
mov esi, 0x80004005
mov eax, dword [ebp - 0x438]
test eax, eax
je 0x46abf7
cmp eax, 0xffffffff
je 0x46abf7
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x444], 0
je 0x46ac0c
push dword [ebp - 0x444]
call dword [sym.imp.DismApi.DLL_DismCloseSession]
cmp byte [ebp - 0x431], 0
je 0x46ac1b
call dword [sym.imp.DismApi.DLL_DismShutdown]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004fb5e0
leave
ret