sub_1403EA874
void __fastcall sub_1403EA874(__int64 a1, __int64 a2, int a3, int a4){
NTSTATUS v4;
unsigned __int64 v5;
unsigned __int64 v6;
VOID **v7;
__int64 v8;
unsigned __int64 v9;
int v10;
int v11;
int v12;
VOID *v13;
VOID *Address[5];
if( a4 == 7 && a3 == -1073741694 )
{
v4 = KeKvaShadowingActive();
v5 = (unsigned __int64)KiSystemCall64Shadow;
if( !v4 )
v5 = (unsigned __int64)KiSystemCall64;
v6 = (v5 ^ *(&SbiVmbusArrivalEvent + 364)) & 0xFFFFFFFFFFFFF000ui64;
IoAddTriageDumpDataBlock((VOID *)v6, (_BYTE *)0x1000);
_mm_lfence();
if( MmIsAddressValid(v6) )
{
v7 = Address;
v8 = 4i64;
v9 = MmPteBase + ((v6 >> 9) & 0x7FFFFFFFF8i64);
do
{
*v7++ = (VOID *)v9;
v9 = MmPteBase + ((v9 >> 9) & 0x7FFFFFFFF8i64);
--v8;
}
while( v8 );
v10 = 3;
do
{
v11 = v10;
if( (_DWORD)v8 )
{
Address[v10] = 0i64;
}
else
{
if( !v10 )
break;
if( *(char *)Address[v10] < 0 )
LODWORD(v8) = 1;
}
--v10;
}
while( v11 );
v12 = 4;
do
{
v13 = Address[v12 - 1];
if( !v13 )
break;
IoAddTriageDumpDataBlock(v13, (_BYTE *)8);
--v12;
}
while( v12 );
}
if( (unsigned int)ExQueryBigPoolTag(v6, (_DWORD *)&SbiVmbusArrivalEvent + 730) )
IoAddTriageDumpDataBlock((char *)&SbiVmbusArrivalEvent + 2920, (_BYTE *)4);
}
}Referenced by:
KiMarkBugCheckRegions