Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * ATRAC3+ compatible decoder
  3.  *
  4.  * Copyright (c) 2010-2013 Maxim Poliakovski
  5.  *
  6.  * This file is part of FFmpeg.
  7.  *
  8.  * FFmpeg is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Lesser General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2.1 of the License, or (at your option) any later version.
  12.  *
  13.  * FFmpeg is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Lesser General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Lesser General Public
  19.  * License along with FFmpeg; if not, write to the Free Software
  20.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21.  */
  22.  
  23. #ifndef AVCODEC_ATRAC3PLUS_DATA_H
  24. #define AVCODEC_ATRAC3PLUS_DATA_H
  25.  
  26. #include <stddef.h>
  27. #include <stdint.h>
  28.  
  29. /** VLC tables for wordlen */
  30. static const uint8_t atrac3p_wl_huff_code1[3] = { 0, 2, 3 };
  31.  
  32. static const uint8_t atrac3p_wl_huff_bits1[3] = { 1, 2, 2 };
  33.  
  34. static const uint8_t atrac3p_wl_huff_xlat1[3] = { 0, 1, 7 };
  35.  
  36. static const uint8_t atrac3p_wl_huff_code2[5] = { 0, 4, 5, 6, 7 };
  37.  
  38. static const uint8_t atrac3p_wl_huff_bits2[5] = { 1, 3, 3, 3, 3 };
  39.  
  40. static const uint8_t atrac3p_wl_huff_xlat2[5] = { 0, 1, 2, 6, 7 };
  41.  
  42. static const uint8_t atrac3p_wl_huff_code3[8] = {
  43.     0, 4, 0xC, 0x1E, 0x1F, 0xD, 0xE, 5
  44. };
  45.  
  46. static const uint8_t atrac3p_wl_huff_bits3[8] = { 1, 3, 4, 5, 5, 4, 4, 3 };
  47.  
  48. static const uint8_t atrac3p_wl_huff_code4[8] = {
  49.     0, 4, 0xC, 0xD, 0x1E, 0x1F, 0xE, 5
  50. };
  51.  
  52. static const uint8_t atrac3p_wl_huff_bits4[8] = { 1, 3, 4, 4, 5, 5, 4, 3 };
  53.  
  54. /** VLC tables for scale factor indexes */
  55. static const uint16_t atrac3p_sf_huff_code1[64] = {
  56.         0,     2,     3,     4,     5,   0xC,   0xD,  0xE0,
  57.      0xE1,  0xE2,  0xE3,  0xE4,  0xE5,  0xE6, 0x1CE, 0x1CF,
  58.     0x1D0, 0x1D1, 0x1D2, 0x1D3, 0x1D4, 0x1D5, 0x1D6, 0x1D7,
  59.     0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC, 0x1DD, 0x1DE, 0x1DF,
  60.     0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5, 0x1E6, 0x1E7,
  61.     0x1E8, 0x1E9, 0x1EA, 0x1EB, 0x1EC, 0x1ED, 0x1EE, 0x1EF,
  62.     0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4, 0x1F5, 0x1F6, 0x1F7,
  63.     0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD, 0x1FE, 0x1FF
  64. };
  65.  
  66. static const uint8_t atrac3p_sf_huff_bits1[64] = {
  67.     2, 3, 3, 3, 3, 4, 4, 8, 8, 8, 8, 8, 8, 8, 9, 9,
  68.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  69.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  70.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
  71. };
  72.  
  73. static const uint8_t atrac3p_sf_huff_xlat1[64] = {
  74.      0,  1, 61, 62, 63,  2, 60,  3,  4,  5,  6, 57, 58, 59,  7,  8,
  75.      9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
  76.     25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
  77.     41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56
  78. };
  79.  
  80. static const uint8_t atrac3p_sf_huff_xlat2[64] = {
  81.     0,   1,  2, 62, 63,  3, 61,  4,  5,  6, 57, 58, 59, 60,  7,  8,
  82.     9,  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
  83.     25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
  84.     41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56
  85. };
  86.  
  87. static const uint16_t atrac3p_sf_huff_code2[64] = {
  88.         0,     4,  0x18,  0x19,  0x70, 0x1CA, 0x1CB, 0x1CC,
  89.     0x1CD, 0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2, 0x1D3, 0x1D4,
  90.     0x1D5, 0x1D6, 0x1D7, 0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC,
  91.     0x1DD, 0x1DE, 0x1DF, 0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4,
  92.     0x1E5, 0x1E6, 0x1E7, 0x1E8, 0x1E9, 0x1EA, 0x1EB, 0x1EC,
  93.     0x1ED, 0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4,
  94.     0x1F5, 0x1F6, 0x1F7, 0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC,
  95.     0x1FD, 0x1FE, 0x1FF,  0xE4,  0x71,  0x1A,  0x1B,     5
  96. };
  97.  
  98. static const uint8_t atrac3p_sf_huff_bits2[64] = {
  99.     1, 3, 5, 5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  100.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  101.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  102.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 7, 5, 5, 3
  103. };
  104.  
  105. static const uint16_t atrac3p_sf_huff_code3[64] = {
  106.         0,     2,     3,  0x18,  0x19,  0x70, 0x1CC, 0x1CD,
  107.     0x1CE, 0x1CF, 0x1D0, 0x1D1, 0x1D2, 0x1D3, 0x1D4, 0x1D5,
  108.     0x1D6, 0x1D7, 0x1D8, 0x1D9, 0x1DA, 0x1DB, 0x1DC, 0x1DD,
  109.     0x1DE, 0x1DF, 0x1E0, 0x1E1, 0x1E2, 0x1E3, 0x1E4, 0x1E5,
  110.     0x1E6, 0x1E7, 0x1E8, 0x1E9, 0x1EA, 0x1EB, 0x1EC, 0x1ED,
  111.     0x1EE, 0x1EF, 0x1F0, 0x1F1, 0x1F2, 0x1F3, 0x1F4, 0x1F5,
  112.     0x1F6, 0x1F7, 0x1F8, 0x1F9, 0x1FA, 0x1FB, 0x1FC, 0x1FD,
  113.     0x1FE, 0x1FF,  0x71,  0x72,  0x1A,  0x1B,     4,     5
  114. };
  115.  
  116. static const uint8_t atrac3p_sf_huff_bits3[64] = {
  117.     2, 3, 3, 5, 5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  118.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  119.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
  120.     9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 5, 5, 3, 3
  121. };
  122.  
  123. static const uint16_t atrac3p_sf_huff_code4[16] = {
  124.     0, 2, 3, 4, 5, 0xC, 0xD, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0, 0x3D, 0x3E, 0x3F
  125. };
  126.  
  127. static const uint8_t atrac3p_sf_huff_bits4[16] = {
  128.     2, 3, 3, 3, 3, 4, 4, 6, 6, 6, 6, 6, 0, 6, 6, 6
  129. };
  130.  
  131. static const uint8_t atrac3p_sf_huff_xlat4[16] = {
  132.     0, 1, 13, 14, 15, 2, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11
  133. };
  134.  
  135. static const uint8_t atrac3p_sf_huff_xlat5[16] = {
  136.     0, 1, 2, 14, 15, 3, 13, 4, 5, 6, 7, 9, 8, 10, 11, 12
  137. };
  138.  
  139. static const uint16_t atrac3p_sf_huff_code5[16] = {
  140.     0,    4,  0xC, 0x1C, 0x78, 0x79, 0x7A, 0x7B,
  141.     0, 0x7C, 0x7D, 0x7E, 0x7F, 0x1D, 0xD,     5
  142. };
  143.  
  144. static const uint8_t atrac3p_sf_huff_bits5[16] = {
  145.     1, 3, 4, 5, 7, 7, 7, 7, 0, 7, 7, 7, 7, 5, 4, 3
  146. };
  147.  
  148. static const uint16_t atrac3p_sf_huff_code6[16] = {
  149.     0, 2, 3, 0xC, 0x1C, 0x3C, 0x7C, 0x7D, 0, 0x7E, 0x7F, 0x3D, 0x1D, 0xD, 4, 5
  150. };
  151.  
  152. static const uint8_t atrac3p_sf_huff_bits6[16] = {
  153.     2, 3, 3, 4, 5, 6, 7, 7, 0, 7, 7, 6, 5, 4, 3, 3
  154. };
  155.  
  156. /** VLC tables for code table indexes */
  157. static const uint8_t atrac3p_ct_huff_code1[4] = { 0, 2, 6, 7 };
  158.  
  159. static const uint8_t atrac3p_ct_huff_bits1[4] = { 1, 2, 3, 3 };
  160.  
  161. static const uint8_t atrac3p_ct_huff_code2[8] = { 0, 2, 3, 4, 5, 6, 0xE, 0xF };
  162.  
  163. static const uint8_t atrac3p_ct_huff_bits2[8] = { 2, 3, 3, 3, 3, 3, 4, 4 };
  164.  
  165. static const uint8_t atrac3p_ct_huff_xlat1[8] = { 0, 1, 2, 3, 6, 7, 4, 5 };
  166.  
  167. static const uint8_t atrac3p_ct_huff_code3[8] = {
  168.     0, 4, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF
  169. };
  170.  
  171. static const uint8_t atrac3p_ct_huff_bits3[8] = { 1, 3, 4, 4, 4, 4, 4, 4 };
  172.  
  173. /* weights for quantized word lengths */
  174. static const int8_t atrac3p_wl_weights[6][32] = {
  175.     { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0,
  176.       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  177.     { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0,
  178.       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  179.     { 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 1, 1,
  180.       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
  181.     { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0,
  182.       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  183.     { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0,
  184.       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  185.     { 6, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 2, 2, 1, 1,
  186.       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
  187. };
  188.  
  189. /* weights for quantized scale factors
  190.  * sf_weights[i] = i / (tab_idx + 1)
  191.  * where tab_idx = [1,2] */
  192. static const int8_t atrac3p_sf_weights[2][32] = {
  193.     { 0, 0, 1, 1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,
  194.       8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15 },
  195.     { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4,  4,  5,
  196.       5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10 }
  197. };
  198.  
  199. /** Ungroup table for word length segments.
  200.  *  Numbers in this table tell which coeff belongs to which segment. */
  201. static const uint8_t atrac3p_qu_num_to_seg[32] = {
  202.     0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5,
  203.     5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9
  204. };
  205.  
  206. /** Map quant unit number to subband number */
  207. static const uint8_t atrac3p_qu_to_subband[32] = {
  208.     0, 0, 0, 0, 0, 0, 0, 0, 1, 1,  1,  1,  2,  2,  2, 2,
  209.     3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
  210. };
  211.  
  212. /** Map subband number to number of power compensation groups */
  213. static const int atrac3p_subband_to_num_powgrps[16] = {
  214.     1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5
  215. };
  216.  
  217. /** 3D base shape tables. The values are grouped together as follows:
  218.  *  [num_start_values = 8][num_shape_tables = 16][num_seg_coeffs = 9]
  219.  *  For each of the 8 start values there are 16 different shapes each
  220.  *  9 coefficients long. */
  221. static const int8_t atrac3p_wl_shapes[8][16][9] = {
  222.     { {  0,  0,  0,  0,  0,  0,  0, -2, -1 },
  223.       {  0,  0,  0,  0,  0,  0,  0, -5, -1 },
  224.       {  0,  0,  0, -7,  0,  0,  0,  0,  0 },
  225.       {  0,  0,  0,  0,  0, -7,  0,  0,  0 },
  226.       {  0,  0,  0,  0,  0,  0, -5,  0,  0 },
  227.       {  0,  0,  0,  0, -5,  0,  0,  0,  0 },
  228.       { -7, -7,  0,  0,  0,  0,  0,  0,  0 },
  229.       {  0, -7,  0,  0,  0,  0,  0,  0,  0 },
  230.       { -2, -2, -5,  0,  0,  0,  0,  0,  0 },
  231.       {  0,  0,  0, -2, -5,  0,  0,  0,  0 },
  232.       {  0,  0,  0,  0,  0, -2, -5,  0,  0 },
  233.       {  0,  0,  0, -5,  0,  0,  0,  0,  0 },
  234.       {  0, -2, -7, -2,  0,  0,  0,  0,  0 },
  235.       {  0,  0,  0,  0, -2, -5,  0,  0,  0 },
  236.       {  0,  0,  0, -5, -5,  0,  0,  0,  0 },
  237.       {  0,  0,  0, -5, -2,  0,  0,  0,  0 } },
  238.     { { -1, -5, -3, -2, -1, -1,  0,  0,  0 },
  239.       { -2, -5, -3, -3, -2, -1, -1,  0,  0 },
  240.       {  0, -1, -1, -1,  0,  0,  0,  0,  0 },
  241.       { -1, -3,  0,  0,  0,  0,  0,  0,  0 },
  242.       { -1, -2,  0,  0,  0,  0,  0,  0,  0 },
  243.       { -1, -3, -1,  0,  0,  0,  0,  1,  1 },
  244.       { -1, -5, -3, -3, -2, -1,  0,  0,  0 },
  245.       { -1, -1, -4, -2, -2, -1, -1,  0,  0 },
  246.       { -1, -1, -3, -2, -3, -1, -1, -1,  0 },
  247.       { -1, -4, -2, -3, -1,  0,  0,  0,  0 },
  248.       {  0, -1, -2, -2, -1, -1,  0,  0,  0 },
  249.       {  0, -2, -1,  0,  0,  0,  0,  0,  0 },
  250.       { -1, -1,  0,  0,  0,  0,  0,  0,  0 },
  251.       { -1, -1, -3, -2, -2, -1, -1, -1,  0 },
  252.       {  0,  0,  0,  0,  0,  0,  0,  0,  0 },
  253.       {  0, -1, -3, -2, -2, -1, -1, -1,  0 }, },
  254.     { { -1, -2,  0,  1,  1,  1,  1,  1,  1 },
  255.       {  0, -1,  1,  1,  1,  1,  1,  1,  1 },
  256.       {  0, -2,  1,  1,  1,  1,  1,  1,  1 },
  257.       {  0, -2,  0,  1,  1,  1,  1,  1,  1 },
  258.       { -1, -1,  0,  1,  1,  1,  1,  1,  1 },
  259.       {  0,  0, -1,  0,  1,  1,  1,  1,  1 },
  260.       { -1, -1,  1,  1,  1,  1,  1,  1,  1 },
  261.       {  0,  0, -1,  1,  1,  1,  1,  1,  1 },
  262.       {  0, -1,  0,  1,  1,  1,  1,  1,  1 },
  263.       { -1, -1, -1,  1,  1,  1,  1,  1,  1 },
  264.       {  0,  0,  0,  0,  1,  1,  1,  1,  1 },
  265.       {  0,  0,  0,  1,  1,  1,  1,  1,  1 },
  266.       {  0, -1, -1,  1,  1,  1,  1,  1,  1 },
  267.       {  0,  1,  0,  1,  1,  1,  1,  1,  1 },
  268.       {  0, -3, -2,  1,  1,  1,  1,  2,  2 },
  269.       { -3, -5, -3,  2,  2,  2,  2,  2,  2 }, },
  270.     { { -1, -2,  0,  2,  2,  2,  2,  2,  2 },
  271.       { -1, -2,  0,  1,  2,  2,  2,  2,  2 },
  272.       {  0, -2,  0,  2,  2,  2,  2,  2,  2 },
  273.       { -1,  0,  1,  2,  2,  2,  2,  2,  2 },
  274.       {  0,  0,  1,  2,  2,  2,  2,  2,  2 },
  275.       {  0, -2,  0,  1,  2,  2,  2,  2,  2 },
  276.       {  0, -1,  1,  2,  2,  2,  2,  2,  2 },
  277.       { -1, -1,  0,  2,  2,  2,  2,  2,  2 },
  278.       { -1, -1,  0,  1,  2,  2,  2,  2,  2 },
  279.       { -1, -2, -1,  2,  2,  2,  2,  2,  2 },
  280.       {  0, -1,  0,  2,  2,  2,  2,  2,  2 },
  281.       {  1,  1,  0,  1,  2,  2,  2,  2,  2 },
  282.       {  0,  1,  2,  2,  2,  2,  2,  2,  2 },
  283.       {  1,  0,  0,  1,  2,  2,  2,  2,  2 },
  284.       {  0,  0,  0,  1,  2,  2,  2,  2,  2 },
  285.       { -1, -1, -1,  1,  2,  2,  2,  2,  2 }, },
  286.     { {  0,  1,  2,  3,  3,  3,  3,  3,  3 },
  287.       {  1,  1,  2,  3,  3,  3,  3,  3,  3 },
  288.       { -1,  0,  1,  2,  3,  3,  3,  3,  3 },
  289.       {  0,  0,  2,  3,  3,  3,  3,  3,  3 },
  290.       { -1,  0,  1,  3,  3,  3,  3,  3,  3 },
  291.       {  0,  0,  1,  3,  3,  3,  3,  3,  3 },
  292.       {  1,  2,  3,  3,  3,  3,  3,  3,  3 },
  293.       {  1,  2,  2,  3,  3,  3,  3,  3,  3 },
  294.       {  0,  1,  1,  3,  3,  3,  3,  3,  3 },
  295.       {  0,  0,  1,  2,  3,  3,  3,  3,  3 },
  296.       { -1,  1,  2,  3,  3,  3,  3,  3,  3 },
  297.       { -1,  0,  2,  3,  3,  3,  3,  3,  3 },
  298.       {  2,  2,  3,  3,  3,  3,  3,  3,  3 },
  299.       {  1,  1,  3,  3,  3,  3,  3,  3,  3 },
  300.       {  0,  2,  3,  3,  3,  3,  3,  3,  3 },
  301.       {  0,  1,  1,  2,  3,  3,  3,  3,  3 }, },
  302.     { {  0,  1,  2,  3,  4,  4,  4,  4,  4 },
  303.       {  1,  2,  3,  4,  4,  4,  4,  4,  4 },
  304.       {  0,  0,  2,  3,  4,  4,  4,  4,  4 },
  305.       {  1,  1,  2,  4,  4,  4,  4,  4,  4 },
  306.       {  0,  1,  2,  4,  4,  4,  4,  4,  4 },
  307.       { -1,  0,  1,  3,  4,  4,  4,  4,  4 },
  308.       {  0,  0,  1,  3,  4,  4,  4,  4,  4 },
  309.       {  1,  1,  2,  3,  4,  4,  4,  4,  4 },
  310.       {  0,  1,  1,  3,  4,  4,  4,  4,  4 },
  311.       {  2,  2,  3,  4,  4,  4,  4,  4,  4 },
  312.       {  1,  1,  3,  4,  4,  4,  4,  4,  4 },
  313.       {  1,  2,  2,  4,  4,  4,  4,  4,  4 },
  314.       { -1,  0,  2,  3,  4,  4,  4,  4,  4 },
  315.       {  0,  1,  3,  4,  4,  4,  4,  4,  4 },
  316.       {  1,  2,  2,  3,  4,  4,  4,  4,  4 },
  317.       {  0,  2,  3,  4,  4,  4,  4,  4,  4 }, },
  318.     { {  1,  2,  3,  4,  5,  5,  5,  5,  5 },
  319.       {  0,  1,  2,  3,  4,  5,  5,  5,  5 },
  320.       {  0,  1,  2,  3,  5,  5,  5,  5,  5 },
  321.       {  1,  1,  3,  4,  5,  5,  5,  5,  5 },
  322.       {  1,  1,  2,  4,  5,  5,  5,  5,  5 },
  323.       {  1,  2,  2,  4,  5,  5,  5,  5,  5 },
  324.       {  1,  1,  2,  3,  5,  5,  5,  5,  5 },
  325.       {  2,  2,  3,  4,  5,  5,  5,  5,  5 },
  326.       {  0,  1,  2,  4,  5,  5,  5,  5,  5 },
  327.       {  2,  2,  3,  5,  5,  5,  5,  5,  5 },
  328.       {  1,  2,  3,  5,  5,  5,  5,  5,  5 },
  329.       {  0,  1,  3,  4,  5,  5,  5,  5,  5 },
  330.       {  1,  2,  2,  3,  5,  5,  5,  5,  5 },
  331.       {  2,  3,  4,  5,  5,  5,  5,  5,  5 },
  332.       {  0,  2,  3,  4,  5,  5,  5,  5,  5 },
  333.       {  1,  1,  1,  3,  4,  5,  5,  5,  5 }, },
  334.     { {  1,  2,  3,  4,  5,  5,  5,  6,  6 },
  335.       {  1,  2,  3,  4,  5,  6,  6,  6,  6 },
  336.       {  2,  3,  4,  5,  6,  6,  6,  6,  6 },
  337.       {  1,  2,  3,  4,  6,  6,  6,  6,  6 },
  338.       {  2,  2,  3,  4,  5,  5,  5,  6,  6 },
  339.       {  1,  2,  3,  4,  5,  5,  6,  6,  6 },
  340.       {  2,  2,  3,  4,  6,  6,  6,  6,  6 },
  341.       {  2,  2,  3,  4,  5,  6,  6,  6,  6 },
  342.       {  2,  2,  4,  5,  6,  6,  6,  6,  6 },
  343.       {  2,  2,  3,  5,  6,  6,  6,  6,  6 },
  344.       {  1,  2,  3,  5,  6,  6,  6,  6,  6 },
  345.       {  2,  3,  3,  5,  6,  6,  6,  6,  6 },
  346.       {  1,  2,  4,  5,  6,  6,  6,  6,  6 },
  347.       {  2,  2,  3,  4,  5,  5,  6,  6,  6 },
  348.       {  2,  3,  3,  4,  6,  6,  6,  6,  6 },
  349.       {  1,  3,  4,  5,  6,  6,  6,  6,  6 } }
  350. };
  351.  
  352. /** 2D base shape tables for scale factor coding.
  353.  *  The values are grouped together as follows:
  354.  *  [num_shape_tables = 64][num_seg_coeffs = 9] */
  355. static const int8_t atrac3p_sf_shapes[64][9] = {
  356.     { -3, -2, -1,  0,  3,  5,  6,  8, 40 },
  357.     { -3, -2,  0,  1,  7,  9, 11, 13, 20 },
  358.     { -1,  0,  0,  1,  6,  8, 10, 13, 41 },
  359.     {  0,  0,  0,  2,  5,  5,  6,  8, 14 },
  360.     {  0,  0,  0,  2,  6,  7,  8, 11, 47 },
  361.     {  0,  0,  1,  2,  5,  7,  8, 10, 32 },
  362.     {  0,  0,  1,  3,  8, 10, 12, 14, 47 },
  363.     {  0,  0,  2,  4,  9, 10, 12, 14, 40 },
  364.     {  0,  0,  3,  5,  9, 10, 12, 14, 22 },
  365.     {  0,  1,  3,  5, 10, 14, 18, 22, 31 },
  366.     {  0,  2,  5,  6, 10, 10, 10, 12, 46 },
  367.     {  0,  2,  5,  7, 12, 14, 15, 18, 44 },
  368.     {  1,  1,  4,  5,  7,  7,  8,  9, 15 },
  369.     {  1,  2,  2,  2,  4,  5,  7,  9, 26 },
  370.     {  1,  2,  2,  3,  6,  7,  7,  8, 47 },
  371.     {  1,  2,  2,  3,  6,  8, 10, 13, 22 },
  372.     {  1,  3,  4,  7, 13, 17, 21, 24, 41 },
  373.     {  1,  4,  0,  4, 10, 12, 13, 14, 17 },
  374.     {  2,  3,  3,  3,  6,  8, 10, 13, 48 },
  375.     {  2,  3,  3,  4,  9, 12, 14, 17, 47 },
  376.     {  2,  3,  3,  5, 10, 12, 14, 17, 25 },
  377.     {  2,  3,  5,  7,  8,  9,  9,  9, 13 },
  378.     {  2,  3,  5,  9, 16, 21, 25, 28, 33 },
  379.     {  2,  4,  5,  8, 12, 14, 17, 19, 26 },
  380.     {  2,  4,  6,  8, 12, 13, 13, 15, 20 },
  381.     {  2,  4,  7, 12, 20, 26, 30, 32, 35 },
  382.     {  3,  3,  5,  6, 12, 14, 16, 19, 34 },
  383.     {  3,  4,  4,  5,  7,  9, 10, 11, 48 },
  384.     {  3,  4,  5,  6,  8,  9, 10, 11, 16 },
  385.     {  3,  5,  5,  5,  7,  9, 10, 13, 35 },
  386.     {  3,  5,  5,  7, 10, 12, 13, 15, 49 },
  387.     {  3,  5,  7,  7,  8,  7,  9, 12, 21 },
  388.     {  3,  5,  7,  8, 12, 14, 15, 15, 24 },
  389.     {  3,  5,  7, 10, 16, 21, 24, 27, 44 },
  390.     {  3,  5,  8, 14, 21, 26, 28, 29, 42 },
  391.     {  3,  6, 10, 13, 18, 19, 20, 22, 27 },
  392.     {  3,  6, 11, 16, 24, 27, 28, 29, 31 },
  393.     {  4,  5,  4,  3,  4,  6,  8, 11, 18 },
  394.     {  4,  6,  5,  6,  9, 10, 12, 14, 20 },
  395.     {  4,  6,  7,  6,  6,  6,  7,  8, 46 },
  396.     {  4,  6,  7,  9, 13, 16, 18, 20, 48 },
  397.     {  4,  6,  7,  9, 14, 17, 20, 23, 31 },
  398.     {  4,  6,  9, 11, 14, 15, 15, 17, 21 },
  399.     {  4,  8, 13, 20, 27, 32, 35, 36, 38 },
  400.     {  5,  6,  6,  4,  5,  6,  7,  6,  6 },
  401.     {  5,  7,  7,  8,  9,  9, 10, 12, 49 },
  402.     {  5,  8,  9,  9, 10, 11, 12, 13, 42 },
  403.     {  5,  8, 10, 12, 15, 16, 17, 19, 42 },
  404.     {  5,  8, 12, 17, 26, 31, 32, 33, 44 },
  405.     {  5,  9, 13, 16, 20, 22, 23, 23, 35 },
  406.     {  6,  8,  8,  7,  6,  5,  6,  8, 15 },
  407.     {  6,  8,  8,  8,  9, 10, 12, 16, 24 },
  408.     {  6,  8,  8,  9, 10, 10, 11, 11, 13 },
  409.     {  6,  8, 10, 13, 19, 21, 24, 26, 32 },
  410.     {  6,  9, 10, 11, 13, 13, 14, 16, 49 },
  411.     {  7,  9,  9, 10, 13, 14, 16, 19, 27 },
  412.     {  7, 10, 12, 13, 16, 16, 17, 17, 27 },
  413.     {  7, 10, 12, 14, 17, 19, 20, 22, 48 },
  414.     {  8,  9, 10,  9, 10, 11, 11, 11, 19 },
  415.     {  8, 11, 12, 12, 13, 13, 13, 13, 17 },
  416.     {  8, 11, 13, 14, 16, 17, 19, 20, 27 },
  417.     {  8, 12, 17, 22, 26, 28, 29, 30, 33 },
  418.     { 10, 14, 16, 19, 21, 22, 22, 24, 28 },
  419.     { 10, 15, 17, 18, 21, 22, 23, 25, 43 }
  420. };
  421.  
  422. static const uint8_t atrac3p_ct_restricted_to_full[2][7][4] = {
  423.     { { 0, 5, 4, 1 },
  424.       { 0, 1, 2, 3 },
  425.       { 3, 0, 4, 2 },
  426.       { 4, 0, 1, 2 },
  427.       { 1, 0, 4, 3 },
  428.       { 3, 0, 2, 1 },
  429.       { 0, 3, 1, 2 } },
  430.     { { 4, 0, 1, 2 },
  431.       { 0, 3, 2, 1 },
  432.       { 0, 1, 2, 3 },
  433.       { 0, 1, 2, 4 },
  434.       { 0, 1, 2, 3 },
  435.       { 1, 4, 2, 0 },
  436.       { 0, 1, 2, 3 } }
  437. };
  438.  
  439. /** Tables for spectrum coding */
  440. static const uint8_t huff_a01_cb[14] = {
  441.     1, 12, 1, 0, 0, 1, 7, 0, 19, 5, 13, 21, 6, 8
  442. };
  443.  
  444. static const uint8_t huff_a01_xlat[81] = {
  445.     0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70,
  446.     0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x41, 0xC1, 0x31, 0x05, 0x0D,
  447.     0xC3, 0x13, 0x07, 0x0F, 0x44, 0xCC, 0x11, 0x43, 0x33, 0x54, 0x74, 0xDC,
  448.     0xFC, 0x71, 0x15, 0x4D, 0xCD, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4,
  449.     0x5C, 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xDD, 0x3D, 0x53, 0x73,
  450.     0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xF5, 0x7D, 0xD7, 0x5F,
  451.     0xFF, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F
  452. };
  453.  
  454. static const uint8_t huff_a02_cb[13] = {
  455.     2, 12, 1, 0, 4, 11, 0, 1, 29, 6, 20, 7, 2
  456. };
  457.  
  458. static const uint8_t huff_a02_xlat[81] = {
  459.     0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
  460.     0x05, 0x45, 0x15, 0x55, 0x90, 0x80, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64,
  461.     0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x85, 0x95, 0x65, 0x09, 0x49,
  462.     0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0x88, 0x61,
  463.     0x25, 0x29, 0x69, 0x5A, 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x89,
  464.     0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x1A,
  465.     0xA8, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0x6A, 0xA2, 0xAA
  466. };
  467.  
  468. static const uint8_t huff_a03_cb[9] = { 3, 9, 1, 8, 0, 13, 18, 7, 2 };
  469.  
  470. static const uint8_t huff_a03_xlat[49] = {
  471.     0x00, 0x08, 0x38, 0x01, 0x09, 0x39, 0x07, 0x0F, 0x3F, 0x10, 0x30, 0x11,
  472.     0x31, 0x02, 0x0A, 0x3A, 0x05, 0x06, 0x0E, 0x3E, 0x17, 0x37, 0x18, 0x28,
  473.     0x19, 0x29, 0x2A, 0x32, 0x03, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D, 0x16,
  474.     0x1E, 0x36, 0x1F, 0x2F, 0x12, 0x1A, 0x13, 0x2B, 0x1D, 0x35, 0x2E, 0x1B,
  475.     0x2D
  476. };
  477.  
  478. static const uint8_t huff_a04_cb[4]   = { 2, 3, 2, 4 };
  479. static const uint8_t huff_a04_xlat[6] = { 1, 2, 0, 3, 4, 5 };
  480.  
  481. static const uint8_t huff_a05_cb[12] = {
  482.     3, 12, 1, 3, 5, 8, 12, 23, 72, 68, 31, 2
  483. };
  484.  
  485. static const uint8_t huff_a05_xlat[225] = {
  486.     0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0xE1,
  487.     0x02, 0xF2, 0x0E, 0x1E, 0x2F, 0x30, 0xD0, 0x21, 0x12, 0x22, 0xE2, 0x03,
  488.     0x0D, 0x2E, 0xEE, 0xFE, 0xEF, 0x40, 0xC0, 0x31, 0xC1, 0xD1, 0x32, 0xD2,
  489.     0x13, 0x23, 0xE3, 0xF3, 0x04, 0xF4, 0x0C, 0x1C, 0x1D, 0x2D, 0xED, 0xFD,
  490.     0x3E, 0xDE, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xA0, 0xB0, 0x41, 0x51,
  491.     0x61, 0x71, 0x91, 0xA1, 0xB1, 0x42, 0x62, 0x92, 0xA2, 0xC2, 0x33, 0xC3,
  492.     0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4, 0x05, 0x15, 0xF5, 0x06, 0x16, 0x26,
  493.     0xE6, 0xF6, 0x07, 0x17, 0xE7, 0xF7, 0x09, 0x19, 0x29, 0xF9, 0x0A, 0x1A,
  494.     0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x2C, 0x3C, 0xDC, 0xEC, 0xFC, 0x3D,
  495.     0x4D, 0xCD, 0xDD, 0x4E, 0x6E, 0x7E, 0xAE, 0xCE, 0x4F, 0x5F, 0x6F, 0x7F,
  496.     0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0x72, 0xB2, 0x43, 0x53, 0x63, 0x73, 0x93,
  497.     0xA3, 0xB3, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4, 0x25, 0x35, 0xA5,
  498.     0xC5, 0xD5, 0xE5, 0x36, 0x46, 0xB6, 0xC6, 0xD6, 0x27, 0x37, 0x47, 0xB7,
  499.     0xC7, 0xD7, 0x39, 0x49, 0x59, 0xC9, 0xD9, 0xE9, 0x3A, 0x4A, 0x5A, 0xCA,
  500.     0xDA, 0x2B, 0x3B, 0x4B, 0x6B, 0x7B, 0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C,
  501.     0x9C, 0xAC, 0xCC, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0x5E, 0x9E, 0xBE,
  502.     0x54, 0x45, 0x55, 0x65, 0x75, 0x95, 0xB5, 0x56, 0x66, 0x76, 0x96, 0xA6,
  503.     0x57, 0x67, 0x97, 0xA7, 0x69, 0x79, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA,
  504.     0xBA, 0x5B, 0x9B, 0xAB, 0xBB, 0xCB, 0xBC, 0x77, 0x99
  505. };
  506.  
  507. static const uint8_t huff_a06_cb[7] = {
  508.     2, 6, 1, 3, 2, 6, 4
  509. };
  510.  
  511. static const uint8_t huff_a06_xlat[16] = {
  512.     1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 10, 11, 12, 15
  513. };
  514.  
  515. static const uint8_t huff_a07_cb[11] = {
  516.     2, 10, 1, 2, 2, 2, 6, 14, 21, 13, 2
  517. };
  518.  
  519. static const uint8_t huff_a07_xlat[63] = {
  520.     0,   1, 63,  2, 62,  3, 61,  4,  5,  6, 58, 59, 60,  7,  8,  9,
  521.     10, 26, 27, 28, 36, 37, 38, 54, 55, 56, 57, 11, 12, 13, 14, 15,
  522.     16, 25, 29, 30, 31, 33, 34, 35, 39, 47, 48, 49, 50, 51, 52, 53,
  523.     17, 18, 19, 20, 21, 22, 23, 41, 42, 43, 44, 45, 46, 24, 40
  524. };
  525.  
  526. static const uint8_t huff_a11_cb[13] = {
  527.     1, 11, 1, 0, 0, 0, 8, 1, 18, 9, 22, 10, 12
  528. };
  529.  
  530. static const uint8_t huff_a11_xlat[81] = {
  531.     0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x50, 0x70,
  532.     0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43,
  533.     0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33,
  534.     0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0x15, 0x35,
  535.     0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x3F, 0x51,
  536.     0x45, 0xC5, 0x55, 0x53, 0xF3, 0x4F, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5,
  537.     0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F
  538. };
  539.  
  540. static const uint8_t huff_a12_cb[8] = { 5, 10, 16, 11, 32, 19, 1, 2 };
  541.  
  542. static const uint8_t huff_a12_xlat[81] = {
  543.     0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51,
  544.     0x05, 0x45, 0x15, 0x55, 0x90, 0x94, 0x58, 0x91, 0x95, 0x19, 0x59, 0x06,
  545.     0x46, 0x16, 0x56, 0x80, 0x60, 0x84, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18,
  546.     0x68, 0x81, 0x21, 0x61, 0xA1, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49, 0x99,
  547.     0x69, 0xA9, 0x02, 0x42, 0x12, 0x52, 0x96, 0x26, 0x66, 0x1A, 0x5A, 0x20,
  548.     0xA0, 0x88, 0x98, 0x28, 0xA8, 0x89, 0x29, 0x82, 0x92, 0x22, 0x62, 0x86,
  549.     0xA6, 0x0A, 0x4A, 0x9A, 0x6A, 0xAA, 0xA2, 0x8A, 0x2A
  550. };
  551.  
  552. static const uint8_t huff_a13_cb[12] = {
  553.     1, 10, 1, 0, 0, 4, 2, 2, 9, 15, 12, 4
  554. };
  555.  
  556. static const uint8_t huff_a13_xlat[49] = {
  557.     0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
  558.     0x02, 0x3A, 0x06, 0x0E, 0x3E, 0x17, 0x18, 0x28, 0x11, 0x29, 0x0A, 0x32,
  559.     0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x16, 0x1F, 0x37, 0x19, 0x12, 0x1A,
  560.     0x2A, 0x13, 0x33, 0x15, 0x35, 0x1E, 0x2E, 0x36, 0x2F, 0x1B, 0x2B, 0x1D,
  561.     0x2D
  562. };
  563.  
  564. static const uint8_t huff_a14_cb[12] = {
  565.     2, 11, 1, 0, 4, 3, 5, 16, 28, 34, 26, 4
  566. };
  567.  
  568. static const uint8_t huff_a14_xlat[121] = {
  569.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02,
  570.     0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B,
  571.     0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1,
  572.     0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
  573.     0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42,
  574.     0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35,
  575.     0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD,
  576.     0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
  577.     0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C,
  578.     0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B,
  579.     0xBB
  580. };
  581.  
  582. static const uint8_t huff_a15_cb[9] = { 5, 11, 9, 12, 16, 44, 98, 42, 4 };
  583.  
  584. static const uint8_t huff_a15_xlat[225] = {
  585.     0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0x21,
  586.     0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0xD0, 0x31,
  587.     0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F,
  588.     0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x41, 0xC1, 0x32, 0x42, 0xC2,
  589.     0xD2, 0x23, 0x33, 0xD3, 0xE3, 0x04, 0x14, 0x24, 0xE4, 0xF4, 0x06, 0x16,
  590.     0xF6, 0x07, 0x09, 0x0A, 0x1A, 0xFA, 0x0C, 0x1C, 0x2C, 0xEC, 0xFC, 0x2D,
  591.     0x3D, 0xDD, 0xED, 0x3E, 0x4E, 0xCE, 0xDE, 0x4F, 0xCF, 0x50, 0xB0, 0x51,
  592.     0x61, 0x71, 0x91, 0xA1, 0xB1, 0x52, 0x62, 0x72, 0x92, 0xA2, 0xB2, 0x43,
  593.     0x53, 0x63, 0x73, 0x93, 0xA3, 0xC3, 0x34, 0x44, 0x64, 0xA4, 0xC4, 0xD4,
  594.     0x05, 0x15, 0x25, 0x35, 0xD5, 0xE5, 0xF5, 0x26, 0x36, 0x46, 0xC6, 0xD6,
  595.     0xE6, 0x17, 0x27, 0x37, 0xC7, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xC9,
  596.     0xD9, 0xE9, 0xF9, 0x2A, 0x3A, 0x4A, 0x5A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B,
  597.     0x2B, 0x3B, 0xCB, 0xDB, 0xEB, 0xFB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C, 0xAC,
  598.     0xBC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x5E,
  599.     0x6E, 0x7E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xB3,
  600.     0x54, 0x74, 0x94, 0xB4, 0x45, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5,
  601.     0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0x47, 0x57, 0x67, 0xA7, 0xB7, 0x49,
  602.     0x59, 0x69, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0x4B, 0x5B, 0x6B,
  603.     0x7B, 0x9B, 0xAB, 0xBB, 0x5C, 0x77, 0x97, 0x79, 0x99
  604. };
  605.  
  606. static const uint8_t huff_a16_cb[13] = {
  607.     2, 12, 1, 1, 2, 2, 5, 7, 21, 54, 85, 62, 16
  608. };
  609.  
  610. static const uint8_t huff_a16_xlat[256] = {
  611.     0x00, 0x01, 0x10, 0x11, 0x21, 0x12, 0x20, 0x31, 0x02, 0x22, 0x13, 0x30,
  612.     0x41, 0x32, 0x03, 0x23, 0x14, 0x24, 0x40, 0x51, 0x61, 0xD1, 0xE1, 0x42,
  613.     0x52, 0xD2, 0x33, 0x43, 0xD3, 0x04, 0x34, 0x05, 0x15, 0x25, 0x16, 0x1D,
  614.     0x2D, 0x1E, 0x2E, 0x50, 0x60, 0xD0, 0xE0, 0xF0, 0x71, 0x81, 0xF1, 0x62,
  615.     0x72, 0xE2, 0xF2, 0x53, 0x63, 0xE3, 0xF3, 0x44, 0x54, 0xD4, 0xE4, 0xF4,
  616.     0x35, 0x45, 0x55, 0xD5, 0xE5, 0xF5, 0x06, 0x26, 0x36, 0xD6, 0x07, 0x17,
  617.     0x27, 0x37, 0xD7, 0x18, 0x28, 0x1C, 0x0D, 0x3D, 0x4D, 0x5D, 0x6D, 0x8D,
  618.     0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x1F, 0x2F, 0x3F, 0x5F, 0x70, 0x80, 0x90,
  619.     0xC0, 0x91, 0xA1, 0xB1, 0xC1, 0x82, 0x92, 0xA2, 0xC2, 0x73, 0x83, 0x93,
  620.     0xA3, 0xC3, 0x64, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0x65, 0x75, 0x85, 0x46,
  621.     0x56, 0x66, 0xC6, 0xE6, 0xF6, 0x47, 0x57, 0xE7, 0xF7, 0x08, 0x38, 0x48,
  622.     0x58, 0x68, 0xD8, 0xE8, 0xF8, 0x09, 0x19, 0x29, 0x39, 0x59, 0xD9, 0xE9,
  623.     0xF9, 0x1A, 0x2A, 0x3A, 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0xDB, 0xEB, 0xFB,
  624.     0x0C, 0x2C, 0x3C, 0xDC, 0xEC, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E,
  625.     0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x4F, 0x6F, 0x7F, 0x8F, 0xAF, 0xA0, 0xB2,
  626.     0xB3, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0x76, 0x86, 0x96, 0xA6, 0xB6, 0x67,
  627.     0x77, 0x87, 0x97, 0xC7, 0x78, 0x88, 0x98, 0xC8, 0x49, 0x69, 0x79, 0x89,
  628.     0x99, 0xC9, 0x0A, 0x4A, 0x5A, 0x6A, 0x7A, 0xCA, 0x0B, 0x3B, 0x4B, 0x5B,
  629.     0x6B, 0xCB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xFC,
  630.     0xDD, 0xED, 0xFD, 0xDE, 0xEE, 0xFE, 0x9F, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
  631.     0xB0, 0xA7, 0xB7, 0xA8, 0xB8, 0xA9, 0xB9, 0x8A, 0x9A, 0xAA, 0xBA, 0x7B,
  632.     0x8B, 0x9B, 0xAB, 0xBB
  633. };
  634.  
  635. static const uint8_t huff_a17_cb[9] = { 3, 9, 3, 2, 5, 7, 17, 23, 6 };
  636.  
  637. static const uint8_t huff_a17_xlat[63] = {
  638.     0,   1, 63,  2, 62,  3,  4, 59, 60, 61,  5,  6,  7,  8, 56, 57,
  639.     58,  9, 10, 11, 12, 13, 14, 26, 27, 36, 37, 38, 50, 51, 52, 53,
  640.     54, 55, 15, 16, 17, 18, 19, 20, 21, 25, 28, 29, 30, 31, 33, 34,
  641.     35, 39, 43, 44, 45, 46, 47, 48, 49, 22, 23, 24, 40, 41, 42
  642. };
  643.  
  644. static const uint8_t huff_a21_cb[14] = {
  645.     1, 12, 1, 0, 0, 2, 6, 0, 7, 21, 15, 17, 8, 4
  646. };
  647.  
  648. static const uint8_t huff_a21_xlat[81] = {
  649.     0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x70, 0x34,
  650.     0x1C, 0x0D, 0x13, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x74, 0x4C, 0xCC,
  651.     0xDC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x05, 0x1D, 0x43, 0xC3, 0x33, 0x37,
  652.     0x0F, 0x54, 0xF4, 0xFC, 0xD1, 0x71, 0x15, 0x4D, 0xCD, 0xDD, 0xD3, 0x73,
  653.     0x47, 0xC7, 0x77, 0x3F, 0xD4, 0x5C, 0x7C, 0x51, 0xF1, 0x45, 0xC5, 0x55,
  654.     0x35, 0x3D, 0x53, 0xF3, 0x17, 0x4F, 0xCF, 0x1F, 0xFF, 0x75, 0xF5, 0x5D,
  655.     0x7D, 0xD7, 0xF7, 0x5F, 0xDF, 0xD5, 0xFD, 0x57, 0x7F
  656. };
  657.  
  658. static const uint8_t huff_a22_cb[10] = { 2, 9, 1, 4, 0, 4, 3, 8, 3, 2 };
  659.  
  660. static const uint8_t huff_a22_xlat[25] = {
  661.     0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06,
  662.     0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12,
  663.     0x36
  664. };
  665.  
  666. static const uint8_t huff_a23_cb[9] = { 3, 9, 5, 0, 4, 6, 10, 16, 8 };
  667.  
  668. static const uint8_t huff_a23_xlat[49] = {
  669.     0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x02,
  670.     0x3A, 0x06, 0x0E, 0x18, 0x28, 0x11, 0x31, 0x0A, 0x03, 0x05, 0x3E, 0x17,
  671.     0x37, 0x19, 0x29, 0x12, 0x2A, 0x32, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D,
  672.     0x16, 0x1E, 0x36, 0x1F, 0x2F, 0x1A, 0x13, 0x1B, 0x2B, 0x1D, 0x2D, 0x35,
  673.     0x2E
  674. };
  675.  
  676. static const uint8_t huff_a24_cb[5] = { 2, 4, 3, 1, 2 };
  677.  
  678. static const uint8_t huff_a25_cb[5] = { 2, 4, 1, 5, 2 };
  679.  
  680. static const uint8_t huff_a25_xlat[8] = { 1, 0, 2, 3, 4, 5, 6, 7 };
  681.  
  682. static const uint8_t huff_a26_cb[10] = { 4, 11, 3, 4, 12, 15, 34, 83, 75, 30 };
  683.  
  684. static const uint8_t huff_a26_xlat[256] = {
  685.     0x00, 0x01, 0x11, 0x10, 0x21, 0x12, 0x22, 0x20, 0x30, 0x31, 0x41, 0x02,
  686.     0x32, 0x03, 0x13, 0x23, 0x33, 0x14, 0x24, 0x40, 0x51, 0x61, 0x42, 0x52,
  687.     0x43, 0x53, 0x04, 0x34, 0x44, 0x15, 0x25, 0x35, 0x16, 0x26, 0x50, 0x60,
  688.     0x71, 0x81, 0xD1, 0x62, 0x72, 0x82, 0xD2, 0x63, 0x73, 0xD3, 0x54, 0x64,
  689.     0x05, 0x45, 0x55, 0x65, 0x06, 0x36, 0x46, 0x56, 0x17, 0x27, 0x37, 0x47,
  690.     0x18, 0x28, 0x38, 0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x70, 0x80, 0x90, 0xD0,
  691.     0xE0, 0x91, 0xA1, 0xB1, 0xC1, 0xE1, 0xF1, 0x92, 0xA2, 0xC2, 0xE2, 0xF2,
  692.     0x83, 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0xD4,
  693.     0xE4, 0xF4, 0x75, 0x85, 0x95, 0xD5, 0xE5, 0x66, 0x76, 0x86, 0xD6, 0xE6,
  694.     0x07, 0x57, 0x67, 0x77, 0xD7, 0x08, 0x48, 0x58, 0x68, 0xD8, 0x09, 0x29,
  695.     0x39, 0x49, 0x59, 0x69, 0x1A, 0x2A, 0x3A, 0x4A, 0x1B, 0x2B, 0x1C, 0x2C,
  696.     0x3C, 0x4C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x8D, 0x0E, 0x2E, 0x3E, 0x4E,
  697.     0x5E, 0x6E, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0xA0, 0xB0, 0xC0, 0xF0, 0xB2,
  698.     0xB3, 0xB4, 0xA5, 0xB5, 0xC5, 0xF5, 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x87,
  699.     0x97, 0xA7, 0xB7, 0xC7, 0xE7, 0xF7, 0x78, 0x88, 0x98, 0xA8, 0xC8, 0xE8,
  700.     0xF8, 0x79, 0x89, 0x99, 0xC9, 0xD9, 0xE9, 0xF9, 0x0A, 0x5A, 0x6A, 0x7A,
  701.     0x8A, 0xDA, 0xEA, 0xFA, 0x0B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xDB,
  702.     0x0C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E,
  703.     0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB8, 0xA9,
  704.     0xB9, 0x9A, 0xAA, 0xBA, 0xCA, 0x9B, 0xAB, 0xBB, 0xCB, 0xEB, 0xFB, 0xAC,
  705.     0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF,
  706.     0xCF, 0xDF, 0xEF, 0xFF
  707. };
  708.  
  709. static const uint8_t huff_a27_cb[7] = { 4, 8, 3, 14, 10, 20, 16 };
  710.  
  711. static const uint8_t huff_a27_xlat[63] = {
  712.      0,  2,  3,  1,  5,  6,  7,  9, 54, 55, 56, 58, 59, 60, 61, 62,
  713.     63,  4,  8, 10, 11, 12, 14, 49, 52, 53, 57, 13, 15, 16, 17, 18,
  714.     19, 22, 23, 25, 26, 30, 39, 43, 44, 45, 46, 47, 48, 50, 51, 20,
  715.     21, 24, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 40, 41, 42
  716. };
  717.  
  718. static const uint8_t huff_a31_cb[8] = { 1, 6, 1, 0, 3, 1, 0, 4 };
  719.  
  720. static const uint8_t huff_a31_xlat[9] = {
  721.     0x00, 0x04, 0x0C, 0x01, 0x03, 0x05, 0x0D, 0x07, 0x0F
  722. };
  723.  
  724. static const uint8_t huff_a32_cb[13] = {
  725.     1, 11, 1, 0, 0, 2, 2, 6, 12, 18, 19, 15, 6
  726. };
  727.  
  728. static const uint8_t huff_a32_xlat[81] = {
  729.     0x00, 0x40, 0x01, 0x10, 0x04, 0x80, 0x50, 0x20, 0x14, 0x05, 0x02, 0x90,
  730.     0x60, 0x44, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0x06, 0xA0,
  731.     0x84, 0x94, 0x64, 0xA4, 0x48, 0x58, 0x28, 0x51, 0x21, 0x45, 0x55, 0x25,
  732.     0x19, 0x12, 0x16, 0x0A, 0x1A, 0x68, 0xA8, 0x81, 0x91, 0x61, 0xA1, 0x85,
  733.     0x95, 0x65, 0xA5, 0x49, 0x59, 0x29, 0x69, 0x42, 0x52, 0x46, 0x56, 0x2A,
  734.     0x88, 0x98, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 0x66,
  735.     0x4A, 0x5A, 0x6A, 0xA2, 0x96, 0xA6, 0x8A, 0x9A, 0xAA
  736. };
  737.  
  738. static const uint8_t huff_a33_cb[12] = {
  739.     3, 12, 1, 1, 13, 1, 14, 28, 33, 81, 32, 52
  740. };
  741.  
  742. static const uint8_t huff_a33_xlat[256] = {
  743.     0x00, 0x10, 0x40, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51,
  744.     0x05, 0x45, 0x15, 0x55, 0x90, 0x20, 0x94, 0x64, 0x18, 0x21, 0x95, 0x19,
  745.     0x69, 0x02, 0x52, 0x06, 0x46, 0x16, 0x80, 0x60, 0x84, 0xD4, 0x24, 0x08,
  746.     0x48, 0x58, 0x68, 0x81, 0x91, 0x61, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49,
  747.     0x59, 0x29, 0x42, 0x12, 0x56, 0x96, 0xA6, 0x0A, 0x17, 0x1B, 0xD0, 0xC4,
  748.     0x74, 0xF4, 0x88, 0xC8, 0x28, 0xA1, 0x71, 0xC5, 0xD5, 0x75, 0x99, 0xB9,
  749.     0x4D, 0x1D, 0x2D, 0x6D, 0x22, 0x62, 0x66, 0x4A, 0x1A, 0x9A, 0x6A, 0x8E,
  750.     0x5E, 0x43, 0x23, 0x07, 0x47, 0x57, 0x6B, 0xC0, 0xA0, 0xE0, 0x70, 0xB0,
  751.     0xA4, 0xE4, 0x34, 0xB4, 0x98, 0xD8, 0xA8, 0x38, 0x78, 0x0C, 0x4C, 0x1C,
  752.     0x5C, 0x9C, 0x6C, 0x7C, 0xC1, 0xD1, 0xE1, 0x31, 0xE5, 0x35, 0xB5, 0xF5,
  753.     0x89, 0xA9, 0x79, 0xF9, 0x0D, 0xCD, 0x9D, 0xDD, 0xAD, 0x3D, 0x7D, 0x82,
  754.     0xC2, 0x92, 0xD2, 0xE2, 0x72, 0xF2, 0x86, 0xD6, 0xE6, 0x76, 0xB6, 0x8A,
  755.     0x5A, 0xDA, 0xEA, 0xFA, 0x4E, 0x1E, 0x9E, 0xEE, 0x03, 0x13, 0x53, 0x97,
  756.     0xB7, 0x0B, 0x4B, 0x8B, 0x5B, 0x9B, 0xEB, 0x7B, 0x0F, 0x4F, 0x1F, 0x5F,
  757.     0x9F, 0x2F, 0x3F, 0xBF, 0xE8, 0xB8, 0xF8, 0x8C, 0x2C, 0x3C, 0xFC, 0xB1,
  758.     0xC9, 0xD9, 0xE9, 0x39, 0x5D, 0xED, 0xBD, 0xA2, 0x32, 0x26, 0x36, 0x2A,
  759.     0xAA, 0xBA, 0x0E, 0x2E, 0x6E, 0x83, 0xC3, 0x93, 0x63, 0xB3, 0xA7, 0x37,
  760.     0x30, 0xF0, 0xCC, 0xDC, 0xAC, 0xEC, 0xBC, 0xF1, 0x8D, 0xFD, 0xB2, 0xC6,
  761.     0xF6, 0xCA, 0x3A, 0x7A, 0xCE, 0xDE, 0xAE, 0x3E, 0x7E, 0xBE, 0xFE, 0xD3,
  762.     0xA3, 0xE3, 0x33, 0x73, 0xF3, 0x87, 0xC7, 0xD7, 0x27, 0x67, 0xE7, 0x77,
  763.     0xF7, 0xCB, 0xDB, 0x2B, 0xAB, 0x3B, 0xBB, 0xFB, 0x8F, 0xCF, 0xDF, 0x6F,
  764.     0xAF, 0xEF, 0x7F, 0xFF
  765. };
  766.  
  767. static const uint8_t huff_a34_cb[7] = { 1, 5, 1, 1, 1, 1, 2 };
  768.  
  769. static const uint8_t huff_a34_xlat[6] = { 1, 0, 2, 3, 4, 5 };
  770.  
  771. static const uint8_t huff_a35_cb[11] = { 2, 10, 1, 0, 2, 3, 6, 19, 9, 75, 110 };
  772.  
  773. static const uint8_t huff_a35_xlat[225] = {
  774.     0x00, 0xF0, 0x0F, 0x10, 0x01, 0xFF, 0x20, 0xE0, 0x11, 0xF1, 0x0E, 0x1F,
  775.     0x30, 0x40, 0xD0, 0x21, 0xE1, 0x02, 0x12, 0x22, 0xE2, 0xF2, 0x03, 0x13,
  776.     0x1E, 0x2E, 0x3E, 0xEE, 0xFE, 0x2F, 0xEF, 0xD2, 0x43, 0xF3, 0x04, 0x0D,
  777.     0x2D, 0x3D, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xB0, 0x31, 0x41, 0x91,
  778.     0xA1, 0xC1, 0xD1, 0x42, 0xA2, 0xC2, 0x23, 0x33, 0xE3, 0x24, 0x34, 0xB4,
  779.     0xD4, 0xF4, 0x05, 0x15, 0x45, 0xE5, 0x16, 0x36, 0x56, 0xA6, 0xC6, 0xD6,
  780.     0xF6, 0x57, 0xC7, 0xF7, 0x09, 0x29, 0x49, 0x59, 0x69, 0xF9, 0x0A, 0x2A,
  781.     0x3A, 0x4A, 0xDA, 0xEA, 0xFA, 0x0B, 0x2B, 0xAB, 0xEB, 0xFB, 0x0C, 0x1C,
  782.     0x2C, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0xFC, 0x1D, 0x4D, 0x6D, 0xBD, 0xCD,
  783.     0xED, 0xFD, 0x4E, 0x6E, 0xCE, 0xDE, 0x7F, 0xA0, 0xC0, 0x51, 0x61, 0x71,
  784.     0xB1, 0x32, 0x52, 0x62, 0x72, 0x92, 0xB2, 0x53, 0x63, 0x73, 0x93, 0xA3,
  785.     0xB3, 0xC3, 0xD3, 0x14, 0x44, 0x54, 0x64, 0x74, 0x94, 0xA4, 0xC4, 0xE4,
  786.     0x25, 0x35, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xF5, 0x06,
  787.     0x26, 0x46, 0x66, 0x76, 0x96, 0xB6, 0xE6, 0x07, 0x17, 0x27, 0x37, 0x47,
  788.     0x67, 0x77, 0x97, 0xA7, 0xB7, 0xD7, 0xE7, 0x19, 0x39, 0x79, 0x99, 0xA9,
  789.     0xB9, 0xC9, 0xD9, 0xE9, 0x1A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0xCA,
  790.     0x1B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x9B, 0xBB, 0xCB, 0xDB, 0x6C, 0x7C,
  791.     0x9C, 0xAC, 0xBC, 0xEC, 0x5D, 0x7D, 0x9D, 0xAD, 0xDD, 0x5E, 0x7E, 0x9E,
  792.     0xAE, 0xBE, 0x4F, 0x5F, 0x6F, 0x9F, 0xAF, 0xBF, 0xCF
  793. };
  794.  
  795. static const uint8_t huff_a36_cb[12] = {
  796.     3, 12, 1, 3, 5, 5, 13, 27, 69, 96, 35, 2
  797. };
  798.  
  799. static const uint8_t huff_a36_xlat[256] = {
  800.     0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x22, 0x31, 0x41, 0x32,
  801.     0x13, 0x23, 0x30, 0x40, 0x51, 0x42, 0x03, 0x33, 0x43, 0x04, 0x14, 0x24,
  802.     0x34, 0x15, 0x25, 0x50, 0x61, 0x71, 0xD1, 0x52, 0x62, 0x72, 0xD2, 0x53,
  803.     0x63, 0xD3, 0x44, 0x54, 0x64, 0x05, 0x35, 0x45, 0x55, 0x16, 0x26, 0x36,
  804.     0x46, 0x17, 0x27, 0x1D, 0x2D, 0x3D, 0x60, 0x70, 0xD0, 0x81, 0x91, 0xA1,
  805.     0xC1, 0xE1, 0xF1, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x73, 0x83, 0xE3, 0xF3,
  806.     0x74, 0x84, 0xC4, 0xD4, 0xE4, 0xF4, 0x65, 0x75, 0x85, 0xD5, 0xE5, 0x06,
  807.     0x56, 0x66, 0xD6, 0xE6, 0x07, 0x37, 0x47, 0x57, 0x67, 0xD7, 0xE7, 0x18,
  808.     0x28, 0x38, 0x48, 0x58, 0xD8, 0x19, 0x29, 0x2A, 0x1C, 0x2C, 0x0D, 0x4D,
  809.     0x5D, 0x6D, 0x7D, 0x8D, 0x9D, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E,
  810.     0x1F, 0x2F, 0x3F, 0x80, 0x90, 0xA0, 0xC0, 0xE0, 0xF0, 0xB1, 0xA2, 0xB2,
  811.     0x93, 0xA3, 0xB3, 0xC3, 0x94, 0xA4, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5,
  812.     0x76, 0x86, 0x96, 0xA6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xF7,
  813.     0x08, 0x68, 0x78, 0x88, 0x98, 0xC8, 0xE8, 0xF8, 0x09, 0x39, 0x49, 0x59,
  814.     0x69, 0x79, 0x89, 0xD9, 0xE9, 0xF9, 0x0A, 0x1A, 0x3A, 0x4A, 0x5A, 0x6A,
  815.     0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0xDB, 0xEB, 0xFB, 0x0C,
  816.     0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0xEC, 0xAD, 0xBD, 0xCD,
  817.     0xDD, 0xED, 0x0E, 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x4F, 0x5F, 0x6F, 0x7F,
  818.     0x8F, 0x9F, 0xAF, 0xB0, 0xB6, 0xB7, 0xA8, 0xB8, 0x99, 0xA9, 0xB9, 0xC9,
  819.     0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0x0B, 0x6B, 0x7B, 0x8B, 0x9B, 0xCB,
  820.     0xAC, 0xBC, 0xCC, 0xFC, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF,
  821.     0xEF, 0xFF, 0xAB, 0xBB
  822. };
  823.  
  824. static const uint8_t huff_a37_cb[7] = { 4, 8, 7, 6, 8, 22, 20 };
  825.  
  826. static const uint8_t huff_a37_xlat[63] = {
  827.      0,  1,  2,  3, 61, 62, 63,  4,  5,  6, 58, 59, 60,  7,  8,  9,
  828.     10, 54, 55, 56, 57, 11, 12, 13, 14, 15, 16, 25, 26, 27, 28, 29,
  829.     30, 35, 36, 37, 38, 48, 49, 50, 51, 52, 53, 17, 18, 19, 20, 21,
  830.     22, 23, 24, 31, 33, 34, 39, 40, 41, 42, 43, 44, 45, 46, 47
  831. };
  832.  
  833. static const uint8_t huff_a41_cb[14] = {
  834.     1, 12, 1, 0, 0, 6, 2, 0, 0, 0, 19, 9, 24, 20
  835. };
  836.  
  837. static const uint8_t huff_a41_xlat[81] = {
  838.     0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x50, 0xD0, 0x70,
  839.     0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43,
  840.     0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33,
  841.     0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
  842.     0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x1F,
  843.     0x3F, 0x51, 0x45, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x53, 0xF3,
  844.     0x57, 0xD7, 0xF7, 0x4F, 0xCF, 0x5F, 0xDF, 0x7F, 0xFF
  845. };
  846.  
  847. static const uint8_t huff_a42_cb[10] = { 3, 10, 1, 2, 13, 1, 31, 13, 16, 4 };
  848.  
  849. static const uint8_t huff_a42_xlat[81] = {
  850.     0x00, 0x40, 0x01, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
  851.     0x05, 0x45, 0x15, 0x55, 0x59, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24,
  852.     0x64, 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25,
  853.     0x65, 0x09, 0x49, 0x19, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56,
  854.     0xA0, 0xA4, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x66, 0x4A, 0x1A,
  855.     0x5A, 0x88, 0x98, 0x28, 0x89, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26,
  856.     0xA6, 0x0A, 0x9A, 0x2A, 0x6A, 0xA8, 0xA2, 0x8A, 0xAA
  857. };
  858.  
  859. static const uint8_t huff_a43_cb[5] = { 2, 4, 2, 3, 2 };
  860.  
  861. static const uint8_t huff_a43_xlat[7] = { 0, 7, 1, 2, 6, 3, 5 };
  862.  
  863. static const uint8_t huff_a44_cb[9] = { 4, 10, 5, 4, 12, 17, 47, 24, 12 };
  864.  
  865. static const uint8_t huff_a44_xlat[121] = {
  866.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x21,
  867.     0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xD0,
  868.     0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0x2D, 0xFD, 0x2E, 0xEE,
  869.     0x3F, 0xDF, 0x40, 0xB0, 0xC0, 0x31, 0x41, 0x51, 0xB1, 0xC1, 0x32, 0xB2,
  870.     0xC2, 0xD2, 0x23, 0xB3, 0xD3, 0xE3, 0x04, 0x14, 0xE4, 0xF4, 0x05, 0x15,
  871.     0xD5, 0xE5, 0xF5, 0x0B, 0x1B, 0x2B, 0x3B, 0xEB, 0xFB, 0x0C, 0x1C, 0x2C,
  872.     0xFC, 0x3D, 0x5D, 0xED, 0x3E, 0x4E, 0x5E, 0xBE, 0xDE, 0x4F, 0x5F, 0xBF,
  873.     0xCF, 0x42, 0x52, 0x33, 0x53, 0xC3, 0x24, 0xB4, 0xD4, 0x25, 0x35, 0xC5,
  874.     0x4B, 0xCB, 0xDB, 0x3C, 0x4C, 0x5C, 0xDC, 0xEC, 0x4D, 0xBD, 0xCD, 0xDD,
  875.     0xCE, 0x43, 0x34, 0x44, 0x54, 0xC4, 0x45, 0x55, 0xB5, 0x5B, 0xBB, 0xBC,
  876.     0xCC
  877. };
  878.  
  879. static const uint8_t huff_a45_cb[5] = { 2, 4, 2, 2, 4 };
  880.  
  881. static const uint8_t huff_a45_xlat[8] = { 1, 2, 0, 3, 4, 5, 6, 7 };
  882.  
  883. static const uint8_t huff_a46_cb[7] = { 5, 9, 1, 16, 31, 36, 172 };
  884.  
  885. static const uint8_t huff_a46_xlat[256] = {
  886.     0x02, 0x00, 0x30, 0x21, 0x31, 0x41, 0x61, 0x12, 0x22, 0x42, 0x62, 0x43,
  887.     0x53, 0x24, 0x45, 0x26, 0x27, 0x10, 0x40, 0xB0, 0x01, 0x11, 0x81, 0x32,
  888.     0x52, 0x72, 0x92, 0x03, 0x13, 0x33, 0x63, 0x14, 0x34, 0x54, 0x64, 0x74,
  889.     0x05, 0x15, 0x25, 0x35, 0x55, 0x65, 0x06, 0x46, 0x56, 0x57, 0x67, 0x88,
  890.     0x20, 0x51, 0x91, 0xD1, 0xF2, 0x23, 0x83, 0x93, 0x04, 0x44, 0x84, 0x94,
  891.     0x75, 0x85, 0xC5, 0x36, 0x66, 0x96, 0xB6, 0x07, 0x37, 0x97, 0x08, 0x28,
  892.     0x38, 0x48, 0x68, 0x09, 0x69, 0x79, 0x0A, 0x2A, 0x1B, 0x9B, 0x2C, 0x4D,
  893.     0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xC0, 0xD0, 0xE0, 0xF0, 0x71, 0xA1,
  894.     0xB1, 0xC1, 0xE1, 0xF1, 0x82, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0x73, 0xA3,
  895.     0xB3, 0xC3, 0xD3, 0xE3, 0xF3, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, 0x95,
  896.     0xA5, 0xB5, 0xD5, 0xE5, 0xF5, 0x16, 0x76, 0x86, 0xA6, 0xC6, 0xD6, 0xE6,
  897.     0xF6, 0x17, 0x47, 0x77, 0x87, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, 0x18,
  898.     0x58, 0x78, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, 0x19, 0x29, 0x39,
  899.     0x49, 0x59, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, 0x1A, 0x3A,
  900.     0x4A, 0x5A, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA,
  901.     0x0B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xAB, 0xBB, 0xCB, 0xDB,
  902.     0xEB, 0xFB, 0x0C, 0x1C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC,
  903.     0xBC, 0xCC, 0xDC, 0xEC, 0xFC, 0x0D, 0x1D, 0x2D, 0x3D, 0x5D, 0x6D, 0x7D,
  904.     0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, 0x0E, 0x1E, 0x2E, 0x3E,
  905.     0x4E, 0x5E, 0x6E, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
  906.     0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xBF,
  907.     0xCF, 0xDF, 0xEF, 0xFF
  908. };
  909.  
  910. static const uint8_t huff_a47_cb[8] = { 4, 9, 5, 12, 9, 12, 15, 10 };
  911.  
  912. static const uint8_t huff_a47_xlat[63] = {
  913.      0,  1,  2, 62, 63,  3,  4,  5,  6,  8, 54, 56, 57, 58, 59, 60,
  914.     61,  7,  9, 10, 11, 12, 13, 14, 53, 55, 15, 16, 17, 18, 19, 20,
  915.     21, 36, 37, 39, 42, 52, 22, 25, 28, 35, 38, 40, 41, 43, 45, 46,
  916.     47, 48, 49, 50, 51, 23, 24, 26, 27, 29, 30, 31, 33, 34, 44
  917. };
  918.  
  919. static const uint8_t huff_a51_cb[12] = {
  920.     2, 11, 1, 0, 6, 2, 6, 18, 4, 26, 6, 12
  921. };
  922.  
  923. static const uint8_t huff_a51_xlat[81] = {
  924.     0x00, 0x40, 0xC0, 0x30, 0x04, 0x01, 0x03, 0x10, 0x0C, 0xD0, 0x70, 0x34,
  925.     0x1C, 0x0D, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x4C, 0xCC, 0x3C, 0x41,
  926.     0xC1, 0x11, 0x31, 0x05, 0x43, 0xC3, 0x13, 0x33, 0x0F, 0x74, 0xDC, 0x1D,
  927.     0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
  928.     0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77,
  929.     0x4F, 0x1F, 0x3F, 0x51, 0x45, 0x55, 0xF3, 0xCF, 0xFF, 0xD5, 0x75, 0xF5,
  930.     0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F
  931. };
  932.  
  933. static const uint8_t huff_a52_cb[12] = { 1, 10, 1, 0, 2, 2, 0, 4, 3, 8, 3, 2 };
  934.  
  935. static const uint8_t huff_a52_xlat[25] = {
  936.     0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06,
  937.     0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12,
  938.     0x36
  939. };
  940.  
  941. static const uint8_t huff_a53_xlat[7] = { 0, 1, 2, 6, 7, 3, 5 };
  942.  
  943. static const uint8_t huff_a54_cb[8] = { 4, 9, 4, 7, 12, 19, 21, 58 };
  944.  
  945. static const uint8_t huff_a54_xlat[121] = {
  946.     0x00, 0x01, 0x0F, 0x1F, 0x10, 0xE0, 0xF0, 0x11, 0xF1, 0x2F, 0xFF, 0x20,
  947.     0x21, 0xE1, 0x02, 0x12, 0xF2, 0x03, 0xF3, 0x0E, 0x2E, 0xFE, 0x3F, 0x30,
  948.     0x40, 0xD0, 0xC1, 0xD1, 0x22, 0xC2, 0x33, 0xE3, 0x0C, 0xCC, 0x0D, 0x1D,
  949.     0x2D, 0xFD, 0x1E, 0x3E, 0x5E, 0xEF, 0xC0, 0x52, 0xB2, 0xD2, 0x43, 0xC3,
  950.     0xD3, 0x24, 0x45, 0xF5, 0x4B, 0x5B, 0xFB, 0x1C, 0x3D, 0xBD, 0xDD, 0xEE,
  951.     0xBF, 0xCF, 0xDF, 0x50, 0xB0, 0x31, 0x41, 0x51, 0xB1, 0x32, 0x42, 0xE2,
  952.     0x13, 0x23, 0x53, 0xB3, 0x04, 0x14, 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4,
  953.     0xE4, 0xF4, 0x05, 0x15, 0x25, 0x35, 0x55, 0xB5, 0xC5, 0xD5, 0xE5, 0x0B,
  954.     0x1B, 0x2B, 0x3B, 0xBB, 0xCB, 0xDB, 0xEB, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC,
  955.     0xDC, 0xEC, 0xFC, 0x4D, 0x5D, 0xCD, 0xED, 0x4E, 0xBE, 0xCE, 0xDE, 0x4F,
  956.     0x5F
  957. };
  958.  
  959. static const uint8_t huff_a55_cb[8] = { 1, 6, 1, 1, 1, 0, 3, 2 };
  960.  
  961. static const uint8_t huff_a55_xlat[8] = { 0, 1, 2, 3, 6, 7, 4, 5 };
  962.  
  963. static const uint8_t huff_a56_cb[7] = { 3, 7, 1, 8, 6, 8, 8 };
  964.  
  965. static const uint8_t huff_a56_xlat[31] = {
  966.     4,  0,  1,  2,  3, 28, 29, 30, 31,  5,  6,  7, 24, 25, 27, 8,
  967.     9, 14, 19, 21, 22, 23, 26, 10, 11, 12, 13, 15, 17, 18, 20
  968. };
  969.  
  970. static const uint8_t huff_a57_cb[9] = { 3, 9, 1, 5, 7, 8, 16, 22, 4 };
  971.  
  972. static const uint8_t huff_a57_xlat[63] = {
  973.      0,  1,  2, 61, 62, 63,  3,  4,  5,  6, 58, 59,
  974.     60,  7,  8,  9, 10, 54, 55, 56, 57, 11, 12, 13,
  975.     14, 15, 26, 27, 28, 36, 37, 38, 49, 50, 51, 52,
  976.     53, 16, 17, 18, 19, 20, 21, 23, 24, 25, 29, 30,
  977.     31, 33, 34, 35, 39, 43, 44, 45, 46, 47, 48, 22,
  978.     40, 41, 42
  979. };
  980.  
  981. static const uint8_t huff_a61_cb[12] = {
  982.     2, 11, 1, 0, 8, 0, 1, 16, 10, 29, 12, 4
  983. };
  984.  
  985. static const uint8_t huff_a61_xlat[81] = {
  986.     0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x70, 0x50, 0xD0,
  987.     0xF0, 0x44, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x31, 0x05, 0x0D, 0x13,
  988.     0x07, 0x0F, 0x74, 0xCC, 0xDC, 0xFC, 0x41, 0xC1, 0x11, 0x43, 0xC3, 0x33,
  989.     0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0xF1, 0x45, 0xC5, 0x15,
  990.     0x35, 0x4D, 0xCD, 0x1D, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 0x47, 0xC7, 0x17,
  991.     0x37, 0x4F, 0xCF, 0x1F, 0x3F, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0xDD, 0xFD,
  992.     0x57, 0xD7, 0x77, 0xF7, 0xFF, 0x7D, 0x5F, 0xDF, 0x7F
  993. };
  994.  
  995. static const uint8_t huff_a62_cb[8] = { 3, 8, 5, 2, 2, 9, 5, 2 };
  996.  
  997. static const uint8_t huff_a62_xlat[25] = {
  998.     0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
  999.     0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x0A, 0x32, 0x16, 0x3E, 0x12,
  1000.     0x36
  1001. };
  1002.  
  1003. static const uint8_t huff_a63_cb[11] = {
  1004.     3, 11, 1, 1, 10, 4, 16, 29, 46, 75, 74
  1005. };
  1006.  
  1007. static const uint8_t huff_a63_xlat[256] = {
  1008.     0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x01, 0x41, 0x05, 0x45, 0x55,
  1009.     0x54, 0x11, 0x51, 0x15, 0x80, 0x90, 0x60, 0x24, 0x64, 0xA4, 0x48, 0x61,
  1010.     0x95, 0x25, 0xA5, 0x02, 0x42, 0x52, 0x16, 0x56, 0x20, 0x84, 0x94, 0x18,
  1011.     0x58, 0x81, 0x91, 0x85, 0x65, 0x09, 0x49, 0x19, 0x59, 0x99, 0x29, 0x69,
  1012.     0x79, 0x5D, 0x12, 0x62, 0x06, 0x46, 0x86, 0x66, 0x1A, 0x5A, 0x6A, 0x47,
  1013.     0x17, 0xC0, 0xA0, 0xE0, 0xC4, 0xD4, 0x74, 0x08, 0x78, 0x0C, 0x4C, 0x1C,
  1014.     0x5C, 0xD1, 0x21, 0xE1, 0x71, 0xC5, 0xE5, 0x75, 0xB5, 0x89, 0xBD, 0x92,
  1015.     0x22, 0x96, 0xA6, 0x36, 0x0A, 0x4A, 0x8A, 0x9A, 0x2A, 0x7A, 0xDE, 0x6E,
  1016.     0x43, 0x13, 0x53, 0x23, 0x07, 0x77, 0x4B, 0x1B, 0x9B, 0x6B, 0x2F, 0xD0,
  1017.     0x30, 0x70, 0xE4, 0x34, 0xF4, 0xC8, 0x98, 0x28, 0x68, 0xA8, 0xE8, 0x38,
  1018.     0xB8, 0xF8, 0x9C, 0x2C, 0x6C, 0x7C, 0xA1, 0xB1, 0xD5, 0x35, 0xC9, 0xD9,
  1019.     0xA9, 0xE9, 0x39, 0xB9, 0xF9, 0xCD, 0x1D, 0x2D, 0xAD, 0x7D, 0xC2, 0xD2,
  1020.     0xA2, 0xB2, 0xF2, 0xC6, 0x26, 0x76, 0xB6, 0xDA, 0xAA, 0xEA, 0x3A, 0xFA,
  1021.     0x0E, 0x4E, 0x2E, 0x7E, 0xBE, 0xFE, 0x03, 0x83, 0x63, 0xA3, 0xB3, 0x87,
  1022.     0x57, 0x97, 0xD7, 0x27, 0x0B, 0x8B, 0x5B, 0x2B, 0xAB, 0xCF, 0x1F, 0x9F,
  1023.     0x7F, 0xBF, 0xB0, 0xF0, 0xB4, 0x88, 0xD8, 0x8C, 0xCC, 0xDC, 0xAC, 0xEC,
  1024.     0x3C, 0xBC, 0xFC, 0xC1, 0x31, 0xF1, 0xF5, 0x0D, 0x4D, 0x8D, 0x9D, 0xDD,
  1025.     0x6D, 0xED, 0x3D, 0xFD, 0x82, 0xE2, 0x32, 0x72, 0xD6, 0xE6, 0xF6, 0xCA,
  1026.     0xBA, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xAE, 0xEE, 0x3E, 0xC3, 0x93, 0xD3,
  1027.     0xE3, 0x33, 0x73, 0xF3, 0xC7, 0x67, 0xA7, 0xE7, 0x37, 0xB7, 0xF7, 0xCB,
  1028.     0xDB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, 0x0F, 0x4F, 0x8F, 0x5F, 0xDF, 0x6F,
  1029.     0xAF, 0xEF, 0x3F, 0xFF
  1030. };
  1031.  
  1032. static const uint8_t huff_a64_cb[8] = { 4, 9, 1, 7, 12, 36, 63, 2 };
  1033.  
  1034. static const uint8_t huff_a64_xlat[121] = {
  1035.     0x00, 0x10, 0x20, 0xE0, 0xF0, 0x02, 0x0E, 0xEF, 0x30, 0x01, 0x11, 0x21,
  1036.     0x31, 0xF1, 0x12, 0xF2, 0x1E, 0xEE, 0xDF, 0xFF, 0x40, 0xC0, 0xD0, 0xD1,
  1037.     0xE1, 0x22, 0x32, 0x42, 0xD2, 0xE2, 0x03, 0x13, 0x23, 0xB3, 0xC3, 0xE3,
  1038.     0xF3, 0xE4, 0x05, 0xF5, 0x2B, 0x0C, 0xFC, 0x1D, 0x2D, 0xBD, 0xDD, 0xFD,
  1039.     0x2E, 0x4E, 0xDE, 0xFE, 0x0F, 0x1F, 0x2F, 0x3F, 0x50, 0xB0, 0x41, 0x51,
  1040.     0xB1, 0xC1, 0x52, 0xB2, 0xC2, 0x33, 0x43, 0x53, 0xD3, 0x04, 0x14, 0x24,
  1041.     0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4, 0xF4, 0x15, 0x25, 0x35, 0x45, 0x55,
  1042.     0xB5, 0xC5, 0xD5, 0xE5, 0x0B, 0x1B, 0x3B, 0x4B, 0x5B, 0xBB, 0xCB, 0xDB,
  1043.     0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0xEC, 0x0D,
  1044.     0x3D, 0x4D, 0x5D, 0xCD, 0xED, 0x3E, 0x5E, 0xBE, 0xCE, 0x4F, 0xCF, 0x5F,
  1045.     0xBF
  1046. };
  1047.  
  1048. static const uint8_t huff_a65_cb[8] = { 2, 7, 3, 0, 1, 3, 4, 4 };
  1049.  
  1050. static const uint8_t huff_a65_xlat[15] = {
  1051.     0, 1, 15, 14, 2, 3, 13, 4, 6, 10, 12, 5, 7, 9, 11
  1052. };
  1053.  
  1054. static const uint8_t huff_a66_cb[11] = { 2, 10, 1, 2, 2, 6, 8, 6, 3, 1, 2 };
  1055.  
  1056. static const uint8_t huff_a66_xlat[31] = {
  1057.      0,  1, 31, 2, 30,  3,  4, 15, 17, 28, 29,  5,  6,  7,  8, 24,
  1058.     25, 26, 27, 9, 10, 11, 21, 22, 23, 12, 19, 20, 13, 14, 18
  1059. };
  1060.  
  1061. static const uint8_t huff_a67_cb[10] = { 2, 9, 1, 1, 3, 4, 6, 13, 25, 10 };
  1062.  
  1063. static const uint8_t huff_a67_xlat[63] = {
  1064.      0,  1,  2, 62, 63,  3,  4, 60, 61,  5,  6,  7, 57, 58, 59,  8,
  1065.      9, 10, 11, 12, 13, 26, 38, 52, 53, 54, 55, 56, 14, 15, 16, 17,
  1066.     18, 19, 25, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 39, 45, 46,
  1067.     47, 48, 49, 50, 51, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44
  1068. };
  1069.  
  1070. static const uint8_t huff_a71_cb[5] = { 1, 3, 1, 1, 2 };
  1071.  
  1072. static const uint8_t huff_a72_cb[12] = {
  1073.     2, 11, 1, 0, 4, 8, 3, 8, 24, 17, 12, 4
  1074. };
  1075.  
  1076. static const uint8_t huff_a72_xlat[81] = {
  1077.     0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05,
  1078.     0x15, 0x51, 0x45, 0x55, 0x80, 0x90, 0x20, 0x64, 0x08, 0x19, 0x02, 0x06,
  1079.     0x60, 0x84, 0x94, 0x24, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85,
  1080.     0x95, 0x25, 0x65, 0x09, 0x49, 0x59, 0x42, 0x12, 0x52, 0x46, 0x16, 0x56,
  1081.     0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x26,
  1082.     0x66, 0x0A, 0x4A, 0x1A, 0x5A, 0x88, 0xA8, 0x89, 0xA9, 0x82, 0x92, 0x22,
  1083.     0x62, 0x86, 0xA6, 0x2A, 0x6A, 0xA2, 0x8A, 0x9A, 0xAA
  1084. };
  1085.  
  1086. static const uint8_t huff_a73_cb[11] = { 2, 10, 1, 1, 5, 2, 8, 7, 13, 8, 4 };
  1087.  
  1088. static const uint8_t huff_a73_xlat[49] = {
  1089.     0x00, 0x08, 0x38, 0x01, 0x39, 0x07, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
  1090.     0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x32, 0x0D, 0x16, 0x3E, 0x37,
  1091.     0x18, 0x28, 0x19, 0x29, 0x12, 0x2A, 0x03, 0x3B, 0x05, 0x15, 0x1E, 0x1F,
  1092.     0x2F, 0x1A, 0x0B, 0x2B, 0x33, 0x35, 0x3D, 0x2E, 0x36, 0x13, 0x1B, 0x1D,
  1093.     0x2D
  1094. };
  1095.  
  1096. static const uint8_t huff_a74_cb[14] = {
  1097.     1, 12, 1, 0, 0, 4, 0, 4, 5, 9, 30, 45, 21, 2
  1098. };
  1099.  
  1100. static const uint8_t huff_a74_xlat[121] = {
  1101.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
  1102.     0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30,
  1103.     0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3,
  1104.     0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
  1105.     0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52,
  1106.     0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4,
  1107.     0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C,
  1108.     0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
  1109.     0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5,
  1110.     0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44,
  1111.     0xBB
  1112. };
  1113.  
  1114. static const uint8_t huff_a75_cb[7] = { 2, 6, 1, 3, 3, 4, 4 };
  1115.  
  1116. static const uint8_t huff_a75_xlat[15] = {
  1117.     0, 1, 14, 15, 2, 3, 13, 4, 6, 10, 12, 5, 7, 9, 11
  1118. };
  1119.  
  1120. static const uint8_t huff_a76_cb[12] = {
  1121.     3, 12, 1, 3, 4, 8, 10, 36, 60, 78, 48, 8
  1122. };
  1123.  
  1124. static const uint8_t huff_a76_xlat[256] = {
  1125.     0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22,
  1126.     0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x32, 0x42, 0x33, 0x04, 0x24,
  1127.     0x15, 0x16, 0x50, 0x60, 0xD0, 0x71, 0x81, 0xD1, 0xE1, 0xF1, 0x52, 0x62,
  1128.     0x72, 0xD2, 0x43, 0x53, 0x63, 0xD3, 0x34, 0x44, 0x54, 0x05, 0x25, 0x35,
  1129.     0x45, 0x06, 0x26, 0x36, 0x17, 0x27, 0x18, 0x0D, 0x1D, 0x2D, 0x3D, 0x1E,
  1130.     0x2E, 0x1F, 0x70, 0x80, 0xE0, 0xF0, 0x91, 0xA1, 0xC1, 0x82, 0x92, 0xC2,
  1131.     0xE2, 0xF2, 0x73, 0x83, 0x93, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0xD4, 0xE4,
  1132.     0xF4, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x46, 0x56, 0x66, 0xD6, 0x07, 0x37,
  1133.     0x47, 0x57, 0x08, 0x28, 0x38, 0x48, 0x19, 0x29, 0x39, 0x1A, 0x2A, 0x1B,
  1134.     0x1C, 0x2C, 0x3C, 0x4D, 0x5D, 0x6D, 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x2F,
  1135.     0x3F, 0x4F, 0x90, 0xA0, 0xB0, 0xC0, 0xB1, 0xA2, 0xB2, 0xA3, 0xB3, 0xC3,
  1136.     0x94, 0xA4, 0xB4, 0xC4, 0x75, 0x85, 0x95, 0xA5, 0xC5, 0x76, 0x86, 0x96,
  1137.     0xE6, 0xF6, 0x67, 0x77, 0x87, 0xD7, 0xE7, 0xF7, 0x58, 0x68, 0x78, 0x88,
  1138.     0xD8, 0xE8, 0xF8, 0x09, 0x49, 0x59, 0x69, 0xD9, 0xE9, 0xF9, 0x0A, 0x3A,
  1139.     0x4A, 0x5A, 0xDA, 0xEA, 0x0B, 0x2B, 0x3B, 0x4B, 0xDB, 0x0C, 0x4C, 0x5C,
  1140.     0x6C, 0xDC, 0x7D, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 0x8E, 0x9E,
  1141.     0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB5, 0xA6, 0xB6, 0xC6,
  1142.     0x97, 0xA7, 0xC7, 0x98, 0xA8, 0xB8, 0xC8, 0x79, 0x89, 0x99, 0xA9, 0xB9,
  1143.     0xC9, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xCA, 0xFA, 0x5B, 0x6B, 0x7B, 0x8B,
  1144.     0xCB, 0xEB, 0xFB, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xEC, 0xFC, 0xDD, 0xED,
  1145.     0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xB7, 0xBA, 0x9B, 0xAB,
  1146.     0xBB, 0xCC, 0xEF, 0xFF
  1147. };
  1148.  
  1149. static const uint8_t huff_b01_cb[14] = {
  1150.     1, 12, 1, 0, 0, 2, 6, 0, 11, 13, 12, 24, 4, 8
  1151. };
  1152.  
  1153. static const uint8_t huff_b01_xlat[81] = {
  1154.     0x00, 0x01, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x50, 0xD0, 0x70,
  1155.     0xF0, 0x34, 0x1C, 0x05, 0x0D, 0x13, 0x07, 0x0F, 0x44, 0xC4, 0x14, 0x4C,
  1156.     0xCC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x43, 0xC3, 0x33, 0x54, 0x74, 0xDC,
  1157.     0xFC, 0x71, 0x15, 0x4D, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4, 0x5C,
  1158.     0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x55, 0x35, 0xCD, 0xDD, 0x3D, 0x53,
  1159.     0x73, 0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0xFF, 0xF5, 0x7D, 0xD7,
  1160.     0x5F, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F
  1161. };
  1162.  
  1163. static const uint8_t huff_b02_cb[14] = {
  1164.     1, 12, 1, 0, 0, 4, 0, 8, 4, 9, 19, 13, 13, 10
  1165. };
  1166.  
  1167. static const uint8_t huff_b02_xlat[81] = {
  1168.     0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05,
  1169.     0x15, 0x80, 0x51, 0x45, 0x55, 0x90, 0x20, 0x60, 0x24, 0x08, 0x18, 0x09,
  1170.     0x02, 0x06, 0x84, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21, 0x61, 0x95,
  1171.     0x25, 0x65, 0x19, 0x59, 0x42, 0x12, 0x46, 0x16, 0x56, 0xA0, 0xA4, 0x28,
  1172.     0x68, 0x85, 0xA5, 0x49, 0x29, 0x69, 0x52, 0x0A, 0x1A, 0x5A, 0x88, 0x98,
  1173.     0xA1, 0x89, 0x99, 0xA9, 0x22, 0x62, 0x96, 0x26, 0x66, 0x4A, 0x6A, 0xA8,
  1174.     0x82, 0x92, 0xA2, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA
  1175. };
  1176.  
  1177. static const uint8_t huff_b03_cb[11] = { 1, 9, 1, 0, 0, 4, 0, 5, 12, 13, 14 };
  1178.  
  1179. static const uint8_t huff_b03_xlat[49] = {
  1180.     0x00, 0x08, 0x38, 0x01, 0x07, 0x30, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x18,
  1181.     0x28, 0x31, 0x02, 0x3A, 0x03, 0x05, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x19,
  1182.     0x29, 0x0A, 0x32, 0x0B, 0x3B, 0x0D, 0x15, 0x3D, 0x3E, 0x1F, 0x2F, 0x12,
  1183.     0x1A, 0x2A, 0x13, 0x1B, 0x2B, 0x33, 0x1D, 0x2D, 0x35, 0x16, 0x1E, 0x2E,
  1184.     0x36
  1185. };
  1186.  
  1187. static const uint8_t huff_b04_cb[12] = {
  1188.     2, 11, 1, 0, 4, 4, 5, 9, 30, 45, 21, 2
  1189. };
  1190.  
  1191. static const uint8_t huff_b04_xlat[121] = {
  1192.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
  1193.     0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30,
  1194.     0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3,
  1195.     0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
  1196.     0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52,
  1197.     0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4,
  1198.     0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C,
  1199.     0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
  1200.     0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5,
  1201.     0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44,
  1202.     0xBB
  1203. };
  1204.  
  1205. static const uint8_t huff_b05_cb[11] = {
  1206.     3, 11, 1, 4, 4, 4, 12, 30, 73, 75, 22
  1207. };
  1208.  
  1209. static const uint8_t huff_b05_xlat[225] = {
  1210.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
  1211.     0x0E, 0x30, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F,
  1212.     0xEF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0x32, 0xD2,
  1213.     0xE2, 0x13, 0x23, 0xE3, 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x1D,
  1214.     0x2D, 0xFD, 0x2E, 0x3E, 0xEE, 0x3F, 0xDF, 0x50, 0xB0, 0x41, 0x51, 0x61,
  1215.     0x71, 0x91, 0xA1, 0xB1, 0xC1, 0x42, 0x62, 0x72, 0x92, 0xA2, 0xC2, 0x33,
  1216.     0x93, 0xA3, 0xD3, 0x14, 0x24, 0xE4, 0xF4, 0x05, 0x15, 0xF5, 0x16, 0x26,
  1217.     0xD6, 0xE6, 0xF6, 0x17, 0x27, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xE9,
  1218.     0xF9, 0x1A, 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x1C, 0x2C, 0xEC, 0xFC,
  1219.     0x3D, 0x7D, 0x9D, 0xDD, 0xED, 0x4E, 0x6E, 0x7E, 0x9E, 0xAE, 0xCE, 0xDE,
  1220.     0x4F, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0xB2, 0x43, 0x53,
  1221.     0x63, 0x73, 0xB3, 0xC3, 0x34, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4,
  1222.     0xD4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xD5, 0xE5, 0x36, 0x46, 0x56,
  1223.     0x66, 0xA6, 0xB6, 0xC6, 0x37, 0x47, 0x57, 0xB7, 0xC7, 0x49, 0x59, 0x69,
  1224.     0xB9, 0xC9, 0xD9, 0x3A, 0x4A, 0x5A, 0x6A, 0xAA, 0xBA, 0xCA, 0xDA, 0x2B,
  1225.     0x3B, 0x6B, 0x7B, 0x9B, 0xAB, 0xDB, 0xEB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C,
  1226.     0xAC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0xAD, 0xBD, 0xCD, 0x5E, 0xBE, 0x54,
  1227.     0x45, 0x55, 0xB5, 0xC5, 0x76, 0x96, 0x67, 0x77, 0x97, 0xA7, 0x79, 0x99,
  1228.     0xA9, 0x7A, 0x9A, 0x4B, 0x5B, 0xBB, 0xCB, 0x5C, 0xBC
  1229. };
  1230.  
  1231. static const uint8_t huff_b07_cb[9] = { 3, 9, 3, 2, 4, 8, 23, 13, 10 };
  1232.  
  1233. static const uint8_t huff_b07_xlat[63] = {
  1234.      0,  1, 63,  2, 62,  3,  4, 60, 61,  5,  6,  7,  8, 56, 57, 58,
  1235.     59,  9, 10, 11, 12, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36,
  1236.     37, 38, 39, 51, 52, 53, 54, 55, 13, 14, 15, 16, 17, 18, 19, 45,
  1237.     46, 47, 48, 49, 50, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44
  1238. };
  1239.  
  1240. static const uint8_t huff_b12_cb[10] = { 3, 10, 1, 3, 12, 0, 30, 9, 18, 8 };
  1241.  
  1242. static const uint8_t huff_b12_xlat[81] = {
  1243.     0x00, 0x40, 0x04, 0x01, 0x10, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
  1244.     0x05, 0x45, 0x15, 0x55, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64,
  1245.     0x08, 0x48, 0x18, 0x81, 0x91, 0x61, 0x85, 0x95, 0x25, 0x65, 0x09, 0x49,
  1246.     0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0xA4, 0x58,
  1247.     0x68, 0x21, 0xA5, 0x29, 0x69, 0x1A, 0x5A, 0xA0, 0x88, 0x98, 0x28, 0xA1,
  1248.     0x89, 0x99, 0xA9, 0x92, 0x22, 0x62, 0x86, 0x96, 0x26, 0x66, 0x0A, 0x4A,
  1249.     0x6A, 0xA8, 0x82, 0xA2, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA
  1250. };
  1251.  
  1252. static const uint8_t huff_b14_cb[14] = {
  1253.     1, 12, 1, 0, 0, 4, 0, 3, 5, 16, 28, 34, 26, 4
  1254. };
  1255.  
  1256. static const uint8_t huff_b14_xlat[121] = {
  1257.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02,
  1258.     0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B,
  1259.     0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1,
  1260.     0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
  1261.     0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42,
  1262.     0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35,
  1263.     0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD,
  1264.     0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
  1265.     0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C,
  1266.     0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B,
  1267.     0xBB
  1268. };
  1269.  
  1270. static const uint8_t huff_b16_cb[11] = {
  1271.     4, 12, 4, 4, 9, 13, 37, 76, 72, 39, 2
  1272. };
  1273.  
  1274. static const uint8_t huff_b16_xlat[256] = {
  1275.     0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22,
  1276.     0x32, 0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x42, 0x52, 0x33, 0x43,
  1277.     0x04, 0x24, 0x34, 0x15, 0x25, 0x16, 0x50, 0x60, 0x70, 0x71, 0x81, 0xD1,
  1278.     0xE1, 0x62, 0x72, 0x82, 0xD2, 0x53, 0x63, 0x73, 0xD3, 0x44, 0x54, 0x05,
  1279.     0x35, 0x45, 0x55, 0x06, 0x26, 0x36, 0x07, 0x17, 0x27, 0x37, 0x18, 0x28,
  1280.     0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x2E, 0x1F, 0x80, 0x90, 0xD0, 0xE0, 0xF0,
  1281.     0x91, 0xA1, 0xB1, 0xC1, 0xF1, 0x92, 0xA2, 0xB2, 0xC2, 0xE2, 0xF2, 0x83,
  1282.     0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0x94, 0xD4, 0xE4, 0xF4,
  1283.     0x65, 0x75, 0x85, 0xD5, 0xE5, 0x46, 0x56, 0x66, 0x76, 0xD6, 0xE6, 0x47,
  1284.     0x57, 0x67, 0xD7, 0x08, 0x38, 0x48, 0x58, 0x09, 0x29, 0x39, 0x49, 0x0A,
  1285.     0x1A, 0x2A, 0x3A, 0x1B, 0x2B, 0x0C, 0x1C, 0x2C, 0x3C, 0x0D, 0x4D, 0x5D,
  1286.     0x6D, 0x7D, 0x0E, 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x2F, 0x3F, 0x4F, 0xA0,
  1287.     0xB0, 0xC0, 0xB3, 0xA4, 0xB4, 0xC4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5, 0x86,
  1288.     0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xE7, 0xF7,
  1289.     0x68, 0x78, 0x88, 0x98, 0xD8, 0xE8, 0xF8, 0x59, 0x69, 0x79, 0x89, 0xD9,
  1290.     0xE9, 0xF9, 0x4A, 0x5A, 0x6A, 0x7A, 0xDA, 0xEA, 0x0B, 0x3B, 0x4B, 0x5B,
  1291.     0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0xDC, 0x8D, 0x9D, 0xAD, 0xBD,
  1292.     0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xB7,
  1293.     0xA8, 0xB8, 0xC8, 0x99, 0xA9, 0xB9, 0xC9, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA,
  1294.     0xFA, 0x6B, 0x7B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xFB, 0x9C, 0xAC, 0xBC,
  1295.     0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xAF, 0xBF,
  1296.     0xCF, 0xDF, 0xEF, 0xFF
  1297. };
  1298.  
  1299. static const uint8_t huff_b26_cb[12] = {
  1300.     3, 12, 2, 2, 4, 5, 11, 26, 67, 78, 51, 10
  1301. };
  1302.  
  1303. static const uint8_t huff_b26_xlat[256] = {
  1304.     0x00, 0x01, 0x10, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x22, 0x03,
  1305.     0x13, 0x40, 0x41, 0x51, 0x32, 0x42, 0x23, 0x33, 0x04, 0x14, 0x24, 0x15,
  1306.     0x50, 0x61, 0x71, 0xD1, 0xE1, 0x52, 0x62, 0xD2, 0x43, 0x53, 0xD3, 0x34,
  1307.     0x44, 0x05, 0x25, 0x35, 0x06, 0x16, 0x26, 0x17, 0x18, 0x1D, 0x2D, 0x3D,
  1308.     0x1E, 0x2E, 0x60, 0x70, 0x80, 0xD0, 0xE0, 0xF0, 0x81, 0x91, 0xA1, 0xC1,
  1309.     0xF1, 0x72, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x63, 0x73, 0xE3, 0xF3, 0x54,
  1310.     0x64, 0x74, 0xD4, 0xE4, 0xF4, 0x45, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x36,
  1311.     0x46, 0x56, 0xD6, 0xE6, 0x07, 0x27, 0x37, 0x47, 0xD7, 0x08, 0x28, 0x38,
  1312.     0x19, 0x29, 0x1A, 0x1B, 0x1C, 0x2C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x0E,
  1313.     0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x90, 0xA0, 0xC0,
  1314.     0xB1, 0xA2, 0xB2, 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0x84, 0x94, 0xA4, 0xC4,
  1315.     0x75, 0x85, 0x95, 0xC5, 0x66, 0x76, 0x86, 0x96, 0xC6, 0xF6, 0x57, 0x67,
  1316.     0x77, 0xE7, 0xF7, 0x48, 0x58, 0x68, 0x78, 0xD8, 0xE8, 0xF8, 0x09, 0x39,
  1317.     0x49, 0x59, 0xD9, 0xE9, 0xF9, 0x0A, 0x2A, 0x3A, 0x4A, 0xDA, 0xEA, 0x0B,
  1318.     0x2B, 0x3B, 0xDB, 0xEB, 0x0C, 0x3C, 0x4C, 0x5C, 0x6C, 0xDC, 0x8D, 0x9D,
  1319.     0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x5F, 0x6F, 0x7F,
  1320.     0x8F, 0x9F, 0xAF, 0xB0, 0xB4, 0xA5, 0xB5, 0xA6, 0xB6, 0x87, 0x97, 0xA7,
  1321.     0xB7, 0xC7, 0x88, 0x98, 0xA8, 0xC8, 0x69, 0x79, 0x89, 0x99, 0xA9, 0xC9,
  1322.     0x5A, 0x6A, 0x7A, 0x9A, 0xCA, 0xFA, 0x4B, 0x5B, 0x6B, 0x7B, 0xCB, 0xFB,
  1323.     0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xDE,
  1324.     0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xB8, 0xB9, 0x8A, 0xAA, 0xBA, 0x8B,
  1325.     0x9B, 0xAB, 0xBB, 0xFF
  1326. };
  1327.  
  1328. static const uint8_t huff_b32_cb[12] = {
  1329.     2, 11, 1, 0, 4, 6, 7, 10, 22, 11, 16, 4
  1330. };
  1331.  
  1332. static const uint8_t huff_b32_xlat[81] = {
  1333.     0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x41, 0x11, 0x05, 0x80,
  1334.     0x54, 0x51, 0x45, 0x15, 0x55, 0x02, 0x90, 0x20, 0x60, 0x84, 0x24, 0x08,
  1335.     0x18, 0x09, 0x12, 0x06, 0xA0, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21,
  1336.     0x61, 0x85, 0x95, 0x25, 0x65, 0x49, 0x19, 0x59, 0x42, 0x52, 0x46, 0x16,
  1337.     0x56, 0x0A, 0xA4, 0x28, 0x68, 0xA1, 0xA5, 0x29, 0x69, 0x26, 0x4A, 0x1A,
  1338.     0x5A, 0x88, 0x98, 0xA8, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86,
  1339.     0x96, 0x66, 0x9A, 0x2A, 0x6A, 0xA2, 0xA6, 0x8A, 0xAA
  1340. };
  1341.  
  1342. static const uint8_t huff_b33_cb[13] = {
  1343.     2, 12, 1, 0, 0, 4, 11, 8, 28, 92, 97, 13, 2
  1344. };
  1345.  
  1346. static const uint8_t huff_b33_xlat[256] = {
  1347.     0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
  1348.     0x05, 0x45, 0x15, 0x55, 0x20, 0x95, 0x65, 0x49, 0x59, 0x52, 0x46, 0x16,
  1349.     0x80, 0x90, 0x60, 0x84, 0x94, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18, 0x58,
  1350.     0x81, 0x91, 0x21, 0x61, 0x85, 0x25, 0x09, 0x19, 0x69, 0x02, 0x42, 0x12,
  1351.     0x06, 0x56, 0x5A, 0x57, 0xD0, 0x74, 0x68, 0x5C, 0xC1, 0xD5, 0xA5, 0xE5,
  1352.     0x75, 0xB5, 0xF5, 0x99, 0xD9, 0xA9, 0xE9, 0x79, 0xB9, 0xF9, 0x1D, 0x5D,
  1353.     0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x82, 0x92, 0xD2, 0x62,
  1354.     0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 0x76, 0xB6, 0xF6, 0x0A, 0x4A, 0x1A,
  1355.     0x9A, 0xDA, 0x2A, 0x6A, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA, 0x5E, 0x9E, 0xDE,
  1356.     0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x03, 0x13, 0x53, 0x17, 0x97, 0xD7,
  1357.     0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B, 0xAB, 0xEB,
  1358.     0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xBF, 0xFF,
  1359.     0xC0, 0xA0, 0xE0, 0x30, 0xC4, 0xD4, 0xE4, 0x34, 0xB4, 0xF4, 0x88, 0xC8,
  1360.     0x98, 0xD8, 0x28, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, 0x0C, 0x4C, 0x1C,
  1361.     0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x7C, 0xBC, 0xFC, 0xD1, 0xA1, 0xE1, 0x31,
  1362.     0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x4D, 0x8D,
  1363.     0xCD, 0x2D, 0x3D, 0x22, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36,
  1364.     0x8A, 0xCA, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x43, 0x83,
  1365.     0x93, 0xD3, 0x23, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x07, 0x47, 0x87,
  1366.     0xC7, 0x27, 0x37, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x4F, 0x8F, 0xCF,
  1367.     0x1F, 0x70, 0xB0, 0xF0, 0x8C, 0xCC, 0x2C, 0x3C, 0xC2, 0x32, 0xC3, 0x0F,
  1368.     0x2F, 0x3F, 0x33, 0x0B
  1369. };
  1370.  
  1371. static const uint8_t huff_b35_cb[14] = {
  1372.     1, 12, 1, 0, 0, 0, 4, 6, 6, 14, 42, 63, 59, 30
  1373. };
  1374.  
  1375. static const uint8_t huff_b35_xlat[225] = {
  1376.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 0xFF, 0x20,
  1377.     0xE0, 0x21, 0xF2, 0xFE, 0xEF, 0x30, 0xD0, 0xE1, 0x12, 0x22, 0xE2, 0x03,
  1378.     0x0D, 0x1D, 0x1E, 0x2E, 0xEE, 0x2F, 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0,
  1379.     0xB0, 0xC0, 0x31, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0xD2, 0x13, 0xE3, 0xF3,
  1380.     0x04, 0x05, 0x06, 0x07, 0x17, 0xF7, 0x09, 0x19, 0x0A, 0x1A, 0xFA, 0x0C,
  1381.     0x1C, 0x2D, 0xED, 0xFD, 0x3E, 0x7E, 0xDE, 0x3F, 0x6F, 0x7F, 0x9F, 0xAF,
  1382.     0xCF, 0x50, 0x41, 0x51, 0x61, 0xA1, 0xB1, 0x62, 0x72, 0x92, 0xA2, 0xC2,
  1383.     0x23, 0x33, 0x63, 0x73, 0x93, 0xA3, 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4,
  1384.     0xF4, 0x15, 0xF5, 0x16, 0x26, 0xD6, 0xE6, 0xF6, 0x27, 0x37, 0x47, 0xE7,
  1385.     0x29, 0x39, 0xC9, 0xD9, 0xE9, 0xF9, 0x2A, 0xEA, 0x0B, 0x1B, 0xFB, 0x2C,
  1386.     0x7C, 0xEC, 0xFC, 0x3D, 0x4D, 0x6D, 0x7D, 0xDD, 0x4E, 0x5E, 0x6E, 0x9E,
  1387.     0xAE, 0xCE, 0x4F, 0x5F, 0x42, 0x52, 0xB2, 0x43, 0xB3, 0xC3, 0x44, 0x64,
  1388.     0x74, 0x94, 0xA4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xE5, 0x36, 0x46,
  1389.     0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0xA7, 0xB7, 0xC7, 0xD7, 0x59,
  1390.     0xA9, 0xB9, 0x3A, 0x4A, 0x6A, 0xCA, 0xDA, 0x2B, 0x3B, 0x6B, 0x9B, 0xAB,
  1391.     0xDB, 0xEB, 0x3C, 0x6C, 0x9C, 0xAC, 0xCC, 0xDC, 0x5D, 0x9D, 0xAD, 0xBD,
  1392.     0xCD, 0xBE, 0xBF, 0x53, 0x54, 0xB4, 0xC4, 0x45, 0x55, 0xB5, 0xC5, 0xD5,
  1393.     0x56, 0x67, 0x77, 0x97, 0x49, 0x69, 0x79, 0x99, 0x5A, 0x7A, 0x9A, 0xAA,
  1394.     0xBA, 0x4B, 0x5B, 0x7B, 0xBB, 0xCB, 0x4C, 0x5C, 0xBC
  1395. };
  1396.  
  1397. static const uint8_t huff_b37_cb[13] = {
  1398.     1, 11, 1, 0, 2, 0, 2, 2, 6, 17, 14, 13, 6
  1399. };
  1400.  
  1401. static const uint8_t huff_b37_xlat[63] = {
  1402.      0,  1, 63,  2, 62,  3, 61,  4,  5,  6, 58, 59, 60,  7,  8,  9,
  1403.     10, 25, 26, 27, 28, 29, 34, 35, 37, 38, 39, 55, 56, 57, 11, 13,
  1404.     14, 15, 30, 31, 33, 36, 49, 50, 51, 52, 53, 54, 12, 16, 17, 18,
  1405.     19, 21, 41, 43, 44, 45, 46, 47, 48, 20, 22, 23, 24, 40, 42
  1406. };
  1407.  
  1408. static const uint8_t huff_b41_cb[14] = {
  1409.     1, 12, 1, 0, 0, 1, 7, 0, 20, 4, 10, 24, 2, 12
  1410. };
  1411.  
  1412. static const uint8_t huff_b41_xlat[81] = {
  1413.     0x00, 0x01, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x03, 0x50, 0xD0, 0x70,
  1414.     0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D,
  1415.     0xC3, 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0x54, 0x74, 0xDC,
  1416.     0xFC, 0x71, 0x15, 0x4D, 0x1D, 0x37, 0x3F, 0xD4, 0xF4, 0x5C, 0x7C, 0x51,
  1417.     0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0xF3,
  1418.     0x47, 0xC7, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xFF, 0xD5, 0x75, 0xF5,
  1419.     0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F
  1420. };
  1421.  
  1422. static const uint8_t huff_b42_cb[11] = { 1, 9, 1, 0, 1, 3, 2, 3, 7, 4, 4 };
  1423.  
  1424. static const uint8_t huff_b42_xlat[25] = {
  1425.     0x00, 0x07, 0x08, 0x38, 0x01, 0x39, 0x0F, 0x10, 0x09, 0x3F, 0x30, 0x31,
  1426.     0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16,
  1427.     0x36
  1428. };
  1429.  
  1430. static const uint8_t huff_b43_cb[10] = { 2, 9, 1, 1, 3, 4, 9, 15, 12, 4 };
  1431.  
  1432. static const uint8_t huff_b43_xlat[49] = {
  1433.     0x00, 0x07, 0x08, 0x38, 0x01, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x31,
  1434.     0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x18, 0x28, 0x11, 0x19, 0x29, 0x0A,
  1435.     0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x3E, 0x1F, 0x2F, 0x12, 0x1A, 0x2A,
  1436.     0x32, 0x13, 0x33, 0x15, 0x35, 0x16, 0x1E, 0x2E, 0x36, 0x1B, 0x2B, 0x1D,
  1437.     0x2D
  1438. };
  1439.  
  1440. static const uint8_t huff_b47_cb[10] = { 2, 9, 1, 1, 3, 4, 6, 14, 22, 12 };
  1441.  
  1442. static const uint8_t huff_b47_xlat[63] = {
  1443.      0,  1,  2, 62, 63,  3,  4, 60, 61,  5,  6,  7, 57, 58, 59,  8,
  1444.      9, 10, 11, 12, 26, 27, 37, 38, 52, 53, 54, 55, 56, 13, 14, 15,
  1445.     16, 17, 18, 25, 28, 29, 30, 31, 33, 34, 35, 36, 39, 46, 47, 48,
  1446.     49, 50, 51, 19, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44, 45
  1447. };
  1448.  
  1449. static const uint8_t huff_b52_cb[11] = { 1, 9, 1, 0, 1, 3, 2, 3, 7, 4, 4 };
  1450.  
  1451. static const uint8_t huff_b52_xlat[25] = {
  1452.     0x00, 0x01, 0x08, 0x38, 0x07, 0x39, 0x0F, 0x30, 0x09, 0x3F, 0x10, 0x31,
  1453.     0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16,
  1454.     0x36
  1455. };
  1456.  
  1457. static const uint8_t huff_b53_cb[7] = { 1, 5, 1, 1, 1, 0, 4 }; // same as b63!!!
  1458.  
  1459. static const uint8_t huff_b53_xlat[7] = { 0, 7, 1, 2, 3, 5, 6 };
  1460.  
  1461. static const uint8_t huff_b56_cb[11] = { 1, 9, 1, 0, 2, 0, 2, 4, 11, 9, 2 };
  1462.  
  1463. static const uint8_t huff_b56_xlat[31] = {
  1464.      0,  1, 31,  2, 30, 3,  4, 13, 29,  5,  6,  7, 14, 15, 17, 18,
  1465.     19, 26, 27, 28,  8, 9, 12, 20, 21, 22, 23, 24, 25, 10, 11
  1466. };
  1467.  
  1468. static const uint8_t huff_b62_cb[14] = {
  1469.     1, 12, 1, 0, 0, 2, 3, 5, 12, 14, 18, 15, 9, 2
  1470. };
  1471.  
  1472. static const uint8_t huff_b62_xlat[81] = {
  1473.     0x00, 0x40, 0x01, 0x10, 0x04, 0x02, 0x80, 0x50, 0x90, 0x05, 0x06, 0x20,
  1474.     0x60, 0x44, 0x14, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0xA0,
  1475.     0x84, 0x94, 0x64, 0xA4, 0x28, 0x51, 0x45, 0x55, 0x19, 0x12, 0x16, 0x0A,
  1476.     0x1A, 0x48, 0x58, 0x68, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65,
  1477.     0x49, 0x59, 0x29, 0x69, 0x42, 0x46, 0x56, 0x88, 0x98, 0xA8, 0xA1, 0xA5,
  1478.     0x99, 0xA9, 0x52, 0x22, 0x26, 0x66, 0x4A, 0x5A, 0x2A, 0x6A, 0x89, 0x82,
  1479.     0x92, 0x62, 0x86, 0x96, 0xA6, 0x8A, 0xAA, 0xA2, 0x9A
  1480. };
  1481.  
  1482. static const uint8_t huff_b63_cb[7] = { 1, 5, 1, 1, 1, 0, 4 };
  1483.  
  1484. static const uint8_t huff_b63_xlat[7] = { 0, 1, 7, 2, 3, 5, 6 };
  1485.  
  1486. static const uint8_t huff_b64_cb[7] = { 1, 5, 1, 1, 1, 1, 2 };
  1487.  
  1488. static const uint8_t huff_b64_xlat[6] = { 1, 0, 2, 5, 3, 4 };
  1489.  
  1490. static const uint8_t huff_b65_cb[14] = {
  1491.     1, 12, 1, 0, 0, 2, 2, 2, 6, 12, 34, 92, 54, 20
  1492. };
  1493.  
  1494. static const uint8_t huff_b65_xlat[225] = {
  1495.     0x00, 0xF0, 0x01, 0x10, 0x0F, 0x11, 0xF1, 0x20, 0xE0, 0x02, 0x0E, 0x1F,
  1496.     0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x07, 0x0A, 0x0D, 0x1E, 0xFE, 0x2F,
  1497.     0xEF, 0x30, 0x70, 0x90, 0xA0, 0xC0, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0x92,
  1498.     0xE2, 0x03, 0x13, 0x63, 0x04, 0x06, 0xE6, 0xE7, 0xF7, 0x09, 0x19, 0x39,
  1499.     0xFA, 0x0C, 0x1C, 0xDD, 0xED, 0xFD, 0x2E, 0x7E, 0x9E, 0x3F, 0x9F, 0x40,
  1500.     0x50, 0x60, 0xB0, 0x31, 0x41, 0x61, 0xA1, 0xB1, 0x22, 0x42, 0x72, 0xA2,
  1501.     0xB2, 0xC2, 0xD2, 0x23, 0x33, 0x73, 0xA3, 0xC3, 0xD3, 0xE3, 0xF3, 0x14,
  1502.     0x24, 0x34, 0x44, 0x74, 0xD4, 0xE4, 0x05, 0x25, 0x45, 0x65, 0x95, 0xA5,
  1503.     0x16, 0x26, 0x46, 0x76, 0xA6, 0xB6, 0xC6, 0xD6, 0xF6, 0x17, 0x27, 0x37,
  1504.     0x47, 0x67, 0xA7, 0xD7, 0x29, 0x69, 0xB9, 0xD9, 0xE9, 0xF9, 0x1A, 0x2A,
  1505.     0x3A, 0x9A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0x3B, 0x6B, 0xEB, 0xFB, 0x2C,
  1506.     0x6C, 0xEC, 0xFC, 0x1D, 0x2D, 0x4D, 0x6D, 0x9D, 0xAD, 0x3E, 0x4E, 0x6E,
  1507.     0xAE, 0xCE, 0xEE, 0x4F, 0x5F, 0x6F, 0xDF, 0x51, 0x52, 0x62, 0x43, 0x93,
  1508.     0xB3, 0x54, 0x94, 0xA4, 0xF4, 0x15, 0x75, 0xB5, 0xE5, 0xF5, 0x36, 0x56,
  1509.     0x66, 0x96, 0x57, 0x77, 0x49, 0x59, 0xA9, 0xC9, 0x4A, 0x5A, 0x6A, 0x7A,
  1510.     0xAA, 0xBA, 0x2B, 0x4B, 0x7B, 0x9B, 0xAB, 0xDB, 0x3C, 0x4C, 0x7C, 0x9C,
  1511.     0xAC, 0xBC, 0xCC, 0x3D, 0x5D, 0x7D, 0xBD, 0xCD, 0x5E, 0xBE, 0xDE, 0xBF,
  1512.     0xCF, 0x53, 0x64, 0xB4, 0xC4, 0x35, 0x55, 0xC5, 0xD5, 0x97, 0xB7, 0xC7,
  1513.     0x79, 0x99, 0x5B, 0xBB, 0xCB, 0x5C, 0xDC, 0x7F, 0xAF
  1514. };
  1515.  
  1516. static const uint8_t huff_b66_cb[14] = {
  1517.     1, 12, 1, 0, 0, 3, 0, 3, 3, 10, 40, 85, 61, 50
  1518. };
  1519.  
  1520. static const uint8_t huff_b66_xlat[256] = {
  1521.     0x00, 0x10, 0x01, 0x11, 0x21, 0x02, 0x12, 0x20, 0x22, 0x13, 0x30, 0x31,
  1522.     0x41, 0xD1, 0xE1, 0x32, 0x52, 0x03, 0x23, 0x2D, 0x40, 0x50, 0x60, 0x80,
  1523.     0xD0, 0xE0, 0x51, 0x61, 0xF1, 0x42, 0x62, 0xD2, 0xE2, 0xF2, 0x33, 0x43,
  1524.     0xC3, 0xD3, 0xE3, 0x04, 0x14, 0xD4, 0xF4, 0x25, 0x35, 0x16, 0x17, 0xF7,
  1525.     0xD8, 0x1C, 0x3C, 0x0D, 0x1D, 0x3D, 0x5D, 0x0E, 0x1E, 0x2E, 0x7E, 0x2F,
  1526.     0xC0, 0xF0, 0x71, 0x81, 0x91, 0xC1, 0x72, 0x82, 0x92, 0xB2, 0xC2, 0x53,
  1527.     0x63, 0x73, 0x93, 0xA3, 0xF3, 0x24, 0x44, 0x64, 0x84, 0xA4, 0xB4, 0x05,
  1528.     0x15, 0x95, 0xD5, 0x06, 0x26, 0x36, 0x46, 0x96, 0xD6, 0xE6, 0xF6, 0x07,
  1529.     0x27, 0x37, 0xD7, 0xE7, 0x08, 0x18, 0x28, 0x38, 0xE8, 0xF8, 0x09, 0x19,
  1530.     0x29, 0xE9, 0xF9, 0x0A, 0x1A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0xDB, 0xEB,
  1531.     0xFB, 0x2C, 0x4C, 0x5C, 0x7C, 0x8C, 0x4D, 0x6D, 0x8D, 0x9D, 0xFD, 0x3E,
  1532.     0x5E, 0x6E, 0x8E, 0x9E, 0xEE, 0x0F, 0x1F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
  1533.     0xCF, 0x70, 0xA1, 0xA2, 0x83, 0xB3, 0x34, 0x74, 0xC4, 0xE4, 0x55, 0x65,
  1534.     0x85, 0xA5, 0xC5, 0xE5, 0xF5, 0x56, 0x66, 0x76, 0x86, 0xA6, 0xC6, 0x57,
  1535.     0x67, 0x77, 0x97, 0xA7, 0x48, 0x88, 0x98, 0x49, 0x59, 0x79, 0x99, 0x3A,
  1536.     0x4A, 0x8A, 0xBA, 0xFA, 0x2B, 0x7B, 0x0C, 0xAC, 0xBC, 0xCC, 0xEC, 0x7D,
  1537.     0xAD, 0xBD, 0xDD, 0x4E, 0xBE, 0xCE, 0xFE, 0x8F, 0x9F, 0xAF, 0xBF, 0xDF,
  1538.     0xEF, 0xFF, 0x90, 0xA0, 0xB0, 0xB1, 0x54, 0x94, 0x45, 0x75, 0xB5, 0xB6,
  1539.     0x47, 0x87, 0xB7, 0xC7, 0x58, 0x68, 0x78, 0xA8, 0xB8, 0xC8, 0x39, 0x69,
  1540.     0x89, 0xA9, 0xB9, 0xC9, 0xD9, 0x2A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0x3B,
  1541.     0x4B, 0x5B, 0x6B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0x6C, 0x9C, 0xDC, 0xFC,
  1542.     0xCD, 0xED, 0xAE, 0xDE
  1543. };
  1544.  
  1545. static const uint8_t huff_b67_cb[10] = { 2, 9, 1, 2, 1, 4, 7, 10, 26, 12 };
  1546.  
  1547. static const uint8_t huff_b67_xlat[63] = {
  1548.      0,  1, 63, 62,  2,  3, 60, 61,  4,  5,  6,  7, 57, 58, 59,  8,
  1549.      9, 10, 11, 12, 52, 53, 54, 55, 56, 13, 14, 15, 16, 17, 18, 25,
  1550.     26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 46, 47, 48,
  1551.     49, 50, 51, 19, 20, 21, 22, 23, 24, 40, 41, 42, 43, 44, 45
  1552. };
  1553.  
  1554. static const uint8_t huff_b71_cb[14] = {
  1555.     1, 12, 1, 0, 0, 1, 7, 0, 19, 5, 13, 23, 0, 12
  1556. };
  1557.  
  1558. static const uint8_t huff_b71_xlat[81] = {
  1559.     0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70,
  1560.     0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D,
  1561.     0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0xC3, 0x54, 0x74, 0xDC,
  1562.     0xFC, 0xF1, 0xC5, 0x15, 0x1D, 0x53, 0xC7, 0x37, 0x4F, 0x3F, 0xD4, 0xF4,
  1563.     0x5C, 0x7C, 0x51, 0xD1, 0x71, 0x45, 0x55, 0x35, 0x4D, 0xCD, 0xDD, 0x3D,
  1564.     0xD3, 0x73, 0xF3, 0x47, 0x17, 0x77, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5,
  1565.     0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F
  1566. };
  1567.  
  1568. static const uint8_t huff_b73_cb[13] = {
  1569.     1, 11, 1, 0, 0, 0, 1, 4, 9, 4, 103, 110, 24
  1570. };
  1571.  
  1572. static const uint8_t huff_b73_xlat[256] = {
  1573.     0x00, 0x40, 0x10, 0x04, 0x01, 0x05, 0x50, 0x14, 0x54, 0x41, 0x11, 0x51,
  1574.     0x45, 0x15, 0x55, 0x44, 0x95, 0x6A, 0x03, 0x80, 0xC0, 0x90, 0xD0, 0x94,
  1575.     0xD4, 0x24, 0x64, 0x58, 0x91, 0xA1, 0x85, 0xD5, 0x25, 0x65, 0xA5, 0xE5,
  1576.     0x75, 0xB5, 0xF5, 0x19, 0x59, 0x99, 0xD9, 0x69, 0xA9, 0xE9, 0x79, 0xB9,
  1577.     0xF9, 0x4D, 0x5D, 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x02,
  1578.     0x42, 0x52, 0x06, 0x46, 0x16, 0x56, 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6,
  1579.     0x76, 0xB6, 0xF6, 0x1A, 0x5A, 0x9A, 0xDA, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA,
  1580.     0x5E, 0x9E, 0xDE, 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x07, 0x47, 0x57,
  1581.     0x97, 0xD7, 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B,
  1582.     0xAB, 0xEB, 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F,
  1583.     0xBF, 0xFF, 0x20, 0x60, 0x70, 0xB0, 0xF0, 0x84, 0xC4, 0xA4, 0xE4, 0x74,
  1584.     0xB4, 0xF4, 0x08, 0x88, 0x18, 0x98, 0xD8, 0x68, 0xA8, 0xE8, 0x78, 0xB8,
  1585.     0xF8, 0x1C, 0x5C, 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC,
  1586.     0x81, 0xD1, 0x21, 0x61, 0xE1, 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x09, 0x49,
  1587.     0x89, 0xC9, 0x29, 0x39, 0x0D, 0x8D, 0xCD, 0x1D, 0x2D, 0x3D, 0x92, 0xD2,
  1588.     0x22, 0x62, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 0x0A, 0x4A,
  1589.     0x8A, 0xCA, 0x2A, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x13,
  1590.     0x53, 0x93, 0xD3, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x87, 0xC7, 0x17,
  1591.     0x27, 0x37, 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x0F, 0x4F, 0x8F,
  1592.     0xCF, 0x1F, 0x2F, 0x3F, 0xA0, 0xE0, 0x30, 0x34, 0x48, 0xC8, 0x28, 0x38,
  1593.     0x0C, 0x4C, 0x8C, 0xCC, 0x2C, 0xC1, 0x31, 0x82, 0xC2, 0x12, 0x32, 0x43,
  1594.     0x83, 0xC3, 0x23, 0x33
  1595. };
  1596.  
  1597. static const uint8_t huff_b74_cb[8] = { 1, 6, 1, 0, 2, 2, 2, 4 };
  1598.  
  1599. static const uint8_t huff_b74_xlat[11] = {
  1600.     0, 1, 15, 2, 14, 5, 13, 3, 4, 11, 12
  1601. };
  1602.  
  1603. static const uint8_t huff_b75_cb[13] = {
  1604.     2, 12, 1, 4, 0, 0, 0, 8, 11, 24, 53, 64, 60
  1605. };
  1606.  
  1607. static const uint8_t huff_b75_xlat[225] = {
  1608.     0x00, 0x10, 0xF0, 0x01, 0x0F, 0x20, 0xE0, 0x11, 0xF1, 0x02, 0x0E, 0x1F,
  1609.     0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF,
  1610.     0x30, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0xE2, 0x13,
  1611.     0xF3, 0x04, 0x06, 0x07, 0x09, 0x0C, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F, 0xDF,
  1612.     0x50, 0xB0, 0x41, 0x61, 0x71, 0x91, 0xA1, 0xC1, 0x32, 0x62, 0x72, 0x92,
  1613.     0xA2, 0xD2, 0x23, 0xD3, 0xE3, 0x14, 0xF4, 0x05, 0x16, 0x26, 0xE6, 0xF6,
  1614.     0x17, 0x27, 0xE7, 0xF7, 0x19, 0x29, 0xF9, 0x0A, 0x1A, 0x2A, 0xFA, 0x0B,
  1615.     0x1C, 0x2C, 0xFC, 0x2D, 0x3D, 0xED, 0x3E, 0x4E, 0x7E, 0x9E, 0xDE, 0x4F,
  1616.     0x6F, 0x7F, 0x9F, 0xAF, 0xCF, 0x51, 0xB1, 0x42, 0x52, 0xB2, 0xC2, 0x33,
  1617.     0x63, 0x73, 0x93, 0xA3, 0xB3, 0xC3, 0x24, 0x34, 0x74, 0xA4, 0xD4, 0xE4,
  1618.     0x15, 0x25, 0x65, 0x95, 0xE5, 0xF5, 0x36, 0xD6, 0x37, 0x47, 0xC7, 0xD7,
  1619.     0x39, 0x59, 0xB9, 0xC9, 0xD9, 0xE9, 0x3A, 0x6A, 0xDA, 0xEA, 0x1B, 0x2B,
  1620.     0x9B, 0xAB, 0xEB, 0xFB, 0x6C, 0x7C, 0x9C, 0xAC, 0xEC, 0x4D, 0x6D, 0x7D,
  1621.     0x9D, 0xAD, 0xBD, 0xDD, 0x5E, 0x6E, 0xAE, 0xCE, 0x5F, 0x43, 0x53, 0x44,
  1622.     0x54, 0x64, 0x94, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0x75, 0xA5, 0xB5, 0xC5,
  1623.     0xD5, 0x46, 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0x67, 0x77,
  1624.     0x97, 0xA7, 0xB7, 0x49, 0x69, 0x79, 0x99, 0xA9, 0x4A, 0x5A, 0x7A, 0x9A,
  1625.     0xAA, 0xBA, 0xCA, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0xBB, 0xCB, 0xDB, 0x3C,
  1626.     0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0x5D, 0xCD, 0xBE, 0xBF
  1627. };
  1628.  
  1629. static const uint8_t huff_b77_cb[12] = {
  1630.     2, 11, 1, 0, 4, 6, 10, 12, 7, 15, 4, 4
  1631. };
  1632.  
  1633. static const uint8_t huff_b77_xlat[63] = {
  1634.      0,  1,  2, 62, 63,  3,  4,  5, 59, 60, 61,  6,  7,  8,  9, 10,
  1635.     54, 55, 56, 57, 58, 11, 12, 13, 14, 15, 16, 47, 49, 50, 51, 52,
  1636.     53, 17, 18, 19, 20, 45, 46, 48, 21, 22, 23, 24, 25, 26, 27, 37,
  1637.     38, 39, 40, 41, 42, 43, 44, 28, 29, 30, 35, 31, 33, 34, 36
  1638. };
  1639.  
  1640. /** Tables for spectrum coding. */
  1641. typedef struct Atrac3pSpecCodeTab {
  1642.     uint8_t group_size;  ///< number of coefficients grouped together
  1643.     uint8_t num_coeffs;  ///< 1 - map index to a single value, > 1 - map index to a vector of values
  1644.     uint8_t bits;        ///< number of bits a single coefficient occupy
  1645.     uint8_t is_signed;   ///< 1 - values in that table are signed ones, otherwise - absolute ones
  1646.  
  1647.     int redirect;        ///< if >= 0: tells which huffman table must be reused
  1648.     const uint8_t *cb;   ///< pointer to the codebook descriptor
  1649.     const uint8_t *xlat; ///< pointer to the translation table or NULL if none
  1650. } Atrac3pSpecCodeTab;
  1651.  
  1652. static const Atrac3pSpecCodeTab atrac3p_spectra_tabs[112] = {
  1653.     /* table set = A */
  1654.     /* code table = 0 */
  1655.     { 1, 4, 2, 1, -1, huff_a01_cb, huff_a01_xlat }, // wordlen = 1
  1656.     { 1, 4, 2, 0, -1, huff_a02_cb, huff_a02_xlat }, // wordlen = 2
  1657.     { 1, 2, 3, 1, -1, huff_a03_cb, huff_a03_xlat }, // wordlen = 3
  1658.     { 1, 1, 3, 0, -1, huff_a04_cb, huff_a04_xlat }, // wordlen = 4
  1659.     { 1, 2, 4, 1, -1, huff_a05_cb, huff_a05_xlat }, // wordlen = 5
  1660.     { 1, 1, 4, 0, -1, huff_a06_cb, huff_a06_xlat }, // wordlen = 6
  1661.     { 1, 1, 6, 1, -1, huff_a07_cb, huff_a07_xlat }, // wordlen = 7
  1662.  
  1663.     /* code table = 1 */
  1664.     { 4, 4, 2, 1, -1, huff_a11_cb, huff_a11_xlat }, // wordlen = 1
  1665.     { 1, 4, 2, 0, -1, huff_a12_cb, huff_a12_xlat }, // wordlen = 2
  1666.     { 1, 2, 3, 1, -1, huff_a13_cb, huff_a13_xlat }, // wordlen = 3
  1667.     { 1, 2, 4, 1, -1, huff_a14_cb, huff_a14_xlat }, // wordlen = 4
  1668.     { 1, 2, 4, 1, -1, huff_a15_cb, huff_a15_xlat }, // wordlen = 5
  1669.     { 1, 2, 4, 0, -1, huff_a16_cb, huff_a16_xlat }, // wordlen = 6
  1670.     { 1, 1, 6, 1, -1, huff_a17_cb, huff_a17_xlat }, // wordlen = 7
  1671.  
  1672.     /* code table = 2 */
  1673.     { 1, 4, 2, 1, -1, huff_a21_cb, huff_a21_xlat }, // wordlen = 1
  1674.     { 1, 2, 3, 1, -1, huff_a22_cb, huff_a22_xlat }, // wordlen = 2
  1675.     { 1, 2, 3, 1, -1, huff_a23_cb, huff_a23_xlat }, // wordlen = 3
  1676.     { 1, 1, 3, 0, -1, huff_a24_cb, NULL          }, // wordlen = 4
  1677.     { 1, 1, 3, 0, -1, huff_a25_cb, huff_a25_xlat }, // wordlen = 5
  1678.     { 1, 2, 4, 0, -1, huff_a26_cb, huff_a26_xlat }, // wordlen = 6
  1679.     { 1, 1, 6, 1, -1, huff_a27_cb, huff_a27_xlat }, // wordlen = 7
  1680.  
  1681.     /* code table = 3 */
  1682.     { 1, 2, 2, 1, -1, huff_a31_cb, huff_a31_xlat }, // wordlen = 1
  1683.     { 1, 4, 2, 0, -1, huff_a32_cb, huff_a32_xlat }, // wordlen = 2
  1684.     { 1, 4, 2, 0, -1, huff_a33_cb, huff_a33_xlat }, // wordlen = 3
  1685.     { 1, 1, 3, 0, -1, huff_a34_cb, huff_a34_xlat }, // wordlen = 4
  1686.     { 1, 2, 4, 1, -1, huff_a35_cb, huff_a35_xlat }, // wordlen = 5
  1687.     { 1, 2, 4, 0, -1, huff_a36_cb, huff_a36_xlat }, // wordlen = 6
  1688.     { 1, 1, 6, 1, -1, huff_a37_cb, huff_a37_xlat }, // wordlen = 7
  1689.  
  1690.     /* code table = 4 */
  1691.     { 1, 4, 2, 1, -1, huff_a41_cb, huff_a41_xlat }, // wordlen = 1
  1692.     { 1, 4, 2, 0, -1, huff_a42_cb, huff_a42_xlat }, // wordlen = 2
  1693.     { 1, 1, 3, 1, -1, huff_a43_cb, huff_a43_xlat }, // wordlen = 3
  1694.     { 1, 2, 4, 1, -1, huff_a44_cb, huff_a44_xlat }, // wordlen = 4
  1695.     { 1, 1, 3, 0, -1, huff_a45_cb, huff_a45_xlat }, // wordlen = 5
  1696.     { 1, 2, 4, 0, -1, huff_a46_cb, huff_a46_xlat }, // wordlen = 6
  1697.     { 1, 1, 6, 1, -1, huff_a47_cb, huff_a47_xlat }, // wordlen = 7
  1698.  
  1699.     /* code table = 5 */
  1700.     { 1, 4, 2, 1, -1, huff_a51_cb, huff_a51_xlat }, // wordlen = 1
  1701.     { 1, 2, 3, 1, -1, huff_a52_cb, huff_a52_xlat }, // wordlen = 2
  1702.     { 1, 1, 3, 1, -1, huff_a43_cb, huff_a53_xlat }, // wordlen = 3
  1703.     { 1, 2, 4, 1, -1, huff_a54_cb, huff_a54_xlat }, // wordlen = 4
  1704.     { 1, 1, 3, 0, -1, huff_a55_cb, huff_a55_xlat }, // wordlen = 5
  1705.     { 1, 1, 5, 1, -1, huff_a56_cb, huff_a56_xlat }, // wordlen = 6
  1706.     { 1, 1, 6, 1, -1, huff_a57_cb, huff_a57_xlat }, // wordlen = 7
  1707.  
  1708.     /* code table = 6 */
  1709.     { 2, 4, 2, 1, -1, huff_a61_cb, huff_a61_xlat }, // wordlen = 1
  1710.     { 1, 2, 3, 1, -1, huff_a62_cb, huff_a62_xlat }, // wordlen = 2
  1711.     { 1, 4, 2, 0, -1, huff_a63_cb, huff_a63_xlat }, // wordlen = 3
  1712.     { 1, 2, 4, 1, -1, huff_a64_cb, huff_a64_xlat }, // wordlen = 4
  1713.     { 1, 1, 4, 1, -1, huff_a65_cb, huff_a65_xlat }, // wordlen = 5
  1714.     { 1, 1, 5, 1, -1, huff_a66_cb, huff_a66_xlat }, // wordlen = 6
  1715.     { 1, 1, 6, 1, -1, huff_a67_cb, huff_a67_xlat }, // wordlen = 7
  1716.  
  1717.     /* code table = 7 */
  1718.     { 1, 2, 1, 0, -1, huff_a71_cb, NULL          }, // wordlen = 1
  1719.     { 2, 4, 2, 0, -1, huff_a72_cb, huff_a72_xlat }, // wordlen = 2
  1720.     { 1, 2, 3, 1, -1, huff_a73_cb, huff_a73_xlat }, // wordlen = 3
  1721.     { 1, 2, 4, 1, -1, huff_a74_cb, huff_a74_xlat }, // wordlen = 4
  1722.     { 1, 1, 4, 1, -1, huff_a75_cb, huff_a75_xlat }, // wordlen = 5
  1723.     { 2, 2, 4, 0, -1, huff_a76_cb, huff_a76_xlat }, // wordlen = 6
  1724.     { 4, 1, 6, 1,  6, NULL,        NULL          }, // wordlen = 7
  1725.  
  1726.     /* table set = B */
  1727.     /* code table = 0 */
  1728.     { 4, 4, 2, 1, -1, huff_b01_cb, huff_b01_xlat }, // wordlen = 1
  1729.     { 1, 4, 2, 0, -1, huff_b02_cb, huff_b02_xlat }, // wordlen = 2
  1730.     { 4, 2, 3, 1, -1, huff_b03_cb, huff_b03_xlat }, // wordlen = 3
  1731.     { 1, 2, 4, 1, -1, huff_b04_cb, huff_b04_xlat }, // wordlen = 4
  1732.     { 1, 2, 4, 1, -1, huff_b05_cb, huff_b05_xlat }, // wordlen = 5
  1733.     { 1, 1, 4, 0,  5, NULL,        NULL          }, // wordlen = 6
  1734.     { 1, 1, 6, 1, -1, huff_b07_cb, huff_b07_xlat }, // wordlen = 7
  1735.  
  1736.     /* code table = 1 */
  1737.     { 1, 4, 2, 1, 14, NULL,        NULL          }, // wordlen = 1
  1738.     { 1, 4, 2, 0, -1, huff_b12_cb, huff_b12_xlat }, // wordlen = 2
  1739.     { 1, 2, 3, 1,  9, NULL,        NULL          }, // wordlen = 3
  1740.     { 1, 2, 4, 1, -1, huff_b14_cb, huff_b14_xlat }, // wordlen = 4
  1741.     { 1, 2, 4, 1, 11, NULL,        NULL          }, // wordlen = 5
  1742.     { 1, 2, 4, 0, -1, huff_b16_cb, huff_b16_xlat }, // wordlen = 6
  1743.     { 1, 1, 6, 1,  6, NULL,        NULL          }, // wordlen = 7
  1744.  
  1745.     /* code table = 2 */
  1746.     { 4, 4, 2, 1, 28, NULL,        NULL          }, // wordlen = 1
  1747.     { 4, 4, 2, 0, 22, NULL,        NULL          }, // wordlen = 2
  1748.     { 1, 2, 3, 1,  2, NULL,        NULL          }, // wordlen = 3
  1749.     { 1, 2, 4, 1, 31, NULL,        NULL          }, // wordlen = 4
  1750.     { 2, 2, 4, 1, 60, NULL,        NULL          }, // wordlen = 5
  1751.     { 2, 2, 4, 0, -1, huff_b26_cb, huff_b26_xlat }, // wordlen = 6
  1752.     { 4, 1, 6, 1,  6, NULL,        NULL          }, // wordlen = 7
  1753.  
  1754.     /* code table = 3 */
  1755.     { 1, 4, 2, 1, 35, NULL,        NULL          }, // wordlen = 1
  1756.     { 1, 4, 2, 0, -1, huff_b32_cb, huff_b32_xlat }, // wordlen = 2
  1757.     { 1, 4, 2, 0, -1, huff_b33_cb, huff_b33_xlat }, // wordlen = 3
  1758.     { 2, 2, 4, 1, 59, NULL,        NULL          }, // wordlen = 4
  1759.     { 1, 2, 4, 1, -1, huff_b35_cb, huff_b35_xlat }, // wordlen = 5
  1760.     { 1, 2, 4, 0, 75, NULL,        NULL          }, // wordlen = 6
  1761.     { 1, 1, 6, 1, -1, huff_b37_cb, huff_b37_xlat }, // wordlen = 7
  1762.  
  1763.     /* code table = 4 */
  1764.     { 1, 4, 2, 1, -1, huff_b41_cb, huff_b41_xlat }, // wordlen = 1
  1765.     { 4, 2, 3, 1, -1, huff_b42_cb, huff_b42_xlat }, // wordlen = 2
  1766.     { 1, 2, 3, 1, -1, huff_b43_cb, huff_b43_xlat }, // wordlen = 3
  1767.     { 4, 2, 4, 1, 66, NULL,        NULL          }, // wordlen = 4
  1768.     { 1, 1, 3, 0, 32, NULL,        NULL          }, // wordlen = 5
  1769.     { 1, 2, 4, 0, 12, NULL,        NULL          }, // wordlen = 6
  1770.     { 1, 1, 6, 1, -1, huff_b47_cb, huff_b47_xlat }, // wordlen = 7
  1771.  
  1772.     /* code table = 5 */
  1773.     { 2, 4, 2, 1, 42, NULL,        NULL          }, // wordlen = 1
  1774.     { 1, 2, 3, 1, -1, huff_b52_cb, huff_b52_xlat }, // wordlen = 2
  1775.     { 4, 1, 3, 1, -1, huff_b53_cb, huff_b53_xlat }, // wordlen = 3
  1776.     { 1, 1, 3, 0, 17, NULL,        NULL          }, // wordlen = 4
  1777.     { 1, 1, 3, 0, 39, NULL,        NULL          }, // wordlen = 5
  1778.     { 1, 1, 5, 1, -1, huff_b56_cb, huff_b56_xlat }, // wordlen = 6
  1779.     { 2, 1, 6, 1, 62, NULL,        NULL          }, // wordlen = 7
  1780.  
  1781.     /* code table = 6 */
  1782.     { 1, 4, 2, 1, 28, NULL,        NULL          }, // wordlen = 1
  1783.     { 1, 4, 2, 0, -1, huff_b62_cb, huff_b62_xlat }, // wordlen = 2
  1784.     { 1, 1, 3, 1, -1, huff_b63_cb, huff_b63_xlat }, // wordlen = 3
  1785.     { 1, 1, 3, 0, -1, huff_b64_cb, huff_b64_xlat }, // wordlen = 4
  1786.     { 4, 2, 4, 1, -1, huff_b65_cb, huff_b65_xlat }, // wordlen = 5
  1787.     { 1, 2, 4, 0, -1, huff_b66_cb, huff_b66_xlat }, // wordlen = 6
  1788.     { 1, 1, 6, 1, -1, huff_b67_cb, huff_b67_xlat }, // wordlen = 7
  1789.  
  1790.     /* code table = 7 */
  1791.     { 1, 4, 2, 1, -1, huff_b71_cb, huff_b71_xlat }, // wordlen = 1
  1792.     { 4, 4, 2, 0, 78, NULL,        NULL          }, // wordlen = 2
  1793.     { 4, 4, 2, 0, -1, huff_b73_cb, huff_b73_xlat }, // wordlen = 3
  1794.     { 1, 1, 4, 1, -1, huff_b74_cb, huff_b74_xlat }, // wordlen = 4
  1795.     { 1, 2, 4, 1, -1, huff_b75_cb, huff_b75_xlat }, // wordlen = 5
  1796.     { 1, 1, 5, 1, 47, NULL,        NULL          }, // wordlen = 6
  1797.     { 1, 1, 6, 1, -1, huff_b77_cb, huff_b77_xlat }, // wordlen = 7
  1798. };
  1799.  
  1800. /* Huffman tables for gain control data. */
  1801. static const uint8_t atrac3p_huff_gain_npoints1_cb[9] = {
  1802.     1, 7, 1, 1, 1, 1, 1, 1, 2
  1803. };
  1804.  
  1805. static const uint8_t atrac3p_huff_gain_npoints2_xlat[8] = {
  1806.     0, 1, 7, 2, 6, 3, 4, 5
  1807. };
  1808.  
  1809. static const uint8_t atrac3p_huff_gain_lev1_cb[9] = { 1, 7, 1, 0, 2, 2, 1, 2, 8 };
  1810. static const uint8_t atrac3p_huff_gain_lev1_xlat[16] = {
  1811.     7, 5, 8, 6, 9, 4, 10, 11, 0, 1, 2, 3, 12, 13, 14, 15
  1812. };
  1813.  
  1814. static const uint8_t atrac3p_huff_gain_lev2_cb[11] = {
  1815.     1, 9, 1, 1, 1, 1, 1, 0, 2, 0, 8
  1816. };
  1817.  
  1818. static const uint8_t atrac3p_huff_gain_lev2_xlat[15] = {
  1819.     15, 14, 1, 13, 2, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11
  1820. };
  1821.  
  1822. static const uint8_t atrac3p_huff_gain_lev3_cb[11] = {
  1823.     1, 9, 1, 0, 3, 1, 1, 0, 2, 0, 8
  1824. };
  1825.  
  1826. static const uint8_t atrac3p_huff_gain_lev3_xlat[16] = {
  1827.     0, 1, 14, 15, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11
  1828. };
  1829.  
  1830. static const uint8_t atrac3p_huff_gain_lev4_cb[11] = {
  1831.     1, 9, 1, 1, 1, 1, 1, 0, 1, 2, 8
  1832. };
  1833.  
  1834. static const uint8_t atrac3p_huff_gain_lev4_xlat[16] = {
  1835.     0, 1, 15, 14, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11
  1836. };
  1837.  
  1838. static const uint8_t atrac3p_huff_gain_loc1_cb[9] = { 2, 8, 1, 2, 4, 4, 4, 0, 16 };
  1839. static const uint8_t atrac3p_huff_gain_loc1_xlat[31] = {
  1840.      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
  1841.     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
  1842. };
  1843.  
  1844. static const uint8_t atrac3p_huff_gain_loc2_cb[8] = { 3, 8, 5, 3, 2, 3, 2, 16 };
  1845. static const uint8_t atrac3p_huff_gain_loc2_xlat[31] = {
  1846.      2,  3,  4,  5,  6,  1,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
  1847.     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
  1848. };
  1849.  
  1850. static const uint8_t atrac3p_huff_gain_loc3_cb[7] = { 2, 6, 1, 0, 2, 11, 18 };
  1851. static const uint8_t atrac3p_huff_gain_loc3_xlat[32] = {
  1852.     0,   1, 31,  2,  3,  4,  5,  6,  7, 26, 27, 28, 29, 30,  8,  9,
  1853.     10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
  1854. };
  1855.  
  1856. static const uint8_t atrac3p_huff_gain_loc4_cb[5] = { 4, 6, 3, 23, 6 };
  1857. static const uint8_t atrac3p_huff_gain_loc4_xlat[32] = {
  1858.     0,  28, 29,  1,  2,  3,  4, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  1859.     20, 21, 22, 23, 24, 25, 26, 27, 30, 31,  5,  6,  7,  8,  9, 10
  1860. };
  1861.  
  1862. static const uint8_t atrac3p_huff_gain_loc5_cb[9] = { 1, 7, 1, 0, 0, 3, 2, 6, 20 };
  1863. static const uint8_t atrac3p_huff_gain_loc5_xlat[32] = {
  1864.     0,   1,  2, 31,  3,  4,  5,  6,  7,  8, 29, 30,  9, 10, 11, 12,
  1865.     13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
  1866. };
  1867.  
  1868. /* Huffman tables for GHA waves data. */
  1869. static const uint8_t atrac3p_huff_tonebands_cb[8] = { 1, 6, 1, 0, 1, 2, 4, 8 };
  1870. static const uint8_t atrac3p_huff_numwavs1_cb[9] = { 1, 7, 1, 1, 1, 1, 1, 1, 2 };
  1871. static const uint8_t atrac3p_huff_numwavs2_cb[8] = { 1, 6, 1, 1, 1, 1, 0, 4 };
  1872. static const uint8_t atrac3p_huff_numwavs2_xlat[8] = { 0, 1, 7, 2, 3, 4, 5, 6 };
  1873. static const uint8_t atrac3p_huff_wav_ampsf1_cb[7] = { 4, 8, 10, 8, 6, 0, 8 };
  1874. static const uint8_t atrac3p_huff_wav_ampsf1_xlat[32] = {
  1875.      8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 5, 6,  7, 18, 19, 20,
  1876.     21, 22,  4, 23, 24, 25, 26, 27,  0,  1, 2, 3, 28, 29, 30, 31
  1877. };
  1878.  
  1879. static const uint8_t atrac3p_huff_wav_ampsf2_cb[7] = { 4, 8, 11, 5, 6, 6, 4 };
  1880. static const uint8_t atrac3p_huff_wav_ampsf2_xlat[32] = {
  1881.     18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 14, 15, 16, 17, 29,
  1882.      9, 10, 11, 12, 13, 30,  4,  5,  6,  7,  8, 31,  0,  1,  2,  3
  1883. };
  1884.  
  1885. static const uint8_t atrac3p_huff_wav_ampsf3_cb[9] = { 2, 8, 1, 3, 3, 1, 4, 4, 16 };
  1886. static const uint8_t atrac3p_huff_wav_ampsf3_xlat[32] = {
  1887.     0, 1,  2, 31,  3, 29, 30,  4,  5,  6, 27, 28,  7, 24, 25, 26,
  1888.     8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
  1889. };
  1890.  
  1891. static const uint8_t atrac3p_huff_freq_cb[13] = {
  1892.     1, 11, 1, 0, 0, 2, 2, 0, 9, 9, 29, 104, 100
  1893. };
  1894.  
  1895. static const uint8_t atrac3p_huff_freq_xlat[256] = {
  1896.       0,   1, 255,   2, 254,   3,   4,   5,   6,   7,   8, 251, 252, 253,   9,  10,
  1897.      11,  12, 246, 247, 248, 249, 250,  13,  14,  15,  16,  17,  18,  19,  20,  21,
  1898.      22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
  1899.      38, 243, 244, 245,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,
  1900.      51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,
  1901.      67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,
  1902.      83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93, 194, 195, 196, 197, 198,
  1903.     199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
  1904.     215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
  1905.     231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,  94,  95,  96,  97,
  1906.      98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
  1907.     114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
  1908.     130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
  1909.     146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
  1910.     162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
  1911.     178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193
  1912. };
  1913.  
  1914. #endif /* AVCODEC_ATRAC3PLUS_DATA_H */
  1915.