mm.c: Add documentation of mood comparator macros.
[paraslash.git] / wmadata.h
1 /*
2  * WMA compatible decoder
3  * copyright (c) 2002 The FFmpeg Project
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21
22 /** \file wmadata.h Various WMA tables. */
23
24 /** Contains huffcodes, huffbits and run/level tables. */
25 struct coef_vlc_table {
26         /** Total number of codes. */
27         int n;
28         /** VLC bit values. */
29         const uint32_t *huffcodes;
30         /** VLC bit size. */
31         const uint8_t *huffbits;
32         /** Table to build run/level tables. */
33         const uint16_t *levels;
34 };
35
36 static const uint16_t wma_critical_freqs[25] = {
37         100, 200, 300, 400, 510, 630, 770, 920,
38         1080, 1270, 1480, 1720, 2000, 2320, 2700, 3150,
39         3700, 4400, 5300, 6400, 7700, 9500, 12000, 15500,
40         24500,
41 };
42
43 /* first value is number of bands */
44 static const uint8_t exponent_band_22050[3][25] = {
45         {10, 4, 8, 4, 8, 8, 12, 20, 24, 24, 16,},
46         {14, 4, 8, 8, 4, 12, 12, 16, 24, 16, 20, 24, 32, 40, 36,},
47         {23, 4, 4, 4, 8, 4, 4, 8, 8, 8, 8, 8, 12, 12, 16, 16, 24, 24, 32, 44,
48                 48, 60, 84, 72,},
49 };
50
51 static const uint8_t exponent_band_32000[3][25] = {
52         {11, 4, 4, 8, 4, 4, 12, 16, 24, 20, 28, 4,},
53         {15, 4, 8, 4, 4, 8, 8, 16, 20, 12, 20, 20, 28, 40, 56, 8,},
54         {16, 8, 4, 8, 8, 12, 16, 20, 24, 40, 32, 32, 44, 56, 80, 112, 16,},
55 };
56
57 static const uint8_t exponent_band_44100[3][25] = {
58         {12, 4, 4, 4, 4, 4, 8, 8, 8, 12, 16, 20, 36,},
59         {15, 4, 8, 4, 8, 8, 4, 8, 8, 12, 12, 12, 24, 28, 40, 76,},
60         {17, 4, 8, 8, 4, 12, 12, 8, 8, 24, 16, 20, 24, 32, 40, 60, 80, 152,},
61 };
62
63 static const uint16_t wma_hgain_huffcodes[37] = {
64         0x00003, 0x002e7, 0x00001, 0x005cd, 0x0005d, 0x005c9, 0x0005e, 0x00003,
65         0x00016, 0x0000b, 0x00001, 0x00006, 0x00001, 0x00006, 0x00004, 0x00005,
66         0x00004, 0x00007, 0x00003, 0x00007, 0x00004, 0x0000a, 0x0000a, 0x00002,
67         0x00003, 0x00000, 0x00005, 0x00002, 0x0005f, 0x00004, 0x00003, 0x00002,
68         0x005c8, 0x000b8, 0x005ca, 0x005cb, 0x005cc,
69 };
70
71 static const uint8_t wma_hgain_huffbits[37] = {
72         10, 12, 10, 13, 9, 13, 9, 8,
73         7, 5, 5, 4, 4, 3, 3, 3,
74         4, 3, 4, 4, 5, 5, 6, 8,
75         7, 10, 8, 10, 9, 8, 9, 9,
76         13, 10, 13, 13, 13,
77 };
78
79 #define NB_LSP_COEFS 10
80
81 static const float wma_lsp_codebook[NB_LSP_COEFS][16] = {
82         {1.98732877, 1.97944528, 1.97179088, 1.96260549, 1.95038374, 1.93336114,
83          1.90719232, 1.86191415,},
84         {1.97260000, 1.96083160, 1.94982586, 1.93806164, 1.92516608, 1.91010199,
85          1.89232331, 1.87149812,
86          1.84564818, 1.81358067, 1.77620070, 1.73265264, 1.67907855, 1.60959081,
87          1.50829650, 1.33120330,},
88         {1.90109110, 1.86482426, 1.83419671, 1.80168452, 1.76650116, 1.72816320,
89          1.68502700, 1.63738256,
90          1.58501580, 1.51795181, 1.43679906, 1.33950585, 1.24176208, 1.12260729,
91          0.96749668, 0.74048265,},
92         {1.76943864, 1.67822463, 1.59946365, 1.53560582, 1.47470796, 1.41210167,
93          1.34509536, 1.27339507,
94          1.19303814, 1.09765169, 0.98818722, 0.87239446, 0.74369172, 0.59768184,
95          0.43168630, 0.17977021,},
96         {1.43428349, 1.32038354, 1.21074086, 1.10577988, 1.00561746, 0.90335924,
97          0.80437489, 0.70709671,
98          0.60427395, 0.49814048, 0.38509539, 0.27106800, 0.14407416, 0.00219910,
99          -0.16725141, -0.36936085,},
100         {0.99895687, 0.84188166, 0.70753739, 0.57906595, 0.47055563, 0.36966965,
101          0.26826648, 0.17163380,
102          0.07208392, -0.03062936, -1.40037388, -0.25128968, -0.37213937,
103          -0.51075646, -0.64887512, -0.80308031,},
104         {0.26515280, 0.06313551, -0.08872080, -0.21103548, -0.31069678,
105          -0.39680323, -0.47223474, -0.54167135,
106          -0.61444740, -0.68943343, -0.76580211, -0.85170082, -0.95289061,
107          -1.06514703, -1.20510707, -1.37617746,},
108         {-0.53940301, -0.73770929, -0.88424876, -1.01117930, -1.13389091,
109          -1.26830073, -1.42041987, -1.62033919,
110          -1.10158808, -1.16512566, -1.23337128, -1.30414401, -1.37663312,
111          -1.46853845, -1.57625798, -1.66893638,},
112         {-0.38601997, -0.56009350, -0.66978483, -0.76028471, -0.83846064,
113          -0.90868087, -0.97408881, -1.03694962,},
114         {-1.56144989, -1.65944032, -1.72689685, -1.77857740, -1.82203011,
115          -1.86220079, -1.90283983, -1.94820479,},
116 };
117
118 static const uint32_t wma_scale_huffcodes[121] = {
119         0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
120         0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
121         0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
122         0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
123         0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
124         0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
125         0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
126         0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
127         0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
128         0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
129         0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
130         0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
131         0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
132         0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
133         0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
134         0x7fff3,
135 };
136
137 static const uint8_t wma_scale_huffbits[121] = {
138         18, 18, 18, 18, 19, 19, 19, 19,
139         19, 19, 19, 19, 19, 19, 19, 19,
140         19, 19, 19, 18, 19, 18, 17, 17,
141         16, 17, 16, 16, 16, 16, 15, 15,
142         14, 14, 14, 14, 14, 14, 13, 13,
143         12, 12, 12, 11, 12, 11, 10, 10,
144         10, 9, 9, 8, 8, 8, 7, 6,
145         6, 5, 4, 3, 1, 4, 4, 5,
146         6, 6, 7, 7, 8, 8, 9, 9,
147         10, 10, 10, 11, 11, 11, 11, 12,
148         12, 13, 13, 13, 14, 14, 16, 15,
149         16, 15, 18, 19, 19, 19, 19, 19,
150         19, 19, 19, 19, 19, 19, 19, 19,
151         19, 19, 19, 19, 19, 19, 19, 19,
152         19, 19, 19, 19, 19, 19, 19, 19,
153         19,
154 };
155
156 static const uint32_t coef0_huffcodes[666] = {
157         0x00258, 0x0003d, 0x00000, 0x00005, 0x00008, 0x00008, 0x0000c, 0x0001b,
158         0x0001f, 0x00015, 0x00024, 0x00032, 0x0003a, 0x00026, 0x0002c, 0x0002f,
159         0x0004a, 0x0004d, 0x00061, 0x00070, 0x00073, 0x00048, 0x00052, 0x0005a,
160         0x0005d, 0x0006e, 0x00099, 0x0009e, 0x000c1, 0x000ce, 0x000e4, 0x000f0,
161         0x00093, 0x0009e, 0x000a2, 0x000a1, 0x000b8, 0x000d2, 0x000d3, 0x0012e,
162         0x00130, 0x000de, 0x0012d, 0x0019b, 0x001e4, 0x00139, 0x0013a, 0x0013f,
163         0x0014f, 0x0016d, 0x001a2, 0x0027c, 0x0027e, 0x00332, 0x0033c, 0x0033f,
164         0x0038b, 0x00396, 0x003c5, 0x00270, 0x0027c, 0x0025a, 0x00395, 0x00248,
165         0x004bd, 0x004fb, 0x00662, 0x00661, 0x0071b, 0x004e6, 0x004ff, 0x00666,
166         0x0071c, 0x0071a, 0x0071f, 0x00794, 0x00536, 0x004e2, 0x0078e, 0x004ee,
167         0x00518, 0x00535, 0x004fb, 0x0078d, 0x00530, 0x00680, 0x0068f, 0x005cb,
168         0x00965, 0x006a6, 0x00967, 0x0097f, 0x00682, 0x006ae, 0x00cd0, 0x00e28,
169         0x00f13, 0x00f1f, 0x009f5, 0x00cd3, 0x00f11, 0x00926, 0x00964, 0x00f32,
170         0x00f12, 0x00f30, 0x00966, 0x00d0b, 0x00a68, 0x00b91, 0x009c7, 0x00b73,
171         0x012fa, 0x0131d, 0x013f9, 0x01ca0, 0x0199c, 0x01c7a, 0x0198c, 0x01248,
172         0x01c74, 0x01c64, 0x0139e, 0x012fd, 0x00a77, 0x012fc, 0x01c7b, 0x012ca,
173         0x014cc, 0x014d2, 0x014e3, 0x014dc, 0x012dc, 0x03344, 0x02598, 0x0263c,
174         0x0333b, 0x025e6, 0x01a1c, 0x01e3c, 0x014e2, 0x033d4, 0x01a11, 0x03349,
175         0x03cce, 0x014e1, 0x01a34, 0x0273e, 0x02627, 0x0273f, 0x038ee, 0x03971,
176         0x03c67, 0x03c61, 0x0333d, 0x038c2, 0x0263f, 0x038cd, 0x02638, 0x02e41,
177         0x0351f, 0x03348, 0x03c66, 0x03562, 0x02989, 0x027d5, 0x0333c, 0x02e4f,
178         0x0343b, 0x02ddf, 0x04bc8, 0x029c0, 0x02e57, 0x04c72, 0x025b7, 0x03547,
179         0x03540, 0x029d3, 0x04c45, 0x025bb, 0x06600, 0x04c73, 0x04bce, 0x0357b,
180         0x029a6, 0x029d2, 0x0263e, 0x0298a, 0x07183, 0x06602, 0x07958, 0x04b66,
181         0x0537d, 0x05375, 0x04fe9, 0x04b67, 0x0799f, 0x04bc9, 0x051fe, 0x06a3b,
182         0x05bb6, 0x04fa8, 0x0728f, 0x05376, 0x0492c, 0x0537e, 0x0795a, 0x06a3c,
183         0x0e515, 0x07887, 0x0683a, 0x051f9, 0x051fd, 0x0cc6a, 0x06a8a, 0x0cc6d,
184         0x05bb3, 0x0683b, 0x051fc, 0x05378, 0x0728e, 0x07886, 0x05bb7, 0x0f2a4,
185         0x0795b, 0x0683c, 0x09fc1, 0x0683d, 0x0b752, 0x09678, 0x0a3e8, 0x06ac7,
186         0x051f0, 0x0b759, 0x06af3, 0x04b6b, 0x0f2a0, 0x0f2ad, 0x096c3, 0x0e518,
187         0x0b75c, 0x0d458, 0x0cc6b, 0x0537c, 0x067aa, 0x04fea, 0x0343a, 0x0cc71,
188         0x0967f, 0x09fc4, 0x096c2, 0x0e516, 0x0f2a1, 0x0d45c, 0x0d45d, 0x0d45e,
189         0x12fb9, 0x0967e, 0x1982f, 0x09883, 0x096c4, 0x0b753, 0x12fb8, 0x0f2a8,
190         0x1ca21, 0x096c5, 0x0e51a, 0x1ca27, 0x12f3c, 0x0d471, 0x0f2aa, 0x0b75b,
191         0x12fbb, 0x0f2a9, 0x0f2ac, 0x0d45a, 0x0b74f, 0x096c8, 0x16e91, 0x096ca,
192         0x12fbf, 0x0d0a7, 0x13103, 0x0d516, 0x16e99, 0x12cbd, 0x0a3ea, 0x19829,
193         0x0b755, 0x29ba7, 0x1ca28, 0x29ba5, 0x16e93, 0x1982c, 0x19828, 0x25994,
194         0x0a3eb, 0x1ca29, 0x16e90, 0x1ca25, 0x1982d, 0x1ca26, 0x16e9b, 0x0b756,
195         0x0967c, 0x25997, 0x0b75f, 0x198d3, 0x0b757, 0x19a2a, 0x0d45b, 0x0e517,
196         0x1ca24, 0x1ca23, 0x1ca22, 0x0b758, 0x16e97, 0x0cd14, 0x13100, 0x00007,
197         0x0003b, 0x0006b, 0x00097, 0x00138, 0x00125, 0x00173, 0x00258, 0x00335,
198         0x0028e, 0x004c6, 0x00715, 0x00729, 0x004ef, 0x00519, 0x004ed, 0x00532,
199         0x0068c, 0x00686, 0x00978, 0x00e5d, 0x00e31, 0x009f4, 0x00b92, 0x012f8,
200         0x00d06, 0x00a67, 0x00d44, 0x00a76, 0x00d59, 0x012cd, 0x01c78, 0x01c75,
201         0x0199f, 0x0198f, 0x01c67, 0x014c6, 0x01c79, 0x01c76, 0x00b94, 0x00d1b,
202         0x01e32, 0x01e31, 0x01ab0, 0x01a05, 0x01aa1, 0x0333a, 0x025e5, 0x02626,
203         0x03541, 0x03544, 0x03421, 0x03546, 0x02e55, 0x02e56, 0x0492d, 0x02dde,
204         0x0299b, 0x02ddc, 0x0357a, 0x0249c, 0x0668b, 0x1c77f, 0x1ca20, 0x0d45f,
205         0x09886, 0x16e9a, 0x0f2a7, 0x0b751, 0x0a3ee, 0x0cf59, 0x0cf57, 0x0b754,
206         0x0d0a6, 0x16e98, 0x0b760, 0x06ac6, 0x0a3f0, 0x12fbe, 0x13104, 0x0f2a5,
207         0x0a3ef, 0x0d472, 0x12cba, 0x1982e, 0x16e9c, 0x1c77e, 0x198d0, 0x13105,
208         0x16e92, 0x0b75d, 0x0d459, 0x0001a, 0x000c0, 0x0016c, 0x003cd, 0x00350,
209         0x0067b, 0x0051e, 0x006a9, 0x009f4, 0x00b72, 0x00d09, 0x01249, 0x01e3d,
210         0x01ca1, 0x01a1f, 0x01721, 0x01a8a, 0x016e8, 0x03347, 0x01a35, 0x0249d,
211         0x0299a, 0x02596, 0x02e4e, 0x0298b, 0x07182, 0x04c46, 0x025ba, 0x02e40,
212         0x027d6, 0x04fe8, 0x06607, 0x05310, 0x09884, 0x072e1, 0x06a3d, 0x04b6a,
213         0x04c7a, 0x06603, 0x04c7b, 0x03428, 0x06605, 0x09664, 0x09fc0, 0x071de,
214         0x06601, 0x05bb2, 0x09885, 0x0a3e2, 0x1c61f, 0x12cbb, 0x0b750, 0x0cf58,
215         0x0967d, 0x25995, 0x668ad, 0x0b75a, 0x09fc2, 0x0537f, 0x0b75e, 0x13fae,
216         0x12fbc, 0x00031, 0x001c4, 0x004c5, 0x005b8, 0x00cf4, 0x0096f, 0x00d46,
217         0x01e57, 0x01a04, 0x02625, 0x03346, 0x028f9, 0x04c47, 0x072e0, 0x04b69,
218         0x03420, 0x07957, 0x06639, 0x0799e, 0x07959, 0x07881, 0x04b68, 0x09fc3,
219         0x09fd6, 0x0cc70, 0x0a3f1, 0x12cbe, 0x0e30e, 0x0e51b, 0x06af2, 0x12cbc,
220         0x1c77d, 0x0f2ab, 0x12fbd, 0x1aa2f, 0x0a3ec, 0x0d473, 0x05377, 0x0a3e9,
221         0x1982b, 0x0e300, 0x12f3f, 0x0cf5f, 0x096c0, 0x38c3c, 0x16e94, 0x16e95,
222         0x12f3d, 0x29ba4, 0x29ba6, 0x1c77c, 0x6a8ba, 0x3545c, 0x33457, 0x668ac,
223         0x6a8bb, 0x16e9d, 0x0e519, 0x25996, 0x12f3e, 0x00036, 0x0033e, 0x006ad,
224         0x00d03, 0x012c8, 0x0124a, 0x03c42, 0x03ccd, 0x06606, 0x07880, 0x06852,
225         0x06a3a, 0x05bb4, 0x0f2a2, 0x09fc7, 0x12cb9, 0x0cc6c, 0x0a6e8, 0x096c1,
226         0x0004a, 0x00355, 0x012f9, 0x014e8, 0x01abe, 0x025b6, 0x0492e, 0x09fc6,
227         0x051ff, 0x0cc6f, 0x096cb, 0x0d071, 0x198d1, 0x12cb8, 0x38c3d, 0x13faf,
228         0x096c9, 0x0009d, 0x00539, 0x012ce, 0x0341f, 0x029c1, 0x04b33, 0x0a3e3,
229         0x0d070, 0x16e96, 0x0b763, 0x000a0, 0x009ce, 0x038cc, 0x0343d, 0x051fa,
230         0x09888, 0x12fba, 0x000df, 0x00a75, 0x029a7, 0x09fc5, 0x0e301, 0x0967b,
231         0x001e7, 0x012c9, 0x051fb, 0x09889, 0x0f2a6, 0x0016f, 0x01cb9, 0x0cf5a,
232         0x12cbf, 0x09679, 0x00272, 0x01a15, 0x0967a, 0x003cb, 0x025f6, 0x0b762,
233         0x0028d, 0x03c60, 0x0cf5e, 0x00352, 0x03ccc, 0x0072f, 0x07186, 0x004ec,
234         0x05379, 0x0068e, 0x09887, 0x006a7, 0x06af1, 0x00e29, 0x0cf5b, 0x00f31,
235         0x0d470, 0x009c6, 0x013fb, 0x13102, 0x019a5, 0x13101, 0x01983, 0x01c65,
236         0x0124f, 0x014c7, 0x01726, 0x01abf, 0x03304, 0x02624, 0x03c41, 0x027d7,
237         0x02ddd, 0x02e54, 0x0343c, 0x06604, 0x07181, 0x0663a, 0x04fa9, 0x0663b,
238         0x05311, 0x0537a, 0x06839, 0x05bb5, 0x0492f, 0x06af0, 0x096c7, 0x0cc6e,
239         0x0537b, 0x0cf5c, 0x0cf56, 0x198d2, 0x0cf5d, 0x0a3ed, 0x0f2a3, 0x1982a,
240         0x0b761, 0x096c6,
241 };
242
243 static const uint8_t coef0_huffbits[666] = {
244         11, 6, 2, 3, 4, 5, 5, 5,
245         5, 6, 6, 6, 6, 7, 7, 7,
246         7, 7, 7, 7, 7, 8, 8, 8,
247         8, 8, 8, 8, 8, 8, 8, 8,
248         9, 9, 9, 9, 9, 9, 9, 9,
249         9, 9, 9, 9, 9, 10, 10, 10,
250         10, 10, 10, 10, 10, 10, 10, 10,
251         10, 10, 10, 11, 11, 11, 10, 11,
252         11, 11, 11, 11, 11, 11, 11, 11,
253         11, 11, 11, 11, 12, 12, 11, 12,
254         12, 12, 12, 11, 12, 12, 12, 12,
255         12, 12, 12, 12, 12, 12, 12, 12,
256         12, 12, 12, 12, 12, 13, 13, 12,
257         12, 12, 13, 13, 13, 13, 13, 13,
258         13, 13, 13, 13, 13, 13, 13, 14,
259         13, 13, 13, 13, 13, 13, 13, 14,
260         14, 14, 14, 14, 14, 14, 14, 14,
261         14, 14, 14, 13, 14, 14, 14, 14,
262         14, 14, 14, 14, 14, 14, 14, 14,
263         14, 14, 14, 14, 14, 14, 14, 15,
264         15, 14, 14, 15, 15, 15, 14, 15,
265         15, 15, 15, 15, 15, 15, 15, 15,
266         15, 15, 15, 15, 15, 15, 15, 15,
267         15, 15, 14, 15, 15, 15, 15, 16,
268         16, 16, 15, 16, 15, 15, 16, 16,
269         16, 16, 15, 16, 16, 16, 15, 16,
270         16, 15, 16, 16, 16, 16, 16, 16,
271         16, 16, 16, 16, 15, 15, 16, 16,
272         15, 16, 16, 16, 17, 17, 17, 16,
273         16, 17, 16, 16, 16, 16, 17, 16,
274         17, 17, 16, 16, 15, 15, 15, 16,
275         17, 16, 17, 16, 16, 17, 17, 17,
276         17, 17, 17, 16, 17, 17, 17, 16,
277         17, 17, 16, 17, 17, 17, 16, 17,
278         17, 16, 16, 17, 17, 17, 18, 17,
279         17, 17, 17, 17, 18, 18, 17, 17,
280         17, 19, 17, 19, 18, 17, 17, 18,
281         17, 17, 18, 17, 17, 17, 18, 17,
282         17, 18, 17, 17, 17, 17, 17, 16,
283         17, 17, 17, 17, 18, 16, 17, 4,
284         6, 8, 9, 9, 10, 10, 10, 10,
285         11, 11, 11, 11, 12, 12, 12, 12,
286         12, 12, 12, 12, 12, 13, 13, 13,
287         13, 13, 13, 13, 13, 13, 13, 13,
288         13, 13, 13, 14, 13, 13, 13, 13,
289         13, 13, 14, 14, 14, 14, 14, 14,
290         15, 15, 15, 15, 15, 15, 16, 15,
291         15, 15, 15, 15, 15, 17, 17, 17,
292         16, 18, 16, 17, 17, 16, 16, 17,
293         17, 18, 17, 16, 17, 17, 17, 16,
294         17, 17, 18, 17, 18, 17, 17, 17,
295         18, 17, 17, 5, 8, 10, 10, 11,
296         11, 12, 12, 12, 13, 13, 14, 13,
297         13, 14, 14, 14, 14, 14, 14, 15,
298         15, 15, 15, 15, 15, 15, 15, 15,
299         15, 15, 15, 16, 16, 15, 16, 16,
300         15, 15, 15, 15, 15, 16, 16, 15,
301         15, 16, 16, 17, 17, 18, 17, 16,
302         17, 18, 19, 17, 16, 16, 17, 17,
303         17, 6, 9, 11, 12, 12, 13, 13,
304         13, 14, 14, 14, 15, 15, 15, 16,
305         15, 15, 15, 15, 15, 15, 16, 16,
306         16, 16, 17, 18, 16, 16, 16, 18,
307         17, 16, 17, 18, 17, 17, 16, 17,
308         17, 16, 17, 16, 17, 18, 18, 18,
309         17, 19, 19, 17, 20, 19, 18, 19,
310         20, 18, 16, 18, 17, 7, 10, 12,
311         13, 13, 14, 14, 14, 15, 15, 16,
312         16, 16, 16, 16, 18, 16, 17, 17,
313         8, 11, 13, 14, 14, 15, 16, 16,
314         16, 16, 17, 17, 17, 18, 18, 17,
315         17, 8, 12, 14, 15, 15, 15, 17,
316         17, 18, 17, 9, 12, 14, 15, 16,
317         16, 17, 9, 13, 15, 16, 16, 17,
318         9, 13, 16, 16, 16, 10, 13, 16,
319         18, 17, 10, 14, 17, 10, 14, 17,
320         11, 14, 16, 11, 14, 11, 15, 12,
321         16, 12, 16, 12, 16, 12, 16, 12,
322         17, 13, 13, 17, 13, 17, 13, 13,
323         14, 14, 14, 14, 14, 14, 14, 15,
324         15, 15, 15, 15, 15, 15, 16, 15,
325         16, 16, 16, 16, 16, 16, 17, 16,
326         16, 16, 16, 17, 16, 17, 16, 17,
327         17, 17,
328 };
329
330 static const uint32_t coef1_huffcodes[555] = {
331         0x00115, 0x00002, 0x00001, 0x00000, 0x0000d, 0x00007, 0x00013, 0x0001d,
332         0x00008, 0x0000c, 0x00023, 0x0002b, 0x0003f, 0x00017, 0x0001b, 0x00043,
333         0x00049, 0x00050, 0x00055, 0x00054, 0x00067, 0x00064, 0x0007b, 0x0002d,
334         0x00028, 0x0002a, 0x00085, 0x00089, 0x0002b, 0x00035, 0x00090, 0x00091,
335         0x00094, 0x00088, 0x000c1, 0x000c6, 0x000f2, 0x000e3, 0x000c5, 0x000e2,
336         0x00036, 0x000f0, 0x000a7, 0x000cd, 0x000fb, 0x00059, 0x00116, 0x00103,
337         0x00108, 0x0012b, 0x0012d, 0x00188, 0x0012e, 0x0014c, 0x001c3, 0x00187,
338         0x001e7, 0x0006f, 0x00094, 0x00069, 0x001e6, 0x001ca, 0x00147, 0x00195,
339         0x000a7, 0x00213, 0x00209, 0x00303, 0x00295, 0x00289, 0x0028c, 0x0028d,
340         0x00312, 0x00330, 0x0029b, 0x00308, 0x00328, 0x0029a, 0x0025e, 0x003c5,
341         0x00384, 0x0039f, 0x00397, 0x00296, 0x0032e, 0x00332, 0x003c6, 0x003e6,
342         0x0012d, 0x000d1, 0x00402, 0x000dd, 0x00161, 0x0012b, 0x00127, 0x0045d,
343         0x00601, 0x004ab, 0x0045f, 0x00410, 0x004bf, 0x00528, 0x0045c, 0x00424,
344         0x00400, 0x00511, 0x00618, 0x0073d, 0x0063a, 0x00614, 0x0073c, 0x007c0,
345         0x007cf, 0x00802, 0x00966, 0x00964, 0x00951, 0x008a0, 0x00346, 0x00803,
346         0x00a52, 0x0024a, 0x007c1, 0x0063f, 0x00126, 0x00406, 0x00789, 0x008a2,
347         0x00960, 0x00967, 0x00c05, 0x00c70, 0x00c79, 0x00a5d, 0x00c26, 0x00c4d,
348         0x00372, 0x008a5, 0x00c08, 0x002c5, 0x00f11, 0x00cc4, 0x00f8e, 0x00e16,
349         0x00496, 0x00e77, 0x00f9c, 0x00c25, 0x00f1e, 0x00c27, 0x00f1f, 0x00e17,
350         0x00ccd, 0x00355, 0x00c09, 0x00c78, 0x00f90, 0x00521, 0x00357, 0x00356,
351         0x0068e, 0x00f9d, 0x00c04, 0x00e58, 0x00a20, 0x00a2c, 0x00c4c, 0x0052f,
352         0x00f8d, 0x01178, 0x01053, 0x01097, 0x0180f, 0x0180d, 0x012fb, 0x012aa,
353         0x0202a, 0x00a40, 0x018ed, 0x01ceb, 0x01455, 0x018e3, 0x012a1, 0x00354,
354         0x00353, 0x00f1c, 0x00c7b, 0x00c37, 0x0101d, 0x012cb, 0x01142, 0x0197d,
355         0x01095, 0x01e3b, 0x0186b, 0x00588, 0x01c2a, 0x014b8, 0x01e3a, 0x018ec,
356         0x01f46, 0x012fa, 0x00a53, 0x01ce8, 0x00a55, 0x01c29, 0x0117b, 0x01052,
357         0x012a0, 0x00589, 0x00950, 0x01c2b, 0x00a50, 0x0208b, 0x0180e, 0x02027,
358         0x02556, 0x01e20, 0x006e7, 0x01c28, 0x0197a, 0x00684, 0x020a2, 0x01f22,
359         0x03018, 0x039cf, 0x03e25, 0x02557, 0x0294c, 0x028a6, 0x00d11, 0x028a9,
360         0x02979, 0x00d46, 0x00a56, 0x039ce, 0x030cc, 0x0329a, 0x0149d, 0x0510f,
361         0x0451c, 0x02028, 0x03299, 0x01ced, 0x014b9, 0x00f85, 0x00c7a, 0x01800,
362         0x00341, 0x012ca, 0x039c8, 0x0329d, 0x00d0d, 0x03e20, 0x05144, 0x00d45,
363         0x030d0, 0x0186d, 0x030d5, 0x00d0f, 0x00d40, 0x04114, 0x020a1, 0x0297f,
364         0x03e24, 0x032f1, 0x04047, 0x030d4, 0x028a8, 0x00d0e, 0x0451d, 0x04044,
365         0x0297e, 0x04042, 0x030d2, 0x030cf, 0x03e21, 0x03e26, 0x028a5, 0x0451a,
366         0x00d48, 0x01a16, 0x00d44, 0x04518, 0x0149b, 0x039ca, 0x01498, 0x0403d,
367         0x0451b, 0x0149c, 0x032f3, 0x030cb, 0x08073, 0x03e22, 0x0529a, 0x020aa,
368         0x039cc, 0x0738a, 0x06530, 0x07389, 0x06193, 0x08071, 0x04043, 0x030ce,
369         0x05147, 0x07388, 0x05145, 0x08072, 0x04521, 0x00d47, 0x0297c, 0x030cd,
370         0x030ca, 0x0000b, 0x0000c, 0x00083, 0x000e4, 0x00048, 0x00102, 0x001cc,
371         0x001f5, 0x00097, 0x0020b, 0x00124, 0x00453, 0x00627, 0x00639, 0x00605,
372         0x00517, 0x001b8, 0x00663, 0x00667, 0x007c3, 0x00823, 0x00961, 0x00963,
373         0x00e5a, 0x00e59, 0x00a2b, 0x00cbf, 0x00292, 0x00a2d, 0x007d0, 0x00953,
374         0x00cc5, 0x00f84, 0x004ab, 0x014a7, 0x0068a, 0x0117a, 0x0052e, 0x01442,
375         0x0052c, 0x00c77, 0x00f8f, 0x004aa, 0x01094, 0x01801, 0x012c4, 0x0297b,
376         0x00952, 0x01f19, 0x006a5, 0x01149, 0x012c5, 0x01803, 0x022f2, 0x0329b,
377         0x04520, 0x0149e, 0x00d13, 0x01f16, 0x01ce9, 0x0101c, 0x006e6, 0x039c9,
378         0x06191, 0x07c8e, 0x06192, 0x0ca63, 0x039cd, 0x06190, 0x06884, 0x06885,
379         0x07382, 0x00d49, 0x00d41, 0x0450c, 0x0149a, 0x030d1, 0x08077, 0x03e23,
380         0x01a15, 0x0e701, 0x0e702, 0x08079, 0x0822a, 0x0a218, 0x07887, 0x0403f,
381         0x0520b, 0x0529b, 0x0e700, 0x04519, 0x00007, 0x000e0, 0x000d0, 0x0039b,
382         0x003e5, 0x00163, 0x0063e, 0x007c9, 0x00806, 0x00954, 0x01044, 0x01f44,
383         0x0197c, 0x01f45, 0x00a51, 0x01f47, 0x00951, 0x0052d, 0x02291, 0x0092f,
384         0x00a54, 0x00d12, 0x0297d, 0x00d0c, 0x01499, 0x0329e, 0x032f0, 0x02025,
385         0x039c6, 0x00a57, 0x03e46, 0x00d42, 0x0738b, 0x05146, 0x04046, 0x08078,
386         0x0510e, 0x07886, 0x02904, 0x04156, 0x04157, 0x06032, 0x030d3, 0x08bce,
387         0x04040, 0x0403e, 0x0a414, 0x10457, 0x08075, 0x06887, 0x07c8f, 0x039c7,
388         0x07387, 0x08070, 0x08bcf, 0x1482a, 0x10456, 0x1482b, 0x01a17, 0x06886,
389         0x0450d, 0x00013, 0x0006b, 0x00615, 0x0080b, 0x0082b, 0x00952, 0x00e5b,
390         0x018e2, 0x0186c, 0x01f18, 0x0329f, 0x00d43, 0x03e29, 0x05140, 0x05141,
391         0x0ca62, 0x06033, 0x03c42, 0x03e28, 0x0450f, 0x0a21a, 0x07384, 0x0a219,
392         0x0e703, 0x0a21b, 0x01a14, 0x07383, 0x045e6, 0x0007a, 0x0012c, 0x00ccc,
393         0x0068f, 0x01802, 0x00a52, 0x00953, 0x04045, 0x01a20, 0x0451f, 0x000a4,
394         0x00735, 0x01cec, 0x02029, 0x020a3, 0x0451e, 0x00069, 0x00c24, 0x02024,
395         0x032f2, 0x05142, 0x00196, 0x00523, 0x000a6, 0x0197b, 0x0030b, 0x0092e,
396         0x003e9, 0x03e27, 0x00160, 0x05143, 0x00652, 0x04041, 0x00734, 0x028a7,
397         0x0080f, 0x01483, 0x0097c, 0x00340, 0x0068b, 0x00522, 0x01054, 0x01096,
398         0x01f17, 0x0202b, 0x01cea, 0x020a0, 0x02978, 0x02026, 0x0297a, 0x039cb,
399         0x03e2b, 0x0149f, 0x0329c, 0x07385, 0x08074, 0x0450e, 0x03e2a, 0x05149,
400         0x08076, 0x07386, 0x05148,
401 };
402
403 static const uint8_t coef1_huffbits[555] = {
404         9, 5, 2, 4, 4, 5, 5, 5,
405         6, 6, 6, 6, 6, 7, 7, 7,
406         7, 7, 7, 7, 7, 7, 7, 8,
407         8, 8, 8, 8, 8, 8, 8, 8,
408         8, 8, 8, 8, 8, 8, 8, 8,
409         9, 8, 8, 8, 8, 9, 9, 9,
410         9, 9, 9, 9, 9, 9, 9, 9,
411         9, 10, 10, 10, 9, 9, 9, 9,
412         10, 10, 10, 10, 10, 10, 10, 10,
413         10, 10, 10, 10, 10, 10, 10, 10,
414         10, 10, 10, 10, 10, 10, 10, 10,
415         11, 11, 11, 11, 11, 11, 11, 11,
416         11, 11, 11, 11, 11, 11, 11, 11,
417         11, 11, 11, 11, 11, 11, 11, 11,
418         11, 12, 12, 12, 12, 12, 12, 12,
419         12, 12, 11, 11, 11, 11, 11, 12,
420         12, 12, 12, 12, 12, 12, 12, 12,
421         13, 12, 12, 12, 12, 12, 12, 12,
422         13, 12, 12, 12, 12, 12, 12, 12,
423         12, 13, 12, 12, 12, 13, 13, 13,
424         13, 12, 12, 12, 12, 12, 12, 13,
425         12, 13, 13, 13, 13, 13, 13, 13,
426         14, 14, 13, 13, 13, 13, 13, 13,
427         13, 12, 12, 12, 13, 13, 13, 13,
428         13, 13, 13, 13, 13, 13, 13, 13,
429         13, 13, 14, 13, 14, 13, 13, 13,
430         13, 13, 14, 13, 14, 14, 13, 14,
431         14, 13, 14, 13, 13, 14, 14, 13,
432         14, 14, 14, 14, 14, 14, 14, 14,
433         14, 15, 14, 14, 14, 14, 15, 15,
434         15, 14, 14, 13, 13, 12, 12, 13,
435         13, 13, 14, 14, 15, 14, 15, 15,
436         14, 13, 14, 15, 15, 15, 14, 14,
437         14, 14, 15, 14, 14, 15, 15, 15,
438         14, 15, 14, 14, 14, 14, 14, 15,
439         15, 16, 15, 15, 15, 14, 15, 15,
440         15, 15, 14, 14, 16, 14, 15, 14,
441         14, 15, 15, 15, 15, 16, 15, 14,
442         15, 15, 15, 16, 15, 15, 14, 14,
443         14, 4, 7, 8, 8, 9, 9, 9,
444         9, 10, 10, 11, 11, 11, 11, 11,
445         11, 12, 11, 11, 11, 12, 12, 12,
446         12, 12, 12, 12, 12, 12, 11, 12,
447         12, 12, 13, 13, 13, 13, 13, 13,
448         13, 12, 12, 13, 13, 13, 13, 14,
449         14, 13, 14, 13, 13, 13, 14, 14,
450         15, 15, 14, 13, 13, 13, 14, 14,
451         15, 15, 15, 16, 14, 15, 17, 17,
452         15, 15, 15, 15, 15, 14, 16, 14,
453         16, 16, 16, 16, 16, 16, 15, 15,
454         17, 15, 16, 15, 6, 8, 10, 10,
455         10, 11, 11, 11, 12, 12, 13, 13,
456         13, 13, 14, 13, 14, 13, 14, 14,
457         14, 14, 14, 15, 15, 14, 14, 14,
458         14, 14, 14, 15, 15, 15, 15, 16,
459         15, 15, 16, 15, 15, 15, 14, 16,
460         15, 15, 18, 17, 16, 17, 15, 14,
461         15, 16, 16, 19, 17, 19, 16, 17,
462         15, 7, 10, 11, 12, 12, 12, 12,
463         13, 13, 13, 14, 15, 14, 15, 15,
464         16, 15, 14, 14, 15, 16, 15, 16,
465         16, 16, 16, 15, 15, 7, 11, 12,
466         13, 13, 14, 14, 15, 15, 15, 8,
467         11, 13, 14, 14, 15, 9, 12, 14,
468         14, 15, 9, 13, 10, 13, 10, 14,
469         10, 14, 11, 15, 11, 15, 11, 14,
470         12, 15, 12, 13, 13, 13, 13, 13,
471         13, 14, 13, 14, 14, 14, 14, 14,
472         14, 15, 14, 15, 16, 15, 14, 15,
473         16, 15, 15,
474 };
475
476 static const uint32_t coef2_huffcodes[1336] = {
477         0x003e6, 0x000f6, 0x00000, 0x00002, 0x00006, 0x0000f, 0x0001b, 0x00028,
478         0x00039, 0x0003f, 0x0006b, 0x00076, 0x000b7, 0x000e8, 0x000ef, 0x00169,
479         0x001a7, 0x001d4, 0x001dc, 0x002c4, 0x00349, 0x00355, 0x00391, 0x003dc,
480         0x00581, 0x005b2, 0x00698, 0x0070c, 0x00755, 0x0073a, 0x00774, 0x007cf,
481         0x00b0a, 0x00b66, 0x00d2e, 0x00d5e, 0x00e1b, 0x00eac, 0x00e5a, 0x00f7e,
482         0x00fa1, 0x0163e, 0x01a37, 0x01a52, 0x01c39, 0x01ab3, 0x01d5f, 0x01cb6,
483         0x01f52, 0x01dd9, 0x02c04, 0x02c2e, 0x02c2d, 0x02c23, 0x03467, 0x034a3,
484         0x0351b, 0x03501, 0x03a5d, 0x0351c, 0x03875, 0x03dea, 0x0397b, 0x039db,
485         0x03df1, 0x039d8, 0x03bb4, 0x0580a, 0x0584d, 0x05842, 0x05b13, 0x058ea,
486         0x0697d, 0x06a06, 0x068cc, 0x06ac7, 0x06a96, 0x072f4, 0x07543, 0x072b4,
487         0x07d20, 0x0b003, 0x073b5, 0x07be6, 0x0d180, 0x07bd1, 0x07cb8, 0x07d06,
488         0x07d25, 0x0d2f2, 0x0d19a, 0x0d334, 0x0e1dc, 0x0d529, 0x0d584, 0x0e1d2,
489         0x0e5e3, 0x0eec4, 0x0e564, 0x0fa49, 0x16001, 0x0eedc, 0x0f7fa, 0x1a32c,
490         0x16131, 0x16003, 0x0f9c8, 0x1ef80, 0x1d2a0, 0x1aa4b, 0x0f7ce, 0x1abfe,
491         0x1aa50, 0x1a458, 0x1a816, 0x1cae4, 0x1d2fe, 0x1d52e, 0x1aa4c, 0x2c245,
492         0x1d2a1, 0x1a35d, 0x1ca1b, 0x1d5d8, 0x1f531, 0x1ca1c, 0x1f389, 0x1f4af,
493         0x3a5e7, 0x351fb, 0x2c24b, 0x34bce, 0x2c24d, 0x2c249, 0x2c24a, 0x72dfc,
494         0x357ef, 0x35002, 0x3a5e6, 0x39431, 0x5843b, 0x34a77, 0x58431, 0x3a5f3,
495         0x3a5dd, 0x3e5e5, 0x356bd, 0x3976e, 0x6a3d2, 0x3500d, 0x694c4, 0x580bd,
496         0x3e5e8, 0x74b95, 0x34a6e, 0x3977c, 0x39432, 0x5b0d2, 0x6a3d8, 0x580b8,
497         0x5b0cb, 0x5b0d7, 0x72dee, 0x72ded, 0x72dec, 0x74b9c, 0x3977f, 0x72dea,
498         0x74b9e, 0x7be7d, 0x580bf, 0x5b0d5, 0x7cba8, 0x74b91, 0x3e5dd, 0xb6171,
499         0xd46b3, 0xd46b9, 0x7cba1, 0x74b9f, 0x72de1, 0xe59f5, 0x3e5eb, 0x00004,
500         0x00015, 0x00038, 0x00075, 0x000e8, 0x001d3, 0x00347, 0x0039c, 0x00690,
501         0x0074a, 0x00b60, 0x00e93, 0x00f74, 0x0163d, 0x01a5a, 0x01d24, 0x01cbe,
502         0x01f4b, 0x03468, 0x03562, 0x03947, 0x03e82, 0x05804, 0x05b12, 0x05803,
503         0x0696d, 0x06a9e, 0x0697c, 0x06978, 0x06afb, 0x074b2, 0x072f5, 0x073c0,
504         0x07541, 0x06944, 0x074b7, 0x070d3, 0x07ba9, 0x0b0b1, 0x0d1af, 0x0e1dd,
505         0x0e5e2, 0x0e1a3, 0x0eec3, 0x1612f, 0x0e961, 0x0eeda, 0x0e78e, 0x0fa48,
506         0x1612c, 0x0e511, 0x0e565, 0x0e953, 0x1aa4a, 0x0e59d, 0x1d52c, 0x1a811,
507         0x1cae7, 0x1abfc, 0x1d52d, 0x1cacf, 0x1cf05, 0x2c254, 0x34a72, 0x1f4ac,
508         0x3976b, 0x34a71, 0x2c6d9, 0x2d873, 0x34a6a, 0x357e7, 0x3464c, 0x3e5f5,
509         0x58433, 0x1f53a, 0x3500a, 0x357ea, 0x34a73, 0x3942f, 0x357e5, 0x39775,
510         0x694cd, 0x39772, 0x7cba5, 0x6a3ef, 0x35483, 0x74b98, 0x5b0c1, 0x39770,
511         0x3a5d7, 0x39433, 0x39434, 0x694ce, 0x580be, 0x3e5ff, 0x6a3ec, 0xb616f,
512         0xd46b1, 0x6a3d1, 0x72de5, 0x74b6e, 0x72de9, 0x3e700, 0xd46b6, 0x6a3e9,
513         0x74b69, 0xe5675, 0xd46b8, 0x7cbaa, 0x3a5d1, 0x0000c, 0x0003c, 0x000eb,
514         0x001f1, 0x003a4, 0x006a8, 0x007d5, 0x00d43, 0x00e77, 0x016c5, 0x01cb1,
515         0x02c5d, 0x03a55, 0x03a56, 0x03e51, 0x03bb5, 0x05b0a, 0x06a9f, 0x074b8,
516         0x07d28, 0x0d187, 0x0d40e, 0x0d52e, 0x0d425, 0x0eae3, 0x0e1d3, 0x1612e,
517         0x0e59e, 0x0eec2, 0x0e578, 0x0e51a, 0x0e579, 0x0e515, 0x0e960, 0x0d183,
518         0x0d220, 0x0d2cb, 0x0e512, 0x16c3e, 0x16002, 0x16c42, 0x1cae9, 0x3461a,
519         0x1d2fa, 0x1a308, 0x1a849, 0x1cf07, 0x1f38f, 0x34b65, 0x2c253, 0x1ef9e,
520         0x1cbc3, 0x1cbc1, 0x2c255, 0x1f384, 0x58435, 0x2c5cd, 0x3a5f7, 0x2c252,
521         0x3959c, 0x2c6d8, 0x3a5d3, 0x6ad78, 0x6a3f2, 0x7cba9, 0xb6176, 0x72deb,
522         0x39764, 0x3e5f6, 0x3a5d8, 0x74a8c, 0x6a3e6, 0x694d1, 0x6ad79, 0x1a4592,
523         0xe59fb, 0x7cbb3, 0x5b0cd, 0x00017, 0x000b5, 0x002c3, 0x005b7, 0x00b1c,
524         0x00e5c, 0x0163f, 0x01ab2, 0x01efa, 0x0348a, 0x0396e, 0x058da, 0x06963,
525         0x06a30, 0x072cd, 0x073cf, 0x07ce7, 0x0d2ca, 0x0d2d8, 0x0e764, 0x0e794,
526         0x16008, 0x16167, 0x1617e, 0x1aa49, 0x1a30b, 0x1a813, 0x2c6da, 0x1a580,
527         0x1cbc2, 0x0f9ca, 0x1617f, 0x1d2fe, 0x0f7fc, 0x16c40, 0x0e513, 0x0eec5,
528         0x0f7c3, 0x1d508, 0x1a81e, 0x1d2fd, 0x39430, 0x35486, 0x3e5fd, 0x2c24c,
529         0x2c75a, 0x34a74, 0x3a5f4, 0x3464d, 0x694ca, 0x3a5f1, 0x1d509, 0x1d5c0,
530         0x34648, 0x3464e, 0x6a3d5, 0x6a3e8, 0x6a3e7, 0x5b0c3, 0x2c248, 0x1f38a,
531         0x3a5f2, 0x6a3e5, 0x00029, 0x00168, 0x0058c, 0x00b67, 0x00f9d, 0x01c3d,
532         0x01cbf, 0x02c20, 0x0351d, 0x03df6, 0x06af9, 0x072b5, 0x0b1d7, 0x0b0b2,
533         0x0d40a, 0x0d52b, 0x0e952, 0x0e797, 0x163c3, 0x1c3a0, 0x1f386, 0x1ca21,
534         0x34655, 0x2c247, 0x1f53b, 0x2c250, 0x2c24f, 0x1f385, 0x1ef5d, 0x1cf15,
535         0x1caea, 0x1ab0a, 0x1cf19, 0x1f53d, 0x1d5c2, 0x1d2fb, 0x1ef58, 0x34a78,
536         0x357ec, 0x1f533, 0x3a5e1, 0x694d2, 0x58482, 0x3a5ee, 0x2c6dc, 0x357eb,
537         0x5b0c4, 0x39778, 0x6a3e1, 0x7cbb4, 0x3a5e1, 0x74b68, 0x3a5ef, 0x3a5d2,
538         0x39424, 0x72de2, 0xe59f6, 0xe59f7, 0x3e702, 0x3e5ec, 0x1f38b, 0x0003b,
539         0x001f0, 0x00777, 0x00fa8, 0x01cb2, 0x02d84, 0x03a57, 0x03dd6, 0x06917,
540         0x06a11, 0x07d07, 0x0eae2, 0x0e796, 0x0f9c9, 0x0f7fb, 0x16166, 0x16160,
541         0x1ab1b, 0x1abfa, 0x2d87b, 0x1d2f7, 0x39768, 0x1f38c, 0x34653, 0x34651,
542         0x6a3d9, 0x35001, 0x3abbd, 0x38742, 0x39426, 0x34a76, 0x3a5ec, 0x34a75,
543         0x35000, 0x35488, 0x1cf10, 0x2c6db, 0x357ed, 0x357e8, 0x357e9, 0x3a5f0,
544         0x694c2, 0xb6178, 0x72df5, 0x39425, 0x3942b, 0x74b6d, 0x74b6f, 0xb6177,
545         0xb6179, 0x74b6a, 0xb6172, 0x58487, 0x3e5ee, 0x3e5ed, 0x72df2, 0x72df4,
546         0x7cbae, 0x6a3ca, 0x70e86, 0x34bcf, 0x6a3c8, 0x00059, 0x00384, 0x00d5b,
547         0x01c38, 0x03560, 0x0395b, 0x0584e, 0x06964, 0x073cd, 0x0b1e7, 0x0e798,
548         0x0e78d, 0x0fa43, 0x1a848, 0x1a32f, 0x1aa4e, 0x3464a, 0x1f4ab, 0x1f38d,
549         0x3a5eb, 0x3a5d4, 0x3548a, 0x6a3c7, 0x5b0d0, 0x6a3c5, 0x7cbb0, 0x694cb,
550         0x3a5e5, 0x3e5e2, 0x3942c, 0x2d872, 0x1f4ae, 0x3a5d5, 0x694d3, 0x58481,
551         0x35009, 0x39774, 0x58432, 0xb616c, 0x5b0db, 0x3548b, 0xb6174, 0x1d5d95,
552         0xb004c, 0x7cbb2, 0x3a5e5, 0x74a8f, 0xe59f9, 0x72df6, 0xe59fd, 0x7cbad,
553         0xd427d, 0x72cff, 0x3977a, 0x5b0d9, 0xb616d, 0xb616b, 0x1a4593, 0x7cbaf,
554         0x5b0da, 0x00071, 0x003eb, 0x01603, 0x02c6c, 0x03961, 0x068c8, 0x06a31,
555         0x072bd, 0x0d2c2, 0x0e51b, 0x0e5e6, 0x1abfb, 0x1d2ff, 0x1cae5, 0x1ef5c,
556         0x1ef5e, 0x1cf13, 0x34a6d, 0x3976d, 0xb616a, 0x3e5f2, 0x6a3c4, 0xb6169,
557         0x3e5dc, 0x580b9, 0x74b99, 0x75764, 0x58434, 0x3a5d9, 0x6945a, 0x69459,
558         0x3548c, 0x3a5e9, 0x69457, 0x72df1, 0x6945e, 0x6a35e, 0x3e701, 0xb6168,
559         0x5b0dd, 0x3a5de, 0x6a3c2, 0xd4278, 0x6a3cc, 0x72dfd, 0xb6165, 0x16009a,
560         0x7cbb1, 0xd427c, 0xb6162, 0xe765e, 0x1cecbe, 0x7cbb6, 0x69454, 0xb6160,
561         0xd427a, 0x1d5d96, 0xb1d6d, 0xe59f4, 0x72de8, 0x3a5db, 0x0007a, 0x006ae,
562         0x01c3c, 0x03aba, 0x058e9, 0x072cc, 0x0d2dd, 0x0d22d, 0x0eec1, 0x0eedb,
563         0x1d2a2, 0x1ef5b, 0x357e2, 0x3abbf, 0x1d2f9, 0x35004, 0x3a5dc, 0x351fc,
564         0x3976c, 0x6a3c6, 0x6a3cb, 0x3e5ea, 0xe59f3, 0x6a3ce, 0x69452, 0xe59f0,
565         0x74b90, 0xd4279, 0xd427b, 0x7cbb5, 0x5b0c5, 0x3a5e3, 0x3a5e2, 0x000d0,
566         0x00775, 0x01efe, 0x03dd5, 0x0728c, 0x07cb9, 0x0e1a2, 0x0ea85, 0x0eed8,
567         0x1a30a, 0x1aa4f, 0x3a5df, 0x35008, 0x3a5e0, 0x3e5f4, 0x3e5f7, 0xb1d6c,
568         0x5843e, 0x34a70, 0x72df8, 0x74b6b, 0xd427f, 0x72df0, 0x5b0bf, 0x5b0c0,
569         0xd46b0, 0x72def, 0xe59f8, 0x162e64, 0xb1d6f, 0x3a5e0, 0x39427, 0x69166,
570         0x6a3e2, 0x6a3e3, 0x74a8d, 0xd427e, 0x1d5d97, 0xd46b4, 0x5b0d8, 0x6a3d3,
571         0x000e0, 0x00b63, 0x034cc, 0x06a33, 0x073c9, 0x0e1a0, 0x0f7fd, 0x0f9cc,
572         0x1617d, 0x1caeb, 0x1f4a9, 0x3abb3, 0x69450, 0x39420, 0x39777, 0x3e5e0,
573         0x6a3d4, 0x6a3ed, 0xb6166, 0xe59f1, 0xb1d6e, 0xe5676, 0x6a3ea, 0xe5674,
574         0xb6163, 0xd46b7, 0x7cba6, 0xd46ba, 0x1d5d94, 0xb6164, 0x6a3f1, 0x7cba2,
575         0x69451, 0x72dfa, 0xd46bb, 0x72df7, 0x74b94, 0x1cecbf, 0xe59fa,
576             0x16009b,
577         0x6a3e4, 0x000e6, 0x00e94, 0x03876, 0x070ef, 0x0d52a, 0x16015, 0x16014,
578         0x1abf9, 0x1cf17, 0x34a79, 0x34650, 0x3e705, 0x6a3d0, 0x58430, 0x74b9d,
579         0x7be7e, 0x5b0be, 0x39773, 0x6a3de, 0x000fb, 0x00f7b, 0x03dd7, 0x07bd0,
580         0x0e59c, 0x0f9cd, 0x1cf18, 0x1d2ff, 0x34a7a, 0x39429, 0x3500c, 0x72de0,
581         0x69456, 0x7be7c, 0xd46b5, 0xd46b2, 0x6a3dd, 0x001a2, 0x0163b, 0x06913,
582         0x0b016, 0x0fa42, 0x1a32d, 0x1cf06, 0x34a7c, 0x34a7d, 0xb6161, 0x35481,
583         0x3e5fa, 0x7cba0, 0x7be7f, 0x7cba3, 0x7cba7, 0x5b0d3, 0x72de6, 0x6a3dc,
584         0x001a9, 0x01ab4, 0x06a34, 0x0d46a, 0x16130, 0x1ef5f, 0x1f532, 0x1f536,
585         0x3942e, 0x58436, 0x6a3db, 0x6945b, 0x001c9, 0x01ca0, 0x0728b, 0x0eed9,
586         0x1f539, 0x1ca1d, 0x39765, 0x39766, 0x58439, 0x6945d, 0x39767, 0x001d3,
587         0x01f2c, 0x07bfc, 0x16161, 0x34652, 0x3a5ed, 0x3548d, 0x58438, 0x6a3da,
588         0x002c1, 0x02c5e, 0x0d335, 0x1ab1a, 0x2d874, 0x35006, 0x35484, 0x5b0cc,
589         0x74b9a, 0x72df3, 0x6a3d6, 0x002da, 0x034b3, 0x0d5ae, 0x1caee, 0x2d871,
590         0x357e3, 0x74b97, 0x72df9, 0x580ba, 0x5b0d4, 0x0034d, 0x0354e, 0x0f750,
591         0x1cbc0, 0x3a5e7, 0x3a5e4, 0x00385, 0x03a58, 0x16c41, 0x2c5cf, 0x3e5e1,
592         0x74b6c, 0xe5677, 0x6a3df, 0x00390, 0x03e50, 0x163c2, 0x2d876, 0x35482,
593         0x5b0d6, 0x5843a, 0x0039f, 0x0585e, 0x1a583, 0x3500f, 0x74b93, 0x39771,
594         0x003e4, 0x06912, 0x16c43, 0x357e1, 0x0058a, 0x0696f, 0x1f538, 0x5b0c9,
595         0x6a3cf, 0x005b6, 0x06af8, 0x1f534, 0x58483, 0x6a3e0, 0x00695, 0x07d02,
596         0x1cae8, 0x58485, 0x006a2, 0x0754a, 0x357ee, 0x3977b, 0x00748, 0x074b2,
597         0x34a7b, 0x00729, 0x0b1e0, 0x34649, 0x3e5e3, 0x0073d, 0x0d2c4, 0x3e5e6,
598         0x007bb, 0x0b099, 0x39762, 0x5b0ce, 0x6945f, 0x007d1, 0x0d5ab, 0x39779,
599         0x007d3, 0x0d52f, 0x39763, 0x6945c, 0x00b1a, 0x0d2c5, 0x35489, 0x00d23,
600         0x0eaed, 0x3e5f8, 0x00d32, 0x16016, 0x3e5fb, 0x00d41, 0x0e768, 0x3a5ed,
601         0x00e1f, 0x16017, 0x58027, 0x00ead, 0x0fa07, 0x69455, 0x00e54, 0x1612b,
602         0x00e55, 0x1a581, 0x00f78, 0x1a32b, 0x580bc, 0x6a3ee, 0x00f79, 0x1abfd,
603         0x00f95, 0x1ab18, 0x6a3f0, 0x01637, 0x1aa4d, 0x0162d, 0x1f53c, 0x6a3f3,
604         0x01a31, 0x1a810, 0x39769, 0x01a50, 0x1caef, 0x01a36, 0x1a32e, 0x01a67,
605         0x1f38e, 0x01a85, 0x1ef59, 0x01aa6, 0x1ef83, 0x01d51, 0x2c012, 0x01d53,
606         0x2d879, 0x01d5e, 0x35005, 0x01cba, 0x1cf04, 0x69453, 0x01d2d, 0x351ff,
607         0x01f2d, 0x2d86f, 0x01f29, 0x35007, 0x02c22, 0x351fa, 0x02c03, 0x3a5ec,
608         0x02c5f, 0x3a5eb, 0x02c58, 0x34a6b, 0x03469, 0x356be, 0x02c59, 0x34a6c,
609         0x0346a, 0x3a5ea, 0x034bd, 0x034bf, 0x356bf, 0x0386a, 0x03ab9, 0x5843f,
610         0x0386b, 0x3a5f5, 0x03a4b, 0x39421, 0x03aa4, 0x3a5e9, 0x03a5a, 0x03960,
611         0x3977e, 0x03de9, 0x03958, 0x03df7, 0x039e1, 0x3e5e4, 0x0395f, 0x69458,
612         0x03e91, 0x03df2, 0x39428, 0x058f2, 0x03e80, 0x6a3c3, 0x03e93, 0x694c0,
613         0x058b8, 0x5b0ca, 0x0584f, 0x694c1, 0x058f1, 0x068d6, 0x06a10, 0x06ac3,
614         0x06a32, 0x070d2, 0x06911, 0x074b1, 0x07494, 0x06ad4, 0x06ad6, 0x072b8,
615         0x06afa, 0x074b3, 0x07540, 0x073ce, 0x0b005, 0x074b3, 0x07495, 0x074b9,
616         0x0d336, 0x07bff, 0x07763, 0x073c8, 0x07d29, 0x0b622, 0x0d221, 0x0d181,
617         0x0b1d1, 0x074b8, 0x0b1d0, 0x0d19b, 0x0d2c3, 0x0b172, 0x0d2dc, 0x0b623,
618         0x0d5aa, 0x0d426, 0x0d182, 0x0e795, 0x0e1d1, 0x0d337, 0x0e96c, 0x0e5e4,
619         0x0e514, 0x0eaee, 0x16000, 0x0e767, 0x0e1a1, 0x0e78f, 0x16004, 0x0f7c2,
620         0x0e799, 0x0e5e7, 0x0e566, 0x0e769, 0x0f751, 0x0eede, 0x0fa06, 0x16005,
621         0x0fa9f, 0x1a5e6, 0x0e766, 0x1636f, 0x0eedd, 0x0eec0, 0x1a309, 0x1ceca,
622         0x163cd, 0x0f9cb, 0x0eedf, 0x1a582, 0x1612d, 0x0e5e5, 0x1abf8, 0x1a30c,
623         0x1ca1f, 0x163cc, 0x1a35c, 0x1ca1e, 0x1aa51, 0x163ac, 0x1a84e, 0x1a53f,
624         0x1cf16, 0x1d2fc, 0x1a5b3, 0x1ab19, 0x1a81f, 0x1d5c3, 0x16c3f, 0x1d5c1,
625         0x1d2fc, 0x1f4aa, 0x1a812, 0x1f535, 0x1cf12, 0x1a817, 0x1617c, 0x1ab0b,
626         0x1d2f8, 0x1ef82, 0x2d87a, 0x1d52f, 0x1f530, 0x1aa48, 0x35487, 0x1d2fd,
627         0x1f4ad, 0x1cf11, 0x3461b, 0x35485, 0x1ca20, 0x1caed, 0x1cae6, 0x1abff,
628         0x3464f, 0x34a6f, 0x1ef81, 0x3464b, 0x39d96, 0x1f383, 0x1f537, 0x1cf14,
629         0x2c5ce, 0x3500e, 0x2c251, 0x1caec, 0x1f387, 0x34654, 0x357e4, 0x2d878,
630         0x3500b, 0x35480, 0x3a5e8, 0x3548e, 0x34b64, 0x1f4a8, 0x35003, 0x3e5df,
631         0x2d870, 0x357e6, 0x3e5f0, 0x1ef5a, 0x3a5ea, 0x1f388, 0x3e703, 0x2c24e,
632         0x3a5e2, 0x351fd, 0x2c6dd, 0x3e704, 0x351fe, 0x2d875, 0x5b0c7, 0x3976a,
633         0x3a5e6, 0x39423, 0x58480, 0x2c246, 0x3a5e3, 0x2d877, 0x3e5f1, 0x3abbe,
634         0x58489, 0x3e5f9, 0x357e0, 0x3abbc, 0x5b0c6, 0x69167, 0x69165, 0x3e5e9,
635         0x39422, 0x3976f, 0x3977d, 0x3e5de, 0x6a3c9, 0x58b98, 0x3a5f6, 0x3a5d0,
636         0x58486, 0x6a3c1, 0x3e5fc, 0x5b0dc, 0x3548f, 0x3942d, 0x694c9, 0x58484,
637         0x3a5e8, 0x74b9b, 0x74b96, 0x694d0, 0x58488, 0x3a5e4, 0x3942a, 0x72ec2,
638         0x39776, 0x5b0d1, 0x5b0cf, 0x3a5d6, 0xe59fc, 0x5b0c8, 0x3e5e7, 0x7cbb7,
639         0x70e87, 0x7cbab, 0x5b0c2, 0x694c3, 0x74a8e, 0x3e5f3, 0x6a3cd, 0x72dfe,
640         0x73b2e, 0x72ec0, 0x694c5, 0x58437, 0x694c8, 0x72dff, 0x39435, 0x5843d,
641         0x6a3d7, 0x72ec1, 0xd22c8, 0x694cf, 0xb6173, 0x3e5fe, 0x580bb, 0xe59f2,
642         0xb616e, 0xb6175, 0x3a5da, 0x5b0bd, 0x694cc, 0x5843c, 0x694c7, 0x74b92,
643         0x72ec3, 0x694c6, 0xb6170, 0x7cbac, 0xb1733, 0x7cba4, 0xb6167, 0x72de7,
644         0x72de4, 0x6a3c0, 0x3e5ef, 0x162e65, 0x72de3, 0x72dfb, 0x6a35f, 0x6a3eb,
645 };
646
647 static const uint8_t coef2_huffbits[1336] = {
648         11, 9, 2, 3, 4, 4, 5, 6,
649         6, 7, 7, 8, 8, 8, 9, 9,
650         9, 9, 10, 10, 10, 10, 11, 11,
651         11, 11, 11, 11, 11, 12, 12, 12,
652         12, 12, 12, 12, 12, 12, 13, 13,
653         13, 13, 13, 13, 13, 13, 13, 14,
654         14, 14, 14, 14, 14, 14, 14, 14,
655         14, 14, 14, 14, 14, 15, 15, 15,
656         15, 15, 15, 15, 15, 15, 15, 15,
657         15, 15, 15, 15, 15, 16, 15, 16,
658         16, 16, 16, 16, 16, 16, 16, 16,
659         16, 16, 16, 16, 16, 16, 16, 16,
660         17, 17, 17, 17, 17, 17, 17, 17,
661         17, 17, 17, 18, 17, 17, 17, 17,
662         17, 17, 17, 18, 18, 17, 17, 18,
663         17, 17, 18, 17, 18, 18, 18, 18,
664         19, 18, 18, 18, 18, 18, 18, 20,
665         18, 18, 18, 19, 19, 18, 19, 18,
666         19, 19, 18, 19, 19, 18, 19, 19,
667         19, 19, 18, 19, 19, 19, 19, 19,
668         19, 19, 20, 20, 20, 19, 19, 20,
669         19, 20, 19, 19, 20, 19, 19, 20,
670         20, 20, 20, 19, 20, 21, 19, 3,
671         5, 7, 8, 9, 9, 10, 11, 11,
672         12, 12, 12, 13, 13, 13, 13, 14,
673         14, 14, 14, 15, 15, 15, 15, 15,
674         15, 15, 15, 15, 15, 15, 16, 16,
675         15, 15, 15, 15, 16, 16, 16, 16,
676         17, 16, 17, 17, 16, 17, 17, 17,
677         17, 17, 17, 16, 17, 17, 17, 17,
678         18, 17, 17, 18, 18, 18, 18, 18,
679         19, 18, 18, 18, 18, 18, 18, 19,
680         19, 18, 18, 18, 18, 19, 18, 19,
681         19, 19, 20, 19, 18, 19, 19, 19,
682         19, 19, 19, 19, 19, 19, 19, 20,
683         20, 19, 20, 19, 20, 19, 20, 19,
684         19, 21, 20, 20, 19, 4, 7, 8,
685         10, 11, 11, 12, 12, 13, 13, 14,
686         14, 14, 14, 15, 15, 15, 15, 15,
687         16, 16, 16, 16, 16, 16, 16, 17,
688         17, 17, 17, 17, 17, 17, 16, 16,
689         16, 16, 17, 17, 17, 17, 18, 18,
690         18, 17, 17, 18, 18, 18, 18, 18,
691         18, 18, 18, 18, 19, 18, 18, 18,
692         19, 18, 19, 19, 19, 20, 20, 20,
693         19, 19, 19, 19, 19, 19, 19, 21,
694         21, 20, 19, 5, 8, 10, 11, 12,
695         13, 13, 13, 14, 14, 15, 15, 15,
696         15, 16, 16, 16, 16, 16, 17, 17,
697         17, 17, 17, 17, 17, 17, 18, 17,
698         18, 17, 17, 17, 17, 17, 17, 17,
699         17, 17, 17, 17, 19, 18, 19, 18,
700         18, 18, 18, 18, 19, 18, 17, 17,
701         18, 18, 19, 19, 19, 19, 18, 18,
702         18, 19, 6, 9, 11, 12, 13, 13,
703         14, 14, 14, 15, 15, 16, 16, 16,
704         16, 16, 16, 17, 17, 17, 18, 18,
705         18, 18, 18, 18, 18, 18, 18, 18,
706         18, 17, 18, 18, 17, 18, 18, 18,
707         18, 18, 18, 19, 19, 18, 18, 18,
708         19, 19, 19, 20, 19, 19, 18, 19,
709         19, 20, 21, 21, 19, 19, 18, 6,
710         10, 12, 13, 14, 14, 14, 15, 15,
711         15, 16, 16, 17, 17, 17, 17, 17,
712         17, 17, 18, 18, 19, 18, 18, 18,
713         19, 18, 18, 18, 19, 18, 18, 18,
714         18, 18, 18, 18, 18, 18, 18, 18,
715         19, 20, 20, 19, 19, 19, 19, 20,
716         20, 19, 20, 19, 19, 19, 20, 20,
717         20, 19, 19, 18, 19, 7, 10, 12,
718         13, 14, 15, 15, 15, 16, 16, 17,
719         17, 17, 17, 17, 17, 18, 18, 18,
720         18, 19, 18, 19, 19, 19, 20, 19,
721         18, 19, 19, 18, 18, 19, 19, 19,
722         18, 19, 19, 20, 19, 18, 20, 21,
723         20, 20, 19, 19, 21, 20, 21, 20,
724         20, 20, 19, 19, 20, 20, 21, 20,
725         19, 7, 11, 13, 14, 15, 15, 15,
726         16, 16, 17, 17, 17, 17, 18, 18,
727         18, 18, 18, 19, 20, 19, 19, 20,
728         19, 19, 19, 19, 19, 19, 19, 19,
729         18, 18, 19, 20, 19, 19, 19, 20,
730         19, 19, 19, 20, 19, 20, 20, 21,
731         20, 20, 20, 21, 22, 20, 19, 20,
732         20, 21, 20, 21, 20, 19, 8, 11,
733         13, 14, 15, 16, 16, 16, 17, 17,
734         17, 18, 18, 18, 18, 18, 19, 18,
735         19, 19, 19, 19, 21, 19, 19, 21,
736         19, 20, 20, 20, 19, 18, 18, 8,
737         12, 14, 15, 16, 16, 16, 16, 17,
738         17, 17, 19, 18, 18, 19, 19, 20,
739         19, 18, 20, 19, 20, 20, 19, 19,
740         20, 20, 21, 21, 20, 19, 19, 19,
741         19, 19, 19, 20, 21, 20, 19, 19,
742         8, 12, 14, 15, 16, 16, 17, 17,
743         17, 18, 18, 18, 19, 19, 19, 19,
744         19, 19, 20, 21, 20, 21, 19, 21,
745         20, 20, 20, 20, 21, 20, 19, 20,
746         19, 20, 20, 20, 19, 22, 21, 21,
747         19, 9, 12, 14, 15, 16, 17, 17,
748         17, 18, 18, 18, 19, 19, 19, 19,
749         20, 19, 19, 19, 9, 13, 15, 16,
750         17, 17, 18, 18, 18, 19, 18, 20,
751         19, 20, 20, 20, 19, 9, 13, 15,
752         16, 17, 17, 18, 18, 18, 20, 18,
753         19, 20, 20, 20, 20, 19, 20, 19,
754         9, 13, 15, 16, 17, 18, 18, 18,
755         19, 19, 19, 19, 10, 14, 16, 17,
756         18, 18, 19, 19, 19, 19, 19, 10,
757         14, 16, 17, 18, 18, 18, 19, 19,
758         10, 14, 16, 17, 18, 18, 18, 19,
759         19, 20, 19, 10, 14, 16, 18, 18,
760         18, 19, 20, 19, 19, 10, 14, 17,
761         18, 18, 18, 10, 15, 17, 18, 19,
762         19, 21, 19, 11, 15, 17, 18, 18,
763         19, 19, 11, 15, 17, 18, 19, 19,
764         11, 15, 17, 18, 11, 15, 18, 19,
765         19, 11, 15, 18, 19, 19, 11, 16,
766         18, 19, 11, 15, 18, 19, 11, 16,
767         18, 12, 16, 18, 19, 12, 16, 19,
768         12, 16, 19, 19, 19, 12, 16, 19,
769         12, 16, 19, 19, 12, 16, 18, 12,
770         16, 19, 12, 17, 19, 12, 17, 19,
771         12, 17, 19, 12, 17, 19, 13, 17,
772         13, 17, 13, 17, 19, 19, 13, 17,
773         13, 17, 19, 13, 17, 13, 18, 19,
774         13, 17, 19, 13, 18, 13, 17, 13,
775         18, 13, 18, 13, 18, 13, 18, 13,
776         18, 13, 18, 14, 18, 19, 14, 18,
777         14, 18, 14, 18, 14, 18, 14, 19,
778         14, 19, 14, 18, 14, 18, 14, 18,
779         14, 19, 14, 14, 18, 14, 14, 19,
780         14, 18, 14, 19, 14, 19, 14, 15,
781         19, 15, 15, 15, 15, 19, 15, 19,
782         15, 15, 19, 15, 15, 19, 15, 19,
783         15, 19, 15, 19, 15, 15, 15, 15,
784         15, 15, 15, 15, 15, 15, 15, 16,
785         15, 15, 15, 16, 16, 16, 15, 16,
786         16, 16, 16, 16, 16, 16, 16, 16,
787         16, 16, 16, 16, 16, 16, 16, 16,
788         16, 16, 16, 17, 16, 16, 16, 17,
789         17, 16, 17, 17, 16, 17, 17, 17,
790         17, 17, 17, 17, 17, 17, 17, 17,
791         17, 17, 17, 17, 17, 17, 17, 18,
792         17, 17, 17, 17, 17, 17, 17, 17,
793         18, 17, 17, 18, 17, 17, 17, 17,
794         18, 18, 17, 17, 17, 17, 17, 17,
795         17, 18, 17, 18, 18, 17, 17, 17,
796         18, 18, 18, 17, 18, 17, 18, 18,
797         18, 18, 18, 18, 18, 18, 18, 17,
798         18, 18, 18, 18, 19, 18, 18, 18,
799         18, 18, 18, 18, 18, 18, 18, 18,
800         18, 18, 18, 18, 18, 18, 18, 19,
801         18, 18, 19, 18, 18, 18, 19, 18,
802         19, 18, 18, 19, 18, 18, 19, 19,
803         19, 19, 19, 18, 19, 18, 19, 18,
804         19, 19, 18, 18, 19, 19, 19, 19,
805         19, 19, 19, 19, 19, 19, 18, 19,
806         19, 19, 19, 19, 18, 19, 19, 19,
807         19, 19, 19, 19, 19, 19, 19, 20,
808         19, 19, 19, 19, 21, 19, 19, 20,
809         19, 20, 19, 19, 19, 19, 19, 20,
810         20, 20, 19, 19, 19, 20, 19, 19,
811         19, 20, 20, 19, 20, 19, 19, 21,
812         20, 20, 19, 19, 19, 19, 19, 19,
813         20, 19, 20, 20, 20, 20, 20, 20,
814         20, 19, 19, 21, 20, 20, 19, 19,
815 };
816
817 static const uint32_t coef3_huffcodes[1072] = {
818         0x001b2, 0x00069, 0x00000, 0x00004, 0x00006, 0x0000e, 0x00014, 0x00019,
819         0x00016, 0x0002b, 0x00030, 0x0003d, 0x0003c, 0x0005a, 0x0005f, 0x0006d,
820         0x0007e, 0x0005f, 0x0007f, 0x000b6, 0x000bc, 0x000d8, 0x000f2, 0x000fe,
821         0x000bc, 0x000fc, 0x00161, 0x0016e, 0x00174, 0x00176, 0x001a2, 0x001e3,
822         0x001f3, 0x00174, 0x0017a, 0x001ea, 0x002a8, 0x002c4, 0x002e6, 0x00314,
823         0x00346, 0x00367, 0x003e9, 0x002e5, 0x002ee, 0x003d6, 0x00555, 0x00554,
824         0x00557, 0x005c3, 0x005d6, 0x006e0, 0x0062f, 0x006e2, 0x00799, 0x00789,
825         0x007fa, 0x005ce, 0x007fe, 0x005ec, 0x007cc, 0x007af, 0x00aa7, 0x00b19,
826         0x00b94, 0x00b85, 0x00b9f, 0x00c48, 0x00c45, 0x00dd8, 0x00c4c, 0x00c4b,
827         0x00d99, 0x00d1f, 0x00dc2, 0x00f95, 0x00fa2, 0x00bb5, 0x00b9f, 0x00f5d,
828         0x00bbf, 0x00f47, 0x0154a, 0x00fd5, 0x00f45, 0x00f7f, 0x0160d, 0x01889,
829         0x01757, 0x01722, 0x018b3, 0x0172d, 0x01a39, 0x01a18, 0x01bb3, 0x01b30,
830         0x01e63, 0x0173c, 0x01b35, 0x01723, 0x01e80, 0x01fee, 0x01761, 0x01ffc,
831         0x01f7f, 0x02c7c, 0x01fa1, 0x0177b, 0x01755, 0x0175a, 0x01fa6, 0x02eab,
832         0x0310a, 0x02c69, 0x03669, 0x03127, 0x03103, 0x02e43, 0x03662, 0x03165,
833         0x03124, 0x0313b, 0x03111, 0x03668, 0x0343b, 0x03c52, 0x03efc, 0x02e6c,
834         0x03fda, 0x03ef8, 0x02e7b, 0x03ee2, 0x03cc5, 0x03d72, 0x058c0, 0x03df8,
835         0x02ea9, 0x03e7e, 0x0556d, 0x05c82, 0x03d71, 0x03e7b, 0x03c42, 0x058d7,
836         0x03f4e, 0x06200, 0x03d70, 0x05cb2, 0x05c96, 0x05cb0, 0x03f45, 0x05cb1,
837         0x02e6d, 0x03110, 0x02f68, 0x05c90, 0x07ca6, 0x07c88, 0x06204, 0x062c8,
838         0x078a6, 0x07986, 0x079d5, 0x0b1ad, 0x07989, 0x0b079, 0x05cdd, 0x0aad4,
839         0x05de8, 0x07dcd, 0x07987, 0x05d67, 0x05d99, 0x0b91d, 0x07cf1, 0x05d9b,
840         0x079d7, 0x0b07b, 0x05c85, 0x05d9a, 0x07dcc, 0x07ebf, 0x07dce, 0x07dfb,
841         0x07ec0, 0x07d1a, 0x07a07, 0x05c84, 0x0c471, 0x07cf2, 0x0baef, 0x0b9d2,
842         0x05deb, 0x07bd6, 0x0b845, 0x05d98, 0x0b91a, 0x0bae8, 0x0c4e0, 0x0dc31,
843         0x0f93d, 0x0bbce, 0x0d1d2, 0x0f7a9, 0x0d9b9, 0x0bbcb, 0x0b900, 0x0aad7,
844         0x0babd, 0x0c4e1, 0x0f46f, 0x0c588, 0x0c58b, 0x160e6, 0x0bbcf, 0x0bac3,
845         0x0f945, 0x0f7a3, 0x0d1c1, 0x0fb8e, 0x0f7a4, 0x0fb8c, 0x0f40c, 0x0c473,
846         0x0fd72, 0x0bbcd, 0x0fffa, 0x0f940, 0x0bbc9, 0x0f7a8, 0x1a1ed, 0x0bbc5,
847         0x1f26f, 0x163fd, 0x160c7, 0x1a1f5, 0x0f947, 0x163fc, 0x154b3, 0x0fff6,
848         0x163f6, 0x160e9, 0x1a1f0, 0x0bab9, 0x0baba, 0x17086, 0x0b903, 0x0fd75,
849         0x0f308, 0x176f3, 0x163ff, 0x0fd7d, 0x1bb78, 0x163fb, 0x188db, 0x1a1f7,
850         0x154b2, 0x172fd, 0x163f4, 0x1bb73, 0x172ff, 0x0babc, 0x0f97d, 0x1a1f3,
851         0x1bb6d, 0x1ffd5, 0x1a1f4, 0x1f272, 0x17380, 0x17382, 0x1ffe7, 0x0bac8,
852         0x0bbc4, 0x188d3, 0x160e0, 0x0fd7b, 0x1725f, 0x172f5, 0x1bb79, 0x1fad9,
853         0x1f269, 0x188d0, 0x0bac4, 0x0bac5, 0x31185, 0x188d2, 0x188cc, 0x31187,
854         0x3e7fe, 0x188d1, 0x1bb6c, 0x1f268, 0x1fad2, 0x1ffd9, 0x1a1ea, 0x1bb68,
855         0x1facb, 0x3fdb2, 0x1e81a, 0x188ce, 0x172fb, 0x1a1ef, 0x1face, 0x1bb70,
856         0x0bac1, 0x1bb6b, 0x172f8, 0x1bb66, 0x1ffdf, 0x1bb6a, 0x1ffd7, 0x1f266,
857         0x176f8, 0x37653, 0x1fa7e, 0x31182, 0x1fac8, 0x2c7e3, 0x370ee, 0x176ec,
858         0x176e9, 0x2e4bc, 0x160c5, 0x3765a, 0x3ce9c, 0x17373, 0x176e8, 0x188d4,
859         0x176f1, 0x176ef, 0x37659, 0x1bb7c, 0x1ffde, 0x176f2, 0x3118b, 0x2c7d4,
860         0x37651, 0x5ce9f, 0x37650, 0x31191, 0x3f4f6, 0x3f4f5, 0x7a06c, 0x1fac1,
861         0x5c97b, 0x2c7e0, 0x79d3a, 0x3e7fd, 0x2c7df, 0x3f4f0, 0x7a06d, 0x376c1,
862         0x79d3b, 0x00004, 0x00014, 0x00059, 0x000ab, 0x000b8, 0x00177, 0x001f5,
863         0x001f2, 0x00315, 0x003fc, 0x005bd, 0x0062d, 0x006e8, 0x007dd, 0x00b04,
864         0x007cd, 0x00b1e, 0x00d1e, 0x00f15, 0x00f3b, 0x00f41, 0x01548, 0x018b0,
865         0x0173b, 0x01884, 0x01a1c, 0x01bb4, 0x01f25, 0x017b5, 0x0176d, 0x01ef8,
866         0x02e73, 0x03107, 0x03125, 0x03105, 0x02e49, 0x03ce8, 0x03ef9, 0x03e5e,
867         0x02e72, 0x03471, 0x03fd9, 0x0623f, 0x078a0, 0x06867, 0x05cb3, 0x06272,
868         0x068ec, 0x06e9a, 0x079d4, 0x06e98, 0x0b1aa, 0x06e1a, 0x07985, 0x068ee,
869         0x06e9b, 0x05c88, 0x0b1ac, 0x07dfa, 0x05d65, 0x07cf0, 0x07cbf, 0x0c475,
870         0x160eb, 0x1bb7e, 0x0f7a6, 0x1fedd, 0x160e3, 0x0fffb, 0x0fb8d, 0x0fff9,
871         0x0d1c0, 0x0c58c, 0x1a1e9, 0x0bab8, 0x0f5cf, 0x0fff5, 0x376c5, 0x1a1ec,
872         0x160ed, 0x1fede, 0x1fac9, 0x1a1eb, 0x1f224, 0x176ee, 0x0fd79, 0x17080,
873         0x17387, 0x1bb7a, 0x1ffe9, 0x176f7, 0x17385, 0x17781, 0x2c7d5, 0x17785,
874         0x1ffe3, 0x163f5, 0x1fac2, 0x3e7f9, 0x3118d, 0x3fdb1, 0x1ffe2, 0x1f226,
875         0x3118a, 0x2c7d9, 0x31190, 0x3118c, 0x3f4f3, 0x1bb7f, 0x1bb72, 0x31184,
876         0xb92f4, 0x3e7fb, 0x6e1d9, 0x1faca, 0x62300, 0x3fdb8, 0x3d037, 0x3e7fc,
877         0x62301, 0x3f4f2, 0x1f26a, 0x0000e, 0x00063, 0x000f8, 0x001ee, 0x00377,
878         0x003f7, 0x006e3, 0x005cc, 0x00b05, 0x00dd2, 0x00fd4, 0x0172e, 0x0172a,
879         0x01e23, 0x01f2d, 0x01763, 0x01769, 0x0176c, 0x02e75, 0x03104, 0x02ec1,
880         0x03e58, 0x0583f, 0x03f62, 0x03f44, 0x058c5, 0x0623c, 0x05cf4, 0x07bd7,
881         0x05d9d, 0x0aad2, 0x05d66, 0x0b1a9, 0x0b078, 0x07cfe, 0x0b918, 0x0c46f,
882         0x0b919, 0x0b847, 0x06e1b, 0x0b84b, 0x0aad8, 0x0fd74, 0x172f4, 0x17081,
883         0x0f97c, 0x1f273, 0x0f7a0, 0x0fd7c, 0x172f7, 0x0fd7a, 0x1bb77, 0x172fe,
884         0x1f270, 0x0fd73, 0x1bb7b, 0x1a1bc, 0x1bb7d, 0x0bbc3, 0x172f6, 0x0baeb,
885         0x0fb8f, 0x3f4f4, 0x3fdb4, 0x376c8, 0x3e7fa, 0x1ffd0, 0x62303, 0xb92f5,
886         0x1f261, 0x31189, 0x3fdb5, 0x2c7db, 0x376c9, 0x1fad6, 0x1fad1, 0x00015,
887         0x000f0, 0x002e0, 0x0058e, 0x005d7, 0x00c4d, 0x00fa1, 0x00bdb, 0x01756,
888         0x01f70, 0x02c19, 0x0313c, 0x0370f, 0x03cc0, 0x02ea8, 0x058c6, 0x058c7,
889         0x02eb7, 0x058d0, 0x07d18, 0x0aa58, 0x0b848, 0x05d9e, 0x05d6c, 0x0b84c,
890         0x0c589, 0x0b901, 0x163f8, 0x0bac9, 0x0b9c5, 0x0f93c, 0x188d8, 0x0bbc7,
891         0x160ec, 0x0fd6f, 0x188d9, 0x160ea, 0x0f7a7, 0x0f944, 0x0baab, 0x0dc3a,
892         0x188cf, 0x176fb, 0x2c7d8, 0x2c7d7, 0x1bb75, 0x5ce9e, 0x62302, 0x370ed,
893         0x176f4, 0x1ffd1, 0x370ef, 0x3f4f8, 0x376c7, 0x1ffe1, 0x376c6, 0x176ff,
894         0x6e1d8, 0x176f6, 0x17087, 0x0f5cd, 0x00035, 0x001a0, 0x0058b, 0x00aac,
895         0x00b9a, 0x0175f, 0x01e22, 0x01e8c, 0x01fb2, 0x0310b, 0x058d1, 0x0552e,
896         0x05c27, 0x0686e, 0x07ca7, 0x0c474, 0x0dc33, 0x07bf2, 0x05de9, 0x07a35,
897         0x0baaa, 0x0b9eb, 0x0fb95, 0x0b9b8, 0x17381, 0x1f262, 0x188cd, 0x17088,
898         0x172fa, 0x0f7a2, 0x1fad3, 0x0bac0, 0x3765c, 0x1fedf, 0x1f225, 0x1fad4,
899         0x2c7da, 0x5ce9d, 0x3e7f8, 0x1e203, 0x188d7, 0x00054, 0x002c0, 0x007a1,
900         0x00f78, 0x01b36, 0x01fa3, 0x0313a, 0x03436, 0x0343a, 0x07d1d, 0x07bd8,
901         0x05cdf, 0x0b846, 0x0b189, 0x0d9b8, 0x0fff8, 0x0d9be, 0x0c58a, 0x05dea,
902         0x0d1d3, 0x160e4, 0x1f26b, 0x188da, 0x1e202, 0x2c7d2, 0x163fe, 0x31193,
903         0x17782, 0x376c2, 0x2c7d1, 0x3fdb0, 0x3765d, 0x2c7d0, 0x1fad0, 0x1e201,
904         0x188dd, 0x2c7e2, 0x37657, 0x37655, 0x376c4, 0x376c0, 0x176ea, 0x0006f,
905         0x003cf, 0x00dd5, 0x01f23, 0x02c61, 0x02ed0, 0x05d54, 0x0552d, 0x07883,
906         0x0b1a8, 0x0b91c, 0x0babf, 0x0b902, 0x0f7aa, 0x0f7a5, 0x1a1e8, 0x1ffd6,
907         0x0babe, 0x1a1bf, 0x163f3, 0x1ffd8, 0x1fad7, 0x1f275, 0x1ffdc, 0x0007d,
908         0x005bc, 0x01549, 0x02a99, 0x03def, 0x06273, 0x079d6, 0x07d1b, 0x0aad3,
909         0x0d0fc, 0x2c7dd, 0x188d6, 0x0bac2, 0x2c7e1, 0x1bb76, 0x1a1bd, 0x31186,
910         0x0fd78, 0x1a1be, 0x31183, 0x3fdb6, 0x3f4f1, 0x37652, 0x1fad5, 0x3f4f9,
911         0x3e7ff, 0x5ce9c, 0x3765b, 0x31188, 0x17372, 0x000bd, 0x0078b, 0x01f21,
912         0x03c43, 0x03ded, 0x0aad6, 0x07ec1, 0x0f942, 0x05c86, 0x17089, 0x0babb,
913         0x1ffe8, 0x2c7de, 0x1f26e, 0x1fac4, 0x3f4f7, 0x37656, 0x1fa7d, 0x376c3,
914         0x3fdb3, 0x3118f, 0x1fac6, 0x000f8, 0x007ed, 0x01efd, 0x03e7a, 0x05c91,
915         0x0aad9, 0x0baec, 0x0dc32, 0x0f46e, 0x1e200, 0x176fa, 0x3765e, 0x3fdb7,
916         0x2c7d6, 0x3fdb9, 0x37654, 0x37658, 0x3118e, 0x1ffdb, 0x000f6, 0x00c43,
917         0x03106, 0x068ef, 0x0b84d, 0x0b188, 0x0bbcc, 0x1f264, 0x1bb69, 0x17386,
918         0x1fac0, 0x00171, 0x00f39, 0x03e41, 0x068ed, 0x0d9bc, 0x0f7a1, 0x1bb67,
919         0x1ffdd, 0x176f9, 0x001b9, 0x00f7d, 0x03f63, 0x0d0fd, 0x0b9ea, 0x188dc,
920         0x1fac3, 0x1a1f2, 0x31192, 0x1ffe4, 0x001f6, 0x01754, 0x06865, 0x0f309,
921         0x160e5, 0x176f5, 0x3765f, 0x1facc, 0x001e9, 0x01a1a, 0x06201, 0x0f105,
922         0x176f0, 0x002df, 0x01756, 0x05d6d, 0x163fa, 0x176ed, 0x00342, 0x02e40,
923         0x0d0ff, 0x17082, 0x003cd, 0x02a98, 0x0fffc, 0x2c7dc, 0x1fa7f, 0x003fe,
924         0x03764, 0x0fffd, 0x176fc, 0x1fac5, 0x002f7, 0x02ed1, 0x0fb97, 0x0058a,
925         0x02edc, 0x0bbc8, 0x005d4, 0x0623d, 0x160e8, 0x0062e, 0x05830, 0x163f9,
926         0x006eb, 0x06205, 0x1f274, 0x007de, 0x062c9, 0x1f265, 0x005c9, 0x05cde,
927         0x1ffd3, 0x005d4, 0x07988, 0x007ce, 0x0b849, 0x00b1b, 0x05c89, 0x1fac7,
928         0x00b93, 0x05c83, 0x00b9e, 0x0f14f, 0x00c4a, 0x0b9c7, 0x00dd4, 0x0c470,
929         0x1f271, 0x00f38, 0x0fb96, 0x176eb, 0x00fa0, 0x163f7, 0x00bb2, 0x0b91b,
930         0x00bbe, 0x0f102, 0x00f44, 0x0f946, 0x1facd, 0x00f79, 0x0d9bd, 0x0154d,
931         0x0bbc6, 0x00fd2, 0x160e7, 0x0172b, 0x188cb, 0x0175e, 0x0fd76, 0x0175c,
932         0x1bb71, 0x0189f, 0x1a1ee, 0x01f24, 0x1a1f6, 0x01ba7, 0x0bbca, 0x01f7d,
933         0x0ffff, 0x01f2e, 0x1bb65, 0x01bb5, 0x172f9, 0x01fef, 0x1f26c, 0x01f3e,
934         0x0fd77, 0x01762, 0x1bb6e, 0x01ef9, 0x172fc, 0x01fa0, 0x02ab7, 0x02e4a,
935         0x1f267, 0x01fb3, 0x1ffda, 0x02e42, 0x03101, 0x17780, 0x0313d, 0x03475,
936         0x17784, 0x03126, 0x1facf, 0x03c51, 0x17783, 0x03e40, 0x1ffe5, 0x03663,
937         0x1ffe0, 0x03e8f, 0x1f26d, 0x0343c, 0x03cc1, 0x176fd, 0x03e45, 0x02ec0,
938         0x03f61, 0x03dee, 0x03fd8, 0x0583e, 0x02e45, 0x03e59, 0x03d02, 0x05ce8,
939         0x05568, 0x176fe, 0x02f69, 0x1fad8, 0x058c1, 0x05c83, 0x1ffe6, 0x06271,
940         0x06e1c, 0x062c7, 0x068e1, 0x0552f, 0x06864, 0x06866, 0x06e99, 0x05cbc,
941         0x07ca5, 0x078a1, 0x05c82, 0x07dcf, 0x0623b, 0x0623e, 0x068e8, 0x07a36,
942         0x05d9c, 0x0b077, 0x07cf3, 0x07a34, 0x07ca4, 0x07d19, 0x079d2, 0x07d1c,
943         0x07bd9, 0x0b84a, 0x0fb94, 0x0aad5, 0x0dc30, 0x07bf3, 0x0baee, 0x0b07a,
944         0x0c472, 0x0b91e, 0x0d9ba, 0x05d9f, 0x0d0fe, 0x0b9c6, 0x05c87, 0x0f14e,
945         0x0baed, 0x0b92e, 0x0f103, 0x0b9c4, 0x0fb91, 0x0d9bb, 0x0b1ab, 0x0c58d,
946         0x0fffe, 0x0f93b, 0x0f941, 0x0baea, 0x0b91f, 0x0f5cc, 0x0d9bf, 0x0f943,
947         0x0f104, 0x1f260, 0x0fb92, 0x0f93f, 0x0f3a6, 0x0bac7, 0x0f7ab, 0x0bac6,
948         0x17383, 0x0fd6d, 0x0bae9, 0x0fd6e, 0x1e74f, 0x188ca, 0x1f227, 0x0fb93,
949         0x0fb90, 0x0fff7, 0x17085, 0x17083, 0x160e1, 0x17084, 0x0f93e, 0x160e2,
950         0x160c6, 0x1a1f1, 0x1bb6f, 0x17384, 0x0fd70, 0x1f263, 0x188d5, 0x173a6,
951         0x0f5ce, 0x163f2, 0x0fd71, 0x1ffd2, 0x160c4, 0x1ffd4, 0x2c7d3, 0x1bb74,
952 };
953
954 static const uint8_t coef3_huffbits[1072] = {
955         9, 7, 2, 3, 4, 4, 5, 5,
956         6, 6, 6, 6, 7, 7, 7, 7,
957         7, 8, 8, 8, 8, 8, 8, 8,
958         9, 9, 9, 9, 9, 9, 9, 9,
959         9, 10, 10, 10, 10, 10, 10, 10,
960         10, 10, 10, 11, 11, 11, 11, 11,
961         11, 11, 11, 11, 11, 11, 11, 11,
962         11, 12, 11, 12, 12, 12, 12, 12,
963         12, 12, 12, 12, 12, 12, 12, 12,
964         12, 12, 12, 12, 12, 13, 13, 13,
965         13, 13, 13, 13, 13, 13, 13, 13,
966         13, 13, 13, 13, 13, 13, 13, 13,
967         13, 14, 13, 14, 14, 13, 14, 13,
968         13, 14, 14, 14, 14, 14, 14, 14,
969         14, 14, 14, 14, 14, 14, 14, 14,
970         14, 14, 14, 14, 14, 14, 14, 15,
971         14, 14, 15, 14, 14, 15, 15, 15,
972         15, 15, 15, 15, 15, 15, 14, 15,
973         15, 15, 15, 15, 15, 15, 15, 15,
974         15, 14, 15, 15, 15, 15, 15, 15,
975         15, 15, 15, 16, 15, 16, 16, 16,
976         16, 15, 15, 16, 16, 16, 16, 16,
977         15, 16, 16, 16, 15, 16, 15, 15,
978         16, 15, 16, 16, 16, 16, 16, 16,
979         16, 16, 16, 16, 16, 16, 16, 16,
980         16, 17, 16, 17, 16, 17, 17, 16,
981         17, 16, 17, 16, 16, 17, 17, 17,
982         16, 17, 16, 16, 17, 16, 17, 16,
983         17, 17, 16, 16, 17, 17, 17, 17,
984         17, 17, 17, 17, 16, 17, 17, 16,
985         17, 17, 17, 17, 17, 17, 17, 17,
986         16, 18, 17, 17, 17, 17, 17, 17,
987         17, 17, 17, 17, 17, 17, 16, 17,
988         17, 17, 17, 17, 17, 17, 17, 17,
989         17, 17, 17, 17, 17, 17, 17, 18,
990         17, 17, 17, 17, 18, 17, 17, 18,
991         19, 17, 17, 17, 18, 17, 17, 17,
992         18, 18, 18, 17, 17, 17, 18, 17,
993         17, 17, 17, 17, 17, 17, 17, 17,
994         18, 18, 18, 18, 18, 18, 18, 18,
995         18, 18, 17, 18, 18, 18, 18, 17,
996         18, 18, 18, 17, 17, 18, 18, 18,
997         18, 19, 18, 18, 19, 19, 20, 18,
998         19, 18, 19, 19, 18, 19, 20, 18,
999         19, 4, 6, 7, 8, 9, 9, 9,
1000         10, 10, 10, 11, 11, 11, 11, 12,
1001         12, 12, 12, 12, 12, 13, 13, 13,
1002         13, 13, 13, 13, 13, 14, 14, 14,
1003         14, 14, 14, 14, 14, 14, 14, 14,
1004         14, 14, 14, 15, 15, 15, 15, 15,
1005         15, 15, 15, 15, 16, 15, 15, 15,
1006         15, 16, 16, 15, 16, 16, 15, 16,
1007         17, 17, 17, 17, 17, 16, 16, 16,
1008         16, 16, 17, 17, 17, 16, 18, 17,
1009         17, 17, 18, 17, 17, 18, 17, 17,
1010         17, 17, 17, 18, 17, 18, 18, 18,
1011         17, 17, 18, 19, 18, 18, 17, 17,
1012         18, 18, 18, 18, 19, 17, 17, 18,
1013         20, 19, 19, 18, 19, 18, 19, 19,
1014         19, 19, 17, 5, 7, 9, 10, 10,
1015         11, 11, 12, 12, 12, 13, 13, 13,
1016         13, 13, 14, 14, 14, 14, 14, 15,
1017         14, 15, 15, 15, 15, 15, 16, 16,
1018         16, 16, 16, 16, 16, 16, 16, 16,
1019         16, 16, 15, 16, 16, 17, 17, 17,
1020         16, 17, 17, 17, 17, 17, 17, 17,
1021         17, 17, 17, 17, 17, 17, 17, 16,
1022         16, 19, 18, 18, 19, 17, 19, 20,
1023         17, 18, 18, 18, 18, 18, 18, 6,
1024         8, 10, 11, 12, 12, 12, 13, 13,
1025         13, 14, 14, 14, 14, 15, 15, 15,
1026         15, 15, 15, 16, 16, 16, 16, 16,
1027         16, 17, 17, 17, 16, 16, 17, 17,
1028         17, 17, 17, 17, 17, 16, 16, 16,
1029         17, 18, 18, 18, 17, 19, 19, 18,
1030         18, 17, 18, 19, 18, 17, 18, 18,
1031         19, 18, 17, 17, 6, 9, 11, 12,
1032         13, 13, 13, 14, 14, 14, 15, 15,
1033         15, 15, 15, 16, 16, 16, 16, 16,
1034         16, 17, 16, 17, 17, 17, 17, 17,
1035         17, 17, 18, 17, 18, 17, 17, 18,
1036         18, 19, 19, 17, 17, 7, 10, 12,
1037         13, 13, 14, 14, 14, 14, 15, 16,
1038         16, 16, 16, 16, 16, 16, 16, 16,
1039         16, 17, 17, 17, 17, 18, 17, 18,
1040         18, 18, 18, 18, 18, 18, 18, 17,
1041         17, 18, 18, 18, 18, 18, 18, 7,
1042         10, 12, 13, 14, 15, 15, 15, 15,
1043         16, 16, 17, 17, 17, 17, 17, 17,
1044         17, 17, 17, 17, 18, 17, 17, 8,
1045         11, 13, 14, 15, 15, 15, 15, 16,
1046         16, 18, 17, 17, 18, 17, 17, 18,
1047         17, 17, 18, 18, 19, 18, 18, 19,
1048         19, 19, 18, 18, 18, 8, 11, 13,
1049         14, 15, 16, 16, 16, 16, 17, 17,
1050         17, 18, 17, 18, 19, 18, 18, 18,
1051         18, 18, 18, 8, 12, 14, 15, 15,
1052         16, 16, 16, 17, 17, 18, 18, 18,
1053         18, 18, 18, 18, 18, 17, 9, 12,
1054         14, 15, 16, 16, 17, 17, 17, 17,
1055         18, 9, 12, 14, 15, 16, 17, 17,
1056         17, 18, 9, 13, 15, 16, 17, 17,
1057         18, 17, 18, 17, 9, 13, 15, 16,
1058         17, 18, 18, 18, 10, 13, 15, 16,
1059         18, 10, 14, 16, 17, 18, 10, 14,
1060         16, 17, 10, 14, 16, 18, 18, 10,
1061         14, 16, 18, 18, 11, 15, 16, 11,
1062         15, 17, 11, 15, 17, 11, 15, 17,
1063         11, 15, 17, 11, 15, 17, 12, 16,
1064         17, 12, 15, 12, 16, 12, 16, 18,
1065         12, 16, 12, 16, 12, 16, 12, 16,
1066         17, 12, 16, 18, 12, 17, 13, 16,
1067         13, 16, 13, 16, 18, 13, 16, 13,
1068         17, 13, 17, 13, 17, 13, 17, 13,
1069         17, 13, 17, 13, 17, 13, 17, 13,
1070         16, 13, 17, 13, 17, 13, 17, 14,
1071         17, 14, 17, 14, 17, 14, 14, 14,
1072         17, 14, 17, 14, 14, 18, 14, 14,
1073         18, 14, 18, 14, 18, 14, 17, 14,
1074         17, 14, 17, 14, 14, 18, 14, 15,
1075         15, 15, 14, 15, 15, 14, 15, 15,
1076         15, 18, 15, 18, 15, 15, 17, 15,
1077         15, 15, 15, 15, 15, 15, 15, 15,
1078         15, 15, 16, 15, 15, 15, 15, 16,
1079         16, 16, 16, 16, 15, 15, 15, 15,
1080         16, 16, 16, 16, 16, 16, 16, 16,
1081         16, 16, 16, 16, 16, 16, 16, 16,
1082         16, 16, 16, 16, 16, 16, 16, 16,
1083         16, 16, 16, 16, 16, 17, 16, 16,
1084         16, 17, 16, 16, 16, 17, 17, 17,
1085         17, 17, 16, 17, 17, 17, 17, 16,
1086         16, 16, 17, 17, 17, 17, 16, 17,
1087         17, 17, 17, 17, 17, 17, 17, 17,
1088         17, 17, 17, 17, 17, 17, 18, 17,
1089 };
1090
1091 static const uint32_t coef4_huffcodes[476] = {
1092         0x00f01, 0x0001e, 0x00000, 0x00004, 0x00006, 0x0000d, 0x0000a, 0x00017,
1093         0x0001d, 0x00017, 0x0002c, 0x00031, 0x00039, 0x0003e, 0x00039, 0x0005a,
1094         0x00066, 0x00070, 0x0007b, 0x00070, 0x00077, 0x000af, 0x000c9, 0x000f2,
1095         0x000f4, 0x000b2, 0x000e3, 0x0015b, 0x0015d, 0x00181, 0x0019d, 0x001e3,
1096         0x001c5, 0x002b5, 0x002db, 0x00338, 0x003c3, 0x003cc, 0x003f0, 0x002cd,
1097         0x003fa, 0x003a1, 0x005b4, 0x00657, 0x007ab, 0x0074d, 0x0074c, 0x00ac1,
1098         0x00ac5, 0x0076b, 0x00ca8, 0x00f04, 0x00f00, 0x00fe3, 0x00f3c, 0x00f10,
1099         0x00f39, 0x00fe6, 0x00e26, 0x00e90, 0x016c5, 0x01827, 0x01954, 0x015c5,
1100         0x01958, 0x01f8a, 0x01c4a, 0x02b0f, 0x02b41, 0x02b0e, 0x033c6, 0x03050,
1101         0x01c4f, 0x02d88, 0x0305c, 0x03c18, 0x02b4f, 0x02cc2, 0x03a47, 0x05680,
1102         0x0569d, 0x06442, 0x06443, 0x06446, 0x0656e, 0x06444, 0x07120, 0x0748a,
1103         0x0c1ba, 0x07e22, 0x07aa6, 0x07f25, 0x07aa7, 0x07e20, 0x0c11b, 0x0c118,
1104         0x07aa5, 0x0ad0a, 0x0f389, 0x19ebb, 0x0caad, 0x0fe42, 0x0fe40, 0x16c34,
1105         0x2b4e5, 0x33d65, 0x16c30, 0x1e7ae, 0x1e25c, 0x18370, 0x1e703, 0x19eba,
1106         0x16c37, 0x0e234, 0x16c6e, 0x00004, 0x0002a, 0x00061, 0x00075, 0x000cb,
1107         0x000ff, 0x00190, 0x001eb, 0x001d1, 0x002b9, 0x00307, 0x00339, 0x0033f,
1108         0x003fb, 0x003b4, 0x0060c, 0x00679, 0x00645, 0x0067d, 0x0078a, 0x007e3,
1109         0x00749, 0x00ac4, 0x00ad2, 0x00ae3, 0x00c10, 0x00c16, 0x00ad1, 0x00cf4,
1110         0x00fe2, 0x01586, 0x00e9d, 0x019f1, 0x01664, 0x01e26, 0x01d38, 0x02b4d,
1111         0x033c5, 0x01fc2, 0x01fc3, 0x01d28, 0x03c1d, 0x0598e, 0x0f094, 0x07aa4,
1112         0x0ad38, 0x0ac0c, 0x0c11a, 0x079ea, 0x0c881, 0x0fe44, 0x0b635, 0x0ac0d,
1113         0x0b61e, 0x05987, 0x07121, 0x0f382, 0x0f387, 0x0e237, 0x0fe47, 0x0f383,
1114         0x0f091, 0x0f385, 0x0e233, 0x182ee, 0x19eb8, 0x1663e, 0x0f093, 0x00014,
1115         0x00058, 0x00159, 0x00167, 0x00300, 0x003d4, 0x005b5, 0x0079d, 0x0076a,
1116         0x00b67, 0x00b60, 0x00f05, 0x00cf0, 0x00f17, 0x00e95, 0x01822, 0x01913,
1117         0x016c2, 0x0182f, 0x01959, 0x01fcb, 0x01e27, 0x01c40, 0x033c7, 0x01e7b,
1118         0x01c49, 0x02d89, 0x01e23, 0x01660, 0x03f12, 0x02cc6, 0x033e1, 0x05b34,
1119         0x0609a, 0x06569, 0x07488, 0x07e21, 0x0cf5f, 0x0712c, 0x0389d, 0x067cf,
1120         0x07f28, 0x1663f, 0x33d67, 0x1663d, 0x1e25d, 0x3c1ab, 0x15c44, 0x16c36,
1121         0x0001f, 0x000ec, 0x00323, 0x005b2, 0x0079f, 0x00ac2, 0x00f16, 0x00e9e,
1122         0x01956, 0x01e0f, 0x019ea, 0x01666, 0x02b89, 0x02b02, 0x02d8c, 0x03c1b,
1123         0x03c19, 0x032b5, 0x03f9c, 0x02ccf, 0x03897, 0x05b35, 0x0ad02, 0x07f29,
1124         0x06441, 0x03884, 0x07888, 0x0784e, 0x06568, 0x0c1bb, 0x05986, 0x067cc,
1125         0x0fe49, 0x0fe48, 0x0c1bc, 0x0fe41, 0x18371, 0x1663c, 0x0e231, 0x0711e,
1126         0x0ad09, 0x0f092, 0x0002d, 0x001db, 0x00781, 0x00c1a, 0x00f55, 0x01580,
1127         0x01ea8, 0x02d9b, 0x032af, 0x03f16, 0x03c1c, 0x07834, 0x03c45, 0x0389c,
1128         0x067ce, 0x06445, 0x0c1b9, 0x07889, 0x07f3a, 0x0784f, 0x07f2b, 0x0ad0b,
1129         0x0f090, 0x0c11d, 0x0e94e, 0x0711f, 0x0e9f1, 0x0f38e, 0x079e9, 0x0ad03,
1130         0x0f09b, 0x0caae, 0x0fe46, 0x2b4e6, 0x0e9f0, 0x19eb6, 0x67ac1, 0x67ac0,
1131         0x33d66, 0x0f388, 0x00071, 0x003a0, 0x00ca9, 0x01829, 0x01d39, 0x02b43,
1132         0x02cc4, 0x06554, 0x0f09a, 0x0b61f, 0x067cd, 0x0711c, 0x0b636, 0x07f2a,
1133         0x0b634, 0x0c11f, 0x0cf5e, 0x0b61d, 0x0f06b, 0x0caab, 0x0c1be, 0x0e94c,
1134         0x0f099, 0x182ed, 0x0e94f, 0x0c119, 0x0e232, 0x2b4e4, 0x0f38a, 0x19eb4,
1135         0x1e25f, 0x0e94d, 0x000b7, 0x00785, 0x016cc, 0x03051, 0x033c4, 0x0656f,
1136         0x03891, 0x0711d, 0x0caaf, 0x0f097, 0x07489, 0x0f098, 0x0c880, 0x0caaa,
1137         0x0f386, 0x19eb7, 0x16c6f, 0x0f384, 0x182e8, 0x182e9, 0x0e230, 0x1e700,
1138         0x33d62, 0x33d63, 0x33d64, 0x16c33, 0x0e216, 0x000fd, 0x00c15, 0x01665,
1139         0x03c4a, 0x07f3b, 0x07896, 0x0c11c, 0x0e215, 0x16c32, 0x0f38b, 0x0f38d,
1140         0x182ea, 0x1e701, 0x712df, 0x15c46, 0x00194, 0x00fe0, 0x03f13, 0x0748b,
1141         0x0f096, 0x0cf80, 0x1e25e, 0xe25bd, 0x33d61, 0x16c31, 0x001f9, 0x01912,
1142         0x05710, 0x0f3d0, 0x0c1bf, 0x00301, 0x01e24, 0x0ad08, 0x003cd, 0x01c41,
1143         0x0c1bd, 0x00563, 0x03a52, 0x0f3d1, 0x00570, 0x02cce, 0x0e217, 0x0067b,
1144         0x0655d, 0x0074b, 0x06447, 0x00c12, 0x074fb, 0x00f08, 0x0b61c, 0x00e22,
1145         0x0fe43, 0x016c7, 0x01836, 0x019f2, 0x01c43, 0x01d3f, 0x01fcf, 0x02b4c,
1146         0x0304c, 0x032b6, 0x03a46, 0x05607, 0x03f17, 0x02cc5, 0x0609b, 0x0655c,
1147         0x07e23, 0x067c1, 0x07f26, 0x07f27, 0x0f095, 0x0e9f3, 0x0cf81, 0x0c11e,
1148         0x0caac, 0x0f38f, 0x0e9f2, 0x074fa, 0x0e236, 0x0fe45, 0x1c428, 0x0e235,
1149         0x182ef, 0x19eb5, 0x0f3d6, 0x182ec, 0x16c35, 0x0f38c, 0x2b4e7, 0x15c47,
1150         0xe25bc, 0x1e702, 0x1c4b6, 0x0e25a, 0x3c1aa, 0x15c45, 0x1c429, 0x19eb9,
1151         0x1e7af, 0x182eb, 0x1e0d4, 0x3896e,
1152 };
1153
1154 static const uint8_t coef4_huffbits[476] = {
1155         12, 6, 2, 3, 4, 4, 5, 5,
1156         5, 6, 6, 6, 6, 6, 7, 7,
1157         7, 7, 7, 8, 8, 8, 8, 8,
1158         8, 9, 9, 9, 9, 9, 9, 9,
1159         10, 10, 10, 10, 10, 10, 10, 11,
1160         10, 11, 11, 11, 11, 12, 12, 12,
1161         12, 12, 12, 12, 12, 12, 12, 12,
1162         12, 12, 13, 13, 13, 13, 13, 13,
1163         13, 13, 14, 14, 14, 14, 14, 14,
1164         14, 14, 14, 14, 14, 15, 15, 15,
1165         15, 15, 15, 15, 15, 15, 16, 16,
1166         16, 15, 15, 15, 15, 15, 16, 16,
1167         15, 16, 16, 17, 16, 16, 16, 17,
1168         18, 18, 17, 17, 17, 17, 17, 17,
1169         17, 17, 17, 4, 6, 7, 8, 8,
1170         8, 9, 9, 10, 10, 10, 10, 10,
1171         10, 11, 11, 11, 11, 11, 11, 11,
1172         12, 12, 12, 12, 12, 12, 12, 12,
1173         12, 13, 13, 13, 14, 13, 14, 14,
1174         14, 13, 13, 14, 14, 16, 16, 15,
1175         16, 16, 16, 15, 16, 16, 16, 16,
1176         16, 16, 16, 16, 16, 17, 16, 16,
1177         16, 16, 17, 17, 17, 18, 16, 5,
1178         8, 9, 10, 10, 10, 11, 11, 12,
1179         12, 12, 12, 12, 12, 13, 13, 13,
1180         13, 13, 13, 13, 13, 14, 14, 13,
1181         14, 14, 13, 14, 14, 15, 14, 15,
1182         15, 15, 16, 15, 16, 16, 15, 15,
1183         15, 18, 18, 18, 17, 18, 17, 17,
1184         6, 9, 10, 11, 11, 12, 12, 13,
1185         13, 13, 13, 14, 14, 14, 14, 14,
1186         14, 14, 14, 15, 15, 15, 16, 15,
1187         15, 15, 15, 15, 15, 16, 16, 15,
1188         16, 16, 16, 16, 17, 18, 17, 16,
1189         16, 16, 7, 10, 11, 12, 12, 13,
1190         13, 14, 14, 14, 14, 15, 14, 15,
1191         15, 15, 16, 15, 15, 15, 15, 16,
1192         16, 16, 17, 16, 17, 16, 15, 16,
1193         16, 16, 16, 18, 17, 17, 19, 19,
1194         18, 16, 7, 11, 12, 13, 14, 14,
1195         15, 15, 16, 16, 15, 16, 16, 15,
1196         16, 16, 16, 16, 16, 16, 16, 17,
1197         16, 17, 17, 16, 17, 18, 16, 17,
1198         17, 17, 8, 11, 13, 14, 14, 15,
1199         15, 16, 16, 16, 16, 16, 16, 16,
1200         16, 17, 17, 16, 17, 17, 17, 17,
1201         18, 18, 18, 17, 17, 8, 12, 14,
1202         14, 15, 15, 16, 17, 17, 16, 16,
1203         17, 17, 20, 17, 9, 12, 14, 16,
1204         16, 16, 17, 21, 18, 17, 9, 13,
1205         15, 16, 16, 10, 13, 16, 10, 14,
1206         16, 11, 15, 16, 11, 15, 17, 11,
1207         15, 12, 15, 12, 16, 12, 16, 13,
1208         16, 13, 13, 13, 14, 14, 13, 14,
1209         14, 14, 15, 15, 14, 15, 15, 15,
1210         15, 15, 15, 15, 16, 17, 16, 16,
1211         16, 16, 17, 16, 17, 16, 18, 17,
1212         17, 17, 16, 17, 17, 16, 18, 17,
1213         21, 17, 18, 17, 18, 17, 18, 17,
1214         17, 17, 17, 19,
1215 };
1216
1217 static const uint32_t coef5_huffcodes[435] = {
1218         0x00347, 0x0000b, 0x00001, 0x00001, 0x0000c, 0x00004, 0x00010, 0x00015,
1219         0x0001f, 0x0000b, 0x00023, 0x00026, 0x00029, 0x00035, 0x00037, 0x00001,
1220         0x00015, 0x0001a, 0x0001d, 0x0001c, 0x0001e, 0x0004e, 0x00049, 0x00051,
1221         0x00078, 0x00004, 0x00000, 0x00008, 0x0000d, 0x0007b, 0x00005, 0x00032,
1222         0x00095, 0x00091, 0x00096, 0x000a1, 0x000d9, 0x00003, 0x00019, 0x00061,
1223         0x00066, 0x00060, 0x00017, 0x0000e, 0x00063, 0x001a0, 0x001b7, 0x001e6,
1224         0x001e7, 0x001b6, 0x00018, 0x001e8, 0x00038, 0x00031, 0x00005, 0x0003d,
1225         0x00027, 0x001ea, 0x0001a, 0x000c5, 0x000f9, 0x000ff, 0x000db, 0x00250,
1226         0x000fc, 0x0025c, 0x00008, 0x00075, 0x003d7, 0x003d3, 0x001b0, 0x0007c,
1227         0x003ca, 0x00036, 0x00189, 0x004a6, 0x004a2, 0x004fb, 0x000c0, 0x0007f,
1228         0x0009a, 0x00311, 0x0006e, 0x0009b, 0x0068c, 0x006c0, 0x00484, 0x00012,
1229         0x000c3, 0x0094f, 0x00979, 0x009f9, 0x00d09, 0x00da6, 0x00da8, 0x00901,
1230         0x000c1, 0x00373, 0x00d08, 0x009fa, 0x00d8b, 0x00d85, 0x00d86, 0x000df,
1231         0x006e2, 0x000ce, 0x00f24, 0x009fe, 0x001f7, 0x007c1, 0x000cf, 0x009fc,
1232         0x009ff, 0x00d89, 0x00da9, 0x009fd, 0x001f8, 0x01a36, 0x0128c, 0x0129d,
1233         0x01a37, 0x00196, 0x003ea, 0x00f8b, 0x00d93, 0x01e45, 0x01e58, 0x01e4b,
1234         0x01e59, 0x013f1, 0x00309, 0x00265, 0x00308, 0x0243a, 0x027e1, 0x00f89,
1235         0x00324, 0x03cbc, 0x03c86, 0x03695, 0x0243c, 0x0243b, 0x0243e, 0x01e4a,
1236         0x003a5, 0x03468, 0x03428, 0x03c84, 0x027e0, 0x025e2, 0x01880, 0x00197,
1237         0x00325, 0x03cb7, 0x0791e, 0x007ec, 0x06c75, 0x004c8, 0x04bc7, 0x004c6,
1238         0x00983, 0x0481e, 0x01b53, 0x0251b, 0x01b58, 0x00984, 0x04fa8, 0x03cbb,
1239         0x00f8a, 0x00322, 0x0346a, 0x0243d, 0x00326, 0x03469, 0x0481f, 0x0481d,
1240         0x00746, 0x09032, 0x01b50, 0x01d13, 0x0d8e4, 0x0481b, 0x06c74, 0x0796b,
1241         0x07969, 0x00985, 0x0d8e3, 0x00986, 0x00fa2, 0x01301, 0x06c7c, 0x00987,
1242         0x03cb8, 0x0f4af, 0x00e88, 0x1b1c0, 0x00fce, 0x033eb, 0x03f6a, 0x03f69,
1243         0x00fcf, 0x0791f, 0x004c9, 0x04871, 0x00fcd, 0x00982, 0x00fcc, 0x00fa3,
1244         0x01d12, 0x0796c, 0x01b47, 0x00321, 0x0796a, 0x0d8e2, 0x04872, 0x04873,
1245         0x0000e, 0x00014, 0x0000a, 0x000a0, 0x00012, 0x0007d, 0x001a2, 0x0003b,
1246         0x0025f, 0x000dd, 0x0027c, 0x00343, 0x00368, 0x0036b, 0x0003e, 0x001fa,
1247         0x00485, 0x001b3, 0x0007f, 0x001b1, 0x0019e, 0x004ba, 0x007ad, 0x00339,
1248         0x00066, 0x007a4, 0x00793, 0x006c6, 0x0007e, 0x000f1, 0x00372, 0x009fb,
1249         0x00d83, 0x00d8a, 0x00947, 0x009f4, 0x001d0, 0x01b09, 0x01b4b, 0x007ec,
1250         0x003e1, 0x000ca, 0x003ec, 0x02539, 0x04fa9, 0x01b57, 0x03429, 0x03d2a,
1251         0x00d97, 0x003a7, 0x00dc0, 0x00d96, 0x00dc1, 0x007eb, 0x03cba, 0x00c43,
1252         0x00c41, 0x01b52, 0x007ef, 0x00323, 0x03cb9, 0x03c83, 0x007d0, 0x007ed,
1253         0x06c7f, 0x09033, 0x03f6c, 0x36383, 0x1e95d, 0x06c78, 0x00747, 0x01b51,
1254         0x00022, 0x00016, 0x00039, 0x00252, 0x00079, 0x00486, 0x00338, 0x00369,
1255         0x00d88, 0x00026, 0x00d87, 0x00f4b, 0x00d82, 0x00027, 0x001e1, 0x01a15,
1256         0x007c7, 0x012f0, 0x001e0, 0x006d0, 0x01a16, 0x01e44, 0x01e5f, 0x03690,
1257         0x00d90, 0x00c42, 0x00daf, 0x00d92, 0x00f80, 0x00cfb, 0x0342f, 0x0487f,
1258         0x01b46, 0x07968, 0x00d95, 0x00d91, 0x01b55, 0x03f68, 0x04bc6, 0x03cbd,
1259         0x00f81, 0x00320, 0x00069, 0x000fe, 0x006d5, 0x0033f, 0x000de, 0x007c6,
1260         0x01e40, 0x00d94, 0x00f88, 0x03c8e, 0x03694, 0x00dae, 0x00dad, 0x00267,
1261         0x003a6, 0x00327, 0x0487e, 0x007ee, 0x00749, 0x004c7, 0x03692, 0x01b56,
1262         0x00fd1, 0x07a56, 0x06c77, 0x09031, 0x00748, 0x06c7a, 0x0796d, 0x033ea,
1263         0x06c76, 0x00fd0, 0x36382, 0x1e417, 0x00745, 0x04faf, 0x0d8e1, 0x03f6b,
1264         0x1e95c, 0x04fad, 0x0009e, 0x004bd, 0x0067c, 0x01b08, 0x003eb, 0x01b45,
1265         0x03691, 0x0d8e5, 0x07904, 0x00981, 0x007ea, 0x019f4, 0x06c7d, 0x04fab,
1266         0x04fac, 0x06c7e, 0x01300, 0x06c7b, 0x0006f, 0x003f7, 0x03c85, 0x004c4,
1267         0x0001e, 0x006e1, 0x03693, 0x01b44, 0x00241, 0x01e46, 0x0019d, 0x00266,
1268         0x004bb, 0x02538, 0x007ac, 0x01b54, 0x00902, 0x04870, 0x00da7, 0x00900,
1269         0x00185, 0x06c79, 0x006e3, 0x003e9, 0x01e94, 0x003ed, 0x003f2, 0x0342e,
1270         0x0346b, 0x0251a, 0x004c5, 0x01881, 0x0481c, 0x01b59, 0x03c87, 0x04fae,
1271         0x007e9, 0x03f6d, 0x0f20a, 0x09030, 0x04faa, 0x0d8e6, 0x03f6f, 0x0481a,
1272         0x03f6e, 0x1e416, 0x0d8e7,
1273 };
1274
1275 static const uint8_t coef5_huffbits[435] = {
1276         10, 4, 2, 4, 4, 5, 5, 5,
1277         5, 6, 6, 6, 6, 6, 6, 7,
1278         7, 7, 7, 7, 7, 7, 7, 7,
1279         7, 8, 8, 8, 8, 7, 8, 8,
1280         8, 8, 8, 8, 8, 9, 9, 9,
1281         9, 9, 9, 9, 9, 9, 9, 9,
1282         9, 9, 10, 9, 10, 10, 10, 10,
1283         10, 9, 10, 10, 10, 10, 10, 10,
1284         10, 10, 11, 11, 10, 10, 11, 11,
1285         10, 11, 11, 11, 11, 11, 12, 12,
1286         12, 12, 12, 12, 11, 11, 11, 12,
1287         12, 12, 12, 12, 12, 12, 12, 12,
1288         12, 12, 12, 12, 12, 12, 12, 13,
1289         13, 13, 12, 12, 13, 13, 13, 12,
1290         12, 12, 12, 12, 13, 13, 13, 13,
1291         13, 14, 14, 14, 14, 13, 13, 13,
1292         13, 13, 14, 14, 14, 14, 14, 14,
1293         15, 14, 14, 14, 14, 14, 14, 13,
1294         14, 14, 14, 14, 14, 14, 15, 14,
1295         15, 14, 15, 15, 15, 15, 15, 15,
1296         16, 15, 15, 14, 15, 16, 15, 14,
1297         14, 15, 14, 14, 15, 14, 15, 15,
1298         15, 16, 15, 17, 16, 15, 15, 15,
1299         15, 16, 16, 16, 16, 17, 15, 16,
1300         14, 16, 16, 17, 16, 16, 16, 16,
1301         16, 15, 15, 15, 16, 16, 16, 16,
1302         17, 15, 15, 15, 15, 16, 15, 15,
1303         4, 7, 8, 8, 9, 9, 9, 10,
1304         10, 10, 10, 10, 10, 10, 11, 11,
1305         11, 11, 11, 11, 11, 11, 11, 12,
1306         12, 11, 11, 11, 12, 12, 12, 12,
1307         12, 12, 12, 12, 13, 13, 13, 13,
1308         12, 13, 14, 14, 15, 15, 14, 14,
1309         14, 14, 14, 14, 14, 15, 14, 14,
1310         14, 15, 15, 15, 14, 14, 15, 15,
1311         15, 16, 16, 18, 17, 15, 15, 15,
1312         6, 9, 10, 10, 11, 11, 12, 12,
1313         12, 13, 12, 12, 12, 13, 13, 13,
1314         13, 13, 13, 13, 13, 13, 13, 14,
1315         14, 14, 14, 14, 14, 14, 14, 15,
1316         15, 15, 14, 14, 15, 16, 15, 14,
1317         14, 15, 7, 10, 11, 12, 13, 13,
1318         13, 14, 14, 14, 14, 14, 14, 14,
1319         14, 15, 15, 15, 15, 15, 14, 15,
1320         16, 15, 15, 16, 15, 15, 15, 16,
1321         15, 16, 18, 17, 15, 15, 16, 16,
1322         17, 15, 8, 11, 13, 13, 14, 15,
1323         14, 16, 15, 16, 15, 15, 15, 15,
1324         15, 15, 17, 15, 9, 12, 14, 15,
1325         10, 13, 14, 15, 10, 13, 11, 14,
1326         11, 14, 11, 15, 12, 15, 12, 12,
1327         13, 15, 13, 14, 13, 14, 14, 14,
1328         14, 14, 15, 15, 15, 15, 14, 15,
1329         15, 16, 16, 16, 15, 16, 16, 15,
1330         16, 17, 16,
1331 };
1332
1333 static const uint16_t levels0[60] = {
1334         317, 92, 62, 60, 19, 17, 10, 7,
1335         6, 5, 5, 3, 3, 3, 2, 2,
1336         2, 2, 2, 2, 2, 1, 2, 2,
1337         1, 1, 1, 1, 1, 1, 1, 1,
1338         1, 1, 1, 1, 1, 1, 1, 1,
1339         1, 1, 1, 1, 1, 1, 1, 1,
1340         1, 1, 1, 1, 1, 1, 1, 1,
1341         1, 1, 1, 1,
1342 };
1343
1344 static const uint16_t levels1[40] = {
1345         311, 91, 61, 28, 10, 6, 5, 2,
1346         2, 2, 2, 2, 2, 2, 2, 1,
1347         1, 1, 1, 1, 1, 1, 1, 1,
1348         1, 1, 1, 1, 1, 1, 1, 1,
1349         1, 1, 1, 1, 1, 1, 1, 1,
1350 };
1351
1352 static const uint16_t levels2[340] = {
1353         181, 110, 78, 63, 61, 62, 60, 61,
1354         33, 41, 41, 19, 17, 19, 12, 11,
1355         9, 11, 10, 6, 8, 7, 6, 4,
1356         5, 5, 4, 4, 3, 4, 3, 5,
1357         3, 4, 3, 3, 3, 3, 3, 3,
1358         2, 2, 4, 2, 3, 2, 3, 3,
1359         2, 2, 2, 2, 2, 2, 2, 2,
1360         3, 2, 2, 2, 2, 2, 2, 2,
1361         2, 2, 2, 1, 2, 1, 2, 2,
1362         2, 2, 1, 2, 1, 1, 1, 2,
1363         2, 1, 2, 1, 2, 2, 2, 2,
1364         1, 1, 1, 1, 1, 1, 1, 1,
1365         1, 1, 1, 1, 1, 1, 1, 1,
1366         1, 1, 1, 1, 1, 1, 1, 1,
1367         1, 1, 1, 1, 1, 1, 1, 1,
1368         1, 1, 1, 1, 1, 1, 1, 1,
1369         1, 1, 1, 1, 1, 1, 1, 1,
1370         1, 1, 1, 1, 1, 1, 1, 1,
1371         1, 1, 1, 1, 1, 1, 1, 1,
1372         1, 1, 1, 1, 1, 1, 1, 1,
1373         1, 1, 1, 1, 1, 1, 1, 1,
1374         1, 1, 1, 1, 1, 1, 1, 1,
1375         1, 1, 1, 1, 1, 1, 1, 1,
1376         1, 1, 1, 1, 1, 1, 1, 1,
1377         1, 1, 1, 1, 1, 1, 1, 1,
1378         1, 1, 1, 1, 1, 1, 1, 1,
1379         1, 1, 1, 1, 1, 1, 1, 1,
1380         1, 1, 1, 1, 1, 1, 1, 1,
1381         1, 1, 1, 1, 1, 1, 1, 1,
1382         1, 1, 1, 1, 1, 1, 1, 1,
1383         1, 1, 1, 1, 1, 1, 1, 1,
1384         1, 1, 1, 1, 1, 1, 1, 1,
1385         1, 1, 1, 1, 1, 1, 1, 1,
1386         1, 1, 1, 1, 1, 1, 1, 1,
1387         1, 1, 1, 1, 1, 1, 1, 1,
1388         1, 1, 1, 1, 1, 1, 1, 1,
1389         1, 1, 1, 1, 1, 1, 1, 1,
1390         1, 1, 1, 1, 1, 1, 1, 1,
1391         1, 1, 1, 1, 1, 1, 1, 1,
1392         1, 1, 1, 1, 1, 1, 1, 1,
1393         1, 1, 1, 1, 1, 1, 1, 1,
1394         1, 1, 1, 1, 1, 1, 1, 1,
1395         1, 1, 1, 1,
1396 };
1397
1398 static const uint16_t levels3[180] = {
1399         351, 122, 76, 61, 41, 42, 24, 30,
1400         22, 19, 11, 9, 10, 8, 5, 5,
1401         4, 5, 5, 3, 3, 3, 3, 3,
1402         3, 3, 2, 2, 3, 2, 2, 2,
1403         3, 3, 2, 2, 2, 3, 2, 2,
1404         2, 2, 2, 2, 2, 2, 2, 2,
1405         2, 2, 2, 2, 2, 2, 1, 1,
1406         2, 2, 1, 2, 1, 2, 2, 2,
1407         2, 2, 2, 1, 2, 1, 1, 1,
1408         1, 1, 1, 1, 1, 1, 1, 2,
1409         2, 1, 2, 1, 1, 1, 1, 1,
1410         1, 1, 1, 1, 1, 1, 1, 1,
1411         1, 1, 1, 1, 1, 1, 1, 1,
1412         1, 1, 1, 1, 1, 1, 1, 1,
1413         1, 1, 1, 1, 1, 1, 1, 1,
1414         1, 1, 1, 1, 1, 1, 1, 1,
1415         1, 1, 1, 1, 1, 1, 1, 1,
1416         1, 1, 1, 1, 1, 1, 1, 1,
1417         1, 1, 1, 1, 1, 1, 1, 1,
1418         1, 1, 1, 1, 1, 1, 1, 1,
1419         1, 1, 1, 1, 1, 1, 1, 1,
1420         1, 1, 1, 1, 1, 1, 1, 1,
1421         1, 1, 1, 1,
1422 };
1423
1424 static const uint16_t levels4[70] = {
1425         113, 68, 49, 42, 40, 32, 27, 15,
1426         10, 5, 3, 3, 3, 3, 2, 2,
1427         2, 2, 2, 1, 1, 1, 1, 1,
1428         1, 1, 1, 1, 1, 1, 1, 1,
1429         1, 1, 1, 1, 1, 1, 1, 1,
1430         1, 1, 1, 1, 1, 1, 1, 1,
1431         1, 1, 1, 1, 1, 1, 1, 1,
1432         1, 1, 1, 1, 1, 1, 1, 1,
1433         1, 1, 1, 1, 1, 1,
1434 };
1435
1436 static const uint16_t levels5[40] = {
1437         214, 72, 42, 40, 18, 4, 4, 2,
1438         2, 2, 2, 2, 1, 1, 2, 1,
1439         1, 1, 1, 1, 1, 1, 1, 1,
1440         1, 1, 1, 1, 1, 1, 1, 1,
1441         1, 1, 1, 1, 1, 1, 1, 1,
1442 };
1443
1444 #define DEF_COEF_TABLE(_x) { \
1445                 .n = sizeof(coef ## _x ## _huffbits), \
1446                 .huffcodes = coef ## _x ## _huffcodes, \
1447                 .huffbits = coef ## _x ##_huffbits, \
1448                 .levels = levels ## _x}
1449
1450 static const struct coef_vlc_table coef_vlcs[6] = {
1451         DEF_COEF_TABLE(0), DEF_COEF_TABLE(1), DEF_COEF_TABLE(2),
1452         DEF_COEF_TABLE(3), DEF_COEF_TABLE(4), DEF_COEF_TABLE(5)
1453 };