MiFreeBootPageTable

VOID __stdcall MiFreeBootPageTable(UINT64 PageFrameIndex){
  _MMPFN *v1; 
  unsigned __int16 ReferenceCount; 
  unsigned __int64 v3; 
  char v4; 

  v1 = &MmGetPfnDb()[PageFrameIndex];
  ReferenceCount = v1->u3.ReferenceCount;
  if( ReferenceCount )
  {
    if( ReferenceCount != 2 || (v1->u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64) != 1 )
      KeBugCheckEx(0x1Au, (PVOID)0x3030307, (PVOID)PageFrameIndex, 0i64, 0i64);
    v3 = MiLockPageInline(v1);
    v4 = *(_BYTE *)(&v1->u3 + 1) & 0xFD;
    v1->u3.ReferenceCount = 0;
    v1->u2._bf_0 &= 0xC000000000000000ui64;
    *((_BYTE *)&v1->u3 + 2) = v4 | 5;
    _InterlockedAnd64(&v1->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v3);
  }
  else
  {
    v1->PteLong = 0i64;
    v1->u4._bf_0 |= 0x4000000000000ui64;
  }
  MiLockAndInsertPageInFreeList(v1);
}

Referenced by:

MxZeroBootMappings