MiSetPfnOwnedAndActive

INT64 __fastcall MiSetPfnOwnedAndActive(INT64 a1, CHAR a2, INT64 a3, INT64 a4, INT64 a5){
  unsigned int v5; 
  unsigned __int8 v9; 
  unsigned int v10; 
  unsigned __int64 v11; 
  INT64 result; 
  v5 = a4;
  v9 = MiLockPageInline(a1);
  v10 = *(unsigned __int8 *)(a1 + 34);
  *(_QWORD *)(a1 + 40) &= ~0x8000000000000000ui64;
  *(_QWORD *)a1 = 0i64;
  v11 = v9;
  if( v10 >> 6 != v5 )
  {
    MiChangePageAttribute(a1, v5, 1);
    LOBYTE(v10) = *(_BYTE *)(a1 + 34);
  }
  *(_QWORD *)(a1 + 24) = *(_QWORD *)(a1 + 24) & 0xC000000000000000ui64 | 1;
  if( (_DWORD)a5 )
    *(_WORD *)(a1 + 32) = a5;
  *(_QWORD *)(a1 + 8) = a3;
  *(_BYTE *)(a1 + 34) = v10 & 0xF8 | 6;
  if( (a2 & 1) != 0 )
  {
    *(_QWORD *)(a1 + 40) = *(_QWORD *)(a1 + 40) & 0xFFFFFFF000000000ui64 | 0xFFFFFFFFDi64;
    *(_QWORD *)(a1 + 16) = MiSwizzleInvalidPte(128i64);
    *(_QWORD *)(a1 + 8) = MmGetPteBase();
    *(_QWORD *)(a1 + 24) |= 0x4000000000000000ui64;
  }
  _InterlockedAnd64((volatile signed __int64 *)(a1 + 24), 0x7FFFFFFFFFFFFFFFui64);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v11);
  return result;
}

Referenced by:

MiAssignNonPagedPoolPte
MiFindContiguousPages
MiFindLargeNodePage
MiRemoveMdlPages