IoInitializeBugCheckProgress

VOID __stdcall IoInitializeBugCheckProgress(UINT64 BugCheckCode, UINT64 BugCheckParameter1){
  int v2; 
  int v3; 
  __int64 v4; 
  UINT64 *v5; 
  const wchar_t *v6; 
  __int64 Value[2]; 
  UINT64 v8; 
  unsigned int v9; 
  UINT64 ValueLength; 

  v8 = BugCheckParameter1;
  Value[0] = 0i64;
  v9 = 0;
  v2 = BugCheckCode;
  LODWORD(ValueLength) = 8;
  KeFrozenProcessorCount((_EJOB *)BugCheckCode, BugCheckParameter1);
  if( (unsigned int)(KeNumberProcessors_0 - v3) <= 1 )
  {
    if( (unsigned __int8)off_140C00940[0]() != 1 && v2 != 265 )
    {
      if( BugCheckProgressEFICalled )
        return;
      BugCheckProgressEFICalled = 1;
      if( qword_140C50960 )
      {
        LODWORD(Value[0]) = v2;
        WORD2(Value[0]) = KUSER_SHARED_DATA.BootId;
        HIWORD(Value[0]) = *(_WORD *)(qword_140C50960 + 1408i64) + 1;
        (*(&stru_140C452E0 + 886))(L"BugCheckCode", &BUGCHECK_EFI_GUID, Value, 8i64, 1);
        v4 = 8i64;
        v5 = &v8;
        v6 = L"BugCheckParameter1";
      }
      else
      {
        if( HalGetEnvironmentVariableEx(
               (WCHAR *)L"BugCheckCode",
               (_GUID *)&BUGCHECK_EFI_GUID,
               Value,
               &ValueLength,
               0i64) )
        {
LABEL_10:
          BugCheckProgressEFICalled = 0;
          return;
        }
        LODWORD(Value[0]) = v2;
        ++HIWORD(Value[0]);
        WORD2(Value[0]) = KUSER_SHARED_DATA.BootId;
        v9 = v9 & 0xFFFBFE00 | 0x4004F;
        (*(&stru_140C452E0 + 886))(L"BugCheckCode", &BUGCHECK_EFI_GUID, Value, 8i64, 1);
        (*(&stru_140C452E0 + 886))(L"BugCheckParameter1", &BUGCHECK_EFI_GUID, &v8, 8i64, 1);
        v4 = 4i64;
        v5 = (UINT64 *)&v9;
        v6 = L"BugCheckProgress";
      }
      (*(&stru_140C452E0 + 886))(v6, &BUGCHECK_EFI_GUID, v5, v4, 1);
      goto LABEL_10;
    }
    BugCheckProgressEFICalled = 1;
  }
}

Referenced by:

KeBugCheck2