IoInitializeBugCheckProgress
VOID __stdcall IoInitializeBugCheckProgress(UINT64 BugCheckCode, UINT64 BugCheckParameter1){
int v2;
int v3;
__int64 v4;
UINT64 *v5;
const wchar_t *v6;
__int64 v7[2];
UINT64 v8;
unsigned int v9;
int v10;
v8 = BugCheckParameter1;
v7[0] = 0i64;
v9 = 0;
v2 = BugCheckCode;
v10 = 8;
KeFrozenProcessorCount();
if( (unsigned int)(KeNumberProcessors_0 - v3) <= 1 )
{
if( (unsigned __int8)off_140C00940[0]() != 1 && v2 != 265 )
{
if( BugCheckProgressEFICalled )
return;
BugCheckProgressEFICalled = 1;
if( CrashdmpDumpBlock )
{
LODWORD(v7[0]) = v2;
WORD2(v7[0]) = KUSER_SHARED_DATA.BootId;
HIWORD(v7[0]) = *(_WORD *)(CrashdmpDumpBlock + 1408) + 1;
((void(__fastcall *)(const wchar_t *, __int64 *, __int64 *, __int64, int))IopReportBugCheckProgress)(
L"BugCheckCode",
BUGCHECK_EFI_GUID,
v7,
8i64,
1);
v4 = 8i64;
v5 = &v8;
v6 = L"BugCheckParameter1";
}
else
{
if( (unsigned int)HalGetEnvironmentVariableEx() )
{
LABEL_10:
BugCheckProgressEFICalled = 0;
return;
}
LODWORD(v7[0]) = v2;
++HIWORD(v7[0]);
WORD2(v7[0]) = KUSER_SHARED_DATA.BootId;
v9 = v9 & 0xFFFBFE00 | 0x4004F;
((void(__fastcall *)(const wchar_t *, __int64 *, __int64 *, __int64, __int64))IopReportBugCheckProgress)(
L"BugCheckCode",
BUGCHECK_EFI_GUID,
v7,
8i64,
1i64);
((void(__fastcall *)(const wchar_t *, __int64 *, UINT64 *, __int64, int))IopReportBugCheckProgress)(
L"BugCheckParameter1",
BUGCHECK_EFI_GUID,
&v8,
8i64,
1);
v4 = 4i64;
v5 = (UINT64 *)&v9;
v6 = L"BugCheckProgress";
}
((void(__fastcall *)(const wchar_t *, __int64 *, UINT64 *, __int64, int))IopReportBugCheckProgress)(
v6,
BUGCHECK_EFI_GUID,
v5,
v4,
1);
goto LABEL_10;
}
BugCheckProgressEFICalled = 1;
}
}Referenced by:
KeBugCheck2