PoEnergyContextStart

NTSTATUS __stdcall PoEnergyContextStart(ULONG_PTR BugCheckParameter1){
  __int64 v1; 
  void *v2; 
  char v3; 
  _EX_RUNDOWN_REF *v4; 
  int ProcessAppId; 
  _KAPC_STATE ApcState; 

  v1 = *(_QWORD *)(*(_QWORD *)&BugCheckParameter1 + 2280i64);
  v2 = *(void **)&BugCheckParameter1;
  v3 = 0;
  memset(&ApcState, 0, sizeof(ApcState));
  if( !PopEtGlobals )
    return 0;
  v4 = (_EX_RUNDOWN_REF *)(*(_QWORD *)&BugCheckParameter1 + 1112i64);
  if( KeGetCurrentThread()->ApcState.Process != *(_EPROCESS **)&BugCheckParameter1 )
  {
    if( !ExAcquireRundownProtection((_EX_RUNDOWN_REF *)(*(_QWORD *)&BugCheckParameter1 + 1112i64)) )
      return -1073741558;
    KiStackAttachProcess(v2, 0i64, &ApcState);
    v3 = 1;
  }
  ProcessAppId = PopEtGetProcessAppId((INT64)v2, (INT64 *)(v1 + 448));
  if( ProcessAppId >= 0 )
    ProcessAppId = 0;
  if( v3 )
  {
    KiUnstackDetachProcess(&ApcState, 0i64);
    ExReleaseRundownProtection(v4);
  }
  return ProcessAppId;
}

Referenced by:

PopEtInit
PspInsertThread