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