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