MiReturnBadPagesToBadList

VOID __stdcall MiReturnBadPagesToBadList(INT64 a1, INT64 a2){
  INT64 v2; 
  _MMPFN *v3; 
  unsigned __int64 v4; 
  UINT8 v5; 

  if( a2 )
  {
    v2 = a2;
    v3 = &MmGetPfnDb()[a1];
    do
    {
      v4 = MiLockPageInline(v3);
      if( !v3->PteLong )
        v3->PteLong = -4i64;
      v3->u3.ReferenceCount = 0;
      v3->u4._bf_0 &= 0xFFFFFFF000000000ui64;
      MiInsertPageInList(v3, 0x20ui64, v5);
      _InterlockedAnd64(&v3->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
      __writecr8(v4);
      ++v3;
      --v2;
    }
    while( v2 );
  }
}

Referenced by:

MiRemoveBadPages
MmRemovePhysicalMemory