MiInitializeGapFrames

NTSTATUS __stdcall MiInitializeGapFrames(UINT64 Pattern, UINT64 *GapFrames){
  INT64 v3; 
  _MMPTE *v4; 
  _KTBFLUSH_TYPE v5; 
  int v6; 
  unsigned int v7; 
  UINT64 *v8; 
  INT64 v9; 
  _MMPFN *v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  UINT64 v13; 
  __int64 v14; 
  int v15; 
  INT64 v16; 
  __int64 v17; 
  unsigned __int64 v18; 

  if( Pattern )
  {
    if( Pattern != -1i64 )
      return 0;
    v3 = *(&stru_140C4DB30 + 495);
  }
  else
  {
    v3 = *(&stru_140C4DB30 + 498);
  }
  v4 = MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), 3ui64);
  if( !v4 )
    return 0;
  MiAcquireNonPagedResources(&Irp, 3ui64);
  if( v6 < 0 )
    return 0;
  v7 = 0;
  v8 = GapFrames;
  do
  {
    if( v7 )
    {
      LODWORD(v9) = MiGetPage((ULONG_PTR *)&Irp.Core.PartitionId, v7, 0x208ui64);
      v3 = v9;
      if( v9 == -1 )
        return 0;
      v10 = &MmGetPfnDb()[v9];
      v10->u4._bf_0 &= ~0x8000000000000000ui64;
      v11 = v10->u2._bf_0 & 0xC000000000000001ui64;
      v10->u3.ReferenceCount = 1;
      v10->u2._bf_0 = v11 | 1;
      LODWORD(v12) = MiMakeValidPte((_XSTATE_CONFIGURATION *)&v4[v7], v3, 2684354564i64);
      v13 = (UINT64)&v4[v7 - 1];
      v14 = v12;
      LOBYTE(v15) = MiPteInShadowRange(v13);
      if( v15 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v14 & 1) != 0 )
        v14 |= 0x8000000000000000ui64;
      *(_QWORD *)v13 = v14;
      v16 = 536870913i64;
      v17 = (__int64)((v13 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
      if( v7 != 1 )
        v16 = 2818572292i64;
      if( v7 != 1 )
        v13 = 0i64;
      LODWORD(v18) = MiMakeValidPte((_XSTATE_CONFIGURATION *)v13, GapFrames[v7 - 1], v16);
      memset64((void *)v17, v18, 0x200ui64);
    }
    *v8 = v3;
    ++v7;
    ++v8;
  }
  while( v7 < 4 );
  MiReleasePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), v4, 3ui64, v5);
  return 1;
}

Referenced by:

MiFillPfnGaps
MiInitNucleus