sub_1403EA874

VOID __fastcall sub_1403EA874(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  int v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  char v7; 
  void **v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  int v11; 
  int v12; 
  int v13; 
  void *v14; 
  void *Address[5]; 
  if( (_DWORD)a4 == 7 && (_DWORD)a3 == -1073741694 )
  {
    v4 = KeKvaShadowingActive();
    v5 = (unsigned __int64)KiSystemCall64Shadow;
    if( !v4 )
      v5 = (unsigned __int64)KiSystemCall64;
    v6 = (v5 ^ KiMismatchSummary) & 0xFFFFFFFFFFFFF000ui64;
    IoAddTriageDumpDataBlock((PVOID)v6, 0x1000ui64);
    _mm_lfence();
    MmIsAddressValid((PVOID)v6);
    if( v7 )
    {
      v8 = Address;
      v9 = 4i64;
      v10 = MmPteBase + ((v6 >> 9) & 0x7FFFFFFFF8i64);
      do
      {
        *v8++ = (void *)v10;
        v10 = MmPteBase + ((v10 >> 9) & 0x7FFFFFFFF8i64);
        --v9;
      }
      while( v9 );
      v11 = 3;
      do
      {
        v12 = v11;
        if( (_DWORD)v9 )
        {
          Address[v11] = 0i64;
        }
        else
        {
          if( !v11 )
            break;
          if( *(char *)Address[v11] < 0 )
            LODWORD(v9) = 1;
        }
        --v11;
      }
      while( v12 );
      v13 = 4;
      do
      {
        v14 = Address[v13 - 1];
        if( !v14 )
          break;
        IoAddTriageDumpDataBlock(v14, 8ui64);
        --v13;
      }
      while( v13 );
    }
    if( (unsigned int)ExQueryBigPoolTag(v6, &KiSuspectPoolTag) )
      IoAddTriageDumpDataBlock(&KiSuspectPoolTag, 4ui64);
  }
}

Referenced by:

KiMarkBugCheckRegions