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