private static unsafe void MaskArrayAsLongs(int mask, int[] ints)
{
var longMask = ((long)mask << 32) + mask;
fixed (int* pt = ints)
{
var end = (long*)pt + ints.Length / 2;
if (ints.Length % 2 == 1)
{
ints[ints.Length - 1] ^= mask;
}
for (var curr = (long*)pt; curr < end; curr++)
{
*curr ^= longMask;
}
}
}