#![allow(dead_code)]
#![allow(non_upper_case_globals)]
use bitstream_io::{
huffman::{compile_read_tree, ReadHuffmanTree},
BigEndian, BitReader, LittleEndian,
};
use lazy_static::lazy_static;
use num::{One, Zero};
pub(crate) const SUBBANDS: usize = 16;
pub(crate) const SUBBAND_SAMPLES: usize = 128;
pub(crate) const FRAME_SAMPLES: usize = SUBBANDS * SUBBAND_SAMPLES as usize;
pub(crate) const POWER_COMP_OFF: u8 = 15;
pub(crate) const MDCT_SIZE: usize = SUBBAND_SAMPLES * 2;
pub(crate) const PQF_FIR_LEN: usize = 12;
lazy_static! {
pub(crate) static ref WL_VLC_TABS: [Box<[ReadHuffmanTree<BigEndian, i32>]>; 4] = {
let codes_1 = [0, 2, 3];
let codes_2 = [0, 4, 5, 6, 7];
let codes_3 = [0, 4, 0xC, 0x1E, 0x1F, 0xD, 0xE, 5];
let codes_4 = [0, 4, 0xC, 0xD, 0x1E, 0x1F, 0xE, 5];
let bits_1 = [1, 2, 2];
let bits_2 = [1, 3, 3, 3, 3];
let bits_3 = [1, 3, 4, 5, 5, 4, 4, 3];
let bits_4 = [1, 3, 4, 4, 5, 5, 4, 3];
let xlat_1 = [0, 1, 7];
let xlat_2 = [0, 1, 2, 6, 7];
let tab_1 = build_huffman(&codes_1, &bits_1, Some(&xlat_1));
let tab_2 = build_huffman(&codes_2, &bits_2, Some(&xlat_2));
let tab_3 = build_huffman(&codes_3, &bits_3, None);
let tab_4 = build_huffman(&codes_4, &bits_4, None);
[tab_1, tab_2, tab_3, tab_4]
};
pub(crate) static ref SF_VLC_TABS: [Box<[ReadHuffmanTree<BigEndian, i32>]>; 8] = {
let codes_1 = [
0, 2, 3, 4, 5, 0xC, 0xD, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0x1CE, 0x1CF, 0x1D0,
0x1D1, 0x1D2, 0x1D3, 0x1D4, 0x1D5, 0x1D6, 0x1D7, 0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC,
0x1DD, 0x1DE, 0x1DF, 0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5, 0x1E6, 0x1E7, 0x1E8,
0x1E9, 0x1EA, 0x1EB, 0x1EC, 0x1ED, 0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4,
0x1F5, 0x1F6, 0x1F7, 0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD, 0x1FE, 0x1FF,
];
let codes_2 = [
0, 4, 0x18, 0x19, 0x70, 0x1CA, 0x1CB, 0x1CC, 0x1CD, 0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2,
0x1D3, 0x1D4, 0x1D5, 0x1D6, 0x1D7, 0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC, 0x1DD, 0x1DE,
0x1DF, 0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5, 0x1E6, 0x1E7, 0x1E8, 0x1E9, 0x1EA,
0x1EB, 0x1EC, 0x1ED, 0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4, 0x1F5, 0x1F6,
0x1F7, 0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD, 0x1FE, 0x1FF, 0xE4, 0x71, 0x1A, 0x1B,
5,
];
let codes_3 = [
0, 2, 3, 0x18, 0x19, 0x70, 0x1CC, 0x1CD, 0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2, 0x1D3,
0x1D4, 0x1D5, 0x1D6, 0x1D7, 0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC, 0x1DD, 0x1DE, 0x1DF,
0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5, 0x1E6, 0x1E7, 0x1E8, 0x1E9, 0x1EA, 0x1EB,
0x1EC, 0x1ED, 0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4, 0x1F5, 0x1F6, 0x1F7,
0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD, 0x1FE, 0x1FF, 0x71, 0x72, 0x1A, 0x1B, 4, 5,
];
let codes_4 = [
0, 2, 3, 4, 5, 0xC, 0xD, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0, 0x3D, 0x3E, 0x3F,
];
let codes_5 = [
0, 4, 0xC, 0x1C, 0x78, 0x79, 0x7A, 0x7B, 0, 0x7C, 0x7D, 0x7E, 0x7F, 0x1D, 0xD, 5,
];
let codes_6 = [
0, 2, 3, 0xC, 0x1C, 0x3C, 0x7C, 0x7D, 0, 0x7E, 0x7F, 0x3D, 0x1D, 0xD, 4, 5,
];
let bits_1 = [
2, 3, 3, 3, 3, 4, 4, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,
];
let bits_2 = [
1, 3, 5, 5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 8, 7, 5, 5, 3,
];
let bits_3 = [
2, 3, 3, 5, 5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
7, 7, 5, 5, 3, 3,
];
let bits_4 = [2, 3, 3, 3, 3, 4, 4, 6, 6, 6, 6, 6, 0, 6, 6, 6];
let bits_5 = [1, 3, 4, 5, 7, 7, 7, 7, 0, 7, 7, 7, 7, 5, 4, 3];
let bits_6 = [2, 3, 3, 4, 5, 6, 7, 7, 0, 7, 7, 6, 5, 4, 3, 3];
let xlat_1 = [
0, 1, 61, 62, 63, 2, 60, 3, 4, 5, 6, 57, 58, 59, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
];
let xlat_2 = [
0, 1, 2, 62, 63, 3, 61, 4, 5, 6, 57, 58, 59, 60, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
];
let xlat_4 = [0, 1, 13, 14, 15, 2, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11];
let xlat_5 = [0, 1, 2, 14, 15, 3, 13, 4, 5, 6, 7, 9, 8, 10, 11, 12];
let tab_1 = build_huffman(&codes_1, &bits_1, Some(&xlat_1));
let tab_2 = build_huffman(&codes_1, &bits_1, Some(&xlat_2));
let tab_3 = build_huffman(&codes_2, &bits_2, None);
let tab_4 = build_huffman(&codes_3, &bits_3, None);
let tab_5 = build_huffman(&codes_4, &bits_4, Some(&xlat_4));
let tab_6 = build_huffman(&codes_4, &bits_4, Some(&xlat_5));
let tab_7 = build_huffman(&codes_5, &bits_5, None);
let tab_8 = build_huffman(&codes_6, &bits_6, None);
[tab_1, tab_2, tab_3, tab_4, tab_5, tab_6, tab_7, tab_8]
};
pub(crate) static ref CT_VLC_TABS: [Box<[ReadHuffmanTree<BigEndian, i32>]>; 4] = {
let codes_1 = [0, 2, 6, 7];
let codes_2 = [0, 2, 3, 4, 5, 6, 0xE, 0xF];
let codes_3 = [0, 4, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF];
let bits_1 = [1, 2, 3, 3];
let bits_2 = [2, 3, 3, 3, 3, 3, 4, 4];
let bits_3 = [1, 3, 4, 4, 4, 4, 4, 4];
let xlat_1 = [0, 1, 2, 3, 6, 7, 4, 5];
let tab_1 = build_huffman(&codes_1, &bits_1, None);
let tab_2 = build_huffman(&codes_2, &bits_2, None);
let tab_3 = build_huffman(&codes_2, &bits_2, Some(&xlat_1));
let tab_4 = build_huffman(&codes_3, &bits_3, None);
[tab_1, tab_2, tab_3, tab_4]
};
pub(crate) static ref GAIN_VLC_TABS: Vec<Box<[ReadHuffmanTree<BigEndian, u16>]>> = {
let gain_cbs = [
&npoints1_cb[..],
&npoints1_cb,
&lev1_cb,
&lev2_cb,
&lev3_cb,
&lev4_cb,
&loc3_cb,
&loc1_cb,
&loc4_cb,
&loc2_cb,
&loc5_cb,
];
let gain_xlats = [
None,
Some(&npoints2_xlat[..]),
Some(&lev1_xlat),
Some(&lev2_xlat),
Some(&lev3_xlat),
Some(&lev4_xlat),
Some(&loc3_xlat),
Some(&loc1_xlat),
Some(&loc4_xlat),
Some(&loc2_xlat),
Some(&loc5_xlat),
];
let mut tabs: Vec<Box<[ReadHuffmanTree<BigEndian, u16>]>> = vec![];
for i in 0..11 {
let tab = build_canonical_huff(gain_cbs[i], gain_xlats[i]);
tabs.push(tab);
}
tabs
};
pub(crate) static ref TONE_VLC_TABS: Vec<Box<[ReadHuffmanTree<BigEndian, u16>]>> = {
let tone_cbs = [
&tonebands_cb[..],
&numwavs1_cb,
&numwavs2_cb,
&wav_ampsf1_cb,
&wav_ampsf2_cb,
&wav_ampsf3_cb,
&freq_cb,
];
let tone_xlats = [
None,
None,
Some(&numwavs2_xlat[..]),
Some(&wav_ampsf1_xlat),
Some(&wav_ampsf2_xlat),
Some(&wav_ampsf3_xlat),
Some(&freq_xlat),
];
let mut tabs: Vec<Box<[ReadHuffmanTree<BigEndian, u16>]>> = vec![];
for i in 0..7 {
let tab = build_canonical_huff(tone_cbs[i], tone_xlats[i]);
tabs.push(tab);
}
tabs
};
pub(crate) static ref SINE_64: [f32; 64] = {
let mut window = [0.0; 64];
sine_window(&mut window, 64);
window
};
pub(crate) static ref SINE_128: [f32; 128] = {
let mut window = [0.0; 128];
sine_window(&mut window, 128);
window
};
pub(crate) static ref SINE_TABLE: [f32; 2048] = {
let mut sine_table = [0.0f32; 2048];
for i in 0..2048 {
sine_table[i] = ((std::f32::consts::PI * 2.0) * i as f32 / 2048.0).sin()
}
sine_table
};
pub(crate) static ref HANN_WINDOW: [f32; 256] = {
let mut hann_window = [0.0f32; 256];
for i in 0..256 {
hann_window[i] = (1.0 - ((std::f32::consts::PI * 2.0) * i as f32 / 256.0).cos()) * 0.5;
}
hann_window
};
pub(crate) static ref AMP_SF_TAB: [f32; 64] = {
let mut amp_sf_tab = [0.0f32; 64];
for i in 0..64 {
amp_sf_tab[i] = ((i as f32 - 3.0) / 4.0).exp2()
}
amp_sf_tab
};
}
fn sine_window(window: &mut [f32], n: usize) {
for i in 0..n {
window[i] = ((i as f32 + 0.5) * (std::f32::consts::PI / (2.0 * n as f32))).sin()
}
}
static npoints1_cb: [u16; 9] = [1, 7, 1, 1, 1, 1, 1, 1, 2];
static npoints2_xlat: [u16; 8] = [0, 1, 7, 2, 6, 3, 4, 5];
static lev1_cb: [u16; 9] = [1, 7, 1, 0, 2, 2, 1, 2, 8];
static lev1_xlat: [u16; 16] = [7, 5, 8, 6, 9, 4, 10, 11, 0, 1, 2, 3, 12, 13, 14, 15];
static lev2_cb: [u16; 11] = [1, 9, 1, 1, 1, 1, 1, 0, 2, 0, 8];
static lev2_xlat: [u16; 15] = [15, 14, 1, 13, 2, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11];
static lev3_cb: [u16; 11] = [1, 9, 1, 0, 3, 1, 1, 0, 2, 0, 8];
static lev3_xlat: [u16; 16] = [0, 1, 14, 15, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11];
static lev4_cb: [u16; 11] = [1, 9, 1, 1, 1, 1, 1, 0, 1, 2, 8];
static lev4_xlat: [u16; 16] = [0, 1, 15, 14, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11];
static loc1_cb: [u16; 9] = [2, 8, 1, 2, 4, 4, 4, 0, 16];
static loc1_xlat: [u16; 31] = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31,
];
static loc2_cb: [u16; 8] = [3, 8, 5, 3, 2, 3, 2, 16];
static loc2_xlat: [u16; 31] = [
2, 3, 4, 5, 6, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31,
];
static loc3_cb: [u16; 7] = [2, 6, 1, 0, 2, 11, 18];
static loc3_xlat: [u16; 32] = [
0, 1, 31, 2, 3, 4, 5, 6, 7, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25,
];
static loc4_cb: [u16; 5] = [4, 6, 3, 23, 6];
static loc4_xlat: [u16; 32] = [
0, 28, 29, 1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30,
31, 5, 6, 7, 8, 9, 10,
];
static loc5_cb: [u16; 9] = [1, 7, 1, 0, 0, 3, 2, 6, 20];
static loc5_xlat: [u16; 32] = [
0, 1, 2, 31, 3, 4, 5, 6, 7, 8, 29, 30, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28,
];
static tonebands_cb: [u16; 8] = [1, 6, 1, 0, 1, 2, 4, 8];
static numwavs1_cb: [u16; 9] = [1, 7, 1, 1, 1, 1, 1, 1, 2];
static numwavs2_cb: [u16; 8] = [1, 6, 1, 1, 1, 1, 0, 4];
static numwavs2_xlat: [u16; 8] = [0, 1, 7, 2, 3, 4, 5, 6];
static wav_ampsf1_cb: [u16; 7] = [4, 8, 10, 8, 6, 0, 8];
static wav_ampsf1_xlat: [u16; 32] = [
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 5, 6, 7, 18, 19, 20, 21, 22, 4, 23, 24, 25, 26, 27, 0, 1,
2, 3, 28, 29, 30, 31,
];
static wav_ampsf2_cb: [u16; 7] = [4, 8, 11, 5, 6, 6, 4];
static wav_ampsf2_xlat: [u16; 32] = [
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 14, 15, 16, 17, 29, 9, 10, 11, 12, 13, 30, 4, 5, 6,
7, 8, 31, 0, 1, 2, 3,
];
static wav_ampsf3_cb: [u16; 9] = [2, 8, 1, 3, 3, 1, 4, 4, 16];
static wav_ampsf3_xlat: [u16; 32] = [
0, 1, 2, 31, 3, 29, 30, 4, 5, 6, 27, 28, 7, 24, 25, 26, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23,
];
static freq_cb: [u16; 13] = [1, 11, 1, 0, 0, 2, 2, 0, 9, 9, 29, 104, 100];
static freq_xlat: [u16; 256] = [
0, 1, 255, 2, 254, 3, 4, 5, 6, 7, 8, 251, 252, 253, 9, 10, 11, 12, 246, 247, 248, 249, 250, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 243, 244, 245, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 194, 195, 196, 197, 198, 199, 200, 201, 202,
203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
241, 242, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193,
];
fn build_huffman<T: Clone + Copy + std::fmt::Debug + One + Zero + std::ops::AddAssign>(
codes: &[T],
bits: &[u8],
xlat: Option<&[T]>,
) -> Box<[ReadHuffmanTree<BigEndian, T>]> {
let mut tree = vec![];
let mut _idx = T::zero();
for idx in 0..codes.len() {
let code = [codes[idx]];
let num_bits = bits[idx];
if num_bits == 0 {
continue;
}
let xlat = if let Some(xlat) = xlat {
xlat[idx]
} else {
_idx
};
let slice = unsafe {
std::slice::from_raw_parts(code.as_ptr() as *const u8, std::mem::size_of_val(&code))
};
let mut bitreader: BitReader<&[u8], LittleEndian> = BitReader::new(slice);
let mut bit_vec = vec![];
for _ in 0..num_bits {
let bit = bitreader.read::<u8>(1).unwrap() as u8;
bit_vec.insert(0, bit);
}
tree.push((xlat, bit_vec));
_idx += T::one();
}
compile_read_tree::<BigEndian, T>(tree).unwrap()
}
pub(crate) static QU_NUM_TO_SEG: [u8; 32] = [
0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
];
pub(crate) static QU_TO_SUBBAND: [u8; 32] = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15,
];
pub(crate) static WL_SHAPES: [[[i16; 9]; 16]; 8] = [
[
[0, 0, 0, 0, 0, 0, 0, -2, -1],
[0, 0, 0, 0, 0, 0, 0, -5, -1],
[0, 0, 0, -7, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, -7, 0, 0, 0],
[0, 0, 0, 0, 0, 0, -5, 0, 0],
[0, 0, 0, 0, -5, 0, 0, 0, 0],
[-7, -7, 0, 0, 0, 0, 0, 0, 0],
[0, -7, 0, 0, 0, 0, 0, 0, 0],
[-2, -2, -5, 0, 0, 0, 0, 0, 0],
[0, 0, 0, -2, -5, 0, 0, 0, 0],
[0, 0, 0, 0, 0, -2, -5, 0, 0],
[0, 0, 0, -5, 0, 0, 0, 0, 0],
[0, -2, -7, -2, 0, 0, 0, 0, 0],
[0, 0, 0, 0, -2, -5, 0, 0, 0],
[0, 0, 0, -5, -5, 0, 0, 0, 0],
[0, 0, 0, -5, -2, 0, 0, 0, 0],
],
[
[-1, -5, -3, -2, -1, -1, 0, 0, 0],
[-2, -5, -3, -3, -2, -1, -1, 0, 0],
[0, -1, -1, -1, 0, 0, 0, 0, 0],
[-1, -3, 0, 0, 0, 0, 0, 0, 0],
[-1, -2, 0, 0, 0, 0, 0, 0, 0],
[-1, -3, -1, 0, 0, 0, 0, 1, 1],
[-1, -5, -3, -3, -2, -1, 0, 0, 0],
[-1, -1, -4, -2, -2, -1, -1, 0, 0],
[-1, -1, -3, -2, -3, -1, -1, -1, 0],
[-1, -4, -2, -3, -1, 0, 0, 0, 0],
[0, -1, -2, -2, -1, -1, 0, 0, 0],
[0, -2, -1, 0, 0, 0, 0, 0, 0],
[-1, -1, 0, 0, 0, 0, 0, 0, 0],
[-1, -1, -3, -2, -2, -1, -1, -1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, -1, -3, -2, -2, -1, -1, -1, 0],
],
[
[-1, -2, 0, 1, 1, 1, 1, 1, 1],
[0, -1, 1, 1, 1, 1, 1, 1, 1],
[0, -2, 1, 1, 1, 1, 1, 1, 1],
[0, -2, 0, 1, 1, 1, 1, 1, 1],
[-1, -1, 0, 1, 1, 1, 1, 1, 1],
[0, 0, -1, 0, 1, 1, 1, 1, 1],
[-1, -1, 1, 1, 1, 1, 1, 1, 1],
[0, 0, -1, 1, 1, 1, 1, 1, 1],
[0, -1, 0, 1, 1, 1, 1, 1, 1],
[-1, -1, -1, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 1, 1, 1, 1, 1],
[0, 0, 0, 1, 1, 1, 1, 1, 1],
[0, -1, -1, 1, 1, 1, 1, 1, 1],
[0, 1, 0, 1, 1, 1, 1, 1, 1],
[0, -3, -2, 1, 1, 1, 1, 2, 2],
[-3, -5, -3, 2, 2, 2, 2, 2, 2],
],
[
[-1, -2, 0, 2, 2, 2, 2, 2, 2],
[-1, -2, 0, 1, 2, 2, 2, 2, 2],
[0, -2, 0, 2, 2, 2, 2, 2, 2],
[-1, 0, 1, 2, 2, 2, 2, 2, 2],
[0, 0, 1, 2, 2, 2, 2, 2, 2],
[0, -2, 0, 1, 2, 2, 2, 2, 2],
[0, -1, 1, 2, 2, 2, 2, 2, 2],
[-1, -1, 0, 2, 2, 2, 2, 2, 2],
[-1, -1, 0, 1, 2, 2, 2, 2, 2],
[-1, -2, -1, 2, 2, 2, 2, 2, 2],
[0, -1, 0, 2, 2, 2, 2, 2, 2],
[1, 1, 0, 1, 2, 2, 2, 2, 2],
[0, 1, 2, 2, 2, 2, 2, 2, 2],
[1, 0, 0, 1, 2, 2, 2, 2, 2],
[0, 0, 0, 1, 2, 2, 2, 2, 2],
[-1, -1, -1, 1, 2, 2, 2, 2, 2],
],
[
[0, 1, 2, 3, 3, 3, 3, 3, 3],
[1, 1, 2, 3, 3, 3, 3, 3, 3],
[-1, 0, 1, 2, 3, 3, 3, 3, 3],
[0, 0, 2, 3, 3, 3, 3, 3, 3],
[-1, 0, 1, 3, 3, 3, 3, 3, 3],
[0, 0, 1, 3, 3, 3, 3, 3, 3],
[1, 2, 3, 3, 3, 3, 3, 3, 3],
[1, 2, 2, 3, 3, 3, 3, 3, 3],
[0, 1, 1, 3, 3, 3, 3, 3, 3],
[0, 0, 1, 2, 3, 3, 3, 3, 3],
[-1, 1, 2, 3, 3, 3, 3, 3, 3],
[-1, 0, 2, 3, 3, 3, 3, 3, 3],
[2, 2, 3, 3, 3, 3, 3, 3, 3],
[1, 1, 3, 3, 3, 3, 3, 3, 3],
[0, 2, 3, 3, 3, 3, 3, 3, 3],
[0, 1, 1, 2, 3, 3, 3, 3, 3],
],
[
[0, 1, 2, 3, 4, 4, 4, 4, 4],
[1, 2, 3, 4, 4, 4, 4, 4, 4],
[0, 0, 2, 3, 4, 4, 4, 4, 4],
[1, 1, 2, 4, 4, 4, 4, 4, 4],
[0, 1, 2, 4, 4, 4, 4, 4, 4],
[-1, 0, 1, 3, 4, 4, 4, 4, 4],
[0, 0, 1, 3, 4, 4, 4, 4, 4],
[1, 1, 2, 3, 4, 4, 4, 4, 4],
[0, 1, 1, 3, 4, 4, 4, 4, 4],
[2, 2, 3, 4, 4, 4, 4, 4, 4],
[1, 1, 3, 4, 4, 4, 4, 4, 4],
[1, 2, 2, 4, 4, 4, 4, 4, 4],
[-1, 0, 2, 3, 4, 4, 4, 4, 4],
[0, 1, 3, 4, 4, 4, 4, 4, 4],
[1, 2, 2, 3, 4, 4, 4, 4, 4],
[0, 2, 3, 4, 4, 4, 4, 4, 4],
],
[
[1, 2, 3, 4, 5, 5, 5, 5, 5],
[0, 1, 2, 3, 4, 5, 5, 5, 5],
[0, 1, 2, 3, 5, 5, 5, 5, 5],
[1, 1, 3, 4, 5, 5, 5, 5, 5],
[1, 1, 2, 4, 5, 5, 5, 5, 5],
[1, 2, 2, 4, 5, 5, 5, 5, 5],
[1, 1, 2, 3, 5, 5, 5, 5, 5],
[2, 2, 3, 4, 5, 5, 5, 5, 5],
[0, 1, 2, 4, 5, 5, 5, 5, 5],
[2, 2, 3, 5, 5, 5, 5, 5, 5],
[1, 2, 3, 5, 5, 5, 5, 5, 5],
[0, 1, 3, 4, 5, 5, 5, 5, 5],
[1, 2, 2, 3, 5, 5, 5, 5, 5],
[2, 3, 4, 5, 5, 5, 5, 5, 5],
[0, 2, 3, 4, 5, 5, 5, 5, 5],
[1, 1, 1, 3, 4, 5, 5, 5, 5],
],
[
[1, 2, 3, 4, 5, 5, 5, 6, 6],
[1, 2, 3, 4, 5, 6, 6, 6, 6],
[2, 3, 4, 5, 6, 6, 6, 6, 6],
[1, 2, 3, 4, 6, 6, 6, 6, 6],
[2, 2, 3, 4, 5, 5, 5, 6, 6],
[1, 2, 3, 4, 5, 5, 6, 6, 6],
[2, 2, 3, 4, 6, 6, 6, 6, 6],
[2, 2, 3, 4, 5, 6, 6, 6, 6],
[2, 2, 4, 5, 6, 6, 6, 6, 6],
[2, 2, 3, 5, 6, 6, 6, 6, 6],
[1, 2, 3, 5, 6, 6, 6, 6, 6],
[2, 3, 3, 5, 6, 6, 6, 6, 6],
[1, 2, 4, 5, 6, 6, 6, 6, 6],
[2, 2, 3, 4, 5, 5, 6, 6, 6],
[2, 3, 3, 4, 6, 6, 6, 6, 6],
[1, 3, 4, 5, 6, 6, 6, 6, 6],
],
];
pub(crate) static SF_SHAPES: [[i16; 9]; 64] = [
[-3, -2, -1, 0, 3, 5, 6, 8, 40],
[-3, -2, 0, 1, 7, 9, 11, 13, 20],
[-1, 0, 0, 1, 6, 8, 10, 13, 41],
[0, 0, 0, 2, 5, 5, 6, 8, 14],
[0, 0, 0, 2, 6, 7, 8, 11, 47],
[0, 0, 1, 2, 5, 7, 8, 10, 32],
[0, 0, 1, 3, 8, 10, 12, 14, 47],
[0, 0, 2, 4, 9, 10, 12, 14, 40],
[0, 0, 3, 5, 9, 10, 12, 14, 22],
[0, 1, 3, 5, 10, 14, 18, 22, 31],
[0, 2, 5, 6, 10, 10, 10, 12, 46],
[0, 2, 5, 7, 12, 14, 15, 18, 44],
[1, 1, 4, 5, 7, 7, 8, 9, 15],
[1, 2, 2, 2, 4, 5, 7, 9, 26],
[1, 2, 2, 3, 6, 7, 7, 8, 47],
[1, 2, 2, 3, 6, 8, 10, 13, 22],
[1, 3, 4, 7, 13, 17, 21, 24, 41],
[1, 4, 0, 4, 10, 12, 13, 14, 17],
[2, 3, 3, 3, 6, 8, 10, 13, 48],
[2, 3, 3, 4, 9, 12, 14, 17, 47],
[2, 3, 3, 5, 10, 12, 14, 17, 25],
[2, 3, 5, 7, 8, 9, 9, 9, 13],
[2, 3, 5, 9, 16, 21, 25, 28, 33],
[2, 4, 5, 8, 12, 14, 17, 19, 26],
[2, 4, 6, 8, 12, 13, 13, 15, 20],
[2, 4, 7, 12, 20, 26, 30, 32, 35],
[3, 3, 5, 6, 12, 14, 16, 19, 34],
[3, 4, 4, 5, 7, 9, 10, 11, 48],
[3, 4, 5, 6, 8, 9, 10, 11, 16],
[3, 5, 5, 5, 7, 9, 10, 13, 35],
[3, 5, 5, 7, 10, 12, 13, 15, 49],
[3, 5, 7, 7, 8, 7, 9, 12, 21],
[3, 5, 7, 8, 12, 14, 15, 15, 24],
[3, 5, 7, 10, 16, 21, 24, 27, 44],
[3, 5, 8, 14, 21, 26, 28, 29, 42],
[3, 6, 10, 13, 18, 19, 20, 22, 27],
[3, 6, 11, 16, 24, 27, 28, 29, 31],
[4, 5, 4, 3, 4, 6, 8, 11, 18],
[4, 6, 5, 6, 9, 10, 12, 14, 20],
[4, 6, 7, 6, 6, 6, 7, 8, 46],
[4, 6, 7, 9, 13, 16, 18, 20, 48],
[4, 6, 7, 9, 14, 17, 20, 23, 31],
[4, 6, 9, 11, 14, 15, 15, 17, 21],
[4, 8, 13, 20, 27, 32, 35, 36, 38],
[5, 6, 6, 4, 5, 6, 7, 6, 6],
[5, 7, 7, 8, 9, 9, 10, 12, 49],
[5, 8, 9, 9, 10, 11, 12, 13, 42],
[5, 8, 10, 12, 15, 16, 17, 19, 42],
[5, 8, 12, 17, 26, 31, 32, 33, 44],
[5, 9, 13, 16, 20, 22, 23, 23, 35],
[6, 8, 8, 7, 6, 5, 6, 8, 15],
[6, 8, 8, 8, 9, 10, 12, 16, 24],
[6, 8, 8, 9, 10, 10, 11, 11, 13],
[6, 8, 10, 13, 19, 21, 24, 26, 32],
[6, 9, 10, 11, 13, 13, 14, 16, 49],
[7, 9, 9, 10, 13, 14, 16, 19, 27],
[7, 10, 12, 13, 16, 16, 17, 17, 27],
[7, 10, 12, 14, 17, 19, 20, 22, 48],
[8, 9, 10, 9, 10, 11, 11, 11, 19],
[8, 11, 12, 12, 13, 13, 13, 13, 17],
[8, 11, 13, 14, 16, 17, 19, 20, 27],
[8, 12, 17, 22, 26, 28, 29, 30, 33],
[10, 14, 16, 19, 21, 22, 22, 24, 28],
[10, 15, 17, 18, 21, 22, 23, 25, 43],
];
pub(crate) static WL_WEIGHTS: [[u8; 32]; 6] = [
[
5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
[
5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
[
6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0,
],
[
5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
[
5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
[
6, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
];
pub(crate) static SF_WEIGHTS: [[u8; 32]; 2] = [
[
0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,
14, 14, 15, 15,
],
[
0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,
10, 10,
],
];
pub(crate) const QU_TO_SPEC_POS: [u16; 33] = [
0, 16, 32, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256, 288, 320, 352, 384, 448, 512, 576,
640, 704, 768, 896, 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, 2048,
];
pub(crate) const SF_TAB: [f32; 64] = [
0.027852058,
0.0350914,
0.044212341,
0.055704117,
0.0701828,
0.088424683,
0.11140823,
0.1403656,
0.17684937,
0.22281647,
0.2807312,
0.35369873,
0.44563293,
0.5614624,
0.70739746,
0.89126587,
1.1229248,
1.4147949,
1.7825317,
2.2458496,
2.8295898,
3.5650635,
4.4916992,
5.6591797,
7.130127,
8.9833984,
11.318359,
14.260254,
17.966797,
22.636719,
28.520508,
35.933594,
45.273438,
57.041016,
71.867188,
90.546875,
114.08203,
143.73438,
181.09375,
228.16406,
287.46875,
362.1875,
456.32812,
574.9375,
724.375,
912.65625,
1149.875,
1448.75,
1825.3125,
2299.75,
2897.5,
3650.625,
4599.5,
5795.0,
7301.25,
9199.0,
11590.0,
14602.5,
18398.0,
23180.0,
29205.0,
36796.0,
46360.0,
58410.0,
];
pub(crate) const MANT_TAB: [f32; 8] = [
0.0,
0.74801636,
0.44882202,
0.32058716,
0.20400238,
0.1496048,
0.07239151,
0.035619736,
];
pub(crate) const SUBBAND_TO_POWGRP: [u8; SUBBANDS] =
[0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];
pub(crate) const CT_RESTRICTED_TO_FULL: [[[u8; 4]; 7]; 2] = [
[
[0, 5, 4, 1],
[0, 1, 2, 3],
[3, 0, 4, 2],
[4, 0, 1, 2],
[1, 0, 4, 3],
[3, 0, 2, 1],
[0, 3, 1, 2],
],
[
[4, 0, 1, 2],
[0, 3, 2, 1],
[0, 1, 2, 3],
[0, 1, 2, 4],
[0, 1, 2, 3],
[1, 4, 2, 0],
[0, 1, 2, 3],
],
];
pub(crate) const SUBBAND_TO_NUM_POWGRPS: [u8; 16] =
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5];
pub(crate) static huff_a01_cb: [u16; 14] = [1, 12, 1, 0, 0, 1, 7, 0, 19, 5, 13, 21, 6, 8];
pub(crate) static huff_a01_xlat: [u16; 81] = [
0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70, 0xF0, 0xC4, 0x14, 0x34,
0x4C, 0x1C, 0x3C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0xC3, 0x13, 0x07, 0x0F, 0x44, 0xCC, 0x11, 0x43,
0x33, 0x54, 0x74, 0xDC, 0xFC, 0x71, 0x15, 0x4D, 0xCD, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4,
0x5C, 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xDD, 0x3D, 0x53, 0x73, 0xF3, 0x47, 0x17, 0x77,
0x4F, 0xCF, 0x1F, 0x55, 0xF5, 0x7D, 0xD7, 0x5F, 0xFF, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF,
0x7F,
];
pub(crate) static huff_a02_cb: [u16; 13] = [2, 12, 1, 0, 4, 11, 0, 1, 29, 6, 20, 7, 2];
pub(crate) static huff_a02_xlat: [u16; 81] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x90, 0x80, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64, 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x85,
0x95, 0x65, 0x09, 0x49, 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0x88, 0x61,
0x25, 0x29, 0x69, 0x5A, 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x89, 0x99, 0xA9, 0x82, 0x92,
0x22, 0x62, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x1A, 0xA8, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0x6A, 0xA2,
0xAA,
];
pub(crate) static huff_a03_cb: [u16; 9] = [3, 9, 1, 8, 0, 13, 18, 7, 2];
pub(crate) static huff_a03_xlat: [u16; 49] = [
0x00, 0x08, 0x38, 0x01, 0x09, 0x39, 0x07, 0x0F, 0x3F, 0x10, 0x30, 0x11, 0x31, 0x02, 0x0A, 0x3A,
0x05, 0x06, 0x0E, 0x3E, 0x17, 0x37, 0x18, 0x28, 0x19, 0x29, 0x2A, 0x32, 0x03, 0x0B, 0x33, 0x3B,
0x0D, 0x15, 0x3D, 0x16, 0x1E, 0x36, 0x1F, 0x2F, 0x12, 0x1A, 0x13, 0x2B, 0x1D, 0x35, 0x2E, 0x1B,
0x2D,
];
pub(crate) static huff_a04_cb: [u16; 4] = [2, 3, 2, 4];
pub(crate) static huff_a04_xlat: [u16; 6] = [1, 2, 0, 3, 4, 5];
pub(crate) static huff_a05_cb: [u16; 12] = [3, 12, 1, 3, 5, 8, 12, 23, 72, 68, 31, 2];
pub(crate) static huff_a05_xlat: [u16; 225] = [
0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0xE1, 0x02, 0xF2, 0x0E, 0x1E,
0x2F, 0x30, 0xD0, 0x21, 0x12, 0x22, 0xE2, 0x03, 0x0D, 0x2E, 0xEE, 0xFE, 0xEF, 0x40, 0xC0, 0x31,
0xC1, 0xD1, 0x32, 0xD2, 0x13, 0x23, 0xE3, 0xF3, 0x04, 0xF4, 0x0C, 0x1C, 0x1D, 0x2D, 0xED, 0xFD,
0x3E, 0xDE, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xA0, 0xB0, 0x41, 0x51, 0x61, 0x71, 0x91, 0xA1,
0xB1, 0x42, 0x62, 0x92, 0xA2, 0xC2, 0x33, 0xC3, 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4, 0x05, 0x15,
0xF5, 0x06, 0x16, 0x26, 0xE6, 0xF6, 0x07, 0x17, 0xE7, 0xF7, 0x09, 0x19, 0x29, 0xF9, 0x0A, 0x1A,
0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x2C, 0x3C, 0xDC, 0xEC, 0xFC, 0x3D, 0x4D, 0xCD, 0xDD, 0x4E,
0x6E, 0x7E, 0xAE, 0xCE, 0x4F, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0x72, 0xB2, 0x43,
0x53, 0x63, 0x73, 0x93, 0xA3, 0xB3, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4, 0x25, 0x35, 0xA5,
0xC5, 0xD5, 0xE5, 0x36, 0x46, 0xB6, 0xC6, 0xD6, 0x27, 0x37, 0x47, 0xB7, 0xC7, 0xD7, 0x39, 0x49,
0x59, 0xC9, 0xD9, 0xE9, 0x3A, 0x4A, 0x5A, 0xCA, 0xDA, 0x2B, 0x3B, 0x4B, 0x6B, 0x7B, 0xDB, 0xEB,
0x4C, 0x5C, 0x6C, 0x7C, 0x9C, 0xAC, 0xCC, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0x5E, 0x9E, 0xBE,
0x54, 0x45, 0x55, 0x65, 0x75, 0x95, 0xB5, 0x56, 0x66, 0x76, 0x96, 0xA6, 0x57, 0x67, 0x97, 0xA7,
0x69, 0x79, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0x5B, 0x9B, 0xAB, 0xBB, 0xCB, 0xBC, 0x77,
0x99,
];
pub(crate) static huff_a06_cb: [u16; 7] = [2, 6, 1, 3, 2, 6, 4];
pub(crate) static huff_a06_xlat: [u16; 16] = [1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 10, 11, 12, 15];
pub(crate) static huff_a07_cb: [u16; 11] = [2, 10, 1, 2, 2, 2, 6, 14, 21, 13, 2];
pub(crate) static huff_a07_xlat: [u16; 63] = [
0, 1, 63, 2, 62, 3, 61, 4, 5, 6, 58, 59, 60, 7, 8, 9, 10, 26, 27, 28, 36, 37, 38, 54, 55, 56,
57, 11, 12, 13, 14, 15, 16, 25, 29, 30, 31, 33, 34, 35, 39, 47, 48, 49, 50, 51, 52, 53, 17, 18,
19, 20, 21, 22, 23, 41, 42, 43, 44, 45, 46, 24, 40,
];
pub(crate) static huff_a11_cb: [u16; 13] = [1, 11, 1, 0, 0, 0, 8, 1, 18, 9, 22, 10, 12];
pub(crate) static huff_a11_xlat: [u16; 81] = [
0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x50, 0x70, 0xF0, 0xC4, 0x34, 0x4C,
0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43, 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC,
0x3C, 0x11, 0x1D, 0x33, 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0x15, 0x35,
0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x3F, 0x51, 0x45, 0xC5, 0x55, 0x53,
0xF3, 0x4F, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF,
0x7F,
];
pub(crate) static huff_a12_cb: [u16; 8] = [5, 10, 16, 11, 32, 19, 1, 2];
pub(crate) static huff_a12_xlat: [u16; 81] = [
0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x90, 0x94, 0x58, 0x91, 0x95, 0x19, 0x59, 0x06, 0x46, 0x16, 0x56, 0x80, 0x60, 0x84, 0x24, 0x64,
0xA4, 0x08, 0x48, 0x18, 0x68, 0x81, 0x21, 0x61, 0xA1, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49, 0x99,
0x69, 0xA9, 0x02, 0x42, 0x12, 0x52, 0x96, 0x26, 0x66, 0x1A, 0x5A, 0x20, 0xA0, 0x88, 0x98, 0x28,
0xA8, 0x89, 0x29, 0x82, 0x92, 0x22, 0x62, 0x86, 0xA6, 0x0A, 0x4A, 0x9A, 0x6A, 0xAA, 0xA2, 0x8A,
0x2A,
];
pub(crate) static huff_a13_cb: [u16; 12] = [1, 10, 1, 0, 0, 4, 2, 2, 9, 15, 12, 4];
pub(crate) static huff_a13_xlat: [u16; 49] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x3E, 0x17, 0x18, 0x28, 0x11, 0x29, 0x0A, 0x32, 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x16, 0x1F,
0x37, 0x19, 0x12, 0x1A, 0x2A, 0x13, 0x33, 0x15, 0x35, 0x1E, 0x2E, 0x36, 0x2F, 0x1B, 0x2B, 0x1D,
0x2D,
];
pub(crate) static huff_a14_cb: [u16; 12] = [2, 11, 1, 0, 4, 3, 5, 16, 28, 34, 26, 4];
pub(crate) static huff_a14_xlat: [u16; 121] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02, 0x0E, 0x30, 0x50, 0xB0,
0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31,
0x51, 0xB1, 0xC1, 0xD1, 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42, 0xB2, 0xD2, 0x23, 0x53,
0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35, 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC,
0xEC, 0xFC, 0x2D, 0xBD, 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0x3D,
0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B, 0xBB,
];
pub(crate) static huff_a15_cb: [u16; 9] = [5, 11, 9, 12, 16, 44, 98, 42, 4];
pub(crate) static huff_a15_xlat: [u16; 225] = [
0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0x21, 0xE1, 0x02, 0x12, 0xF2,
0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0xD0, 0x31, 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D,
0xFD, 0x2E, 0xEE, 0x3F, 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x41, 0xC1, 0x32, 0x42, 0xC2,
0xD2, 0x23, 0x33, 0xD3, 0xE3, 0x04, 0x14, 0x24, 0xE4, 0xF4, 0x06, 0x16, 0xF6, 0x07, 0x09, 0x0A,
0x1A, 0xFA, 0x0C, 0x1C, 0x2C, 0xEC, 0xFC, 0x2D, 0x3D, 0xDD, 0xED, 0x3E, 0x4E, 0xCE, 0xDE, 0x4F,
0xCF, 0x50, 0xB0, 0x51, 0x61, 0x71, 0x91, 0xA1, 0xB1, 0x52, 0x62, 0x72, 0x92, 0xA2, 0xB2, 0x43,
0x53, 0x63, 0x73, 0x93, 0xA3, 0xC3, 0x34, 0x44, 0x64, 0xA4, 0xC4, 0xD4, 0x05, 0x15, 0x25, 0x35,
0xD5, 0xE5, 0xF5, 0x26, 0x36, 0x46, 0xC6, 0xD6, 0xE6, 0x17, 0x27, 0x37, 0xC7, 0xD7, 0xE7, 0xF7,
0x19, 0x29, 0x39, 0xC9, 0xD9, 0xE9, 0xF9, 0x2A, 0x3A, 0x4A, 0x5A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B,
0x2B, 0x3B, 0xCB, 0xDB, 0xEB, 0xFB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0x4D,
0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x5E, 0x6E, 0x7E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F,
0x9F, 0xAF, 0xBF, 0xB3, 0x54, 0x74, 0x94, 0xB4, 0x45, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5,
0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0x47, 0x57, 0x67, 0xA7, 0xB7, 0x49, 0x59, 0x69, 0xA9, 0xB9,
0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0x4B, 0x5B, 0x6B, 0x7B, 0x9B, 0xAB, 0xBB, 0x5C, 0x77, 0x97, 0x79,
0x99,
];
pub(crate) static huff_a16_cb: [u16; 13] = [2, 12, 1, 1, 2, 2, 5, 7, 21, 54, 85, 62, 16];
pub(crate) static huff_a16_xlat: [u16; 256] = [
0x00, 0x01, 0x10, 0x11, 0x21, 0x12, 0x20, 0x31, 0x02, 0x22, 0x13, 0x30, 0x41, 0x32, 0x03, 0x23,
0x14, 0x24, 0x40, 0x51, 0x61, 0xD1, 0xE1, 0x42, 0x52, 0xD2, 0x33, 0x43, 0xD3, 0x04, 0x34, 0x05,
0x15, 0x25, 0x16, 0x1D, 0x2D, 0x1E, 0x2E, 0x50, 0x60, 0xD0, 0xE0, 0xF0, 0x71, 0x81, 0xF1, 0x62,
0x72, 0xE2, 0xF2, 0x53, 0x63, 0xE3, 0xF3, 0x44, 0x54, 0xD4, 0xE4, 0xF4, 0x35, 0x45, 0x55, 0xD5,
0xE5, 0xF5, 0x06, 0x26, 0x36, 0xD6, 0x07, 0x17, 0x27, 0x37, 0xD7, 0x18, 0x28, 0x1C, 0x0D, 0x3D,
0x4D, 0x5D, 0x6D, 0x8D, 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x1F, 0x2F, 0x3F, 0x5F, 0x70, 0x80, 0x90,
0xC0, 0x91, 0xA1, 0xB1, 0xC1, 0x82, 0x92, 0xA2, 0xC2, 0x73, 0x83, 0x93, 0xA3, 0xC3, 0x64, 0x74,
0x84, 0x94, 0xA4, 0xC4, 0x65, 0x75, 0x85, 0x46, 0x56, 0x66, 0xC6, 0xE6, 0xF6, 0x47, 0x57, 0xE7,
0xF7, 0x08, 0x38, 0x48, 0x58, 0x68, 0xD8, 0xE8, 0xF8, 0x09, 0x19, 0x29, 0x39, 0x59, 0xD9, 0xE9,
0xF9, 0x1A, 0x2A, 0x3A, 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0xDB, 0xEB, 0xFB, 0x0C, 0x2C, 0x3C, 0xDC,
0xEC, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x4F, 0x6F, 0x7F,
0x8F, 0xAF, 0xA0, 0xB2, 0xB3, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0x76, 0x86, 0x96, 0xA6, 0xB6, 0x67,
0x77, 0x87, 0x97, 0xC7, 0x78, 0x88, 0x98, 0xC8, 0x49, 0x69, 0x79, 0x89, 0x99, 0xC9, 0x0A, 0x4A,
0x5A, 0x6A, 0x7A, 0xCA, 0x0B, 0x3B, 0x4B, 0x5B, 0x6B, 0xCB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C,
0xAC, 0xBC, 0xCC, 0xFC, 0xDD, 0xED, 0xFD, 0xDE, 0xEE, 0xFE, 0x9F, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
0xB0, 0xA7, 0xB7, 0xA8, 0xB8, 0xA9, 0xB9, 0x8A, 0x9A, 0xAA, 0xBA, 0x7B, 0x8B, 0x9B, 0xAB, 0xBB,
];
pub(crate) static huff_a17_cb: [u16; 9] = [3, 9, 3, 2, 5, 7, 17, 23, 6];
pub(crate) static huff_a17_xlat: [u16; 63] = [
0, 1, 63, 2, 62, 3, 4, 59, 60, 61, 5, 6, 7, 8, 56, 57, 58, 9, 10, 11, 12, 13, 14, 26, 27, 36,
37, 38, 50, 51, 52, 53, 54, 55, 15, 16, 17, 18, 19, 20, 21, 25, 28, 29, 30, 31, 33, 34, 35, 39,
43, 44, 45, 46, 47, 48, 49, 22, 23, 24, 40, 41, 42,
];
pub(crate) static huff_a21_cb: [u16; 14] = [1, 12, 1, 0, 0, 2, 6, 0, 7, 21, 15, 17, 8, 4];
pub(crate) static huff_a21_xlat: [u16; 81] = [
0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x70, 0x34, 0x1C, 0x0D, 0x13, 0x07,
0x50, 0xF0, 0x44, 0xC4, 0x14, 0x74, 0x4C, 0xCC, 0xDC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x05, 0x1D,
0x43, 0xC3, 0x33, 0x37, 0x0F, 0x54, 0xF4, 0xFC, 0xD1, 0x71, 0x15, 0x4D, 0xCD, 0xDD, 0xD3, 0x73,
0x47, 0xC7, 0x77, 0x3F, 0xD4, 0x5C, 0x7C, 0x51, 0xF1, 0x45, 0xC5, 0x55, 0x35, 0x3D, 0x53, 0xF3,
0x17, 0x4F, 0xCF, 0x1F, 0xFF, 0x75, 0xF5, 0x5D, 0x7D, 0xD7, 0xF7, 0x5F, 0xDF, 0xD5, 0xFD, 0x57,
0x7F,
];
pub(crate) static huff_a22_cb: [u16; 10] = [2, 9, 1, 4, 0, 4, 3, 8, 3, 2];
pub(crate) static huff_a22_xlat: [u16; 25] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06, 0x30, 0x11, 0x31, 0x0A,
0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12, 0x36,
];
pub(crate) static huff_a23_cb: [u16; 9] = [3, 9, 5, 0, 4, 6, 10, 16, 8];
pub(crate) static huff_a23_xlat: [u16; 49] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x02, 0x3A, 0x06, 0x0E, 0x18,
0x28, 0x11, 0x31, 0x0A, 0x03, 0x05, 0x3E, 0x17, 0x37, 0x19, 0x29, 0x12, 0x2A, 0x32, 0x0B, 0x33,
0x3B, 0x0D, 0x15, 0x3D, 0x16, 0x1E, 0x36, 0x1F, 0x2F, 0x1A, 0x13, 0x1B, 0x2B, 0x1D, 0x2D, 0x35,
0x2E,
];
pub(crate) static huff_a24_cb: [u16; 5] = [2, 4, 3, 1, 2];
pub(crate) static huff_a25_cb: [u16; 5] = [2, 4, 1, 5, 2];
pub(crate) static huff_a25_xlat: [u16; 8] = [1, 0, 2, 3, 4, 5, 6, 7];
pub(crate) static huff_a26_cb: [u16; 10] = [4, 11, 3, 4, 12, 15, 34, 83, 75, 30];
pub(crate) static huff_a26_xlat: [u16; 256] = [
0x00, 0x01, 0x11, 0x10, 0x21, 0x12, 0x22, 0x20, 0x30, 0x31, 0x41, 0x02, 0x32, 0x03, 0x13, 0x23,
0x33, 0x14, 0x24, 0x40, 0x51, 0x61, 0x42, 0x52, 0x43, 0x53, 0x04, 0x34, 0x44, 0x15, 0x25, 0x35,
0x16, 0x26, 0x50, 0x60, 0x71, 0x81, 0xD1, 0x62, 0x72, 0x82, 0xD2, 0x63, 0x73, 0xD3, 0x54, 0x64,
0x05, 0x45, 0x55, 0x65, 0x06, 0x36, 0x46, 0x56, 0x17, 0x27, 0x37, 0x47, 0x18, 0x28, 0x38, 0x19,
0x1D, 0x2D, 0x3D, 0x1E, 0x70, 0x80, 0x90, 0xD0, 0xE0, 0x91, 0xA1, 0xB1, 0xC1, 0xE1, 0xF1, 0x92,
0xA2, 0xC2, 0xE2, 0xF2, 0x83, 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0xD4,
0xE4, 0xF4, 0x75, 0x85, 0x95, 0xD5, 0xE5, 0x66, 0x76, 0x86, 0xD6, 0xE6, 0x07, 0x57, 0x67, 0x77,
0xD7, 0x08, 0x48, 0x58, 0x68, 0xD8, 0x09, 0x29, 0x39, 0x49, 0x59, 0x69, 0x1A, 0x2A, 0x3A, 0x4A,
0x1B, 0x2B, 0x1C, 0x2C, 0x3C, 0x4C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x8D, 0x0E, 0x2E, 0x3E, 0x4E,
0x5E, 0x6E, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0xA0, 0xB0, 0xC0, 0xF0, 0xB2, 0xB3, 0xB4, 0xA5, 0xB5,
0xC5, 0xF5, 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xE7, 0xF7, 0x78, 0x88,
0x98, 0xA8, 0xC8, 0xE8, 0xF8, 0x79, 0x89, 0x99, 0xC9, 0xD9, 0xE9, 0xF9, 0x0A, 0x5A, 0x6A, 0x7A,
0x8A, 0xDA, 0xEA, 0xFA, 0x0B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xDB, 0x0C, 0x5C, 0x6C, 0x7C,
0x8C, 0x9C, 0xDC, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x6F, 0x7F, 0x8F,
0x9F, 0xAF, 0xB8, 0xA9, 0xB9, 0x9A, 0xAA, 0xBA, 0xCA, 0x9B, 0xAB, 0xBB, 0xCB, 0xEB, 0xFB, 0xAC,
0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
];
pub(crate) static huff_a27_cb: [u16; 7] = [4, 8, 3, 14, 10, 20, 16];
pub(crate) static huff_a27_xlat: [u16; 63] = [
0, 2, 3, 1, 5, 6, 7, 9, 54, 55, 56, 58, 59, 60, 61, 62, 63, 4, 8, 10, 11, 12, 14, 49, 52, 53,
57, 13, 15, 16, 17, 18, 19, 22, 23, 25, 26, 30, 39, 43, 44, 45, 46, 47, 48, 50, 51, 20, 21, 24,
27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 40, 41, 42,
];
pub(crate) static huff_a31_cb: [u16; 8] = [1, 6, 1, 0, 3, 1, 0, 4];
pub(crate) static huff_a31_xlat: [u16; 9] = [0x00, 0x04, 0x0C, 0x01, 0x03, 0x05, 0x0D, 0x07, 0x0F];
pub(crate) static huff_a32_cb: [u16; 13] = [1, 11, 1, 0, 0, 2, 2, 6, 12, 18, 19, 15, 6];
pub(crate) static huff_a32_xlat: [u16; 81] = [
0x00, 0x40, 0x01, 0x10, 0x04, 0x80, 0x50, 0x20, 0x14, 0x05, 0x02, 0x90, 0x60, 0x44, 0x54, 0x24,
0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0x06, 0xA0, 0x84, 0x94, 0x64, 0xA4, 0x48, 0x58, 0x28, 0x51,
0x21, 0x45, 0x55, 0x25, 0x19, 0x12, 0x16, 0x0A, 0x1A, 0x68, 0xA8, 0x81, 0x91, 0x61, 0xA1, 0x85,
0x95, 0x65, 0xA5, 0x49, 0x59, 0x29, 0x69, 0x42, 0x52, 0x46, 0x56, 0x2A, 0x88, 0x98, 0x89, 0x99,
0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 0x66, 0x4A, 0x5A, 0x6A, 0xA2, 0x96, 0xA6, 0x8A, 0x9A,
0xAA,
];
pub(crate) static huff_a33_cb: [u16; 12] = [3, 12, 1, 1, 13, 1, 14, 28, 33, 81, 32, 52];
pub(crate) static huff_a33_xlat: [u16; 256] = [
0x00, 0x10, 0x40, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x90, 0x20, 0x94, 0x64, 0x18, 0x21, 0x95, 0x19, 0x69, 0x02, 0x52, 0x06, 0x46, 0x16, 0x80, 0x60,
0x84, 0xD4, 0x24, 0x08, 0x48, 0x58, 0x68, 0x81, 0x91, 0x61, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49,
0x59, 0x29, 0x42, 0x12, 0x56, 0x96, 0xA6, 0x0A, 0x17, 0x1B, 0xD0, 0xC4, 0x74, 0xF4, 0x88, 0xC8,
0x28, 0xA1, 0x71, 0xC5, 0xD5, 0x75, 0x99, 0xB9, 0x4D, 0x1D, 0x2D, 0x6D, 0x22, 0x62, 0x66, 0x4A,
0x1A, 0x9A, 0x6A, 0x8E, 0x5E, 0x43, 0x23, 0x07, 0x47, 0x57, 0x6B, 0xC0, 0xA0, 0xE0, 0x70, 0xB0,
0xA4, 0xE4, 0x34, 0xB4, 0x98, 0xD8, 0xA8, 0x38, 0x78, 0x0C, 0x4C, 0x1C, 0x5C, 0x9C, 0x6C, 0x7C,
0xC1, 0xD1, 0xE1, 0x31, 0xE5, 0x35, 0xB5, 0xF5, 0x89, 0xA9, 0x79, 0xF9, 0x0D, 0xCD, 0x9D, 0xDD,
0xAD, 0x3D, 0x7D, 0x82, 0xC2, 0x92, 0xD2, 0xE2, 0x72, 0xF2, 0x86, 0xD6, 0xE6, 0x76, 0xB6, 0x8A,
0x5A, 0xDA, 0xEA, 0xFA, 0x4E, 0x1E, 0x9E, 0xEE, 0x03, 0x13, 0x53, 0x97, 0xB7, 0x0B, 0x4B, 0x8B,
0x5B, 0x9B, 0xEB, 0x7B, 0x0F, 0x4F, 0x1F, 0x5F, 0x9F, 0x2F, 0x3F, 0xBF, 0xE8, 0xB8, 0xF8, 0x8C,
0x2C, 0x3C, 0xFC, 0xB1, 0xC9, 0xD9, 0xE9, 0x39, 0x5D, 0xED, 0xBD, 0xA2, 0x32, 0x26, 0x36, 0x2A,
0xAA, 0xBA, 0x0E, 0x2E, 0x6E, 0x83, 0xC3, 0x93, 0x63, 0xB3, 0xA7, 0x37, 0x30, 0xF0, 0xCC, 0xDC,
0xAC, 0xEC, 0xBC, 0xF1, 0x8D, 0xFD, 0xB2, 0xC6, 0xF6, 0xCA, 0x3A, 0x7A, 0xCE, 0xDE, 0xAE, 0x3E,
0x7E, 0xBE, 0xFE, 0xD3, 0xA3, 0xE3, 0x33, 0x73, 0xF3, 0x87, 0xC7, 0xD7, 0x27, 0x67, 0xE7, 0x77,
0xF7, 0xCB, 0xDB, 0x2B, 0xAB, 0x3B, 0xBB, 0xFB, 0x8F, 0xCF, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xFF,
];
pub(crate) static huff_a34_cb: [u16; 7] = [1, 5, 1, 1, 1, 1, 2];
pub(crate) static huff_a34_xlat: [u16; 6] = [1, 0, 2, 3, 4, 5];
pub(crate) static huff_a35_cb: [u16; 11] = [2, 10, 1, 0, 2, 3, 6, 19, 9, 75, 110];
pub(crate) static huff_a35_xlat: [u16; 225] = [
0x00, 0xF0, 0x0F, 0x10, 0x01, 0xFF, 0x20, 0xE0, 0x11, 0xF1, 0x0E, 0x1F, 0x30, 0x40, 0xD0, 0x21,
0xE1, 0x02, 0x12, 0x22, 0xE2, 0xF2, 0x03, 0x13, 0x1E, 0x2E, 0x3E, 0xEE, 0xFE, 0x2F, 0xEF, 0xD2,
0x43, 0xF3, 0x04, 0x0D, 0x2D, 0x3D, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xB0, 0x31, 0x41, 0x91,
0xA1, 0xC1, 0xD1, 0x42, 0xA2, 0xC2, 0x23, 0x33, 0xE3, 0x24, 0x34, 0xB4, 0xD4, 0xF4, 0x05, 0x15,
0x45, 0xE5, 0x16, 0x36, 0x56, 0xA6, 0xC6, 0xD6, 0xF6, 0x57, 0xC7, 0xF7, 0x09, 0x29, 0x49, 0x59,
0x69, 0xF9, 0x0A, 0x2A, 0x3A, 0x4A, 0xDA, 0xEA, 0xFA, 0x0B, 0x2B, 0xAB, 0xEB, 0xFB, 0x0C, 0x1C,
0x2C, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0xFC, 0x1D, 0x4D, 0x6D, 0xBD, 0xCD, 0xED, 0xFD, 0x4E, 0x6E,
0xCE, 0xDE, 0x7F, 0xA0, 0xC0, 0x51, 0x61, 0x71, 0xB1, 0x32, 0x52, 0x62, 0x72, 0x92, 0xB2, 0x53,
0x63, 0x73, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0x14, 0x44, 0x54, 0x64, 0x74, 0x94, 0xA4, 0xC4, 0xE4,
0x25, 0x35, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xF5, 0x06, 0x26, 0x46, 0x66, 0x76,
0x96, 0xB6, 0xE6, 0x07, 0x17, 0x27, 0x37, 0x47, 0x67, 0x77, 0x97, 0xA7, 0xB7, 0xD7, 0xE7, 0x19,
0x39, 0x79, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0x1A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0xCA,
0x1B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x9B, 0xBB, 0xCB, 0xDB, 0x6C, 0x7C, 0x9C, 0xAC, 0xBC, 0xEC,
0x5D, 0x7D, 0x9D, 0xAD, 0xDD, 0x5E, 0x7E, 0x9E, 0xAE, 0xBE, 0x4F, 0x5F, 0x6F, 0x9F, 0xAF, 0xBF,
0xCF,
];
pub(crate) static huff_a36_cb: [u16; 12] = [3, 12, 1, 3, 5, 5, 13, 27, 69, 96, 35, 2];
pub(crate) static huff_a36_xlat: [u16; 256] = [
0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x22, 0x31, 0x41, 0x32, 0x13, 0x23, 0x30, 0x40,
0x51, 0x42, 0x03, 0x33, 0x43, 0x04, 0x14, 0x24, 0x34, 0x15, 0x25, 0x50, 0x61, 0x71, 0xD1, 0x52,
0x62, 0x72, 0xD2, 0x53, 0x63, 0xD3, 0x44, 0x54, 0x64, 0x05, 0x35, 0x45, 0x55, 0x16, 0x26, 0x36,
0x46, 0x17, 0x27, 0x1D, 0x2D, 0x3D, 0x60, 0x70, 0xD0, 0x81, 0x91, 0xA1, 0xC1, 0xE1, 0xF1, 0x82,
0x92, 0xC2, 0xE2, 0xF2, 0x73, 0x83, 0xE3, 0xF3, 0x74, 0x84, 0xC4, 0xD4, 0xE4, 0xF4, 0x65, 0x75,
0x85, 0xD5, 0xE5, 0x06, 0x56, 0x66, 0xD6, 0xE6, 0x07, 0x37, 0x47, 0x57, 0x67, 0xD7, 0xE7, 0x18,
0x28, 0x38, 0x48, 0x58, 0xD8, 0x19, 0x29, 0x2A, 0x1C, 0x2C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x8D,
0x9D, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, 0x1F, 0x2F, 0x3F, 0x80, 0x90, 0xA0, 0xC0, 0xE0,
0xF0, 0xB1, 0xA2, 0xB2, 0x93, 0xA3, 0xB3, 0xC3, 0x94, 0xA4, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5,
0x76, 0x86, 0x96, 0xA6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xF7, 0x08, 0x68, 0x78, 0x88,
0x98, 0xC8, 0xE8, 0xF8, 0x09, 0x39, 0x49, 0x59, 0x69, 0x79, 0x89, 0xD9, 0xE9, 0xF9, 0x0A, 0x1A,
0x3A, 0x4A, 0x5A, 0x6A, 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0xDB, 0xEB, 0xFB, 0x0C,
0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0xEC, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0x0E, 0x8E,
0x9E, 0xAE, 0xBE, 0x0F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB0, 0xB6, 0xB7, 0xA8, 0xB8,
0x99, 0xA9, 0xB9, 0xC9, 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0x0B, 0x6B, 0x7B, 0x8B, 0x9B, 0xCB,
0xAC, 0xBC, 0xCC, 0xFC, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF, 0xAB, 0xBB,
];
pub(crate) static huff_a37_cb: [u16; 7] = [4, 8, 7, 6, 8, 22, 20];
pub(crate) static huff_a37_xlat: [u16; 63] = [
0, 1, 2, 3, 61, 62, 63, 4, 5, 6, 58, 59, 60, 7, 8, 9, 10, 54, 55, 56, 57, 11, 12, 13, 14, 15,
16, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 48, 49, 50, 51, 52, 53, 17, 18, 19, 20, 21, 22, 23,
24, 31, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 47,
];
pub(crate) static huff_a41_cb: [u16; 14] = [1, 12, 1, 0, 0, 6, 2, 0, 0, 0, 19, 9, 24, 20];
pub(crate) static huff_a41_xlat: [u16; 81] = [
0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x50, 0xD0, 0x70, 0xF0, 0xC4, 0x34, 0x4C,
0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43, 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC,
0x3C, 0x11, 0x1D, 0x33, 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x1F, 0x3F, 0x51, 0x45, 0x55,
0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x53, 0xF3, 0x57, 0xD7, 0xF7, 0x4F, 0xCF, 0x5F, 0xDF, 0x7F,
0xFF,
];
pub(crate) static huff_a42_cb: [u16; 10] = [3, 10, 1, 2, 13, 1, 31, 13, 16, 4];
pub(crate) static huff_a42_xlat: [u16; 81] = [
0x00, 0x40, 0x01, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x59, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64, 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21,
0x61, 0x85, 0x95, 0x25, 0x65, 0x09, 0x49, 0x19, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56,
0xA0, 0xA4, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x66, 0x4A, 0x1A, 0x5A, 0x88, 0x98, 0x28,
0x89, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 0xA6, 0x0A, 0x9A, 0x2A, 0x6A, 0xA8, 0xA2, 0x8A,
0xAA,
];
pub(crate) static huff_a43_cb: [u16; 5] = [2, 4, 2, 3, 2];
pub(crate) static huff_a43_xlat: [u16; 7] = [0, 7, 1, 2, 6, 3, 5];
pub(crate) static huff_a44_cb: [u16; 9] = [4, 10, 5, 4, 12, 17, 47, 24, 12];
pub(crate) static huff_a44_xlat: [u16; 121] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x21, 0xE1, 0x02, 0x12, 0xF2,
0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xD0, 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D,
0x2D, 0xFD, 0x2E, 0xEE, 0x3F, 0xDF, 0x40, 0xB0, 0xC0, 0x31, 0x41, 0x51, 0xB1, 0xC1, 0x32, 0xB2,
0xC2, 0xD2, 0x23, 0xB3, 0xD3, 0xE3, 0x04, 0x14, 0xE4, 0xF4, 0x05, 0x15, 0xD5, 0xE5, 0xF5, 0x0B,
0x1B, 0x2B, 0x3B, 0xEB, 0xFB, 0x0C, 0x1C, 0x2C, 0xFC, 0x3D, 0x5D, 0xED, 0x3E, 0x4E, 0x5E, 0xBE,
0xDE, 0x4F, 0x5F, 0xBF, 0xCF, 0x42, 0x52, 0x33, 0x53, 0xC3, 0x24, 0xB4, 0xD4, 0x25, 0x35, 0xC5,
0x4B, 0xCB, 0xDB, 0x3C, 0x4C, 0x5C, 0xDC, 0xEC, 0x4D, 0xBD, 0xCD, 0xDD, 0xCE, 0x43, 0x34, 0x44,
0x54, 0xC4, 0x45, 0x55, 0xB5, 0x5B, 0xBB, 0xBC, 0xCC,
];
pub(crate) static huff_a45_cb: [u16; 5] = [2, 4, 2, 2, 4];
pub(crate) static huff_a45_xlat: [u16; 8] = [1, 2, 0, 3, 4, 5, 6, 7];
pub(crate) static huff_a46_cb: [u16; 7] = [5, 9, 1, 16, 31, 36, 172];
pub(crate) static huff_a46_xlat: [u16; 256] = [
0x02, 0x00, 0x30, 0x21, 0x31, 0x41, 0x61, 0x12, 0x22, 0x42, 0x62, 0x43, 0x53, 0x24, 0x45, 0x26,
0x27, 0x10, 0x40, 0xB0, 0x01, 0x11, 0x81, 0x32, 0x52, 0x72, 0x92, 0x03, 0x13, 0x33, 0x63, 0x14,
0x34, 0x54, 0x64, 0x74, 0x05, 0x15, 0x25, 0x35, 0x55, 0x65, 0x06, 0x46, 0x56, 0x57, 0x67, 0x88,
0x20, 0x51, 0x91, 0xD1, 0xF2, 0x23, 0x83, 0x93, 0x04, 0x44, 0x84, 0x94, 0x75, 0x85, 0xC5, 0x36,
0x66, 0x96, 0xB6, 0x07, 0x37, 0x97, 0x08, 0x28, 0x38, 0x48, 0x68, 0x09, 0x69, 0x79, 0x0A, 0x2A,
0x1B, 0x9B, 0x2C, 0x4D, 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xC0, 0xD0, 0xE0, 0xF0, 0x71, 0xA1,
0xB1, 0xC1, 0xE1, 0xF1, 0x82, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0x73, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3,
0xF3, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, 0x95, 0xA5, 0xB5, 0xD5, 0xE5, 0xF5, 0x16, 0x76, 0x86,
0xA6, 0xC6, 0xD6, 0xE6, 0xF6, 0x17, 0x47, 0x77, 0x87, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, 0x18,
0x58, 0x78, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, 0x19, 0x29, 0x39, 0x49, 0x59, 0x89, 0x99,
0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, 0x1A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xBA,
0xCA, 0xDA, 0xEA, 0xFA, 0x0B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xAB, 0xBB, 0xCB, 0xDB,
0xEB, 0xFB, 0x0C, 0x1C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC,
0xFC, 0x0D, 0x1D, 0x2D, 0x3D, 0x5D, 0x6D, 0x7D, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD,
0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
];
pub(crate) static huff_a47_cb: [u16; 8] = [4, 9, 5, 12, 9, 12, 15, 10];
pub(crate) static huff_a47_xlat: [u16; 63] = [
0, 1, 2, 62, 63, 3, 4, 5, 6, 8, 54, 56, 57, 58, 59, 60, 61, 7, 9, 10, 11, 12, 13, 14, 53, 55,
15, 16, 17, 18, 19, 20, 21, 36, 37, 39, 42, 52, 22, 25, 28, 35, 38, 40, 41, 43, 45, 46, 47, 48,
49, 50, 51, 23, 24, 26, 27, 29, 30, 31, 33, 34, 44,
];
pub(crate) static huff_a51_cb: [u16; 12] = [2, 11, 1, 0, 6, 2, 6, 18, 4, 26, 6, 12];
pub(crate) static huff_a51_xlat: [u16; 81] = [
0x00, 0x40, 0xC0, 0x30, 0x04, 0x01, 0x03, 0x10, 0x0C, 0xD0, 0x70, 0x34, 0x1C, 0x0D, 0x07, 0x50,
0xF0, 0x44, 0xC4, 0x14, 0x4C, 0xCC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x05, 0x43, 0xC3, 0x13, 0x33,
0x0F, 0x74, 0xDC, 0x1D, 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x4F, 0x1F, 0x3F, 0x51,
0x45, 0x55, 0xF3, 0xCF, 0xFF, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF,
0x7F,
];
pub(crate) static huff_a52_cb: [u16; 12] = [1, 10, 1, 0, 2, 2, 0, 4, 3, 8, 3, 2];
pub(crate) static huff_a52_xlat: [u16; 25] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06, 0x30, 0x11, 0x31, 0x0A,
0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12, 0x36,
];
pub(crate) static huff_a53_xlat: [u16; 7] = [0, 1, 2, 6, 7, 3, 5];
pub(crate) static huff_a54_cb: [u16; 8] = [4, 9, 4, 7, 12, 19, 21, 58];
pub(crate) static huff_a54_xlat: [u16; 121] = [
0x00, 0x01, 0x0F, 0x1F, 0x10, 0xE0, 0xF0, 0x11, 0xF1, 0x2F, 0xFF, 0x20, 0x21, 0xE1, 0x02, 0x12,
0xF2, 0x03, 0xF3, 0x0E, 0x2E, 0xFE, 0x3F, 0x30, 0x40, 0xD0, 0xC1, 0xD1, 0x22, 0xC2, 0x33, 0xE3,
0x0C, 0xCC, 0x0D, 0x1D, 0x2D, 0xFD, 0x1E, 0x3E, 0x5E, 0xEF, 0xC0, 0x52, 0xB2, 0xD2, 0x43, 0xC3,
0xD3, 0x24, 0x45, 0xF5, 0x4B, 0x5B, 0xFB, 0x1C, 0x3D, 0xBD, 0xDD, 0xEE, 0xBF, 0xCF, 0xDF, 0x50,
0xB0, 0x31, 0x41, 0x51, 0xB1, 0x32, 0x42, 0xE2, 0x13, 0x23, 0x53, 0xB3, 0x04, 0x14, 0x34, 0x44,
0x54, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, 0x05, 0x15, 0x25, 0x35, 0x55, 0xB5, 0xC5, 0xD5, 0xE5, 0x0B,
0x1B, 0x2B, 0x3B, 0xBB, 0xCB, 0xDB, 0xEB, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 0xDC, 0xEC, 0xFC, 0x4D,
0x5D, 0xCD, 0xED, 0x4E, 0xBE, 0xCE, 0xDE, 0x4F, 0x5F,
];
pub(crate) static huff_a55_cb: [u16; 8] = [1, 6, 1, 1, 1, 0, 3, 2];
pub(crate) static huff_a55_xlat: [u16; 8] = [0, 1, 2, 3, 6, 7, 4, 5];
pub(crate) static huff_a56_cb: [u16; 7] = [3, 7, 1, 8, 6, 8, 8];
pub(crate) static huff_a56_xlat: [u16; 31] = [
4, 0, 1, 2, 3, 28, 29, 30, 31, 5, 6, 7, 24, 25, 27, 8, 9, 14, 19, 21, 22, 23, 26, 10, 11, 12,
13, 15, 17, 18, 20,
];
pub(crate) static huff_a57_cb: [u16; 9] = [3, 9, 1, 5, 7, 8, 16, 22, 4];
pub(crate) static huff_a57_xlat: [u16; 63] = [
0, 1, 2, 61, 62, 63, 3, 4, 5, 6, 58, 59, 60, 7, 8, 9, 10, 54, 55, 56, 57, 11, 12, 13, 14, 15,
26, 27, 28, 36, 37, 38, 49, 50, 51, 52, 53, 16, 17, 18, 19, 20, 21, 23, 24, 25, 29, 30, 31, 33,
34, 35, 39, 43, 44, 45, 46, 47, 48, 22, 40, 41, 42,
];
pub(crate) static huff_a61_cb: [u16; 12] = [2, 11, 1, 0, 8, 0, 1, 16, 10, 29, 12, 4];
pub(crate) static huff_a61_xlat: [u16; 81] = [
0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x70, 0x50, 0xD0, 0xF0, 0x44, 0xC4, 0x14,
0x34, 0x4C, 0x1C, 0x3C, 0x31, 0x05, 0x0D, 0x13, 0x07, 0x0F, 0x74, 0xCC, 0xDC, 0xFC, 0x41, 0xC1,
0x11, 0x43, 0xC3, 0x33, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0xF1, 0x45, 0xC5, 0x15,
0x35, 0x4D, 0xCD, 0x1D, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 0x47, 0xC7, 0x17, 0x37, 0x4F, 0xCF, 0x1F,
0x3F, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0xDD, 0xFD, 0x57, 0xD7, 0x77, 0xF7, 0xFF, 0x7D, 0x5F, 0xDF,
0x7F,
];
pub(crate) static huff_a62_cb: [u16; 8] = [3, 8, 5, 2, 2, 9, 5, 2];
pub(crate) static huff_a62_xlat: [u16; 25] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x17, 0x37, 0x11, 0x0A, 0x32, 0x16, 0x3E, 0x12, 0x36,
];
pub(crate) static huff_a63_cb: [u16; 11] = [3, 11, 1, 1, 10, 4, 16, 29, 46, 75, 74];
pub(crate) static huff_a63_xlat: [u16; 256] = [
0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x01, 0x41, 0x05, 0x45, 0x55, 0x54, 0x11, 0x51, 0x15,
0x80, 0x90, 0x60, 0x24, 0x64, 0xA4, 0x48, 0x61, 0x95, 0x25, 0xA5, 0x02, 0x42, 0x52, 0x16, 0x56,
0x20, 0x84, 0x94, 0x18, 0x58, 0x81, 0x91, 0x85, 0x65, 0x09, 0x49, 0x19, 0x59, 0x99, 0x29, 0x69,
0x79, 0x5D, 0x12, 0x62, 0x06, 0x46, 0x86, 0x66, 0x1A, 0x5A, 0x6A, 0x47, 0x17, 0xC0, 0xA0, 0xE0,
0xC4, 0xD4, 0x74, 0x08, 0x78, 0x0C, 0x4C, 0x1C, 0x5C, 0xD1, 0x21, 0xE1, 0x71, 0xC5, 0xE5, 0x75,
0xB5, 0x89, 0xBD, 0x92, 0x22, 0x96, 0xA6, 0x36, 0x0A, 0x4A, 0x8A, 0x9A, 0x2A, 0x7A, 0xDE, 0x6E,
0x43, 0x13, 0x53, 0x23, 0x07, 0x77, 0x4B, 0x1B, 0x9B, 0x6B, 0x2F, 0xD0, 0x30, 0x70, 0xE4, 0x34,
0xF4, 0xC8, 0x98, 0x28, 0x68, 0xA8, 0xE8, 0x38, 0xB8, 0xF8, 0x9C, 0x2C, 0x6C, 0x7C, 0xA1, 0xB1,
0xD5, 0x35, 0xC9, 0xD9, 0xA9, 0xE9, 0x39, 0xB9, 0xF9, 0xCD, 0x1D, 0x2D, 0xAD, 0x7D, 0xC2, 0xD2,
0xA2, 0xB2, 0xF2, 0xC6, 0x26, 0x76, 0xB6, 0xDA, 0xAA, 0xEA, 0x3A, 0xFA, 0x0E, 0x4E, 0x2E, 0x7E,
0xBE, 0xFE, 0x03, 0x83, 0x63, 0xA3, 0xB3, 0x87, 0x57, 0x97, 0xD7, 0x27, 0x0B, 0x8B, 0x5B, 0x2B,
0xAB, 0xCF, 0x1F, 0x9F, 0x7F, 0xBF, 0xB0, 0xF0, 0xB4, 0x88, 0xD8, 0x8C, 0xCC, 0xDC, 0xAC, 0xEC,
0x3C, 0xBC, 0xFC, 0xC1, 0x31, 0xF1, 0xF5, 0x0D, 0x4D, 0x8D, 0x9D, 0xDD, 0x6D, 0xED, 0x3D, 0xFD,
0x82, 0xE2, 0x32, 0x72, 0xD6, 0xE6, 0xF6, 0xCA, 0xBA, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xAE, 0xEE,
0x3E, 0xC3, 0x93, 0xD3, 0xE3, 0x33, 0x73, 0xF3, 0xC7, 0x67, 0xA7, 0xE7, 0x37, 0xB7, 0xF7, 0xCB,
0xDB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, 0x0F, 0x4F, 0x8F, 0x5F, 0xDF, 0x6F, 0xAF, 0xEF, 0x3F, 0xFF,
];
pub(crate) static huff_a64_cb: [u16; 8] = [4, 9, 1, 7, 12, 36, 63, 2];
pub(crate) static huff_a64_xlat: [u16; 121] = [
0x00, 0x10, 0x20, 0xE0, 0xF0, 0x02, 0x0E, 0xEF, 0x30, 0x01, 0x11, 0x21, 0x31, 0xF1, 0x12, 0xF2,
0x1E, 0xEE, 0xDF, 0xFF, 0x40, 0xC0, 0xD0, 0xD1, 0xE1, 0x22, 0x32, 0x42, 0xD2, 0xE2, 0x03, 0x13,
0x23, 0xB3, 0xC3, 0xE3, 0xF3, 0xE4, 0x05, 0xF5, 0x2B, 0x0C, 0xFC, 0x1D, 0x2D, 0xBD, 0xDD, 0xFD,
0x2E, 0x4E, 0xDE, 0xFE, 0x0F, 0x1F, 0x2F, 0x3F, 0x50, 0xB0, 0x41, 0x51, 0xB1, 0xC1, 0x52, 0xB2,
0xC2, 0x33, 0x43, 0x53, 0xD3, 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4, 0xF4, 0x15,
0x25, 0x35, 0x45, 0x55, 0xB5, 0xC5, 0xD5, 0xE5, 0x0B, 0x1B, 0x3B, 0x4B, 0x5B, 0xBB, 0xCB, 0xDB,
0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0xEC, 0x0D, 0x3D, 0x4D, 0x5D, 0xCD,
0xED, 0x3E, 0x5E, 0xBE, 0xCE, 0x4F, 0xCF, 0x5F, 0xBF,
];
pub(crate) static huff_a65_cb: [u16; 8] = [2, 7, 3, 0, 1, 3, 4, 4];
pub(crate) static huff_a65_xlat: [u16; 15] = [0, 1, 15, 14, 2, 3, 13, 4, 6, 10, 12, 5, 7, 9, 11];
pub(crate) static huff_a66_cb: [u16; 11] = [2, 10, 1, 2, 2, 6, 8, 6, 3, 1, 2];
pub(crate) static huff_a66_xlat: [u16; 31] = [
0, 1, 31, 2, 30, 3, 4, 15, 17, 28, 29, 5, 6, 7, 8, 24, 25, 26, 27, 9, 10, 11, 21, 22, 23, 12,
19, 20, 13, 14, 18,
];
pub(crate) static huff_a67_cb: [u16; 10] = [2, 9, 1, 1, 3, 4, 6, 13, 25, 10];
pub(crate) static huff_a67_xlat: [u16; 63] = [
0, 1, 2, 62, 63, 3, 4, 60, 61, 5, 6, 7, 57, 58, 59, 8, 9, 10, 11, 12, 13, 26, 38, 52, 53, 54,
55, 56, 14, 15, 16, 17, 18, 19, 25, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 45, 46, 47, 48,
49, 50, 51, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44,
];
pub(crate) static huff_a71_cb: [u16; 5] = [1, 3, 1, 1, 2];
pub(crate) static huff_a72_cb: [u16; 12] = [2, 11, 1, 0, 4, 8, 3, 8, 24, 17, 12, 4];
pub(crate) static huff_a72_xlat: [u16; 81] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05, 0x15, 0x51, 0x45, 0x55,
0x80, 0x90, 0x20, 0x64, 0x08, 0x19, 0x02, 0x06, 0x60, 0x84, 0x94, 0x24, 0x48, 0x18, 0x58, 0x81,
0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65, 0x09, 0x49, 0x59, 0x42, 0x12, 0x52, 0x46, 0x16, 0x56,
0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x1A,
0x5A, 0x88, 0xA8, 0x89, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0xA6, 0x2A, 0x6A, 0xA2, 0x8A, 0x9A,
0xAA,
];
pub(crate) static huff_a73_cb: [u16; 11] = [2, 10, 1, 1, 5, 2, 8, 7, 13, 8, 4];
pub(crate) static huff_a73_xlat: [u16; 49] = [
0x00, 0x08, 0x38, 0x01, 0x39, 0x07, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x17, 0x11, 0x0A, 0x32, 0x0D, 0x16, 0x3E, 0x37, 0x18, 0x28, 0x19, 0x29, 0x12, 0x2A, 0x03, 0x3B,
0x05, 0x15, 0x1E, 0x1F, 0x2F, 0x1A, 0x0B, 0x2B, 0x33, 0x35, 0x3D, 0x2E, 0x36, 0x13, 0x1B, 0x1D,
0x2D,
];
pub(crate) static huff_a74_cb: [u16; 14] = [1, 12, 1, 0, 0, 4, 0, 4, 5, 9, 30, 45, 21, 2];
pub(crate) static huff_a74_xlat: [u16; 121] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 0xF2, 0x0E, 0x21, 0xE1,
0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22,
0xD2, 0x03, 0x13, 0xE3, 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52, 0xB2, 0xC2, 0x23, 0x33,
0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4, 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB,
0x1C, 0x2C, 0x3C, 0x5C, 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5, 0x4B, 0x5B, 0xCB, 0xDB,
0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44, 0xBB,
];
pub(crate) static huff_a75_cb: [u16; 7] = [2, 6, 1, 3, 3, 4, 4];
pub(crate) static huff_a75_xlat: [u16; 15] = [0, 1, 14, 15, 2, 3, 13, 4, 6, 10, 12, 5, 7, 9, 11];
pub(crate) static huff_a76_cb: [u16; 12] = [3, 12, 1, 3, 4, 8, 10, 36, 60, 78, 48, 8];
pub(crate) static huff_a76_xlat: [u16; 256] = [
0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22, 0x03, 0x13, 0x23, 0x14,
0x40, 0x51, 0x61, 0x32, 0x42, 0x33, 0x04, 0x24, 0x15, 0x16, 0x50, 0x60, 0xD0, 0x71, 0x81, 0xD1,
0xE1, 0xF1, 0x52, 0x62, 0x72, 0xD2, 0x43, 0x53, 0x63, 0xD3, 0x34, 0x44, 0x54, 0x05, 0x25, 0x35,
0x45, 0x06, 0x26, 0x36, 0x17, 0x27, 0x18, 0x0D, 0x1D, 0x2D, 0x3D, 0x1E, 0x2E, 0x1F, 0x70, 0x80,
0xE0, 0xF0, 0x91, 0xA1, 0xC1, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x73, 0x83, 0x93, 0xE3, 0xF3, 0x64,
0x74, 0x84, 0xD4, 0xE4, 0xF4, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x46, 0x56, 0x66, 0xD6, 0x07, 0x37,
0x47, 0x57, 0x08, 0x28, 0x38, 0x48, 0x19, 0x29, 0x39, 0x1A, 0x2A, 0x1B, 0x1C, 0x2C, 0x3C, 0x4D,
0x5D, 0x6D, 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x2F, 0x3F, 0x4F, 0x90, 0xA0, 0xB0, 0xC0, 0xB1, 0xA2,
0xB2, 0xA3, 0xB3, 0xC3, 0x94, 0xA4, 0xB4, 0xC4, 0x75, 0x85, 0x95, 0xA5, 0xC5, 0x76, 0x86, 0x96,
0xE6, 0xF6, 0x67, 0x77, 0x87, 0xD7, 0xE7, 0xF7, 0x58, 0x68, 0x78, 0x88, 0xD8, 0xE8, 0xF8, 0x09,
0x49, 0x59, 0x69, 0xD9, 0xE9, 0xF9, 0x0A, 0x3A, 0x4A, 0x5A, 0xDA, 0xEA, 0x0B, 0x2B, 0x3B, 0x4B,
0xDB, 0x0C, 0x4C, 0x5C, 0x6C, 0xDC, 0x7D, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 0x8E, 0x9E,
0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB5, 0xA6, 0xB6, 0xC6, 0x97, 0xA7, 0xC7, 0x98,
0xA8, 0xB8, 0xC8, 0x79, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xCA, 0xFA,
0x5B, 0x6B, 0x7B, 0x8B, 0xCB, 0xEB, 0xFB, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xEC, 0xFC, 0xDD, 0xED,
0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xB7, 0xBA, 0x9B, 0xAB, 0xBB, 0xCC, 0xEF, 0xFF,
];
pub(crate) static huff_b01_cb: [u16; 14] = [1, 12, 1, 0, 0, 2, 6, 0, 11, 13, 12, 24, 4, 8];
pub(crate) static huff_b01_xlat: [u16; 81] = [
0x00, 0x01, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x50, 0xD0, 0x70, 0xF0, 0x34, 0x1C, 0x05,
0x0D, 0x13, 0x07, 0x0F, 0x44, 0xC4, 0x14, 0x4C, 0xCC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x43, 0xC3,
0x33, 0x54, 0x74, 0xDC, 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4, 0x5C,
0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x55, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 0x73, 0xF3, 0x47, 0x17,
0x77, 0x4F, 0xCF, 0x1F, 0xFF, 0xF5, 0x7D, 0xD7, 0x5F, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF,
0x7F,
];
pub(crate) static huff_b02_cb: [u16; 14] = [1, 12, 1, 0, 0, 4, 0, 8, 4, 9, 19, 13, 13, 10];
pub(crate) static huff_b02_xlat: [u16; 81] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05, 0x15, 0x80, 0x51, 0x45,
0x55, 0x90, 0x20, 0x60, 0x24, 0x08, 0x18, 0x09, 0x02, 0x06, 0x84, 0x94, 0x64, 0x48, 0x58, 0x81,
0x91, 0x21, 0x61, 0x95, 0x25, 0x65, 0x19, 0x59, 0x42, 0x12, 0x46, 0x16, 0x56, 0xA0, 0xA4, 0x28,
0x68, 0x85, 0xA5, 0x49, 0x29, 0x69, 0x52, 0x0A, 0x1A, 0x5A, 0x88, 0x98, 0xA1, 0x89, 0x99, 0xA9,
0x22, 0x62, 0x96, 0x26, 0x66, 0x4A, 0x6A, 0xA8, 0x82, 0x92, 0xA2, 0x86, 0xA6, 0x8A, 0x9A, 0x2A,
0xAA,
];
pub(crate) static huff_b03_cb: [u16; 11] = [1, 9, 1, 0, 0, 4, 0, 5, 12, 13, 14];
pub(crate) static huff_b03_xlat: [u16; 49] = [
0x00, 0x08, 0x38, 0x01, 0x07, 0x30, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x18, 0x28, 0x31, 0x02, 0x3A,
0x03, 0x05, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x19, 0x29, 0x0A, 0x32, 0x0B, 0x3B, 0x0D, 0x15, 0x3D,
0x3E, 0x1F, 0x2F, 0x12, 0x1A, 0x2A, 0x13, 0x1B, 0x2B, 0x33, 0x1D, 0x2D, 0x35, 0x16, 0x1E, 0x2E,
0x36,
];
pub(crate) static huff_b04_cb: [u16; 12] = [2, 11, 1, 0, 4, 4, 5, 9, 30, 45, 21, 2];
pub(crate) static huff_b04_xlat: [u16; 121] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 0xF2, 0x0E, 0x21, 0xE1,
0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22,
0xD2, 0x03, 0x13, 0xE3, 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52, 0xB2, 0xC2, 0x23, 0x33,
0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4, 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB,
0x1C, 0x2C, 0x3C, 0x5C, 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5, 0x4B, 0x5B, 0xCB, 0xDB,
0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44, 0xBB,
];
pub(crate) static huff_b05_cb: [u16; 11] = [3, 11, 1, 4, 4, 4, 12, 30, 73, 75, 22];
pub(crate) static huff_b05_xlat: [u16; 225] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 0x0E, 0x30, 0xD0, 0x21,
0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31,
0xD1, 0x22, 0x32, 0xD2, 0xE2, 0x13, 0x23, 0xE3, 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x1D,
0x2D, 0xFD, 0x2E, 0x3E, 0xEE, 0x3F, 0xDF, 0x50, 0xB0, 0x41, 0x51, 0x61, 0x71, 0x91, 0xA1, 0xB1,
0xC1, 0x42, 0x62, 0x72, 0x92, 0xA2, 0xC2, 0x33, 0x93, 0xA3, 0xD3, 0x14, 0x24, 0xE4, 0xF4, 0x05,
0x15, 0xF5, 0x16, 0x26, 0xD6, 0xE6, 0xF6, 0x17, 0x27, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xE9,
0xF9, 0x1A, 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x1C, 0x2C, 0xEC, 0xFC, 0x3D, 0x7D, 0x9D, 0xDD,
0xED, 0x4E, 0x6E, 0x7E, 0x9E, 0xAE, 0xCE, 0xDE, 0x4F, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xCF,
0x52, 0xB2, 0x43, 0x53, 0x63, 0x73, 0xB3, 0xC3, 0x34, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4,
0xD4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xD5, 0xE5, 0x36, 0x46, 0x56, 0x66, 0xA6, 0xB6, 0xC6,
0x37, 0x47, 0x57, 0xB7, 0xC7, 0x49, 0x59, 0x69, 0xB9, 0xC9, 0xD9, 0x3A, 0x4A, 0x5A, 0x6A, 0xAA,
0xBA, 0xCA, 0xDA, 0x2B, 0x3B, 0x6B, 0x7B, 0x9B, 0xAB, 0xDB, 0xEB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C,
0xAC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0xAD, 0xBD, 0xCD, 0x5E, 0xBE, 0x54, 0x45, 0x55, 0xB5, 0xC5,
0x76, 0x96, 0x67, 0x77, 0x97, 0xA7, 0x79, 0x99, 0xA9, 0x7A, 0x9A, 0x4B, 0x5B, 0xBB, 0xCB, 0x5C,
0xBC,
];
pub(crate) static huff_b07_cb: [u16; 9] = [3, 9, 3, 2, 4, 8, 23, 13, 10];
pub(crate) static huff_b07_xlat: [u16; 63] = [
0, 1, 63, 2, 62, 3, 4, 60, 61, 5, 6, 7, 8, 56, 57, 58, 59, 9, 10, 11, 12, 25, 26, 27, 28, 29,
30, 31, 33, 34, 35, 36, 37, 38, 39, 51, 52, 53, 54, 55, 13, 14, 15, 16, 17, 18, 19, 45, 46, 47,
48, 49, 50, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44,
];
pub(crate) static huff_b12_cb: [u16; 10] = [3, 10, 1, 3, 12, 0, 30, 9, 18, 8];
pub(crate) static huff_b12_xlat: [u16; 81] = [
0x00, 0x40, 0x04, 0x01, 0x10, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64, 0x08, 0x48, 0x18, 0x81, 0x91, 0x61, 0x85, 0x95,
0x25, 0x65, 0x09, 0x49, 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0xA4, 0x58,
0x68, 0x21, 0xA5, 0x29, 0x69, 0x1A, 0x5A, 0xA0, 0x88, 0x98, 0x28, 0xA1, 0x89, 0x99, 0xA9, 0x92,
0x22, 0x62, 0x86, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x6A, 0xA8, 0x82, 0xA2, 0xA6, 0x8A, 0x9A, 0x2A,
0xAA,
];
pub(crate) static huff_b14_cb: [u16; 14] = [1, 12, 1, 0, 0, 4, 0, 3, 5, 16, 28, 34, 26, 4];
pub(crate) static huff_b14_xlat: [u16; 121] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02, 0x0E, 0x30, 0x50, 0xB0,
0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31,
0x51, 0xB1, 0xC1, 0xD1, 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42, 0xB2, 0xD2, 0x23, 0x53,
0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35, 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC,
0xEC, 0xFC, 0x2D, 0xBD, 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0x3D,
0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B, 0xBB,
];
pub(crate) static huff_b16_cb: [u16; 11] = [4, 12, 4, 4, 9, 13, 37, 76, 72, 39, 2];
pub(crate) static huff_b16_xlat: [u16; 256] = [
0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22, 0x32, 0x03, 0x13, 0x23,
0x14, 0x40, 0x51, 0x61, 0x42, 0x52, 0x33, 0x43, 0x04, 0x24, 0x34, 0x15, 0x25, 0x16, 0x50, 0x60,
0x70, 0x71, 0x81, 0xD1, 0xE1, 0x62, 0x72, 0x82, 0xD2, 0x53, 0x63, 0x73, 0xD3, 0x44, 0x54, 0x05,
0x35, 0x45, 0x55, 0x06, 0x26, 0x36, 0x07, 0x17, 0x27, 0x37, 0x18, 0x28, 0x19, 0x1D, 0x2D, 0x3D,
0x1E, 0x2E, 0x1F, 0x80, 0x90, 0xD0, 0xE0, 0xF0, 0x91, 0xA1, 0xB1, 0xC1, 0xF1, 0x92, 0xA2, 0xB2,
0xC2, 0xE2, 0xF2, 0x83, 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0x94, 0xD4, 0xE4, 0xF4,
0x65, 0x75, 0x85, 0xD5, 0xE5, 0x46, 0x56, 0x66, 0x76, 0xD6, 0xE6, 0x47, 0x57, 0x67, 0xD7, 0x08,
0x38, 0x48, 0x58, 0x09, 0x29, 0x39, 0x49, 0x0A, 0x1A, 0x2A, 0x3A, 0x1B, 0x2B, 0x0C, 0x1C, 0x2C,
0x3C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x0E, 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x2F, 0x3F, 0x4F, 0xA0,
0xB0, 0xC0, 0xB3, 0xA4, 0xB4, 0xC4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5, 0x86, 0x96, 0xA6, 0xB6, 0xC6,
0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xE7, 0xF7, 0x68, 0x78, 0x88, 0x98, 0xD8, 0xE8, 0xF8, 0x59,
0x69, 0x79, 0x89, 0xD9, 0xE9, 0xF9, 0x4A, 0x5A, 0x6A, 0x7A, 0xDA, 0xEA, 0x0B, 0x3B, 0x4B, 0x5B,
0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0xDC, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E,
0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xB7, 0xA8, 0xB8, 0xC8, 0x99, 0xA9, 0xB9, 0xC9, 0x8A,
0x9A, 0xAA, 0xBA, 0xCA, 0xFA, 0x6B, 0x7B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xFB, 0x9C, 0xAC, 0xBC,
0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
];
pub(crate) static huff_b26_cb: [u16; 12] = [3, 12, 2, 2, 4, 5, 11, 26, 67, 78, 51, 10];
pub(crate) static huff_b26_xlat: [u16; 256] = [
0x00, 0x01, 0x10, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x22, 0x03, 0x13, 0x40, 0x41, 0x51,
0x32, 0x42, 0x23, 0x33, 0x04, 0x14, 0x24, 0x15, 0x50, 0x61, 0x71, 0xD1, 0xE1, 0x52, 0x62, 0xD2,
0x43, 0x53, 0xD3, 0x34, 0x44, 0x05, 0x25, 0x35, 0x06, 0x16, 0x26, 0x17, 0x18, 0x1D, 0x2D, 0x3D,
0x1E, 0x2E, 0x60, 0x70, 0x80, 0xD0, 0xE0, 0xF0, 0x81, 0x91, 0xA1, 0xC1, 0xF1, 0x72, 0x82, 0x92,
0xC2, 0xE2, 0xF2, 0x63, 0x73, 0xE3, 0xF3, 0x54, 0x64, 0x74, 0xD4, 0xE4, 0xF4, 0x45, 0x55, 0x65,
0xD5, 0xE5, 0xF5, 0x36, 0x46, 0x56, 0xD6, 0xE6, 0x07, 0x27, 0x37, 0x47, 0xD7, 0x08, 0x28, 0x38,
0x19, 0x29, 0x1A, 0x1B, 0x1C, 0x2C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x0E, 0x3E, 0x4E, 0x5E, 0x6E,
0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x90, 0xA0, 0xC0, 0xB1, 0xA2, 0xB2, 0x83, 0x93, 0xA3, 0xB3, 0xC3,
0x84, 0x94, 0xA4, 0xC4, 0x75, 0x85, 0x95, 0xC5, 0x66, 0x76, 0x86, 0x96, 0xC6, 0xF6, 0x57, 0x67,
0x77, 0xE7, 0xF7, 0x48, 0x58, 0x68, 0x78, 0xD8, 0xE8, 0xF8, 0x09, 0x39, 0x49, 0x59, 0xD9, 0xE9,
0xF9, 0x0A, 0x2A, 0x3A, 0x4A, 0xDA, 0xEA, 0x0B, 0x2B, 0x3B, 0xDB, 0xEB, 0x0C, 0x3C, 0x4C, 0x5C,
0x6C, 0xDC, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x5F, 0x6F, 0x7F,
0x8F, 0x9F, 0xAF, 0xB0, 0xB4, 0xA5, 0xB5, 0xA6, 0xB6, 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0x88, 0x98,
0xA8, 0xC8, 0x69, 0x79, 0x89, 0x99, 0xA9, 0xC9, 0x5A, 0x6A, 0x7A, 0x9A, 0xCA, 0xFA, 0x4B, 0x5B,
0x6B, 0x7B, 0xCB, 0xFB, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xDE,
0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xB8, 0xB9, 0x8A, 0xAA, 0xBA, 0x8B, 0x9B, 0xAB, 0xBB, 0xFF,
];
pub(crate) static huff_b32_cb: [u16; 12] = [2, 11, 1, 0, 4, 6, 7, 10, 22, 11, 16, 4];
pub(crate) static huff_b32_xlat: [u16; 81] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x41, 0x11, 0x05, 0x80, 0x54, 0x51, 0x45, 0x15,
0x55, 0x02, 0x90, 0x20, 0x60, 0x84, 0x24, 0x08, 0x18, 0x09, 0x12, 0x06, 0xA0, 0x94, 0x64, 0x48,
0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65, 0x49, 0x19, 0x59, 0x42, 0x52, 0x46, 0x16,
0x56, 0x0A, 0xA4, 0x28, 0x68, 0xA1, 0xA5, 0x29, 0x69, 0x26, 0x4A, 0x1A, 0x5A, 0x88, 0x98, 0xA8,
0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x96, 0x66, 0x9A, 0x2A, 0x6A, 0xA2, 0xA6, 0x8A,
0xAA,
];
pub(crate) static huff_b33_cb: [u16; 13] = [2, 12, 1, 0, 0, 4, 11, 8, 28, 92, 97, 13, 2];
pub(crate) static huff_b33_xlat: [u16; 256] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 0x05, 0x45, 0x15, 0x55,
0x20, 0x95, 0x65, 0x49, 0x59, 0x52, 0x46, 0x16, 0x80, 0x90, 0x60, 0x84, 0x94, 0x24, 0x64, 0xA4,
0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 0x25, 0x09, 0x19, 0x69, 0x02, 0x42, 0x12,
0x06, 0x56, 0x5A, 0x57, 0xD0, 0x74, 0x68, 0x5C, 0xC1, 0xD5, 0xA5, 0xE5, 0x75, 0xB5, 0xF5, 0x99,
0xD9, 0xA9, 0xE9, 0x79, 0xB9, 0xF9, 0x1D, 0x5D, 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD,
0x82, 0x92, 0xD2, 0x62, 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 0x76, 0xB6, 0xF6, 0x0A, 0x4A, 0x1A,
0x9A, 0xDA, 0x2A, 0x6A, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA, 0x5E, 0x9E, 0xDE, 0x6E, 0xAE, 0xEE, 0x7E,
0xBE, 0xFE, 0x03, 0x13, 0x53, 0x17, 0x97, 0xD7, 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B,
0xDB, 0x6B, 0xAB, 0xEB, 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xBF, 0xFF,
0xC0, 0xA0, 0xE0, 0x30, 0xC4, 0xD4, 0xE4, 0x34, 0xB4, 0xF4, 0x88, 0xC8, 0x98, 0xD8, 0x28, 0xA8,
0xE8, 0x38, 0x78, 0xB8, 0xF8, 0x0C, 0x4C, 0x1C, 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x7C, 0xBC, 0xFC,
0xD1, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x4D, 0x8D,
0xCD, 0x2D, 0x3D, 0x22, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 0x8A, 0xCA, 0x3A, 0x0E,
0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x43, 0x83, 0x93, 0xD3, 0x23, 0x63, 0xA3, 0xE3, 0x73, 0xB3,
0xF3, 0x07, 0x47, 0x87, 0xC7, 0x27, 0x37, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x4F, 0x8F, 0xCF,
0x1F, 0x70, 0xB0, 0xF0, 0x8C, 0xCC, 0x2C, 0x3C, 0xC2, 0x32, 0xC3, 0x0F, 0x2F, 0x3F, 0x33, 0x0B,
];
pub(crate) static huff_b35_cb: [u16; 14] = [1, 12, 1, 0, 0, 0, 4, 6, 6, 14, 42, 63, 59, 30];
pub(crate) static huff_b35_xlat: [u16; 225] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 0xFF, 0x20, 0xE0, 0x21, 0xF2, 0xFE,
0xEF, 0x30, 0xD0, 0xE1, 0x12, 0x22, 0xE2, 0x03, 0x0D, 0x1D, 0x1E, 0x2E, 0xEE, 0x2F, 0xDF, 0x40,
0x60, 0x70, 0x90, 0xA0, 0xB0, 0xC0, 0x31, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0xD2, 0x13, 0xE3, 0xF3,
0x04, 0x05, 0x06, 0x07, 0x17, 0xF7, 0x09, 0x19, 0x0A, 0x1A, 0xFA, 0x0C, 0x1C, 0x2D, 0xED, 0xFD,
0x3E, 0x7E, 0xDE, 0x3F, 0x6F, 0x7F, 0x9F, 0xAF, 0xCF, 0x50, 0x41, 0x51, 0x61, 0xA1, 0xB1, 0x62,
0x72, 0x92, 0xA2, 0xC2, 0x23, 0x33, 0x63, 0x73, 0x93, 0xA3, 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4,
0xF4, 0x15, 0xF5, 0x16, 0x26, 0xD6, 0xE6, 0xF6, 0x27, 0x37, 0x47, 0xE7, 0x29, 0x39, 0xC9, 0xD9,
0xE9, 0xF9, 0x2A, 0xEA, 0x0B, 0x1B, 0xFB, 0x2C, 0x7C, 0xEC, 0xFC, 0x3D, 0x4D, 0x6D, 0x7D, 0xDD,
0x4E, 0x5E, 0x6E, 0x9E, 0xAE, 0xCE, 0x4F, 0x5F, 0x42, 0x52, 0xB2, 0x43, 0xB3, 0xC3, 0x44, 0x64,
0x74, 0x94, 0xA4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xE5, 0x36, 0x46, 0x66, 0x76, 0x96, 0xA6,
0xB6, 0xC6, 0x57, 0xA7, 0xB7, 0xC7, 0xD7, 0x59, 0xA9, 0xB9, 0x3A, 0x4A, 0x6A, 0xCA, 0xDA, 0x2B,
0x3B, 0x6B, 0x9B, 0xAB, 0xDB, 0xEB, 0x3C, 0x6C, 0x9C, 0xAC, 0xCC, 0xDC, 0x5D, 0x9D, 0xAD, 0xBD,
0xCD, 0xBE, 0xBF, 0x53, 0x54, 0xB4, 0xC4, 0x45, 0x55, 0xB5, 0xC5, 0xD5, 0x56, 0x67, 0x77, 0x97,
0x49, 0x69, 0x79, 0x99, 0x5A, 0x7A, 0x9A, 0xAA, 0xBA, 0x4B, 0x5B, 0x7B, 0xBB, 0xCB, 0x4C, 0x5C,
0xBC,
];
pub(crate) static huff_b37_cb: [u16; 13] = [1, 11, 1, 0, 2, 0, 2, 2, 6, 17, 14, 13, 6];
pub(crate) static huff_b37_xlat: [u16; 63] = [
0, 1, 63, 2, 62, 3, 61, 4, 5, 6, 58, 59, 60, 7, 8, 9, 10, 25, 26, 27, 28, 29, 34, 35, 37, 38,
39, 55, 56, 57, 11, 13, 14, 15, 30, 31, 33, 36, 49, 50, 51, 52, 53, 54, 12, 16, 17, 18, 19, 21,
41, 43, 44, 45, 46, 47, 48, 20, 22, 23, 24, 40, 42,
];
pub(crate) static huff_b41_cb: [u16; 14] = [1, 12, 1, 0, 0, 1, 7, 0, 20, 4, 10, 24, 2, 12];
pub(crate) static huff_b41_xlat: [u16; 81] = [
0x00, 0x01, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x03, 0x50, 0xD0, 0x70, 0xF0, 0xC4, 0x14, 0x34,
0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D, 0xC3, 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41,
0x43, 0x54, 0x74, 0xDC, 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0x37, 0x3F, 0xD4, 0xF4, 0x5C, 0x7C, 0x51,
0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 0x47, 0xC7, 0x17, 0x77,
0x4F, 0xCF, 0x1F, 0x55, 0xFF, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF,
0x7F,
];
pub(crate) static huff_b42_cb: [u16; 11] = [1, 9, 1, 0, 1, 3, 2, 3, 7, 4, 4];
pub(crate) static huff_b42_xlat: [u16; 25] = [
0x00, 0x07, 0x08, 0x38, 0x01, 0x39, 0x0F, 0x10, 0x09, 0x3F, 0x30, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16, 0x36,
];
pub(crate) static huff_b43_cb: [u16; 10] = [2, 9, 1, 1, 3, 4, 9, 15, 12, 4];
pub(crate) static huff_b43_xlat: [u16; 49] = [
0x00, 0x07, 0x08, 0x38, 0x01, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x17, 0x37, 0x18, 0x28, 0x11, 0x19, 0x29, 0x0A, 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x3E, 0x1F,
0x2F, 0x12, 0x1A, 0x2A, 0x32, 0x13, 0x33, 0x15, 0x35, 0x16, 0x1E, 0x2E, 0x36, 0x1B, 0x2B, 0x1D,
0x2D,
];
pub(crate) static huff_b47_cb: [u16; 10] = [2, 9, 1, 1, 3, 4, 6, 14, 22, 12];
pub(crate) static huff_b47_xlat: [u16; 63] = [
0, 1, 2, 62, 63, 3, 4, 60, 61, 5, 6, 7, 57, 58, 59, 8, 9, 10, 11, 12, 26, 27, 37, 38, 52, 53,
54, 55, 56, 13, 14, 15, 16, 17, 18, 25, 28, 29, 30, 31, 33, 34, 35, 36, 39, 46, 47, 48, 49, 50,
51, 19, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44, 45,
];
pub(crate) static huff_b52_cb: [u16; 11] = [1, 9, 1, 0, 1, 3, 2, 3, 7, 4, 4];
pub(crate) static huff_b52_xlat: [u16; 25] = [
0x00, 0x01, 0x08, 0x38, 0x07, 0x39, 0x0F, 0x30, 0x09, 0x3F, 0x10, 0x31, 0x02, 0x3A, 0x06, 0x0E,
0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16, 0x36,
];
pub(crate) static huff_b53_cb: [u16; 7] = [1, 5, 1, 1, 1, 0, 4];
pub(crate) static huff_b53_xlat: [u16; 7] = [0, 7, 1, 2, 3, 5, 6];
pub(crate) static huff_b56_cb: [u16; 11] = [1, 9, 1, 0, 2, 0, 2, 4, 11, 9, 2];
pub(crate) static huff_b56_xlat: [u16; 31] = [
0, 1, 31, 2, 30, 3, 4, 13, 29, 5, 6, 7, 14, 15, 17, 18, 19, 26, 27, 28, 8, 9, 12, 20, 21, 22,
23, 24, 25, 10, 11,
];
pub(crate) static huff_b62_cb: [u16; 14] = [1, 12, 1, 0, 0, 2, 3, 5, 12, 14, 18, 15, 9, 2];
pub(crate) static huff_b62_xlat: [u16; 81] = [
0x00, 0x40, 0x01, 0x10, 0x04, 0x02, 0x80, 0x50, 0x90, 0x05, 0x06, 0x20, 0x60, 0x44, 0x14, 0x54,
0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0xA0, 0x84, 0x94, 0x64, 0xA4, 0x28, 0x51, 0x45, 0x55,
0x19, 0x12, 0x16, 0x0A, 0x1A, 0x48, 0x58, 0x68, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65,
0x49, 0x59, 0x29, 0x69, 0x42, 0x46, 0x56, 0x88, 0x98, 0xA8, 0xA1, 0xA5, 0x99, 0xA9, 0x52, 0x22,
0x26, 0x66, 0x4A, 0x5A, 0x2A, 0x6A, 0x89, 0x82, 0x92, 0x62, 0x86, 0x96, 0xA6, 0x8A, 0xAA, 0xA2,
0x9A,
];
pub(crate) static huff_b63_cb: [u16; 7] = [1, 5, 1, 1, 1, 0, 4];
pub(crate) static huff_b63_xlat: [u16; 7] = [0, 1, 7, 2, 3, 5, 6];
pub(crate) static huff_b64_cb: [u16; 7] = [1, 5, 1, 1, 1, 1, 2];
pub(crate) static huff_b64_xlat: [u16; 6] = [1, 0, 2, 5, 3, 4];
pub(crate) static huff_b65_cb: [u16; 14] = [1, 12, 1, 0, 0, 2, 2, 2, 6, 12, 34, 92, 54, 20];
pub(crate) static huff_b65_xlat: [u16; 225] = [
0x00, 0xF0, 0x01, 0x10, 0x0F, 0x11, 0xF1, 0x20, 0xE0, 0x02, 0x0E, 0x1F, 0xFF, 0xD0, 0x21, 0xE1,
0x12, 0xF2, 0x07, 0x0A, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x70, 0x90, 0xA0, 0xC0, 0x71, 0x91,
0xC1, 0xD1, 0x32, 0x92, 0xE2, 0x03, 0x13, 0x63, 0x04, 0x06, 0xE6, 0xE7, 0xF7, 0x09, 0x19, 0x39,
0xFA, 0x0C, 0x1C, 0xDD, 0xED, 0xFD, 0x2E, 0x7E, 0x9E, 0x3F, 0x9F, 0x40, 0x50, 0x60, 0xB0, 0x31,
0x41, 0x61, 0xA1, 0xB1, 0x22, 0x42, 0x72, 0xA2, 0xB2, 0xC2, 0xD2, 0x23, 0x33, 0x73, 0xA3, 0xC3,
0xD3, 0xE3, 0xF3, 0x14, 0x24, 0x34, 0x44, 0x74, 0xD4, 0xE4, 0x05, 0x25, 0x45, 0x65, 0x95, 0xA5,
0x16, 0x26, 0x46, 0x76, 0xA6, 0xB6, 0xC6, 0xD6, 0xF6, 0x17, 0x27, 0x37, 0x47, 0x67, 0xA7, 0xD7,
0x29, 0x69, 0xB9, 0xD9, 0xE9, 0xF9, 0x1A, 0x2A, 0x3A, 0x9A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0x3B,
0x6B, 0xEB, 0xFB, 0x2C, 0x6C, 0xEC, 0xFC, 0x1D, 0x2D, 0x4D, 0x6D, 0x9D, 0xAD, 0x3E, 0x4E, 0x6E,
0xAE, 0xCE, 0xEE, 0x4F, 0x5F, 0x6F, 0xDF, 0x51, 0x52, 0x62, 0x43, 0x93, 0xB3, 0x54, 0x94, 0xA4,
0xF4, 0x15, 0x75, 0xB5, 0xE5, 0xF5, 0x36, 0x56, 0x66, 0x96, 0x57, 0x77, 0x49, 0x59, 0xA9, 0xC9,
0x4A, 0x5A, 0x6A, 0x7A, 0xAA, 0xBA, 0x2B, 0x4B, 0x7B, 0x9B, 0xAB, 0xDB, 0x3C, 0x4C, 0x7C, 0x9C,
0xAC, 0xBC, 0xCC, 0x3D, 0x5D, 0x7D, 0xBD, 0xCD, 0x5E, 0xBE, 0xDE, 0xBF, 0xCF, 0x53, 0x64, 0xB4,
0xC4, 0x35, 0x55, 0xC5, 0xD5, 0x97, 0xB7, 0xC7, 0x79, 0x99, 0x5B, 0xBB, 0xCB, 0x5C, 0xDC, 0x7F,
0xAF,
];
pub(crate) static huff_b66_cb: [u16; 14] = [1, 12, 1, 0, 0, 3, 0, 3, 3, 10, 40, 85, 61, 50];
pub(crate) static huff_b66_xlat: [u16; 256] = [
0x00, 0x10, 0x01, 0x11, 0x21, 0x02, 0x12, 0x20, 0x22, 0x13, 0x30, 0x31, 0x41, 0xD1, 0xE1, 0x32,
0x52, 0x03, 0x23, 0x2D, 0x40, 0x50, 0x60, 0x80, 0xD0, 0xE0, 0x51, 0x61, 0xF1, 0x42, 0x62, 0xD2,
0xE2, 0xF2, 0x33, 0x43, 0xC3, 0xD3, 0xE3, 0x04, 0x14, 0xD4, 0xF4, 0x25, 0x35, 0x16, 0x17, 0xF7,
0xD8, 0x1C, 0x3C, 0x0D, 0x1D, 0x3D, 0x5D, 0x0E, 0x1E, 0x2E, 0x7E, 0x2F, 0xC0, 0xF0, 0x71, 0x81,
0x91, 0xC1, 0x72, 0x82, 0x92, 0xB2, 0xC2, 0x53, 0x63, 0x73, 0x93, 0xA3, 0xF3, 0x24, 0x44, 0x64,
0x84, 0xA4, 0xB4, 0x05, 0x15, 0x95, 0xD5, 0x06, 0x26, 0x36, 0x46, 0x96, 0xD6, 0xE6, 0xF6, 0x07,
0x27, 0x37, 0xD7, 0xE7, 0x08, 0x18, 0x28, 0x38, 0xE8, 0xF8, 0x09, 0x19, 0x29, 0xE9, 0xF9, 0x0A,
0x1A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0xDB, 0xEB, 0xFB, 0x2C, 0x4C, 0x5C, 0x7C, 0x8C, 0x4D, 0x6D,
0x8D, 0x9D, 0xFD, 0x3E, 0x5E, 0x6E, 0x8E, 0x9E, 0xEE, 0x0F, 0x1F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
0xCF, 0x70, 0xA1, 0xA2, 0x83, 0xB3, 0x34, 0x74, 0xC4, 0xE4, 0x55, 0x65, 0x85, 0xA5, 0xC5, 0xE5,
0xF5, 0x56, 0x66, 0x76, 0x86, 0xA6, 0xC6, 0x57, 0x67, 0x77, 0x97, 0xA7, 0x48, 0x88, 0x98, 0x49,
0x59, 0x79, 0x99, 0x3A, 0x4A, 0x8A, 0xBA, 0xFA, 0x2B, 0x7B, 0x0C, 0xAC, 0xBC, 0xCC, 0xEC, 0x7D,
0xAD, 0xBD, 0xDD, 0x4E, 0xBE, 0xCE, 0xFE, 0x8F, 0x9F, 0xAF, 0xBF, 0xDF, 0xEF, 0xFF, 0x90, 0xA0,
0xB0, 0xB1, 0x54, 0x94, 0x45, 0x75, 0xB5, 0xB6, 0x47, 0x87, 0xB7, 0xC7, 0x58, 0x68, 0x78, 0xA8,
0xB8, 0xC8, 0x39, 0x69, 0x89, 0xA9, 0xB9, 0xC9, 0xD9, 0x2A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0x3B,
0x4B, 0x5B, 0x6B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0x6C, 0x9C, 0xDC, 0xFC, 0xCD, 0xED, 0xAE, 0xDE,
];
pub(crate) static huff_b67_cb: [u16; 10] = [2, 9, 1, 2, 1, 4, 7, 10, 26, 12];
pub(crate) static huff_b67_xlat: [u16; 63] = [
0, 1, 63, 62, 2, 3, 60, 61, 4, 5, 6, 7, 57, 58, 59, 8, 9, 10, 11, 12, 52, 53, 54, 55, 56, 13,
14, 15, 16, 17, 18, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 46, 47, 48, 49, 50,
51, 19, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44, 45,
];
pub(crate) static huff_b71_cb: [u16; 14] = [1, 12, 1, 0, 0, 1, 7, 0, 19, 5, 13, 23, 0, 12];
pub(crate) static huff_b71_xlat: [u16; 81] = [
0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70, 0xF0, 0xC4, 0x14, 0x34,
0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D, 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43,
0xC3, 0x54, 0x74, 0xDC, 0xFC, 0xF1, 0xC5, 0x15, 0x1D, 0x53, 0xC7, 0x37, 0x4F, 0x3F, 0xD4, 0xF4,
0x5C, 0x7C, 0x51, 0xD1, 0x71, 0x45, 0x55, 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0xF3, 0x47,
0x17, 0x77, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF,
0x7F,
];
pub(crate) static huff_b73_cb: [u16; 13] = [1, 11, 1, 0, 0, 0, 1, 4, 9, 4, 103, 110, 24];
pub(crate) static huff_b73_xlat: [u16; 256] = [
0x00, 0x40, 0x10, 0x04, 0x01, 0x05, 0x50, 0x14, 0x54, 0x41, 0x11, 0x51, 0x45, 0x15, 0x55, 0x44,
0x95, 0x6A, 0x03, 0x80, 0xC0, 0x90, 0xD0, 0x94, 0xD4, 0x24, 0x64, 0x58, 0x91, 0xA1, 0x85, 0xD5,
0x25, 0x65, 0xA5, 0xE5, 0x75, 0xB5, 0xF5, 0x19, 0x59, 0x99, 0xD9, 0x69, 0xA9, 0xE9, 0x79, 0xB9,
0xF9, 0x4D, 0x5D, 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x02, 0x42, 0x52, 0x06, 0x46,
0x16, 0x56, 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 0x76, 0xB6, 0xF6, 0x1A, 0x5A, 0x9A, 0xDA, 0xAA,
0xEA, 0x7A, 0xBA, 0xFA, 0x5E, 0x9E, 0xDE, 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x07, 0x47, 0x57,
0x97, 0xD7, 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B, 0xAB, 0xEB, 0x7B, 0xBB,
0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xBF, 0xFF, 0x20, 0x60, 0x70, 0xB0, 0xF0, 0x84,
0xC4, 0xA4, 0xE4, 0x74, 0xB4, 0xF4, 0x08, 0x88, 0x18, 0x98, 0xD8, 0x68, 0xA8, 0xE8, 0x78, 0xB8,
0xF8, 0x1C, 0x5C, 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, 0x81, 0xD1, 0x21, 0x61,
0xE1, 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x09, 0x49, 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x8D, 0xCD, 0x1D,
0x2D, 0x3D, 0x92, 0xD2, 0x22, 0x62, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 0x0A, 0x4A,
0x8A, 0xCA, 0x2A, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x13, 0x53, 0x93, 0xD3, 0x63,
0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x87, 0xC7, 0x17, 0x27, 0x37, 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B,
0x3B, 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x2F, 0x3F, 0xA0, 0xE0, 0x30, 0x34, 0x48, 0xC8, 0x28, 0x38,
0x0C, 0x4C, 0x8C, 0xCC, 0x2C, 0xC1, 0x31, 0x82, 0xC2, 0x12, 0x32, 0x43, 0x83, 0xC3, 0x23, 0x33,
];
pub(crate) static huff_b74_cb: [u16; 8] = [1, 6, 1, 0, 2, 2, 2, 4];
pub(crate) static huff_b74_xlat: [u16; 11] = [0, 1, 15, 2, 14, 5, 13, 3, 4, 11, 12];
pub(crate) static huff_b75_cb: [u16; 13] = [2, 12, 1, 4, 0, 0, 0, 8, 11, 24, 53, 64, 60];
pub(crate) static huff_b75_xlat: [u16; 225] = [
0x00, 0x10, 0xF0, 0x01, 0x0F, 0x20, 0xE0, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 0xFF, 0xD0, 0x21, 0xE1,
0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31,
0xD1, 0x22, 0xE2, 0x13, 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0C, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F, 0xDF,
0x50, 0xB0, 0x41, 0x61, 0x71, 0x91, 0xA1, 0xC1, 0x32, 0x62, 0x72, 0x92, 0xA2, 0xD2, 0x23, 0xD3,
0xE3, 0x14, 0xF4, 0x05, 0x16, 0x26, 0xE6, 0xF6, 0x17, 0x27, 0xE7, 0xF7, 0x19, 0x29, 0xF9, 0x0A,
0x1A, 0x2A, 0xFA, 0x0B, 0x1C, 0x2C, 0xFC, 0x2D, 0x3D, 0xED, 0x3E, 0x4E, 0x7E, 0x9E, 0xDE, 0x4F,
0x6F, 0x7F, 0x9F, 0xAF, 0xCF, 0x51, 0xB1, 0x42, 0x52, 0xB2, 0xC2, 0x33, 0x63, 0x73, 0x93, 0xA3,
0xB3, 0xC3, 0x24, 0x34, 0x74, 0xA4, 0xD4, 0xE4, 0x15, 0x25, 0x65, 0x95, 0xE5, 0xF5, 0x36, 0xD6,
0x37, 0x47, 0xC7, 0xD7, 0x39, 0x59, 0xB9, 0xC9, 0xD9, 0xE9, 0x3A, 0x6A, 0xDA, 0xEA, 0x1B, 0x2B,
0x9B, 0xAB, 0xEB, 0xFB, 0x6C, 0x7C, 0x9C, 0xAC, 0xEC, 0x4D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0xDD,
0x5E, 0x6E, 0xAE, 0xCE, 0x5F, 0x43, 0x53, 0x44, 0x54, 0x64, 0x94, 0xB4, 0xC4, 0x35, 0x45, 0x55,
0x75, 0xA5, 0xB5, 0xC5, 0xD5, 0x46, 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0x67, 0x77,
0x97, 0xA7, 0xB7, 0x49, 0x69, 0x79, 0x99, 0xA9, 0x4A, 0x5A, 0x7A, 0x9A, 0xAA, 0xBA, 0xCA, 0x3B,
0x4B, 0x5B, 0x6B, 0x7B, 0xBB, 0xCB, 0xDB, 0x3C, 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0x5D, 0xCD, 0xBE,
0xBF,
];
pub(crate) static huff_b77_cb: [u16; 12] = [2, 11, 1, 0, 4, 6, 10, 12, 7, 15, 4, 4];
pub(crate) static huff_b77_xlat: [u16; 63] = [
0, 1, 2, 62, 63, 3, 4, 5, 59, 60, 61, 6, 7, 8, 9, 10, 54, 55, 56, 57, 58, 11, 12, 13, 14, 15,
16, 47, 49, 50, 51, 52, 53, 17, 18, 19, 20, 45, 46, 48, 21, 22, 23, 24, 25, 26, 27, 37, 38, 39,
40, 41, 42, 43, 44, 28, 29, 30, 35, 31, 33, 34, 36,
];
pub(crate) struct SpecCodeTab {
pub(crate) group_size: u8,
pub(crate) num_coeffs: u8,
pub(crate) bits: u8,
pub(crate) is_signed: u8,
pub(crate) redirect: i32,
pub(crate) cb: Option<&'static [u16]>,
pub(crate) xlat: Option<&'static [u16]>,
}
impl SpecCodeTab {
fn new(
group_size: u8,
num_coeffs: u8,
bits: u8,
is_signed: u8,
redirect: i32,
cb: Option<&'static [u16]>,
xlat: Option<&'static [u16]>,
) -> SpecCodeTab {
SpecCodeTab {
group_size,
num_coeffs,
bits,
is_signed,
redirect,
cb,
xlat,
}
}
}
lazy_static! {
pub(crate) static ref SPECTRA_TABS: [SpecCodeTab; 112] = [
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_a01_cb), Some(&huff_a01_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a02_cb), Some(&huff_a02_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a03_cb), Some(&huff_a03_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a04_cb), Some(&huff_a04_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a05_cb), Some(&huff_a05_xlat)), SpecCodeTab::new(1, 1, 4, 0, -1, Some(&huff_a06_cb), Some(&huff_a06_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a07_cb), Some(&huff_a07_xlat)),
SpecCodeTab::new(4, 4, 2, 1, -1, Some(&huff_a11_cb), Some(&huff_a11_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a12_cb), Some(&huff_a12_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a13_cb), Some(&huff_a13_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a14_cb), Some(&huff_a14_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a15_cb), Some(&huff_a15_xlat)), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_a16_cb), Some(&huff_a16_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a17_cb), Some(&huff_a17_xlat)),
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_a21_cb), Some(&huff_a21_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a22_cb), Some(&huff_a22_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a23_cb), Some(&huff_a23_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a24_cb), None), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a25_cb), Some(&huff_a25_xlat)), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_a26_cb), Some(&huff_a26_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a27_cb), Some(&huff_a27_xlat)),
SpecCodeTab::new(1, 2, 2, 1, -1, Some(&huff_a31_cb), Some(&huff_a31_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a32_cb), Some(&huff_a32_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a33_cb), Some(&huff_a33_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a34_cb), Some(&huff_a34_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a35_cb), Some(&huff_a35_xlat)), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_a36_cb), Some(&huff_a36_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a37_cb), Some(&huff_a37_xlat)),
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_a41_cb), Some(&huff_a41_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a42_cb), Some(&huff_a42_xlat)), SpecCodeTab::new(1, 1, 3, 1, -1, Some(&huff_a43_cb), Some(&huff_a43_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a44_cb), Some(&huff_a44_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a45_cb), Some(&huff_a45_xlat)), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_a46_cb), Some(&huff_a46_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a47_cb), Some(&huff_a47_xlat)),
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_a51_cb), Some(&huff_a51_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a52_cb), Some(&huff_a52_xlat)), SpecCodeTab::new(1, 1, 3, 1, -1, Some(&huff_a43_cb), Some(&huff_a53_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a54_cb), Some(&huff_a54_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_a55_cb), Some(&huff_a55_xlat)), SpecCodeTab::new(1, 1, 5, 1, -1, Some(&huff_a56_cb), Some(&huff_a56_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a57_cb), Some(&huff_a57_xlat)),
SpecCodeTab::new(2, 4, 2, 1, -1, Some(&huff_a61_cb), Some(&huff_a61_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a62_cb), Some(&huff_a62_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_a63_cb), Some(&huff_a63_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a64_cb), Some(&huff_a64_xlat)), SpecCodeTab::new(1, 1, 4, 1, -1, Some(&huff_a65_cb), Some(&huff_a65_xlat)), SpecCodeTab::new(1, 1, 5, 1, -1, Some(&huff_a66_cb), Some(&huff_a66_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_a67_cb), Some(&huff_a67_xlat)),
SpecCodeTab::new(1, 2, 1, 0, -1, Some(&huff_a71_cb), None), SpecCodeTab::new(2, 4, 2, 0, -1, Some(&huff_a72_cb), Some(&huff_a72_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_a73_cb), Some(&huff_a73_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_a74_cb), Some(&huff_a74_xlat)), SpecCodeTab::new(1, 1, 4, 1, -1, Some(&huff_a75_cb), Some(&huff_a75_xlat)), SpecCodeTab::new(2, 2, 4, 0, -1, Some(&huff_a76_cb), Some(&huff_a76_xlat)), SpecCodeTab::new(4, 1, 6, 1, 6, None, None),
SpecCodeTab::new(4, 4, 2, 1, -1, Some(&huff_b01_cb), Some(&huff_b01_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_b02_cb), Some(&huff_b02_xlat)), SpecCodeTab::new(4, 2, 3, 1, -1, Some(&huff_b03_cb), Some(&huff_b03_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_b04_cb), Some(&huff_b04_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_b05_cb), Some(&huff_b05_xlat)), SpecCodeTab::new(1, 1, 4, 0, 5, None, None), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_b07_cb), Some(&huff_b07_xlat)),
SpecCodeTab::new(1, 4, 2, 1, 14, None, None), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_b12_cb), Some(&huff_b12_xlat)), SpecCodeTab::new(1, 2, 3, 1, 9, None, None), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_b14_cb), Some(&huff_b14_xlat)), SpecCodeTab::new(1, 2, 4, 1, 11, None, None), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_b16_cb), Some(&huff_b16_xlat)), SpecCodeTab::new(1, 1, 6, 1, 6, None, None),
SpecCodeTab::new(4, 4, 2, 1, 28, None, None), SpecCodeTab::new(4, 4, 2, 0, 22, None, None), SpecCodeTab::new(1, 2, 3, 1, 2, None, None), SpecCodeTab::new(1, 2, 4, 1, 31, None, None), SpecCodeTab::new(2, 2, 4, 1, 60, None, None), SpecCodeTab::new(2, 2, 4, 0, -1, Some(&huff_b26_cb), Some(&huff_b26_xlat)), SpecCodeTab::new(4, 1, 6, 1, 6, None, None),
SpecCodeTab::new(1, 4, 2, 1, 35, None, None), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_b32_cb), Some(&huff_b32_xlat)), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_b33_cb), Some(&huff_b33_xlat)), SpecCodeTab::new(2, 2, 4, 1, 59, None, None), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_b35_cb), Some(&huff_b35_xlat)), SpecCodeTab::new(1, 2, 4, 0, 75, None, None), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_b37_cb), Some(&huff_b37_xlat)),
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_b41_cb), Some(&huff_b41_xlat)), SpecCodeTab::new(4, 2, 3, 1, -1, Some(&huff_b42_cb), Some(&huff_b42_xlat)), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_b43_cb), Some(&huff_b43_xlat)), SpecCodeTab::new(4, 2, 4, 1, 66, None, None), SpecCodeTab::new(1, 1, 3, 0, 32, None, None), SpecCodeTab::new(1, 2, 4, 0, 12, None, None), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_b47_cb), Some(&huff_b47_xlat)),
SpecCodeTab::new(2, 4, 2, 1, 42, None, None), SpecCodeTab::new(1, 2, 3, 1, -1, Some(&huff_b52_cb), Some(&huff_b52_xlat)), SpecCodeTab::new(4, 1, 3, 1, -1, Some(&huff_b53_cb), Some(&huff_b53_xlat)), SpecCodeTab::new(1, 1, 3, 0, 17, None, None), SpecCodeTab::new(1, 1, 3, 0, 39, None, None), SpecCodeTab::new(1, 1, 5, 1, -1, Some(&huff_b56_cb), Some(&huff_b56_xlat)), SpecCodeTab::new(2, 1, 6, 1, 62, None, None),
SpecCodeTab::new(1, 4, 2, 1, 28, None, None), SpecCodeTab::new(1, 4, 2, 0, -1, Some(&huff_b62_cb), Some(&huff_b62_xlat)), SpecCodeTab::new(1, 1, 3, 1, -1, Some(&huff_b63_cb), Some(&huff_b63_xlat)), SpecCodeTab::new(1, 1, 3, 0, -1, Some(&huff_b64_cb), Some(&huff_b64_xlat)), SpecCodeTab::new(4, 2, 4, 1, -1, Some(&huff_b65_cb), Some(&huff_b65_xlat)), SpecCodeTab::new(1, 2, 4, 0, -1, Some(&huff_b66_cb), Some(&huff_b66_xlat)), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_b67_cb), Some(&huff_b67_xlat)),
SpecCodeTab::new(1, 4, 2, 1, -1, Some(&huff_b71_cb), Some(&huff_b71_xlat)), SpecCodeTab::new(4, 4, 2, 0, 78, None, None), SpecCodeTab::new(4, 4, 2, 0, -1, Some(&huff_b73_cb), Some(&huff_b73_xlat)), SpecCodeTab::new(1, 1, 4, 1, -1, Some(&huff_b74_cb), Some(&huff_b74_xlat)), SpecCodeTab::new(1, 2, 4, 1, -1, Some(&huff_b75_cb), Some(&huff_b75_xlat)), SpecCodeTab::new(1, 1, 5, 1, 47, None, None), SpecCodeTab::new(1, 1, 6, 1, -1, Some(&huff_b77_cb), Some(&huff_b77_xlat)), ];
pub(crate) static ref SPEC_VLC_TABS: Vec<Option<Box<[ReadHuffmanTree<BigEndian, u16>]>>> = {
let mut tabs: Vec<Option<Box<[ReadHuffmanTree<BigEndian, u16>]>>> = vec![];
for i in 0..SPECTRA_TABS.len() {
if let Some(cb) = &SPECTRA_TABS[i].cb {
let tab = build_canonical_huff(cb, SPECTRA_TABS[i].xlat);
tabs.push(Some(tab));
} else {
tabs.push(None);
}
}
tabs
};
}
fn build_canonical_huff(
cb: &'static [u16],
xlat: Option<&'static [u16]>,
) -> Box<[ReadHuffmanTree<BigEndian, u16>]> {
let mut codes: [u16; 256] = [0; 256];
let mut bits: [u8; 256] = [0; 256];
let mut code: u16 = 0;
let mut index: usize = 0;
let mut cb_offset = 0;
let min_len = cb[cb_offset];
cb_offset += 1;
let max_len = cb[cb_offset];
cb_offset += 1;
for b in min_len..=max_len {
let mut i = cb[cb_offset];
cb_offset += 1;
while i > 0 {
assert!(index < 256);
bits[index] = b as _;
codes[index] = code;
code += 1;
index += 1;
i -= 1;
}
code <<= 1;
}
build_huffman(&codes, &bits, xlat)
}
pub(crate) const NOISE_TAB: [f32; 1024] = [
-0.01358032,
-0.05593872,
0.01696777,
-0.14871216,
-0.26412964,
-0.09893799,
0.25723267,
0.02008057,
-0.72235107,
-0.44351196,
-0.22985840,
0.16833496,
0.46902466,
0.05917358,
-0.15179443,
0.41299438,
-0.01287842,
0.13360596,
0.43557739,
-0.09530640,
-0.58422852,
0.39266968,
-0.08343506,
-0.25604248,
0.22848511,
0.26013184,
-0.65588379,
0.17288208,
-0.08673096,
-0.05203247,
0.07299805,
-0.28665161,
-0.35806274,
0.06552124,
-0.09387207,
0.21099854,
-0.28347778,
-0.72402954,
0.05050659,
-0.10635376,
-0.18853760,
0.29724121,
0.20703125,
-0.29791260,
-0.37634277,
0.47970581,
-0.09976196,
0.32641602,
-0.29248047,
-0.28237915,
0.26028442,
-0.36157227,
0.22042847,
-0.03222656,
-0.37268066,
-0.03759766,
0.09909058,
0.23284912,
0.19320679,
0.14453125,
-0.02139282,
-0.19702148,
0.31533813,
-0.16741943,
0.35031128,
-0.35656738,
-0.66128540,
-0.00701904,
0.20898438,
0.26837158,
-0.33706665,
-0.04568481,
0.12600708,
0.10284424,
0.07321167,
-0.18280029,
0.38101196,
0.21301270,
0.04541016,
0.01156616,
-0.26391602,
-0.02346802,
-0.22125244,
0.29760742,
-0.36233521,
-0.31314087,
-0.13967896,
-0.11276245,
-0.19433594,
0.34490967,
0.02343750,
0.21963501,
-0.02777100,
-0.67678833,
-0.08999634,
0.14233398,
-0.27697754,
0.51422119,
-0.05047607,
0.48327637,
0.37167358,
-0.60806274,
0.18728638,
-0.15191650,
0.00637817,
0.02832031,
-0.15618896,
0.60644531,
0.21826172,
0.06384277,
-0.31863403,
0.08816528,
0.15447998,
-0.07015991,
-0.08154297,
-0.40966797,
-0.39785767,
-0.11709595,
0.22052002,
0.18466187,
-0.17257690,
0.03759766,
-0.06195068,
0.00433350,
0.12176514,
0.34011841,
0.25610352,
-0.05294800,
0.41033936,
0.16854858,
-0.76187134,
0.13845825,
-0.19418335,
-0.21524048,
-0.44412231,
-0.08160400,
-0.28195190,
-0.01873779,
0.15524292,
-0.37438965,
-0.44860840,
0.43096924,
-0.24746704,
0.49856567,
0.14859009,
0.38159180,
0.20541382,
-0.39175415,
-0.65850830,
-0.43716431,
0.13037109,
-0.05111694,
0.39956665,
0.21447754,
-0.04861450,
0.33654785,
0.10589600,
-0.88085938,
-0.30822754,
0.38577271,
0.30047607,
0.38836670,
0.09118652,
-0.36477661,
-0.01641846,
-0.23031616,
0.26058960,
0.18859863,
-0.21868896,
-0.17861938,
-0.29754639,
0.09777832,
0.10806274,
-0.51605225,
0.00076294,
0.13259888,
0.11090088,
-0.24084473,
0.24957275,
0.01379395,
-0.04141235,
-0.04937744,
0.57394409,
0.27410889,
0.27587891,
0.45013428,
-0.32592773,
0.11160278,
-0.00970459,
0.29092407,
0.03356934,
-0.70925903,
0.04882812,
0.43499756,
0.07720947,
-0.27554321,
-0.01742554,
-0.08413696,
-0.04028320,
-0.52850342,
-0.07330322,
0.05181885,
0.21362305,
-0.18765259,
0.07058716,
-0.03009033,
0.32662964,
0.27023315,
-0.28002930,
0.17568970,
0.03338623,
0.30242920,
-0.03921509,
0.32174683,
-0.23733521,
0.08575439,
-0.38269043,
0.09194946,
-0.07238770,
0.17941284,
-0.51278687,
-0.25146484,
0.19790649,
-0.19195557,
0.16549683,
0.42456055,
0.39129639,
-0.02868652,
0.17980957,
0.24902344,
-0.76583862,
-0.20959473,
0.61013794,
0.37011719,
0.36859131,
-0.04486084,
0.10678101,
-0.15994263,
-0.05328369,
0.28463745,
-0.06420898,
-0.36987305,
-0.28009033,
-0.11764526,
0.04312134,
-0.08038330,
0.04885864,
-0.03067017,
-0.00042725,
0.34289551,
-0.00988770,
0.34838867,
0.32516479,
-0.16271973,
0.38269043,
0.03240967,
0.12417603,
-0.14331055,
-0.34902954,
-0.18325806,
0.29421997,
0.44284058,
0.75170898,
-0.67245483,
-0.12176514,
0.27914429,
-0.29806519,
0.19863892,
0.30087280,
0.22680664,
-0.36633301,
-0.32534790,
-0.57553101,
-0.16641235,
0.43811035,
0.08331299,
0.15942383,
0.26516724,
-0.24240112,
-0.11761475,
-0.16827393,
-0.14260864,
0.46343994,
0.11804199,
-0.55514526,
-0.02520752,
-0.14309692,
0.00448608,
0.02749634,
-0.30545044,
0.70965576,
0.45108032,
0.66439819,
-0.68255615,
-0.12496948,
0.09146118,
-0.21109009,
-0.23791504,
0.79943848,
-0.35205078,
-0.24963379,
0.18719482,
-0.19079590,
0.07458496,
0.07623291,
-0.28781128,
-0.37121582,
-0.19580078,
-0.01773071,
-0.16717529,
0.13040161,
0.14672852,
0.42379761,
0.03582764,
0.11431885,
0.05145264,
0.44702148,
0.08963013,
0.01367188,
-0.54519653,
-0.12692261,
0.21176147,
0.04925537,
0.30670166,
-0.11029053,
0.19555664,
-0.27740479,
0.23043823,
0.15554810,
-0.19299316,
-0.25729370,
0.17800903,
-0.03579712,
-0.05065918,
-0.06933594,
-0.09500122,
-0.07821655,
0.23889160,
-0.31900024,
0.03073120,
-0.00415039,
0.61315918,
0.37176514,
-0.13442993,
-0.15536499,
-0.19216919,
-0.37899780,
0.19992065,
0.02630615,
-0.12573242,
0.25927734,
-0.02447510,
0.29629517,
-0.40731812,
-0.17333984,
0.24310303,
-0.10607910,
0.14828491,
0.08792114,
-0.18743896,
-0.05572510,
-0.04833984,
0.10473633,
-0.29028320,
-0.67687988,
-0.28170776,
-0.41687012,
0.05413818,
-0.23284912,
0.09555054,
-0.08969116,
-0.15112305,
0.12738037,
0.35986328,
0.28948975,
0.30691528,
0.23956299,
0.06973267,
-0.31198120,
-0.18450928,
0.22280884,
-0.21600342,
0.23522949,
-0.61840820,
-0.13012695,
0.26412964,
0.47320557,
-0.26440430,
0.38757324,
0.17352295,
-0.26104736,
-0.25866699,
-0.12274170,
-0.29733276,
0.07687378,
0.18588257,
-0.08880615,
0.31185913,
0.05313110,
-0.10885620,
-0.14901733,
-0.22323608,
-0.08538818,
0.19812012,
0.19732666,
-0.18927002,
0.29058838,
0.25555420,
-0.48599243,
0.18768311,
0.01345825,
0.34887695,
0.21530151,
0.19857788,
0.18661499,
-0.01394653,
-0.09063721,
-0.38781738,
0.27160645,
-0.20379639,
-0.32119751,
-0.23889160,
0.27096558,
0.24951172,
0.07922363,
0.07479858,
-0.50946045,
0.10220337,
0.58364868,
-0.19503784,
-0.18560791,
-0.01165771,
0.47195435,
0.22430420,
-0.38635254,
-0.03732300,
-0.09179688,
0.06991577,
0.15106201,
0.20605469,
-0.05969238,
-0.41821289,
0.12231445,
-0.04672241,
-0.05117798,
-0.11523438,
-0.51849365,
-0.04077148,
0.44284058,
-0.64086914,
0.17019653,
0.02236938,
0.22848511,
-0.23214722,
-0.32354736,
-0.14068604,
-0.29690552,
-0.19891357,
0.02774048,
-0.20965576,
-0.52191162,
-0.19299316,
-0.07290649,
0.49053955,
-0.22302246,
0.05642700,
0.13122559,
-0.20819092,
-0.83590698,
-0.08181763,
0.26797485,
-0.00091553,
-0.09457397,
0.17089844,
-0.27020264,
0.30270386,
0.05496216,
0.09564209,
-0.08590698,
0.02130127,
0.35931396,
0.21728516,
-0.15396118,
-0.05053711,
0.02719116,
0.16302490,
0.43212891,
0.10229492,
-0.40820312,
0.21646118,
0.08435059,
-0.11145020,
-0.39962769,
-0.05618286,
-0.10223389,
-0.60839844,
0.33724976,
-0.06341553,
-0.47369385,
-0.32852173,
0.05242920,
0.19635010,
-0.19137573,
-0.67901611,
0.16180420,
0.05133057,
-0.22283936,
0.09646606,
0.24288940,
-0.45007324,
0.08804321,
0.14053345,
0.22619629,
-0.01000977,
0.36355591,
-0.19863892,
-0.30364990,
-0.24118042,
-0.57461548,
0.26498413,
0.04345703,
-0.09796143,
-0.47714233,
-0.23739624,
0.18737793,
0.08926392,
-0.02795410,
0.00305176,
-0.08700562,
-0.38711548,
0.03222656,
0.10940552,
-0.41906738,
-0.01620483,
-0.47061157,
0.37985229,
-0.21624756,
0.47976685,
-0.20046997,
-0.62533569,
-0.26907349,
-0.02877808,
0.00671387,
-0.29071045,
-0.24685669,
-0.15722656,
-0.26055908,
0.29968262,
0.28225708,
-0.08990479,
-0.16748047,
-0.46759033,
-0.25067139,
-0.25183105,
-0.45932007,
0.05828857,
0.29006958,
0.23840332,
-0.17974854,
0.26931763,
0.10696411,
-0.06848145,
-0.17126465,
-0.10522461,
-0.55386353,
-0.42306519,
-0.07608032,
0.24380493,
0.38586426,
0.16882324,
0.26751709,
0.17303467,
0.35809326,
-0.22094727,
-0.30703735,
-0.28497314,
-0.04321289,
0.15219116,
-0.17071533,
-0.39334106,
0.03439331,
-0.10809326,
-0.30590820,
0.26449585,
-0.07412720,
0.13638306,
-0.01062012,
0.27996826,
0.04397583,
-0.05557251,
-0.56933594,
0.03363037,
-0.00949097,
0.52642822,
-0.44329834,
0.28308105,
-0.05499268,
-0.23312378,
-0.29870605,
-0.05123901,
0.26831055,
-0.35238647,
-0.30993652,
0.34646606,
-0.19775391,
0.44595337,
0.13769531,
0.45358276,
0.19961548,
0.42681885,
0.15722656,
0.00128174,
0.23757935,
0.40988159,
0.25164795,
-0.00732422,
-0.12405396,
-0.43420410,
-0.00402832,
0.34243774,
0.36264038,
0.18807983,
-0.09301758,
-0.10296631,
0.05532837,
-0.31652832,
0.14337158,
0.35040283,
0.32540894,
0.05728149,
-0.12030029,
-0.25942993,
-0.20312500,
-0.16491699,
-0.46051025,
-0.08004761,
0.50772095,
0.16168213,
0.28439331,
0.08105469,
-0.19104004,
0.38589478,
-0.16400146,
-0.25454712,
0.20281982,
-0.20730591,
-0.06311035,
0.32937622,
0.15032959,
-0.05340576,
0.30487061,
-0.11648560,
0.38009644,
-0.20062256,
0.43466187,
0.01150513,
0.35754395,
-0.13146973,
0.67489624,
0.05212402,
0.27914429,
-0.39431763,
0.75308228,
-0.13366699,
0.24453735,
0.42248535,
-0.65905762,
-0.00546265,
-0.03491211,
-0.13659668,
-0.08294678,
-0.45666504,
0.27188110,
0.12731934,
0.61148071,
0.10449219,
-0.28836060,
0.00091553,
0.24618530,
0.13119507,
0.05685425,
0.17355347,
0.42034912,
0.08514404,
0.24536133,
0.18951416,
-0.19107056,
-0.15036011,
0.02334595,
0.54986572,
0.32321167,
-0.16104126,
-0.03054810,
0.43594360,
0.17309570,
0.61053467,
0.24731445,
0.33334351,
0.15240479,
0.15588379,
0.36425781,
-0.30407715,
-0.13302612,
0.00427246,
0.04171753,
-0.33178711,
0.34216309,
-0.12463379,
-0.02764893,
0.05905151,
-0.31436157,
0.16531372,
0.34542847,
-0.03292847,
0.12527466,
-0.12313843,
-0.13171387,
0.04757690,
-0.45095825,
-0.19085693,
0.35342407,
-0.23239136,
-0.34387207,
0.11264038,
-0.15740967,
0.05273438,
0.74942017,
0.21505737,
0.08514404,
-0.42391968,
-0.19531250,
0.35293579,
0.25305176,
0.15731812,
-0.70324707,
-0.21591187,
0.35604858,
0.14132690,
0.11724854,
0.15853882,
-0.24597168,
0.07019043,
0.02127075,
0.12658691,
0.06390381,
-0.12292480,
0.15441895,
-0.47640991,
0.06195068,
0.58981323,
-0.15151978,
-0.03604126,
-0.45059204,
-0.01672363,
-0.46997070,
0.25750732,
0.18084717,
0.06661987,
0.13253784,
0.67828369,
0.11370850,
0.11325073,
-0.04611206,
-0.07791138,
-0.36544800,
-0.06747437,
-0.31594849,
0.16131592,
0.41983032,
0.11071777,
-0.36889648,
0.30963135,
-0.37875366,
0.58508301,
0.00393677,
0.12338257,
0.03424072,
-0.21728516,
-0.12838745,
-0.46981812,
0.05868530,
-0.25015259,
0.27407837,
0.65240479,
-0.34429932,
-0.15179443,
0.14056396,
0.33505249,
0.28826904,
0.09921265,
0.34390259,
0.13656616,
-0.23608398,
0.00863647,
0.02627563,
-0.19119263,
0.19775391,
-0.07214355,
0.07809448,
0.03454590,
-0.03417969,
0.00033569,
-0.23095703,
0.18673706,
0.05798340,
0.03814697,
-0.04318237,
0.05487061,
0.08633423,
0.55950928,
-0.06347656,
0.10333252,
0.25305176,
0.05853271,
0.12246704,
-0.25543213,
-0.34262085,
-0.36437988,
-0.21304321,
-0.05093384,
0.02777100,
0.07620239,
-0.21215820,
-0.09326172,
0.19021606,
-0.40579224,
-0.01193237,
0.19845581,
-0.35336304,
-0.07397461,
0.20104980,
0.08615112,
-0.44375610,
0.11419678,
0.24453735,
-0.16555786,
-0.05081177,
-0.01406860,
0.27893066,
-0.18692017,
0.07473755,
0.03451538,
-0.39733887,
0.21548462,
-0.22534180,
-0.39651489,
-0.04989624,
-0.57662964,
0.06390381,
0.62020874,
-0.13470459,
0.04345703,
-0.21862793,
-0.02789307,
0.51696777,
-0.27587891,
0.39004517,
0.09857178,
-0.00738525,
0.31317139,
0.00048828,
-0.46572876,
0.29531860,
-0.10009766,
-0.27856445,
0.03594971,
0.25048828,
-0.74584961,
-0.25350952,
-0.03302002,
0.31188965,
0.01571655,
0.46710205,
0.21591187,
0.07260132,
-0.42132568,
-0.53900146,
-0.13674927,
-0.16571045,
-0.34454346,
0.12359619,
-0.11184692,
0.00967407,
0.34576416,
-0.05761719,
0.34848022,
0.17645264,
-0.39395142,
0.10339355,
0.18215942,
0.20697021,
0.59109497,
-0.11560059,
-0.07385254,
0.10397339,
0.35437012,
-0.22863770,
0.01794434,
0.17559814,
-0.17495728,
0.12142944,
0.10928345,
-1.00000000,
-0.01379395,
0.21237183,
-0.27035522,
0.27319336,
-0.37066650,
0.41354370,
-0.40054321,
0.00689697,
0.26321411,
0.39266968,
0.65298462,
0.41625977,
-0.13909912,
0.78375244,
-0.30941772,
0.20169067,
-0.39367676,
0.94021606,
-0.24066162,
0.05557251,
-0.24533081,
-0.05444336,
-0.76754761,
-0.19375610,
-0.11041260,
-0.17532349,
0.16006470,
0.02188110,
0.17465210,
-0.04342651,
-0.56777954,
-0.40988159,
0.26687622,
0.11700439,
-0.00344849,
-0.05395508,
0.37426758,
-0.40719604,
-0.15032959,
-0.01660156,
0.04196167,
-0.04559326,
-0.12969971,
0.12011719,
0.08419800,
-0.11199951,
0.35174561,
0.10275269,
-0.25686646,
0.48446655,
0.03225708,
0.28408813,
-0.18701172,
0.36282349,
-0.03280640,
0.32302856,
0.17233276,
0.48269653,
0.31112671,
-0.04946899,
0.12774658,
0.52685547,
0.10211182,
0.05953979,
0.05999756,
0.20144653,
0.00744629,
0.27316284,
0.24377441,
0.39672852,
0.01702881,
-0.35513306,
0.11364746,
-0.13555908,
0.48880005,
-0.15417480,
-0.09149170,
-0.02615356,
0.46246338,
-0.72250366,
0.22332764,
0.23849487,
-0.25686646,
-0.08514404,
-0.02062988,
-0.34494019,
-0.02297974,
-0.80386353,
-0.08074951,
-0.12689209,
-0.06896973,
0.24099731,
-0.35650635,
-0.09558105,
0.29254150,
0.23132324,
-0.16726685,
0.00000000,
-0.24237061,
0.30899048,
0.29504395,
-0.20898438,
0.17059326,
-0.07672119,
-0.14395142,
0.05572510,
0.20602417,
-0.51550293,
-0.03167725,
-0.48840332,
-0.20425415,
0.14144897,
0.07275391,
-0.76669312,
-0.22488403,
0.20651245,
0.03259277,
0.00085449,
0.03039551,
0.47555542,
0.38351440,
];
pub(crate) const PWC_LEVS: [f32; 16] = [
3.96875, 3.15625, 2.5, 2.0, 1.59375, 1.25, 1.0, 0.78125, 0.625, 0.5, 0.40625, 0.3125, 0.25,
0.1875, 0.15625, 0.0,
];
pub(crate) const SUBBAND_TO_QU: [u8; 17] = [
0, 8, 12, 16, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
];
pub(crate) const MOD23_LUT: [i32; 26] = [
23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0,
];
pub(crate) const IPQF_COEFFS1: [[f32; 16]; PQF_FIR_LEN] = [
[
-5.8336207e-7,
-8.0604229e-7,
-4.2005411e-7,
-4.4400572e-8,
3.226247e-8,
3.530856e-8,
1.2660377e-8,
0.000010516783,
-0.000011838618,
6.005389e-7,
0.0000014333754,
0.0000023108685,
0.0000032569742,
0.0000046192422,
0.0000063894258,
0.0000070302972,
],
[
-0.0000091622824,
-0.000010502935,
-0.0000079212787,
-0.0000041712024,
-0.0000026336629,
-0.0000015432918,
-5.7168614e-7,
0.0000018111954,
0.000023530851,
0.00002780562,
0.000032302323,
0.000036968919,
0.000041575615,
0.000045337845,
0.000046043948,
0.000048585582,
],
[
-0.000064464548,
-0.000068306952,
-0.000073081472,
-0.00007612785,
-0.000074850752,
-0.000070208509,
-0.000062285151,
-0.000058270442,
-0.000056296329,
-0.000049888811,
-0.000035615325,
-0.000018532943,
0.0000016657353,
0.00002610587,
0.000053397067,
0.00008079566,
],
[
-0.00054488552,
-0.00052537228,
-0.00049731287,
-0.00045778,
-0.00040612387,
-0.00034301577,
-0.00026866337,
-0.00018248901,
-0.000084307925,
0.000025081157,
0.00014135583,
0.00026649953,
0.00039945057,
0.00053928449,
0.00068422867,
0.00083093712,
],
[
-0.0014771431,
-0.001283227,
-0.0010566821,
-0.00079780724,
-0.00050782406,
-0.00018855913,
0.00015771533,
0.00052769453,
0.00091862219,
0.001326357,
0.0017469483,
0.0021754825,
0.0026067684,
0.0030352892,
0.0034549395,
0.0038591374,
],
[
-0.0022995141,
-0.001443546,
-0.00049266568,
0.00055068987,
0.001682895,
0.0028992873,
0.0041943151,
0.0055614738,
0.0069935122,
0.0084823566,
0.010018963,
0.011593862,
0.013196872,
0.014817309,
0.016444042,
0.018065533,
],
[
-0.034426283,
-0.034281436,
-0.033992987,
-0.033563249,
-0.032995768,
-0.032295227,
-0.031467363,
-0.030518902,
-0.02945766,
-0.028291954,
-0.027031265,
-0.025685543,
-0.024265358,
-0.022781773,
-0.021246184,
-0.019670162,
],
[
-0.0030586775,
-0.0037203205,
-0.0042847847,
-0.0047529764,
-0.0051268316,
-0.0054091476,
-0.0056034233,
-0.005714261,
-0.0057445862,
-0.0057025906,
-0.0055920109,
-0.0054194843,
-0.0051914565,
-0.0049146507,
-0.0045959447,
-0.0042418269,
],
[
-0.0016376863,
-0.0017651899,
-0.0018608454,
-0.0019252141,
-0.0019593791,
-0.0019653172,
-0.0019450618,
-0.0018990048,
-0.00183808,
-0.0017501717,
-0.0016481078,
-0.0015320742,
-0.0014046903,
-0.0012685474,
-0.001125814,
-0.00097943726,
],
[
-0.00055432378,
-0.00055472925,
-0.00054783461,
-0.00053276919,
-0.00051135791,
-0.00048466062,
-0.00045358928,
-0.00042499689,
-0.00036942671,
-0.0003392619,
-0.00030001783,
-0.00025986304,
-0.0002197204,
-0.00018116167,
-0.00014691355,
-0.00011279432,
],
[
-0.000064147389,
-0.00006174868,
-0.000054267788,
-0.000047133824,
-0.000042927582,
-0.000039477309,
-0.000036340745,
-0.000029687517,
-0.000049787737,
-0.000041577889,
-0.000033864744,
-0.000026534748,
-0.000019841305,
-0.000014789486,
-0.000013131184,
-0.0000099198869,
],
[
-0.0000062990207,
-0.0000072701259,
-0.000011984052,
-0.000017348082,
-0.000019907106,
-0.000021348773,
-0.000021961965,
-0.000012203576,
-0.000010840992,
4.6299544e-7,
5.2588763e-7,
2.7792686e-7,
-2.3649704e-7,
-0.0000010897784,
-9.171448e-7,
-5.22682e-7,
],
];
pub(crate) const IPQF_COEFFS2: [[f32; 16]; PQF_FIR_LEN] = [
[
5.22682e-7,
9.171448e-7,
0.0000010897784,
2.3649704e-7,
-2.7792686e-7,
-5.2588763e-7,
-4.6299544e-7,
0.000010840992,
-0.000012203576,
-0.000021961965,
-0.000021348773,
-0.000019907106,
-0.000017348082,
-0.000011984052,
-0.0000072701259,
-0.0000062990207,
],
[
0.0000099198869,
0.000013131184,
0.000014789486,
0.000019841305,
0.000026534748,
0.000033864744,
0.000041577889,
0.000049787737,
-0.000029687517,
-0.000036340745,
-0.000039477309,
-0.000042927582,
-0.000047133824,
-0.000054267788,
-0.00006174868,
-0.000064147389,
],
[
0.00011279432,
0.00014691355,
0.00018116167,
0.0002197204,
0.00025986304,
0.00030001783,
0.0003392619,
0.00036942671,
-0.00042499689,
-0.00045358928,
-0.00048466062,
-0.00051135791,
-0.00053276919,
-0.00054783461,
-0.00055472925,
-0.00055432378,
],
[
0.00097943726,
0.001125814,
0.0012685474,
0.0014046903,
0.0015320742,
0.0016481078,
0.0017501717,
0.00183808,
-0.0018990048,
-0.0019450618,
-0.0019653172,
-0.0019593791,
-0.0019252141,
-0.0018608454,
-0.0017651899,
-0.0016376863,
],
[
0.0042418269,
0.0045959447,
0.0049146507,
0.0051914565,
0.0054194843,
0.0055920109,
0.0057025906,
0.0057445862,
-0.005714261,
-0.0056034233,
-0.0054091476,
-0.0051268316,
-0.0047529764,
-0.0042847847,
-0.0037203205,
-0.0030586775,
],
[
0.019670162,
0.021246184,
0.022781773,
0.024265358,
0.025685543,
0.027031265,
0.028291954,
0.02945766,
-0.030518902,
-0.031467363,
-0.032295227,
-0.032995768,
-0.033563249,
-0.033992987,
-0.034281436,
-0.034426283,
],
[
-0.018065533,
-0.016444042,
-0.014817309,
-0.013196872,
-0.011593862,
-0.010018963,
-0.0084823566,
-0.0069935122,
0.0055614738,
0.0041943151,
0.0028992873,
0.001682895,
0.00055068987,
-0.00049266568,
-0.001443546,
-0.0022995141,
],
[
-0.0038591374,
-0.0034549395,
-0.0030352892,
-0.0026067684,
-0.0021754825,
-0.0017469483,
-0.001326357,
-0.00091862219,
0.00052769453,
0.00015771533,
-0.00018855913,
-0.00050782406,
-0.00079780724,
-0.0010566821,
-0.001283227,
-0.0014771431,
],
[
-0.00083093712,
-0.00068422867,
-0.00053928449,
-0.00039945057,
-0.00026649953,
-0.00014135583,
-0.000025081157,
0.000084307925,
-0.00018248901,
-0.00026866337,
-0.00034301577,
-0.00040612387,
-0.00045778,
-0.00049731287,
-0.00052537228,
-0.00054488552,
],
[
-0.00008079566,
-0.000053397067,
-0.00002610587,
-0.0000016657353,
0.000018532943,
0.000035615325,
0.000049888811,
0.000056296329,
-0.000058270442,
-0.000062285151,
-0.000070208509,
-0.000074850752,
-0.00007612785,
-0.000073081472,
-0.000068306952,
-0.000064464548,
],
[
-0.000048585582,
-0.000046043948,
-0.000045337845,
-0.000041575615,
-0.000036968919,
-0.000032302323,
-0.00002780562,
-0.000023530851,
0.0000018111954,
-5.7168614e-7,
-0.0000015432918,
-0.0000026336629,
-0.0000041712024,
-0.0000079212787,
-0.000010502935,
-0.0000091622824,
],
[
-0.0000070302972,
-0.0000063894258,
-0.0000046192422,
-0.0000032569742,
-0.0000023108685,
-0.0000014333754,
-6.005389e-7,
0.000011838618,
0.000010516783,
1.2660377e-8,
3.530856e-8,
3.226247e-8,
-4.4400572e-8,
-4.2005411e-7,
-8.0604229e-7,
-5.8336207e-7,
],
];