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