pub fn table_combine_kernel(
words: [TableWords; 32],
key: [b8; 64],
mix: bool,
) -> [b8; 64]Expand description
Combine one round’s 64 table words: rotated XOR per column plus the key.
Row out of rotl(T0[x], 8·row) is byte (out − row) mod 4 of T0[x].
Inputs: the 64 table words read last cycle, the round’s 64-byte key, and
mix (apply the word mix after this round). Output: the 64-byte state
after the whole AES round. Combinational: each output byte is a 5-input
XOR (four table bytes and one key byte). The “rotation” is only a choice
of which byte of each word to wire in; it costs nothing.
column c of lane l, output row o:
out[o] = key[o] ⊕ T0[x0].byte(o) ⊕ T0[x1].byte(o−1) ⊕ T0[x2].byte(o−2) ⊕ T0[x3].byte(o−3)
(row offsets taken mod 4)