///|
/// Adler-32 checksum implementation for zlib
let adler_mod : UInt = Int::reinterpret_as_uint(65521)

///|
let adler_nmax : Int = 5552

///|
fn adler32_bytes(data : Bytes) -> Int {
  let mut s1 : UInt = Int::reinterpret_as_uint(1)
  let mut s2 : UInt = Int::reinterpret_as_uint(0)
  let mut i = 0
  let len = data.length()
  while i < len {
    let remaining = len - i
    let chunk = if remaining > adler_nmax { adler_nmax } else { remaining }
    for j in 0.. Int {
  adler32_bytes(data)
}

///|
/// Compute Adler-32 checksum from FixedArray
pub fn adler32_fixed(data : FixedArray[Byte]) -> Int {
  let mut s1 : UInt = Int::reinterpret_as_uint(1)
  let mut s2 : UInt = Int::reinterpret_as_uint(0)
  let len = data.length()
  let mut i = 0
  while i < len {
    let remaining = len - i
    let chunk = if remaining > adler_nmax { adler_nmax } else { remaining }
    for j in 0..