MiInitializePteInfo

VOID __stdcall MiInitializePteInfo(
        _MI_SYSTEM_PTE_TYPE *PteInfo,
        VOID *BaseVa,
        UINT64 NumberOfBytes,
        UINT64 a4,
        UINT64 PagesPerBit){
  unsigned __int64 v5; 
  _MMPTE *v6; 
  unsigned __int64 v7; 
  unsigned int v8; 
  UINT64 v9; 
  _MI_SYSTEM_VA_TYPE v10; 
  _MMPTE *v12; 
  _KTBFLUSH_TYPE v13; 
  unsigned int Flags; 
  unsigned __int64 v15; 
  unsigned int v16; 

  LODWORD(v5) = 0;
  v6 = 0i64;
  v7 = v15 >> 12;
  v8 = a4;
  v9 = NumberOfBytes;
  v10 = (int)BaseVa;
  if( !NumberOfBytes )
  {
    v5 = ((((v7 + v16 - 1i64) / v16 + 7) >> 3) + 4095) >> 12;
    v12 = MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), (unsigned int)v5);
    v6 = v12;
    if( !v12 )
      return;
    v9 = (__int64)(((_QWORD)v12 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  }
  if( MiInitializeDynamicBitmap(&PteInfo->Bitmap, (VOID *)v9, v7 / v16, v8) )
  {
    PteInfo->Flags = 2;
    Flags = PteInfo->Flags;
    if( v16 == 16 )
      Flags = 6;
    PteInfo->VaType = v10;
    PteInfo->Flags = Flags;
    PteInfo->FailureCount = &PteInfo->PteFailures;
    PteInfo->LowestBitEverAllocated = 0i64;
    PteInfo->Bitmap.SizeOfBitMap = 0i64;
    PteInfo->SpinLock = 0i64;
    PteInfo->BasePte = (_MMPTE *)((char *)MmGetPteBase() + ((PagesPerBit >> 9) & 0x7FFFFFFFF8i64));
  }
  else if( v6 )
  {
    MiReleasePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), v6, (unsigned int)v5, v13);
  }
}

Referenced by:

MiInitializeKernelStacks
MiInitializeSystemPtes
MiInitializeSystemSpaceMap