Function at 0x10024f10
Capabilities:
Check os version
Shutdown system

Disassembly:
sub esp, 0x27c
lea eax, [esp + 0x17c]
push ebx
mov ebx, dword [esp + 0x284]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push esi
push 0xff
push eax
push ebx
call ebp
lea ecx, [esp + 0x188]
push ecx
call fcn.1003b9c8
add esp, 4
mov ecx, 0xb
xor eax, eax
mov dl, byte [eax + 0x100037fc]
xor dl, cl
inc ecx
and ecx, 0x800000ff
mov byte [esp + eax + 0xc], dl
jns 0x10024f6a
dec ecx
or ecx, 0xffffff00
inc ecx
inc eax
cmp eax, 6
jl 0x10024f4d
lea eax, [esp + 0xc]
lea ecx, [esp + 0x188]
push eax
push ecx
mov byte [esp + 0x1a], 0
call fcn.1003b800
add esp, 8
test eax, eax
sete al
test al, al
je 0x10025075
lea edx, [esp + 0x188]
lea eax, [esp + 0x24]
push edx
push 0x100037dc
push eax
call fcn.1003aa64
add esp, 0xc
mov ecx, 0x46
xor eax, eax
mov dl, byte [eax + 0x100037d4]
xor dl, cl
inc ecx
and ecx, 0x800000ff
mov byte [esp + eax + 0xc], dl
jns 0x10024fd5
dec ecx
or ecx, 0xffffff00
inc ecx
inc eax
cmp eax, 6
jl 0x10024fb8
lea eax, [esp + 0xc]
push 0
lea ecx, [esp + 0x28]
push eax
push ecx
push 0
mov byte [esp + 0x22], 0
call dword [sym.imp.USER32.dll_MessageBoxA]
lea edx, [esp + 0x88]
push edx
mov dword [esp + 0x8c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov esi, 2
cmp dword [esp + 0x98], esi
jne 0x10025075
lea eax, [esp + 0xc]
push eax
push 0x28
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
lea ecx, [esp + 0x18]
push ecx
push 0x100037c0
push 0
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueA]
push 0
push 0
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x1c]
push 0
push edx
push 0
push eax
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], esi
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
push 0xc
call dword [sym.imp.USER32.dll_ExitWindowsEx]
mov eax, dword [esp + 0x290]
dec eax
jne 0x10025192
push edi
push 0xff
push 0x1006293c
push ebx
call ebp
mov edi, 0x1006293c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ecx, 0x1006293c
cmp ecx, 0x1006293c
jb 0x100250bc
cmp byte [ecx], 0x5c
je 0x100250bc
dec ecx
cmp ecx, 0x1006293c
jae 0x100250ae
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push 0xff
push 0x10062a3c
push 0
mov byte [ecx + 1], 0
call esi
push eax
call ebp
mov edi, 0x10062a3c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ecx, 0x10062a3c
cmp ecx, 0x10062a3c
jb 0x10025102
cmp byte [ecx], 0x5c
je 0x10025102
dec ecx
cmp ecx, 0x10062a3c
jae 0x100250f4
mov byte [ecx + 1], 0
push 0x100037b0
push 0x1006293c
lea ecx, [esp + 0x94]
push 0x100037a8
push ecx
call fcn.1003aa64
lea edx, [esp + 0x20]
lea eax, [esp + 0x9c]
push edx
push eax
call fcn.10020f70
mov ecx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
add esp, 0x18
push 0x1006405c
push 0x10024ba0
push ecx
push 0
call esi
push eax
call fcn.10024d10
add esp, 0x10
push 0xff
push 0x1006293c
push ebx
call ebp
mov edi, 0x1006293c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
pop edi
add ecx, 0x1006293c
cmp ecx, 0x1006293c
jb 0x1002518e
cmp byte [ecx], 0x5c
je 0x1002518e
dec ecx
cmp ecx, 0x1006293c
jae 0x10025180
mov byte [ecx + 1], 0
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x27c
ret 0xc