MiFreeBootPageTable

VOID __stdcall MiFreeBootPageTable(UINT64 PageFrameIndex){
  char *v1; 
  __int16 v2; 
  unsigned __int64 v3; 
  char v4; 
  v1 = (char *)MmGetPfnDb() + 48 * PageFrameIndex;
  v2 = *((_WORD *)v1 + 16);
  if( v2 )
  {
    if( v2 != 2 || (*((_QWORD *)v1 + 3) & 0x3FFFFFFFFFFFFFFFi64) != 1 )
      KeBugCheckEx(0x1Au, 0x3030307ui64, PageFrameIndex, 0i64, 0i64);
    v3 = (unsigned __int8)MiLockPageInline((INT64)v1);
    v4 = v1[34] & 0xFD;
    *((_WORD *)v1 + 16) = 0;
    *((_QWORD *)v1 + 3) &= 0xC000000000000000ui64;
    v1[34] = v4 | 5;
    _InterlockedAnd64((volatile signed __int64 *)v1 + 3, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v3);
  }
  else
  {
    *((_QWORD *)v1 + 1) = 0i64;
    *((_QWORD *)v1 + 5) |= 0x4000000000000ui64;
  }
  MiLockAndInsertPageInFreeList((_MMPFN *)v1);
}

Referenced by:

MxZeroBootMappings