HvpMappedViewConvertRegionFromLockedToCOWByPolicy

INT64 __fastcall HvpMappedViewConvertRegionFromLockedToCOWByPolicy(UINT64 a1, _QWORD *a2, INT64 a3, INT64 a4){
  __int64 v4; 
  unsigned __int64 v5; 
  VOID *v6; 
  INT64 v8; 
  NTSTATUS v11; 
  UINT64 v12; 
  UINT64 v13; 
  NTSTATUS v14; 
  UINT64 NewAccessProtection; 
  UINT64 NewAccessProtectiona; 
  INT64 a6; 
  v4 = a2[7] - a2[3];
  v5 = a4 - a3;
  LODWORD(a6) = 0;
  v6 = (VOID *)(a3 + v4);
  LODWORD(NewAccessProtection) = 8;
  v8 = a3;
  v11 = CmSiProtectViewOfSection(a1, *(VOID ***)(a1 + 24), v6, a4 - a3, NewAccessProtection, (INT64)&a6);
  if( v11 >= 0 )
  {
    HvpViewMapTouchPages((BYTE *)v6, v5, 1);
    LODWORD(NewAccessProtectiona) = 2;
    CmSiProtectViewOfSection(v12, *(VOID ***)(a1 + 24), v6, v5, NewAccessProtectiona, (INT64)&a6);
    CmSiUnlockViewOfSection(v13, *(VOID ***)(a1 + 24), v6, v5);
    v11 = v14;
    while( v8 < a4 )
    {
      *((_BYTE *)a2 + ((unsigned __int64)(v8 - a2[3]) >> 12) + 72) = *((_BYTE *)a2
                                                                     + ((unsigned __int64)(v8 - a2[3]) >> 12)
                                                                     + 72) & 0xEB | 4;
      v8 += 4096i64;
    }
    a2[8] -= v5 >> 12;
  }
  return(unsigned int)v11;
}

Referenced by:

HvpMappedViewConvertLockedPagesToCOWByPolicy