MiCreatePteCopyList
INT64 __fastcall MiCreatePteCopyList(unsigned __int64 a1, unsigned __int64 a2, __int64 a3){
UINT64 v4;
INT64 result;
int v6;
bool v7;
*(_DWORD *)a3 = 0;
*(_QWORD *)(a3 + 16) = 0i64;
*(_WORD *)(a3 + 8) = 17;
if( a1 <= a2 >> 1 )
v4 = (unsigned int)(2 * a1);
else
v4 = (unsigned int)a2 & 0xFFFFFFFE;
*(_DWORD *)(a3 + 4) = v4;
do
{
result = MiReservePtes((INT64)&qword_140C4EC80, v4);
*(_QWORD *)(a3 + 16) = result;
if( result )
break;
v6 = *(_DWORD *)(a3 + 4);
v7 = v6 == 2;
result = (unsigned int)(v6 - 2);
*(_DWORD *)(a3 + 4) = result;
v4 = (unsigned int)result;
}
while( !v7 );
return result;
}Referenced by:
MiAddPagesToEnclave
MiCopyPage
MiCopyPagesIntoEnclave
MiFillPerSessionProtos
MiFindContiguousPages
MiGetPteMappingPair
MiInitializeScrubPacket
MmRelocatePfnList