HvTrimHive

VOID __fastcall HvTrimHive(INT64 a1, UINT64 a2, UINT64 a3){
  unsigned int v3; 
  unsigned int v4; 
  INT64 CellMap; 
  __int64 v7; 
  CHAR *AnyMultiplexedVm; 
  __int64 v9; 
  __int64 v10; 
  if( (unsigned int)a2 < (unsigned int)a3 )
  {
    v3 = a3;
    v4 = a2;
    do
    {
      CellMap = HvpGetCellMap(a1, v4);
      v7 = *(_QWORD *)(CellMap + 8);
      if( (v7 & 2) == 0 )
      {
        *(_QWORD *)(CellMap + 8) = v7 | 4;
        if( (v7 & 1) != 0 && (v7 & 8) != 0 )
        {
          AnyMultiplexedVm = MiGetAnyMultiplexedVm(2i64);
          MiDeprioritizeVirtualAddresses(
            v10 & 0xFFFFFFFFFFFFFFF0ui64,
            (unsigned __int64)*(unsigned int *)(v9 + 16) >> 12,
            (INT64)AnyMultiplexedVm,
            24);
        }
      }
      v4 += 4096;
    }
    while( v4 < v3 );
  }
}

Referenced by:

CmpTrimHive