MmCheckMdlPages

VOID __fastcall MmCheckMdlPages(_MDL *MemoryDescriptorList){
  UINT64 *v1; 
  __int16 v2; 
  unsigned __int64 v3; 
  UINT64 *v5; 
  UINT64 Param4; 
  int IsPfn; 
  UINT64 v8; 
  v1 = (UINT64 *)&MemoryDescriptorList[1];
  v2 = MemoryDescriptorList->MdlFlags & 0x800;
  v3 = (((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)
      + (unsigned __int64)MemoryDescriptorList->ByteCount
      + 4095) >> 12;
  v5 = (UINT64 *)(&MemoryDescriptorList[1].Next + v3);
  do
  {
    Param4 = *v1;
    IsPfn = MiIsPfn(*v1);
    if( v2 )
    {
      if( IsPfn != 1 )
        goto LABEL_8;
    }
    else if( !IsPfn )
    {
      VerifierBugCheckIfAppropriate(0xC4ui64, 0x89ui64, (UINT64)MemoryDescriptorList, (UINT64)v1, Param4, v8);
      Param4 = *v1;
    }
    if( !*((_WORD *)MmGetPfnDb() + 24 * Param4 + 16) )
      VerifierBugCheckIfAppropriate(
        0xC4ui64,
        0x85ui64,
        (UINT64)MemoryDescriptorList,
        v3,
        (__int64)(48 * Param4) / 48,
        v8);
LABEL_8:
    ++v1;
  }
  while( v1 < v5 );
}

Referenced by:

ViMmMapLockedPagesSanityChecks