MiCheckKernelShadow

INT64 __fastcall MiCheckKernelShadow(CHAR a1, UINT64 a2, INT64 a3){
  _MMPTE *PteBase; 
  UINT64 v5; 
  UINT64 v6; 
  INT64 v7; 
  __int64 v8; 
  UINT64 v9; 
  ULONG_PTR BugCheckParameter4; 
  UINT64 v13; 
  UINT64 v14; 
  PteBase = MmGetPteBase();
  v5 = (UINT64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64);
  v6 = (UINT64)PteBase + (((a2 + a3 - 1) >> 9) & 0x7FFFFFFFF8i64);
  v7 = 0xFFFFFFFFi64;
  v8 = 0i64;
  while( v5 <= v6 )
  {
    v9 = MiReadWriteAnyLevelShadowPte(v5, 0i64, 0i64, ZeroPte);
    v13 = v9;
    BugCheckParameter4 = v9;
    if( (v9 & 1) == 0 )
    {
      if( (a1 & 8) == 0 )
        KeBugCheckEx(0x1Au, 0x3602ui64, v5, v9, v9);
      return v8 + a2;
    }
    v14 = MiVaToPfn((PVOID)(v8 + a2));
    MiPteInShadowRange((UINT64)&v13);
    if( v14 != ((BugCheckParameter4 >> 12) & 0xFFFFFFFFFi64) )
    {
      if( (a1 & 8) == 0 )
        KeBugCheckEx(0x1Au, 0x3603ui64, v5, BugCheckParameter4, BugCheckParameter4);
      return v8 + a2;
    }
    v5 += 8i64;
    v8 += 4096i64;
  }
  return v7;
}

Referenced by:

MiCheckRelevantKernelShadows