fn generateSbox(invert: bool) [256]u8
fn generateSbox(invert: bool) [256]u8 { @setEvalBranchQuota(10000); var sbox: [256]u8 = undefined; var p: u8 = 1; var q: u8 = 1; for (sbox) |_| { p = mul(p, 3); q = mul(q, 0xf6); // divide by 3 var value: u8 = q ^ 0x63; value ^= math.rotl(u8, q, 1); value ^= math.rotl(u8, q, 2); value ^= math.rotl(u8, q, 3); value ^= math.rotl(u8, q, 4); if (invert) { sbox[value] = p; } else { sbox[p] = value; } } if (invert) { sbox[0x63] = 0x00; } else { sbox[0x00] = 0x63; } return sbox; }