HvpViewMapMakeViewRangeUnCOWByCaller

VOID __stdcall HvpViewMapMakeViewRangeUnCOWByCaller(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  INT64 v5; 
  __int64 v8; 
  unsigned __int64 v9; 
  char v10; 
  UINT64 NewProtectWin32; 
  __int64 v12; 

  if( a3 < a4 )
  {
    LODWORD(v12) = 0;
    v5 = a3;
    do
    {
      v8 = *(_QWORD *)(a2 + 24);
      v9 = (unsigned __int64)(v5 - v8) >> 12;
      v10 = *(_BYTE *)(v9 + a2 + 72);
      if( (v10 & 2) != 0 )
      {
        LODWORD(NewProtectWin32) = ((~v10 & 0xFC) << 29) | 2;
        CmSiProtectViewOfSection(
          (UINT64)&v12,
          *(VOID ***)(a1 + 24),
          (VOID *)(v5 + *(_QWORD *)(a2 + 56) - v8),
          0x1000ui64,
          NewProtectWin32,
          (__int64)&v12);
        *(_BYTE *)(v9 + a2 + 72) &= 0xF5u;
      }
      v5 += 4096i64;
    }
    while( v5 < a4 );
  }
}

Referenced by:

HvpViewMapUnCOWAndSealRange