Function at 0x402450
Capabilities:
Check if file exists
Create process on windows
Create process suspended

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x428620
mov eax, dword fs:[0]
push eax
sub esp, 0x11c
mov eax, dword [0x430090]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xd4], 0
push str.ChangeStartScreen_start
call fcn.00402420
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ecx, [ebp - 0x24]
call fcn.00403610
mov dword [ebp - 4], 0
push str.SoftwareRuanMeiPCMasterSvc
lea ecx, [ebp - 0x28]
call fcn.00406800
mov byte [ebp - 4], 1
call fcn.004036b0
test eax, eax
je 0x4024c6
lea ecx, [ebp - 0x24]
call fcn.00403760
push 0
push ecx
mov ecx, esp
mov dword [ebp - 0xb0], esp
lea eax, [ebp - 0x28]
push eax
call fcn.004067a0
mov dword [ebp - 0xd8], eax
mov ecx, dword [ebp - 0xd8]
mov dword [ebp - 0xdc], ecx
mov byte [ebp - 4], 2
push SysStringLen
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x24]
call fcn.00405220
mov dword [ebp - 0xe0], eax
cmp dword [ebp - 0xe0], 0
je 0x402985
push 0
push ecx
mov ecx, esp
mov dword [ebp - 0xb4], esp
push str.ModifyStartScreen
call fcn.00406800
mov dword [ebp - 0xe4], eax
mov edx, dword [ebp - 0xe4]
mov dword [ebp - 0xe8], edx
mov byte [ebp - 4], 3
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x24]
call fcn.004058b0
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
jne 0x40257a
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x28]
call fcn.00406900
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.00403700
jmp 0x4029b3
push ecx
mov ecx, esp
mov dword [ebp - 0xb8], esp
push str.__setbackground
call fcn.00406800
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0xf4], eax
mov byte [ebp - 4], 4
push ecx
mov ecx, esp
mov dword [ebp - 0xbc], esp
push str.ScreenBackGroundPara
call fcn.00406800
mov dword [ebp - 0xf8], eax
mov ecx, dword [ebp - 0xf8]
mov dword [ebp - 0xfc], ecx
mov byte [ebp - 4], 5
lea edx, [ebp - 0x30]
push edx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x24]
call fcn.00405550
mov dword [ebp - 0x100], eax
mov byte [ebp - 4], 6
push ecx
mov ecx, esp
mov dword [ebp - 0xc0], esp
push 0x429bd4
call fcn.00406800
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0x104]
mov dword [ebp - 0x108], eax
mov byte [ebp - 4], 7
push ecx
mov ecx, esp
mov dword [ebp - 0xc4], esp
push str.ScreenBackGroundAppPath
call fcn.00406800
mov dword [ebp - 0x10c], eax
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0x110], ecx
mov byte [ebp - 4], 8
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x24]
call fcn.00405550
mov dword [ebp - 0x114], eax
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x30]
call fcn.004072e0
movzx eax, al
test eax, eax
jne 0x4026be
push 0x429c08
push 1
lea ecx, [ebp - 0xcc]
push ecx
lea ecx, [ebp - 0x30]
call fcn.00406e30
mov dword [ebp - 0x118], eax
mov edx, dword [ebp - 0x118]
mov dword [ebp - 0x11c], edx
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0xd4]
or eax, 1
mov dword [ebp - 0xd4], eax
mov ecx, dword [ebp - 0x11c]
push ecx
call fcn.00407120
add esp, 8
movzx edx, al
test edx, edx
je 0x4026be
mov dword [ebp - 0x120], 1
jmp 0x4026c8
mov dword [ebp - 0x120], 0
mov al, byte [ebp - 0x120]
mov byte [ebp - 0xc5], al
mov dword [ebp - 4], 9
mov ecx, dword [ebp - 0xd4]
and ecx, 1
je 0x4026f8
and dword [ebp - 0xd4], 0xfffffffe
lea ecx, [ebp - 0xcc]
call fcn.00406900
movzx edx, byte [ebp - 0xc5]
test edx, edx
je 0x40274f
lea eax, [ebp - 0x30]
push eax
push 0x429c0c
lea ecx, [ebp - 0xd0]
push ecx
call fcn.00407050
add esp, 0xc
mov dword [ebp - 0x124], eax
mov edx, dword [ebp - 0x124]
mov dword [ebp - 0x128], edx
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x128]
push eax
lea ecx, [ebp - 0x30]
call fcn.00406950
mov byte [ebp - 4], 9
lea ecx, [ebp - 0xd0]
call fcn.00406900
push 0x429c10
lea ecx, [ebp - 0x2c]
call fcn.00406a90
lea ecx, [ebp - 0x2c]
call fcn.004072e0
movzx ecx, al
test ecx, ecx
jne 0x40296d
lea ecx, [ebp - 0x2c]
call fcn.004071c0
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40296d
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 1
push str.SeTcbPrivilege
call fcn.004029d0
add esp, 8
push 1
push str.SeChangeNotifyPrivilege
call fcn.004029d0
add esp, 8
push 1
push str.SeIncreaseQuotaPrivilege
call fcn.004029d0
add esp, 8
push 1
push str.SeAssignPrimaryTokenPrivilege
call fcn.004029d0
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0xa8], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [ebp - 0x34], eax
lea edx, [ebp - 0x3c]
push edx
push 0xf01ff
mov eax, dword [ebp - 0x34]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ecx, [ebp - 0xa8]
push ecx
push 1
push 1
push 0
push 0x2000000
mov edx, dword [ebp - 0x3c]
push edx
call dword [sym.imp.ADVAPI32.dll_DuplicateTokenEx]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x54], 0
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x40]
push ecx
push 1
push 0
push 0
call sub.WTSAPI32.dll_WTSEnumerateSessionsW
mov dword [ebp - 0x38], 0
mov dword [ebp - 0xac], 0
jmp 0x40285f
mov edx, dword [ebp - 0xac]
add edx, 1
mov dword [ebp - 0xac], edx
mov eax, dword [ebp - 0xac]
cmp eax, dword [ebp - 0x54]
jae 0x402893
mov ecx, dword [ebp - 0xac]
imul ecx, ecx, 0xc
mov edx, dword [ebp - 0x40]
cmp dword [edx + ecx + 8], 0
jne 0x402891
mov eax, dword [ebp - 0xac]
imul eax, eax, 0xc
mov ecx, dword [ebp - 0x40]
mov edx, dword [ecx + eax]
mov dword [ebp - 0x38], edx
jmp 0x402893
jmp 0x402850
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 4
lea eax, [ebp - 0x38]
push eax
push 0xc
mov ecx, dword [ebp - 0xa8]
push ecx
call dword [sym.imp.ADVAPI32.dll_SetTokenInformation]
mov dword [ebp - 0xa4], 0
push 0x40
push 0
lea edx, [ebp - 0xa0]
push edx
call fcn.00409620
add esp, 0xc
mov dword [ebp - 0x50], 0
xor eax, eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0xa4], 0x44
mov dword [ebp - 0x9c], str.WinSta0Default
mov dword [ebp - 0x58], 0x430
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
mov ecx, dword [ebp - 0xa8]
push ecx
lea edx, [ebp - 0x5c]
push edx
call sub.USERENV.dll_CreateEnvironmentBlock
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0xa4]
push ecx
push 0
mov edx, dword [ebp - 0x5c]
push edx
mov eax, dword [ebp - 0x58]
push eax
push 0
push 0
push 0
lea ecx, [ebp - 0x30]
call fcn.00407260
push eax
lea ecx, [ebp - 0x2c]
call fcn.004071c0
push eax
mov ecx, dword [ebp - 0xa8]
push ecx
call dword [sym.imp.ADVAPI32.dll_CreateProcessAsUserW]
push 0xffffffffffffffff
mov edx, dword [ebp - 0x50]
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0xa8]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x2c]
call fcn.00406900
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x30]
call fcn.00406900
push str.ChangeStartScreen_end
call fcn.00402420
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x28]
call fcn.00406900
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.00403700
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret