HvpMappedViewConvertRegionFromLockedToCOWByPolicy

__int64 __fastcall HvpMappedViewConvertRegionFromLockedToCOWByPolicy(UINT64 a1, _QWORD *a2, __int64 a3, __int64 a4){
  __int64 v4; 
  unsigned __int64 v5; 
  _BYTE *v6; 
  __int64 v8; 
  NTSTATUS v11; 
  UINT64 v12; 
  UINT64 v13; 
  UINT64 NewProtectWin32; 
  UINT64 NewProtectWin32a; 
  __int64 v17; 

  v4 = a2[7] - a2[3];
  v5 = a4 - a3;
  LODWORD(v17) = 0;
  v6 = (_BYTE *)(a3 + v4);
  LODWORD(NewProtectWin32) = 8;
  v8 = a3;
  v11 = CmSiProtectViewOfSection(a1, *(VOID ***)(a1 + 24), v6, a4 - a3, NewProtectWin32, (__int64)&v17);
  if( v11 >= 0 )
  {
    HvpViewMapTouchPages(v6, v5, 1);
    LODWORD(NewProtectWin32a) = 2;
    CmSiProtectViewOfSection(v12, *(VOID ***)(a1 + 24), v6, v5, NewProtectWin32a, (__int64)&v17);
    v11 = CmSiUnlockViewOfSection(v13, *(VOID ***)(a1 + 24), v6, v5);
    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