]> 4ch.mooo.com Git - 16.git/blob - src/lib/dl/ext/libmad/huffman.c
meh did some cleanings and i will work on mapread to mm thingy sometime soon! oops...
[16.git] / src / lib / dl / ext / libmad / huffman.c
1 /*
2  * libmad - MPEG audio decoder library
3  * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  *
19  * $Id: huffman.c,v 1.10 2004/01/23 09:41:32 rob Exp $
20  */
21
22 # ifdef HAVE_CONFIG_H
23 #  include "config.h"
24 # endif
25
26 # include "global.h"
27
28 # include "huffman.h"
29
30 /*
31  * These are the Huffman code words for Layer III.
32  * The data for these tables are derived from Table B.7 of ISO/IEC 11172-3.
33  *
34  * These tables support decoding up to 4 Huffman code bits at a time.
35  */
36
37 # if defined(__GNUC__) ||  \
38     (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
39 #  define PTR(offs, bits)       { .ptr   = { 0, bits, offs       } }
40 #  define V(v, w, x, y, hlen)   { .value = { 1, hlen, v, w, x, y } }
41 # else
42 #  define PTR(offs, bits)       { { 0, bits, offs } }
43 #  if defined(WORDS_BIGENDIAN)
44 #   define V(v, w, x, y, hlen)  { { 1, hlen, (v << 11) | (w << 10) |  \
45                                              (x <<  9) | (y <<  8) } }
46 #  else
47 #   define V(v, w, x, y, hlen)  { { 1, hlen, (v <<  0) | (w <<  1) |  \
48                                              (x <<  2) | (y <<  3) } }
49 #  endif
50 # endif
51
52 static
53 union huffquad const hufftabA[] = {
54   /* 0000 */ PTR(16, 2),
55   /* 0001 */ PTR(20, 2),
56   /* 0010 */ PTR(24, 1),
57   /* 0011 */ PTR(26, 1),
58   /* 0100 */ V(0, 0, 1, 0, 4),
59   /* 0101 */ V(0, 0, 0, 1, 4),
60   /* 0110 */ V(0, 1, 0, 0, 4),
61   /* 0111 */ V(1, 0, 0, 0, 4),
62   /* 1000 */ V(0, 0, 0, 0, 1),
63   /* 1001 */ V(0, 0, 0, 0, 1),
64   /* 1010 */ V(0, 0, 0, 0, 1),
65   /* 1011 */ V(0, 0, 0, 0, 1),
66   /* 1100 */ V(0, 0, 0, 0, 1),
67   /* 1101 */ V(0, 0, 0, 0, 1),
68   /* 1110 */ V(0, 0, 0, 0, 1),
69   /* 1111 */ V(0, 0, 0, 0, 1),
70
71   /* 0000 ... */
72   /* 00   */ V(1, 0, 1, 1, 2),  /* 16 */
73   /* 01   */ V(1, 1, 1, 1, 2),
74   /* 10   */ V(1, 1, 0, 1, 2),
75   /* 11   */ V(1, 1, 1, 0, 2),
76
77   /* 0001 ... */
78   /* 00   */ V(0, 1, 1, 1, 2),  /* 20 */
79   /* 01   */ V(0, 1, 0, 1, 2),
80   /* 10   */ V(1, 0, 0, 1, 1),
81   /* 11   */ V(1, 0, 0, 1, 1),
82
83   /* 0010 ... */
84   /* 0    */ V(0, 1, 1, 0, 1),  /* 24 */
85   /* 1    */ V(0, 0, 1, 1, 1),
86
87   /* 0011 ... */
88   /* 0    */ V(1, 0, 1, 0, 1),  /* 26 */
89   /* 1    */ V(1, 1, 0, 0, 1)
90 };
91
92 static
93 union huffquad const hufftabB[] = {
94   /* 0000 */ V(1, 1, 1, 1, 4),
95   /* 0001 */ V(1, 1, 1, 0, 4),
96   /* 0010 */ V(1, 1, 0, 1, 4),
97   /* 0011 */ V(1, 1, 0, 0, 4),
98   /* 0100 */ V(1, 0, 1, 1, 4),
99   /* 0101 */ V(1, 0, 1, 0, 4),
100   /* 0110 */ V(1, 0, 0, 1, 4),
101   /* 0111 */ V(1, 0, 0, 0, 4),
102   /* 1000 */ V(0, 1, 1, 1, 4),
103   /* 1001 */ V(0, 1, 1, 0, 4),
104   /* 1010 */ V(0, 1, 0, 1, 4),
105   /* 1011 */ V(0, 1, 0, 0, 4),
106   /* 1100 */ V(0, 0, 1, 1, 4),
107   /* 1101 */ V(0, 0, 1, 0, 4),
108   /* 1110 */ V(0, 0, 0, 1, 4),
109   /* 1111 */ V(0, 0, 0, 0, 4)
110 };
111
112 # undef V
113 # undef PTR
114
115 # if defined(__GNUC__) ||  \
116     (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
117 #  define PTR(offs, bits)       { .ptr   = { 0, bits, offs } }
118 #  define V(x, y, hlen)         { .value = { 1, hlen, x, y } }
119 # else
120 #  define PTR(offs, bits)       { { 0, bits, offs } }
121 #  if defined(WORDS_BIGENDIAN)
122 #   define V(x, y, hlen)        { { 1, hlen, (x << 8) | (y << 4) } }
123 #  else
124 #   define V(x, y, hlen)        { { 1, hlen, (x << 0) | (y << 4) } }
125 #  endif
126 # endif
127
128 static
129 union huffpair const hufftab0[] = {
130   /*      */ V(0, 0, 0)
131 };
132
133 static
134 union huffpair const hufftab1[] = {
135   /* 000  */ V(1, 1, 3),
136   /* 001  */ V(0, 1, 3),
137   /* 010  */ V(1, 0, 2),
138   /* 011  */ V(1, 0, 2),
139   /* 100  */ V(0, 0, 1),
140   /* 101  */ V(0, 0, 1),
141   /* 110  */ V(0, 0, 1),
142   /* 111  */ V(0, 0, 1)
143 };
144
145 static
146 union huffpair const hufftab2[] = {
147   /* 000  */ PTR(8, 3),
148   /* 001  */ V(1, 1, 3),
149   /* 010  */ V(0, 1, 3),
150   /* 011  */ V(1, 0, 3),
151   /* 100  */ V(0, 0, 1),
152   /* 101  */ V(0, 0, 1),
153   /* 110  */ V(0, 0, 1),
154   /* 111  */ V(0, 0, 1),
155
156   /* 000 ... */
157   /* 000  */ V(2, 2, 3),        /* 8 */
158   /* 001  */ V(0, 2, 3),
159   /* 010  */ V(1, 2, 2),
160   /* 011  */ V(1, 2, 2),
161   /* 100  */ V(2, 1, 2),
162   /* 101  */ V(2, 1, 2),
163   /* 110  */ V(2, 0, 2),
164   /* 111  */ V(2, 0, 2)
165 };
166
167 static
168 union huffpair const hufftab3[] = {
169   /* 000  */ PTR(8, 3),
170   /* 001  */ V(1, 0, 3),
171   /* 010  */ V(1, 1, 2),
172   /* 011  */ V(1, 1, 2),
173   /* 100  */ V(0, 1, 2),
174   /* 101  */ V(0, 1, 2),
175   /* 110  */ V(0, 0, 2),
176   /* 111  */ V(0, 0, 2),
177
178   /* 000 ... */
179   /* 000  */ V(2, 2, 3),        /* 8 */
180   /* 001  */ V(0, 2, 3),
181   /* 010  */ V(1, 2, 2),
182   /* 011  */ V(1, 2, 2),
183   /* 100  */ V(2, 1, 2),
184   /* 101  */ V(2, 1, 2),
185   /* 110  */ V(2, 0, 2),
186   /* 111  */ V(2, 0, 2)
187 };
188
189 static
190 union huffpair const hufftab5[] = {
191   /* 000  */ PTR(8, 4),
192   /* 001  */ V(1, 1, 3),
193   /* 010  */ V(0, 1, 3),
194   /* 011  */ V(1, 0, 3),
195   /* 100  */ V(0, 0, 1),
196   /* 101  */ V(0, 0, 1),
197   /* 110  */ V(0, 0, 1),
198   /* 111  */ V(0, 0, 1),
199
200   /* 000 ... */
201   /* 0000 */ PTR(24, 1),        /* 8 */
202   /* 0001 */ V(3, 2, 4),
203   /* 0010 */ V(3, 1, 3),
204   /* 0011 */ V(3, 1, 3),
205   /* 0100 */ V(1, 3, 4),
206   /* 0101 */ V(0, 3, 4),
207   /* 0110 */ V(3, 0, 4),
208   /* 0111 */ V(2, 2, 4),
209   /* 1000 */ V(1, 2, 3),
210   /* 1001 */ V(1, 2, 3),
211   /* 1010 */ V(2, 1, 3),
212   /* 1011 */ V(2, 1, 3),
213   /* 1100 */ V(0, 2, 3),
214   /* 1101 */ V(0, 2, 3),
215   /* 1110 */ V(2, 0, 3),
216   /* 1111 */ V(2, 0, 3),
217
218   /* 000 0000 ... */
219   /* 0    */ V(3, 3, 1),        /* 24 */
220   /* 1    */ V(2, 3, 1)
221 };
222
223 static
224 union huffpair const hufftab6[] = {
225   /* 0000 */ PTR(16, 3),
226   /* 0001 */ PTR(24, 1),
227   /* 0010 */ PTR(26, 1),
228   /* 0011 */ V(1, 2, 4),
229   /* 0100 */ V(2, 1, 4),
230   /* 0101 */ V(2, 0, 4),
231   /* 0110 */ V(0, 1, 3),
232   /* 0111 */ V(0, 1, 3),
233   /* 1000 */ V(1, 1, 2),
234   /* 1001 */ V(1, 1, 2),
235   /* 1010 */ V(1, 1, 2),
236   /* 1011 */ V(1, 1, 2),
237   /* 1100 */ V(1, 0, 3),
238   /* 1101 */ V(1, 0, 3),
239   /* 1110 */ V(0, 0, 3),
240   /* 1111 */ V(0, 0, 3),
241
242   /* 0000 ... */
243   /* 000  */ V(3, 3, 3),        /* 16 */
244   /* 001  */ V(0, 3, 3),
245   /* 010  */ V(2, 3, 2),
246   /* 011  */ V(2, 3, 2),
247   /* 100  */ V(3, 2, 2),
248   /* 101  */ V(3, 2, 2),
249   /* 110  */ V(3, 0, 2),
250   /* 111  */ V(3, 0, 2),
251
252   /* 0001 ... */
253   /* 0    */ V(1, 3, 1),        /* 24 */
254   /* 1    */ V(3, 1, 1),
255
256   /* 0010 ... */
257   /* 0    */ V(2, 2, 1),        /* 26 */
258   /* 1    */ V(0, 2, 1)
259 };
260
261 static
262 union huffpair const hufftab7[] = {
263   /* 0000 */ PTR(16, 4),
264   /* 0001 */ PTR(32, 4),
265   /* 0010 */ PTR(48, 2),
266   /* 0011 */ V(1, 1, 4),
267   /* 0100 */ V(0, 1, 3),
268   /* 0101 */ V(0, 1, 3),
269   /* 0110 */ V(1, 0, 3),
270   /* 0111 */ V(1, 0, 3),
271   /* 1000 */ V(0, 0, 1),
272   /* 1001 */ V(0, 0, 1),
273   /* 1010 */ V(0, 0, 1),
274   /* 1011 */ V(0, 0, 1),
275   /* 1100 */ V(0, 0, 1),
276   /* 1101 */ V(0, 0, 1),
277   /* 1110 */ V(0, 0, 1),
278   /* 1111 */ V(0, 0, 1),
279
280   /* 0000 ... */
281   /* 0000 */ PTR(52, 2),        /* 16 */
282   /* 0001 */ PTR(56, 1),
283   /* 0010 */ PTR(58, 1),
284   /* 0011 */ V(1, 5, 4),
285   /* 0100 */ V(5, 1, 4),
286   /* 0101 */ PTR(60, 1),
287   /* 0110 */ V(5, 0, 4),
288   /* 0111 */ PTR(62, 1),
289   /* 1000 */ V(2, 4, 4),
290   /* 1001 */ V(4, 2, 4),
291   /* 1010 */ V(1, 4, 3),
292   /* 1011 */ V(1, 4, 3),
293   /* 1100 */ V(4, 1, 3),
294   /* 1101 */ V(4, 1, 3),
295   /* 1110 */ V(4, 0, 3),
296   /* 1111 */ V(4, 0, 3),
297
298   /* 0001 ... */
299   /* 0000 */ V(0, 4, 4),        /* 32 */
300   /* 0001 */ V(2, 3, 4),
301   /* 0010 */ V(3, 2, 4),
302   /* 0011 */ V(0, 3, 4),
303   /* 0100 */ V(1, 3, 3),
304   /* 0101 */ V(1, 3, 3),
305   /* 0110 */ V(3, 1, 3),
306   /* 0111 */ V(3, 1, 3),
307   /* 1000 */ V(3, 0, 3),
308   /* 1001 */ V(3, 0, 3),
309   /* 1010 */ V(2, 2, 3),
310   /* 1011 */ V(2, 2, 3),
311   /* 1100 */ V(1, 2, 2),
312   /* 1101 */ V(1, 2, 2),
313   /* 1110 */ V(1, 2, 2),
314   /* 1111 */ V(1, 2, 2),
315
316   /* 0010 ... */
317   /* 00   */ V(2, 1, 1),        /* 48 */
318   /* 01   */ V(2, 1, 1),
319   /* 10   */ V(0, 2, 2),
320   /* 11   */ V(2, 0, 2),
321
322   /* 0000 0000 ... */
323   /* 00   */ V(5, 5, 2),        /* 52 */
324   /* 01   */ V(4, 5, 2),
325   /* 10   */ V(5, 4, 2),
326   /* 11   */ V(5, 3, 2),
327
328   /* 0000 0001 ... */
329   /* 0    */ V(3, 5, 1),        /* 56 */
330   /* 1    */ V(4, 4, 1),
331
332   /* 0000 0010 ... */
333   /* 0    */ V(2, 5, 1),        /* 58 */
334   /* 1    */ V(5, 2, 1),
335
336   /* 0000 0101 ... */
337   /* 0    */ V(0, 5, 1),        /* 60 */
338   /* 1    */ V(3, 4, 1),
339
340   /* 0000 0111 ... */
341   /* 0    */ V(4, 3, 1),        /* 62 */
342   /* 1    */ V(3, 3, 1)
343 };
344
345 # if 0
346 /* this version saves 8 entries (16 bytes) at the expense of
347    an extra lookup in 4 out of 36 cases */
348 static
349 union huffpair const hufftab8[] = {
350   /* 0000 */ PTR(16, 4),
351   /* 0001 */ PTR(32, 2),
352   /* 0010 */ V(1, 2, 4),
353   /* 0011 */ V(2, 1, 4),
354   /* 0100 */ V(1, 1, 2),
355   /* 0101 */ V(1, 1, 2),
356   /* 0110 */ V(1, 1, 2),
357   /* 0111 */ V(1, 1, 2),
358   /* 1000 */ V(0, 1, 3),
359   /* 1001 */ V(0, 1, 3),
360   /* 1010 */ V(1, 0, 3),
361   /* 1011 */ V(1, 0, 3),
362   /* 1100 */ V(0, 0, 2),
363   /* 1101 */ V(0, 0, 2),
364   /* 1110 */ V(0, 0, 2),
365   /* 1111 */ V(0, 0, 2),
366
367   /* 0000 ... */
368   /* 0000 */ PTR(36, 3),        /* 16 */
369   /* 0001 */ PTR(44, 2),
370   /* 0010 */ PTR(48, 1),
371   /* 0011 */ V(1, 5, 4),
372   /* 0100 */ V(5, 1, 4),
373   /* 0101 */ PTR(50, 1),
374   /* 0110 */ PTR(52, 1),
375   /* 0111 */ V(2, 4, 4),
376   /* 1000 */ V(4, 2, 4),
377   /* 1001 */ V(1, 4, 4),
378   /* 1010 */ V(4, 1, 3),
379   /* 1011 */ V(4, 1, 3),
380   /* 1100 */ V(0, 4, 4),
381   /* 1101 */ V(4, 0, 4),
382   /* 1110 */ V(2, 3, 4),
383   /* 1111 */ V(3, 2, 4),
384
385   /* 0001 ... */
386   /* 00   */ PTR(54, 2),        /* 32 */
387   /* 01   */ V(2, 2, 2),
388   /* 10   */ V(0, 2, 2),
389   /* 11   */ V(2, 0, 2),
390
391   /* 0000 0000 ... */
392   /* 000  */ V(5, 5, 3),        /* 36 */
393   /* 001  */ V(5, 4, 3),
394   /* 010  */ V(4, 5, 2),
395   /* 011  */ V(4, 5, 2),
396   /* 100  */ V(5, 3, 1),
397   /* 101  */ V(5, 3, 1),
398   /* 110  */ V(5, 3, 1),
399   /* 111  */ V(5, 3, 1),
400
401   /* 0000 0001 ... */
402   /* 00   */ V(3, 5, 2),        /* 44 */
403   /* 01   */ V(4, 4, 2),
404   /* 10   */ V(2, 5, 1),
405   /* 11   */ V(2, 5, 1),
406
407   /* 0000 0010 ... */
408   /* 0    */ V(5, 2, 1),        /* 48 */
409   /* 1    */ V(0, 5, 1),
410
411   /* 0000 0101 ... */
412   /* 0    */ V(3, 4, 1),        /* 50 */
413   /* 1    */ V(4, 3, 1),
414
415   /* 0000 0110 ... */
416   /* 0    */ V(5, 0, 1),        /* 52 */
417   /* 1    */ V(3, 3, 1),
418
419   /* 0001 00 ... */
420   /* 00   */ V(1, 3, 2),        /* 54 */
421   /* 01   */ V(3, 1, 2),
422   /* 10   */ V(0, 3, 2),
423   /* 11   */ V(3, 0, 2),
424 };
425 # else
426 static
427 union huffpair const hufftab8[] = {
428   /* 0000 */ PTR(16, 4),
429   /* 0001 */ PTR(32, 4),
430   /* 0010 */ V(1, 2, 4),
431   /* 0011 */ V(2, 1, 4),
432   /* 0100 */ V(1, 1, 2),
433   /* 0101 */ V(1, 1, 2),
434   /* 0110 */ V(1, 1, 2),
435   /* 0111 */ V(1, 1, 2),
436   /* 1000 */ V(0, 1, 3),
437   /* 1001 */ V(0, 1, 3),
438   /* 1010 */ V(1, 0, 3),
439   /* 1011 */ V(1, 0, 3),
440   /* 1100 */ V(0, 0, 2),
441   /* 1101 */ V(0, 0, 2),
442   /* 1110 */ V(0, 0, 2),
443   /* 1111 */ V(0, 0, 2),
444
445   /* 0000 ... */
446   /* 0000 */ PTR(48, 3),        /* 16 */
447   /* 0001 */ PTR(56, 2),
448   /* 0010 */ PTR(60, 1),
449   /* 0011 */ V(1, 5, 4),
450   /* 0100 */ V(5, 1, 4),
451   /* 0101 */ PTR(62, 1),
452   /* 0110 */ PTR(64, 1),
453   /* 0111 */ V(2, 4, 4),
454   /* 1000 */ V(4, 2, 4),
455   /* 1001 */ V(1, 4, 4),
456   /* 1010 */ V(4, 1, 3),
457   /* 1011 */ V(4, 1, 3),
458   /* 1100 */ V(0, 4, 4),
459   /* 1101 */ V(4, 0, 4),
460   /* 1110 */ V(2, 3, 4),
461   /* 1111 */ V(3, 2, 4),
462
463   /* 0001 ... */
464   /* 0000 */ V(1, 3, 4),        /* 32 */
465   /* 0001 */ V(3, 1, 4),
466   /* 0010 */ V(0, 3, 4),
467   /* 0011 */ V(3, 0, 4),
468   /* 0100 */ V(2, 2, 2),
469   /* 0101 */ V(2, 2, 2),
470   /* 0110 */ V(2, 2, 2),
471   /* 0111 */ V(2, 2, 2),
472   /* 1000 */ V(0, 2, 2),
473   /* 1001 */ V(0, 2, 2),
474   /* 1010 */ V(0, 2, 2),
475   /* 1011 */ V(0, 2, 2),
476   /* 1100 */ V(2, 0, 2),
477   /* 1101 */ V(2, 0, 2),
478   /* 1110 */ V(2, 0, 2),
479   /* 1111 */ V(2, 0, 2),
480
481   /* 0000 0000 ... */
482   /* 000  */ V(5, 5, 3),        /* 48 */
483   /* 001  */ V(5, 4, 3),
484   /* 010  */ V(4, 5, 2),
485   /* 011  */ V(4, 5, 2),
486   /* 100  */ V(5, 3, 1),
487   /* 101  */ V(5, 3, 1),
488   /* 110  */ V(5, 3, 1),
489   /* 111  */ V(5, 3, 1),
490
491   /* 0000 0001 ... */
492   /* 00   */ V(3, 5, 2),        /* 56 */
493   /* 01   */ V(4, 4, 2),
494   /* 10   */ V(2, 5, 1),
495   /* 11   */ V(2, 5, 1),
496
497   /* 0000 0010 ... */
498   /* 0    */ V(5, 2, 1),        /* 60 */
499   /* 1    */ V(0, 5, 1),
500
501   /* 0000 0101 ... */
502   /* 0    */ V(3, 4, 1),        /* 62 */
503   /* 1    */ V(4, 3, 1),
504
505   /* 0000 0110 ... */
506   /* 0    */ V(5, 0, 1),        /* 64 */
507   /* 1    */ V(3, 3, 1)
508 };
509 # endif
510
511 static
512 union huffpair const hufftab9[] = {
513   /* 0000 */ PTR(16, 4),
514   /* 0001 */ PTR(32, 3),
515   /* 0010 */ PTR(40, 2),
516   /* 0011 */ PTR(44, 2),
517   /* 0100 */ PTR(48, 1),
518   /* 0101 */ V(1, 2, 4),
519   /* 0110 */ V(2, 1, 4),
520   /* 0111 */ V(2, 0, 4),
521   /* 1000 */ V(1, 1, 3),
522   /* 1001 */ V(1, 1, 3),
523   /* 1010 */ V(0, 1, 3),
524   /* 1011 */ V(0, 1, 3),
525   /* 1100 */ V(1, 0, 3),
526   /* 1101 */ V(1, 0, 3),
527   /* 1110 */ V(0, 0, 3),
528   /* 1111 */ V(0, 0, 3),
529
530   /* 0000 ... */
531   /* 0000 */ PTR(50, 1),        /* 16 */
532   /* 0001 */ V(3, 5, 4),
533   /* 0010 */ V(5, 3, 4),
534   /* 0011 */ PTR(52, 1),
535   /* 0100 */ V(4, 4, 4),
536   /* 0101 */ V(2, 5, 4),
537   /* 0110 */ V(5, 2, 4),
538   /* 0111 */ V(1, 5, 4),
539   /* 1000 */ V(5, 1, 3),
540   /* 1001 */ V(5, 1, 3),
541   /* 1010 */ V(3, 4, 3),
542   /* 1011 */ V(3, 4, 3),
543   /* 1100 */ V(4, 3, 3),
544   /* 1101 */ V(4, 3, 3),
545   /* 1110 */ V(5, 0, 4),
546   /* 1111 */ V(0, 4, 4),
547
548   /* 0001 ... */
549   /* 000  */ V(2, 4, 3),        /* 32 */
550   /* 001  */ V(4, 2, 3),
551   /* 010  */ V(3, 3, 3),
552   /* 011  */ V(4, 0, 3),
553   /* 100  */ V(1, 4, 2),
554   /* 101  */ V(1, 4, 2),
555   /* 110  */ V(4, 1, 2),
556   /* 111  */ V(4, 1, 2),
557
558   /* 0010 ... */
559   /* 00   */ V(2, 3, 2),        /* 40 */
560   /* 01   */ V(3, 2, 2),
561   /* 10   */ V(1, 3, 1),
562   /* 11   */ V(1, 3, 1),
563
564   /* 0011 ... */
565   /* 00   */ V(3, 1, 1),        /* 44 */
566   /* 01   */ V(3, 1, 1),
567   /* 10   */ V(0, 3, 2),
568   /* 11   */ V(3, 0, 2),
569
570   /* 0100 ... */
571   /* 0    */ V(2, 2, 1),        /* 48 */
572   /* 1    */ V(0, 2, 1),
573
574   /* 0000 0000 ... */
575   /* 0    */ V(5, 5, 1),        /* 50 */
576   /* 1    */ V(4, 5, 1),
577
578   /* 0000 0011 ... */
579   /* 0    */ V(5, 4, 1),        /* 52 */
580   /* 1    */ V(0, 5, 1)
581 };
582
583 static
584 union huffpair const hufftab10[] = {
585   /* 0000 */ PTR(16, 4),
586   /* 0001 */ PTR(32, 4),
587   /* 0010 */ PTR(48, 2),
588   /* 0011 */ V(1, 1, 4),
589   /* 0100 */ V(0, 1, 3),
590   /* 0101 */ V(0, 1, 3),
591   /* 0110 */ V(1, 0, 3),
592   /* 0111 */ V(1, 0, 3),
593   /* 1000 */ V(0, 0, 1),
594   /* 1001 */ V(0, 0, 1),
595   /* 1010 */ V(0, 0, 1),
596   /* 1011 */ V(0, 0, 1),
597   /* 1100 */ V(0, 0, 1),
598   /* 1101 */ V(0, 0, 1),
599   /* 1110 */ V(0, 0, 1),
600   /* 1111 */ V(0, 0, 1),
601
602   /* 0000 ... */
603   /* 0000 */ PTR(52, 3),        /* 16 */
604   /* 0001 */ PTR(60, 2),
605   /* 0010 */ PTR(64, 3),
606   /* 0011 */ PTR(72, 1),
607   /* 0100 */ PTR(74, 2),
608   /* 0101 */ PTR(78, 2),
609   /* 0110 */ PTR(82, 2),
610   /* 0111 */ V(1, 7, 4),
611   /* 1000 */ V(7, 1, 4),
612   /* 1001 */ PTR(86, 1),
613   /* 1010 */ PTR(88, 2),
614   /* 1011 */ PTR(92, 2),
615   /* 1100 */ V(1, 6, 4),
616   /* 1101 */ V(6, 1, 4),
617   /* 1110 */ V(6, 0, 4),
618   /* 1111 */ PTR(96, 1),
619
620   /* 0001 ... */
621   /* 0000 */ PTR(98, 1),        /* 32 */
622   /* 0001 */ PTR(100, 1),
623   /* 0010 */ V(1, 4, 4),
624   /* 0011 */ V(4, 1, 4),
625   /* 0100 */ V(4, 0, 4),
626   /* 0101 */ V(2, 3, 4),
627   /* 0110 */ V(3, 2, 4),
628   /* 0111 */ V(0, 3, 4),
629   /* 1000 */ V(1, 3, 3),
630   /* 1001 */ V(1, 3, 3),
631   /* 1010 */ V(3, 1, 3),
632   /* 1011 */ V(3, 1, 3),
633   /* 1100 */ V(3, 0, 3),
634   /* 1101 */ V(3, 0, 3),
635   /* 1110 */ V(2, 2, 3),
636   /* 1111 */ V(2, 2, 3),
637
638   /* 0010 ... */
639   /* 00   */ V(1, 2, 2),        /* 48 */
640   /* 01   */ V(2, 1, 2),
641   /* 10   */ V(0, 2, 2),
642   /* 11   */ V(2, 0, 2),
643
644   /* 0000 0000 ... */
645   /* 000  */ V(7, 7, 3),        /* 52 */
646   /* 001  */ V(6, 7, 3),
647   /* 010  */ V(7, 6, 3),
648   /* 011  */ V(5, 7, 3),
649   /* 100  */ V(7, 5, 3),
650   /* 101  */ V(6, 6, 3),
651   /* 110  */ V(4, 7, 2),
652   /* 111  */ V(4, 7, 2),
653
654   /* 0000 0001 ... */
655   /* 00   */ V(7, 4, 2),        /* 60 */
656   /* 01   */ V(5, 6, 2),
657   /* 10   */ V(6, 5, 2),
658   /* 11   */ V(3, 7, 2),
659
660   /* 0000 0010 ... */
661   /* 000  */ V(7, 3, 2),        /* 64 */
662   /* 001  */ V(7, 3, 2),
663   /* 010  */ V(4, 6, 2),
664   /* 011  */ V(4, 6, 2),
665   /* 100  */ V(5, 5, 3),
666   /* 101  */ V(5, 4, 3),
667   /* 110  */ V(6, 3, 2),
668   /* 111  */ V(6, 3, 2),
669
670   /* 0000 0011 ... */
671   /* 0    */ V(2, 7, 1),        /* 72 */
672   /* 1    */ V(7, 2, 1),
673
674   /* 0000 0100 ... */
675   /* 00   */ V(6, 4, 2),        /* 74 */
676   /* 01   */ V(0, 7, 2),
677   /* 10   */ V(7, 0, 1),
678   /* 11   */ V(7, 0, 1),
679
680   /* 0000 0101 ... */
681   /* 00   */ V(6, 2, 1),        /* 78 */
682   /* 01   */ V(6, 2, 1),
683   /* 10   */ V(4, 5, 2),
684   /* 11   */ V(3, 5, 2),
685
686   /* 0000 0110 ... */
687   /* 00   */ V(0, 6, 1),        /* 82 */
688   /* 01   */ V(0, 6, 1),
689   /* 10   */ V(5, 3, 2),
690   /* 11   */ V(4, 4, 2),
691
692   /* 0000 1001 ... */
693   /* 0    */ V(3, 6, 1),        /* 86 */
694   /* 1    */ V(2, 6, 1),
695
696   /* 0000 1010 ... */
697   /* 00   */ V(2, 5, 2),        /* 88 */
698   /* 01   */ V(5, 2, 2),
699   /* 10   */ V(1, 5, 1),
700   /* 11   */ V(1, 5, 1),
701
702   /* 0000 1011 ... */
703   /* 00   */ V(5, 1, 1),        /* 92 */
704   /* 01   */ V(5, 1, 1),
705   /* 10   */ V(3, 4, 2),
706   /* 11   */ V(4, 3, 2),
707
708   /* 0000 1111 ... */
709   /* 0    */ V(0, 5, 1),        /* 96 */
710   /* 1    */ V(5, 0, 1),
711
712   /* 0001 0000 ... */
713   /* 0    */ V(2, 4, 1),        /* 98 */
714   /* 1    */ V(4, 2, 1),
715
716   /* 0001 0001 ... */
717   /* 0    */ V(3, 3, 1),        /* 100 */
718   /* 1    */ V(0, 4, 1)
719 };
720
721 static
722 union huffpair const hufftab11[] = {
723   /* 0000 */ PTR(16, 4),
724   /* 0001 */ PTR(32, 4),
725   /* 0010 */ PTR(48, 4),
726   /* 0011 */ PTR(64, 3),
727   /* 0100 */ V(1, 2, 4),
728   /* 0101 */ PTR(72, 1),
729   /* 0110 */ V(1, 1, 3),
730   /* 0111 */ V(1, 1, 3),
731   /* 1000 */ V(0, 1, 3),
732   /* 1001 */ V(0, 1, 3),
733   /* 1010 */ V(1, 0, 3),
734   /* 1011 */ V(1, 0, 3),
735   /* 1100 */ V(0, 0, 2),
736   /* 1101 */ V(0, 0, 2),
737   /* 1110 */ V(0, 0, 2),
738   /* 1111 */ V(0, 0, 2),
739
740   /* 0000 ... */
741   /* 0000 */ PTR(74, 2),        /* 16 */
742   /* 0001 */ PTR(78, 3),
743   /* 0010 */ PTR(86, 2),
744   /* 0011 */ PTR(90, 1),
745   /* 0100 */ PTR(92, 2),
746   /* 0101 */ V(2, 7, 4),
747   /* 0110 */ V(7, 2, 4),
748   /* 0111 */ PTR(96, 1),
749   /* 1000 */ V(7, 1, 3),
750   /* 1001 */ V(7, 1, 3),
751   /* 1010 */ V(1, 7, 4),
752   /* 1011 */ V(7, 0, 4),
753   /* 1100 */ V(3, 6, 4),
754   /* 1101 */ V(6, 3, 4),
755   /* 1110 */ V(6, 0, 4),
756   /* 1111 */ PTR(98, 1),
757
758   /* 0001 ... */
759   /* 0000 */ PTR(100, 1),       /* 32 */
760   /* 0001 */ V(1, 5, 4),
761   /* 0010 */ V(6, 2, 3),
762   /* 0011 */ V(6, 2, 3),
763   /* 0100 */ V(2, 6, 4),
764   /* 0101 */ V(0, 6, 4),
765   /* 0110 */ V(1, 6, 3),
766   /* 0111 */ V(1, 6, 3),
767   /* 1000 */ V(6, 1, 3),
768   /* 1001 */ V(6, 1, 3),
769   /* 1010 */ V(5, 1, 4),
770   /* 1011 */ V(3, 4, 4),
771   /* 1100 */ V(5, 0, 4),
772   /* 1101 */ PTR(102, 1),
773   /* 1110 */ V(2, 4, 4),
774   /* 1111 */ V(4, 2, 4),
775
776   /* 0010 ... */
777   /* 0000 */ V(1, 4, 4),        /* 48 */
778   /* 0001 */ V(4, 1, 4),
779   /* 0010 */ V(0, 4, 4),
780   /* 0011 */ V(4, 0, 4),
781   /* 0100 */ V(2, 3, 3),
782   /* 0101 */ V(2, 3, 3),
783   /* 0110 */ V(3, 2, 3),
784   /* 0111 */ V(3, 2, 3),
785   /* 1000 */ V(1, 3, 2),
786   /* 1001 */ V(1, 3, 2),
787   /* 1010 */ V(1, 3, 2),
788   /* 1011 */ V(1, 3, 2),
789   /* 1100 */ V(3, 1, 2),
790   /* 1101 */ V(3, 1, 2),
791   /* 1110 */ V(3, 1, 2),
792   /* 1111 */ V(3, 1, 2),
793
794   /* 0011 ... */
795   /* 000  */ V(0, 3, 3),        /* 64 */
796   /* 001  */ V(3, 0, 3),
797   /* 010  */ V(2, 2, 2),
798   /* 011  */ V(2, 2, 2),
799   /* 100  */ V(2, 1, 1),
800   /* 101  */ V(2, 1, 1),
801   /* 110  */ V(2, 1, 1),
802   /* 111  */ V(2, 1, 1),
803
804   /* 0101 ... */
805   /* 0    */ V(0, 2, 1),        /* 72 */
806   /* 1    */ V(2, 0, 1),
807
808   /* 0000 0000 ... */
809   /* 00   */ V(7, 7, 2),        /* 74 */
810   /* 01   */ V(6, 7, 2),
811   /* 10   */ V(7, 6, 2),
812   /* 11   */ V(7, 5, 2),
813
814   /* 0000 0001 ... */
815   /* 000  */ V(6, 6, 2),        /* 78 */
816   /* 001  */ V(6, 6, 2),
817   /* 010  */ V(4, 7, 2),
818   /* 011  */ V(4, 7, 2),
819   /* 100  */ V(7, 4, 2),
820   /* 101  */ V(7, 4, 2),
821   /* 110  */ V(5, 7, 3),
822   /* 111  */ V(5, 5, 3),
823
824   /* 0000 0010 ... */
825   /* 00   */ V(5, 6, 2),        /* 86 */
826   /* 01   */ V(6, 5, 2),
827   /* 10   */ V(3, 7, 1),
828   /* 11   */ V(3, 7, 1),
829
830   /* 0000 0011 ... */
831   /* 0    */ V(7, 3, 1),        /* 90 */
832   /* 1    */ V(4, 6, 1),
833
834   /* 0000 0100 ... */
835   /* 00   */ V(4, 5, 2),        /* 92 */
836   /* 01   */ V(5, 4, 2),
837   /* 10   */ V(3, 5, 2),
838   /* 11   */ V(5, 3, 2),
839
840   /* 0000 0111 ... */
841   /* 0    */ V(6, 4, 1),        /* 96 */
842   /* 1    */ V(0, 7, 1),
843
844   /* 0000 1111 ... */
845   /* 0    */ V(4, 4, 1),        /* 98 */
846   /* 1    */ V(2, 5, 1),
847
848   /* 0001 0000 ... */
849   /* 0    */ V(5, 2, 1),        /* 100 */
850   /* 1    */ V(0, 5, 1),
851
852   /* 0001 1101 ... */
853   /* 0    */ V(4, 3, 1),        /* 102 */
854   /* 1    */ V(3, 3, 1)
855 };
856
857 static
858 union huffpair const hufftab12[] = {
859   /* 0000 */ PTR(16, 4),
860   /* 0001 */ PTR(32, 4),
861   /* 0010 */ PTR(48, 4),
862   /* 0011 */ PTR(64, 2),
863   /* 0100 */ PTR(68, 3),
864   /* 0101 */ PTR(76, 1),
865   /* 0110 */ V(1, 2, 4),
866   /* 0111 */ V(2, 1, 4),
867   /* 1000 */ PTR(78, 1),
868   /* 1001 */ V(0, 0, 4),
869   /* 1010 */ V(1, 1, 3),
870   /* 1011 */ V(1, 1, 3),
871   /* 1100 */ V(0, 1, 3),
872   /* 1101 */ V(0, 1, 3),
873   /* 1110 */ V(1, 0, 3),
874   /* 1111 */ V(1, 0, 3),
875
876   /* 0000 ... */
877   /* 0000 */ PTR(80, 2),        /* 16 */
878   /* 0001 */ PTR(84, 1),
879   /* 0010 */ PTR(86, 1),
880   /* 0011 */ PTR(88, 1),
881   /* 0100 */ V(5, 6, 4),
882   /* 0101 */ V(3, 7, 4),
883   /* 0110 */ PTR(90, 1),
884   /* 0111 */ V(2, 7, 4),
885   /* 1000 */ V(7, 2, 4),
886   /* 1001 */ V(4, 6, 4),
887   /* 1010 */ V(6, 4, 4),
888   /* 1011 */ V(1, 7, 4),
889   /* 1100 */ V(7, 1, 4),
890   /* 1101 */ PTR(92, 1),
891   /* 1110 */ V(3, 6, 4),
892   /* 1111 */ V(6, 3, 4),
893
894   /* 0001 ... */
895   /* 0000 */ V(4, 5, 4),        /* 32 */
896   /* 0001 */ V(5, 4, 4),
897   /* 0010 */ V(4, 4, 4),
898   /* 0011 */ PTR(94, 1),
899   /* 0100 */ V(2, 6, 3),
900   /* 0101 */ V(2, 6, 3),
901   /* 0110 */ V(6, 2, 3),
902   /* 0111 */ V(6, 2, 3),
903   /* 1000 */ V(6, 1, 3),
904   /* 1001 */ V(6, 1, 3),
905   /* 1010 */ V(1, 6, 4),
906   /* 1011 */ V(6, 0, 4),
907   /* 1100 */ V(3, 5, 4),
908   /* 1101 */ V(5, 3, 4),
909   /* 1110 */ V(2, 5, 4),
910   /* 1111 */ V(5, 2, 4),
911
912   /* 0010 ... */
913   /* 0000 */ V(1, 5, 3),        /* 48 */
914   /* 0001 */ V(1, 5, 3),
915   /* 0010 */ V(5, 1, 3),
916   /* 0011 */ V(5, 1, 3),
917   /* 0100 */ V(3, 4, 3),
918   /* 0101 */ V(3, 4, 3),
919   /* 0110 */ V(4, 3, 3),
920   /* 0111 */ V(4, 3, 3),
921   /* 1000 */ V(5, 0, 4),
922   /* 1001 */ V(0, 4, 4),
923   /* 1010 */ V(2, 4, 3),
924   /* 1011 */ V(2, 4, 3),
925   /* 1100 */ V(4, 2, 3),
926   /* 1101 */ V(4, 2, 3),
927   /* 1110 */ V(1, 4, 3),
928   /* 1111 */ V(1, 4, 3),
929
930   /* 0011 ... */
931   /* 00   */ V(3, 3, 2),        /* 64 */
932   /* 01   */ V(4, 1, 2),
933   /* 10   */ V(2, 3, 2),
934   /* 11   */ V(3, 2, 2),
935
936   /* 0100 ... */
937   /* 000  */ V(4, 0, 3),        /* 68 */
938   /* 001  */ V(0, 3, 3),
939   /* 010  */ V(3, 0, 2),
940   /* 011  */ V(3, 0, 2),
941   /* 100  */ V(1, 3, 1),
942   /* 101  */ V(1, 3, 1),
943   /* 110  */ V(1, 3, 1),
944   /* 111  */ V(1, 3, 1),
945
946   /* 0101 ... */
947   /* 0    */ V(3, 1, 1),        /* 76 */
948   /* 1    */ V(2, 2, 1),
949
950   /* 1000 ... */
951   /* 0    */ V(0, 2, 1),        /* 78 */
952   /* 1    */ V(2, 0, 1),
953
954   /* 0000 0000 ... */
955   /* 00   */ V(7, 7, 2),        /* 80 */
956   /* 01   */ V(6, 7, 2),
957   /* 10   */ V(7, 6, 1),
958   /* 11   */ V(7, 6, 1),
959
960   /* 0000 0001 ... */
961   /* 0    */ V(5, 7, 1),        /* 84 */
962   /* 1    */ V(7, 5, 1),
963
964   /* 0000 0010 ... */
965   /* 0    */ V(6, 6, 1),        /* 86 */
966   /* 1    */ V(4, 7, 1),
967
968   /* 0000 0011 ... */
969   /* 0    */ V(7, 4, 1),        /* 88 */
970   /* 1    */ V(6, 5, 1),
971
972   /* 0000 0110 ... */
973   /* 0    */ V(7, 3, 1),        /* 90 */
974   /* 1    */ V(5, 5, 1),
975
976   /* 0000 1101 ... */
977   /* 0    */ V(0, 7, 1),        /* 92 */
978   /* 1    */ V(7, 0, 1),
979
980   /* 0001 0011 ... */
981   /* 0    */ V(0, 6, 1),        /* 94 */
982   /* 1    */ V(0, 5, 1)
983 };
984
985 static
986 union huffpair const hufftab13[] = {
987   /* 0000 */ PTR(16, 4),
988   /* 0001 */ PTR(32, 4),
989   /* 0010 */ PTR(48, 4),
990   /* 0011 */ PTR(64, 2),
991   /* 0100 */ V(1, 1, 4),
992   /* 0101 */ V(0, 1, 4),
993   /* 0110 */ V(1, 0, 3),
994   /* 0111 */ V(1, 0, 3),
995   /* 1000 */ V(0, 0, 1),
996   /* 1001 */ V(0, 0, 1),
997   /* 1010 */ V(0, 0, 1),
998   /* 1011 */ V(0, 0, 1),
999   /* 1100 */ V(0, 0, 1),
1000   /* 1101 */ V(0, 0, 1),
1001   /* 1110 */ V(0, 0, 1),
1002   /* 1111 */ V(0, 0, 1),
1003
1004   /* 0000 ... */
1005   /* 0000 */ PTR(68, 4),        /* 16 */
1006   /* 0001 */ PTR(84, 4),
1007   /* 0010 */ PTR(100, 4),
1008   /* 0011 */ PTR(116, 4),
1009   /* 0100 */ PTR(132, 4),
1010   /* 0101 */ PTR(148, 4),
1011   /* 0110 */ PTR(164, 3),
1012   /* 0111 */ PTR(172, 3),
1013   /* 1000 */ PTR(180, 3),
1014   /* 1001 */ PTR(188, 3),
1015   /* 1010 */ PTR(196, 3),
1016   /* 1011 */ PTR(204, 3),
1017   /* 1100 */ PTR(212, 1),
1018   /* 1101 */ PTR(214, 2),
1019   /* 1110 */ PTR(218, 3),
1020   /* 1111 */ PTR(226, 1),
1021
1022   /* 0001 ... */
1023   /* 0000 */ PTR(228, 2),       /* 32 */
1024   /* 0001 */ PTR(232, 2),
1025   /* 0010 */ PTR(236, 2),
1026   /* 0011 */ PTR(240, 2),
1027   /* 0100 */ V(8, 1, 4),
1028   /* 0101 */ PTR(244, 1),
1029   /* 0110 */ PTR(246, 1),
1030   /* 0111 */ PTR(248, 1),
1031   /* 1000 */ PTR(250, 2),
1032   /* 1001 */ PTR(254, 1),
1033   /* 1010 */ V(1, 5, 4),
1034   /* 1011 */ V(5, 1, 4),
1035   /* 1100 */ PTR(256, 1),
1036   /* 1101 */ PTR(258, 1),
1037   /* 1110 */ PTR(260, 1),
1038   /* 1111 */ V(1, 4, 4),
1039
1040   /* 0010 ... */
1041   /* 0000 */ V(4, 1, 3),        /* 48 */
1042   /* 0001 */ V(4, 1, 3),
1043   /* 0010 */ V(0, 4, 4),
1044   /* 0011 */ V(4, 0, 4),
1045   /* 0100 */ V(2, 3, 4),
1046   /* 0101 */ V(3, 2, 4),
1047   /* 0110 */ V(1, 3, 3),
1048   /* 0111 */ V(1, 3, 3),
1049   /* 1000 */ V(3, 1, 3),
1050   /* 1001 */ V(3, 1, 3),
1051   /* 1010 */ V(0, 3, 3),
1052   /* 1011 */ V(0, 3, 3),
1053   /* 1100 */ V(3, 0, 3),
1054   /* 1101 */ V(3, 0, 3),
1055   /* 1110 */ V(2, 2, 3),
1056   /* 1111 */ V(2, 2, 3),
1057
1058   /* 0011 ... */
1059   /* 00   */ V(1, 2, 2),        /* 64 */
1060   /* 01   */ V(2, 1, 2),
1061   /* 10   */ V(0, 2, 2),
1062   /* 11   */ V(2, 0, 2),
1063
1064   /* 0000 0000 ... */
1065   /* 0000 */ PTR(262, 4),       /* 68 */
1066   /* 0001 */ PTR(278, 4),
1067   /* 0010 */ PTR(294, 4),
1068   /* 0011 */ PTR(310, 3),
1069   /* 0100 */ PTR(318, 2),
1070   /* 0101 */ PTR(322, 2),
1071   /* 0110 */ PTR(326, 3),
1072   /* 0111 */ PTR(334, 2),
1073   /* 1000 */ PTR(338, 1),
1074   /* 1001 */ PTR(340, 2),
1075   /* 1010 */ PTR(344, 2),
1076   /* 1011 */ PTR(348, 2),
1077   /* 1100 */ PTR(352, 2),
1078   /* 1101 */ PTR(356, 2),
1079   /* 1110 */ V(1, 15, 4),
1080   /* 1111 */ V(15, 1, 4),
1081
1082   /* 0000 0001 ... */
1083   /* 0000 */ V(15, 0, 4),       /* 84 */
1084   /* 0001 */ PTR(360, 1),
1085   /* 0010 */ PTR(362, 1),
1086   /* 0011 */ PTR(364, 1),
1087   /* 0100 */ V(14, 2, 4),
1088   /* 0101 */ PTR(366, 1),
1089   /* 0110 */ V(1, 14, 4),
1090   /* 0111 */ V(14, 1, 4),
1091   /* 1000 */ PTR(368, 1),
1092   /* 1001 */ PTR(370, 1),
1093   /* 1010 */ PTR(372, 1),
1094   /* 1011 */ PTR(374, 1),
1095   /* 1100 */ PTR(376, 1),
1096   /* 1101 */ PTR(378, 1),
1097   /* 1110 */ V(12, 6, 4),
1098   /* 1111 */ V(3, 13, 4),
1099
1100   /* 0000 0010 ... */
1101   /* 0000 */ PTR(380, 1),       /* 100 */
1102   /* 0001 */ V(2, 13, 4),
1103   /* 0010 */ V(13, 2, 4),
1104   /* 0011 */ V(1, 13, 4),
1105   /* 0100 */ V(11, 7, 4),
1106   /* 0101 */ PTR(382, 1),
1107   /* 0110 */ PTR(384, 1),
1108   /* 0111 */ V(12, 3, 4),
1109   /* 1000 */ PTR(386, 1),
1110   /* 1001 */ V(4, 11, 4),
1111   /* 1010 */ V(13, 1, 3),
1112   /* 1011 */ V(13, 1, 3),
1113   /* 1100 */ V(0, 13, 4),
1114   /* 1101 */ V(13, 0, 4),
1115   /* 1110 */ V(8, 10, 4),
1116   /* 1111 */ V(10, 8, 4),
1117
1118   /* 0000 0011 ... */
1119   /* 0000 */ V(4, 12, 4),       /* 116 */
1120   /* 0001 */ V(12, 4, 4),
1121   /* 0010 */ V(6, 11, 4),
1122   /* 0011 */ V(11, 6, 4),
1123   /* 0100 */ V(3, 12, 3),
1124   /* 0101 */ V(3, 12, 3),
1125   /* 0110 */ V(2, 12, 3),
1126   /* 0111 */ V(2, 12, 3),
1127   /* 1000 */ V(12, 2, 3),
1128   /* 1001 */ V(12, 2, 3),
1129   /* 1010 */ V(5, 11, 3),
1130   /* 1011 */ V(5, 11, 3),
1131   /* 1100 */ V(11, 5, 4),
1132   /* 1101 */ V(8, 9, 4),
1133   /* 1110 */ V(1, 12, 3),
1134   /* 1111 */ V(1, 12, 3),
1135
1136   /* 0000 0100 ... */
1137   /* 0000 */ V(12, 1, 3),       /* 132 */
1138   /* 0001 */ V(12, 1, 3),
1139   /* 0010 */ V(9, 8, 4),
1140   /* 0011 */ V(0, 12, 4),
1141   /* 0100 */ V(12, 0, 3),
1142   /* 0101 */ V(12, 0, 3),
1143   /* 0110 */ V(11, 4, 4),
1144   /* 0111 */ V(6, 10, 4),
1145   /* 1000 */ V(10, 6, 4),
1146   /* 1001 */ V(7, 9, 4),
1147   /* 1010 */ V(3, 11, 3),
1148   /* 1011 */ V(3, 11, 3),
1149   /* 1100 */ V(11, 3, 3),
1150   /* 1101 */ V(11, 3, 3),
1151   /* 1110 */ V(8, 8, 4),
1152   /* 1111 */ V(5, 10, 4),
1153
1154   /* 0000 0101 ... */
1155   /* 0000 */ V(2, 11, 3),       /* 148 */
1156   /* 0001 */ V(2, 11, 3),
1157   /* 0010 */ V(10, 5, 4),
1158   /* 0011 */ V(6, 9, 4),
1159   /* 0100 */ V(10, 4, 3),
1160   /* 0101 */ V(10, 4, 3),
1161   /* 0110 */ V(7, 8, 4),
1162   /* 0111 */ V(8, 7, 4),
1163   /* 1000 */ V(9, 4, 3),
1164   /* 1001 */ V(9, 4, 3),
1165   /* 1010 */ V(7, 7, 4),
1166   /* 1011 */ V(7, 6, 4),
1167   /* 1100 */ V(11, 2, 2),
1168   /* 1101 */ V(11, 2, 2),
1169   /* 1110 */ V(11, 2, 2),
1170   /* 1111 */ V(11, 2, 2),
1171
1172   /* 0000 0110 ... */
1173   /* 000  */ V(1, 11, 2),       /* 164 */
1174   /* 001  */ V(1, 11, 2),
1175   /* 010  */ V(11, 1, 2),
1176   /* 011  */ V(11, 1, 2),
1177   /* 100  */ V(0, 11, 3),
1178   /* 101  */ V(11, 0, 3),
1179   /* 110  */ V(9, 6, 3),
1180   /* 111  */ V(4, 10, 3),
1181
1182   /* 0000 0111 ... */
1183   /* 000  */ V(3, 10, 3),       /* 172 */
1184   /* 001  */ V(10, 3, 3),
1185   /* 010  */ V(5, 9, 3),
1186   /* 011  */ V(9, 5, 3),
1187   /* 100  */ V(2, 10, 2),
1188   /* 101  */ V(2, 10, 2),
1189   /* 110  */ V(10, 2, 2),
1190   /* 111  */ V(10, 2, 2),
1191
1192   /* 0000 1000 ... */
1193   /* 000  */ V(1, 10, 2),       /* 180 */
1194   /* 001  */ V(1, 10, 2),
1195   /* 010  */ V(10, 1, 2),
1196   /* 011  */ V(10, 1, 2),
1197   /* 100  */ V(0, 10, 3),
1198   /* 101  */ V(6, 8, 3),
1199   /* 110  */ V(10, 0, 2),
1200   /* 111  */ V(10, 0, 2),
1201
1202   /* 0000 1001 ... */
1203   /* 000  */ V(8, 6, 3),        /* 188 */
1204   /* 001  */ V(4, 9, 3),
1205   /* 010  */ V(9, 3, 2),
1206   /* 011  */ V(9, 3, 2),
1207   /* 100  */ V(3, 9, 3),
1208   /* 101  */ V(5, 8, 3),
1209   /* 110  */ V(8, 5, 3),
1210   /* 111  */ V(6, 7, 3),
1211
1212   /* 0000 1010 ... */
1213   /* 000  */ V(2, 9, 2),        /* 196 */
1214   /* 001  */ V(2, 9, 2),
1215   /* 010  */ V(9, 2, 2),
1216   /* 011  */ V(9, 2, 2),
1217   /* 100  */ V(5, 7, 3),
1218   /* 101  */ V(7, 5, 3),
1219   /* 110  */ V(3, 8, 2),
1220   /* 111  */ V(3, 8, 2),
1221
1222   /* 0000 1011 ... */
1223   /* 000  */ V(8, 3, 2),        /* 204 */
1224   /* 001  */ V(8, 3, 2),
1225   /* 010  */ V(6, 6, 3),
1226   /* 011  */ V(4, 7, 3),
1227   /* 100  */ V(7, 4, 3),
1228   /* 101  */ V(5, 6, 3),
1229   /* 110  */ V(6, 5, 3),
1230   /* 111  */ V(7, 3, 3),
1231
1232   /* 0000 1100 ... */
1233   /* 0    */ V(1, 9, 1),        /* 212 */
1234   /* 1    */ V(9, 1, 1),
1235
1236   /* 0000 1101 ... */
1237   /* 00   */ V(0, 9, 2),        /* 214 */
1238   /* 01   */ V(9, 0, 2),
1239   /* 10   */ V(4, 8, 2),
1240   /* 11   */ V(8, 4, 2),
1241
1242   /* 0000 1110 ... */
1243   /* 000  */ V(7, 2, 2),        /* 218 */
1244   /* 001  */ V(7, 2, 2),
1245   /* 010  */ V(4, 6, 3),
1246   /* 011  */ V(6, 4, 3),
1247   /* 100  */ V(2, 8, 1),
1248   /* 101  */ V(2, 8, 1),
1249   /* 110  */ V(2, 8, 1),
1250   /* 111  */ V(2, 8, 1),
1251
1252   /* 0000 1111 ... */
1253   /* 0    */ V(8, 2, 1),        /* 226 */
1254   /* 1    */ V(1, 8, 1),
1255
1256   /* 0001 0000 ... */
1257   /* 00   */ V(3, 7, 2),        /* 228 */
1258   /* 01   */ V(2, 7, 2),
1259   /* 10   */ V(1, 7, 1),
1260   /* 11   */ V(1, 7, 1),
1261
1262   /* 0001 0001 ... */
1263   /* 00   */ V(7, 1, 1),        /* 232 */
1264   /* 01   */ V(7, 1, 1),
1265   /* 10   */ V(5, 5, 2),
1266   /* 11   */ V(0, 7, 2),
1267
1268   /* 0001 0010 ... */
1269   /* 00   */ V(7, 0, 2),        /* 236 */
1270   /* 01   */ V(3, 6, 2),
1271   /* 10   */ V(6, 3, 2),
1272   /* 11   */ V(4, 5, 2),
1273
1274   /* 0001 0011 ... */
1275   /* 00   */ V(5, 4, 2),        /* 240 */
1276   /* 01   */ V(2, 6, 2),
1277   /* 10   */ V(6, 2, 2),
1278   /* 11   */ V(3, 5, 2),
1279
1280   /* 0001 0101 ... */
1281   /* 0    */ V(0, 8, 1),        /* 244 */
1282   /* 1    */ V(8, 0, 1),
1283
1284   /* 0001 0110 ... */
1285   /* 0    */ V(1, 6, 1),        /* 246 */
1286   /* 1    */ V(6, 1, 1),
1287
1288   /* 0001 0111 ... */
1289   /* 0    */ V(0, 6, 1),        /* 248 */
1290   /* 1    */ V(6, 0, 1),
1291
1292   /* 0001 1000 ... */
1293   /* 00   */ V(5, 3, 2),        /* 250 */
1294   /* 01   */ V(4, 4, 2),
1295   /* 10   */ V(2, 5, 1),
1296   /* 11   */ V(2, 5, 1),
1297
1298   /* 0001 1001 ... */
1299   /* 0    */ V(5, 2, 1),        /* 254 */
1300   /* 1    */ V(0, 5, 1),
1301
1302   /* 0001 1100 ... */
1303   /* 0    */ V(3, 4, 1),        /* 256 */
1304   /* 1    */ V(4, 3, 1),
1305
1306   /* 0001 1101 ... */
1307   /* 0    */ V(5, 0, 1),        /* 258 */
1308   /* 1    */ V(2, 4, 1),
1309
1310   /* 0001 1110 ... */
1311   /* 0    */ V(4, 2, 1),        /* 260 */
1312   /* 1    */ V(3, 3, 1),
1313
1314   /* 0000 0000 0000 ... */
1315   /* 0000 */ PTR(388, 3),       /* 262 */
1316   /* 0001 */ V(15, 15, 4),
1317   /* 0010 */ V(14, 15, 4),
1318   /* 0011 */ V(13, 15, 4),
1319   /* 0100 */ V(14, 14, 4),
1320   /* 0101 */ V(12, 15, 4),
1321   /* 0110 */ V(13, 14, 4),
1322   /* 0111 */ V(11, 15, 4),
1323   /* 1000 */ V(15, 11, 4),
1324   /* 1001 */ V(12, 14, 4),
1325   /* 1010 */ V(13, 12, 4),
1326   /* 1011 */ PTR(396, 1),
1327   /* 1100 */ V(14, 12, 3),
1328   /* 1101 */ V(14, 12, 3),
1329   /* 1110 */ V(13, 13, 3),
1330   /* 1111 */ V(13, 13, 3),
1331
1332   /* 0000 0000 0001 ... */
1333   /* 0000 */ V(15, 10, 4),      /* 278 */
1334   /* 0001 */ V(12, 13, 4),
1335   /* 0010 */ V(11, 14, 3),
1336   /* 0011 */ V(11, 14, 3),
1337   /* 0100 */ V(14, 11, 3),
1338   /* 0101 */ V(14, 11, 3),
1339   /* 0110 */ V(9, 15, 3),
1340   /* 0111 */ V(9, 15, 3),
1341   /* 1000 */ V(15, 9, 3),
1342   /* 1001 */ V(15, 9, 3),
1343   /* 1010 */ V(14, 10, 3),
1344   /* 1011 */ V(14, 10, 3),
1345   /* 1100 */ V(11, 13, 3),
1346   /* 1101 */ V(11, 13, 3),
1347   /* 1110 */ V(13, 11, 3),
1348   /* 1111 */ V(13, 11, 3),
1349
1350   /* 0000 0000 0010 ... */
1351   /* 0000 */ V(8, 15, 3),       /* 294 */
1352   /* 0001 */ V(8, 15, 3),
1353   /* 0010 */ V(15, 8, 3),
1354   /* 0011 */ V(15, 8, 3),
1355   /* 0100 */ V(12, 12, 3),
1356   /* 0101 */ V(12, 12, 3),
1357   /* 0110 */ V(10, 14, 4),
1358   /* 0111 */ V(9, 14, 4),
1359   /* 1000 */ V(8, 14, 3),
1360   /* 1001 */ V(8, 14, 3),
1361   /* 1010 */ V(7, 15, 4),
1362   /* 1011 */ V(7, 14, 4),
1363   /* 1100 */ V(15, 7, 2),
1364   /* 1101 */ V(15, 7, 2),
1365   /* 1110 */ V(15, 7, 2),
1366   /* 1111 */ V(15, 7, 2),
1367
1368   /* 0000 0000 0011 ... */
1369   /* 000  */ V(13, 10, 2),      /* 310 */
1370   /* 001  */ V(13, 10, 2),
1371   /* 010  */ V(10, 13, 3),
1372   /* 011  */ V(11, 12, 3),
1373   /* 100  */ V(12, 11, 3),
1374   /* 101  */ V(15, 6, 3),
1375   /* 110  */ V(6, 15, 2),
1376   /* 111  */ V(6, 15, 2),
1377
1378   /* 0000 0000 0100 ... */
1379   /* 00   */ V(14, 8, 2),       /* 318 */
1380   /* 01   */ V(5, 15, 2),
1381   /* 10   */ V(9, 13, 2),
1382   /* 11   */ V(13, 9, 2),
1383
1384   /* 0000 0000 0101 ... */
1385   /* 00   */ V(15, 5, 2),       /* 322 */
1386   /* 01   */ V(14, 7, 2),
1387   /* 10   */ V(10, 12, 2),
1388   /* 11   */ V(11, 11, 2),
1389
1390   /* 0000 0000 0110 ... */
1391   /* 000  */ V(4, 15, 2),       /* 326 */
1392   /* 001  */ V(4, 15, 2),
1393   /* 010  */ V(15, 4, 2),
1394   /* 011  */ V(15, 4, 2),
1395   /* 100  */ V(12, 10, 3),
1396   /* 101  */ V(14, 6, 3),
1397   /* 110  */ V(15, 3, 2),
1398   /* 111  */ V(15, 3, 2),
1399
1400   /* 0000 0000 0111 ... */
1401   /* 00   */ V(3, 15, 1),       /* 334 */
1402   /* 01   */ V(3, 15, 1),
1403   /* 10   */ V(8, 13, 2),
1404   /* 11   */ V(13, 8, 2),
1405
1406   /* 0000 0000 1000 ... */
1407   /* 0    */ V(2, 15, 1),       /* 338 */
1408   /* 1    */ V(15, 2, 1),
1409
1410   /* 0000 0000 1001 ... */
1411   /* 00   */ V(6, 14, 2),       /* 340 */
1412   /* 01   */ V(9, 12, 2),
1413   /* 10   */ V(0, 15, 1),
1414   /* 11   */ V(0, 15, 1),
1415
1416   /* 0000 0000 1010 ... */
1417   /* 00   */ V(12, 9, 2),       /* 344 */
1418   /* 01   */ V(5, 14, 2),
1419   /* 10   */ V(10, 11, 1),
1420   /* 11   */ V(10, 11, 1),
1421
1422   /* 0000 0000 1011 ... */
1423   /* 00   */ V(7, 13, 2),       /* 348 */
1424   /* 01   */ V(13, 7, 2),
1425   /* 10   */ V(4, 14, 1),
1426   /* 11   */ V(4, 14, 1),
1427
1428   /* 0000 0000 1100 ... */
1429   /* 00   */ V(12, 8, 2),       /* 352 */
1430   /* 01   */ V(13, 6, 2),
1431   /* 10   */ V(3, 14, 1),
1432   /* 11   */ V(3, 14, 1),
1433
1434   /* 0000 0000 1101 ... */
1435   /* 00   */ V(11, 9, 1),       /* 356 */
1436   /* 01   */ V(11, 9, 1),
1437   /* 10   */ V(9, 11, 2),
1438   /* 11   */ V(10, 10, 2),
1439
1440   /* 0000 0001 0001 ... */
1441   /* 0    */ V(11, 10, 1),      /* 360 */
1442   /* 1    */ V(14, 5, 1),
1443
1444   /* 0000 0001 0010 ... */
1445   /* 0    */ V(14, 4, 1),       /* 362 */
1446   /* 1    */ V(8, 12, 1),
1447
1448   /* 0000 0001 0011 ... */
1449   /* 0    */ V(6, 13, 1),       /* 364 */
1450   /* 1    */ V(14, 3, 1),
1451
1452   /* 0000 0001 0101 ... */
1453   /* 0    */ V(2, 14, 1),       /* 366 */
1454   /* 1    */ V(0, 14, 1),
1455
1456   /* 0000 0001 1000 ... */
1457   /* 0    */ V(14, 0, 1),       /* 368 */
1458   /* 1    */ V(5, 13, 1),
1459
1460   /* 0000 0001 1001 ... */
1461   /* 0    */ V(13, 5, 1),       /* 370 */
1462   /* 1    */ V(7, 12, 1),
1463
1464   /* 0000 0001 1010 ... */
1465   /* 0    */ V(12, 7, 1),       /* 372 */
1466   /* 1    */ V(4, 13, 1),
1467
1468   /* 0000 0001 1011 ... */
1469   /* 0    */ V(8, 11, 1),       /* 374 */
1470   /* 1    */ V(11, 8, 1),
1471
1472   /* 0000 0001 1100 ... */
1473   /* 0    */ V(13, 4, 1),       /* 376 */
1474   /* 1    */ V(9, 10, 1),
1475
1476   /* 0000 0001 1101 ... */
1477   /* 0    */ V(10, 9, 1),       /* 378 */
1478   /* 1    */ V(6, 12, 1),
1479
1480   /* 0000 0010 0000 ... */
1481   /* 0    */ V(13, 3, 1),       /* 380 */
1482   /* 1    */ V(7, 11, 1),
1483
1484   /* 0000 0010 0101 ... */
1485   /* 0    */ V(5, 12, 1),       /* 382 */
1486   /* 1    */ V(12, 5, 1),
1487
1488   /* 0000 0010 0110 ... */
1489   /* 0    */ V(9, 9, 1),        /* 384 */
1490   /* 1    */ V(7, 10, 1),
1491
1492   /* 0000 0010 1000 ... */
1493   /* 0    */ V(10, 7, 1),       /* 386 */
1494   /* 1    */ V(9, 7, 1),
1495
1496   /* 0000 0000 0000 0000 ... */
1497   /* 000  */ V(15, 14, 3),      /* 388 */
1498   /* 001  */ V(15, 12, 3),
1499   /* 010  */ V(15, 13, 2),
1500   /* 011  */ V(15, 13, 2),
1501   /* 100  */ V(14, 13, 1),
1502   /* 101  */ V(14, 13, 1),
1503   /* 110  */ V(14, 13, 1),
1504   /* 111  */ V(14, 13, 1),
1505
1506   /* 0000 0000 0000 1011 ... */
1507   /* 0    */ V(10, 15, 1),      /* 396 */
1508   /* 1    */ V(14, 9, 1)
1509 };
1510
1511 static
1512 union huffpair const hufftab15[] = {
1513   /* 0000 */ PTR(16, 4),
1514   /* 0001 */ PTR(32, 4),
1515   /* 0010 */ PTR(48, 4),
1516   /* 0011 */ PTR(64, 4),
1517   /* 0100 */ PTR(80, 4),
1518   /* 0101 */ PTR(96, 3),
1519   /* 0110 */ PTR(104, 3),
1520   /* 0111 */ PTR(112, 2),
1521   /* 1000 */ PTR(116, 1),
1522   /* 1001 */ PTR(118, 1),
1523   /* 1010 */ V(1, 1, 3),
1524   /* 1011 */ V(1, 1, 3),
1525   /* 1100 */ V(0, 1, 4),
1526   /* 1101 */ V(1, 0, 4),
1527   /* 1110 */ V(0, 0, 3),
1528   /* 1111 */ V(0, 0, 3),
1529
1530   /* 0000 ... */
1531   /* 0000 */ PTR(120, 4),       /* 16 */
1532   /* 0001 */ PTR(136, 4),
1533   /* 0010 */ PTR(152, 4),
1534   /* 0011 */ PTR(168, 4),
1535   /* 0100 */ PTR(184, 4),
1536   /* 0101 */ PTR(200, 3),
1537   /* 0110 */ PTR(208, 3),
1538   /* 0111 */ PTR(216, 4),
1539   /* 1000 */ PTR(232, 3),
1540   /* 1001 */ PTR(240, 3),
1541   /* 1010 */ PTR(248, 3),
1542   /* 1011 */ PTR(256, 3),
1543   /* 1100 */ PTR(264, 2),
1544   /* 1101 */ PTR(268, 3),
1545   /* 1110 */ PTR(276, 3),
1546   /* 1111 */ PTR(284, 2),
1547
1548   /* 0001 ... */
1549   /* 0000 */ PTR(288, 2),       /* 32 */
1550   /* 0001 */ PTR(292, 2),
1551   /* 0010 */ PTR(296, 2),
1552   /* 0011 */ PTR(300, 2),
1553   /* 0100 */ PTR(304, 2),
1554   /* 0101 */ PTR(308, 2),
1555   /* 0110 */ PTR(312, 2),
1556   /* 0111 */ PTR(316, 2),
1557   /* 1000 */ PTR(320, 1),
1558   /* 1001 */ PTR(322, 1),
1559   /* 1010 */ PTR(324, 1),
1560   /* 1011 */ PTR(326, 2),
1561   /* 1100 */ PTR(330, 1),
1562   /* 1101 */ PTR(332, 1),
1563   /* 1110 */ PTR(334, 2),
1564   /* 1111 */ PTR(338, 1),
1565
1566   /* 0010 ... */
1567   /* 0000 */ PTR(340, 1),       /* 48 */
1568   /* 0001 */ PTR(342, 1),
1569   /* 0010 */ V(9, 1, 4),
1570   /* 0011 */ PTR(344, 1),
1571   /* 0100 */ PTR(346, 1),
1572   /* 0101 */ PTR(348, 1),
1573   /* 0110 */ PTR(350, 1),
1574   /* 0111 */ PTR(352, 1),
1575   /* 1000 */ V(2, 8, 4),
1576   /* 1001 */ V(8, 2, 4),
1577   /* 1010 */ V(1, 8, 4),
1578   /* 1011 */ V(8, 1, 4),
1579   /* 1100 */ PTR(354, 1),
1580   /* 1101 */ PTR(356, 1),
1581   /* 1110 */ PTR(358, 1),
1582   /* 1111 */ PTR(360, 1),
1583
1584   /* 0011 ... */
1585   /* 0000 */ V(2, 7, 4),        /* 64 */
1586   /* 0001 */ V(7, 2, 4),
1587   /* 0010 */ V(6, 4, 4),
1588   /* 0011 */ V(1, 7, 4),
1589   /* 0100 */ V(5, 5, 4),
1590   /* 0101 */ V(7, 1, 4),
1591   /* 0110 */ PTR(362, 1),
1592   /* 0111 */ V(3, 6, 4),
1593   /* 1000 */ V(6, 3, 4),
1594   /* 1001 */ V(4, 5, 4),
1595   /* 1010 */ V(5, 4, 4),
1596   /* 1011 */ V(2, 6, 4),
1597   /* 1100 */ V(6, 2, 4),
1598   /* 1101 */ V(1, 6, 4),
1599   /* 1110 */ PTR(364, 1),
1600   /* 1111 */ V(3, 5, 4),
1601
1602   /* 0100 ... */
1603   /* 0000 */ V(6, 1, 3),        /* 80 */
1604   /* 0001 */ V(6, 1, 3),
1605   /* 0010 */ V(5, 3, 4),
1606   /* 0011 */ V(4, 4, 4),
1607   /* 0100 */ V(2, 5, 3),
1608   /* 0101 */ V(2, 5, 3),
1609   /* 0110 */ V(5, 2, 3),
1610   /* 0111 */ V(5, 2, 3),
1611   /* 1000 */ V(1, 5, 3),
1612   /* 1001 */ V(1, 5, 3),
1613   /* 1010 */ V(5, 1, 3),
1614   /* 1011 */ V(5, 1, 3),
1615   /* 1100 */ V(0, 5, 4),
1616   /* 1101 */ V(5, 0, 4),
1617   /* 1110 */ V(3, 4, 3),
1618   /* 1111 */ V(3, 4, 3),
1619
1620   /* 0101 ... */
1621   /* 000  */ V(4, 3, 3),        /* 96 */
1622   /* 001  */ V(2, 4, 3),
1623   /* 010  */ V(4, 2, 3),
1624   /* 011  */ V(3, 3, 3),
1625   /* 100  */ V(4, 1, 2),
1626   /* 101  */ V(4, 1, 2),
1627   /* 110  */ V(1, 4, 3),
1628   /* 111  */ V(0, 4, 3),
1629
1630   /* 0110 ... */
1631   /* 000  */ V(2, 3, 2),        /* 104 */
1632   /* 001  */ V(2, 3, 2),
1633   /* 010  */ V(3, 2, 2),
1634   /* 011  */ V(3, 2, 2),
1635   /* 100  */ V(4, 0, 3),
1636   /* 101  */ V(0, 3, 3),
1637   /* 110  */ V(1, 3, 2),
1638   /* 111  */ V(1, 3, 2),
1639
1640   /* 0111 ... */
1641   /* 00   */ V(3, 1, 2),        /* 112 */
1642   /* 01   */ V(3, 0, 2),
1643   /* 10   */ V(2, 2, 1),
1644   /* 11   */ V(2, 2, 1),
1645
1646   /* 1000 ... */
1647   /* 0    */ V(1, 2, 1),        /* 116 */
1648   /* 1    */ V(2, 1, 1),
1649
1650   /* 1001 ... */
1651   /* 0    */ V(0, 2, 1),        /* 118 */
1652   /* 1    */ V(2, 0, 1),
1653
1654   /* 0000 0000 ... */
1655   /* 0000 */ PTR(366, 1),       /* 120 */
1656   /* 0001 */ PTR(368, 1),
1657   /* 0010 */ V(14, 14, 4),
1658   /* 0011 */ PTR(370, 1),
1659   /* 0100 */ PTR(372, 1),
1660   /* 0101 */ PTR(374, 1),
1661   /* 0110 */ V(15, 11, 4),
1662   /* 0111 */ PTR(376, 1),
1663   /* 1000 */ V(13, 13, 4),
1664   /* 1001 */ V(10, 15, 4),
1665   /* 1010 */ V(15, 10, 4),
1666   /* 1011 */ V(11, 14, 4),
1667   /* 1100 */ V(14, 11, 4),
1668   /* 1101 */ V(12, 13, 4),
1669   /* 1110 */ V(13, 12, 4),
1670   /* 1111 */ V(9, 15, 4),
1671
1672   /* 0000 0001 ... */
1673   /* 0000 */ V(15, 9, 4),       /* 136 */
1674   /* 0001 */ V(14, 10, 4),
1675   /* 0010 */ V(11, 13, 4),
1676   /* 0011 */ V(13, 11, 4),
1677   /* 0100 */ V(8, 15, 4),
1678   /* 0101 */ V(15, 8, 4),
1679   /* 0110 */ V(12, 12, 4),
1680   /* 0111 */ V(9, 14, 4),
1681   /* 1000 */ V(14, 9, 4),
1682   /* 1001 */ V(7, 15, 4),
1683   /* 1010 */ V(15, 7, 4),
1684   /* 1011 */ V(10, 13, 4),
1685   /* 1100 */ V(13, 10, 4),
1686   /* 1101 */ V(11, 12, 4),
1687   /* 1110 */ V(6, 15, 4),
1688   /* 1111 */ PTR(378, 1),
1689
1690   /* 0000 0010 ... */
1691   /* 0000 */ V(12, 11, 3),      /* 152 */
1692   /* 0001 */ V(12, 11, 3),
1693   /* 0010 */ V(15, 6, 3),
1694   /* 0011 */ V(15, 6, 3),
1695   /* 0100 */ V(8, 14, 4),
1696   /* 0101 */ V(14, 8, 4),
1697   /* 0110 */ V(5, 15, 4),
1698   /* 0111 */ V(9, 13, 4),
1699   /* 1000 */ V(15, 5, 3),
1700   /* 1001 */ V(15, 5, 3),
1701   /* 1010 */ V(7, 14, 3),
1702   /* 1011 */ V(7, 14, 3),
1703   /* 1100 */ V(14, 7, 3),
1704   /* 1101 */ V(14, 7, 3),
1705   /* 1110 */ V(10, 12, 3),
1706   /* 1111 */ V(10, 12, 3),
1707
1708   /* 0000 0011 ... */
1709   /* 0000 */ V(12, 10, 3),      /* 168 */
1710   /* 0001 */ V(12, 10, 3),
1711   /* 0010 */ V(11, 11, 3),
1712   /* 0011 */ V(11, 11, 3),
1713   /* 0100 */ V(13, 9, 4),
1714   /* 0101 */ V(8, 13, 4),
1715   /* 0110 */ V(4, 15, 3),
1716   /* 0111 */ V(4, 15, 3),
1717   /* 1000 */ V(15, 4, 3),
1718   /* 1001 */ V(15, 4, 3),
1719   /* 1010 */ V(3, 15, 3),
1720   /* 1011 */ V(3, 15, 3),
1721   /* 1100 */ V(15, 3, 3),
1722   /* 1101 */ V(15, 3, 3),
1723   /* 1110 */ V(13, 8, 3),
1724   /* 1111 */ V(13, 8, 3),
1725
1726   /* 0000 0100 ... */
1727   /* 0000 */ V(14, 6, 3),       /* 184 */
1728   /* 0001 */ V(14, 6, 3),
1729   /* 0010 */ V(2, 15, 3),
1730   /* 0011 */ V(2, 15, 3),
1731   /* 0100 */ V(15, 2, 3),
1732   /* 0101 */ V(15, 2, 3),
1733   /* 0110 */ V(6, 14, 4),
1734   /* 0111 */ V(15, 0, 4),
1735   /* 1000 */ V(1, 15, 3),
1736   /* 1001 */ V(1, 15, 3),
1737   /* 1010 */ V(15, 1, 3),
1738   /* 1011 */ V(15, 1, 3),
1739   /* 1100 */ V(9, 12, 3),
1740   /* 1101 */ V(9, 12, 3),
1741   /* 1110 */ V(12, 9, 3),
1742   /* 1111 */ V(12, 9, 3),
1743
1744   /* 0000 0101 ... */
1745   /* 000  */ V(5, 14, 3),       /* 200 */
1746   /* 001  */ V(10, 11, 3),
1747   /* 010  */ V(11, 10, 3),
1748   /* 011  */ V(14, 5, 3),
1749   /* 100  */ V(7, 13, 3),
1750   /* 101  */ V(13, 7, 3),
1751   /* 110  */ V(4, 14, 3),
1752   /* 111  */ V(14, 4, 3),
1753
1754   /* 0000 0110 ... */
1755   /* 000  */ V(8, 12, 3),       /* 208 */
1756   /* 001  */ V(12, 8, 3),
1757   /* 010  */ V(3, 14, 3),
1758   /* 011  */ V(6, 13, 3),
1759   /* 100  */ V(13, 6, 3),
1760   /* 101  */ V(14, 3, 3),
1761   /* 110  */ V(9, 11, 3),
1762   /* 111  */ V(11, 9, 3),
1763
1764   /* 0000 0111 ... */
1765   /* 0000 */ V(2, 14, 3),       /* 216 */
1766   /* 0001 */ V(2, 14, 3),
1767   /* 0010 */ V(10, 10, 3),
1768   /* 0011 */ V(10, 10, 3),
1769   /* 0100 */ V(14, 2, 3),
1770   /* 0101 */ V(14, 2, 3),
1771   /* 0110 */ V(1, 14, 3),
1772   /* 0111 */ V(1, 14, 3),
1773   /* 1000 */ V(14, 1, 3),
1774   /* 1001 */ V(14, 1, 3),
1775   /* 1010 */ V(0, 14, 4),
1776   /* 1011 */ V(14, 0, 4),
1777   /* 1100 */ V(5, 13, 3),
1778   /* 1101 */ V(5, 13, 3),
1779   /* 1110 */ V(13, 5, 3),
1780   /* 1111 */ V(13, 5, 3),
1781
1782   /* 0000 1000 ... */
1783   /* 000  */ V(7, 12, 3),       /* 232 */
1784   /* 001  */ V(12, 7, 3),
1785   /* 010  */ V(4, 13, 3),
1786   /* 011  */ V(8, 11, 3),
1787   /* 100  */ V(13, 4, 2),
1788   /* 101  */ V(13, 4, 2),
1789   /* 110  */ V(11, 8, 3),
1790   /* 111  */ V(9, 10, 3),
1791
1792   /* 0000 1001 ... */
1793   /* 000  */ V(10, 9, 3),       /* 240 */
1794   /* 001  */ V(6, 12, 3),
1795   /* 010  */ V(12, 6, 3),
1796   /* 011  */ V(3, 13, 3),
1797   /* 100  */ V(13, 3, 2),
1798   /* 101  */ V(13, 3, 2),
1799   /* 110  */ V(13, 2, 2),
1800   /* 111  */ V(13, 2, 2),
1801
1802   /* 0000 1010 ... */
1803   /* 000  */ V(2, 13, 3),       /* 248 */
1804   /* 001  */ V(0, 13, 3),
1805   /* 010  */ V(1, 13, 2),
1806   /* 011  */ V(1, 13, 2),
1807   /* 100  */ V(7, 11, 2),
1808   /* 101  */ V(7, 11, 2),
1809   /* 110  */ V(11, 7, 2),
1810   /* 111  */ V(11, 7, 2),
1811
1812   /* 0000 1011 ... */
1813   /* 000  */ V(13, 1, 2),       /* 256 */
1814   /* 001  */ V(13, 1, 2),
1815   /* 010  */ V(5, 12, 3),
1816   /* 011  */ V(13, 0, 3),
1817   /* 100  */ V(12, 5, 2),
1818   /* 101  */ V(12, 5, 2),
1819   /* 110  */ V(8, 10, 2),
1820   /* 111  */ V(8, 10, 2),
1821
1822   /* 0000 1100 ... */
1823   /* 00   */ V(10, 8, 2),       /* 264 */
1824   /* 01   */ V(4, 12, 2),
1825   /* 10   */ V(12, 4, 2),
1826   /* 11   */ V(6, 11, 2),
1827
1828   /* 0000 1101 ... */
1829   /* 000  */ V(11, 6, 2),       /* 268 */
1830   /* 001  */ V(11, 6, 2),
1831   /* 010  */ V(9, 9, 3),
1832   /* 011  */ V(0, 12, 3),
1833   /* 100  */ V(3, 12, 2),
1834   /* 101  */ V(3, 12, 2),
1835   /* 110  */ V(12, 3, 2),
1836   /* 111  */ V(12, 3, 2),
1837
1838   /* 0000 1110 ... */
1839   /* 000  */ V(7, 10, 2),       /* 276 */
1840   /* 001  */ V(7, 10, 2),
1841   /* 010  */ V(10, 7, 2),
1842   /* 011  */ V(10, 7, 2),
1843   /* 100  */ V(10, 6, 2),
1844   /* 101  */ V(10, 6, 2),
1845   /* 110  */ V(12, 0, 3),
1846   /* 111  */ V(0, 11, 3),
1847
1848   /* 0000 1111 ... */
1849   /* 00   */ V(12, 2, 1),       /* 284 */
1850   /* 01   */ V(12, 2, 1),
1851   /* 10   */ V(2, 12, 2),
1852   /* 11   */ V(5, 11, 2),
1853
1854   /* 0001 0000 ... */
1855   /* 00   */ V(11, 5, 2),       /* 288 */
1856   /* 01   */ V(1, 12, 2),
1857   /* 10   */ V(8, 9, 2),
1858   /* 11   */ V(9, 8, 2),
1859
1860   /* 0001 0001 ... */
1861   /* 00   */ V(12, 1, 2),       /* 292 */
1862   /* 01   */ V(4, 11, 2),
1863   /* 10   */ V(11, 4, 2),
1864   /* 11   */ V(6, 10, 2),
1865
1866   /* 0001 0010 ... */
1867   /* 00   */ V(3, 11, 2),       /* 296 */
1868   /* 01   */ V(7, 9, 2),
1869   /* 10   */ V(11, 3, 1),
1870   /* 11   */ V(11, 3, 1),
1871
1872   /* 0001 0011 ... */
1873   /* 00   */ V(9, 7, 2),        /* 300 */
1874   /* 01   */ V(8, 8, 2),
1875   /* 10   */ V(2, 11, 2),
1876   /* 11   */ V(5, 10, 2),
1877
1878   /* 0001 0100 ... */
1879   /* 00   */ V(11, 2, 1),       /* 304 */
1880   /* 01   */ V(11, 2, 1),
1881   /* 10   */ V(10, 5, 2),
1882   /* 11   */ V(1, 11, 2),
1883
1884   /* 0001 0101 ... */
1885   /* 00   */ V(11, 1, 1),       /* 308 */
1886   /* 01   */ V(11, 1, 1),
1887   /* 10   */ V(11, 0, 2),
1888   /* 11   */ V(6, 9, 2),
1889
1890   /* 0001 0110 ... */
1891   /* 00   */ V(9, 6, 2),        /* 312 */
1892   /* 01   */ V(4, 10, 2),
1893   /* 10   */ V(10, 4, 2),
1894   /* 11   */ V(7, 8, 2),
1895
1896   /* 0001 0111 ... */
1897   /* 00   */ V(8, 7, 2),        /* 316 */
1898   /* 01   */ V(3, 10, 2),
1899   /* 10   */ V(10, 3, 1),
1900   /* 11   */ V(10, 3, 1),
1901
1902   /* 0001 1000 ... */
1903   /* 0    */ V(5, 9, 1),        /* 320 */
1904   /* 1    */ V(9, 5, 1),
1905
1906   /* 0001 1001 ... */
1907   /* 0    */ V(2, 10, 1),       /* 322 */
1908   /* 1    */ V(10, 2, 1),
1909
1910   /* 0001 1010 ... */
1911   /* 0    */ V(1, 10, 1),       /* 324 */
1912   /* 1    */ V(10, 1, 1),
1913
1914   /* 0001 1011 ... */
1915   /* 00   */ V(0, 10, 2),       /* 326 */
1916   /* 01   */ V(10, 0, 2),
1917   /* 10   */ V(6, 8, 1),
1918   /* 11   */ V(6, 8, 1),
1919
1920   /* 0001 1100 ... */
1921   /* 0    */ V(8, 6, 1),        /* 330 */
1922   /* 1    */ V(4, 9, 1),
1923
1924   /* 0001 1101 ... */
1925   /* 0    */ V(9, 4, 1),        /* 332 */
1926   /* 1    */ V(3, 9, 1),
1927
1928   /* 0001 1110 ... */
1929   /* 00   */ V(9, 3, 1),        /* 334 */
1930   /* 01   */ V(9, 3, 1),
1931   /* 10   */ V(7, 7, 2),
1932   /* 11   */ V(0, 9, 2),
1933
1934   /* 0001 1111 ... */
1935   /* 0    */ V(5, 8, 1),        /* 338 */
1936   /* 1    */ V(8, 5, 1),
1937
1938   /* 0010 0000 ... */
1939   /* 0    */ V(2, 9, 1),        /* 340 */
1940   /* 1    */ V(6, 7, 1),
1941
1942   /* 0010 0001 ... */
1943   /* 0    */ V(7, 6, 1),        /* 342 */
1944   /* 1    */ V(9, 2, 1),
1945
1946   /* 0010 0011 ... */
1947   /* 0    */ V(1, 9, 1),        /* 344 */
1948   /* 1    */ V(9, 0, 1),
1949
1950   /* 0010 0100 ... */
1951   /* 0    */ V(4, 8, 1),        /* 346 */
1952   /* 1    */ V(8, 4, 1),
1953
1954   /* 0010 0101 ... */
1955   /* 0    */ V(5, 7, 1),        /* 348 */
1956   /* 1    */ V(7, 5, 1),
1957
1958   /* 0010 0110 ... */
1959   /* 0    */ V(3, 8, 1),        /* 350 */
1960   /* 1    */ V(8, 3, 1),
1961
1962   /* 0010 0111 ... */
1963   /* 0    */ V(6, 6, 1),        /* 352 */
1964   /* 1    */ V(4, 7, 1),
1965
1966   /* 0010 1100 ... */
1967   /* 0    */ V(7, 4, 1),        /* 354 */
1968   /* 1    */ V(0, 8, 1),
1969
1970   /* 0010 1101 ... */
1971   /* 0    */ V(8, 0, 1),        /* 356 */
1972   /* 1    */ V(5, 6, 1),
1973
1974   /* 0010 1110 ... */
1975   /* 0    */ V(6, 5, 1),        /* 358 */
1976   /* 1    */ V(3, 7, 1),
1977
1978   /* 0010 1111 ... */
1979   /* 0    */ V(7, 3, 1),        /* 360 */
1980   /* 1    */ V(4, 6, 1),
1981
1982   /* 0011 0110 ... */
1983   /* 0    */ V(0, 7, 1),        /* 362 */
1984   /* 1    */ V(7, 0, 1),
1985
1986   /* 0011 1110 ... */
1987   /* 0    */ V(0, 6, 1),        /* 364 */
1988   /* 1    */ V(6, 0, 1),
1989
1990   /* 0000 0000 0000 ... */
1991   /* 0    */ V(15, 15, 1),      /* 366 */
1992   /* 1    */ V(14, 15, 1),
1993
1994   /* 0000 0000 0001 ... */
1995   /* 0    */ V(15, 14, 1),      /* 368 */
1996   /* 1    */ V(13, 15, 1),
1997
1998   /* 0000 0000 0011 ... */
1999   /* 0    */ V(15, 13, 1),      /* 370 */
2000   /* 1    */ V(12, 15, 1),
2001
2002   /* 0000 0000 0100 ... */
2003   /* 0    */ V(15, 12, 1),      /* 372 */
2004   /* 1    */ V(13, 14, 1),
2005
2006   /* 0000 0000 0101 ... */
2007   /* 0    */ V(14, 13, 1),      /* 374 */
2008   /* 1    */ V(11, 15, 1),
2009
2010   /* 0000 0000 0111 ... */
2011   /* 0    */ V(12, 14, 1),      /* 376 */
2012   /* 1    */ V(14, 12, 1),
2013
2014   /* 0000 0001 1111 ... */
2015   /* 0    */ V(10, 14, 1),      /* 378 */
2016   /* 1    */ V(0, 15, 1)
2017 };
2018
2019 static
2020 union huffpair const hufftab16[] = {
2021   /* 0000 */ PTR(16, 4),
2022   /* 0001 */ PTR(32, 4),
2023   /* 0010 */ PTR(48, 4),
2024   /* 0011 */ PTR(64, 2),
2025   /* 0100 */ V(1, 1, 4),
2026   /* 0101 */ V(0, 1, 4),
2027   /* 0110 */ V(1, 0, 3),
2028   /* 0111 */ V(1, 0, 3),
2029   /* 1000 */ V(0, 0, 1),
2030   /* 1001 */ V(0, 0, 1),
2031   /* 1010 */ V(0, 0, 1),
2032   /* 1011 */ V(0, 0, 1),
2033   /* 1100 */ V(0, 0, 1),
2034   /* 1101 */ V(0, 0, 1),
2035   /* 1110 */ V(0, 0, 1),
2036   /* 1111 */ V(0, 0, 1),
2037
2038   /* 0000 ... */
2039   /* 0000 */ PTR(68, 3),        /* 16 */
2040   /* 0001 */ PTR(76, 3),
2041   /* 0010 */ PTR(84, 2),
2042   /* 0011 */ V(15, 15, 4),
2043   /* 0100 */ PTR(88, 2),
2044   /* 0101 */ PTR(92, 1),
2045   /* 0110 */ PTR(94, 4),
2046   /* 0111 */ V(15, 2, 4),
2047   /* 1000 */ PTR(110, 1),
2048   /* 1001 */ V(1, 15, 4),
2049   /* 1010 */ V(15, 1, 4),
2050   /* 1011 */ PTR(112, 4),
2051   /* 1100 */ PTR(128, 4),
2052   /* 1101 */ PTR(144, 4),
2053   /* 1110 */ PTR(160, 4),
2054   /* 1111 */ PTR(176, 4),
2055
2056   /* 0001 ... */
2057   /* 0000 */ PTR(192, 4),       /* 32 */
2058   /* 0001 */ PTR(208, 3),
2059   /* 0010 */ PTR(216, 3),
2060   /* 0011 */ PTR(224, 3),
2061   /* 0100 */ PTR(232, 3),
2062   /* 0101 */ PTR(240, 3),
2063   /* 0110 */ PTR(248, 3),
2064   /* 0111 */ PTR(256, 3),
2065   /* 1000 */ PTR(264, 2),
2066   /* 1001 */ PTR(268, 2),
2067   /* 1010 */ PTR(272, 1),
2068   /* 1011 */ PTR(274, 2),
2069   /* 1100 */ PTR(278, 2),
2070   /* 1101 */ PTR(282, 1),
2071   /* 1110 */ V(5, 1, 4),
2072   /* 1111 */ PTR(284, 1),
2073
2074   /* 0010 ... */
2075   /* 0000 */ PTR(286, 1),       /* 48 */
2076   /* 0001 */ PTR(288, 1),
2077   /* 0010 */ PTR(290, 1),
2078   /* 0011 */ V(1, 4, 4),
2079   /* 0100 */ V(4, 1, 4),
2080   /* 0101 */ PTR(292, 1),
2081   /* 0110 */ V(2, 3, 4),
2082   /* 0111 */ V(3, 2, 4),
2083   /* 1000 */ V(1, 3, 3),
2084   /* 1001 */ V(1, 3, 3),
2085   /* 1010 */ V(3, 1, 3),
2086   /* 1011 */ V(3, 1, 3),
2087   /* 1100 */ V(0, 3, 4),
2088   /* 1101 */ V(3, 0, 4),
2089   /* 1110 */ V(2, 2, 3),
2090   /* 1111 */ V(2, 2, 3),
2091
2092   /* 0011 ... */
2093   /* 00   */ V(1, 2, 2),        /* 64 */
2094   /* 01   */ V(2, 1, 2),
2095   /* 10   */ V(0, 2, 2),
2096   /* 11   */ V(2, 0, 2),
2097
2098   /* 0000 0000 ... */
2099   /* 000  */ V(14, 15, 3),      /* 68 */
2100   /* 001  */ V(15, 14, 3),
2101   /* 010  */ V(13, 15, 3),
2102   /* 011  */ V(15, 13, 3),
2103   /* 100  */ V(12, 15, 3),
2104   /* 101  */ V(15, 12, 3),
2105   /* 110  */ V(11, 15, 3),
2106   /* 111  */ V(15, 11, 3),
2107
2108   /* 0000 0001 ... */
2109   /* 000  */ V(10, 15, 2),      /* 76 */
2110   /* 001  */ V(10, 15, 2),
2111   /* 010  */ V(15, 10, 3),
2112   /* 011  */ V(9, 15, 3),
2113   /* 100  */ V(15, 9, 3),
2114   /* 101  */ V(15, 8, 3),
2115   /* 110  */ V(8, 15, 2),
2116   /* 111  */ V(8, 15, 2),
2117
2118   /* 0000 0010 ... */
2119   /* 00   */ V(7, 15, 2),       /* 84 */
2120   /* 01   */ V(15, 7, 2),
2121   /* 10   */ V(6, 15, 2),
2122   /* 11   */ V(15, 6, 2),
2123
2124   /* 0000 0100 ... */
2125   /* 00   */ V(5, 15, 2),       /* 88 */
2126   /* 01   */ V(15, 5, 2),
2127   /* 10   */ V(4, 15, 1),
2128   /* 11   */ V(4, 15, 1),
2129
2130   /* 0000 0101 ... */
2131   /* 0    */ V(15, 4, 1),       /* 92 */
2132   /* 1    */ V(15, 3, 1),
2133
2134   /* 0000 0110 ... */
2135   /* 0000 */ V(15, 0, 1),       /* 94 */
2136   /* 0001 */ V(15, 0, 1),
2137   /* 0010 */ V(15, 0, 1),
2138   /* 0011 */ V(15, 0, 1),
2139   /* 0100 */ V(15, 0, 1),
2140   /* 0101 */ V(15, 0, 1),
2141   /* 0110 */ V(15, 0, 1),
2142   /* 0111 */ V(15, 0, 1),
2143   /* 1000 */ V(3, 15, 2),
2144   /* 1001 */ V(3, 15, 2),
2145   /* 1010 */ V(3, 15, 2),
2146   /* 1011 */ V(3, 15, 2),
2147   /* 1100 */ PTR(294, 4),
2148   /* 1101 */ PTR(310, 3),
2149   /* 1110 */ PTR(318, 3),
2150   /* 1111 */ PTR(326, 3),
2151
2152   /* 0000 1000 ... */
2153   /* 0    */ V(2, 15, 1),       /* 110 */
2154   /* 1    */ V(0, 15, 1),
2155
2156   /* 0000 1011 ... */
2157   /* 0000 */ PTR(334, 2),       /* 112 */
2158   /* 0001 */ PTR(338, 2),
2159   /* 0010 */ PTR(342, 2),
2160   /* 0011 */ PTR(346, 1),
2161   /* 0100 */ PTR(348, 2),
2162   /* 0101 */ PTR(352, 2),
2163   /* 0110 */ PTR(356, 1),
2164   /* 0111 */ PTR(358, 2),
2165   /* 1000 */ PTR(362, 2),
2166   /* 1001 */ PTR(366, 2),
2167   /* 1010 */ PTR(370, 2),
2168   /* 1011 */ V(14, 3, 4),
2169   /* 1100 */ PTR(374, 1),
2170   /* 1101 */ PTR(376, 1),
2171   /* 1110 */ PTR(378, 1),
2172   /* 1111 */ PTR(380, 1),
2173
2174   /* 0000 1100 ... */
2175   /* 0000 */ PTR(382, 1),       /* 128 */
2176   /* 0001 */ PTR(384, 1),
2177   /* 0010 */ PTR(386, 1),
2178   /* 0011 */ V(0, 13, 4),
2179   /* 0100 */ PTR(388, 1),
2180   /* 0101 */ PTR(390, 1),
2181   /* 0110 */ PTR(392, 1),
2182   /* 0111 */ V(3, 12, 4),
2183   /* 1000 */ PTR(394, 1),
2184   /* 1001 */ V(1, 12, 4),
2185   /* 1010 */ V(12, 0, 4),
2186   /* 1011 */ PTR(396, 1),
2187   /* 1100 */ V(14, 2, 3),
2188   /* 1101 */ V(14, 2, 3),
2189   /* 1110 */ V(2, 14, 4),
2190   /* 1111 */ V(1, 14, 4),
2191
2192   /* 0000 1101 ... */
2193   /* 0000 */ V(13, 3, 4),       /* 144 */
2194   /* 0001 */ V(2, 13, 4),
2195   /* 0010 */ V(13, 2, 4),
2196   /* 0011 */ V(13, 1, 4),
2197   /* 0100 */ V(3, 11, 4),
2198   /* 0101 */ PTR(398, 1),
2199   /* 0110 */ V(1, 13, 3),
2200   /* 0111 */ V(1, 13, 3),
2201   /* 1000 */ V(12, 4, 4),
2202   /* 1001 */ V(6, 11, 4),
2203   /* 1010 */ V(12, 3, 4),
2204   /* 1011 */ V(10, 7, 4),
2205   /* 1100 */ V(2, 12, 3),
2206   /* 1101 */ V(2, 12, 3),
2207   /* 1110 */ V(12, 2, 4),
2208   /* 1111 */ V(11, 5, 4),
2209
2210   /* 0000 1110 ... */
2211   /* 0000 */ V(12, 1, 4),       /* 160 */
2212   /* 0001 */ V(0, 12, 4),
2213   /* 0010 */ V(4, 11, 4),
2214   /* 0011 */ V(11, 4, 4),
2215   /* 0100 */ V(6, 10, 4),
2216   /* 0101 */ V(10, 6, 4),
2217   /* 0110 */ V(11, 3, 3),
2218   /* 0111 */ V(11, 3, 3),
2219   /* 1000 */ V(5, 10, 4),
2220   /* 1001 */ V(10, 5, 4),
2221   /* 1010 */ V(2, 11, 3),
2222   /* 1011 */ V(2, 11, 3),
2223   /* 1100 */ V(11, 2, 3),
2224   /* 1101 */ V(11, 2, 3),
2225   /* 1110 */ V(1, 11, 3),
2226   /* 1111 */ V(1, 11, 3),
2227
2228   /* 0000 1111 ... */
2229   /* 0000 */ V(11, 1, 3),       /* 176 */
2230   /* 0001 */ V(11, 1, 3),
2231   /* 0010 */ V(0, 11, 4),
2232   /* 0011 */ V(11, 0, 4),
2233   /* 0100 */ V(6, 9, 4),
2234   /* 0101 */ V(9, 6, 4),
2235   /* 0110 */ V(4, 10, 4),
2236   /* 0111 */ V(10, 4, 4),
2237   /* 1000 */ V(7, 8, 4),
2238   /* 1001 */ V(8, 7, 4),
2239   /* 1010 */ V(10, 3, 3),
2240   /* 1011 */ V(10, 3, 3),
2241   /* 1100 */ V(3, 10, 4),
2242   /* 1101 */ V(5, 9, 4),
2243   /* 1110 */ V(2, 10, 3),
2244   /* 1111 */ V(2, 10, 3),
2245
2246   /* 0001 0000 ... */
2247   /* 0000 */ V(9, 5, 4),        /* 192 */
2248   /* 0001 */ V(6, 8, 4),
2249   /* 0010 */ V(10, 1, 3),
2250   /* 0011 */ V(10, 1, 3),
2251   /* 0100 */ V(8, 6, 4),
2252   /* 0101 */ V(7, 7, 4),
2253   /* 0110 */ V(9, 4, 3),
2254   /* 0111 */ V(9, 4, 3),
2255   /* 1000 */ V(4, 9, 4),
2256   /* 1001 */ V(5, 7, 4),
2257   /* 1010 */ V(6, 7, 3),
2258   /* 1011 */ V(6, 7, 3),
2259   /* 1100 */ V(10, 2, 2),
2260   /* 1101 */ V(10, 2, 2),
2261   /* 1110 */ V(10, 2, 2),
2262   /* 1111 */ V(10, 2, 2),
2263
2264   /* 0001 0001 ... */
2265   /* 000  */ V(1, 10, 2),       /* 208 */
2266   /* 001  */ V(1, 10, 2),
2267   /* 010  */ V(0, 10, 3),
2268   /* 011  */ V(10, 0, 3),
2269   /* 100  */ V(3, 9, 3),
2270   /* 101  */ V(9, 3, 3),
2271   /* 110  */ V(5, 8, 3),
2272   /* 111  */ V(8, 5, 3),
2273
2274   /* 0001 0010 ... */
2275   /* 000  */ V(2, 9, 2),        /* 216 */
2276   /* 001  */ V(2, 9, 2),
2277   /* 010  */ V(9, 2, 2),
2278   /* 011  */ V(9, 2, 2),
2279   /* 100  */ V(7, 6, 3),
2280   /* 101  */ V(0, 9, 3),
2281   /* 110  */ V(1, 9, 2),
2282   /* 111  */ V(1, 9, 2),
2283
2284   /* 0001 0011 ... */
2285   /* 000  */ V(9, 1, 2),        /* 224 */
2286   /* 001  */ V(9, 1, 2),
2287   /* 010  */ V(9, 0, 3),
2288   /* 011  */ V(4, 8, 3),
2289   /* 100  */ V(8, 4, 3),
2290   /* 101  */ V(7, 5, 3),
2291   /* 110  */ V(3, 8, 3),
2292   /* 111  */ V(8, 3, 3),
2293
2294   /* 0001 0100 ... */
2295   /* 000  */ V(6, 6, 3),        /* 232 */
2296   /* 001  */ V(2, 8, 3),
2297   /* 010  */ V(8, 2, 2),
2298   /* 011  */ V(8, 2, 2),
2299   /* 100  */ V(4, 7, 3),
2300   /* 101  */ V(7, 4, 3),
2301   /* 110  */ V(1, 8, 2),
2302   /* 111  */ V(1, 8, 2),
2303
2304   /* 0001 0101 ... */
2305   /* 000  */ V(8, 1, 2),        /* 240 */
2306   /* 001  */ V(8, 1, 2),
2307   /* 010  */ V(8, 0, 2),
2308   /* 011  */ V(8, 0, 2),
2309   /* 100  */ V(0, 8, 3),
2310   /* 101  */ V(5, 6, 3),
2311   /* 110  */ V(3, 7, 2),
2312   /* 111  */ V(3, 7, 2),
2313
2314   /* 0001 0110 ... */
2315   /* 000  */ V(7, 3, 2),        /* 248 */
2316   /* 001  */ V(7, 3, 2),
2317   /* 010  */ V(6, 5, 3),
2318   /* 011  */ V(4, 6, 3),
2319   /* 100  */ V(2, 7, 2),
2320   /* 101  */ V(2, 7, 2),
2321   /* 110  */ V(7, 2, 2),
2322   /* 111  */ V(7, 2, 2),
2323
2324   /* 0001 0111 ... */
2325   /* 000  */ V(6, 4, 3),        /* 256 */
2326   /* 001  */ V(5, 5, 3),
2327   /* 010  */ V(0, 7, 2),
2328   /* 011  */ V(0, 7, 2),
2329   /* 100  */ V(1, 7, 1),
2330   /* 101  */ V(1, 7, 1),
2331   /* 110  */ V(1, 7, 1),
2332   /* 111  */ V(1, 7, 1),
2333
2334   /* 0001 1000 ... */
2335   /* 00   */ V(7, 1, 1),        /* 264  */
2336   /* 01   */ V(7, 1, 1),
2337   /* 10   */ V(7, 0, 2),
2338   /* 11   */ V(3, 6, 2),
2339
2340   /* 0001 1001 ... */
2341   /* 00   */ V(6, 3, 2),        /* 268 */
2342   /* 01   */ V(4, 5, 2),
2343   /* 10   */ V(5, 4, 2),
2344   /* 11   */ V(2, 6, 2),
2345
2346   /* 0001 1010 ... */
2347   /* 0    */ V(6, 2, 1),        /* 272 */
2348   /* 1    */ V(1, 6, 1),
2349
2350   /* 0001 1011 ... */
2351   /* 00   */ V(6, 1, 1),        /* 274 */
2352   /* 01   */ V(6, 1, 1),
2353   /* 10   */ V(0, 6, 2),
2354   /* 11   */ V(6, 0, 2),
2355
2356   /* 0001 1100 ... */
2357   /* 00   */ V(5, 3, 1),        /* 278 */
2358   /* 01   */ V(5, 3, 1),
2359   /* 10   */ V(3, 5, 2),
2360   /* 11   */ V(4, 4, 2),
2361
2362   /* 0001 1101 ... */
2363   /* 0    */ V(2, 5, 1),        /* 282 */
2364   /* 1    */ V(5, 2, 1),
2365
2366   /* 0001 1111 ... */
2367   /* 0    */ V(1, 5, 1),        /* 284 */
2368   /* 1    */ V(0, 5, 1),
2369
2370   /* 0010 0000 ... */
2371   /* 0    */ V(3, 4, 1),        /* 286 */
2372   /* 1    */ V(4, 3, 1),
2373
2374   /* 0010 0001 ... */
2375   /* 0    */ V(5, 0, 1),        /* 288 */
2376   /* 1    */ V(2, 4, 1),
2377
2378   /* 0010 0010 ... */
2379   /* 0    */ V(4, 2, 1),        /* 290 */
2380   /* 1    */ V(3, 3, 1),
2381
2382   /* 0010 0101 ... */
2383   /* 0    */ V(0, 4, 1),        /* 292 */
2384   /* 1    */ V(4, 0, 1),
2385
2386   /* 0000 0110 1100 ... */
2387   /* 0000 */ V(12, 14, 4),      /* 294 */
2388   /* 0001 */ PTR(400, 1),
2389   /* 0010 */ V(13, 14, 3),
2390   /* 0011 */ V(13, 14, 3),
2391   /* 0100 */ V(14, 9, 3),
2392   /* 0101 */ V(14, 9, 3),
2393   /* 0110 */ V(14, 10, 4),
2394   /* 0111 */ V(13, 9, 4),
2395   /* 1000 */ V(14, 14, 2),
2396   /* 1001 */ V(14, 14, 2),
2397   /* 1010 */ V(14, 14, 2),
2398   /* 1011 */ V(14, 14, 2),
2399   /* 1100 */ V(14, 13, 3),
2400   /* 1101 */ V(14, 13, 3),
2401   /* 1110 */ V(14, 11, 3),
2402   /* 1111 */ V(14, 11, 3),
2403
2404   /* 0000 0110 1101 ... */
2405   /* 000  */ V(11, 14, 2),      /* 310 */
2406   /* 001  */ V(11, 14, 2),
2407   /* 010  */ V(12, 13, 2),
2408   /* 011  */ V(12, 13, 2),
2409   /* 100  */ V(13, 12, 3),
2410   /* 101  */ V(13, 11, 3),
2411   /* 110  */ V(10, 14, 2),
2412   /* 111  */ V(10, 14, 2),
2413
2414   /* 0000 0110 1110 ... */
2415   /* 000  */ V(12, 12, 2),      /* 318 */
2416   /* 001  */ V(12, 12, 2),
2417   /* 010  */ V(10, 13, 3),
2418   /* 011  */ V(13, 10, 3),
2419   /* 100  */ V(7, 14, 3),
2420   /* 101  */ V(10, 12, 3),
2421   /* 110  */ V(12, 10, 2),
2422   /* 111  */ V(12, 10, 2),
2423
2424   /* 0000 0110 1111 ... */
2425   /* 000  */ V(12, 9, 3),       /* 326 */
2426   /* 001  */ V(7, 13, 3),
2427   /* 010  */ V(5, 14, 2),
2428   /* 011  */ V(5, 14, 2),
2429   /* 100  */ V(11, 13, 1),
2430   /* 101  */ V(11, 13, 1),
2431   /* 110  */ V(11, 13, 1),
2432   /* 111  */ V(11, 13, 1),
2433
2434   /* 0000 1011 0000 ... */
2435   /* 00   */ V(9, 14, 1),       /* 334 */
2436   /* 01   */ V(9, 14, 1),
2437   /* 10   */ V(11, 12, 2),
2438   /* 11   */ V(12, 11, 2),
2439
2440   /* 0000 1011 0001 ... */
2441   /* 00   */ V(8, 14, 2),       /* 338 */
2442   /* 01   */ V(14, 8, 2),
2443   /* 10   */ V(9, 13, 2),
2444   /* 11   */ V(14, 7, 2),
2445
2446   /* 0000 1011 0010 ... */
2447   /* 00   */ V(11, 11, 2),      /* 342 */
2448   /* 01   */ V(8, 13, 2),
2449   /* 10   */ V(13, 8, 2),
2450   /* 11   */ V(6, 14, 2),
2451
2452   /* 0000 1011 0011 ... */
2453   /* 0    */ V(14, 6, 1),       /* 346 */
2454   /* 1    */ V(9, 12, 1),
2455
2456   /* 0000 1011 0100 ... */
2457   /* 00   */ V(10, 11, 2),      /* 348 */
2458   /* 01   */ V(11, 10, 2),
2459   /* 10   */ V(14, 5, 2),
2460   /* 11   */ V(13, 7, 2),
2461
2462   /* 0000 1011 0101 ... */
2463   /* 00   */ V(4, 14, 1),       /* 352 */
2464   /* 01   */ V(4, 14, 1),
2465   /* 10   */ V(14, 4, 2),
2466   /* 11   */ V(8, 12, 2),
2467
2468   /* 0000 1011 0110 ... */
2469   /* 0    */ V(12, 8, 1),       /* 356 */
2470   /* 1    */ V(3, 14, 1),
2471
2472   /* 0000 1011 0111 ... */
2473   /* 00   */ V(6, 13, 1),       /* 358 */
2474   /* 01   */ V(6, 13, 1),
2475   /* 10   */ V(13, 6, 2),
2476   /* 11   */ V(9, 11, 2),
2477
2478   /* 0000 1011 1000 ... */
2479   /* 00   */ V(11, 9, 2),       /* 362 */
2480   /* 01   */ V(10, 10, 2),
2481   /* 10   */ V(14, 1, 1),
2482   /* 11   */ V(14, 1, 1),
2483
2484   /* 0000 1011 1001 ... */
2485   /* 00   */ V(13, 4, 1),       /* 366 */
2486   /* 01   */ V(13, 4, 1),
2487   /* 10   */ V(11, 8, 2),
2488   /* 11   */ V(10, 9, 2),
2489
2490   /* 0000 1011 1010 ... */
2491   /* 00   */ V(7, 11, 1),       /* 370 */
2492   /* 01   */ V(7, 11, 1),
2493   /* 10   */ V(11, 7, 2),
2494   /* 11   */ V(13, 0, 2),
2495
2496   /* 0000 1011 1100 ... */
2497   /* 0    */ V(0, 14, 1),       /* 374 */
2498   /* 1    */ V(14, 0, 1),
2499
2500   /* 0000 1011 1101 ... */
2501   /* 0    */ V(5, 13, 1),       /* 376 */
2502   /* 1    */ V(13, 5, 1),
2503
2504   /* 0000 1011 1110 ... */
2505   /* 0    */ V(7, 12, 1),       /* 378 */
2506   /* 1    */ V(12, 7, 1),
2507
2508   /* 0000 1011 1111 ... */
2509   /* 0    */ V(4, 13, 1),       /* 380 */
2510   /* 1    */ V(8, 11, 1),
2511
2512   /* 0000 1100 0000 ... */
2513   /* 0    */ V(9, 10, 1),       /* 382 */
2514   /* 1    */ V(6, 12, 1),
2515
2516   /* 0000 1100 0001 ... */
2517   /* 0    */ V(12, 6, 1),       /* 384 */
2518   /* 1    */ V(3, 13, 1),
2519
2520   /* 0000 1100 0010 ... */
2521   /* 0    */ V(5, 12, 1),       /* 386 */
2522   /* 1    */ V(12, 5, 1),
2523
2524   /* 0000 1100 0100 ... */
2525   /* 0    */ V(8, 10, 1),       /* 388 */
2526   /* 1    */ V(10, 8, 1),
2527
2528   /* 0000 1100 0101 ... */
2529   /* 0    */ V(9, 9, 1),        /* 390 */
2530   /* 1    */ V(4, 12, 1),
2531
2532   /* 0000 1100 0110 ... */
2533   /* 0    */ V(11, 6, 1),       /* 392 */
2534   /* 1    */ V(7, 10, 1),
2535
2536   /* 0000 1100 1000 ... */
2537   /* 0    */ V(5, 11, 1),       /* 394 */
2538   /* 1    */ V(8, 9, 1),
2539
2540   /* 0000 1100 1011 ... */
2541   /* 0    */ V(9, 8, 1),        /* 396 */
2542   /* 1    */ V(7, 9, 1),
2543
2544   /* 0000 1101 0101 ... */
2545   /* 0    */ V(9, 7, 1),        /* 398 */
2546   /* 1    */ V(8, 8, 1),
2547
2548   /* 0000 0110 1100 0001 ... */
2549   /* 0    */ V(14, 12, 1),      /* 400 */
2550   /* 1    */ V(13, 13, 1)
2551 };
2552
2553 static
2554 union huffpair const hufftab24[] = {
2555   /* 0000 */ PTR(16, 4),
2556   /* 0001 */ PTR(32, 4),
2557   /* 0010 */ PTR(48, 4),
2558   /* 0011 */ V(15, 15, 4),
2559   /* 0100 */ PTR(64, 4),
2560   /* 0101 */ PTR(80, 4),
2561   /* 0110 */ PTR(96, 4),
2562   /* 0111 */ PTR(112, 4),
2563   /* 1000 */ PTR(128, 4),
2564   /* 1001 */ PTR(144, 4),
2565   /* 1010 */ PTR(160, 3),
2566   /* 1011 */ PTR(168, 2),
2567   /* 1100 */ V(1, 1, 4),
2568   /* 1101 */ V(0, 1, 4),
2569   /* 1110 */ V(1, 0, 4),
2570   /* 1111 */ V(0, 0, 4),
2571
2572   /* 0000 ... */
2573   /* 0000 */ V(14, 15, 4),      /* 16 */
2574   /* 0001 */ V(15, 14, 4),
2575   /* 0010 */ V(13, 15, 4),
2576   /* 0011 */ V(15, 13, 4),
2577   /* 0100 */ V(12, 15, 4),
2578   /* 0101 */ V(15, 12, 4),
2579   /* 0110 */ V(11, 15, 4),
2580   /* 0111 */ V(15, 11, 4),
2581   /* 1000 */ V(15, 10, 3),
2582   /* 1001 */ V(15, 10, 3),
2583   /* 1010 */ V(10, 15, 4),
2584   /* 1011 */ V(9, 15, 4),
2585   /* 1100 */ V(15, 9, 3),
2586   /* 1101 */ V(15, 9, 3),
2587   /* 1110 */ V(15, 8, 3),
2588   /* 1111 */ V(15, 8, 3),
2589
2590   /* 0001 ... */
2591   /* 0000 */ V(8, 15, 4),       /* 32 */
2592   /* 0001 */ V(7, 15, 4),
2593   /* 0010 */ V(15, 7, 3),
2594   /* 0011 */ V(15, 7, 3),
2595   /* 0100 */ V(6, 15, 3),
2596   /* 0101 */ V(6, 15, 3),
2597   /* 0110 */ V(15, 6, 3),
2598   /* 0111 */ V(15, 6, 3),
2599   /* 1000 */ V(5, 15, 3),
2600   /* 1001 */ V(5, 15, 3),
2601   /* 1010 */ V(15, 5, 3),
2602   /* 1011 */ V(15, 5, 3),
2603   /* 1100 */ V(4, 15, 3),
2604   /* 1101 */ V(4, 15, 3),
2605   /* 1110 */ V(15, 4, 3),
2606   /* 1111 */ V(15, 4, 3),
2607
2608   /* 0010 ... */
2609   /* 0000 */ V(3, 15, 3),       /* 48 */
2610   /* 0001 */ V(3, 15, 3),
2611   /* 0010 */ V(15, 3, 3),
2612   /* 0011 */ V(15, 3, 3),
2613   /* 0100 */ V(2, 15, 3),
2614   /* 0101 */ V(2, 15, 3),
2615   /* 0110 */ V(15, 2, 3),
2616   /* 0111 */ V(15, 2, 3),
2617   /* 1000 */ V(15, 1, 3),
2618   /* 1001 */ V(15, 1, 3),
2619   /* 1010 */ V(1, 15, 4),
2620   /* 1011 */ V(15, 0, 4),
2621   /* 1100 */ PTR(172, 3),
2622   /* 1101 */ PTR(180, 3),
2623   /* 1110 */ PTR(188, 3),
2624   /* 1111 */ PTR(196, 3),
2625
2626   /* 0100 ... */
2627   /* 0000 */ PTR(204, 4),       /* 64 */
2628   /* 0001 */ PTR(220, 3),
2629   /* 0010 */ PTR(228, 3),
2630   /* 0011 */ PTR(236, 3),
2631   /* 0100 */ PTR(244, 2),
2632   /* 0101 */ PTR(248, 2),
2633   /* 0110 */ PTR(252, 2),
2634   /* 0111 */ PTR(256, 2),
2635   /* 1000 */ PTR(260, 2),
2636   /* 1001 */ PTR(264, 2),
2637   /* 1010 */ PTR(268, 2),
2638   /* 1011 */ PTR(272, 2),
2639   /* 1100 */ PTR(276, 2),
2640   /* 1101 */ PTR(280, 3),
2641   /* 1110 */ PTR(288, 2),
2642   /* 1111 */ PTR(292, 2),
2643
2644   /* 0101 ... */
2645   /* 0000 */ PTR(296, 2),       /* 80 */
2646   /* 0001 */ PTR(300, 3),
2647   /* 0010 */ PTR(308, 2),
2648   /* 0011 */ PTR(312, 3),
2649   /* 0100 */ PTR(320, 1),
2650   /* 0101 */ PTR(322, 2),
2651   /* 0110 */ PTR(326, 2),
2652   /* 0111 */ PTR(330, 1),
2653   /* 1000 */ PTR(332, 2),
2654   /* 1001 */ PTR(336, 1),
2655   /* 1010 */ PTR(338, 1),
2656   /* 1011 */ PTR(340, 1),
2657   /* 1100 */ PTR(342, 1),
2658   /* 1101 */ PTR(344, 1),
2659   /* 1110 */ PTR(346, 1),
2660   /* 1111 */ PTR(348, 1),
2661
2662   /* 0110 ... */
2663   /* 0000 */ PTR(350, 1),       /* 96 */
2664   /* 0001 */ PTR(352, 1),
2665   /* 0010 */ PTR(354, 1),
2666   /* 0011 */ PTR(356, 1),
2667   /* 0100 */ PTR(358, 1),
2668   /* 0101 */ PTR(360, 1),
2669   /* 0110 */ PTR(362, 1),
2670   /* 0111 */ PTR(364, 1),
2671   /* 1000 */ PTR(366, 1),
2672   /* 1001 */ PTR(368, 1),
2673   /* 1010 */ PTR(370, 2),
2674   /* 1011 */ PTR(374, 1),
2675   /* 1100 */ PTR(376, 2),
2676   /* 1101 */ V(7, 3, 4),
2677   /* 1110 */ PTR(380, 1),
2678   /* 1111 */ V(7, 2, 4),
2679
2680   /* 0111 ... */
2681   /* 0000 */ V(4, 6, 4),        /* 112 */
2682   /* 0001 */ V(6, 4, 4),
2683   /* 0010 */ V(5, 5, 4),
2684   /* 0011 */ V(7, 1, 4),
2685   /* 0100 */ V(3, 6, 4),
2686   /* 0101 */ V(6, 3, 4),
2687   /* 0110 */ V(4, 5, 4),
2688   /* 0111 */ V(5, 4, 4),
2689   /* 1000 */ V(2, 6, 4),
2690   /* 1001 */ V(6, 2, 4),
2691   /* 1010 */ V(1, 6, 4),
2692   /* 1011 */ V(6, 1, 4),
2693   /* 1100 */ PTR(382, 1),
2694   /* 1101 */ V(3, 5, 4),
2695   /* 1110 */ V(5, 3, 4),
2696   /* 1111 */ V(4, 4, 4),
2697
2698   /* 1000 ... */
2699   /* 0000 */ V(2, 5, 4),        /* 128 */
2700   /* 0001 */ V(5, 2, 4),
2701   /* 0010 */ V(1, 5, 4),
2702   /* 0011 */ PTR(384, 1),
2703   /* 0100 */ V(5, 1, 3),
2704   /* 0101 */ V(5, 1, 3),
2705   /* 0110 */ V(3, 4, 4),
2706   /* 0111 */ V(4, 3, 4),
2707   /* 1000 */ V(2, 4, 3),
2708   /* 1001 */ V(2, 4, 3),
2709   /* 1010 */ V(4, 2, 3),
2710   /* 1011 */ V(4, 2, 3),
2711   /* 1100 */ V(3, 3, 3),
2712   /* 1101 */ V(3, 3, 3),
2713   /* 1110 */ V(1, 4, 3),
2714   /* 1111 */ V(1, 4, 3),
2715
2716   /* 1001 ... */
2717   /* 0000 */ V(4, 1, 3),        /* 144 */
2718   /* 0001 */ V(4, 1, 3),
2719   /* 0010 */ V(0, 4, 4),
2720   /* 0011 */ V(4, 0, 4),
2721   /* 0100 */ V(2, 3, 3),
2722   /* 0101 */ V(2, 3, 3),
2723   /* 0110 */ V(3, 2, 3),
2724   /* 0111 */ V(3, 2, 3),
2725   /* 1000 */ V(1, 3, 2),
2726   /* 1001 */ V(1, 3, 2),
2727   /* 1010 */ V(1, 3, 2),
2728   /* 1011 */ V(1, 3, 2),
2729   /* 1100 */ V(3, 1, 2),
2730   /* 1101 */ V(3, 1, 2),
2731   /* 1110 */ V(3, 1, 2),
2732   /* 1111 */ V(3, 1, 2),
2733
2734   /* 1010 ... */
2735   /* 000  */ V(0, 3, 3),        /* 160 */
2736   /* 001  */ V(3, 0, 3),
2737   /* 010  */ V(2, 2, 2),
2738   /* 011  */ V(2, 2, 2),
2739   /* 100  */ V(1, 2, 1),
2740   /* 101  */ V(1, 2, 1),
2741   /* 110  */ V(1, 2, 1),
2742   /* 111  */ V(1, 2, 1),
2743
2744   /* 1011 ... */
2745   /* 00   */ V(2, 1, 1),        /* 168 */
2746   /* 01   */ V(2, 1, 1),
2747   /* 10   */ V(0, 2, 2),
2748   /* 11   */ V(2, 0, 2),
2749
2750   /* 0010 1100 ... */
2751   /* 000  */ V(0, 15, 1),       /* 172 */
2752   /* 001  */ V(0, 15, 1),
2753   /* 010  */ V(0, 15, 1),
2754   /* 011  */ V(0, 15, 1),
2755   /* 100  */ V(14, 14, 3),
2756   /* 101  */ V(13, 14, 3),
2757   /* 110  */ V(14, 13, 3),
2758   /* 111  */ V(12, 14, 3),
2759
2760   /* 0010 1101 ... */
2761   /* 000  */ V(14, 12, 3),      /* 180 */
2762   /* 001  */ V(13, 13, 3),
2763   /* 010  */ V(11, 14, 3),
2764   /* 011  */ V(14, 11, 3),
2765   /* 100  */ V(12, 13, 3),
2766   /* 101  */ V(13, 12, 3),
2767   /* 110  */ V(10, 14, 3),
2768   /* 111  */ V(14, 10, 3),
2769
2770   /* 0010 1110 ... */
2771   /* 000  */ V(11, 13, 3),      /* 188 */
2772   /* 001  */ V(13, 11, 3),
2773   /* 010  */ V(12, 12, 3),
2774   /* 011  */ V(9, 14, 3),
2775   /* 100  */ V(14, 9, 3),
2776   /* 101  */ V(10, 13, 3),
2777   /* 110  */ V(13, 10, 3),
2778   /* 111  */ V(11, 12, 3),
2779
2780   /* 0010 1111 ... */
2781   /* 000  */ V(12, 11, 3),      /* 196 */
2782   /* 001  */ V(8, 14, 3),
2783   /* 010  */ V(14, 8, 3),
2784   /* 011  */ V(9, 13, 3),
2785   /* 100  */ V(13, 9, 3),
2786   /* 101  */ V(7, 14, 3),
2787   /* 110  */ V(14, 7, 3),
2788   /* 111  */ V(10, 12, 3),
2789
2790   /* 0100 0000 ... */
2791   /* 0000 */ V(12, 10, 3),      /* 204 */
2792   /* 0001 */ V(12, 10, 3),
2793   /* 0010 */ V(11, 11, 3),
2794   /* 0011 */ V(11, 11, 3),
2795   /* 0100 */ V(8, 13, 3),
2796   /* 0101 */ V(8, 13, 3),
2797   /* 0110 */ V(13, 8, 3),
2798   /* 0111 */ V(13, 8, 3),
2799   /* 1000 */ V(0, 14, 4),
2800   /* 1001 */ V(14, 0, 4),
2801   /* 1010 */ V(0, 13, 3),
2802   /* 1011 */ V(0, 13, 3),
2803   /* 1100 */ V(14, 6, 2),
2804   /* 1101 */ V(14, 6, 2),
2805   /* 1110 */ V(14, 6, 2),
2806   /* 1111 */ V(14, 6, 2),
2807
2808   /* 0100 0001 ... */
2809   /* 000  */ V(6, 14, 3),       /* 220 */
2810   /* 001  */ V(9, 12, 3),
2811   /* 010  */ V(12, 9, 2),
2812   /* 011  */ V(12, 9, 2),
2813   /* 100  */ V(5, 14, 2),
2814   /* 101  */ V(5, 14, 2),
2815   /* 110  */ V(11, 10, 2),
2816   /* 111  */ V(11, 10, 2),
2817
2818   /* 0100 0010 ... */
2819   /* 000  */ V(14, 5, 2),       /* 228 */
2820   /* 001  */ V(14, 5, 2),
2821   /* 010  */ V(10, 11, 3),
2822   /* 011  */ V(7, 13, 3),
2823   /* 100  */ V(13, 7, 2),
2824   /* 101  */ V(13, 7, 2),
2825   /* 110  */ V(14, 4, 2),
2826   /* 111  */ V(14, 4, 2),
2827
2828   /* 0100 0011 ... */
2829   /* 000  */ V(8, 12, 2),       /* 236 */
2830   /* 001  */ V(8, 12, 2),
2831   /* 010  */ V(12, 8, 2),
2832   /* 011  */ V(12, 8, 2),
2833   /* 100  */ V(4, 14, 3),
2834   /* 101  */ V(2, 14, 3),
2835   /* 110  */ V(3, 14, 2),
2836   /* 111  */ V(3, 14, 2),
2837
2838   /* 0100 0100 ... */
2839   /* 00   */ V(6, 13, 2),       /* 244 */
2840   /* 01   */ V(13, 6, 2),
2841   /* 10   */ V(14, 3, 2),
2842   /* 11   */ V(9, 11, 2),
2843
2844   /* 0100 0101 ... */
2845   /* 00   */ V(11, 9, 2),       /* 248 */
2846   /* 01   */ V(10, 10, 2),
2847   /* 10   */ V(14, 2, 2),
2848   /* 11   */ V(1, 14, 2),
2849
2850   /* 0100 0110 ... */
2851   /* 00   */ V(14, 1, 2),       /* 252 */
2852   /* 01   */ V(5, 13, 2),
2853   /* 10   */ V(13, 5, 2),
2854   /* 11   */ V(7, 12, 2),
2855
2856   /* 0100 0111 ... */
2857   /* 00   */ V(12, 7, 2),       /* 256 */
2858   /* 01   */ V(4, 13, 2),
2859   /* 10   */ V(8, 11, 2),
2860   /* 11   */ V(11, 8, 2),
2861
2862   /* 0100 1000 ... */
2863   /* 00   */ V(13, 4, 2),       /* 260 */
2864   /* 01   */ V(9, 10, 2),
2865   /* 10   */ V(10, 9, 2),
2866   /* 11   */ V(6, 12, 2),
2867
2868   /* 0100 1001 ... */
2869   /* 00   */ V(12, 6, 2),       /* 264 */
2870   /* 01   */ V(3, 13, 2),
2871   /* 10   */ V(13, 3, 2),
2872   /* 11   */ V(2, 13, 2),
2873
2874   /* 0100 1010 ... */
2875   /* 00   */ V(13, 2, 2),       /* 268 */
2876   /* 01   */ V(1, 13, 2),
2877   /* 10   */ V(7, 11, 2),
2878   /* 11   */ V(11, 7, 2),
2879
2880   /* 0100 1011 ... */
2881   /* 00   */ V(13, 1, 2),       /* 272 */
2882   /* 01   */ V(5, 12, 2),
2883   /* 10   */ V(12, 5, 2),
2884   /* 11   */ V(8, 10, 2),
2885
2886   /* 0100 1100 ... */
2887   /* 00   */ V(10, 8, 2),       /* 276 */
2888   /* 01   */ V(9, 9, 2),
2889   /* 10   */ V(4, 12, 2),
2890   /* 11   */ V(12, 4, 2),
2891
2892   /* 0100 1101 ... */
2893   /* 000  */ V(6, 11, 2),       /* 280 */
2894   /* 001  */ V(6, 11, 2),
2895   /* 010  */ V(11, 6, 2),
2896   /* 011  */ V(11, 6, 2),
2897   /* 100  */ V(13, 0, 3),
2898   /* 101  */ V(0, 12, 3),
2899   /* 110  */ V(3, 12, 2),
2900   /* 111  */ V(3, 12, 2),
2901
2902   /* 0100 1110 ... */
2903   /* 00   */ V(12, 3, 2),       /* 288 */
2904   /* 01   */ V(7, 10, 2),
2905   /* 10   */ V(10, 7, 2),
2906   /* 11   */ V(2, 12, 2),
2907
2908   /* 0100 1111 ... */
2909   /* 00   */ V(12, 2, 2),       /* 292 */
2910   /* 01   */ V(5, 11, 2),
2911   /* 10   */ V(11, 5, 2),
2912   /* 11   */ V(1, 12, 2),
2913
2914   /* 0101 0000 ... */
2915   /* 00   */ V(8, 9, 2),        /* 296 */
2916   /* 01   */ V(9, 8, 2),
2917   /* 10   */ V(12, 1, 2),
2918   /* 11   */ V(4, 11, 2),
2919
2920   /* 0101 0001 ... */
2921   /* 000  */ V(12, 0, 3),       /* 300 */
2922   /* 001  */ V(0, 11, 3),
2923   /* 010  */ V(3, 11, 2),
2924   /* 011  */ V(3, 11, 2),
2925   /* 100  */ V(11, 0, 3),
2926   /* 101  */ V(0, 10, 3),
2927   /* 110  */ V(1, 10, 2),
2928   /* 111  */ V(1, 10, 2),
2929
2930   /* 0101 0010 ... */
2931   /* 00   */ V(11, 4, 1),       /* 308 */
2932   /* 01   */ V(11, 4, 1),
2933   /* 10   */ V(6, 10, 2),
2934   /* 11   */ V(10, 6, 2),
2935
2936   /* 0101 0011 ... */
2937   /* 000  */ V(7, 9, 2),        /* 312 */
2938   /* 001  */ V(7, 9, 2),
2939   /* 010  */ V(9, 7, 2),
2940   /* 011  */ V(9, 7, 2),
2941   /* 100  */ V(10, 0, 3),
2942   /* 101  */ V(0, 9, 3),
2943   /* 110  */ V(9, 0, 2),
2944   /* 111  */ V(9, 0, 2),
2945
2946   /* 0101 0100 ... */
2947   /* 0    */ V(11, 3, 1),       /* 320 */
2948   /* 1    */ V(8, 8, 1),
2949
2950   /* 0101 0101 ... */
2951   /* 00   */ V(2, 11, 2),       /* 322 */
2952   /* 01   */ V(5, 10, 2),
2953   /* 10   */ V(11, 2, 1),
2954   /* 11   */ V(11, 2, 1),
2955
2956   /* 0101 0110 ... */
2957   /* 00   */ V(10, 5, 2),       /* 326 */
2958   /* 01   */ V(1, 11, 2),
2959   /* 10   */ V(11, 1, 2),
2960   /* 11   */ V(6, 9, 2),
2961
2962   /* 0101 0111 ... */
2963   /* 0    */ V(9, 6, 1),        /* 330 */
2964   /* 1    */ V(10, 4, 1),
2965
2966   /* 0101 1000 ... */
2967   /* 00   */ V(4, 10, 2),       /* 332 */
2968   /* 01   */ V(7, 8, 2),
2969   /* 10   */ V(8, 7, 1),
2970   /* 11   */ V(8, 7, 1),
2971
2972   /* 0101 1001 ... */
2973   /* 0    */ V(3, 10, 1),       /* 336 */
2974   /* 1    */ V(10, 3, 1),
2975
2976   /* 0101 1010 ... */
2977   /* 0    */ V(5, 9, 1),        /* 338 */
2978   /* 1    */ V(9, 5, 1),
2979
2980   /* 0101 1011 ... */
2981   /* 0    */ V(2, 10, 1),       /* 340 */
2982   /* 1    */ V(10, 2, 1),
2983
2984   /* 0101 1100 ... */
2985   /* 0    */ V(10, 1, 1),       /* 342 */
2986   /* 1    */ V(6, 8, 1),
2987
2988   /* 0101 1101 ... */
2989   /* 0    */ V(8, 6, 1),        /* 344 */
2990   /* 1    */ V(7, 7, 1),
2991
2992   /* 0101 1110 ... */
2993   /* 0    */ V(4, 9, 1),        /* 346 */
2994   /* 1    */ V(9, 4, 1),
2995
2996   /* 0101 1111 ... */
2997   /* 0    */ V(3, 9, 1),        /* 348 */
2998   /* 1    */ V(9, 3, 1),
2999
3000   /* 0110 0000 ... */
3001   /* 0    */ V(5, 8, 1),        /* 350 */
3002   /* 1    */ V(8, 5, 1),
3003
3004   /* 0110 0001 ... */
3005   /* 0    */ V(2, 9, 1),        /* 352 */
3006   /* 1    */ V(6, 7, 1),
3007
3008   /* 0110 0010 ... */
3009   /* 0    */ V(7, 6, 1),        /* 354 */
3010   /* 1    */ V(9, 2, 1),
3011
3012   /* 0110 0011 ... */
3013   /* 0    */ V(1, 9, 1),        /* 356 */
3014   /* 1    */ V(9, 1, 1),
3015
3016   /* 0110 0100 ... */
3017   /* 0    */ V(4, 8, 1),        /* 358 */
3018   /* 1    */ V(8, 4, 1),
3019
3020   /* 0110 0101 ... */
3021   /* 0    */ V(5, 7, 1),        /* 360 */
3022   /* 1    */ V(7, 5, 1),
3023
3024   /* 0110 0110 ... */
3025   /* 0    */ V(3, 8, 1),        /* 362 */
3026   /* 1    */ V(8, 3, 1),
3027
3028   /* 0110 0111 ... */
3029   /* 0    */ V(6, 6, 1),        /* 364 */
3030   /* 1    */ V(2, 8, 1),
3031
3032   /* 0110 1000 ... */
3033   /* 0    */ V(8, 2, 1),        /* 366 */
3034   /* 1    */ V(1, 8, 1),
3035
3036   /* 0110 1001 ... */
3037   /* 0    */ V(4, 7, 1),        /* 368 */
3038   /* 1    */ V(7, 4, 1),
3039
3040   /* 0110 1010 ... */
3041   /* 00   */ V(8, 1, 1),        /* 370 */
3042   /* 01   */ V(8, 1, 1),
3043   /* 10   */ V(0, 8, 2),
3044   /* 11   */ V(8, 0, 2),
3045
3046   /* 0110 1011 ... */
3047   /* 0    */ V(5, 6, 1),        /* 374 */
3048   /* 1    */ V(6, 5, 1),
3049
3050   /* 0110 1100 ... */
3051   /* 00   */ V(1, 7, 1),        /* 376 */
3052   /* 01   */ V(1, 7, 1),
3053   /* 10   */ V(0, 7, 2),
3054   /* 11   */ V(7, 0, 2),
3055
3056   /* 0110 1110 ... */
3057   /* 0    */ V(3, 7, 1),        /* 380  */
3058   /* 1    */ V(2, 7, 1),
3059
3060   /* 0111 1100 ... */
3061   /* 0    */ V(0, 6, 1),        /* 382 */
3062   /* 1    */ V(6, 0, 1),
3063
3064   /* 1000 0011 ... */
3065   /* 0    */ V(0, 5, 1),        /* 384 */
3066   /* 1    */ V(5, 0, 1)
3067 };
3068
3069 # undef V
3070 # undef PTR
3071
3072 /* external tables */
3073
3074 union huffquad const *const mad_huff_quad_table[2] = { hufftabA, hufftabB };
3075
3076 struct hufftable const mad_huff_pair_table[32] = {
3077   /*  0 */ { hufftab0,   0, 0 },
3078   /*  1 */ { hufftab1,   0, 3 },
3079   /*  2 */ { hufftab2,   0, 3 },
3080   /*  3 */ { hufftab3,   0, 3 },
3081   /*  4 */ { 0 /* not used */ },
3082   /*  5 */ { hufftab5,   0, 3 },
3083   /*  6 */ { hufftab6,   0, 4 },
3084   /*  7 */ { hufftab7,   0, 4 },
3085   /*  8 */ { hufftab8,   0, 4 },
3086   /*  9 */ { hufftab9,   0, 4 },
3087   /* 10 */ { hufftab10,  0, 4 },
3088   /* 11 */ { hufftab11,  0, 4 },
3089   /* 12 */ { hufftab12,  0, 4 },
3090   /* 13 */ { hufftab13,  0, 4 },
3091   /* 14 */ { 0 /* not used */ },
3092   /* 15 */ { hufftab15,  0, 4 },
3093   /* 16 */ { hufftab16,  1, 4 },
3094   /* 17 */ { hufftab16,  2, 4 },
3095   /* 18 */ { hufftab16,  3, 4 },
3096   /* 19 */ { hufftab16,  4, 4 },
3097   /* 20 */ { hufftab16,  6, 4 },
3098   /* 21 */ { hufftab16,  8, 4 },
3099   /* 22 */ { hufftab16, 10, 4 },
3100   /* 23 */ { hufftab16, 13, 4 },
3101   /* 24 */ { hufftab24,  4, 4 },
3102   /* 25 */ { hufftab24,  5, 4 },
3103   /* 26 */ { hufftab24,  6, 4 },
3104   /* 27 */ { hufftab24,  7, 4 },
3105   /* 28 */ { hufftab24,  8, 4 },
3106   /* 29 */ { hufftab24,  9, 4 },
3107   /* 30 */ { hufftab24, 11, 4 },
3108   /* 31 */ { hufftab24, 13, 4 }
3109 };