MiGetPageForEnclave

UINT64 __fastcall MiGetPageForEnclave(INT64 a1, _MI_PARTITION *a2){
  __int64 v2; 
  char *v3; 
  unsigned __int64 v4; 
  v2 = *(_QWORD *)(a1 + 104);
  if( !v2 )
    return MiGetEnclavePage(a2, 0i64);
  v3 = *(char **)(a1 + 96);
  *(_QWORD *)(a1 + 96) = *(_QWORD *)v3;
  *(_QWORD *)(a1 + 104) = v2 - 1;
  v4 = (__int64)((unsigned __int128)((v3 - (char *)MmGetPfnDb()) * (__int128)0x2AAAAAAAAAAAAAABi64) >> 64) >> 3;
  return v4 + (v4 >> 63);
}

Referenced by:

MiAddPagesToEnclave
MiCopyPagesIntoEnclave