MiGetPageForEnclave

NTSTATUS __stdcall MiGetPageForEnclave(INT64 a1, _MI_PARTITION *a2){
  __int64 v2; 
  char *v3; 
  unsigned __int64 v4; 
  __int64 v5; 

  v2 = *(_QWORD *)(a1 + 104);
  if( v2 )
  {
    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);
  }
  else
  {
    LODWORD(v5) = MiGetEnclavePage(a2, 0i64);
  }
  return v5;
}

Referenced by:

MiAddPagesToEnclave
MiCopyPagesIntoEnclave