MiCreatePteCopyList

VOID __stdcall MiCreatePteCopyList(UINT64 SizeInPages, UINT64 MaximumSizeInPages, _MMPTE_COPY_LIST *PteCopyList){
  UINT64 v4; 
  _MMPTE *v5; 
  unsigned int v6; 
  bool v7; 

  *PteCopyList = 0;
  *((_QWORD *)PteCopyList + 2) = 0i64;
  *((_WORD *)PteCopyList + 4) = 17;
  if( SizeInPages <= MaximumSizeInPages >> 1 )
    v4 = (unsigned int)(2 * SizeInPages);
  else
    v4 = (unsigned int)MaximumSizeInPages & 0xFFFFFFFE;
  PteCopyList[1] = v4;
  do
  {
    v5 = MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), v4);
    *((_QWORD *)PteCopyList + 2) = v5;
    if( v5 )
      break;
    v6 = PteCopyList[1];
    v7 = v6 == 2;
    v6 -= 2;
    PteCopyList[1] = v6;
    v4 = v6;
  }
  while( !v7 );
}

Referenced by:

MiAddPagesToEnclave
MiCopyPage
MiCopyPagesIntoEnclave
MiFillPerSessionProtos
MiFindContiguousPages
MiGetPteMappingPair
MiInitializeScrubPacket
MmRelocatePfnList