PoEnergyContextStart

NTSTATUS __stdcall PoEnergyContextStart(PVOID BugCheckParameter1){
  __int64 v1; 
  char v3; 
  struct _EX_RUNDOWN_REF *v4; 
  NTSTATUS ProcessAppId; 
  _KAPC_STATE ApcState; 
  v1 = *((_QWORD *)BugCheckParameter1 + 285);
  v3 = 0;
  memset(&ApcState, 0, sizeof(ApcState));
  if( !PopEtGlobals )
    return 0;
  v4 = (struct _EX_RUNDOWN_REF *)((char *)BugCheckParameter1 + 1112);
  if( *((PVOID *)KeGetCurrentThread() + 23) != BugCheckParameter1 )
  {
    if( !ExAcquireRundownProtection((PEX_RUNDOWN_REF)BugCheckParameter1 + 139) )
      return -1073741558;
    KiStackAttachProcess((_KPROCESS *)BugCheckParameter1, 0i64, &ApcState);
    v3 = 1;
  }
  ProcessAppId = PopEtGetProcessAppId((INT64)BugCheckParameter1, (INT64 *)(v1 + 448));
  if( ProcessAppId >= 0 )
    ProcessAppId = 0;
  if( v3 )
  {
    KiUnstackDetachProcess(&ApcState, 0i64);
    ExReleaseRundownProtection(v4);
  }
  return ProcessAppId;
}

Referenced by:

PopEtInit
PspInsertThread