PfpServiceMainThreadBoost

NTSTATUS __stdcall PfpServiceMainThreadBoost(PFP_SCENARIO_CONTEXT *ScenCtx, PFP_BOOST_SUPPORT *BoostSupport){
  __int64 Dpc; 
  NTSTATUS v3; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 
  _ETHREAD *v8; 

  Dpc = *((_QWORD *)BoostSupport + 1);
  v3 = 0;
  if( !*(_QWORD *)BoostSupport )
    return -2147483614;
  *(_DWORD *)(Dpc + 160) = 1;
  v6 = KeAcquireSpinLockRaiseToDpc((UINT64 *)ScenCtx + 13);
  ++ScenCtx[28];
  v7 = v6;
  *(_DWORD *)(Dpc + 164) = ScenCtx[28];
  if( !*((_QWORD *)ScenCtx + 11) )
  {
    v8 = *(_ETHREAD **)BoostSupport;
    *((_QWORD *)ScenCtx + 11) = *(_QWORD *)BoostSupport;
    *(_QWORD *)BoostSupport = 0i64;
    ScenCtx[24] = KeSetActualBasePriorityThread(&v8->Tcb, 12i64);
  }
  KxReleaseSpinLock((UINT64 *)ScenCtx + 13);
  __writecr8(v7);
  *(_QWORD *)(Dpc + 64) = 0i64;
  *(_QWORD *)(Dpc + 80) = Dpc + 72;
  *(_QWORD *)(Dpc + 72) = Dpc + 72;
  *(_BYTE *)(Dpc + 64) = 8;
  *(_QWORD *)(Dpc + 88) = 0i64;
  *(_DWORD *)(Dpc + 124) = 0;
  *(_WORD *)(Dpc + 120) = 0;
  *(_QWORD *)(Dpc + 24) = PfpPowerActionDpcRoutine;
  *(_DWORD *)Dpc = 275;
  *(_QWORD *)(Dpc + 32) = Dpc;
  *(_QWORD *)(Dpc + 56) = 0i64;
  *(_QWORD *)(Dpc + 16) = 0i64;
  KiSetTimerEx((_KTIMER *)(Dpc + 64), (_LARGE_INTEGER)-200000000i64, 0i64, 0, (_KDPC *)Dpc);
  *((_QWORD *)BoostSupport + 1) = 0i64;
  return v3;
}

Referenced by:

PfpScenCtxScenarioSet