HvpViewMapConvertLockedPagesToCOWByPolicy

INT64 __fastcall HvpViewMapConvertLockedPagesToCOWByPolicy(INT64 a1){
  __int64 v2; 
  INT64 v3; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  INT64 result; 
  v2 = 4096i64;
  if( *(__int64 *)(a1 + 8) <= 4096 )
  {
LABEL_17:
    *(_DWORD *)(a1 + 32) &= ~4u;
    return 0i64;
  }
  else
  {
    v3 = a1 + 40;
    while( 1 )
    {
      v4 = *(_QWORD *)v3;
      if( (*(_BYTE *)(a1 + 48) & 1) != 0 && v4 )
        v4 ^= v3;
      while( v4 )
      {
        if( v2 >= *(_QWORD *)(v4 + 40) )
        {
          if( v2 < *(_QWORD *)(v4 + 48) )
            break;
          v5 = *(_QWORD *)(v4 + 8);
        }
        else
        {
          v5 = *(_QWORD *)v4;
        }
        if( (*(_BYTE *)(a1 + 48) & 1) != 0 && v5 )
          v4 ^= v5;
        else
          v4 = v5;
      }
      result = HvpMappedViewConvertLockedPagesToCOWByPolicy(a1, (_QWORD *)v4);
      if( (int)result < 0 )
        break;
      v2 = *(_QWORD *)(v4 + 48);
      if( v2 >= *(_QWORD *)(a1 + 8) )
        goto LABEL_17;
    }
  }
  return result;
}

Referenced by:

HvHiveConvertLockedPagesToCowByPolicy