HalBugCheckSystem
VOID __stdcall __noreturn HalBugCheckSystem(PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource, PWHEA_ERROR_RECORD ErrorRecord){
unsigned int SectionCount;
void *v3;
unsigned __int64 BugCheckParameter4;
_WHEA_ERROR_RECORD_SECTION_DESCRIPTOR *SectionDescriptor;
unsigned int v7;
_GUID *p_SectionType;
__int64 v9;
__int64 v10;
unsigned __int64 v11;
SectionCount = ErrorRecord->Header.SectionCount;
v3 = 0i64;
BugCheckParameter4 = 0i64;
SectionDescriptor = ErrorRecord->SectionDescriptor;
v7 = 0;
if( SectionCount )
{
p_SectionType = &SectionDescriptor->SectionType;
do
{
v9 = *(_QWORD *)&p_SectionType->Data1 - *(_QWORD *)&NMI_SECTION_GUID.Data1;
if( *(_QWORD *)&p_SectionType->Data1 == *(_QWORD *)&NMI_SECTION_GUID.Data1 )
v9 = *(_QWORD *)p_SectionType->Data4 - *(_QWORD *)NMI_SECTION_GUID.Data4;
if( v9 )
{
v10 = *(_QWORD *)&p_SectionType->Data1 - *(_QWORD *)&XPF_MCA_SECTION_GUID.Data1;
if( *(_QWORD *)&p_SectionType->Data1 == *(_QWORD *)&XPF_MCA_SECTION_GUID.Data1 )
v10 = *(_QWORD *)p_SectionType->Data4 - *(_QWORD *)XPF_MCA_SECTION_GUID.Data4;
if( !v10 )
{
v11 = *(_QWORD *)&ErrorRecord->Header.PlatformId.Data4[SectionDescriptor->SectionOffset];
BugCheckParameter4 = (unsigned int)v11;
v3 = (void *)HIDWORD(v11);
break;
}
}
else if( (*((_BYTE *)&ErrorRecord->Header.SignatureEnd + SectionDescriptor->SectionOffset + 2) & 1) == 0 )
{
byte_140C49C90 = 1;
byte_140C4A111 = 1;
KeBugCheckEx(0x80u, (PVOID)0x4F4454, 0i64, 0i64, 0i64);
}
++SectionDescriptor;
p_SectionType = (_GUID *)((char *)p_SectionType + 72);
++v7;
}
while( v7 < SectionCount );
}
KeBugCheckEx(0x124u, (PVOID)(int)ErrorSource->Type, ErrorRecord, v3, (PVOID)BugCheckParameter4);
}Referenced by:
No references.