PfSnSetPrefetcherInformation
NTSTATUS __stdcall PfSnSetPrefetcherInformation(
VOID *SystemInformation,
UINT64 SystemInformationLength,
CHAR PreviousMode){
INT8 v3;
INT8 v4;
int v5;
int v6;
int v8;
bool v9;
unsigned int v10;
__int128 v11;
__int128 v12;
__int64 v13;
int v14;
PF_SCENARIO_PHASE_INFO PhaseInfo[3];
__int128 v16;
int v17;
PFSN_APPLAUNCH_SCENARIO_CONTROL Control[4];
__int128 v19[4];
__int64 v20;
v4 = v3;
if( PreviousMode != 32 )
return -1073741820;
v11 = *(_OWORD *)SystemInformationLength;
v12 = *(_OWORD *)(SystemInformationLength + 16);
if( *(_QWORD *)SystemInformationLength != 0x6B75684300000001i64 )
return -1073741811;
if( DWORD2(v11) > 8 || (v5 = 296, !_bittest(&v5, DWORD2(v11))) )
{
if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeProfileSingleProcessPrivilege, v3) )
return -1073741790;
}
if( DWORD2(v11) == 3 )
{
if( DWORD2(v12) != 4 )
return -1073741811;
if( v4 && (v12 & 3) != 0 )
ExRaiseDatatypeMisalignment();
v10 = *(_DWORD *)v12;
if( *(_DWORD *)v12 == 2 || !v4 )
{
v6 = PfSnBeginBootPhase(v10);
if( v10 == 2 )
{
v16 = 0i64;
v17 = 0;
PhaseInfo[0] = 4;
PhaseInfo[1] = 4;
PhaseInfo[2] = 1;
PfpProcessScenarioPhase(PhaseInfo, v4);
}
v9 = v6 < 0;
LABEL_23:
if( v9 )
return v6;
return 0;
}
return -1073741790;
}
if( DWORD2(v11) == 5 )
{
if( DWORD2(v12) == 12 )
{
if( v4 && (v12 & 3) != 0 )
ExRaiseDatatypeMisalignment();
v13 = *(_QWORD *)v12;
v14 = *(_DWORD *)(v12 + 8);
v8 = PfSnOperationProcess((__int64)&v13);
LABEL_22:
v6 = v8;
v9 = v8 < 0;
goto LABEL_23;
}
return -1073741811;
}
if( DWORD2(v11) != 6 )
{
if( DWORD2(v11) != 8 )
return -1073741821;
if( DWORD2(v12) != 16 )
return -1073741306;
if( v4 && (v12 & 7) != 0 )
ExRaiseDatatypeMisalignment();
*(_OWORD *)Control = *(_OWORD *)v12;
v8 = PfSnAppLaunchScenarioControl(Control, v4);
goto LABEL_22;
}
if( DWORD2(v12) != 72 )
return -1073741306;
if( v4 && (v12 & 3) != 0 )
ExRaiseDatatypeMisalignment();
v19[0] = *(_OWORD *)v12;
v19[1] = *(_OWORD *)(v12 + 16);
v19[2] = *(_OWORD *)(v12 + 32);
v19[3] = *(_OWORD *)(v12 + 48);
v20 = *(_QWORD *)(v12 + 64);
if( LODWORD(v19[0]) != 2 )
return -1073741811;
PfSnPrefetchCacheEntryUpdate((__int64)v19);
return 0;
}Referenced by:
NtSetSystemInformation