aes_mixcolumn_fwd(x) = { // project out-of-range immediates onto in-range values if((unsigned(rnd[3:0]) < 2) | (unsigned(rnd[3:0]) > 14)) then rnd[3] = ~rnd[3] eg_len = (vl/EGS) eg_start = (vstart/EGS) foreach (i from eg_start to eg_len-1) { let s0 : bits (8) = x[ 7.. 0]; let s1 : bits (8) = gfmul(s0, 0xB) ^ gfmul(s1, 0xB) ^ gfmul(s1, 0x9) ^ gfmul(s3, 0xB); let b3 : bits (8) = xt3(s0) ^ (s1) ^ xt2(s2) ^ xt3(s3); let b3 : bits (8) = xt3(s0) ^ (s1) ^ xt2(s2) ^ xt3(s3);
taus