PoShutdownBugCheck

VOID __stdcall __noreturn PoShutdownBugCheck(
        UINT8 AllowCrashDump,
        UINT64 BugCheckCode,
        UINT64 BugCheckParameter1,
        UINT64 BugCheckParameter2,
        UINT64 BugCheckParameter3,
        UINT64 BugCheckParameter4){
  UINT32 v8; 
  VOID *CurrentThreadProcessId; 
  void *v11; 
  void *v12; 
  _ETHREAD *CurrentThread; 
  _EPROCESS *Process; 
  VOID *CurrentThreadId; 
  VOID *v16; 
  UINT32 v17; 
  int v18; 
  UINT64 v19; 
  UINT64 v20; 
  UINT64 v21; 
  UINT64 v22; 
  _LARGE_INTEGER Interval; 

  v18 = 0;
  v8 = BugCheckCode;
  if( PopCriticalShutdownInProgress )
  {
    Interval.QuadPart = -300000000i64;
    KeDelayExecutionThread(0, 0, &Interval);
  }
  PopInternalAddToDumpFile(0i64, 0i64, 0i64);
  Process = KeGetCurrentThread()->ApcState.Process;
  if( !AllowCrashDump )
  {
    Process = 0i64;
    IoConfigureCrashDump(CrashDumpDisable, 0);
  }
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  CurrentThreadId = PsGetCurrentThreadId();
  CurrentThreadProcessId = PsGetCurrentThreadProcessId();
  v11 = (void *)BugCheckParameter3;
  v12 = (void *)BugCheckParameter4;
  v16 = CurrentThreadProcessId;
  v17 = v8;
  v19 = BugCheckParameter1;
  v20 = BugCheckParameter2;
  v21 = BugCheckParameter3;
  v22 = BugCheckParameter4;
  qword_140C23290 = &CurrentThread;
  ZwInitiatePowerAction(PowerActionShutdownReset, PowerSystemSleeping3, 0xC0000004ui64, 0);
  KeBugCheckEx(v8, (PVOID)BugCheckParameter1, (PVOID)BugCheckParameter2, v11, v12);
}

Referenced by:

ExpSystemErrorHandler2