static uint gf2_matrix_times(uint[] matrix, uint vec) { uint sum = 0; int i = 0; while (vec != 0) { if ((vec & 0x01) == 0x01) { sum ^= matrix[i]; } vec >>= 1; i++; } return sum; }