private static void Diff(int[] i, int offset1, int[] o, int offset2) {
var t0 = M(i[offset1]);
var t1 = M(i[offset1 + 1]);
var t2 = M(i[offset1 + 2]);
var t3 = M(i[offset1 + 3]);
t1 ^= t2;
t2 ^= t3;
t0 ^= t1;
t3 ^= t1;
t2 ^= t0;
t1 ^= t2;
t1 = Badc(t1);
t2 = Cdab(t2);
t3 = Dcba(t3);
t1 ^= t2;
t2 ^= t3;
t0 ^= t1;
t3 ^= t1;
t2 ^= t0;
t1 ^= t2;
o[offset2] = (int)t0;
o[offset2 + 1] = (int)t1;
o[offset2 + 2] = (int)t2;
o[offset2 + 3] = (int)t3;
}