2 * ATRAC3+ compatible decoder
4 * Copyright (c) 2010-2013 Maxim Poliakovski
6 * This file is part of FFmpeg.
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.
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.
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
23 #ifndef AVCODEC_ATRAC3PLUS_DATA_H
24 #define AVCODEC_ATRAC3PLUS_DATA_H
29 /** VLC tables for wordlen */
30 static const uint8_t atrac3p_wl_cbs[][12] = {
31 { 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
32 { 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
33 { 1, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0 },
34 { 1, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0 },
37 /** VLC tables for code table indexes */
38 static const uint8_t atrac3p_ct_cbs[][12] = {
39 { 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
40 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
41 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
42 { 1, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0 },
44 /* Symbols for wordlen interleaved with symbols for code table */
45 static const uint8_t atrac3p_wl_ct_xlats[] = {
46 /* wordlen table 1 - 3 entries */
48 /* code table 1 - 4 entries */
50 /* wordlen table 2 - 5 entries */
52 /* code table 2 - 8 entries */
53 0, 1, 2, 3, 4, 5, 6, 7,
54 /* wordlen table 3 - 8 entries */
55 0, 1, 7, 2, 5, 6, 3, 4,
56 /* code table 3 - 8 entries */
57 0, 1, 2, 3, 6, 7, 4, 5,
58 /* wordlen table 4 - 8 entries */
59 0, 1, 7, 2, 3, 6, 4, 5,
60 /* code table 4 - 8 entries */
61 0, 1, 2, 3, 4, 5, 6, 7,
64 /** VLC tables for scale factor indexes */
65 static const uint8_t atrac3p_sf_cbs[][12] = {
66 { 0, 1, 4, 2, 0, 0, 0, 7, 50, 0, 0, 0 },
67 { 0, 1, 4, 2, 0, 0, 0, 7, 50, 0, 0, 0 },
68 { 1, 0, 2, 0, 4, 0, 2, 1, 54, 0, 0, 0 },
69 { 0, 1, 4, 0, 4, 0, 3, 0, 52, 0, 0, 0 },
70 { 0, 1, 4, 2, 0, 8, 0, 0, 0, 0, 0, 0 },
71 { 0, 1, 4, 2, 0, 8, 0, 0, 0, 0, 0, 0 },
72 { 1, 0, 2, 2, 2, 0, 8, 0, 0, 0, 0, 0 },
73 { 0, 1, 4, 2, 2, 2, 4, 0, 0, 0, 0, 0 },
76 static const uint8_t atrac3p_sf_xlats[] = {
77 /* Scale factor index 1 - 64 entries */
78 0, 1, 61, 62, 63, 2, 60, 3, 4, 5, 6, 57, 58, 59, 7, 8,
79 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
80 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
81 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
82 /* Scale factor index 2 - 64 entries */
83 0, 1, 2, 62, 63, 3, 61, 4, 5, 6, 57, 58, 59, 60, 7, 8,
84 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
85 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
86 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
87 /* Scale factor index 3 - 64 entries */
88 0, 1, 63, 2, 3, 61, 62, 4, 60, 59, 5, 6, 7, 8, 9, 10,
89 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
90 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
91 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
92 /* Scale factor index 4 - 64 entries */
93 0, 1, 2, 62, 63, 3, 4, 60, 61, 5, 58, 59, 6, 7, 8, 9,
94 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
95 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
96 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
97 /* Scale factor index 5 - 15 entries */
98 0, 1, 13, 14, 15, 2, 12, 3, 4, 5, 6, 7, 9, 10, 11,
99 /* Scale factor index 6 - 15 entries */
100 0, 1, 2, 14, 15, 3, 13, 4, 5, 6, 7, 9, 10, 11, 12,
101 /* Scale factor index 7 - 15 entries */
102 0, 1, 15, 2, 14, 3, 13, 4, 5, 6, 7, 9, 10, 11, 12,
103 /* Scale factor index 8 - 15 entries */
104 0, 1, 2, 14, 15, 3, 13, 4, 12, 5, 11, 6, 7, 9, 10,
107 static const uint8_t atrac3p_ct_huff1[4][2] = {
108 { 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 3 },
111 static const uint8_t atrac3p_ct_huff2[8][2] = {
112 { 0, 2 }, { 1, 3 }, { 2, 3 }, { 3, 3 }, { 4, 3 }, { 5, 3 }, { 6, 4 },
116 static const uint8_t atrac3p_ct_huff3[8][2] = {
117 { 0, 2 }, { 1, 3 }, { 2, 3 }, { 3, 3 }, { 6, 3 }, { 7, 3 }, { 4, 4 },
121 static const uint8_t atrac3p_ct_huff4[8][2] = {
122 { 0, 1 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 4 }, { 5, 4 }, { 6, 4 },
126 /* weights for quantized word lengths */
127 static const int8_t atrac3p_wl_weights[6][32] = {
128 { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
130 { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0,
131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
132 { 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 1, 1,
133 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
134 { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
136 { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0,
137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
138 { 6, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 2, 2, 1, 1,
139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
142 /* weights for quantized scale factors
143 * sf_weights[i] = i / (tab_idx + 1)
144 * where tab_idx = [1,2] */
145 static const int8_t atrac3p_sf_weights[2][32] = {
146 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
147 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15 },
148 { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5,
149 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10 }
152 /** Ungroup table for word length segments.
153 * Numbers in this table tell which coeff belongs to which segment. */
154 static const uint8_t atrac3p_qu_num_to_seg[32] = {
155 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5,
156 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9
159 /** Map quant unit number to subband number */
160 static const uint8_t atrac3p_qu_to_subband[32] = {
161 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
162 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
165 /** Map subband number to number of power compensation groups */
166 static const int atrac3p_subband_to_num_powgrps[16] = {
167 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5
170 /** 3D base shape tables. The values are grouped together as follows:
171 * [num_start_values = 8][num_shape_tables = 16][num_seg_coeffs = 9]
172 * For each of the 8 start values there are 16 different shapes each
173 * 9 coefficients long. */
174 static const int8_t atrac3p_wl_shapes[8][16][9] = {
175 { { 0, 0, 0, 0, 0, 0, 0, -2, -1 },
176 { 0, 0, 0, 0, 0, 0, 0, -5, -1 },
177 { 0, 0, 0, -7, 0, 0, 0, 0, 0 },
178 { 0, 0, 0, 0, 0, -7, 0, 0, 0 },
179 { 0, 0, 0, 0, 0, 0, -5, 0, 0 },
180 { 0, 0, 0, 0, -5, 0, 0, 0, 0 },
181 { -7, -7, 0, 0, 0, 0, 0, 0, 0 },
182 { 0, -7, 0, 0, 0, 0, 0, 0, 0 },
183 { -2, -2, -5, 0, 0, 0, 0, 0, 0 },
184 { 0, 0, 0, -2, -5, 0, 0, 0, 0 },
185 { 0, 0, 0, 0, 0, -2, -5, 0, 0 },
186 { 0, 0, 0, -5, 0, 0, 0, 0, 0 },
187 { 0, -2, -7, -2, 0, 0, 0, 0, 0 },
188 { 0, 0, 0, 0, -2, -5, 0, 0, 0 },
189 { 0, 0, 0, -5, -5, 0, 0, 0, 0 },
190 { 0, 0, 0, -5, -2, 0, 0, 0, 0 } },
191 { { -1, -5, -3, -2, -1, -1, 0, 0, 0 },
192 { -2, -5, -3, -3, -2, -1, -1, 0, 0 },
193 { 0, -1, -1, -1, 0, 0, 0, 0, 0 },
194 { -1, -3, 0, 0, 0, 0, 0, 0, 0 },
195 { -1, -2, 0, 0, 0, 0, 0, 0, 0 },
196 { -1, -3, -1, 0, 0, 0, 0, 1, 1 },
197 { -1, -5, -3, -3, -2, -1, 0, 0, 0 },
198 { -1, -1, -4, -2, -2, -1, -1, 0, 0 },
199 { -1, -1, -3, -2, -3, -1, -1, -1, 0 },
200 { -1, -4, -2, -3, -1, 0, 0, 0, 0 },
201 { 0, -1, -2, -2, -1, -1, 0, 0, 0 },
202 { 0, -2, -1, 0, 0, 0, 0, 0, 0 },
203 { -1, -1, 0, 0, 0, 0, 0, 0, 0 },
204 { -1, -1, -3, -2, -2, -1, -1, -1, 0 },
205 { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
206 { 0, -1, -3, -2, -2, -1, -1, -1, 0 }, },
207 { { -1, -2, 0, 1, 1, 1, 1, 1, 1 },
208 { 0, -1, 1, 1, 1, 1, 1, 1, 1 },
209 { 0, -2, 1, 1, 1, 1, 1, 1, 1 },
210 { 0, -2, 0, 1, 1, 1, 1, 1, 1 },
211 { -1, -1, 0, 1, 1, 1, 1, 1, 1 },
212 { 0, 0, -1, 0, 1, 1, 1, 1, 1 },
213 { -1, -1, 1, 1, 1, 1, 1, 1, 1 },
214 { 0, 0, -1, 1, 1, 1, 1, 1, 1 },
215 { 0, -1, 0, 1, 1, 1, 1, 1, 1 },
216 { -1, -1, -1, 1, 1, 1, 1, 1, 1 },
217 { 0, 0, 0, 0, 1, 1, 1, 1, 1 },
218 { 0, 0, 0, 1, 1, 1, 1, 1, 1 },
219 { 0, -1, -1, 1, 1, 1, 1, 1, 1 },
220 { 0, 1, 0, 1, 1, 1, 1, 1, 1 },
221 { 0, -3, -2, 1, 1, 1, 1, 2, 2 },
222 { -3, -5, -3, 2, 2, 2, 2, 2, 2 }, },
223 { { -1, -2, 0, 2, 2, 2, 2, 2, 2 },
224 { -1, -2, 0, 1, 2, 2, 2, 2, 2 },
225 { 0, -2, 0, 2, 2, 2, 2, 2, 2 },
226 { -1, 0, 1, 2, 2, 2, 2, 2, 2 },
227 { 0, 0, 1, 2, 2, 2, 2, 2, 2 },
228 { 0, -2, 0, 1, 2, 2, 2, 2, 2 },
229 { 0, -1, 1, 2, 2, 2, 2, 2, 2 },
230 { -1, -1, 0, 2, 2, 2, 2, 2, 2 },
231 { -1, -1, 0, 1, 2, 2, 2, 2, 2 },
232 { -1, -2, -1, 2, 2, 2, 2, 2, 2 },
233 { 0, -1, 0, 2, 2, 2, 2, 2, 2 },
234 { 1, 1, 0, 1, 2, 2, 2, 2, 2 },
235 { 0, 1, 2, 2, 2, 2, 2, 2, 2 },
236 { 1, 0, 0, 1, 2, 2, 2, 2, 2 },
237 { 0, 0, 0, 1, 2, 2, 2, 2, 2 },
238 { -1, -1, -1, 1, 2, 2, 2, 2, 2 }, },
239 { { 0, 1, 2, 3, 3, 3, 3, 3, 3 },
240 { 1, 1, 2, 3, 3, 3, 3, 3, 3 },
241 { -1, 0, 1, 2, 3, 3, 3, 3, 3 },
242 { 0, 0, 2, 3, 3, 3, 3, 3, 3 },
243 { -1, 0, 1, 3, 3, 3, 3, 3, 3 },
244 { 0, 0, 1, 3, 3, 3, 3, 3, 3 },
245 { 1, 2, 3, 3, 3, 3, 3, 3, 3 },
246 { 1, 2, 2, 3, 3, 3, 3, 3, 3 },
247 { 0, 1, 1, 3, 3, 3, 3, 3, 3 },
248 { 0, 0, 1, 2, 3, 3, 3, 3, 3 },
249 { -1, 1, 2, 3, 3, 3, 3, 3, 3 },
250 { -1, 0, 2, 3, 3, 3, 3, 3, 3 },
251 { 2, 2, 3, 3, 3, 3, 3, 3, 3 },
252 { 1, 1, 3, 3, 3, 3, 3, 3, 3 },
253 { 0, 2, 3, 3, 3, 3, 3, 3, 3 },
254 { 0, 1, 1, 2, 3, 3, 3, 3, 3 }, },
255 { { 0, 1, 2, 3, 4, 4, 4, 4, 4 },
256 { 1, 2, 3, 4, 4, 4, 4, 4, 4 },
257 { 0, 0, 2, 3, 4, 4, 4, 4, 4 },
258 { 1, 1, 2, 4, 4, 4, 4, 4, 4 },
259 { 0, 1, 2, 4, 4, 4, 4, 4, 4 },
260 { -1, 0, 1, 3, 4, 4, 4, 4, 4 },
261 { 0, 0, 1, 3, 4, 4, 4, 4, 4 },
262 { 1, 1, 2, 3, 4, 4, 4, 4, 4 },
263 { 0, 1, 1, 3, 4, 4, 4, 4, 4 },
264 { 2, 2, 3, 4, 4, 4, 4, 4, 4 },
265 { 1, 1, 3, 4, 4, 4, 4, 4, 4 },
266 { 1, 2, 2, 4, 4, 4, 4, 4, 4 },
267 { -1, 0, 2, 3, 4, 4, 4, 4, 4 },
268 { 0, 1, 3, 4, 4, 4, 4, 4, 4 },
269 { 1, 2, 2, 3, 4, 4, 4, 4, 4 },
270 { 0, 2, 3, 4, 4, 4, 4, 4, 4 }, },
271 { { 1, 2, 3, 4, 5, 5, 5, 5, 5 },
272 { 0, 1, 2, 3, 4, 5, 5, 5, 5 },
273 { 0, 1, 2, 3, 5, 5, 5, 5, 5 },
274 { 1, 1, 3, 4, 5, 5, 5, 5, 5 },
275 { 1, 1, 2, 4, 5, 5, 5, 5, 5 },
276 { 1, 2, 2, 4, 5, 5, 5, 5, 5 },
277 { 1, 1, 2, 3, 5, 5, 5, 5, 5 },
278 { 2, 2, 3, 4, 5, 5, 5, 5, 5 },
279 { 0, 1, 2, 4, 5, 5, 5, 5, 5 },
280 { 2, 2, 3, 5, 5, 5, 5, 5, 5 },
281 { 1, 2, 3, 5, 5, 5, 5, 5, 5 },
282 { 0, 1, 3, 4, 5, 5, 5, 5, 5 },
283 { 1, 2, 2, 3, 5, 5, 5, 5, 5 },
284 { 2, 3, 4, 5, 5, 5, 5, 5, 5 },
285 { 0, 2, 3, 4, 5, 5, 5, 5, 5 },
286 { 1, 1, 1, 3, 4, 5, 5, 5, 5 }, },
287 { { 1, 2, 3, 4, 5, 5, 5, 6, 6 },
288 { 1, 2, 3, 4, 5, 6, 6, 6, 6 },
289 { 2, 3, 4, 5, 6, 6, 6, 6, 6 },
290 { 1, 2, 3, 4, 6, 6, 6, 6, 6 },
291 { 2, 2, 3, 4, 5, 5, 5, 6, 6 },
292 { 1, 2, 3, 4, 5, 5, 6, 6, 6 },
293 { 2, 2, 3, 4, 6, 6, 6, 6, 6 },
294 { 2, 2, 3, 4, 5, 6, 6, 6, 6 },
295 { 2, 2, 4, 5, 6, 6, 6, 6, 6 },
296 { 2, 2, 3, 5, 6, 6, 6, 6, 6 },
297 { 1, 2, 3, 5, 6, 6, 6, 6, 6 },
298 { 2, 3, 3, 5, 6, 6, 6, 6, 6 },
299 { 1, 2, 4, 5, 6, 6, 6, 6, 6 },
300 { 2, 2, 3, 4, 5, 5, 6, 6, 6 },
301 { 2, 3, 3, 4, 6, 6, 6, 6, 6 },
302 { 1, 3, 4, 5, 6, 6, 6, 6, 6 } }
305 /** 2D base shape tables for scale factor coding.
306 * The values are grouped together as follows:
307 * [num_shape_tables = 64][num_seg_coeffs = 9] */
308 static const int8_t atrac3p_sf_shapes[64][9] = {
309 { -3, -2, -1, 0, 3, 5, 6, 8, 40 },
310 { -3, -2, 0, 1, 7, 9, 11, 13, 20 },
311 { -1, 0, 0, 1, 6, 8, 10, 13, 41 },
312 { 0, 0, 0, 2, 5, 5, 6, 8, 14 },
313 { 0, 0, 0, 2, 6, 7, 8, 11, 47 },
314 { 0, 0, 1, 2, 5, 7, 8, 10, 32 },
315 { 0, 0, 1, 3, 8, 10, 12, 14, 47 },
316 { 0, 0, 2, 4, 9, 10, 12, 14, 40 },
317 { 0, 0, 3, 5, 9, 10, 12, 14, 22 },
318 { 0, 1, 3, 5, 10, 14, 18, 22, 31 },
319 { 0, 2, 5, 6, 10, 10, 10, 12, 46 },
320 { 0, 2, 5, 7, 12, 14, 15, 18, 44 },
321 { 1, 1, 4, 5, 7, 7, 8, 9, 15 },
322 { 1, 2, 2, 2, 4, 5, 7, 9, 26 },
323 { 1, 2, 2, 3, 6, 7, 7, 8, 47 },
324 { 1, 2, 2, 3, 6, 8, 10, 13, 22 },
325 { 1, 3, 4, 7, 13, 17, 21, 24, 41 },
326 { 1, 4, 0, 4, 10, 12, 13, 14, 17 },
327 { 2, 3, 3, 3, 6, 8, 10, 13, 48 },
328 { 2, 3, 3, 4, 9, 12, 14, 17, 47 },
329 { 2, 3, 3, 5, 10, 12, 14, 17, 25 },
330 { 2, 3, 5, 7, 8, 9, 9, 9, 13 },
331 { 2, 3, 5, 9, 16, 21, 25, 28, 33 },
332 { 2, 4, 5, 8, 12, 14, 17, 19, 26 },
333 { 2, 4, 6, 8, 12, 13, 13, 15, 20 },
334 { 2, 4, 7, 12, 20, 26, 30, 32, 35 },
335 { 3, 3, 5, 6, 12, 14, 16, 19, 34 },
336 { 3, 4, 4, 5, 7, 9, 10, 11, 48 },
337 { 3, 4, 5, 6, 8, 9, 10, 11, 16 },
338 { 3, 5, 5, 5, 7, 9, 10, 13, 35 },
339 { 3, 5, 5, 7, 10, 12, 13, 15, 49 },
340 { 3, 5, 7, 7, 8, 7, 9, 12, 21 },
341 { 3, 5, 7, 8, 12, 14, 15, 15, 24 },
342 { 3, 5, 7, 10, 16, 21, 24, 27, 44 },
343 { 3, 5, 8, 14, 21, 26, 28, 29, 42 },
344 { 3, 6, 10, 13, 18, 19, 20, 22, 27 },
345 { 3, 6, 11, 16, 24, 27, 28, 29, 31 },
346 { 4, 5, 4, 3, 4, 6, 8, 11, 18 },
347 { 4, 6, 5, 6, 9, 10, 12, 14, 20 },
348 { 4, 6, 7, 6, 6, 6, 7, 8, 46 },
349 { 4, 6, 7, 9, 13, 16, 18, 20, 48 },
350 { 4, 6, 7, 9, 14, 17, 20, 23, 31 },
351 { 4, 6, 9, 11, 14, 15, 15, 17, 21 },
352 { 4, 8, 13, 20, 27, 32, 35, 36, 38 },
353 { 5, 6, 6, 4, 5, 6, 7, 6, 6 },
354 { 5, 7, 7, 8, 9, 9, 10, 12, 49 },
355 { 5, 8, 9, 9, 10, 11, 12, 13, 42 },
356 { 5, 8, 10, 12, 15, 16, 17, 19, 42 },
357 { 5, 8, 12, 17, 26, 31, 32, 33, 44 },
358 { 5, 9, 13, 16, 20, 22, 23, 23, 35 },
359 { 6, 8, 8, 7, 6, 5, 6, 8, 15 },
360 { 6, 8, 8, 8, 9, 10, 12, 16, 24 },
361 { 6, 8, 8, 9, 10, 10, 11, 11, 13 },
362 { 6, 8, 10, 13, 19, 21, 24, 26, 32 },
363 { 6, 9, 10, 11, 13, 13, 14, 16, 49 },
364 { 7, 9, 9, 10, 13, 14, 16, 19, 27 },
365 { 7, 10, 12, 13, 16, 16, 17, 17, 27 },
366 { 7, 10, 12, 14, 17, 19, 20, 22, 48 },
367 { 8, 9, 10, 9, 10, 11, 11, 11, 19 },
368 { 8, 11, 12, 12, 13, 13, 13, 13, 17 },
369 { 8, 11, 13, 14, 16, 17, 19, 20, 27 },
370 { 8, 12, 17, 22, 26, 28, 29, 30, 33 },
371 { 10, 14, 16, 19, 21, 22, 22, 24, 28 },
372 { 10, 15, 17, 18, 21, 22, 23, 25, 43 }
375 static const uint8_t atrac3p_ct_restricted_to_full[2][7][4] = {
392 /** Tables for spectrum coding */
394 /* If the first entry of a subtable is negative, it means
395 * that another VLC is to be reused. */
396 static const int8_t atrac3p_spectra_cbs[][12] = {
397 { 1, 0, 0, 1, 7, 0, 19, 5, 13, 21, 6, 8 },
398 { 0, 1, 0, 4, 11, 0, 1, 29, 6, 20, 7, 2 },
399 { 0, 0, 1, 8, 0, 13, 18, 7, 2, 0, 0, 0 },
400 { 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
401 { 0, 0, 1, 3, 5, 8, 12, 23, 72, 68, 31, 2 },
402 { 0, 1, 3, 2, 6, 4, 0, 0, 0, 0, 0, 0 },
403 { 0, 1, 2, 2, 2, 6, 14, 21, 13, 2, 0, 0 },
404 { 1, 0, 0, 0, 8, 1, 18, 9, 22, 10, 12, 0 },
405 { 0, 0, 0, 0, 16, 11, 32, 19, 1, 2, 0, 0 },
406 { 1, 0, 0, 4, 2, 2, 9, 15, 12, 4, 0, 0 },
407 { 0, 1, 0, 4, 3, 5, 16, 28, 34, 26, 4, 0 },
408 { 0, 0, 0, 0, 9, 12, 16, 44, 98, 42, 4, 0 },
409 { 0, 1, 1, 2, 2, 5, 7, 21, 54, 85, 62, 16 },
410 { 0, 0, 3, 2, 5, 7, 17, 23, 6, 0, 0, 0 },
411 { 1, 0, 0, 2, 6, 0, 7, 21, 15, 17, 8, 4 },
412 { 0, 1, 4, 0, 4, 3, 8, 3, 2, 0, 0, 0 },
413 { 0, 0, 5, 0, 4, 6, 10, 16, 8, 0, 0, 0 },
414 { 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
415 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
416 { 0, 0, 0, 3, 4, 12, 15, 34, 83, 75, 30, 0 },
417 { 0, 0, 0, 3, 14, 10, 20, 16, 0, 0, 0, 0 },
418 { 1, 0, 3, 1, 0, 4, 0, 0, 0, 0, 0, 0 },
419 { 1, 0, 0, 2, 2, 6, 12, 18, 19, 15, 6, 0 },
420 { 0, 0, 1, 1, 13, 1, 14, 28, 33, 81, 32, 52 },
421 { 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0 },
422 { 0, 1, 0, 2, 3, 6, 19, 9, 75, 110, 0, 0 },
423 { 0, 0, 1, 3, 5, 5, 13, 27, 69, 96, 35, 2 },
424 { 0, 0, 0, 7, 6, 8, 22, 20, 0, 0, 0, 0 },
425 { 1, 0, 0, 6, 2, 0, 0, 0, 19, 9, 24, 20 },
426 { 0, 0, 1, 2, 13, 1, 31, 13, 16, 4, 0, 0 },
427 { 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
428 { 0, 0, 0, 5, 4, 12, 17, 47, 24, 12, 0, 0 },
429 { 0, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0 },
430 { 0, 0, 0, 0, 1, 16, 31, 36, 172, 0, 0, 0 },
431 { 0, 0, 0, 5, 12, 9, 12, 15, 10, 0, 0, 0 },
432 { 0, 1, 0, 6, 2, 6, 18, 4, 26, 6, 12, 0 },
433 { 1, 0, 2, 2, 0, 4, 3, 8, 3, 2, 0, 0 },
434 { 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
435 { 0, 0, 0, 4, 7, 12, 19, 21, 58, 0, 0, 0 },
436 { 1, 1, 1, 0, 3, 2, 0, 0, 0, 0, 0, 0 },
437 { 0, 0, 1, 8, 6, 8, 8, 0, 0, 0, 0, 0 },
438 { 0, 0, 1, 5, 7, 8, 16, 22, 4, 0, 0, 0 },
439 { 0, 1, 0, 8, 0, 1, 16, 10, 29, 12, 4, 0 },
440 { 0, 0, 5, 2, 2, 9, 5, 2, 0, 0, 0, 0 },
441 { 0, 0, 1, 1, 10, 4, 16, 29, 46, 75, 74, 0 },
442 { 0, 0, 0, 1, 7, 12, 36, 63, 2, 0, 0, 0 },
443 { 0, 3, 0, 1, 3, 4, 4, 0, 0, 0, 0, 0 },
444 { 0, 1, 2, 2, 6, 8, 6, 3, 1, 2, 0, 0 },
445 { 0, 1, 1, 3, 4, 6, 13, 25, 10, 0, 0, 0 },
446 { 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
447 { 0, 1, 0, 4, 8, 3, 8, 24, 17, 12, 4, 0 },
448 { 0, 1, 1, 5, 2, 8, 7, 13, 8, 4, 0, 0 },
449 { 1, 0, 0, 4, 0, 4, 5, 9, 30, 45, 21, 2 },
450 { 0, 1, 3, 3, 4, 4, 0, 0, 0, 0, 0, 0 },
451 { 0, 0, 1, 3, 4, 8, 10, 36, 60, 78, 48, 8 },
453 { 1, 0, 0, 2, 6, 0, 11, 13, 12, 24, 4, 8 },
454 { 1, 0, 0, 4, 0, 8, 4, 9, 19, 13, 13, 10 },
455 { 1, 0, 0, 4, 0, 5, 12, 13, 14, 0, 0, 0 },
456 { 0, 1, 0, 4, 4, 5, 9, 30, 45, 21, 2, 0 },
457 { 0, 0, 1, 4, 4, 4, 12, 30, 73, 75, 22, 0 },
459 { 0, 0, 3, 2, 4, 8, 23, 13, 10, 0, 0, 0 },
461 { 0, 0, 1, 3, 12, 0, 30, 9, 18, 8, 0, 0 },
463 { 1, 0, 0, 4, 0, 3, 5, 16, 28, 34, 26, 4 },
465 { 0, 0, 0, 4, 4, 9, 13, 37, 76, 72, 39, 2 },
472 { 0, 0, 2, 2, 4, 5, 11, 26, 67, 78, 51, 10 },
475 { 0, 1, 0, 4, 6, 7, 10, 22, 11, 16, 4, 0 },
476 { 0, 1, 0, 0, 4, 11, 8, 28, 92, 97, 13, 2 },
478 { 1, 0, 0, 0, 4, 6, 6, 14, 42, 63, 59, 30 },
480 { 1, 0, 2, 0, 2, 2, 6, 17, 14, 13, 6, 0 },
481 { 1, 0, 0, 1, 7, 0, 20, 4, 10, 24, 2, 12 },
482 { 1, 0, 1, 3, 2, 3, 7, 4, 4, 0, 0, 0 },
483 { 0, 1, 1, 3, 4, 9, 15, 12, 4, 0, 0, 0 },
487 { 0, 1, 1, 3, 4, 6, 14, 22, 12, 0, 0, 0 },
489 { 1, 0, 1, 3, 2, 3, 7, 4, 4, 0, 0, 0 },
490 { 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0 },
493 { 1, 0, 2, 0, 2, 4, 11, 9, 2, 0, 0, 0 },
496 { 1, 0, 0, 2, 3, 5, 12, 14, 18, 15, 9, 2 },
497 { 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0 },
498 { 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0 },
499 { 1, 0, 0, 2, 2, 2, 6, 12, 34, 92, 54, 20 },
500 { 1, 0, 0, 3, 0, 3, 3, 10, 40, 85, 61, 50 },
501 { 0, 1, 2, 1, 4, 7, 10, 26, 12, 0, 0, 0 },
502 { 1, 0, 0, 1, 7, 0, 19, 5, 13, 23, 0, 12 },
504 { 1, 0, 0, 0, 1, 4, 9, 4, 103, 110, 24, 0 },
505 { 1, 0, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0 },
506 { 0, 1, 4, 0, 0, 0, 8, 11, 24, 53, 64, 60 },
508 { 0, 1, 0, 4, 6, 10, 12, 7, 15, 4, 4, 0 },
511 static const uint8_t atrac3p_spectra_xlats[] = {
512 /* Table set A, code table 0, wordlen 1 - 81 entries */
513 0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70,
514 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x41, 0xC1, 0x31, 0x05, 0x0D,
515 0xC3, 0x13, 0x07, 0x0F, 0x44, 0xCC, 0x11, 0x43, 0x33, 0x54, 0x74, 0xDC,
516 0xFC, 0x71, 0x15, 0x4D, 0xCD, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4,
517 0x5C, 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xDD, 0x3D, 0x53, 0x73,
518 0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xF5, 0x7D, 0xD7, 0x5F,
519 0xFF, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F,
520 /* Table set A, code table 0, wordlen 2 - 81 entries */
521 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
522 0x05, 0x45, 0x15, 0x55, 0x90, 0x80, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64,
523 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x85, 0x95, 0x65, 0x09, 0x49,
524 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0x88, 0x61,
525 0x25, 0x29, 0x69, 0x5A, 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x89,
526 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x1A,
527 0xA8, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0x6A, 0xA2, 0xAA,
528 /* Table set A, code table 0, wordlen 3 - 49 entries */
529 0x00, 0x08, 0x38, 0x01, 0x09, 0x39, 0x07, 0x0F, 0x3F, 0x10, 0x30, 0x11,
530 0x31, 0x02, 0x0A, 0x3A, 0x05, 0x06, 0x0E, 0x3E, 0x17, 0x37, 0x18, 0x28,
531 0x19, 0x29, 0x2A, 0x32, 0x03, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D, 0x16,
532 0x1E, 0x36, 0x1F, 0x2F, 0x12, 0x1A, 0x13, 0x2B, 0x1D, 0x35, 0x2E, 0x1B,
534 /* Table set A, code table 0, wordlen 4 - 6 entries */
535 0x01, 0x02, 0x00, 0x03, 0x04, 0x05,
536 /* Table set A, code table 0, wordlen 5 - 225 entries */
537 0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0xE1,
538 0x02, 0xF2, 0x0E, 0x1E, 0x2F, 0x30, 0xD0, 0x21, 0x12, 0x22, 0xE2, 0x03,
539 0x0D, 0x2E, 0xEE, 0xFE, 0xEF, 0x40, 0xC0, 0x31, 0xC1, 0xD1, 0x32, 0xD2,
540 0x13, 0x23, 0xE3, 0xF3, 0x04, 0xF4, 0x0C, 0x1C, 0x1D, 0x2D, 0xED, 0xFD,
541 0x3E, 0xDE, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xA0, 0xB0, 0x41, 0x51,
542 0x61, 0x71, 0x91, 0xA1, 0xB1, 0x42, 0x62, 0x92, 0xA2, 0xC2, 0x33, 0xC3,
543 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4, 0x05, 0x15, 0xF5, 0x06, 0x16, 0x26,
544 0xE6, 0xF6, 0x07, 0x17, 0xE7, 0xF7, 0x09, 0x19, 0x29, 0xF9, 0x0A, 0x1A,
545 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x2C, 0x3C, 0xDC, 0xEC, 0xFC, 0x3D,
546 0x4D, 0xCD, 0xDD, 0x4E, 0x6E, 0x7E, 0xAE, 0xCE, 0x4F, 0x5F, 0x6F, 0x7F,
547 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0x72, 0xB2, 0x43, 0x53, 0x63, 0x73, 0x93,
548 0xA3, 0xB3, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4, 0x25, 0x35, 0xA5,
549 0xC5, 0xD5, 0xE5, 0x36, 0x46, 0xB6, 0xC6, 0xD6, 0x27, 0x37, 0x47, 0xB7,
550 0xC7, 0xD7, 0x39, 0x49, 0x59, 0xC9, 0xD9, 0xE9, 0x3A, 0x4A, 0x5A, 0xCA,
551 0xDA, 0x2B, 0x3B, 0x4B, 0x6B, 0x7B, 0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C,
552 0x9C, 0xAC, 0xCC, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0x5E, 0x9E, 0xBE,
553 0x54, 0x45, 0x55, 0x65, 0x75, 0x95, 0xB5, 0x56, 0x66, 0x76, 0x96, 0xA6,
554 0x57, 0x67, 0x97, 0xA7, 0x69, 0x79, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA,
555 0xBA, 0x5B, 0x9B, 0xAB, 0xBB, 0xCB, 0xBC, 0x77, 0x99,
556 /* Table set A, code table 0, wordlen 6 - 16 entries */
557 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0D, 0x0E,
558 0x0A, 0x0B, 0x0C, 0x0F,
559 /* Table set A, code table 0, wordlen 7 - 63 entries */
560 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x3D, 0x04, 0x05, 0x06, 0x3A, 0x3B,
561 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x1A, 0x1B, 0x1C, 0x24, 0x25, 0x26, 0x36,
562 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x19, 0x1D, 0x1E,
563 0x1F, 0x21, 0x22, 0x23, 0x27, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
564 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x29, 0x2A, 0x2B, 0x2C, 0x2D,
566 /* Table set A, code table 1, wordlen 1 - 81 entries */
567 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x50, 0x70,
568 0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43,
569 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33,
570 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0x15, 0x35,
571 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x3F, 0x51,
572 0x45, 0xC5, 0x55, 0x53, 0xF3, 0x4F, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5,
573 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F,
574 /* Table set A, code table 1, wordlen 2 - 81 entries */
575 0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51,
576 0x05, 0x45, 0x15, 0x55, 0x90, 0x94, 0x58, 0x91, 0x95, 0x19, 0x59, 0x06,
577 0x46, 0x16, 0x56, 0x80, 0x60, 0x84, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18,
578 0x68, 0x81, 0x21, 0x61, 0xA1, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49, 0x99,
579 0x69, 0xA9, 0x02, 0x42, 0x12, 0x52, 0x96, 0x26, 0x66, 0x1A, 0x5A, 0x20,
580 0xA0, 0x88, 0x98, 0x28, 0xA8, 0x89, 0x29, 0x82, 0x92, 0x22, 0x62, 0x86,
581 0xA6, 0x0A, 0x4A, 0x9A, 0x6A, 0xAA, 0xA2, 0x8A, 0x2A,
582 /* Table set A, code table 1, wordlen 3 - 49 entries */
583 0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
584 0x02, 0x3A, 0x06, 0x0E, 0x3E, 0x17, 0x18, 0x28, 0x11, 0x29, 0x0A, 0x32,
585 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x16, 0x1F, 0x37, 0x19, 0x12, 0x1A,
586 0x2A, 0x13, 0x33, 0x15, 0x35, 0x1E, 0x2E, 0x36, 0x2F, 0x1B, 0x2B, 0x1D,
588 /* Table set A, code table 1, wordlen 4 - 121 entries */
589 0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02,
590 0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B,
591 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1,
592 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
593 0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42,
594 0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35,
595 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD,
596 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
597 0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C,
598 0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B,
600 /* Table set A, code table 1, wordlen 5 - 225 entries */
601 0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0x21,
602 0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0xD0, 0x31,
603 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F,
604 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x41, 0xC1, 0x32, 0x42, 0xC2,
605 0xD2, 0x23, 0x33, 0xD3, 0xE3, 0x04, 0x14, 0x24, 0xE4, 0xF4, 0x06, 0x16,
606 0xF6, 0x07, 0x09, 0x0A, 0x1A, 0xFA, 0x0C, 0x1C, 0x2C, 0xEC, 0xFC, 0x2D,
607 0x3D, 0xDD, 0xED, 0x3E, 0x4E, 0xCE, 0xDE, 0x4F, 0xCF, 0x50, 0xB0, 0x51,
608 0x61, 0x71, 0x91, 0xA1, 0xB1, 0x52, 0x62, 0x72, 0x92, 0xA2, 0xB2, 0x43,
609 0x53, 0x63, 0x73, 0x93, 0xA3, 0xC3, 0x34, 0x44, 0x64, 0xA4, 0xC4, 0xD4,
610 0x05, 0x15, 0x25, 0x35, 0xD5, 0xE5, 0xF5, 0x26, 0x36, 0x46, 0xC6, 0xD6,
611 0xE6, 0x17, 0x27, 0x37, 0xC7, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xC9,
612 0xD9, 0xE9, 0xF9, 0x2A, 0x3A, 0x4A, 0x5A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B,
613 0x2B, 0x3B, 0xCB, 0xDB, 0xEB, 0xFB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C, 0xAC,
614 0xBC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x5E,
615 0x6E, 0x7E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xB3,
616 0x54, 0x74, 0x94, 0xB4, 0x45, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5,
617 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0x47, 0x57, 0x67, 0xA7, 0xB7, 0x49,
618 0x59, 0x69, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0x4B, 0x5B, 0x6B,
619 0x7B, 0x9B, 0xAB, 0xBB, 0x5C, 0x77, 0x97, 0x79, 0x99,
620 /* Table set A, code table 1, wordlen 6 - 256 entries */
621 0x00, 0x01, 0x10, 0x11, 0x21, 0x12, 0x20, 0x31, 0x02, 0x22, 0x13, 0x30,
622 0x41, 0x32, 0x03, 0x23, 0x14, 0x24, 0x40, 0x51, 0x61, 0xD1, 0xE1, 0x42,
623 0x52, 0xD2, 0x33, 0x43, 0xD3, 0x04, 0x34, 0x05, 0x15, 0x25, 0x16, 0x1D,
624 0x2D, 0x1E, 0x2E, 0x50, 0x60, 0xD0, 0xE0, 0xF0, 0x71, 0x81, 0xF1, 0x62,
625 0x72, 0xE2, 0xF2, 0x53, 0x63, 0xE3, 0xF3, 0x44, 0x54, 0xD4, 0xE4, 0xF4,
626 0x35, 0x45, 0x55, 0xD5, 0xE5, 0xF5, 0x06, 0x26, 0x36, 0xD6, 0x07, 0x17,
627 0x27, 0x37, 0xD7, 0x18, 0x28, 0x1C, 0x0D, 0x3D, 0x4D, 0x5D, 0x6D, 0x8D,
628 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x1F, 0x2F, 0x3F, 0x5F, 0x70, 0x80, 0x90,
629 0xC0, 0x91, 0xA1, 0xB1, 0xC1, 0x82, 0x92, 0xA2, 0xC2, 0x73, 0x83, 0x93,
630 0xA3, 0xC3, 0x64, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0x65, 0x75, 0x85, 0x46,
631 0x56, 0x66, 0xC6, 0xE6, 0xF6, 0x47, 0x57, 0xE7, 0xF7, 0x08, 0x38, 0x48,
632 0x58, 0x68, 0xD8, 0xE8, 0xF8, 0x09, 0x19, 0x29, 0x39, 0x59, 0xD9, 0xE9,
633 0xF9, 0x1A, 0x2A, 0x3A, 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0xDB, 0xEB, 0xFB,
634 0x0C, 0x2C, 0x3C, 0xDC, 0xEC, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E,
635 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x4F, 0x6F, 0x7F, 0x8F, 0xAF, 0xA0, 0xB2,
636 0xB3, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0x76, 0x86, 0x96, 0xA6, 0xB6, 0x67,
637 0x77, 0x87, 0x97, 0xC7, 0x78, 0x88, 0x98, 0xC8, 0x49, 0x69, 0x79, 0x89,
638 0x99, 0xC9, 0x0A, 0x4A, 0x5A, 0x6A, 0x7A, 0xCA, 0x0B, 0x3B, 0x4B, 0x5B,
639 0x6B, 0xCB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xFC,
640 0xDD, 0xED, 0xFD, 0xDE, 0xEE, 0xFE, 0x9F, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF,
641 0xB0, 0xA7, 0xB7, 0xA8, 0xB8, 0xA9, 0xB9, 0x8A, 0x9A, 0xAA, 0xBA, 0x7B,
642 0x8B, 0x9B, 0xAB, 0xBB,
643 /* Table set A, code table 1, wordlen 7 - 63 entries */
644 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x04, 0x3B, 0x3C, 0x3D, 0x05, 0x06,
645 0x07, 0x08, 0x38, 0x39, 0x3A, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1A,
646 0x1B, 0x24, 0x25, 0x26, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0F, 0x10,
647 0x11, 0x12, 0x13, 0x14, 0x15, 0x19, 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22,
648 0x23, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x16, 0x17, 0x18,
650 /* Table set A, code table 2, wordlen 1 - 81 entries */
651 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x70, 0x34,
652 0x1C, 0x0D, 0x13, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x74, 0x4C, 0xCC,
653 0xDC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x05, 0x1D, 0x43, 0xC3, 0x33, 0x37,
654 0x0F, 0x54, 0xF4, 0xFC, 0xD1, 0x71, 0x15, 0x4D, 0xCD, 0xDD, 0xD3, 0x73,
655 0x47, 0xC7, 0x77, 0x3F, 0xD4, 0x5C, 0x7C, 0x51, 0xF1, 0x45, 0xC5, 0x55,
656 0x35, 0x3D, 0x53, 0xF3, 0x17, 0x4F, 0xCF, 0x1F, 0xFF, 0x75, 0xF5, 0x5D,
657 0x7D, 0xD7, 0xF7, 0x5F, 0xDF, 0xD5, 0xFD, 0x57, 0x7F,
658 /* Table set A, code table 2, wordlen 2 - 25 entries */
659 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06,
660 0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12,
662 /* Table set A, code table 2, wordlen 3 - 49 entries */
663 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x02,
664 0x3A, 0x06, 0x0E, 0x18, 0x28, 0x11, 0x31, 0x0A, 0x03, 0x05, 0x3E, 0x17,
665 0x37, 0x19, 0x29, 0x12, 0x2A, 0x32, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D,
666 0x16, 0x1E, 0x36, 0x1F, 0x2F, 0x1A, 0x13, 0x1B, 0x2B, 0x1D, 0x2D, 0x35,
668 /* Table set A, code table 2, wordlen 4 - 6 entries */
669 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
670 /* Table set A, code table 2, wordlen 5 - 8 entries */
671 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
672 /* Table set A, code table 2, wordlen 6 - 256 entries */
673 0x00, 0x01, 0x11, 0x10, 0x21, 0x12, 0x22, 0x20, 0x30, 0x31, 0x41, 0x02,
674 0x32, 0x03, 0x13, 0x23, 0x33, 0x14, 0x24, 0x40, 0x51, 0x61, 0x42, 0x52,
675 0x43, 0x53, 0x04, 0x34, 0x44, 0x15, 0x25, 0x35, 0x16, 0x26, 0x50, 0x60,
676 0x71, 0x81, 0xD1, 0x62, 0x72, 0x82, 0xD2, 0x63, 0x73, 0xD3, 0x54, 0x64,
677 0x05, 0x45, 0x55, 0x65, 0x06, 0x36, 0x46, 0x56, 0x17, 0x27, 0x37, 0x47,
678 0x18, 0x28, 0x38, 0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x70, 0x80, 0x90, 0xD0,
679 0xE0, 0x91, 0xA1, 0xB1, 0xC1, 0xE1, 0xF1, 0x92, 0xA2, 0xC2, 0xE2, 0xF2,
680 0x83, 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0xD4,
681 0xE4, 0xF4, 0x75, 0x85, 0x95, 0xD5, 0xE5, 0x66, 0x76, 0x86, 0xD6, 0xE6,
682 0x07, 0x57, 0x67, 0x77, 0xD7, 0x08, 0x48, 0x58, 0x68, 0xD8, 0x09, 0x29,
683 0x39, 0x49, 0x59, 0x69, 0x1A, 0x2A, 0x3A, 0x4A, 0x1B, 0x2B, 0x1C, 0x2C,
684 0x3C, 0x4C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x8D, 0x0E, 0x2E, 0x3E, 0x4E,
685 0x5E, 0x6E, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0xA0, 0xB0, 0xC0, 0xF0, 0xB2,
686 0xB3, 0xB4, 0xA5, 0xB5, 0xC5, 0xF5, 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x87,
687 0x97, 0xA7, 0xB7, 0xC7, 0xE7, 0xF7, 0x78, 0x88, 0x98, 0xA8, 0xC8, 0xE8,
688 0xF8, 0x79, 0x89, 0x99, 0xC9, 0xD9, 0xE9, 0xF9, 0x0A, 0x5A, 0x6A, 0x7A,
689 0x8A, 0xDA, 0xEA, 0xFA, 0x0B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xDB,
690 0x0C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E,
691 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB8, 0xA9,
692 0xB9, 0x9A, 0xAA, 0xBA, 0xCA, 0x9B, 0xAB, 0xBB, 0xCB, 0xEB, 0xFB, 0xAC,
693 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF,
694 0xCF, 0xDF, 0xEF, 0xFF,
695 /* Table set A, code table 2, wordlen 7 - 63 entries */
696 0x00, 0x02, 0x03, 0x01, 0x05, 0x06, 0x07, 0x09, 0x36, 0x37, 0x38, 0x3A,
697 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x04, 0x08, 0x0A, 0x0B, 0x0C, 0x0E, 0x31,
698 0x34, 0x35, 0x39, 0x0D, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19,
699 0x1A, 0x1E, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x32, 0x33, 0x14,
700 0x15, 0x18, 0x1B, 0x1C, 0x1D, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
702 /* Table set A, code table 3, wordlen 1 - 9 entries */
703 0x00, 0x04, 0x0C, 0x01, 0x03, 0x05, 0x0D, 0x07, 0x0F,
704 /* Table set A, code table 3, wordlen 2 - 81 entries */
705 0x00, 0x40, 0x01, 0x10, 0x04, 0x80, 0x50, 0x20, 0x14, 0x05, 0x02, 0x90,
706 0x60, 0x44, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0x06, 0xA0,
707 0x84, 0x94, 0x64, 0xA4, 0x48, 0x58, 0x28, 0x51, 0x21, 0x45, 0x55, 0x25,
708 0x19, 0x12, 0x16, 0x0A, 0x1A, 0x68, 0xA8, 0x81, 0x91, 0x61, 0xA1, 0x85,
709 0x95, 0x65, 0xA5, 0x49, 0x59, 0x29, 0x69, 0x42, 0x52, 0x46, 0x56, 0x2A,
710 0x88, 0x98, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 0x66,
711 0x4A, 0x5A, 0x6A, 0xA2, 0x96, 0xA6, 0x8A, 0x9A, 0xAA,
712 /* Table set A, code table 3, wordlen 3 - 256 entries */
713 0x00, 0x10, 0x40, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51,
714 0x05, 0x45, 0x15, 0x55, 0x90, 0x20, 0x94, 0x64, 0x18, 0x21, 0x95, 0x19,
715 0x69, 0x02, 0x52, 0x06, 0x46, 0x16, 0x80, 0x60, 0x84, 0xD4, 0x24, 0x08,
716 0x48, 0x58, 0x68, 0x81, 0x91, 0x61, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49,
717 0x59, 0x29, 0x42, 0x12, 0x56, 0x96, 0xA6, 0x0A, 0x17, 0x1B, 0xD0, 0xC4,
718 0x74, 0xF4, 0x88, 0xC8, 0x28, 0xA1, 0x71, 0xC5, 0xD5, 0x75, 0x99, 0xB9,
719 0x4D, 0x1D, 0x2D, 0x6D, 0x22, 0x62, 0x66, 0x4A, 0x1A, 0x9A, 0x6A, 0x8E,
720 0x5E, 0x43, 0x23, 0x07, 0x47, 0x57, 0x6B, 0xC0, 0xA0, 0xE0, 0x70, 0xB0,
721 0xA4, 0xE4, 0x34, 0xB4, 0x98, 0xD8, 0xA8, 0x38, 0x78, 0x0C, 0x4C, 0x1C,
722 0x5C, 0x9C, 0x6C, 0x7C, 0xC1, 0xD1, 0xE1, 0x31, 0xE5, 0x35, 0xB5, 0xF5,
723 0x89, 0xA9, 0x79, 0xF9, 0x0D, 0xCD, 0x9D, 0xDD, 0xAD, 0x3D, 0x7D, 0x82,
724 0xC2, 0x92, 0xD2, 0xE2, 0x72, 0xF2, 0x86, 0xD6, 0xE6, 0x76, 0xB6, 0x8A,
725 0x5A, 0xDA, 0xEA, 0xFA, 0x4E, 0x1E, 0x9E, 0xEE, 0x03, 0x13, 0x53, 0x97,
726 0xB7, 0x0B, 0x4B, 0x8B, 0x5B, 0x9B, 0xEB, 0x7B, 0x0F, 0x4F, 0x1F, 0x5F,
727 0x9F, 0x2F, 0x3F, 0xBF, 0xE8, 0xB8, 0xF8, 0x8C, 0x2C, 0x3C, 0xFC, 0xB1,
728 0xC9, 0xD9, 0xE9, 0x39, 0x5D, 0xED, 0xBD, 0xA2, 0x32, 0x26, 0x36, 0x2A,
729 0xAA, 0xBA, 0x0E, 0x2E, 0x6E, 0x83, 0xC3, 0x93, 0x63, 0xB3, 0xA7, 0x37,
730 0x30, 0xF0, 0xCC, 0xDC, 0xAC, 0xEC, 0xBC, 0xF1, 0x8D, 0xFD, 0xB2, 0xC6,
731 0xF6, 0xCA, 0x3A, 0x7A, 0xCE, 0xDE, 0xAE, 0x3E, 0x7E, 0xBE, 0xFE, 0xD3,
732 0xA3, 0xE3, 0x33, 0x73, 0xF3, 0x87, 0xC7, 0xD7, 0x27, 0x67, 0xE7, 0x77,
733 0xF7, 0xCB, 0xDB, 0x2B, 0xAB, 0x3B, 0xBB, 0xFB, 0x8F, 0xCF, 0xDF, 0x6F,
734 0xAF, 0xEF, 0x7F, 0xFF,
735 /* Table set A, code table 3, wordlen 4 - 6 entries */
736 0x01, 0x00, 0x02, 0x03, 0x04, 0x05,
737 /* Table set A, code table 3, wordlen 5 - 225 entries */
738 0x00, 0xF0, 0x0F, 0x10, 0x01, 0xFF, 0x20, 0xE0, 0x11, 0xF1, 0x0E, 0x1F,
739 0x30, 0x40, 0xD0, 0x21, 0xE1, 0x02, 0x12, 0x22, 0xE2, 0xF2, 0x03, 0x13,
740 0x1E, 0x2E, 0x3E, 0xEE, 0xFE, 0x2F, 0xEF, 0xD2, 0x43, 0xF3, 0x04, 0x0D,
741 0x2D, 0x3D, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xB0, 0x31, 0x41, 0x91,
742 0xA1, 0xC1, 0xD1, 0x42, 0xA2, 0xC2, 0x23, 0x33, 0xE3, 0x24, 0x34, 0xB4,
743 0xD4, 0xF4, 0x05, 0x15, 0x45, 0xE5, 0x16, 0x36, 0x56, 0xA6, 0xC6, 0xD6,
744 0xF6, 0x57, 0xC7, 0xF7, 0x09, 0x29, 0x49, 0x59, 0x69, 0xF9, 0x0A, 0x2A,
745 0x3A, 0x4A, 0xDA, 0xEA, 0xFA, 0x0B, 0x2B, 0xAB, 0xEB, 0xFB, 0x0C, 0x1C,
746 0x2C, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0xFC, 0x1D, 0x4D, 0x6D, 0xBD, 0xCD,
747 0xED, 0xFD, 0x4E, 0x6E, 0xCE, 0xDE, 0x7F, 0xA0, 0xC0, 0x51, 0x61, 0x71,
748 0xB1, 0x32, 0x52, 0x62, 0x72, 0x92, 0xB2, 0x53, 0x63, 0x73, 0x93, 0xA3,
749 0xB3, 0xC3, 0xD3, 0x14, 0x44, 0x54, 0x64, 0x74, 0x94, 0xA4, 0xC4, 0xE4,
750 0x25, 0x35, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xF5, 0x06,
751 0x26, 0x46, 0x66, 0x76, 0x96, 0xB6, 0xE6, 0x07, 0x17, 0x27, 0x37, 0x47,
752 0x67, 0x77, 0x97, 0xA7, 0xB7, 0xD7, 0xE7, 0x19, 0x39, 0x79, 0x99, 0xA9,
753 0xB9, 0xC9, 0xD9, 0xE9, 0x1A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0xCA,
754 0x1B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x9B, 0xBB, 0xCB, 0xDB, 0x6C, 0x7C,
755 0x9C, 0xAC, 0xBC, 0xEC, 0x5D, 0x7D, 0x9D, 0xAD, 0xDD, 0x5E, 0x7E, 0x9E,
756 0xAE, 0xBE, 0x4F, 0x5F, 0x6F, 0x9F, 0xAF, 0xBF, 0xCF,
757 /* Table set A, code table 3, wordlen 6 - 256 entries */
758 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x22, 0x31, 0x41, 0x32,
759 0x13, 0x23, 0x30, 0x40, 0x51, 0x42, 0x03, 0x33, 0x43, 0x04, 0x14, 0x24,
760 0x34, 0x15, 0x25, 0x50, 0x61, 0x71, 0xD1, 0x52, 0x62, 0x72, 0xD2, 0x53,
761 0x63, 0xD3, 0x44, 0x54, 0x64, 0x05, 0x35, 0x45, 0x55, 0x16, 0x26, 0x36,
762 0x46, 0x17, 0x27, 0x1D, 0x2D, 0x3D, 0x60, 0x70, 0xD0, 0x81, 0x91, 0xA1,
763 0xC1, 0xE1, 0xF1, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x73, 0x83, 0xE3, 0xF3,
764 0x74, 0x84, 0xC4, 0xD4, 0xE4, 0xF4, 0x65, 0x75, 0x85, 0xD5, 0xE5, 0x06,
765 0x56, 0x66, 0xD6, 0xE6, 0x07, 0x37, 0x47, 0x57, 0x67, 0xD7, 0xE7, 0x18,
766 0x28, 0x38, 0x48, 0x58, 0xD8, 0x19, 0x29, 0x2A, 0x1C, 0x2C, 0x0D, 0x4D,
767 0x5D, 0x6D, 0x7D, 0x8D, 0x9D, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E,
768 0x1F, 0x2F, 0x3F, 0x80, 0x90, 0xA0, 0xC0, 0xE0, 0xF0, 0xB1, 0xA2, 0xB2,
769 0x93, 0xA3, 0xB3, 0xC3, 0x94, 0xA4, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5,
770 0x76, 0x86, 0x96, 0xA6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xF7,
771 0x08, 0x68, 0x78, 0x88, 0x98, 0xC8, 0xE8, 0xF8, 0x09, 0x39, 0x49, 0x59,
772 0x69, 0x79, 0x89, 0xD9, 0xE9, 0xF9, 0x0A, 0x1A, 0x3A, 0x4A, 0x5A, 0x6A,
773 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0xDB, 0xEB, 0xFB, 0x0C,
774 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0xEC, 0xAD, 0xBD, 0xCD,
775 0xDD, 0xED, 0x0E, 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x4F, 0x5F, 0x6F, 0x7F,
776 0x8F, 0x9F, 0xAF, 0xB0, 0xB6, 0xB7, 0xA8, 0xB8, 0x99, 0xA9, 0xB9, 0xC9,
777 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0x0B, 0x6B, 0x7B, 0x8B, 0x9B, 0xCB,
778 0xAC, 0xBC, 0xCC, 0xFC, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF,
779 0xEF, 0xFF, 0xAB, 0xBB,
780 /* Table set A, code table 3, wordlen 7 - 63 entries */
781 0x00, 0x01, 0x02, 0x03, 0x3D, 0x3E, 0x3F, 0x04, 0x05, 0x06, 0x3A, 0x3B,
782 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D,
783 0x0E, 0x0F, 0x10, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x23, 0x24, 0x25,
784 0x26, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x11, 0x12, 0x13, 0x14, 0x15,
785 0x16, 0x17, 0x18, 0x1F, 0x21, 0x22, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C,
787 /* Table set A, code table 4, wordlen 1 - 81 entries */
788 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x50, 0xD0, 0x70,
789 0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43,
790 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33,
791 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
792 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x1F,
793 0x3F, 0x51, 0x45, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x53, 0xF3,
794 0x57, 0xD7, 0xF7, 0x4F, 0xCF, 0x5F, 0xDF, 0x7F, 0xFF,
795 /* Table set A, code table 4, wordlen 2 - 81 entries */
796 0x00, 0x40, 0x01, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
797 0x05, 0x45, 0x15, 0x55, 0x59, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24,
798 0x64, 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25,
799 0x65, 0x09, 0x49, 0x19, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56,
800 0xA0, 0xA4, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x66, 0x4A, 0x1A,
801 0x5A, 0x88, 0x98, 0x28, 0x89, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26,
802 0xA6, 0x0A, 0x9A, 0x2A, 0x6A, 0xA8, 0xA2, 0x8A, 0xAA,
803 /* Table set A, code table 4, wordlen 3 - 7 entries */
804 0x00, 0x07, 0x01, 0x02, 0x06, 0x03, 0x05,
805 /* Table set A, code table 4, wordlen 4 - 121 entries */
806 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x21,
807 0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xD0,
808 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0x2D, 0xFD, 0x2E, 0xEE,
809 0x3F, 0xDF, 0x40, 0xB0, 0xC0, 0x31, 0x41, 0x51, 0xB1, 0xC1, 0x32, 0xB2,
810 0xC2, 0xD2, 0x23, 0xB3, 0xD3, 0xE3, 0x04, 0x14, 0xE4, 0xF4, 0x05, 0x15,
811 0xD5, 0xE5, 0xF5, 0x0B, 0x1B, 0x2B, 0x3B, 0xEB, 0xFB, 0x0C, 0x1C, 0x2C,
812 0xFC, 0x3D, 0x5D, 0xED, 0x3E, 0x4E, 0x5E, 0xBE, 0xDE, 0x4F, 0x5F, 0xBF,
813 0xCF, 0x42, 0x52, 0x33, 0x53, 0xC3, 0x24, 0xB4, 0xD4, 0x25, 0x35, 0xC5,
814 0x4B, 0xCB, 0xDB, 0x3C, 0x4C, 0x5C, 0xDC, 0xEC, 0x4D, 0xBD, 0xCD, 0xDD,
815 0xCE, 0x43, 0x34, 0x44, 0x54, 0xC4, 0x45, 0x55, 0xB5, 0x5B, 0xBB, 0xBC,
817 /* Table set A, code table 4, wordlen 5 - 8 entries */
818 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x07,
819 /* Table set A, code table 4, wordlen 6 - 256 entries */
820 0x02, 0x00, 0x30, 0x21, 0x31, 0x41, 0x61, 0x12, 0x22, 0x42, 0x62, 0x43,
821 0x53, 0x24, 0x45, 0x26, 0x27, 0x10, 0x40, 0xB0, 0x01, 0x11, 0x81, 0x32,
822 0x52, 0x72, 0x92, 0x03, 0x13, 0x33, 0x63, 0x14, 0x34, 0x54, 0x64, 0x74,
823 0x05, 0x15, 0x25, 0x35, 0x55, 0x65, 0x06, 0x46, 0x56, 0x57, 0x67, 0x88,
824 0x20, 0x51, 0x91, 0xD1, 0xF2, 0x23, 0x83, 0x93, 0x04, 0x44, 0x84, 0x94,
825 0x75, 0x85, 0xC5, 0x36, 0x66, 0x96, 0xB6, 0x07, 0x37, 0x97, 0x08, 0x28,
826 0x38, 0x48, 0x68, 0x09, 0x69, 0x79, 0x0A, 0x2A, 0x1B, 0x9B, 0x2C, 0x4D,
827 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xC0, 0xD0, 0xE0, 0xF0, 0x71, 0xA1,
828 0xB1, 0xC1, 0xE1, 0xF1, 0x82, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0x73, 0xA3,
829 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, 0x95,
830 0xA5, 0xB5, 0xD5, 0xE5, 0xF5, 0x16, 0x76, 0x86, 0xA6, 0xC6, 0xD6, 0xE6,
831 0xF6, 0x17, 0x47, 0x77, 0x87, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, 0x18,
832 0x58, 0x78, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, 0x19, 0x29, 0x39,
833 0x49, 0x59, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, 0x1A, 0x3A,
834 0x4A, 0x5A, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA,
835 0x0B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xAB, 0xBB, 0xCB, 0xDB,
836 0xEB, 0xFB, 0x0C, 0x1C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC,
837 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, 0x0D, 0x1D, 0x2D, 0x3D, 0x5D, 0x6D, 0x7D,
838 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, 0x0E, 0x1E, 0x2E, 0x3E,
839 0x4E, 0x5E, 0x6E, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
840 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xBF,
841 0xCF, 0xDF, 0xEF, 0xFF,
842 /* Table set A, code table 4, wordlen 7 - 63 entries */
843 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x06, 0x08, 0x36, 0x38,
844 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x07, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
845 0x35, 0x37, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x24, 0x25, 0x27,
846 0x2A, 0x34, 0x16, 0x19, 0x1C, 0x23, 0x26, 0x28, 0x29, 0x2B, 0x2D, 0x2E,
847 0x2F, 0x30, 0x31, 0x32, 0x33, 0x17, 0x18, 0x1A, 0x1B, 0x1D, 0x1E, 0x1F,
849 /* Table set A, code table 5, wordlen 1 - 81 entries */
850 0x00, 0x40, 0xC0, 0x30, 0x04, 0x01, 0x03, 0x10, 0x0C, 0xD0, 0x70, 0x34,
851 0x1C, 0x0D, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x4C, 0xCC, 0x3C, 0x41,
852 0xC1, 0x11, 0x31, 0x05, 0x43, 0xC3, 0x13, 0x33, 0x0F, 0x74, 0xDC, 0x1D,
853 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15,
854 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77,
855 0x4F, 0x1F, 0x3F, 0x51, 0x45, 0x55, 0xF3, 0xCF, 0xFF, 0xD5, 0x75, 0xF5,
856 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F,
857 /* Table set A, code table 5, wordlen 2 - 25 entries */
858 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06,
859 0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12,
861 /* Table set A, code table 5, wordlen 3 - 7 entries */
862 0x00, 0x01, 0x02, 0x06, 0x07, 0x03, 0x05,
863 /* Table set A, code table 5, wordlen 4 - 121 entries */
864 0x00, 0x01, 0x0F, 0x1F, 0x10, 0xE0, 0xF0, 0x11, 0xF1, 0x2F, 0xFF, 0x20,
865 0x21, 0xE1, 0x02, 0x12, 0xF2, 0x03, 0xF3, 0x0E, 0x2E, 0xFE, 0x3F, 0x30,
866 0x40, 0xD0, 0xC1, 0xD1, 0x22, 0xC2, 0x33, 0xE3, 0x0C, 0xCC, 0x0D, 0x1D,
867 0x2D, 0xFD, 0x1E, 0x3E, 0x5E, 0xEF, 0xC0, 0x52, 0xB2, 0xD2, 0x43, 0xC3,
868 0xD3, 0x24, 0x45, 0xF5, 0x4B, 0x5B, 0xFB, 0x1C, 0x3D, 0xBD, 0xDD, 0xEE,
869 0xBF, 0xCF, 0xDF, 0x50, 0xB0, 0x31, 0x41, 0x51, 0xB1, 0x32, 0x42, 0xE2,
870 0x13, 0x23, 0x53, 0xB3, 0x04, 0x14, 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4,
871 0xE4, 0xF4, 0x05, 0x15, 0x25, 0x35, 0x55, 0xB5, 0xC5, 0xD5, 0xE5, 0x0B,
872 0x1B, 0x2B, 0x3B, 0xBB, 0xCB, 0xDB, 0xEB, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC,
873 0xDC, 0xEC, 0xFC, 0x4D, 0x5D, 0xCD, 0xED, 0x4E, 0xBE, 0xCE, 0xDE, 0x4F,
875 /* Table set A, code table 5, wordlen 5 - 8 entries */
876 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x04, 0x05,
877 /* Table set A, code table 5, wordlen 6 - 31 entries */
878 0x04, 0x00, 0x01, 0x02, 0x03, 0x1C, 0x1D, 0x1E, 0x1F, 0x05, 0x06, 0x07,
879 0x18, 0x19, 0x1B, 0x08, 0x09, 0x0E, 0x13, 0x15, 0x16, 0x17, 0x1A, 0x0A,
880 0x0B, 0x0C, 0x0D, 0x0F, 0x11, 0x12, 0x14,
881 /* Table set A, code table 5, wordlen 7 - 63 entries */
882 0x00, 0x01, 0x02, 0x3D, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x06, 0x3A, 0x3B,
883 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D,
884 0x0E, 0x0F, 0x1A, 0x1B, 0x1C, 0x24, 0x25, 0x26, 0x31, 0x32, 0x33, 0x34,
885 0x35, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1D, 0x1E,
886 0x1F, 0x21, 0x22, 0x23, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x16,
888 /* Table set A, code table 6, wordlen 1 - 81 entries */
889 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x70, 0x50, 0xD0,
890 0xF0, 0x44, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x31, 0x05, 0x0D, 0x13,
891 0x07, 0x0F, 0x74, 0xCC, 0xDC, 0xFC, 0x41, 0xC1, 0x11, 0x43, 0xC3, 0x33,
892 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0xF1, 0x45, 0xC5, 0x15,
893 0x35, 0x4D, 0xCD, 0x1D, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 0x47, 0xC7, 0x17,
894 0x37, 0x4F, 0xCF, 0x1F, 0x3F, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0xDD, 0xFD,
895 0x57, 0xD7, 0x77, 0xF7, 0xFF, 0x7D, 0x5F, 0xDF, 0x7F,
896 /* Table set A, code table 6, wordlen 2 - 25 entries */
897 0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
898 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x0A, 0x32, 0x16, 0x3E, 0x12,
900 /* Table set A, code table 6, wordlen 3 - 256 entries */
901 0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x01, 0x41, 0x05, 0x45, 0x55,
902 0x54, 0x11, 0x51, 0x15, 0x80, 0x90, 0x60, 0x24, 0x64, 0xA4, 0x48, 0x61,
903 0x95, 0x25, 0xA5, 0x02, 0x42, 0x52, 0x16, 0x56, 0x20, 0x84, 0x94, 0x18,
904 0x58, 0x81, 0x91, 0x85, 0x65, 0x09, 0x49, 0x19, 0x59, 0x99, 0x29, 0x69,
905 0x79, 0x5D, 0x12, 0x62, 0x06, 0x46, 0x86, 0x66, 0x1A, 0x5A, 0x6A, 0x47,
906 0x17, 0xC0, 0xA0, 0xE0, 0xC4, 0xD4, 0x74, 0x08, 0x78, 0x0C, 0x4C, 0x1C,
907 0x5C, 0xD1, 0x21, 0xE1, 0x71, 0xC5, 0xE5, 0x75, 0xB5, 0x89, 0xBD, 0x92,
908 0x22, 0x96, 0xA6, 0x36, 0x0A, 0x4A, 0x8A, 0x9A, 0x2A, 0x7A, 0xDE, 0x6E,
909 0x43, 0x13, 0x53, 0x23, 0x07, 0x77, 0x4B, 0x1B, 0x9B, 0x6B, 0x2F, 0xD0,
910 0x30, 0x70, 0xE4, 0x34, 0xF4, 0xC8, 0x98, 0x28, 0x68, 0xA8, 0xE8, 0x38,
911 0xB8, 0xF8, 0x9C, 0x2C, 0x6C, 0x7C, 0xA1, 0xB1, 0xD5, 0x35, 0xC9, 0xD9,
912 0xA9, 0xE9, 0x39, 0xB9, 0xF9, 0xCD, 0x1D, 0x2D, 0xAD, 0x7D, 0xC2, 0xD2,
913 0xA2, 0xB2, 0xF2, 0xC6, 0x26, 0x76, 0xB6, 0xDA, 0xAA, 0xEA, 0x3A, 0xFA,
914 0x0E, 0x4E, 0x2E, 0x7E, 0xBE, 0xFE, 0x03, 0x83, 0x63, 0xA3, 0xB3, 0x87,
915 0x57, 0x97, 0xD7, 0x27, 0x0B, 0x8B, 0x5B, 0x2B, 0xAB, 0xCF, 0x1F, 0x9F,
916 0x7F, 0xBF, 0xB0, 0xF0, 0xB4, 0x88, 0xD8, 0x8C, 0xCC, 0xDC, 0xAC, 0xEC,
917 0x3C, 0xBC, 0xFC, 0xC1, 0x31, 0xF1, 0xF5, 0x0D, 0x4D, 0x8D, 0x9D, 0xDD,
918 0x6D, 0xED, 0x3D, 0xFD, 0x82, 0xE2, 0x32, 0x72, 0xD6, 0xE6, 0xF6, 0xCA,
919 0xBA, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xAE, 0xEE, 0x3E, 0xC3, 0x93, 0xD3,
920 0xE3, 0x33, 0x73, 0xF3, 0xC7, 0x67, 0xA7, 0xE7, 0x37, 0xB7, 0xF7, 0xCB,
921 0xDB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, 0x0F, 0x4F, 0x8F, 0x5F, 0xDF, 0x6F,
922 0xAF, 0xEF, 0x3F, 0xFF,
923 /* Table set A, code table 6, wordlen 4 - 121 entries */
924 0x00, 0x10, 0x20, 0xE0, 0xF0, 0x02, 0x0E, 0xEF, 0x30, 0x01, 0x11, 0x21,
925 0x31, 0xF1, 0x12, 0xF2, 0x1E, 0xEE, 0xDF, 0xFF, 0x40, 0xC0, 0xD0, 0xD1,
926 0xE1, 0x22, 0x32, 0x42, 0xD2, 0xE2, 0x03, 0x13, 0x23, 0xB3, 0xC3, 0xE3,
927 0xF3, 0xE4, 0x05, 0xF5, 0x2B, 0x0C, 0xFC, 0x1D, 0x2D, 0xBD, 0xDD, 0xFD,
928 0x2E, 0x4E, 0xDE, 0xFE, 0x0F, 0x1F, 0x2F, 0x3F, 0x50, 0xB0, 0x41, 0x51,
929 0xB1, 0xC1, 0x52, 0xB2, 0xC2, 0x33, 0x43, 0x53, 0xD3, 0x04, 0x14, 0x24,
930 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4, 0xF4, 0x15, 0x25, 0x35, 0x45, 0x55,
931 0xB5, 0xC5, 0xD5, 0xE5, 0x0B, 0x1B, 0x3B, 0x4B, 0x5B, 0xBB, 0xCB, 0xDB,
932 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0xEC, 0x0D,
933 0x3D, 0x4D, 0x5D, 0xCD, 0xED, 0x3E, 0x5E, 0xBE, 0xCE, 0x4F, 0xCF, 0x5F,
935 /* Table set A, code table 6, wordlen 5 - 15 entries */
936 0x00, 0x01, 0x0F, 0x0E, 0x02, 0x03, 0x0D, 0x04, 0x06, 0x0A, 0x0C, 0x05,
938 /* Table set A, code table 6, wordlen 6 - 31 entries */
939 0x00, 0x01, 0x1F, 0x02, 0x1E, 0x03, 0x04, 0x0F, 0x11, 0x1C, 0x1D, 0x05,
940 0x06, 0x07, 0x08, 0x18, 0x19, 0x1A, 0x1B, 0x09, 0x0A, 0x0B, 0x15, 0x16,
941 0x17, 0x0C, 0x13, 0x14, 0x0D, 0x0E, 0x12,
942 /* Table set A, code table 6, wordlen 7 - 63 entries */
943 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07,
944 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x1A, 0x26, 0x34,
945 0x35, 0x36, 0x37, 0x38, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x19, 0x1B,
946 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x2D, 0x2E,
947 0x2F, 0x30, 0x31, 0x32, 0x33, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29,
949 /* Table set A, code table 7, wordlen 1 - 4 entries */
950 0x00, 0x01, 0x02, 0x03,
951 /* Table set A, code table 7, wordlen 2 - 81 entries */
952 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05,
953 0x15, 0x51, 0x45, 0x55, 0x80, 0x90, 0x20, 0x64, 0x08, 0x19, 0x02, 0x06,
954 0x60, 0x84, 0x94, 0x24, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85,
955 0x95, 0x25, 0x65, 0x09, 0x49, 0x59, 0x42, 0x12, 0x52, 0x46, 0x16, 0x56,
956 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x26,
957 0x66, 0x0A, 0x4A, 0x1A, 0x5A, 0x88, 0xA8, 0x89, 0xA9, 0x82, 0x92, 0x22,
958 0x62, 0x86, 0xA6, 0x2A, 0x6A, 0xA2, 0x8A, 0x9A, 0xAA,
959 /* Table set A, code table 7, wordlen 3 - 49 entries */
960 0x00, 0x08, 0x38, 0x01, 0x39, 0x07, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31,
961 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x32, 0x0D, 0x16, 0x3E, 0x37,
962 0x18, 0x28, 0x19, 0x29, 0x12, 0x2A, 0x03, 0x3B, 0x05, 0x15, 0x1E, 0x1F,
963 0x2F, 0x1A, 0x0B, 0x2B, 0x33, 0x35, 0x3D, 0x2E, 0x36, 0x13, 0x1B, 0x1D,
965 /* Table set A, code table 7, wordlen 4 - 121 entries */
966 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
967 0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30,
968 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3,
969 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
970 0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52,
971 0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4,
972 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C,
973 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
974 0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5,
975 0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44,
977 /* Table set A, code table 7, wordlen 5 - 15 entries */
978 0x00, 0x01, 0x0E, 0x0F, 0x02, 0x03, 0x0D, 0x04, 0x06, 0x0A, 0x0C, 0x05,
980 /* Table set A, code table 7, wordlen 6 - 256 entries */
981 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22,
982 0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x32, 0x42, 0x33, 0x04, 0x24,
983 0x15, 0x16, 0x50, 0x60, 0xD0, 0x71, 0x81, 0xD1, 0xE1, 0xF1, 0x52, 0x62,
984 0x72, 0xD2, 0x43, 0x53, 0x63, 0xD3, 0x34, 0x44, 0x54, 0x05, 0x25, 0x35,
985 0x45, 0x06, 0x26, 0x36, 0x17, 0x27, 0x18, 0x0D, 0x1D, 0x2D, 0x3D, 0x1E,
986 0x2E, 0x1F, 0x70, 0x80, 0xE0, 0xF0, 0x91, 0xA1, 0xC1, 0x82, 0x92, 0xC2,
987 0xE2, 0xF2, 0x73, 0x83, 0x93, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0xD4, 0xE4,
988 0xF4, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x46, 0x56, 0x66, 0xD6, 0x07, 0x37,
989 0x47, 0x57, 0x08, 0x28, 0x38, 0x48, 0x19, 0x29, 0x39, 0x1A, 0x2A, 0x1B,
990 0x1C, 0x2C, 0x3C, 0x4D, 0x5D, 0x6D, 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x2F,
991 0x3F, 0x4F, 0x90, 0xA0, 0xB0, 0xC0, 0xB1, 0xA2, 0xB2, 0xA3, 0xB3, 0xC3,
992 0x94, 0xA4, 0xB4, 0xC4, 0x75, 0x85, 0x95, 0xA5, 0xC5, 0x76, 0x86, 0x96,
993 0xE6, 0xF6, 0x67, 0x77, 0x87, 0xD7, 0xE7, 0xF7, 0x58, 0x68, 0x78, 0x88,
994 0xD8, 0xE8, 0xF8, 0x09, 0x49, 0x59, 0x69, 0xD9, 0xE9, 0xF9, 0x0A, 0x3A,
995 0x4A, 0x5A, 0xDA, 0xEA, 0x0B, 0x2B, 0x3B, 0x4B, 0xDB, 0x0C, 0x4C, 0x5C,
996 0x6C, 0xDC, 0x7D, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 0x8E, 0x9E,
997 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB5, 0xA6, 0xB6, 0xC6,
998 0x97, 0xA7, 0xC7, 0x98, 0xA8, 0xB8, 0xC8, 0x79, 0x89, 0x99, 0xA9, 0xB9,
999 0xC9, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xCA, 0xFA, 0x5B, 0x6B, 0x7B, 0x8B,
1000 0xCB, 0xEB, 0xFB, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xEC, 0xFC, 0xDD, 0xED,
1001 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xB7, 0xBA, 0x9B, 0xAB,
1002 0xBB, 0xCC, 0xEF, 0xFF,
1003 /* Table set B, code table 0, wordlen 1 - 81 entries */
1004 0x00, 0x01, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x50, 0xD0, 0x70,
1005 0xF0, 0x34, 0x1C, 0x05, 0x0D, 0x13, 0x07, 0x0F, 0x44, 0xC4, 0x14, 0x4C,
1006 0xCC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x43, 0xC3, 0x33, 0x54, 0x74, 0xDC,
1007 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4, 0x5C,
1008 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x55, 0x35, 0xCD, 0xDD, 0x3D, 0x53,
1009 0x73, 0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0xFF, 0xF5, 0x7D, 0xD7,
1010 0x5F, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F,
1011 /* Table set B, code table 0, wordlen 2 - 81 entries */
1012 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05,
1013 0x15, 0x80, 0x51, 0x45, 0x55, 0x90, 0x20, 0x60, 0x24, 0x08, 0x18, 0x09,
1014 0x02, 0x06, 0x84, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21, 0x61, 0x95,
1015 0x25, 0x65, 0x19, 0x59, 0x42, 0x12, 0x46, 0x16, 0x56, 0xA0, 0xA4, 0x28,
1016 0x68, 0x85, 0xA5, 0x49, 0x29, 0x69, 0x52, 0x0A, 0x1A, 0x5A, 0x88, 0x98,
1017 0xA1, 0x89, 0x99, 0xA9, 0x22, 0x62, 0x96, 0x26, 0x66, 0x4A, 0x6A, 0xA8,
1018 0x82, 0x92, 0xA2, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA,
1019 /* Table set B, code table 0, wordlen 3 - 49 entries */
1020 0x00, 0x08, 0x38, 0x01, 0x07, 0x30, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x18,
1021 0x28, 0x31, 0x02, 0x3A, 0x03, 0x05, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x19,
1022 0x29, 0x0A, 0x32, 0x0B, 0x3B, 0x0D, 0x15, 0x3D, 0x3E, 0x1F, 0x2F, 0x12,
1023 0x1A, 0x2A, 0x13, 0x1B, 0x2B, 0x33, 0x1D, 0x2D, 0x35, 0x16, 0x1E, 0x2E,
1025 /* Table set B, code table 0, wordlen 4 - 121 entries */
1026 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
1027 0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30,
1028 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3,
1029 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD,
1030 0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52,
1031 0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4,
1032 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C,
1033 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F,
1034 0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5,
1035 0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44,
1037 /* Table set B, code table 0, wordlen 5 - 225 entries */
1038 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02,
1039 0x0E, 0x30, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F,
1040 0xEF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0x32, 0xD2,
1041 0xE2, 0x13, 0x23, 0xE3, 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x1D,
1042 0x2D, 0xFD, 0x2E, 0x3E, 0xEE, 0x3F, 0xDF, 0x50, 0xB0, 0x41, 0x51, 0x61,
1043 0x71, 0x91, 0xA1, 0xB1, 0xC1, 0x42, 0x62, 0x72, 0x92, 0xA2, 0xC2, 0x33,
1044 0x93, 0xA3, 0xD3, 0x14, 0x24, 0xE4, 0xF4, 0x05, 0x15, 0xF5, 0x16, 0x26,
1045 0xD6, 0xE6, 0xF6, 0x17, 0x27, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xE9,
1046 0xF9, 0x1A, 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x1C, 0x2C, 0xEC, 0xFC,
1047 0x3D, 0x7D, 0x9D, 0xDD, 0xED, 0x4E, 0x6E, 0x7E, 0x9E, 0xAE, 0xCE, 0xDE,
1048 0x4F, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0xB2, 0x43, 0x53,
1049 0x63, 0x73, 0xB3, 0xC3, 0x34, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4,
1050 0xD4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xD5, 0xE5, 0x36, 0x46, 0x56,
1051 0x66, 0xA6, 0xB6, 0xC6, 0x37, 0x47, 0x57, 0xB7, 0xC7, 0x49, 0x59, 0x69,
1052 0xB9, 0xC9, 0xD9, 0x3A, 0x4A, 0x5A, 0x6A, 0xAA, 0xBA, 0xCA, 0xDA, 0x2B,
1053 0x3B, 0x6B, 0x7B, 0x9B, 0xAB, 0xDB, 0xEB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C,
1054 0xAC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0xAD, 0xBD, 0xCD, 0x5E, 0xBE, 0x54,
1055 0x45, 0x55, 0xB5, 0xC5, 0x76, 0x96, 0x67, 0x77, 0x97, 0xA7, 0x79, 0x99,
1056 0xA9, 0x7A, 0x9A, 0x4B, 0x5B, 0xBB, 0xCB, 0x5C, 0xBC,
1057 /* Table set B, code table 0, wordlen 7 - 63 entries */
1058 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07,
1059 0x08, 0x38, 0x39, 0x3A, 0x3B, 0x09, 0x0A, 0x0B, 0x0C, 0x19, 0x1A, 0x1B,
1060 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x33,
1061 0x34, 0x35, 0x36, 0x37, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x2D,
1062 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29,
1064 /* Table set B, code table 1, wordlen 2 - 81 entries */
1065 0x00, 0x40, 0x04, 0x01, 0x10, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
1066 0x05, 0x45, 0x15, 0x55, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64,
1067 0x08, 0x48, 0x18, 0x81, 0x91, 0x61, 0x85, 0x95, 0x25, 0x65, 0x09, 0x49,
1068 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0xA4, 0x58,
1069 0x68, 0x21, 0xA5, 0x29, 0x69, 0x1A, 0x5A, 0xA0, 0x88, 0x98, 0x28, 0xA1,
1070 0x89, 0x99, 0xA9, 0x92, 0x22, 0x62, 0x86, 0x96, 0x26, 0x66, 0x0A, 0x4A,
1071 0x6A, 0xA8, 0x82, 0xA2, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA,
1072 /* Table set B, code table 1, wordlen 4 - 121 entries */
1073 0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02,
1074 0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B,
1075 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1,
1076 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C,
1077 0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42,
1078 0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35,
1079 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD,
1080 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3,
1081 0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C,
1082 0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B,
1084 /* Table set B, code table 1, wordlen 6 - 256 entries */
1085 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22,
1086 0x32, 0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x42, 0x52, 0x33, 0x43,
1087 0x04, 0x24, 0x34, 0x15, 0x25, 0x16, 0x50, 0x60, 0x70, 0x71, 0x81, 0xD1,
1088 0xE1, 0x62, 0x72, 0x82, 0xD2, 0x53, 0x63, 0x73, 0xD3, 0x44, 0x54, 0x05,
1089 0x35, 0x45, 0x55, 0x06, 0x26, 0x36, 0x07, 0x17, 0x27, 0x37, 0x18, 0x28,
1090 0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x2E, 0x1F, 0x80, 0x90, 0xD0, 0xE0, 0xF0,
1091 0x91, 0xA1, 0xB1, 0xC1, 0xF1, 0x92, 0xA2, 0xB2, 0xC2, 0xE2, 0xF2, 0x83,
1092 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0x94, 0xD4, 0xE4, 0xF4,
1093 0x65, 0x75, 0x85, 0xD5, 0xE5, 0x46, 0x56, 0x66, 0x76, 0xD6, 0xE6, 0x47,
1094 0x57, 0x67, 0xD7, 0x08, 0x38, 0x48, 0x58, 0x09, 0x29, 0x39, 0x49, 0x0A,
1095 0x1A, 0x2A, 0x3A, 0x1B, 0x2B, 0x0C, 0x1C, 0x2C, 0x3C, 0x0D, 0x4D, 0x5D,
1096 0x6D, 0x7D, 0x0E, 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x2F, 0x3F, 0x4F, 0xA0,
1097 0xB0, 0xC0, 0xB3, 0xA4, 0xB4, 0xC4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5, 0x86,
1098 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xE7, 0xF7,
1099 0x68, 0x78, 0x88, 0x98, 0xD8, 0xE8, 0xF8, 0x59, 0x69, 0x79, 0x89, 0xD9,
1100 0xE9, 0xF9, 0x4A, 0x5A, 0x6A, 0x7A, 0xDA, 0xEA, 0x0B, 0x3B, 0x4B, 0x5B,
1101 0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0xDC, 0x8D, 0x9D, 0xAD, 0xBD,
1102 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xB7,
1103 0xA8, 0xB8, 0xC8, 0x99, 0xA9, 0xB9, 0xC9, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA,
1104 0xFA, 0x6B, 0x7B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xFB, 0x9C, 0xAC, 0xBC,
1105 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xAF, 0xBF,
1106 0xCF, 0xDF, 0xEF, 0xFF,
1107 /* Table set B, code table 2, wordlen 6 - 256 entries */
1108 0x00, 0x01, 0x10, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x22, 0x03,
1109 0x13, 0x40, 0x41, 0x51, 0x32, 0x42, 0x23, 0x33, 0x04, 0x14, 0x24, 0x15,
1110 0x50, 0x61, 0x71, 0xD1, 0xE1, 0x52, 0x62, 0xD2, 0x43, 0x53, 0xD3, 0x34,
1111 0x44, 0x05, 0x25, 0x35, 0x06, 0x16, 0x26, 0x17, 0x18, 0x1D, 0x2D, 0x3D,
1112 0x1E, 0x2E, 0x60, 0x70, 0x80, 0xD0, 0xE0, 0xF0, 0x81, 0x91, 0xA1, 0xC1,
1113 0xF1, 0x72, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x63, 0x73, 0xE3, 0xF3, 0x54,
1114 0x64, 0x74, 0xD4, 0xE4, 0xF4, 0x45, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x36,
1115 0x46, 0x56, 0xD6, 0xE6, 0x07, 0x27, 0x37, 0x47, 0xD7, 0x08, 0x28, 0x38,
1116 0x19, 0x29, 0x1A, 0x1B, 0x1C, 0x2C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x0E,
1117 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x90, 0xA0, 0xC0,
1118 0xB1, 0xA2, 0xB2, 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0x84, 0x94, 0xA4, 0xC4,
1119 0x75, 0x85, 0x95, 0xC5, 0x66, 0x76, 0x86, 0x96, 0xC6, 0xF6, 0x57, 0x67,
1120 0x77, 0xE7, 0xF7, 0x48, 0x58, 0x68, 0x78, 0xD8, 0xE8, 0xF8, 0x09, 0x39,
1121 0x49, 0x59, 0xD9, 0xE9, 0xF9, 0x0A, 0x2A, 0x3A, 0x4A, 0xDA, 0xEA, 0x0B,
1122 0x2B, 0x3B, 0xDB, 0xEB, 0x0C, 0x3C, 0x4C, 0x5C, 0x6C, 0xDC, 0x8D, 0x9D,
1123 0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x5F, 0x6F, 0x7F,
1124 0x8F, 0x9F, 0xAF, 0xB0, 0xB4, 0xA5, 0xB5, 0xA6, 0xB6, 0x87, 0x97, 0xA7,
1125 0xB7, 0xC7, 0x88, 0x98, 0xA8, 0xC8, 0x69, 0x79, 0x89, 0x99, 0xA9, 0xC9,
1126 0x5A, 0x6A, 0x7A, 0x9A, 0xCA, 0xFA, 0x4B, 0x5B, 0x6B, 0x7B, 0xCB, 0xFB,
1127 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xDE,
1128 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xB8, 0xB9, 0x8A, 0xAA, 0xBA, 0x8B,
1129 0x9B, 0xAB, 0xBB, 0xFF,
1130 /* Table set B, code table 3, wordlen 2 - 81 entries */
1131 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x41, 0x11, 0x05, 0x80,
1132 0x54, 0x51, 0x45, 0x15, 0x55, 0x02, 0x90, 0x20, 0x60, 0x84, 0x24, 0x08,
1133 0x18, 0x09, 0x12, 0x06, 0xA0, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21,
1134 0x61, 0x85, 0x95, 0x25, 0x65, 0x49, 0x19, 0x59, 0x42, 0x52, 0x46, 0x16,
1135 0x56, 0x0A, 0xA4, 0x28, 0x68, 0xA1, 0xA5, 0x29, 0x69, 0x26, 0x4A, 0x1A,
1136 0x5A, 0x88, 0x98, 0xA8, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86,
1137 0x96, 0x66, 0x9A, 0x2A, 0x6A, 0xA2, 0xA6, 0x8A, 0xAA,
1138 /* Table set B, code table 3, wordlen 3 - 256 entries */
1139 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51,
1140 0x05, 0x45, 0x15, 0x55, 0x20, 0x95, 0x65, 0x49, 0x59, 0x52, 0x46, 0x16,
1141 0x80, 0x90, 0x60, 0x84, 0x94, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18, 0x58,
1142 0x81, 0x91, 0x21, 0x61, 0x85, 0x25, 0x09, 0x19, 0x69, 0x02, 0x42, 0x12,
1143 0x06, 0x56, 0x5A, 0x57, 0xD0, 0x74, 0x68, 0x5C, 0xC1, 0xD5, 0xA5, 0xE5,
1144 0x75, 0xB5, 0xF5, 0x99, 0xD9, 0xA9, 0xE9, 0x79, 0xB9, 0xF9, 0x1D, 0x5D,
1145 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x82, 0x92, 0xD2, 0x62,
1146 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 0x76, 0xB6, 0xF6, 0x0A, 0x4A, 0x1A,
1147 0x9A, 0xDA, 0x2A, 0x6A, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA, 0x5E, 0x9E, 0xDE,
1148 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x03, 0x13, 0x53, 0x17, 0x97, 0xD7,
1149 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B, 0xAB, 0xEB,
1150 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xBF, 0xFF,
1151 0xC0, 0xA0, 0xE0, 0x30, 0xC4, 0xD4, 0xE4, 0x34, 0xB4, 0xF4, 0x88, 0xC8,
1152 0x98, 0xD8, 0x28, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, 0x0C, 0x4C, 0x1C,
1153 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x7C, 0xBC, 0xFC, 0xD1, 0xA1, 0xE1, 0x31,
1154 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x4D, 0x8D,
1155 0xCD, 0x2D, 0x3D, 0x22, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36,
1156 0x8A, 0xCA, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x43, 0x83,
1157 0x93, 0xD3, 0x23, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x07, 0x47, 0x87,
1158 0xC7, 0x27, 0x37, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x4F, 0x8F, 0xCF,
1159 0x1F, 0x70, 0xB0, 0xF0, 0x8C, 0xCC, 0x2C, 0x3C, 0xC2, 0x32, 0xC3, 0x0F,
1160 0x2F, 0x3F, 0x33, 0x0B,
1161 /* Table set B, code table 3, wordlen 5 - 225 entries */
1162 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 0xFF, 0x20,
1163 0xE0, 0x21, 0xF2, 0xFE, 0xEF, 0x30, 0xD0, 0xE1, 0x12, 0x22, 0xE2, 0x03,
1164 0x0D, 0x1D, 0x1E, 0x2E, 0xEE, 0x2F, 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0,
1165 0xB0, 0xC0, 0x31, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0xD2, 0x13, 0xE3, 0xF3,
1166 0x04, 0x05, 0x06, 0x07, 0x17, 0xF7, 0x09, 0x19, 0x0A, 0x1A, 0xFA, 0x0C,
1167 0x1C, 0x2D, 0xED, 0xFD, 0x3E, 0x7E, 0xDE, 0x3F, 0x6F, 0x7F, 0x9F, 0xAF,
1168 0xCF, 0x50, 0x41, 0x51, 0x61, 0xA1, 0xB1, 0x62, 0x72, 0x92, 0xA2, 0xC2,
1169 0x23, 0x33, 0x63, 0x73, 0x93, 0xA3, 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4,
1170 0xF4, 0x15, 0xF5, 0x16, 0x26, 0xD6, 0xE6, 0xF6, 0x27, 0x37, 0x47, 0xE7,
1171 0x29, 0x39, 0xC9, 0xD9, 0xE9, 0xF9, 0x2A, 0xEA, 0x0B, 0x1B, 0xFB, 0x2C,
1172 0x7C, 0xEC, 0xFC, 0x3D, 0x4D, 0x6D, 0x7D, 0xDD, 0x4E, 0x5E, 0x6E, 0x9E,
1173 0xAE, 0xCE, 0x4F, 0x5F, 0x42, 0x52, 0xB2, 0x43, 0xB3, 0xC3, 0x44, 0x64,
1174 0x74, 0x94, 0xA4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xE5, 0x36, 0x46,
1175 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0xA7, 0xB7, 0xC7, 0xD7, 0x59,
1176 0xA9, 0xB9, 0x3A, 0x4A, 0x6A, 0xCA, 0xDA, 0x2B, 0x3B, 0x6B, 0x9B, 0xAB,
1177 0xDB, 0xEB, 0x3C, 0x6C, 0x9C, 0xAC, 0xCC, 0xDC, 0x5D, 0x9D, 0xAD, 0xBD,
1178 0xCD, 0xBE, 0xBF, 0x53, 0x54, 0xB4, 0xC4, 0x45, 0x55, 0xB5, 0xC5, 0xD5,
1179 0x56, 0x67, 0x77, 0x97, 0x49, 0x69, 0x79, 0x99, 0x5A, 0x7A, 0x9A, 0xAA,
1180 0xBA, 0x4B, 0x5B, 0x7B, 0xBB, 0xCB, 0x4C, 0x5C, 0xBC,
1181 /* Table set B, code table 3, wordlen 7 - 63 entries */
1182 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x3D, 0x04, 0x05, 0x06, 0x3A, 0x3B,
1183 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x22, 0x23,
1184 0x25, 0x26, 0x27, 0x37, 0x38, 0x39, 0x0B, 0x0D, 0x0E, 0x0F, 0x1E, 0x1F,
1185 0x21, 0x24, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0C, 0x10, 0x11, 0x12,
1186 0x13, 0x15, 0x29, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x14, 0x16, 0x17,
1188 /* Table set B, code table 4, wordlen 1 - 81 entries */
1189 0x00, 0x01, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x03, 0x50, 0xD0, 0x70,
1190 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D,
1191 0xC3, 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0x54, 0x74, 0xDC,
1192 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0x37, 0x3F, 0xD4, 0xF4, 0x5C, 0x7C, 0x51,
1193 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0xF3,
1194 0x47, 0xC7, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xFF, 0xD5, 0x75, 0xF5,
1195 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F,
1196 /* Table set B, code table 4, wordlen 2 - 25 entries */
1197 0x00, 0x07, 0x08, 0x38, 0x01, 0x39, 0x0F, 0x10, 0x09, 0x3F, 0x30, 0x31,
1198 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16,
1200 /* Table set B, code table 4, wordlen 3 - 49 entries */
1201 0x00, 0x07, 0x08, 0x38, 0x01, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x31,
1202 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x18, 0x28, 0x11, 0x19, 0x29, 0x0A,
1203 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x3E, 0x1F, 0x2F, 0x12, 0x1A, 0x2A,
1204 0x32, 0x13, 0x33, 0x15, 0x35, 0x16, 0x1E, 0x2E, 0x36, 0x1B, 0x2B, 0x1D,
1206 /* Table set B, code table 4, wordlen 7 - 63 entries */
1207 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07,
1208 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x1A, 0x1B, 0x25, 0x26,
1209 0x34, 0x35, 0x36, 0x37, 0x38, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x19,
1210 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x27, 0x2E, 0x2F, 0x30,
1211 0x31, 0x32, 0x33, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 0x2A,
1213 /* Table set B, code table 5, wordlen 2 - 25 entries */
1214 0x00, 0x01, 0x08, 0x38, 0x07, 0x39, 0x0F, 0x30, 0x09, 0x3F, 0x10, 0x31,
1215 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16,
1217 /* Table set B, code table 5, wordlen 3 - 7 entries */
1218 0x00, 0x07, 0x01, 0x02, 0x03, 0x05, 0x06,
1219 /* Table set B, code table 5, wordlen 6 - 31 entries */
1220 0x00, 0x01, 0x1F, 0x02, 0x1E, 0x03, 0x04, 0x0D, 0x1D, 0x05, 0x06, 0x07,
1221 0x0E, 0x0F, 0x11, 0x12, 0x13, 0x1A, 0x1B, 0x1C, 0x08, 0x09, 0x0C, 0x14,
1222 0x15, 0x16, 0x17, 0x18, 0x19, 0x0A, 0x0B,
1223 /* Table set B, code table 6, wordlen 2 - 81 entries */
1224 0x00, 0x40, 0x01, 0x10, 0x04, 0x02, 0x80, 0x50, 0x90, 0x05, 0x06, 0x20,
1225 0x60, 0x44, 0x14, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0xA0,
1226 0x84, 0x94, 0x64, 0xA4, 0x28, 0x51, 0x45, 0x55, 0x19, 0x12, 0x16, 0x0A,
1227 0x1A, 0x48, 0x58, 0x68, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65,
1228 0x49, 0x59, 0x29, 0x69, 0x42, 0x46, 0x56, 0x88, 0x98, 0xA8, 0xA1, 0xA5,
1229 0x99, 0xA9, 0x52, 0x22, 0x26, 0x66, 0x4A, 0x5A, 0x2A, 0x6A, 0x89, 0x82,
1230 0x92, 0x62, 0x86, 0x96, 0xA6, 0x8A, 0xAA, 0xA2, 0x9A,
1231 /* Table set B, code table 6, wordlen 3 - 7 entries */
1232 0x00, 0x01, 0x07, 0x02, 0x03, 0x05, 0x06,
1233 /* Table set B, code table 6, wordlen 4 - 6 entries */
1234 0x01, 0x00, 0x02, 0x05, 0x03, 0x04,
1235 /* Table set B, code table 6, wordlen 5 - 225 entries */
1236 0x00, 0xF0, 0x01, 0x10, 0x0F, 0x11, 0xF1, 0x20, 0xE0, 0x02, 0x0E, 0x1F,
1237 0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x07, 0x0A, 0x0D, 0x1E, 0xFE, 0x2F,
1238 0xEF, 0x30, 0x70, 0x90, 0xA0, 0xC0, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0x92,
1239 0xE2, 0x03, 0x13, 0x63, 0x04, 0x06, 0xE6, 0xE7, 0xF7, 0x09, 0x19, 0x39,
1240 0xFA, 0x0C, 0x1C, 0xDD, 0xED, 0xFD, 0x2E, 0x7E, 0x9E, 0x3F, 0x9F, 0x40,
1241 0x50, 0x60, 0xB0, 0x31, 0x41, 0x61, 0xA1, 0xB1, 0x22, 0x42, 0x72, 0xA2,
1242 0xB2, 0xC2, 0xD2, 0x23, 0x33, 0x73, 0xA3, 0xC3, 0xD3, 0xE3, 0xF3, 0x14,
1243 0x24, 0x34, 0x44, 0x74, 0xD4, 0xE4, 0x05, 0x25, 0x45, 0x65, 0x95, 0xA5,
1244 0x16, 0x26, 0x46, 0x76, 0xA6, 0xB6, 0xC6, 0xD6, 0xF6, 0x17, 0x27, 0x37,
1245 0x47, 0x67, 0xA7, 0xD7, 0x29, 0x69, 0xB9, 0xD9, 0xE9, 0xF9, 0x1A, 0x2A,
1246 0x3A, 0x9A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0x3B, 0x6B, 0xEB, 0xFB, 0x2C,
1247 0x6C, 0xEC, 0xFC, 0x1D, 0x2D, 0x4D, 0x6D, 0x9D, 0xAD, 0x3E, 0x4E, 0x6E,
1248 0xAE, 0xCE, 0xEE, 0x4F, 0x5F, 0x6F, 0xDF, 0x51, 0x52, 0x62, 0x43, 0x93,
1249 0xB3, 0x54, 0x94, 0xA4, 0xF4, 0x15, 0x75, 0xB5, 0xE5, 0xF5, 0x36, 0x56,
1250 0x66, 0x96, 0x57, 0x77, 0x49, 0x59, 0xA9, 0xC9, 0x4A, 0x5A, 0x6A, 0x7A,
1251 0xAA, 0xBA, 0x2B, 0x4B, 0x7B, 0x9B, 0xAB, 0xDB, 0x3C, 0x4C, 0x7C, 0x9C,
1252 0xAC, 0xBC, 0xCC, 0x3D, 0x5D, 0x7D, 0xBD, 0xCD, 0x5E, 0xBE, 0xDE, 0xBF,
1253 0xCF, 0x53, 0x64, 0xB4, 0xC4, 0x35, 0x55, 0xC5, 0xD5, 0x97, 0xB7, 0xC7,
1254 0x79, 0x99, 0x5B, 0xBB, 0xCB, 0x5C, 0xDC, 0x7F, 0xAF,
1255 /* Table set B, code table 6, wordlen 6 - 256 entries */
1256 0x00, 0x10, 0x01, 0x11, 0x21, 0x02, 0x12, 0x20, 0x22, 0x13, 0x30, 0x31,
1257 0x41, 0xD1, 0xE1, 0x32, 0x52, 0x03, 0x23, 0x2D, 0x40, 0x50, 0x60, 0x80,
1258 0xD0, 0xE0, 0x51, 0x61, 0xF1, 0x42, 0x62, 0xD2, 0xE2, 0xF2, 0x33, 0x43,
1259 0xC3, 0xD3, 0xE3, 0x04, 0x14, 0xD4, 0xF4, 0x25, 0x35, 0x16, 0x17, 0xF7,
1260 0xD8, 0x1C, 0x3C, 0x0D, 0x1D, 0x3D, 0x5D, 0x0E, 0x1E, 0x2E, 0x7E, 0x2F,
1261 0xC0, 0xF0, 0x71, 0x81, 0x91, 0xC1, 0x72, 0x82, 0x92, 0xB2, 0xC2, 0x53,
1262 0x63, 0x73, 0x93, 0xA3, 0xF3, 0x24, 0x44, 0x64, 0x84, 0xA4, 0xB4, 0x05,
1263 0x15, 0x95, 0xD5, 0x06, 0x26, 0x36, 0x46, 0x96, 0xD6, 0xE6, 0xF6, 0x07,
1264 0x27, 0x37, 0xD7, 0xE7, 0x08, 0x18, 0x28, 0x38, 0xE8, 0xF8, 0x09, 0x19,
1265 0x29, 0xE9, 0xF9, 0x0A, 0x1A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0xDB, 0xEB,
1266 0xFB, 0x2C, 0x4C, 0x5C, 0x7C, 0x8C, 0x4D, 0x6D, 0x8D, 0x9D, 0xFD, 0x3E,
1267 0x5E, 0x6E, 0x8E, 0x9E, 0xEE, 0x0F, 0x1F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
1268 0xCF, 0x70, 0xA1, 0xA2, 0x83, 0xB3, 0x34, 0x74, 0xC4, 0xE4, 0x55, 0x65,
1269 0x85, 0xA5, 0xC5, 0xE5, 0xF5, 0x56, 0x66, 0x76, 0x86, 0xA6, 0xC6, 0x57,
1270 0x67, 0x77, 0x97, 0xA7, 0x48, 0x88, 0x98, 0x49, 0x59, 0x79, 0x99, 0x3A,
1271 0x4A, 0x8A, 0xBA, 0xFA, 0x2B, 0x7B, 0x0C, 0xAC, 0xBC, 0xCC, 0xEC, 0x7D,
1272 0xAD, 0xBD, 0xDD, 0x4E, 0xBE, 0xCE, 0xFE, 0x8F, 0x9F, 0xAF, 0xBF, 0xDF,
1273 0xEF, 0xFF, 0x90, 0xA0, 0xB0, 0xB1, 0x54, 0x94, 0x45, 0x75, 0xB5, 0xB6,
1274 0x47, 0x87, 0xB7, 0xC7, 0x58, 0x68, 0x78, 0xA8, 0xB8, 0xC8, 0x39, 0x69,
1275 0x89, 0xA9, 0xB9, 0xC9, 0xD9, 0x2A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0x3B,
1276 0x4B, 0x5B, 0x6B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0x6C, 0x9C, 0xDC, 0xFC,
1277 0xCD, 0xED, 0xAE, 0xDE,
1278 /* Table set B, code table 6, wordlen 7 - 63 entries */
1279 0x00, 0x01, 0x3F, 0x3E, 0x02, 0x03, 0x3C, 0x3D, 0x04, 0x05, 0x06, 0x07,
1280 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x34, 0x35, 0x36, 0x37,
1281 0x38, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
1282 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2E, 0x2F, 0x30,
1283 0x31, 0x32, 0x33, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 0x2A,
1285 /* Table set B, code table 7, wordlen 1 - 81 entries */
1286 0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70,
1287 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D,
1288 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0xC3, 0x54, 0x74, 0xDC,
1289 0xFC, 0xF1, 0xC5, 0x15, 0x1D, 0x53, 0xC7, 0x37, 0x4F, 0x3F, 0xD4, 0xF4,
1290 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0x45, 0x55, 0x35, 0x4D, 0xCD, 0xDD, 0x3D,
1291 0xD3, 0x73, 0xF3, 0x47, 0x17, 0x77, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5,
1292 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F,
1293 /* Table set B, code table 7, wordlen 3 - 256 entries */
1294 0x00, 0x40, 0x10, 0x04, 0x01, 0x05, 0x50, 0x14, 0x54, 0x41, 0x11, 0x51,
1295 0x45, 0x15, 0x55, 0x44, 0x95, 0x6A, 0x03, 0x80, 0xC0, 0x90, 0xD0, 0x94,
1296 0xD4, 0x24, 0x64, 0x58, 0x91, 0xA1, 0x85, 0xD5, 0x25, 0x65, 0xA5, 0xE5,
1297 0x75, 0xB5, 0xF5, 0x19, 0x59, 0x99, 0xD9, 0x69, 0xA9, 0xE9, 0x79, 0xB9,
1298 0xF9, 0x4D, 0x5D, 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x02,
1299 0x42, 0x52, 0x06, 0x46, 0x16, 0x56, 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6,
1300 0x76, 0xB6, 0xF6, 0x1A, 0x5A, 0x9A, 0xDA, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA,
1301 0x5E, 0x9E, 0xDE, 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x07, 0x47, 0x57,
1302 0x97, 0xD7, 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B,
1303 0xAB, 0xEB, 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F,
1304 0xBF, 0xFF, 0x20, 0x60, 0x70, 0xB0, 0xF0, 0x84, 0xC4, 0xA4, 0xE4, 0x74,
1305 0xB4, 0xF4, 0x08, 0x88, 0x18, 0x98, 0xD8, 0x68, 0xA8, 0xE8, 0x78, 0xB8,
1306 0xF8, 0x1C, 0x5C, 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC,
1307 0x81, 0xD1, 0x21, 0x61, 0xE1, 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x09, 0x49,
1308 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x8D, 0xCD, 0x1D, 0x2D, 0x3D, 0x92, 0xD2,
1309 0x22, 0x62, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 0x0A, 0x4A,
1310 0x8A, 0xCA, 0x2A, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x13,
1311 0x53, 0x93, 0xD3, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x87, 0xC7, 0x17,
1312 0x27, 0x37, 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x0F, 0x4F, 0x8F,
1313 0xCF, 0x1F, 0x2F, 0x3F, 0xA0, 0xE0, 0x30, 0x34, 0x48, 0xC8, 0x28, 0x38,
1314 0x0C, 0x4C, 0x8C, 0xCC, 0x2C, 0xC1, 0x31, 0x82, 0xC2, 0x12, 0x32, 0x43,
1315 0x83, 0xC3, 0x23, 0x33,
1316 /* Table set B, code table 7, wordlen 4 - 11 entries */
1317 0x00, 0x01, 0x0F, 0x02, 0x0E, 0x05, 0x0D, 0x03, 0x04, 0x0B, 0x0C,
1318 /* Table set B, code table 7, wordlen 5 - 225 entries */
1319 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x20, 0xE0, 0x11, 0xF1, 0x02, 0x0E, 0x1F,
1320 0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF,
1321 0x30, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0xE2, 0x13,
1322 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0C, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F, 0xDF,
1323 0x50, 0xB0, 0x41, 0x61, 0x71, 0x91, 0xA1, 0xC1, 0x32, 0x62, 0x72, 0x92,
1324 0xA2, 0xD2, 0x23, 0xD3, 0xE3, 0x14, 0xF4, 0x05, 0x16, 0x26, 0xE6, 0xF6,
1325 0x17, 0x27, 0xE7, 0xF7, 0x19, 0x29, 0xF9, 0x0A, 0x1A, 0x2A, 0xFA, 0x0B,
1326 0x1C, 0x2C, 0xFC, 0x2D, 0x3D, 0xED, 0x3E, 0x4E, 0x7E, 0x9E, 0xDE, 0x4F,
1327 0x6F, 0x7F, 0x9F, 0xAF, 0xCF, 0x51, 0xB1, 0x42, 0x52, 0xB2, 0xC2, 0x33,
1328 0x63, 0x73, 0x93, 0xA3, 0xB3, 0xC3, 0x24, 0x34, 0x74, 0xA4, 0xD4, 0xE4,
1329 0x15, 0x25, 0x65, 0x95, 0xE5, 0xF5, 0x36, 0xD6, 0x37, 0x47, 0xC7, 0xD7,
1330 0x39, 0x59, 0xB9, 0xC9, 0xD9, 0xE9, 0x3A, 0x6A, 0xDA, 0xEA, 0x1B, 0x2B,
1331 0x9B, 0xAB, 0xEB, 0xFB, 0x6C, 0x7C, 0x9C, 0xAC, 0xEC, 0x4D, 0x6D, 0x7D,
1332 0x9D, 0xAD, 0xBD, 0xDD, 0x5E, 0x6E, 0xAE, 0xCE, 0x5F, 0x43, 0x53, 0x44,
1333 0x54, 0x64, 0x94, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0x75, 0xA5, 0xB5, 0xC5,
1334 0xD5, 0x46, 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0x67, 0x77,
1335 0x97, 0xA7, 0xB7, 0x49, 0x69, 0x79, 0x99, 0xA9, 0x4A, 0x5A, 0x7A, 0x9A,
1336 0xAA, 0xBA, 0xCA, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0xBB, 0xCB, 0xDB, 0x3C,
1337 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0x5D, 0xCD, 0xBE, 0xBF,
1338 /* Table set B, code table 7, wordlen 7 - 63 entries */
1339 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x3B, 0x3C, 0x3D, 0x06,
1340 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x0B, 0x0C, 0x0D,
1341 0x0E, 0x0F, 0x10, 0x2F, 0x31, 0x32, 0x33, 0x34, 0x35, 0x11, 0x12, 0x13,
1342 0x14, 0x2D, 0x2E, 0x30, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x25,
1343 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x1C, 0x1D, 0x1E, 0x23, 0x1F,
1345 /* Table set B, code table 7, wordlen 7 - 8 entries */
1346 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1347 /* Table set B, code table 7, wordlen 7 - 8 entries */
1348 0x00, 0x01, 0x07, 0x02, 0x06, 0x03, 0x04, 0x05,
1349 /* Table set B, code table 7, wordlen 7 - 16 entries */
1350 0x07, 0x05, 0x08, 0x06, 0x09, 0x04, 0x0A, 0x0B, 0x00, 0x01, 0x02, 0x03,
1351 0x0C, 0x0D, 0x0E, 0x0F,
1352 /* Table set B, code table 7, wordlen 7 - 15 entries */
1353 0x0F, 0x0E, 0x01, 0x0D, 0x02, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07, 0x08,
1355 /* Table set B, code table 7, wordlen 7 - 16 entries */
1356 0x00, 0x01, 0x0E, 0x0F, 0x02, 0x0D, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07,
1357 0x08, 0x09, 0x0A, 0x0B,
1358 /* Table set B, code table 7, wordlen 7 - 16 entries */
1359 0x00, 0x01, 0x0F, 0x0E, 0x02, 0x0D, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07,
1360 0x08, 0x09, 0x0A, 0x0B,
1361 /* Table set B, code table 7, wordlen 7 - 32 entries */
1362 0x00, 0x01, 0x1F, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x1A, 0x1B, 0x1C,
1363 0x1D, 0x1E, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11,
1364 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
1365 /* Table set B, code table 7, wordlen 7 - 31 entries */
1366 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
1367 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
1368 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
1369 /* Table set B, code table 7, wordlen 7 - 32 entries */
1370 0x00, 0x1C, 0x1D, 0x01, 0x02, 0x03, 0x04, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
1371 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B,
1372 0x1E, 0x1F, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,
1373 /* Table set B, code table 7, wordlen 7 - 31 entries */
1374 0x02, 0x03, 0x04, 0x05, 0x06, 0x01, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
1375 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
1376 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
1377 /* Table set B, code table 7, wordlen 7 - 32 entries */
1378 0x00, 0x01, 0x02, 0x1F, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x1D, 0x1E,
1379 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14,
1380 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C,
1381 /* Table set B, code table 7, wordlen 7 - 16 entries */
1382 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
1383 0x0C, 0x0D, 0x0E, 0x0F,
1384 /* Table set B, code table 7, wordlen 7 - 8 entries */
1385 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1386 /* Table set B, code table 7, wordlen 7 - 8 entries */
1387 0x00, 0x01, 0x07, 0x02, 0x03, 0x04, 0x05, 0x06,
1388 /* Table set B, code table 7, wordlen 7 - 32 entries */
1389 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x05, 0x06,
1390 0x07, 0x12, 0x13, 0x14, 0x15, 0x16, 0x04, 0x17, 0x18, 0x19, 0x1A, 0x1B,
1391 0x00, 0x01, 0x02, 0x03, 0x1C, 0x1D, 0x1E, 0x1F,
1392 /* Table set B, code table 7, wordlen 7 - 32 entries */
1393 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x0E,
1394 0x0F, 0x10, 0x11, 0x1D, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x1E, 0x04, 0x05,
1395 0x06, 0x07, 0x08, 0x1F, 0x00, 0x01, 0x02, 0x03,
1396 /* Table set B, code table 7, wordlen 7 - 32 entries */
1397 0x00, 0x01, 0x02, 0x1F, 0x03, 0x1D, 0x1E, 0x04, 0x05, 0x06, 0x1B, 0x1C,
1398 0x07, 0x18, 0x19, 0x1A, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
1399 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1400 /* Table set B, code table 7, wordlen 7 - 256 entries */
1401 0x00, 0x01, 0xFF, 0x02, 0xFE, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0xFB,
1402 0xFC, 0xFD, 0x09, 0x0A, 0x0B, 0x0C, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0x0D,
1403 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
1404 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
1405 0x26, 0xF3, 0xF4, 0xF5, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E,
1406 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
1407 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
1408 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52,
1409 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0xC2,
1410 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE,
1411 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA,
1412 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
1413 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2,
1414 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
1415 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
1416 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81,
1417 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D,
1418 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
1419 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5,
1420 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1,
1421 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD,
1422 0xBE, 0xBF, 0xC0, 0xC1,
1425 /** Tables for spectrum coding. */
1426 typedef struct Atrac3pSpecCodeTab {
1427 uint8_t group_size; ///< number of coefficients grouped together
1428 uint8_t num_coeffs; ///< 1 - map index to a single value, > 1 - map index to a vector of values
1429 uint8_t bits; ///< number of bits a single coefficient occupy
1430 uint8_t is_signed; ///< 1 - values in that table are signed ones, otherwise - absolute ones
1431 } Atrac3pSpecCodeTab;
1433 static const Atrac3pSpecCodeTab atrac3p_spectra_tabs[112] = {
1435 /* code table = 0 */
1436 { 1, 4, 2, 1 }, // wordlen = 1
1437 { 1, 4, 2, 0 }, // wordlen = 2
1438 { 1, 2, 3, 1 }, // wordlen = 3
1439 { 1, 1, 3, 0 }, // wordlen = 4
1440 { 1, 2, 4, 1 }, // wordlen = 5
1441 { 1, 1, 4, 0 }, // wordlen = 6
1442 { 1, 1, 6, 1 }, // wordlen = 7
1444 /* code table = 1 */
1445 { 4, 4, 2, 1 }, // wordlen = 1
1446 { 1, 4, 2, 0 }, // wordlen = 2
1447 { 1, 2, 3, 1 }, // wordlen = 3
1448 { 1, 2, 4, 1 }, // wordlen = 4
1449 { 1, 2, 4, 1 }, // wordlen = 5
1450 { 1, 2, 4, 0 }, // wordlen = 6
1451 { 1, 1, 6, 1 }, // wordlen = 7
1453 /* code table = 2 */
1454 { 1, 4, 2, 1 }, // wordlen = 1
1455 { 1, 2, 3, 1 }, // wordlen = 2
1456 { 1, 2, 3, 1 }, // wordlen = 3
1457 { 1, 1, 3, 0 }, // wordlen = 4
1458 { 1, 1, 3, 0 }, // wordlen = 5
1459 { 1, 2, 4, 0 }, // wordlen = 6
1460 { 1, 1, 6, 1 }, // wordlen = 7
1462 /* code table = 3 */
1463 { 1, 2, 2, 1 }, // wordlen = 1
1464 { 1, 4, 2, 0 }, // wordlen = 2
1465 { 1, 4, 2, 0 }, // wordlen = 3
1466 { 1, 1, 3, 0 }, // wordlen = 4
1467 { 1, 2, 4, 1 }, // wordlen = 5
1468 { 1, 2, 4, 0 }, // wordlen = 6
1469 { 1, 1, 6, 1 }, // wordlen = 7
1471 /* code table = 4 */
1472 { 1, 4, 2, 1 }, // wordlen = 1
1473 { 1, 4, 2, 0 }, // wordlen = 2
1474 { 1, 1, 3, 1 }, // wordlen = 3
1475 { 1, 2, 4, 1 }, // wordlen = 4
1476 { 1, 1, 3, 0 }, // wordlen = 5
1477 { 1, 2, 4, 0 }, // wordlen = 6
1478 { 1, 1, 6, 1 }, // wordlen = 7
1480 /* code table = 5 */
1481 { 1, 4, 2, 1 }, // wordlen = 1
1482 { 1, 2, 3, 1 }, // wordlen = 2
1483 { 1, 1, 3, 1 }, // wordlen = 3
1484 { 1, 2, 4, 1 }, // wordlen = 4
1485 { 1, 1, 3, 0 }, // wordlen = 5
1486 { 1, 1, 5, 1 }, // wordlen = 6
1487 { 1, 1, 6, 1 }, // wordlen = 7
1489 /* code table = 6 */
1490 { 2, 4, 2, 1 }, // wordlen = 1
1491 { 1, 2, 3, 1 }, // wordlen = 2
1492 { 1, 4, 2, 0 }, // wordlen = 3
1493 { 1, 2, 4, 1 }, // wordlen = 4
1494 { 1, 1, 4, 1 }, // wordlen = 5
1495 { 1, 1, 5, 1 }, // wordlen = 6
1496 { 1, 1, 6, 1 }, // wordlen = 7
1498 /* code table = 7 */
1499 { 1, 2, 1, 0 }, // wordlen = 1
1500 { 2, 4, 2, 0 }, // wordlen = 2
1501 { 1, 2, 3, 1 }, // wordlen = 3
1502 { 1, 2, 4, 1 }, // wordlen = 4
1503 { 1, 1, 4, 1 }, // wordlen = 5
1504 { 2, 2, 4, 0 }, // wordlen = 6
1505 { 4, 1, 6, 1 }, // wordlen = 7
1508 /* code table = 0 */
1509 { 4, 4, 2, 1 }, // wordlen = 1
1510 { 1, 4, 2, 0 }, // wordlen = 2
1511 { 4, 2, 3, 1 }, // wordlen = 3
1512 { 1, 2, 4, 1 }, // wordlen = 4
1513 { 1, 2, 4, 1 }, // wordlen = 5
1514 { 1, 1, 4, 0 }, // wordlen = 6
1515 { 1, 1, 6, 1 }, // wordlen = 7
1517 /* code table = 1 */
1518 { 1, 4, 2, 1 }, // wordlen = 1
1519 { 1, 4, 2, 0 }, // wordlen = 2
1520 { 1, 2, 3, 1 }, // wordlen = 3
1521 { 1, 2, 4, 1 }, // wordlen = 4
1522 { 1, 2, 4, 1 }, // wordlen = 5
1523 { 1, 2, 4, 0 }, // wordlen = 6
1524 { 1, 1, 6, 1 }, // wordlen = 7
1526 /* code table = 2 */
1527 { 4, 4, 2, 1 }, // wordlen = 1
1528 { 4, 4, 2, 0 }, // wordlen = 2
1529 { 1, 2, 3, 1 }, // wordlen = 3
1530 { 1, 2, 4, 1 }, // wordlen = 4
1531 { 2, 2, 4, 1 }, // wordlen = 5
1532 { 2, 2, 4, 0 }, // wordlen = 6
1533 { 4, 1, 6, 1 }, // wordlen = 7
1535 /* code table = 3 */
1536 { 1, 4, 2, 1 }, // wordlen = 1
1537 { 1, 4, 2, 0 }, // wordlen = 2
1538 { 1, 4, 2, 0 }, // wordlen = 3
1539 { 2, 2, 4, 1 }, // wordlen = 4
1540 { 1, 2, 4, 1 }, // wordlen = 5
1541 { 1, 2, 4, 0 }, // wordlen = 6
1542 { 1, 1, 6, 1 }, // wordlen = 7
1544 /* code table = 4 */
1545 { 1, 4, 2, 1 }, // wordlen = 1
1546 { 4, 2, 3, 1 }, // wordlen = 2
1547 { 1, 2, 3, 1 }, // wordlen = 3
1548 { 4, 2, 4, 1 }, // wordlen = 4
1549 { 1, 1, 3, 0 }, // wordlen = 5
1550 { 1, 2, 4, 0 }, // wordlen = 6
1551 { 1, 1, 6, 1 }, // wordlen = 7
1553 /* code table = 5 */
1554 { 2, 4, 2, 1 }, // wordlen = 1
1555 { 1, 2, 3, 1 }, // wordlen = 2
1556 { 4, 1, 3, 1 }, // wordlen = 3
1557 { 1, 1, 3, 0 }, // wordlen = 4
1558 { 1, 1, 3, 0 }, // wordlen = 5
1559 { 1, 1, 5, 1 }, // wordlen = 6
1560 { 2, 1, 6, 1 }, // wordlen = 7
1562 /* code table = 6 */
1563 { 1, 4, 2, 1 }, // wordlen = 1
1564 { 1, 4, 2, 0 }, // wordlen = 2
1565 { 1, 1, 3, 1 }, // wordlen = 3
1566 { 1, 1, 3, 0 }, // wordlen = 4
1567 { 4, 2, 4, 1 }, // wordlen = 5
1568 { 1, 2, 4, 0 }, // wordlen = 6
1569 { 1, 1, 6, 1 }, // wordlen = 7
1571 /* code table = 7 */
1572 { 1, 4, 2, 1 }, // wordlen = 1
1573 { 4, 4, 2, 0 }, // wordlen = 2
1574 { 4, 4, 2, 0 }, // wordlen = 3
1575 { 1, 1, 4, 1 }, // wordlen = 4
1576 { 1, 2, 4, 1 }, // wordlen = 5
1577 { 1, 1, 5, 1 }, // wordlen = 6
1578 { 1, 1, 6, 1 }, // wordlen = 7
1581 /* Huffman tables for gain control data. */
1582 static const uint8_t atrac3p_gain_cbs[][12] = {
1583 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 },
1584 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 },
1585 { 1, 0, 2, 2, 1, 2, 8, 0, 0, 0, 0, 0 },
1586 { 1, 1, 1, 1, 1, 0, 2, 0, 8, 0, 0, 0 },
1587 { 1, 0, 3, 1, 1, 0, 2, 0, 8, 0, 0, 0 },
1588 { 1, 1, 1, 1, 1, 0, 1, 2, 8, 0, 0, 0 },
1589 { 0, 1, 0, 2, 11, 18, 0, 0, 0, 0, 0, 0 },
1590 { 0, 1, 2, 4, 4, 4, 0, 16, 0, 0, 0, 0 },
1591 { 0, 0, 0, 3, 23, 6, 0, 0, 0, 0, 0, 0 },
1592 { 0, 0, 5, 3, 2, 3, 2, 16, 0, 0, 0, 0 },
1593 { 1, 0, 0, 3, 2, 6, 20, 0, 0, 0, 0, 0 },
1596 static const uint8_t atrac3p_gain_xlats[] = {
1597 /* Number of gain control points 1 - 8 entries */
1598 0, 1, 2, 3, 4, 5, 6, 7,
1599 /* Number of gain control points 2 - 8 entries */
1600 0, 1, 7, 2, 6, 3, 4, 5,
1601 /* Gain compensation level 1 - 16 entries */
1602 7, 5, 8, 6, 9, 4, 10, 11, 0, 1, 2, 3, 12, 13, 14, 15,
1603 /* Gain compensation level 2 - 15 entries */
1604 15, 14, 1, 13, 2, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11,
1605 /* Gain compensation level 3 - 16 entries */
1606 0, 1, 14, 15, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11,
1607 /* Gain compensation level 4 - 16 entries */
1608 0, 1, 15, 14, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11,
1609 /* Gain compensation location 3 - 32 entries */
1610 0, 1, 31, 2, 3, 4, 5, 6, 7, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12,
1611 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1612 /* Gain compensation location 1 - 31 entries */
1613 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1614 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1615 /* Gain compensation location 4 - 32 entries */
1616 0, 28, 29, 1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1617 23, 24, 25, 26, 27, 30, 31, 5, 6, 7, 8, 9, 10,
1618 /* Gain compensation location 2 - 31 entries */
1619 2, 3, 4, 5, 6, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1620 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1621 /* Gain compensation location 5 - 32 entries */
1622 0, 1, 2, 31, 3, 4, 5, 6, 7, 8, 29, 30, 9, 10, 11, 12, 13, 14, 15,
1623 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1626 /* Huffman tables for GHA waves data. */
1627 static const uint8_t atrac3p_tone_cbs[][12] = {
1628 { 1, 0, 1, 2, 4, 8, 0, 0, 0, 0, 0, 0 },
1629 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 },
1630 { 1, 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0 },
1631 { 0, 0, 0, 10, 8, 6, 0, 8, 0, 0, 0, 0 },
1632 { 0, 0, 0, 11, 5, 6, 6, 4, 0, 0, 0, 0 },
1633 { 0, 1, 3, 3, 1, 4, 4, 16, 0, 0, 0, 0 },
1634 { 1, 0, 0, 2, 2, 0, 9, 9, 29,104, 100, 0 },
1637 static const uint8_t atrac3p_tone_xlats[] = {
1638 /* Number of tone bands - 16 entries */
1639 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1641 /* Number of tones 1 - 8 entries */
1642 0, 1, 2, 3, 4, 5, 6, 7,
1643 /* Number of tones 2 - 8 entries */
1644 0, 1, 7, 2, 3, 4, 5, 6,
1645 /* Amplitude information 1 - 32 entries */
1646 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 5, 6, 7, 18, 19,
1647 20, 21, 22, 4, 23, 24, 25, 26, 27, 0, 1, 2, 3, 28, 29,
1649 /* Amplitude information 2 - 32 entries */
1650 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 14, 15, 16, 17,
1651 29, 9, 10, 11, 12, 13, 30, 4, 5, 6, 7, 8, 31, 0, 1,
1653 /* Amplitude information 3 - 32 entries */
1654 0, 1, 2, 31, 3, 29, 30, 4, 5, 6, 27, 28, 7, 24, 25,
1655 26, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1657 /* Frequencies - 256 entries */
1658 0, 1, 255, 2, 254, 3, 4, 5, 6, 7, 8, 251, 252, 253, 9,
1659 10, 11, 12, 246, 247, 248, 249, 250, 13, 14, 15, 16, 17, 18, 19,
1660 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1661 35, 36, 37, 38, 243, 244, 245, 39, 40, 41, 42, 43, 44, 45, 46,
1662 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1663 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1664 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1665 92, 93, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
1666 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
1667 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1668 237, 238, 239, 240, 241, 242, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1669 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1670 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
1671 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
1672 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
1673 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
1674 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1678 #endif /* AVCODEC_ATRAC3PLUS_DATA_H */