/* This inv_shift_rows also implements the matrix flip required for inv_mix_columns, but performs it here to reduce the number of memory operations.  */
static void inv_shift_rows(uint8_t *s)
/* This inv_shift_rows also implements the matrix flip required for inv_mix_columns, but performs it here to reduce the number of memory operations.  */
static void inv_shift_rows(uint8_t *s)
{
	uint8_t t[Nb*Nk];
	t[0]  = s[0]; t[1] = s[13]; t[2] = s[10]; t[3] = s[7];
	t[4]  = s[4]; t[5] = s[1]; t[6] = s[14]; t[7] = s[11];
	t[8]  = s[8]; t[9] = s[5]; t[10] = s[2]; t[11] = s[15];
	t[12] = s[12]; t[13] = s[9]; t[14] = s[6]; t[15] = s[3];
	(void)_copy(s, sizeof(t), t, sizeof(t));
}