PfpServiceMainThreadBoost

INT64 __fastcall PfpServiceMainThreadBoost(INT64 a1, INT64 *a2){
  INT64 Dpc; 
  unsigned int v3; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 
  __int64 v8; 
  Dpc = a2[1];
  v3 = 0;
  if( *a2 )
  {
    *(_DWORD *)(Dpc + 160) = 1;
    KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 104), (UINT64)a2);
    ++*(_DWORD *)(a1 + 112);
    v7 = v6;
    *(_DWORD *)(Dpc + 164) = *(_DWORD *)(a1 + 112);
    if( !*(_QWORD *)(a1 + 88) )
    {
      v8 = *a2;
      *(_QWORD *)(a1 + 88) = *a2;
      *a2 = 0i64;
      *(_DWORD *)(a1 + 96) = KeSetActualBasePriorityThread(v8, 12);
    }
    KxReleaseSpinLock((UINT64 *)(a1 + 104));
    __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);
    a2[1] = 0i64;
  }
  else
  {
    return(unsigned int)-2147483614;
  }
  return v3;
}

Referenced by:

PfpScenCtxScenarioSet