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; } } }