// Adapted from datamatrix-rs errorcode/mod.rs and galois.rs (MIT).
///|
fn gf_mul(a : Int, b : Int) -> Int {
let mut x = a
let mut y = b
let mut r = 0
while y != 0 {
if (y & 1) != 0 {
r = r ^ x
}
y = y >> 1
x = x << 1
if (x & 256) != 0 {
x = x ^ 301
}
}
r
}
///|
fn generator(n : Int) -> Array[Int] {
let mut g = [1]
let mut root = 1
for _ in 0.. Array[Int] {
let g = generator(s.ecc)
let result = Array::make(s.blocks * s.ecc, 0)
for block in 0..