KiScanBugCheckCallbackList
VOID __stdcall KiScanBugCheckCallbackList(){
INT64 v0;
char *v1;
INT64 v2;
unsigned int i;
void(*v4)(void);
v0 = *(&KiSwapEvent + 42);
if( *(&KiSwapEvent + 42) && *(&KiSwapEvent + 43) )
{
v1 = (char *)&KiSwapEvent + 336;
while( (_UNKNOWN *)v0 != (_UNKNOWN *)((char *)&KiSwapEvent + 336) && (v0 & 7) == 0 )
{
v2 = v0;
for( i = 0; i < 0x40; ++i )
{
if( !MmIsAddressValidEx(v2) )
return;
++v2;
}
if( *(char **)(v0 + 8) != v1 )
break;
v4 = *(void(**)(void))(v0 + 16);
if( *(_BYTE *)(v0 + 56) == 1
&& *(void(**)(void))(v0 + 48) == (void(*)(void))((char *)v4
+ *(unsigned int *)(v0 + 32)
+ *(_QWORD *)(v0 + 40)
+ *(_QWORD *)(v0 + 24)) )
{
*(_BYTE *)(v0 + 56) = 2;
v4();
*(_BYTE *)(v0 + 56) = 3;
}
v1 = (char *)v0;
v0 = *(_QWORD *)v0;
}
}
}Referenced by:
IopWriteTriageDumpToFirmware
KeBugCheck2