FFmpeg
hqxvlc.h
Go to the documentation of this file.
1 /*
2  * Canopus HQX decoder
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVCODEC_HQXVLC_H
22 #define AVCODEC_HQXVLC_H
23 
24 #include <stdint.h>
25 
26 #include "vlc.h"
27 
28 #include "libavutil/attributes.h"
29 #include "libavutil/macros.h"
30 
31 #define HQX_CBP_VLC_BITS 5
32 #define HQX_DC_VLC_BITS 9
33 
34 enum HQXACMode {
35  HQX_AC_Q0 = 0,
42 };
43 
44 typedef struct HQXAC {
45  int bits;
46  const RL_VLC_ELEM *lut;
47 } HQXAC;
48 
49 static const uint8_t cbp_vlc_bits[16] = {
50  0x04, 0x1C, 0x1D, 0x09, 0x1E, 0x0B, 0x1B, 0x08,
51  0x1F, 0x1A, 0x0C, 0x07, 0x0A, 0x06, 0x05, 0x00,
52 };
53 
54 static const uint8_t cbp_vlc_lens[16] = {
55  4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2,
56 };
57 
58 static const uint16_t dc9_vlc_bits[512] = {
59  0x0010, 0x0008, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
60  0x002E, 0x0030, 0x0032, 0x0034, 0x0074, 0x0076, 0x0078, 0x007A,
61  0x007C, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
62  0x000E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
63  0x005E, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
64  0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038, 0x003A, 0x003C,
65  0x003E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
66  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
67  0x00DE, 0x01C0, 0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC,
68  0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC,
69  0x01DE, 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC,
70  0x01EE, 0x01F0, 0x01F2, 0x01F4, 0x01F6, 0x01F8, 0x01FA, 0x01FC,
71  0x01FE, 0x06C0, 0x06C2, 0x06C4, 0x06C6, 0x06C8, 0x06CA, 0x06CC,
72  0x06CE, 0x06D0, 0x06D2, 0x06D4, 0x06D6, 0x06D8, 0x06DA, 0x06DC,
73  0x06DE, 0x06E0, 0x06E2, 0x06E4, 0x06E6, 0x06E8, 0x06EA, 0x06EC,
74  0x06EE, 0x06F0, 0x06F2, 0x06F4, 0x06F6, 0x06F8, 0x06FA, 0x06FC,
75  0x06FE, 0x0E00, 0x0E02, 0x0E04, 0x0E06, 0x0E08, 0x0E0A, 0x0E0C,
76  0x0E0E, 0x0E10, 0x0E12, 0x0E14, 0x0E16, 0x0E18, 0x0E1A, 0x0E1C,
77  0x0E1E, 0x0E20, 0x0E22, 0x0E24, 0x0E26, 0x0E28, 0x0E2A, 0x0E2C,
78  0x0E2E, 0x0E30, 0x0E32, 0x0E34, 0x0E36, 0x0E38, 0x0E3A, 0x0E3C,
79  0x0E3E, 0x0E40, 0x0E42, 0x0E44, 0x0E46, 0x0E48, 0x0E4A, 0x0E4C,
80  0x0E4E, 0x0E50, 0x0E52, 0x0E54, 0x0E56, 0x0E58, 0x0E5A, 0x0E5C,
81  0x0E5E, 0x0E60, 0x0E62, 0x0E64, 0x0E66, 0x0E68, 0x0E6A, 0x0E6C,
82  0x0E6E, 0x0E70, 0x0E72, 0x0E74, 0x0E76, 0x0E78, 0x0E7A, 0x0E7C,
83  0x0E7E, 0x1F80, 0x1F82, 0x1F84, 0x1F86, 0x1F88, 0x1F8A, 0x1F8C,
84  0x1F8E, 0x1F90, 0x1F92, 0x1F94, 0x1F96, 0x1F98, 0x1F9A, 0x1F9C,
85  0x1F9E, 0x1FA0, 0x1FA2, 0x1FA4, 0x1FA6, 0x1FA8, 0x1FAA, 0x1FAC,
86  0x1FAE, 0x1FB0, 0x1FB2, 0x1FB4, 0x1FB6, 0x1FB8, 0x1FBA, 0x1FBC,
87  0x1FBE, 0x1FC0, 0x1FC2, 0x1FC4, 0x1FC6, 0x1FC8, 0x1FCA, 0x1FCC,
88  0x1FCE, 0x1FD0, 0x1FD2, 0x1FD4, 0x1FD6, 0x1FD8, 0x1FDA, 0x1FDC,
89  0x1FDE, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE6, 0x1FE8, 0x1FEA, 0x1FEC,
90  0x1FEE, 0x1FF0, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FF8, 0x1FFA, 0x1FFC,
91  0x0FFF, 0x1FFD, 0x1FFB, 0x1FF9, 0x1FF7, 0x1FF5, 0x1FF3, 0x1FF1,
92  0x1FEF, 0x1FED, 0x1FEB, 0x1FE9, 0x1FE7, 0x1FE5, 0x1FE3, 0x1FE1,
93  0x1FDF, 0x1FDD, 0x1FDB, 0x1FD9, 0x1FD7, 0x1FD5, 0x1FD3, 0x1FD1,
94  0x1FCF, 0x1FCD, 0x1FCB, 0x1FC9, 0x1FC7, 0x1FC5, 0x1FC3, 0x1FC1,
95  0x1FBF, 0x1FBD, 0x1FBB, 0x1FB9, 0x1FB7, 0x1FB5, 0x1FB3, 0x1FB1,
96  0x1FAF, 0x1FAD, 0x1FAB, 0x1FA9, 0x1FA7, 0x1FA5, 0x1FA3, 0x1FA1,
97  0x1F9F, 0x1F9D, 0x1F9B, 0x1F99, 0x1F97, 0x1F95, 0x1F93, 0x1F91,
98  0x1F8F, 0x1F8D, 0x1F8B, 0x1F89, 0x1F87, 0x1F85, 0x1F83, 0x1F81,
99  0x0E7F, 0x0E7D, 0x0E7B, 0x0E79, 0x0E77, 0x0E75, 0x0E73, 0x0E71,
100  0x0E6F, 0x0E6D, 0x0E6B, 0x0E69, 0x0E67, 0x0E65, 0x0E63, 0x0E61,
101  0x0E5F, 0x0E5D, 0x0E5B, 0x0E59, 0x0E57, 0x0E55, 0x0E53, 0x0E51,
102  0x0E4F, 0x0E4D, 0x0E4B, 0x0E49, 0x0E47, 0x0E45, 0x0E43, 0x0E41,
103  0x0E3F, 0x0E3D, 0x0E3B, 0x0E39, 0x0E37, 0x0E35, 0x0E33, 0x0E31,
104  0x0E2F, 0x0E2D, 0x0E2B, 0x0E29, 0x0E27, 0x0E25, 0x0E23, 0x0E21,
105  0x0E1F, 0x0E1D, 0x0E1B, 0x0E19, 0x0E17, 0x0E15, 0x0E13, 0x0E11,
106  0x0E0F, 0x0E0D, 0x0E0B, 0x0E09, 0x0E07, 0x0E05, 0x0E03, 0x0E01,
107  0x06FF, 0x06FD, 0x06FB, 0x06F9, 0x06F7, 0x06F5, 0x06F3, 0x06F1,
108  0x06EF, 0x06ED, 0x06EB, 0x06E9, 0x06E7, 0x06E5, 0x06E3, 0x06E1,
109  0x06DF, 0x06DD, 0x06DB, 0x06D9, 0x06D7, 0x06D5, 0x06D3, 0x06D1,
110  0x06CF, 0x06CD, 0x06CB, 0x06C9, 0x06C7, 0x06C5, 0x06C3, 0x06C1,
111  0x01FF, 0x01FD, 0x01FB, 0x01F9, 0x01F7, 0x01F5, 0x01F3, 0x01F1,
112  0x01EF, 0x01ED, 0x01EB, 0x01E9, 0x01E7, 0x01E5, 0x01E3, 0x01E1,
113  0x01DF, 0x01DD, 0x01DB, 0x01D9, 0x01D7, 0x01D5, 0x01D3, 0x01D1,
114  0x01CF, 0x01CD, 0x01CB, 0x01C9, 0x01C7, 0x01C5, 0x01C3, 0x01C1,
115  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
116  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
117  0x003F, 0x003D, 0x003B, 0x0039, 0x0037, 0x0035, 0x0033, 0x0031,
118  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0021,
119  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
120  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
121  0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0035, 0x0033, 0x0031,
122  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0009,
123 };
124 
125 static const uint8_t dc9_vlc_lens[512] = {
126  5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
127  7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
128  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
129  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
130  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
131  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
132  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
133  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
134  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
135  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
136  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
137  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
138  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
139  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
140  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
141  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
142  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
143  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
144  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
145  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
146  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
147  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
148  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
149  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
150  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
151  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
152  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
153  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
154  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
155  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
156  8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
157  7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5,
158 };
159 
160 static const uint16_t dc10_vlc_bits[1024] = {
161  0x0014, 0x002A, 0x002C, 0x002E, 0x0064, 0x0066, 0x0068, 0x006A,
162  0x006C, 0x006E, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x007A,
163  0x007C, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
164  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
165  0x005E, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
166  0x000E, 0x0010, 0x0012, 0x0014, 0x0016, 0x0018, 0x001A, 0x001C,
167  0x001E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
168  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
169  0x00DE, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
170  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
171  0x005E, 0x0060, 0x0062, 0x0064, 0x0066, 0x0068, 0x006A, 0x006C,
172  0x006E, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x007A, 0x007C,
173  0x007E, 0x01C0, 0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC,
174  0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC,
175  0x01DE, 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC,
176  0x01EE, 0x01F0, 0x01F2, 0x01F4, 0x01F6, 0x01F8, 0x01FA, 0x01FC,
177  0x01FE, 0x0400, 0x0402, 0x0404, 0x0406, 0x0408, 0x040A, 0x040C,
178  0x040E, 0x0410, 0x0412, 0x0414, 0x0416, 0x0418, 0x041A, 0x041C,
179  0x041E, 0x0420, 0x0422, 0x0424, 0x0426, 0x0428, 0x042A, 0x042C,
180  0x042E, 0x0430, 0x0432, 0x0434, 0x0436, 0x0438, 0x043A, 0x043C,
181  0x043E, 0x0440, 0x0442, 0x0444, 0x0446, 0x0448, 0x044A, 0x044C,
182  0x044E, 0x0450, 0x0452, 0x0454, 0x0456, 0x0458, 0x045A, 0x045C,
183  0x045E, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, 0x046A, 0x046C,
184  0x046E, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047A, 0x047C,
185  0x047E, 0x0C00, 0x0C02, 0x0C04, 0x0C06, 0x0C08, 0x0C0A, 0x0C0C,
186  0x0C0E, 0x0C10, 0x0C12, 0x0C14, 0x0C16, 0x0C18, 0x0C1A, 0x0C1C,
187  0x0C1E, 0x0C20, 0x0C22, 0x0C24, 0x0C26, 0x0C28, 0x0C2A, 0x0C2C,
188  0x0C2E, 0x0C30, 0x0C32, 0x0C34, 0x0C36, 0x0C38, 0x0C3A, 0x0C3C,
189  0x0C3E, 0x0C40, 0x0C42, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4C,
190  0x0C4E, 0x0C50, 0x0C52, 0x0C54, 0x0C56, 0x0C58, 0x0C5A, 0x0C5C,
191  0x0C5E, 0x0C60, 0x0C62, 0x0C64, 0x0C66, 0x0C68, 0x0C6A, 0x0C6C,
192  0x0C6E, 0x0C70, 0x0C72, 0x0C74, 0x0C76, 0x0C78, 0x0C7A, 0x0C7C,
193  0x0C7E, 0x0900, 0x0902, 0x0904, 0x0906, 0x0908, 0x090A, 0x090C,
194  0x090E, 0x0910, 0x0912, 0x0914, 0x0916, 0x0918, 0x091A, 0x091C,
195  0x091E, 0x0920, 0x0922, 0x0924, 0x0926, 0x0928, 0x092A, 0x092C,
196  0x092E, 0x0930, 0x0932, 0x0934, 0x0936, 0x0938, 0x093A, 0x093C,
197  0x093E, 0x0940, 0x0942, 0x0944, 0x0946, 0x0948, 0x094A, 0x094C,
198  0x094E, 0x0950, 0x0952, 0x0954, 0x0956, 0x0958, 0x095A, 0x095C,
199  0x095E, 0x0960, 0x0962, 0x0964, 0x0966, 0x0968, 0x096A, 0x096C,
200  0x096E, 0x0970, 0x0972, 0x0974, 0x0976, 0x0978, 0x097A, 0x097C,
201  0x097E, 0x0980, 0x0982, 0x0984, 0x0986, 0x0988, 0x098A, 0x098C,
202  0x098E, 0x0990, 0x0992, 0x0994, 0x0996, 0x0998, 0x099A, 0x099C,
203  0x099E, 0x09A0, 0x09A2, 0x09A4, 0x09A6, 0x09A8, 0x09AA, 0x09AC,
204  0x09AE, 0x09B0, 0x09B2, 0x09B4, 0x09B6, 0x09B8, 0x09BA, 0x09BC,
205  0x09BE, 0x09C0, 0x09C2, 0x09C4, 0x09C6, 0x09C8, 0x09CA, 0x09CC,
206  0x09CE, 0x09D0, 0x09D2, 0x09D4, 0x09D6, 0x09D8, 0x09DA, 0x09DC,
207  0x09DE, 0x09E0, 0x09E2, 0x09E4, 0x09E6, 0x09E8, 0x09EA, 0x09EC,
208  0x09EE, 0x09F0, 0x09F2, 0x09F4, 0x09F6, 0x09F8, 0x09FA, 0x09FC,
209  0x09FE, 0x3F00, 0x3F02, 0x3F04, 0x3F06, 0x3F08, 0x3F0A, 0x3F0C,
210  0x3F0E, 0x3F10, 0x3F12, 0x3F14, 0x3F16, 0x3F18, 0x3F1A, 0x3F1C,
211  0x3F1E, 0x3F20, 0x3F22, 0x3F24, 0x3F26, 0x3F28, 0x3F2A, 0x3F2C,
212  0x3F2E, 0x3F30, 0x3F32, 0x3F34, 0x3F36, 0x3F38, 0x3F3A, 0x3F3C,
213  0x3F3E, 0x3F40, 0x3F42, 0x3F44, 0x3F46, 0x3F48, 0x3F4A, 0x3F4C,
214  0x3F4E, 0x3F50, 0x3F52, 0x3F54, 0x3F56, 0x3F58, 0x3F5A, 0x3F5C,
215  0x3F5E, 0x3F60, 0x3F62, 0x3F64, 0x3F66, 0x3F68, 0x3F6A, 0x3F6C,
216  0x3F6E, 0x3F70, 0x3F72, 0x3F74, 0x3F76, 0x3F78, 0x3F7A, 0x3F7C,
217  0x3F7E, 0x3F80, 0x3F82, 0x3F84, 0x3F86, 0x3F88, 0x3F8A, 0x3F8C,
218  0x3F8E, 0x3F90, 0x3F92, 0x3F94, 0x3F96, 0x3F98, 0x3F9A, 0x3F9C,
219  0x3F9E, 0x3FA0, 0x3FA2, 0x3FA4, 0x3FA6, 0x3FA8, 0x3FAA, 0x3FAC,
220  0x3FAE, 0x3FB0, 0x3FB2, 0x3FB4, 0x3FB6, 0x3FB8, 0x3FBA, 0x3FBC,
221  0x3FBE, 0x3FC0, 0x3FC2, 0x3FC4, 0x3FC6, 0x3FC8, 0x3FCA, 0x3FCC,
222  0x3FCE, 0x3FD0, 0x3FD2, 0x3FD4, 0x3FD6, 0x3FD8, 0x3FDA, 0x3FDC,
223  0x3FDE, 0x3FE0, 0x3FE2, 0x3FE4, 0x3FE6, 0x3FE8, 0x3FEA, 0x3FEC,
224  0x3FEE, 0x3FF0, 0x3FF2, 0x3FF4, 0x3FF6, 0x3FF8, 0x3FFA, 0x3FFC,
225  0x1FFF, 0x3FFD, 0x3FFB, 0x3FF9, 0x3FF7, 0x3FF5, 0x3FF3, 0x3FF1,
226  0x3FEF, 0x3FED, 0x3FEB, 0x3FE9, 0x3FE7, 0x3FE5, 0x3FE3, 0x3FE1,
227  0x3FDF, 0x3FDD, 0x3FDB, 0x3FD9, 0x3FD7, 0x3FD5, 0x3FD3, 0x3FD1,
228  0x3FCF, 0x3FCD, 0x3FCB, 0x3FC9, 0x3FC7, 0x3FC5, 0x3FC3, 0x3FC1,
229  0x3FBF, 0x3FBD, 0x3FBB, 0x3FB9, 0x3FB7, 0x3FB5, 0x3FB3, 0x3FB1,
230  0x3FAF, 0x3FAD, 0x3FAB, 0x3FA9, 0x3FA7, 0x3FA5, 0x3FA3, 0x3FA1,
231  0x3F9F, 0x3F9D, 0x3F9B, 0x3F99, 0x3F97, 0x3F95, 0x3F93, 0x3F91,
232  0x3F8F, 0x3F8D, 0x3F8B, 0x3F89, 0x3F87, 0x3F85, 0x3F83, 0x3F81,
233  0x3F7F, 0x3F7D, 0x3F7B, 0x3F79, 0x3F77, 0x3F75, 0x3F73, 0x3F71,
234  0x3F6F, 0x3F6D, 0x3F6B, 0x3F69, 0x3F67, 0x3F65, 0x3F63, 0x3F61,
235  0x3F5F, 0x3F5D, 0x3F5B, 0x3F59, 0x3F57, 0x3F55, 0x3F53, 0x3F51,
236  0x3F4F, 0x3F4D, 0x3F4B, 0x3F49, 0x3F47, 0x3F45, 0x3F43, 0x3F41,
237  0x3F3F, 0x3F3D, 0x3F3B, 0x3F39, 0x3F37, 0x3F35, 0x3F33, 0x3F31,
238  0x3F2F, 0x3F2D, 0x3F2B, 0x3F29, 0x3F27, 0x3F25, 0x3F23, 0x3F21,
239  0x3F1F, 0x3F1D, 0x3F1B, 0x3F19, 0x3F17, 0x3F15, 0x3F13, 0x3F11,
240  0x3F0F, 0x3F0D, 0x3F0B, 0x3F09, 0x3F07, 0x3F05, 0x3F03, 0x3F01,
241  0x09FF, 0x09FD, 0x09FB, 0x09F9, 0x09F7, 0x09F5, 0x09F3, 0x09F1,
242  0x09EF, 0x09ED, 0x09EB, 0x09E9, 0x09E7, 0x09E5, 0x09E3, 0x09E1,
243  0x09DF, 0x09DD, 0x09DB, 0x09D9, 0x09D7, 0x09D5, 0x09D3, 0x09D1,
244  0x09CF, 0x09CD, 0x09CB, 0x09C9, 0x09C7, 0x09C5, 0x09C3, 0x09C1,
245  0x09BF, 0x09BD, 0x09BB, 0x09B9, 0x09B7, 0x09B5, 0x09B3, 0x09B1,
246  0x09AF, 0x09AD, 0x09AB, 0x09A9, 0x09A7, 0x09A5, 0x09A3, 0x09A1,
247  0x099F, 0x099D, 0x099B, 0x0999, 0x0997, 0x0995, 0x0993, 0x0991,
248  0x098F, 0x098D, 0x098B, 0x0989, 0x0987, 0x0985, 0x0983, 0x0981,
249  0x097F, 0x097D, 0x097B, 0x0979, 0x0977, 0x0975, 0x0973, 0x0971,
250  0x096F, 0x096D, 0x096B, 0x0969, 0x0967, 0x0965, 0x0963, 0x0961,
251  0x095F, 0x095D, 0x095B, 0x0959, 0x0957, 0x0955, 0x0953, 0x0951,
252  0x094F, 0x094D, 0x094B, 0x0949, 0x0947, 0x0945, 0x0943, 0x0941,
253  0x093F, 0x093D, 0x093B, 0x0939, 0x0937, 0x0935, 0x0933, 0x0931,
254  0x092F, 0x092D, 0x092B, 0x0929, 0x0927, 0x0925, 0x0923, 0x0921,
255  0x091F, 0x091D, 0x091B, 0x0919, 0x0917, 0x0915, 0x0913, 0x0911,
256  0x090F, 0x090D, 0x090B, 0x0909, 0x0907, 0x0905, 0x0903, 0x0901,
257  0x0C7F, 0x0C7D, 0x0C7B, 0x0C79, 0x0C77, 0x0C75, 0x0C73, 0x0C71,
258  0x0C6F, 0x0C6D, 0x0C6B, 0x0C69, 0x0C67, 0x0C65, 0x0C63, 0x0C61,
259  0x0C5F, 0x0C5D, 0x0C5B, 0x0C59, 0x0C57, 0x0C55, 0x0C53, 0x0C51,
260  0x0C4F, 0x0C4D, 0x0C4B, 0x0C49, 0x0C47, 0x0C45, 0x0C43, 0x0C41,
261  0x0C3F, 0x0C3D, 0x0C3B, 0x0C39, 0x0C37, 0x0C35, 0x0C33, 0x0C31,
262  0x0C2F, 0x0C2D, 0x0C2B, 0x0C29, 0x0C27, 0x0C25, 0x0C23, 0x0C21,
263  0x0C1F, 0x0C1D, 0x0C1B, 0x0C19, 0x0C17, 0x0C15, 0x0C13, 0x0C11,
264  0x0C0F, 0x0C0D, 0x0C0B, 0x0C09, 0x0C07, 0x0C05, 0x0C03, 0x0C01,
265  0x047F, 0x047D, 0x047B, 0x0479, 0x0477, 0x0475, 0x0473, 0x0471,
266  0x046F, 0x046D, 0x046B, 0x0469, 0x0467, 0x0465, 0x0463, 0x0461,
267  0x045F, 0x045D, 0x045B, 0x0459, 0x0457, 0x0455, 0x0453, 0x0451,
268  0x044F, 0x044D, 0x044B, 0x0449, 0x0447, 0x0445, 0x0443, 0x0441,
269  0x043F, 0x043D, 0x043B, 0x0439, 0x0437, 0x0435, 0x0433, 0x0431,
270  0x042F, 0x042D, 0x042B, 0x0429, 0x0427, 0x0425, 0x0423, 0x0421,
271  0x041F, 0x041D, 0x041B, 0x0419, 0x0417, 0x0415, 0x0413, 0x0411,
272  0x040F, 0x040D, 0x040B, 0x0409, 0x0407, 0x0405, 0x0403, 0x0401,
273  0x01FF, 0x01FD, 0x01FB, 0x01F9, 0x01F7, 0x01F5, 0x01F3, 0x01F1,
274  0x01EF, 0x01ED, 0x01EB, 0x01E9, 0x01E7, 0x01E5, 0x01E3, 0x01E1,
275  0x01DF, 0x01DD, 0x01DB, 0x01D9, 0x01D7, 0x01D5, 0x01D3, 0x01D1,
276  0x01CF, 0x01CD, 0x01CB, 0x01C9, 0x01C7, 0x01C5, 0x01C3, 0x01C1,
277  0x007F, 0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0073, 0x0071,
278  0x006F, 0x006D, 0x006B, 0x0069, 0x0067, 0x0065, 0x0063, 0x0061,
279  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
280  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
281  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
282  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
283  0x001F, 0x001D, 0x001B, 0x0019, 0x0017, 0x0015, 0x0013, 0x0011,
284  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
285  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
286  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
287  0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0073, 0x0071, 0x006F,
288  0x006D, 0x006B, 0x0069, 0x0067, 0x0065, 0x002F, 0x002D, 0x002B,
289 };
290 
291 static const uint8_t dc10_vlc_lens[1024] = {
292  5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
293  7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
294  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
295  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
296  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
297  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
298  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
299  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
300  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
301  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
302  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
303  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
304  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
305  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
306  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
307  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
308  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
309  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
310  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
311  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
312  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
313  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
314  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
315  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
316  12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
317  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
318  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
319  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
320  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
321  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
322  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
323  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
324  13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
325  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
326  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
327  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
328  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
329  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
330  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
331  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
332  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
333  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
334  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
335  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
336  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
337  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
338  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
339  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
340  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
341  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
342  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
343  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
344  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
345  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
346  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
347  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
348  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
349  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
350  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
351  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
352  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
353  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
354  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
355  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6,
356 };
357 
358 static const uint16_t dc11_vlc_bits[2048] = {
359  0x0032, 0x0066, 0x0068, 0x006A, 0x006C, 0x006E, 0x0070, 0x0072,
360  0x0074, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
361  0x00FE, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
362  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
363  0x005E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
364  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
365  0x00DE, 0x00E0, 0x00E2, 0x00E4, 0x00E6, 0x00E8, 0x00EA, 0x00EC,
366  0x00EE, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
367  0x00FE, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
368  0x000E, 0x0010, 0x0012, 0x0014, 0x0016, 0x0018, 0x001A, 0x001C,
369  0x001E, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
370  0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038, 0x003A, 0x003C,
371  0x003E, 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020A, 0x020C,
372  0x020E, 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021A, 0x021C,
373  0x021E, 0x0220, 0x0222, 0x0224, 0x0226, 0x0228, 0x022A, 0x022C,
374  0x022E, 0x0230, 0x0232, 0x0234, 0x0236, 0x0238, 0x023A, 0x023C,
375  0x023E, 0x0080, 0x0082, 0x0084, 0x0086, 0x0088, 0x008A, 0x008C,
376  0x008E, 0x0090, 0x0092, 0x0094, 0x0096, 0x0098, 0x009A, 0x009C,
377  0x009E, 0x00A0, 0x00A2, 0x00A4, 0x00A6, 0x00A8, 0x00AA, 0x00AC,
378  0x00AE, 0x00B0, 0x00B2, 0x00B4, 0x00B6, 0x00B8, 0x00BA, 0x00BC,
379  0x00BE, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
380  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
381  0x00DE, 0x00E0, 0x00E2, 0x00E4, 0x00E6, 0x00E8, 0x00EA, 0x00EC,
382  0x00EE, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
383  0x00FE, 0x0480, 0x0482, 0x0484, 0x0486, 0x0488, 0x048A, 0x048C,
384  0x048E, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049A, 0x049C,
385  0x049E, 0x04A0, 0x04A2, 0x04A4, 0x04A6, 0x04A8, 0x04AA, 0x04AC,
386  0x04AE, 0x04B0, 0x04B2, 0x04B4, 0x04B6, 0x04B8, 0x04BA, 0x04BC,
387  0x04BE, 0x04C0, 0x04C2, 0x04C4, 0x04C6, 0x04C8, 0x04CA, 0x04CC,
388  0x04CE, 0x04D0, 0x04D2, 0x04D4, 0x04D6, 0x04D8, 0x04DA, 0x04DC,
389  0x04DE, 0x04E0, 0x04E2, 0x04E4, 0x04E6, 0x04E8, 0x04EA, 0x04EC,
390  0x04EE, 0x04F0, 0x04F2, 0x04F4, 0x04F6, 0x04F8, 0x04FA, 0x04FC,
391  0x04FE, 0x0A00, 0x0A02, 0x0A04, 0x0A06, 0x0A08, 0x0A0A, 0x0A0C,
392  0x0A0E, 0x0A10, 0x0A12, 0x0A14, 0x0A16, 0x0A18, 0x0A1A, 0x0A1C,
393  0x0A1E, 0x0A20, 0x0A22, 0x0A24, 0x0A26, 0x0A28, 0x0A2A, 0x0A2C,
394  0x0A2E, 0x0A30, 0x0A32, 0x0A34, 0x0A36, 0x0A38, 0x0A3A, 0x0A3C,
395  0x0A3E, 0x0A40, 0x0A42, 0x0A44, 0x0A46, 0x0A48, 0x0A4A, 0x0A4C,
396  0x0A4E, 0x0A50, 0x0A52, 0x0A54, 0x0A56, 0x0A58, 0x0A5A, 0x0A5C,
397  0x0A5E, 0x0A60, 0x0A62, 0x0A64, 0x0A66, 0x0A68, 0x0A6A, 0x0A6C,
398  0x0A6E, 0x0A70, 0x0A72, 0x0A74, 0x0A76, 0x0A78, 0x0A7A, 0x0A7C,
399  0x0A7E, 0x0A80, 0x0A82, 0x0A84, 0x0A86, 0x0A88, 0x0A8A, 0x0A8C,
400  0x0A8E, 0x0A90, 0x0A92, 0x0A94, 0x0A96, 0x0A98, 0x0A9A, 0x0A9C,
401  0x0A9E, 0x0AA0, 0x0AA2, 0x0AA4, 0x0AA6, 0x0AA8, 0x0AAA, 0x0AAC,
402  0x0AAE, 0x0AB0, 0x0AB2, 0x0AB4, 0x0AB6, 0x0AB8, 0x0ABA, 0x0ABC,
403  0x0ABE, 0x0AC0, 0x0AC2, 0x0AC4, 0x0AC6, 0x0AC8, 0x0ACA, 0x0ACC,
404  0x0ACE, 0x0AD0, 0x0AD2, 0x0AD4, 0x0AD6, 0x0AD8, 0x0ADA, 0x0ADC,
405  0x0ADE, 0x0AE0, 0x0AE2, 0x0AE4, 0x0AE6, 0x0AE8, 0x0AEA, 0x0AEC,
406  0x0AEE, 0x0AF0, 0x0AF2, 0x0AF4, 0x0AF6, 0x0AF8, 0x0AFA, 0x0AFC,
407  0x0AFE, 0x1800, 0x1802, 0x1804, 0x1806, 0x1808, 0x180A, 0x180C,
408  0x180E, 0x1810, 0x1812, 0x1814, 0x1816, 0x1818, 0x181A, 0x181C,
409  0x181E, 0x1820, 0x1822, 0x1824, 0x1826, 0x1828, 0x182A, 0x182C,
410  0x182E, 0x1830, 0x1832, 0x1834, 0x1836, 0x1838, 0x183A, 0x183C,
411  0x183E, 0x1840, 0x1842, 0x1844, 0x1846, 0x1848, 0x184A, 0x184C,
412  0x184E, 0x1850, 0x1852, 0x1854, 0x1856, 0x1858, 0x185A, 0x185C,
413  0x185E, 0x1860, 0x1862, 0x1864, 0x1866, 0x1868, 0x186A, 0x186C,
414  0x186E, 0x1870, 0x1872, 0x1874, 0x1876, 0x1878, 0x187A, 0x187C,
415  0x187E, 0x1880, 0x1882, 0x1884, 0x1886, 0x1888, 0x188A, 0x188C,
416  0x188E, 0x1890, 0x1892, 0x1894, 0x1896, 0x1898, 0x189A, 0x189C,
417  0x189E, 0x18A0, 0x18A2, 0x18A4, 0x18A6, 0x18A8, 0x18AA, 0x18AC,
418  0x18AE, 0x18B0, 0x18B2, 0x18B4, 0x18B6, 0x18B8, 0x18BA, 0x18BC,
419  0x18BE, 0x18C0, 0x18C2, 0x18C4, 0x18C6, 0x18C8, 0x18CA, 0x18CC,
420  0x18CE, 0x18D0, 0x18D2, 0x18D4, 0x18D6, 0x18D8, 0x18DA, 0x18DC,
421  0x18DE, 0x18E0, 0x18E2, 0x18E4, 0x18E6, 0x18E8, 0x18EA, 0x18EC,
422  0x18EE, 0x18F0, 0x18F2, 0x18F4, 0x18F6, 0x18F8, 0x18FA, 0x18FC,
423  0x18FE, 0x1600, 0x1602, 0x1604, 0x1606, 0x1608, 0x160A, 0x160C,
424  0x160E, 0x1610, 0x1612, 0x1614, 0x1616, 0x1618, 0x161A, 0x161C,
425  0x161E, 0x1620, 0x1622, 0x1624, 0x1626, 0x1628, 0x162A, 0x162C,
426  0x162E, 0x1630, 0x1632, 0x1634, 0x1636, 0x1638, 0x163A, 0x163C,
427  0x163E, 0x1640, 0x1642, 0x1644, 0x1646, 0x1648, 0x164A, 0x164C,
428  0x164E, 0x1650, 0x1652, 0x1654, 0x1656, 0x1658, 0x165A, 0x165C,
429  0x165E, 0x1660, 0x1662, 0x1664, 0x1666, 0x1668, 0x166A, 0x166C,
430  0x166E, 0x1670, 0x1672, 0x1674, 0x1676, 0x1678, 0x167A, 0x167C,
431  0x167E, 0x1680, 0x1682, 0x1684, 0x1686, 0x1688, 0x168A, 0x168C,
432  0x168E, 0x1690, 0x1692, 0x1694, 0x1696, 0x1698, 0x169A, 0x169C,
433  0x169E, 0x16A0, 0x16A2, 0x16A4, 0x16A6, 0x16A8, 0x16AA, 0x16AC,
434  0x16AE, 0x16B0, 0x16B2, 0x16B4, 0x16B6, 0x16B8, 0x16BA, 0x16BC,
435  0x16BE, 0x16C0, 0x16C2, 0x16C4, 0x16C6, 0x16C8, 0x16CA, 0x16CC,
436  0x16CE, 0x16D0, 0x16D2, 0x16D4, 0x16D6, 0x16D8, 0x16DA, 0x16DC,
437  0x16DE, 0x16E0, 0x16E2, 0x16E4, 0x16E6, 0x16E8, 0x16EA, 0x16EC,
438  0x16EE, 0x16F0, 0x16F2, 0x16F4, 0x16F6, 0x16F8, 0x16FA, 0x16FC,
439  0x16FE, 0x1700, 0x1702, 0x1704, 0x1706, 0x1708, 0x170A, 0x170C,
440  0x170E, 0x1710, 0x1712, 0x1714, 0x1716, 0x1718, 0x171A, 0x171C,
441  0x171E, 0x1720, 0x1722, 0x1724, 0x1726, 0x1728, 0x172A, 0x172C,
442  0x172E, 0x1730, 0x1732, 0x1734, 0x1736, 0x1738, 0x173A, 0x173C,
443  0x173E, 0x1740, 0x1742, 0x1744, 0x1746, 0x1748, 0x174A, 0x174C,
444  0x174E, 0x1750, 0x1752, 0x1754, 0x1756, 0x1758, 0x175A, 0x175C,
445  0x175E, 0x1760, 0x1762, 0x1764, 0x1766, 0x1768, 0x176A, 0x176C,
446  0x176E, 0x1770, 0x1772, 0x1774, 0x1776, 0x1778, 0x177A, 0x177C,
447  0x177E, 0x1780, 0x1782, 0x1784, 0x1786, 0x1788, 0x178A, 0x178C,
448  0x178E, 0x1790, 0x1792, 0x1794, 0x1796, 0x1798, 0x179A, 0x179C,
449  0x179E, 0x17A0, 0x17A2, 0x17A4, 0x17A6, 0x17A8, 0x17AA, 0x17AC,
450  0x17AE, 0x17B0, 0x17B2, 0x17B4, 0x17B6, 0x17B8, 0x17BA, 0x17BC,
451  0x17BE, 0x17C0, 0x17C2, 0x17C4, 0x17C6, 0x17C8, 0x17CA, 0x17CC,
452  0x17CE, 0x17D0, 0x17D2, 0x17D4, 0x17D6, 0x17D8, 0x17DA, 0x17DC,
453  0x17DE, 0x17E0, 0x17E2, 0x17E4, 0x17E6, 0x17E8, 0x17EA, 0x17EC,
454  0x17EE, 0x17F0, 0x17F2, 0x17F4, 0x17F6, 0x17F8, 0x17FA, 0x17FC,
455  0x17FE, 0x7600, 0x7602, 0x7604, 0x7606, 0x7608, 0x760A, 0x760C,
456  0x760E, 0x7610, 0x7612, 0x7614, 0x7616, 0x7618, 0x761A, 0x761C,
457  0x761E, 0x7620, 0x7622, 0x7624, 0x7626, 0x7628, 0x762A, 0x762C,
458  0x762E, 0x7630, 0x7632, 0x7634, 0x7636, 0x7638, 0x763A, 0x763C,
459  0x763E, 0x7640, 0x7642, 0x7644, 0x7646, 0x7648, 0x764A, 0x764C,
460  0x764E, 0x7650, 0x7652, 0x7654, 0x7656, 0x7658, 0x765A, 0x765C,
461  0x765E, 0x7660, 0x7662, 0x7664, 0x7666, 0x7668, 0x766A, 0x766C,
462  0x766E, 0x7670, 0x7672, 0x7674, 0x7676, 0x7678, 0x767A, 0x767C,
463  0x767E, 0x7680, 0x7682, 0x7684, 0x7686, 0x7688, 0x768A, 0x768C,
464  0x768E, 0x7690, 0x7692, 0x7694, 0x7696, 0x7698, 0x769A, 0x769C,
465  0x769E, 0x76A0, 0x76A2, 0x76A4, 0x76A6, 0x76A8, 0x76AA, 0x76AC,
466  0x76AE, 0x76B0, 0x76B2, 0x76B4, 0x76B6, 0x76B8, 0x76BA, 0x76BC,
467  0x76BE, 0x76C0, 0x76C2, 0x76C4, 0x76C6, 0x76C8, 0x76CA, 0x76CC,
468  0x76CE, 0x76D0, 0x76D2, 0x76D4, 0x76D6, 0x76D8, 0x76DA, 0x76DC,
469  0x76DE, 0x76E0, 0x76E2, 0x76E4, 0x76E6, 0x76E8, 0x76EA, 0x76EC,
470  0x76EE, 0x76F0, 0x76F2, 0x76F4, 0x76F6, 0x76F8, 0x76FA, 0x76FC,
471  0x76FE, 0x7700, 0x7702, 0x7704, 0x7706, 0x7708, 0x770A, 0x770C,
472  0x770E, 0x7710, 0x7712, 0x7714, 0x7716, 0x7718, 0x771A, 0x771C,
473  0x771E, 0x7720, 0x7722, 0x7724, 0x7726, 0x7728, 0x772A, 0x772C,
474  0x772E, 0x7730, 0x7732, 0x7734, 0x7736, 0x7738, 0x773A, 0x773C,
475  0x773E, 0x7740, 0x7742, 0x7744, 0x7746, 0x7748, 0x774A, 0x774C,
476  0x774E, 0x7750, 0x7752, 0x7754, 0x7756, 0x7758, 0x775A, 0x775C,
477  0x775E, 0x7760, 0x7762, 0x7764, 0x7766, 0x7768, 0x776A, 0x776C,
478  0x776E, 0x7770, 0x7772, 0x7774, 0x7776, 0x7778, 0x777A, 0x777C,
479  0x777E, 0x7780, 0x7782, 0x7784, 0x7786, 0x7788, 0x778A, 0x778C,
480  0x778E, 0x7790, 0x7792, 0x7794, 0x7796, 0x7798, 0x779A, 0x779C,
481  0x779E, 0x77A0, 0x77A2, 0x77A4, 0x77A6, 0x77A8, 0x77AA, 0x77AC,
482  0x77AE, 0x77B0, 0x77B2, 0x77B4, 0x77B6, 0x77B8, 0x77BA, 0x77BC,
483  0x77BE, 0x77C0, 0x77C2, 0x77C4, 0x77C6, 0x77C8, 0x77CA, 0x77CC,
484  0x77CE, 0x77D0, 0x77D2, 0x77D4, 0x77D6, 0x77D8, 0x77DA, 0x77DC,
485  0x77DE, 0x77E0, 0x77E2, 0x77E4, 0x77E6, 0x77E8, 0x77EA, 0x77EC,
486  0x77EE, 0x77F0, 0x77F2, 0x77F4, 0x77F6, 0x77F8, 0x77FA, 0x77FC,
487  0x3BFF, 0x77FD, 0x77FB, 0x77F9, 0x77F7, 0x77F5, 0x77F3, 0x77F1,
488  0x77EF, 0x77ED, 0x77EB, 0x77E9, 0x77E7, 0x77E5, 0x77E3, 0x77E1,
489  0x77DF, 0x77DD, 0x77DB, 0x77D9, 0x77D7, 0x77D5, 0x77D3, 0x77D1,
490  0x77CF, 0x77CD, 0x77CB, 0x77C9, 0x77C7, 0x77C5, 0x77C3, 0x77C1,
491  0x77BF, 0x77BD, 0x77BB, 0x77B9, 0x77B7, 0x77B5, 0x77B3, 0x77B1,
492  0x77AF, 0x77AD, 0x77AB, 0x77A9, 0x77A7, 0x77A5, 0x77A3, 0x77A1,
493  0x779F, 0x779D, 0x779B, 0x7799, 0x7797, 0x7795, 0x7793, 0x7791,
494  0x778F, 0x778D, 0x778B, 0x7789, 0x7787, 0x7785, 0x7783, 0x7781,
495  0x777F, 0x777D, 0x777B, 0x7779, 0x7777, 0x7775, 0x7773, 0x7771,
496  0x776F, 0x776D, 0x776B, 0x7769, 0x7767, 0x7765, 0x7763, 0x7761,
497  0x775F, 0x775D, 0x775B, 0x7759, 0x7757, 0x7755, 0x7753, 0x7751,
498  0x774F, 0x774D, 0x774B, 0x7749, 0x7747, 0x7745, 0x7743, 0x7741,
499  0x773F, 0x773D, 0x773B, 0x7739, 0x7737, 0x7735, 0x7733, 0x7731,
500  0x772F, 0x772D, 0x772B, 0x7729, 0x7727, 0x7725, 0x7723, 0x7721,
501  0x771F, 0x771D, 0x771B, 0x7719, 0x7717, 0x7715, 0x7713, 0x7711,
502  0x770F, 0x770D, 0x770B, 0x7709, 0x7707, 0x7705, 0x7703, 0x7701,
503  0x76FF, 0x76FD, 0x76FB, 0x76F9, 0x76F7, 0x76F5, 0x76F3, 0x76F1,
504  0x76EF, 0x76ED, 0x76EB, 0x76E9, 0x76E7, 0x76E5, 0x76E3, 0x76E1,
505  0x76DF, 0x76DD, 0x76DB, 0x76D9, 0x76D7, 0x76D5, 0x76D3, 0x76D1,
506  0x76CF, 0x76CD, 0x76CB, 0x76C9, 0x76C7, 0x76C5, 0x76C3, 0x76C1,
507  0x76BF, 0x76BD, 0x76BB, 0x76B9, 0x76B7, 0x76B5, 0x76B3, 0x76B1,
508  0x76AF, 0x76AD, 0x76AB, 0x76A9, 0x76A7, 0x76A5, 0x76A3, 0x76A1,
509  0x769F, 0x769D, 0x769B, 0x7699, 0x7697, 0x7695, 0x7693, 0x7691,
510  0x768F, 0x768D, 0x768B, 0x7689, 0x7687, 0x7685, 0x7683, 0x7681,
511  0x767F, 0x767D, 0x767B, 0x7679, 0x7677, 0x7675, 0x7673, 0x7671,
512  0x766F, 0x766D, 0x766B, 0x7669, 0x7667, 0x7665, 0x7663, 0x7661,
513  0x765F, 0x765D, 0x765B, 0x7659, 0x7657, 0x7655, 0x7653, 0x7651,
514  0x764F, 0x764D, 0x764B, 0x7649, 0x7647, 0x7645, 0x7643, 0x7641,
515  0x763F, 0x763D, 0x763B, 0x7639, 0x7637, 0x7635, 0x7633, 0x7631,
516  0x762F, 0x762D, 0x762B, 0x7629, 0x7627, 0x7625, 0x7623, 0x7621,
517  0x761F, 0x761D, 0x761B, 0x7619, 0x7617, 0x7615, 0x7613, 0x7611,
518  0x760F, 0x760D, 0x760B, 0x7609, 0x7607, 0x7605, 0x7603, 0x7601,
519  0x17FF, 0x17FD, 0x17FB, 0x17F9, 0x17F7, 0x17F5, 0x17F3, 0x17F1,
520  0x17EF, 0x17ED, 0x17EB, 0x17E9, 0x17E7, 0x17E5, 0x17E3, 0x17E1,
521  0x17DF, 0x17DD, 0x17DB, 0x17D9, 0x17D7, 0x17D5, 0x17D3, 0x17D1,
522  0x17CF, 0x17CD, 0x17CB, 0x17C9, 0x17C7, 0x17C5, 0x17C3, 0x17C1,
523  0x17BF, 0x17BD, 0x17BB, 0x17B9, 0x17B7, 0x17B5, 0x17B3, 0x17B1,
524  0x17AF, 0x17AD, 0x17AB, 0x17A9, 0x17A7, 0x17A5, 0x17A3, 0x17A1,
525  0x179F, 0x179D, 0x179B, 0x1799, 0x1797, 0x1795, 0x1793, 0x1791,
526  0x178F, 0x178D, 0x178B, 0x1789, 0x1787, 0x1785, 0x1783, 0x1781,
527  0x177F, 0x177D, 0x177B, 0x1779, 0x1777, 0x1775, 0x1773, 0x1771,
528  0x176F, 0x176D, 0x176B, 0x1769, 0x1767, 0x1765, 0x1763, 0x1761,
529  0x175F, 0x175D, 0x175B, 0x1759, 0x1757, 0x1755, 0x1753, 0x1751,
530  0x174F, 0x174D, 0x174B, 0x1749, 0x1747, 0x1745, 0x1743, 0x1741,
531  0x173F, 0x173D, 0x173B, 0x1739, 0x1737, 0x1735, 0x1733, 0x1731,
532  0x172F, 0x172D, 0x172B, 0x1729, 0x1727, 0x1725, 0x1723, 0x1721,
533  0x171F, 0x171D, 0x171B, 0x1719, 0x1717, 0x1715, 0x1713, 0x1711,
534  0x170F, 0x170D, 0x170B, 0x1709, 0x1707, 0x1705, 0x1703, 0x1701,
535  0x16FF, 0x16FD, 0x16FB, 0x16F9, 0x16F7, 0x16F5, 0x16F3, 0x16F1,
536  0x16EF, 0x16ED, 0x16EB, 0x16E9, 0x16E7, 0x16E5, 0x16E3, 0x16E1,
537  0x16DF, 0x16DD, 0x16DB, 0x16D9, 0x16D7, 0x16D5, 0x16D3, 0x16D1,
538  0x16CF, 0x16CD, 0x16CB, 0x16C9, 0x16C7, 0x16C5, 0x16C3, 0x16C1,
539  0x16BF, 0x16BD, 0x16BB, 0x16B9, 0x16B7, 0x16B5, 0x16B3, 0x16B1,
540  0x16AF, 0x16AD, 0x16AB, 0x16A9, 0x16A7, 0x16A5, 0x16A3, 0x16A1,
541  0x169F, 0x169D, 0x169B, 0x1699, 0x1697, 0x1695, 0x1693, 0x1691,
542  0x168F, 0x168D, 0x168B, 0x1689, 0x1687, 0x1685, 0x1683, 0x1681,
543  0x167F, 0x167D, 0x167B, 0x1679, 0x1677, 0x1675, 0x1673, 0x1671,
544  0x166F, 0x166D, 0x166B, 0x1669, 0x1667, 0x1665, 0x1663, 0x1661,
545  0x165F, 0x165D, 0x165B, 0x1659, 0x1657, 0x1655, 0x1653, 0x1651,
546  0x164F, 0x164D, 0x164B, 0x1649, 0x1647, 0x1645, 0x1643, 0x1641,
547  0x163F, 0x163D, 0x163B, 0x1639, 0x1637, 0x1635, 0x1633, 0x1631,
548  0x162F, 0x162D, 0x162B, 0x1629, 0x1627, 0x1625, 0x1623, 0x1621,
549  0x161F, 0x161D, 0x161B, 0x1619, 0x1617, 0x1615, 0x1613, 0x1611,
550  0x160F, 0x160D, 0x160B, 0x1609, 0x1607, 0x1605, 0x1603, 0x1601,
551  0x18FF, 0x18FD, 0x18FB, 0x18F9, 0x18F7, 0x18F5, 0x18F3, 0x18F1,
552  0x18EF, 0x18ED, 0x18EB, 0x18E9, 0x18E7, 0x18E5, 0x18E3, 0x18E1,
553  0x18DF, 0x18DD, 0x18DB, 0x18D9, 0x18D7, 0x18D5, 0x18D3, 0x18D1,
554  0x18CF, 0x18CD, 0x18CB, 0x18C9, 0x18C7, 0x18C5, 0x18C3, 0x18C1,
555  0x18BF, 0x18BD, 0x18BB, 0x18B9, 0x18B7, 0x18B5, 0x18B3, 0x18B1,
556  0x18AF, 0x18AD, 0x18AB, 0x18A9, 0x18A7, 0x18A5, 0x18A3, 0x18A1,
557  0x189F, 0x189D, 0x189B, 0x1899, 0x1897, 0x1895, 0x1893, 0x1891,
558  0x188F, 0x188D, 0x188B, 0x1889, 0x1887, 0x1885, 0x1883, 0x1881,
559  0x187F, 0x187D, 0x187B, 0x1879, 0x1877, 0x1875, 0x1873, 0x1871,
560  0x186F, 0x186D, 0x186B, 0x1869, 0x1867, 0x1865, 0x1863, 0x1861,
561  0x185F, 0x185D, 0x185B, 0x1859, 0x1857, 0x1855, 0x1853, 0x1851,
562  0x184F, 0x184D, 0x184B, 0x1849, 0x1847, 0x1845, 0x1843, 0x1841,
563  0x183F, 0x183D, 0x183B, 0x1839, 0x1837, 0x1835, 0x1833, 0x1831,
564  0x182F, 0x182D, 0x182B, 0x1829, 0x1827, 0x1825, 0x1823, 0x1821,
565  0x181F, 0x181D, 0x181B, 0x1819, 0x1817, 0x1815, 0x1813, 0x1811,
566  0x180F, 0x180D, 0x180B, 0x1809, 0x1807, 0x1805, 0x1803, 0x1801,
567  0x0AFF, 0x0AFD, 0x0AFB, 0x0AF9, 0x0AF7, 0x0AF5, 0x0AF3, 0x0AF1,
568  0x0AEF, 0x0AED, 0x0AEB, 0x0AE9, 0x0AE7, 0x0AE5, 0x0AE3, 0x0AE1,
569  0x0ADF, 0x0ADD, 0x0ADB, 0x0AD9, 0x0AD7, 0x0AD5, 0x0AD3, 0x0AD1,
570  0x0ACF, 0x0ACD, 0x0ACB, 0x0AC9, 0x0AC7, 0x0AC5, 0x0AC3, 0x0AC1,
571  0x0ABF, 0x0ABD, 0x0ABB, 0x0AB9, 0x0AB7, 0x0AB5, 0x0AB3, 0x0AB1,
572  0x0AAF, 0x0AAD, 0x0AAB, 0x0AA9, 0x0AA7, 0x0AA5, 0x0AA3, 0x0AA1,
573  0x0A9F, 0x0A9D, 0x0A9B, 0x0A99, 0x0A97, 0x0A95, 0x0A93, 0x0A91,
574  0x0A8F, 0x0A8D, 0x0A8B, 0x0A89, 0x0A87, 0x0A85, 0x0A83, 0x0A81,
575  0x0A7F, 0x0A7D, 0x0A7B, 0x0A79, 0x0A77, 0x0A75, 0x0A73, 0x0A71,
576  0x0A6F, 0x0A6D, 0x0A6B, 0x0A69, 0x0A67, 0x0A65, 0x0A63, 0x0A61,
577  0x0A5F, 0x0A5D, 0x0A5B, 0x0A59, 0x0A57, 0x0A55, 0x0A53, 0x0A51,
578  0x0A4F, 0x0A4D, 0x0A4B, 0x0A49, 0x0A47, 0x0A45, 0x0A43, 0x0A41,
579  0x0A3F, 0x0A3D, 0x0A3B, 0x0A39, 0x0A37, 0x0A35, 0x0A33, 0x0A31,
580  0x0A2F, 0x0A2D, 0x0A2B, 0x0A29, 0x0A27, 0x0A25, 0x0A23, 0x0A21,
581  0x0A1F, 0x0A1D, 0x0A1B, 0x0A19, 0x0A17, 0x0A15, 0x0A13, 0x0A11,
582  0x0A0F, 0x0A0D, 0x0A0B, 0x0A09, 0x0A07, 0x0A05, 0x0A03, 0x0A01,
583  0x04FF, 0x04FD, 0x04FB, 0x04F9, 0x04F7, 0x04F5, 0x04F3, 0x04F1,
584  0x04EF, 0x04ED, 0x04EB, 0x04E9, 0x04E7, 0x04E5, 0x04E3, 0x04E1,
585  0x04DF, 0x04DD, 0x04DB, 0x04D9, 0x04D7, 0x04D5, 0x04D3, 0x04D1,
586  0x04CF, 0x04CD, 0x04CB, 0x04C9, 0x04C7, 0x04C5, 0x04C3, 0x04C1,
587  0x04BF, 0x04BD, 0x04BB, 0x04B9, 0x04B7, 0x04B5, 0x04B3, 0x04B1,
588  0x04AF, 0x04AD, 0x04AB, 0x04A9, 0x04A7, 0x04A5, 0x04A3, 0x04A1,
589  0x049F, 0x049D, 0x049B, 0x0499, 0x0497, 0x0495, 0x0493, 0x0491,
590  0x048F, 0x048D, 0x048B, 0x0489, 0x0487, 0x0485, 0x0483, 0x0481,
591  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
592  0x00EF, 0x00ED, 0x00EB, 0x00E9, 0x00E7, 0x00E5, 0x00E3, 0x00E1,
593  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
594  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
595  0x00BF, 0x00BD, 0x00BB, 0x00B9, 0x00B7, 0x00B5, 0x00B3, 0x00B1,
596  0x00AF, 0x00AD, 0x00AB, 0x00A9, 0x00A7, 0x00A5, 0x00A3, 0x00A1,
597  0x009F, 0x009D, 0x009B, 0x0099, 0x0097, 0x0095, 0x0093, 0x0091,
598  0x008F, 0x008D, 0x008B, 0x0089, 0x0087, 0x0085, 0x0083, 0x0081,
599  0x023F, 0x023D, 0x023B, 0x0239, 0x0237, 0x0235, 0x0233, 0x0231,
600  0x022F, 0x022D, 0x022B, 0x0229, 0x0227, 0x0225, 0x0223, 0x0221,
601  0x021F, 0x021D, 0x021B, 0x0219, 0x0217, 0x0215, 0x0213, 0x0211,
602  0x020F, 0x020D, 0x020B, 0x0209, 0x0207, 0x0205, 0x0203, 0x0201,
603  0x003F, 0x003D, 0x003B, 0x0039, 0x0037, 0x0035, 0x0033, 0x0031,
604  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0021,
605  0x001F, 0x001D, 0x001B, 0x0019, 0x0017, 0x0015, 0x0013, 0x0011,
606  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
607  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
608  0x00EF, 0x00ED, 0x00EB, 0x00E9, 0x00E7, 0x00E5, 0x00E3, 0x00E1,
609  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
610  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
611  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
612  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
613  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
614  0x0075, 0x0073, 0x0071, 0x006F, 0x006D, 0x006B, 0x0069, 0x0067,
615 };
616 
617 static const uint8_t dc11_vlc_lens[2048] = {
618  6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
619  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
620  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
621  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
622  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
623  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
624  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
625  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
626  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
627  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
628  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
629  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
630  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
631  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
632  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
633  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
634  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
635  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
636  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
637  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
638  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
639  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
640  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
641  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
642  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
643  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
644  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
645  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
646  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
647  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
648  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
649  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
650  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
651  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
652  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
653  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
654  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
655  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
656  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
657  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
658  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
659  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
660  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
661  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
662  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
663  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
664  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
665  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
666  13, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
667  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
668  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
669  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
670  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
671  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
672  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
673  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
674  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
675  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
676  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
677  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
678  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
679  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
680  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
681  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
682  14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
683  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
684  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
685  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
686  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
687  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
688  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
689  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
690  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
691  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
692  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
693  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
694  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
695  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
696  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
697  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
698  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
699  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
700  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
701  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
702  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
703  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
704  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
705  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
706  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
707  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
708  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
709  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
710  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
711  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
712  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
713  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
714  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
715  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
716  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
717  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
718  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
719  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
720  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
721  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
722  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
723  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
724  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
725  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
726  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
727  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
728  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
729  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
730  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
731  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
732  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
733  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
734  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
735  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
736  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
737  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
738  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
739  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
740  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
741  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
742  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
743  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
744  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
745  8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
746 };
747 
748 
750  { 10 }, { 11 }, { 11 }, { 11 }, { 12 }, { 11 },
751 };
752 
753 // level is in -255..255 range, run 0..64, so it fits into 16 bits.
754 // We offset run by 1 in order to include the implicit run of 1.
755 #define E(level, run) ((level * 128) | (run + 1))
756 
757 static const int16_t hqx_ac_run_level[] = {
758  // AC table Q0 - 815 elements
759  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
760  E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
761  E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
762  E( -7, 0), E( 8, 0), E( -8, 0), E( 0, 0), E( 1, 0),
763  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
764  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
765  E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
766  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
767  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
768  E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
769  E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
770  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
771  E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
772  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
773  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
774  E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
775  E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
776  E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
777  E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
778  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
779  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
780  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
781  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
782  E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
783  E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
784  E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
785  E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
786  E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
787  E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
788  E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
789  E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
790  E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
791  E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
792  E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
793  E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
794  E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
795  E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
796  E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
797  E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
798  E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
799  E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
800  E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
801  E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
802  E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
803  E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
804  E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
805  E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
806  E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
807  E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
808  E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
809  E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
810  E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
811  E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
812  E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
813  E(-126, 0), E( 127, 0), E(-127, 0), E( 128, 0), E(-128, 0),
814  E( 129, 0), E(-129, 0), E( 130, 0), E(-130, 0), E( 131, 0),
815  E(-131, 0), E( 132, 0), E(-132, 0), E( 133, 0), E(-133, 0),
816  E( 134, 0), E(-134, 0), E( 135, 0), E(-135, 0), E( 136, 0),
817  E(-136, 0), E( 137, 0), E(-137, 0), E( 138, 0), E(-138, 0),
818  E( 139, 0), E(-139, 0), E( 140, 0), E(-140, 0), E( 141, 0),
819  E(-141, 0), E( 142, 0), E(-142, 0), E( 143, 0), E(-143, 0),
820  E( 144, 0), E(-144, 0), E( 145, 0), E(-145, 0), E( 146, 0),
821  E(-146, 0), E( 147, 0), E(-147, 0), E( 148, 0), E(-148, 0),
822  E( 149, 0), E(-149, 0), E( 150, 0), E(-150, 0), E( 151, 0),
823  E(-151, 0), E( 152, 0), E(-152, 0), E( 153, 0), E(-153, 0),
824  E( 154, 0), E(-154, 0), E( 155, 0), E(-155, 0), E( 156, 0),
825  E(-156, 0), E( 157, 0), E(-157, 0), E( 158, 0), E(-158, 0),
826  E( 159, 0), E(-159, 0), E( 160, 0), E(-160, 0), E( 161, 0),
827  E(-161, 0), E( 162, 0), E(-162, 0), E( 163, 0), E(-163, 0),
828  E( 164, 0), E(-164, 0), E( 165, 0), E(-165, 0), E( 166, 0),
829  E(-166, 0), E( 167, 0), E(-167, 0), E( 168, 0), E(-168, 0),
830  E( 169, 0), E(-169, 0), E( 170, 0), E(-170, 0), E( 171, 0),
831  E(-171, 0), E( 172, 0), E(-172, 0), E( 173, 0), E(-173, 0),
832  E( 174, 0), E(-174, 0), E( 175, 0), E(-175, 0), E( 176, 0),
833  E(-176, 0), E( 177, 0), E(-177, 0), E( 178, 0), E(-178, 0),
834  E( 179, 0), E(-179, 0), E( 180, 0), E(-180, 0), E( 181, 0),
835  E(-181, 0), E( 182, 0), E(-182, 0), E( 183, 0), E(-183, 0),
836  E( 184, 0), E(-184, 0), E( 185, 0), E(-185, 0), E( 186, 0),
837  E(-186, 0), E( 187, 0), E(-187, 0), E( 188, 0), E(-188, 0),
838  E( 189, 0), E(-189, 0), E( 190, 0), E(-190, 0), E( 191, 0),
839  E(-191, 0), E( 192, 0), E(-192, 0), E( 193, 0), E(-193, 0),
840  E( 194, 0), E(-194, 0), E( 195, 0), E(-195, 0), E( 196, 0),
841  E(-196, 0), E( 197, 0), E(-197, 0), E( 198, 0), E(-198, 0),
842  E( 199, 0), E(-199, 0), E( 200, 0), E(-200, 0), E( 201, 0),
843  E(-201, 0), E( 202, 0), E(-202, 0), E( 203, 0), E(-203, 0),
844  E( 204, 0), E(-204, 0), E( 205, 0), E(-205, 0), E( 206, 0),
845  E(-206, 0), E( 207, 0), E(-207, 0), E( 208, 0), E(-208, 0),
846  E( 209, 0), E(-209, 0), E( 210, 0), E(-210, 0), E( 211, 0),
847  E(-211, 0), E( 212, 0), E(-212, 0), E( 213, 0), E(-213, 0),
848  E( 214, 0), E(-214, 0), E( 215, 0), E(-215, 0), E( 216, 0),
849  E(-216, 0), E( 217, 0), E(-217, 0), E( 218, 0), E(-218, 0),
850  E( 219, 0), E(-219, 0), E( 220, 0), E(-220, 0), E( 221, 0),
851  E(-221, 0), E( 222, 0), E(-222, 0), E( 223, 0), E(-223, 0),
852  E( 224, 0), E(-224, 0), E( 225, 0), E(-225, 0), E( 226, 0),
853  E(-226, 0), E( 227, 0), E(-227, 0), E( 228, 0), E(-228, 0),
854  E( 229, 0), E(-229, 0), E( 230, 0), E(-230, 0), E( 231, 0),
855  E(-231, 0), E( 232, 0), E(-232, 0), E( 233, 0), E(-233, 0),
856  E( 234, 0), E(-234, 0), E( 235, 0), E(-235, 0), E( 236, 0),
857  E(-236, 0), E( 237, 0), E(-237, 0), E( 238, 0), E(-238, 0),
858  E( 239, 0), E(-239, 0), E( 240, 0), E(-240, 0), E( 241, 0),
859  E(-241, 0), E( 242, 0), E(-242, 0), E( 243, 0), E(-243, 0),
860  E( 244, 0), E(-244, 0), E( 245, 0), E(-245, 0), E( 246, 0),
861  E(-246, 0), E( 247, 0), E(-247, 0), E( 248, 0), E(-248, 0),
862  E( 249, 0), E(-249, 0), E( 250, 0), E(-250, 0), E( 251, 0),
863  E(-251, 0), E( 252, 0), E(-252, 0), E( 253, 0), E(-253, 0),
864  E( 254, 0), E(-254, 0), E( 255, 0), E(-255, 0), E( 0, 64),
865  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
866  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
867  E( 14, 0), E( -14, 0), E( 2, 1), E( -2, 1), E( 1, 2),
868  E( -1, 2), E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0),
869  E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0), E( 19, 0),
870  E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0), E( -21, 0),
871  E( 3, 1), E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 3),
872  E( -1, 3), E( 1, 4), E( -1, 4), E( 0, 0), E( 22, 0),
873  E( -22, 0), E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0),
874  E( 25, 0), E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0),
875  E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0),
876  E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0),
877  E( -32, 0), E( 33, 0), E( -33, 0), E( 5, 1), E( -5, 1),
878  E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 5),
879  E( -1, 5), E( 1, 6), E( -1, 6), E( 34, 0), E( -34, 0),
880  E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0),
881  E( -37, 0), E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0),
882  E( 40, 0), E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0),
883  E( -42, 0), E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0),
884  E( 45, 0), E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0),
885  E( -47, 0), E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0),
886  E( 50, 0), E( -50, 0), E( 0, 1), E( 7, 1), E( -7, 1),
887  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 10, 1),
888  E( -10, 1), E( 0, 2), E( 3, 2), E( -3, 2), E( 0, 3),
889  E( 2, 3), E( -2, 3), E( 1, 7), E( -1, 7), E( 1, 8),
890  E( -1, 8), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
891  E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
892  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
893  E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
894  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
895  E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
896  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
897  E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
898  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
899  E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
900  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
901  E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
902  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
903  E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
904  E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
905  E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
906  E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
907  E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
908  E( -63, 0), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
909  E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 4, 2),
910  E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2), E( -6, 2),
911  E( 3, 3), E( -3, 3), E( 0, 4), E( 2, 4), E( -2, 4),
912  E( 0, 5), E( 0, 6), E( 1, 9), E( -1, 9), E( 1, 10),
913  E( -1, 10), E( 15, 1), E( -15, 1), E( 16, 1), E( -16, 1),
914  E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1), E( 7, 2),
915  E( -7, 2), E( 8, 2), E( -8, 2), E( 9, 2), E( -9, 2),
916  E( 10, 2), E( -10, 2), E( 4, 3), E( -4, 3), E( 5, 3),
917  E( -5, 3), E( 6, 3), E( -6, 3), E( 2, 5), E( -2, 5),
918  E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 1, 11),
919  E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13),
920  E( 1, 14), E( -1, 14), E( 19, 1), E( -19, 1), E( 20, 1),
921  E( -20, 1), E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6),
922  // AC table Q8 - 907 elements
923  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
924  E( -3, 0), E( 4, 0), E( -4, 0), E( 0, 64), E( 5, 0),
925  E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
926  E( 8, 0), E( -8, 0), E( 1, 1), E( -1, 1), E( 2, 1),
927  E( -2, 1), E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0),
928  E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0), E( 3, 1),
929  E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 2), E( -1, 2),
930  E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
931  E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0),
932  E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
933  E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
934  E( -10, 0), E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0),
935  E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
936  E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
937  E( 18, 0), E( -18, 0), E( 19, 0), E( -19, 0), E( 20, 0),
938  E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
939  E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
940  E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0), E( -27, 0),
941  E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0), E( 30, 0),
942  E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0), E( -32, 0),
943  E( 33, 0), E( -33, 0), E( 34, 0), E( -34, 0), E( 35, 0),
944  E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
945  E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
946  E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0), E( -42, 0),
947  E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0), E( 45, 0),
948  E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0), E( -47, 0),
949  E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0), E( 50, 0),
950  E( -50, 0), E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0),
951  E( 53, 0), E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0),
952  E( -55, 0), E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0),
953  E( 58, 0), E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0),
954  E( -60, 0), E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0),
955  E( 63, 0), E( -63, 0), E( 64, 0), E( -64, 0), E( 65, 0),
956  E( -65, 0), E( 66, 0), E( -66, 0), E( 67, 0), E( -67, 0),
957  E( 68, 0), E( -68, 0), E( 69, 0), E( -69, 0), E( 70, 0),
958  E( -70, 0), E( 71, 0), E( -71, 0), E( 72, 0), E( -72, 0),
959  E( 73, 0), E( -73, 0), E( 74, 0), E( -74, 0), E( 75, 0),
960  E( -75, 0), E( 76, 0), E( -76, 0), E( 77, 0), E( -77, 0),
961  E( 78, 0), E( -78, 0), E( 79, 0), E( -79, 0), E( 80, 0),
962  E( -80, 0), E( 81, 0), E( -81, 0), E( 82, 0), E( -82, 0),
963  E( 83, 0), E( -83, 0), E( 84, 0), E( -84, 0), E( 85, 0),
964  E( -85, 0), E( 86, 0), E( -86, 0), E( 87, 0), E( -87, 0),
965  E( 88, 0), E( -88, 0), E( 89, 0), E( -89, 0), E( 90, 0),
966  E( -90, 0), E( 91, 0), E( -91, 0), E( 92, 0), E( -92, 0),
967  E( 93, 0), E( -93, 0), E( 94, 0), E( -94, 0), E( 95, 0),
968  E( -95, 0), E( 96, 0), E( -96, 0), E( 97, 0), E( -97, 0),
969  E( 98, 0), E( -98, 0), E( 99, 0), E( -99, 0), E( 100, 0),
970  E(-100, 0), E( 101, 0), E(-101, 0), E( 102, 0), E(-102, 0),
971  E( 103, 0), E(-103, 0), E( 104, 0), E(-104, 0), E( 105, 0),
972  E(-105, 0), E( 106, 0), E(-106, 0), E( 107, 0), E(-107, 0),
973  E( 108, 0), E(-108, 0), E( 109, 0), E(-109, 0), E( 110, 0),
974  E(-110, 0), E( 111, 0), E(-111, 0), E( 112, 0), E(-112, 0),
975  E( 113, 0), E(-113, 0), E( 114, 0), E(-114, 0), E( 115, 0),
976  E(-115, 0), E( 116, 0), E(-116, 0), E( 117, 0), E(-117, 0),
977  E( 118, 0), E(-118, 0), E( 119, 0), E(-119, 0), E( 120, 0),
978  E(-120, 0), E( 121, 0), E(-121, 0), E( 122, 0), E(-122, 0),
979  E( 123, 0), E(-123, 0), E( 124, 0), E(-124, 0), E( 125, 0),
980  E(-125, 0), E( 126, 0), E(-126, 0), E( 127, 0), E(-127, 0),
981  E( 128, 0), E(-128, 0), E( 129, 0), E(-129, 0), E( 130, 0),
982  E(-130, 0), E( 131, 0), E(-131, 0), E( 132, 0), E(-132, 0),
983  E( 133, 0), E(-133, 0), E( 134, 0), E(-134, 0), E( 135, 0),
984  E(-135, 0), E( 136, 0), E(-136, 0), E( 137, 0), E(-137, 0),
985  E( 138, 0), E(-138, 0), E( 139, 0), E(-139, 0), E( 140, 0),
986  E(-140, 0), E( 141, 0), E(-141, 0), E( 142, 0), E(-142, 0),
987  E( 143, 0), E(-143, 0), E( 144, 0), E(-144, 0), E( 145, 0),
988  E(-145, 0), E( 146, 0), E(-146, 0), E( 147, 0), E(-147, 0),
989  E( 148, 0), E(-148, 0), E( 149, 0), E(-149, 0), E( 150, 0),
990  E(-150, 0), E( 151, 0), E(-151, 0), E( 152, 0), E(-152, 0),
991  E( 153, 0), E(-153, 0), E( 154, 0), E(-154, 0), E( 155, 0),
992  E(-155, 0), E( 156, 0), E(-156, 0), E( 157, 0), E(-157, 0),
993  E( 158, 0), E(-158, 0), E( 159, 0), E(-159, 0), E( 160, 0),
994  E(-160, 0), E( 161, 0), E(-161, 0), E( 162, 0), E(-162, 0),
995  E( 163, 0), E(-163, 0), E( 164, 0), E(-164, 0), E( 165, 0),
996  E(-165, 0), E( 166, 0), E(-166, 0), E( 167, 0), E(-167, 0),
997  E( 168, 0), E(-168, 0), E( 169, 0), E(-169, 0), E( 170, 0),
998  E(-170, 0), E( 171, 0), E(-171, 0), E( 172, 0), E(-172, 0),
999  E( 173, 0), E(-173, 0), E( 174, 0), E(-174, 0), E( 175, 0),
1000  E(-175, 0), E( 176, 0), E(-176, 0), E( 177, 0), E(-177, 0),
1001  E( 178, 0), E(-178, 0), E( 179, 0), E(-179, 0), E( 180, 0),
1002  E(-180, 0), E( 181, 0), E(-181, 0), E( 182, 0), E(-182, 0),
1003  E( 183, 0), E(-183, 0), E( 184, 0), E(-184, 0), E( 185, 0),
1004  E(-185, 0), E( 186, 0), E(-186, 0), E( 187, 0), E(-187, 0),
1005  E( 188, 0), E(-188, 0), E( 189, 0), E(-189, 0), E( 190, 0),
1006  E(-190, 0), E( 191, 0), E(-191, 0), E( 192, 0), E(-192, 0),
1007  E( 193, 0), E(-193, 0), E( 194, 0), E(-194, 0), E( 195, 0),
1008  E(-195, 0), E( 196, 0), E(-196, 0), E( 197, 0), E(-197, 0),
1009  E( 198, 0), E(-198, 0), E( 199, 0), E(-199, 0), E( 200, 0),
1010  E(-200, 0), E( 201, 0), E(-201, 0), E( 202, 0), E(-202, 0),
1011  E( 203, 0), E(-203, 0), E( 204, 0), E(-204, 0), E( 205, 0),
1012  E(-205, 0), E( 206, 0), E(-206, 0), E( 207, 0), E(-207, 0),
1013  E( 208, 0), E(-208, 0), E( 209, 0), E(-209, 0), E( 210, 0),
1014  E(-210, 0), E( 211, 0), E(-211, 0), E( 212, 0), E(-212, 0),
1015  E( 213, 0), E(-213, 0), E( 214, 0), E(-214, 0), E( 215, 0),
1016  E(-215, 0), E( 216, 0), E(-216, 0), E( 217, 0), E(-217, 0),
1017  E( 218, 0), E(-218, 0), E( 219, 0), E(-219, 0), E( 220, 0),
1018  E(-220, 0), E( 221, 0), E(-221, 0), E( 222, 0), E(-222, 0),
1019  E( 223, 0), E(-223, 0), E( 224, 0), E(-224, 0), E( 225, 0),
1020  E(-225, 0), E( 226, 0), E(-226, 0), E( 227, 0), E(-227, 0),
1021  E( 228, 0), E(-228, 0), E( 229, 0), E(-229, 0), E( 230, 0),
1022  E(-230, 0), E( 231, 0), E(-231, 0), E( 232, 0), E(-232, 0),
1023  E( 233, 0), E(-233, 0), E( 234, 0), E(-234, 0), E( 235, 0),
1024  E(-235, 0), E( 236, 0), E(-236, 0), E( 237, 0), E(-237, 0),
1025  E( 238, 0), E(-238, 0), E( 239, 0), E(-239, 0), E( 240, 0),
1026  E(-240, 0), E( 241, 0), E(-241, 0), E( 242, 0), E(-242, 0),
1027  E( 243, 0), E(-243, 0), E( 244, 0), E(-244, 0), E( 245, 0),
1028  E(-245, 0), E( 246, 0), E(-246, 0), E( 247, 0), E(-247, 0),
1029  E( 248, 0), E(-248, 0), E( 249, 0), E(-249, 0), E( 250, 0),
1030  E(-250, 0), E( 251, 0), E(-251, 0), E( 252, 0), E(-252, 0),
1031  E( 253, 0), E(-253, 0), E( 254, 0), E(-254, 0), E( 255, 0),
1032  E(-255, 0), E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0),
1033  E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0),
1034  E( -17, 0), E( 18, 0), E( -18, 0), E( 5, 1), E( -5, 1),
1035  E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 3),
1036  E( -1, 3), E( 0, 0), E( 19, 0), E( -19, 0), E( 20, 0),
1037  E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
1038  E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
1039  E( -25, 0), E( 7, 1), E( -7, 1), E( 8, 1), E( -8, 1),
1040  E( 3, 2), E( -3, 2), E( 2, 3), E( -2, 3), E( 1, 4),
1041  E( -1, 4), E( 1, 5), E( -1, 5), E( 26, 0), E( -26, 0),
1042  E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0),
1043  E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1044  E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1045  E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0),
1046  E( 0, 1), E( 9, 1), E( -9, 1), E( 10, 1), E( -10, 1),
1047  E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1), E( 0, 2),
1048  E( 4, 2), E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2),
1049  E( -6, 2), E( 0, 3), E( 3, 3), E( -3, 3), E( 4, 3),
1050  E( -4, 3), E( 0, 4), E( 2, 4), E( -2, 4), E( 0, 5),
1051  E( 1, 6), E( -1, 6), E( 1, 7), E( -1, 7), E( 1, 8),
1052  E( -1, 8), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1053  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1054  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1055  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1056  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1057  E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 15, 1),
1058  E( -15, 1), E( 16, 1), E( -16, 1), E( 7, 2), E( -7, 2),
1059  E( 8, 2), E( -8, 2), E( 5, 3), E( -5, 3), E( 6, 3),
1060  E( -6, 3), E( 3, 4), E( -3, 4), E( 4, 4), E( -4, 4),
1061  E( 2, 5), E( -2, 5), E( 0, 6), E( 2, 6), E( -2, 6),
1062  E( 0, 7), E( 0, 8), E( 0, 9), E( 1, 9), E( -1, 9),
1063  E( 1, 10), E( -1, 10), E( 1, 11), E( -1, 11), E( 1, 12),
1064  E( -1, 12), E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0),
1065  E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
1066  E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
1067  E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
1068  E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
1069  E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
1070  E( -63, 0), E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1),
1071  E( 19, 1), E( -19, 1), E( 20, 1), E( -20, 1), E( 21, 1),
1072  E( -21, 1), E( 22, 1), E( -22, 1), E( 23, 1), E( -23, 1),
1073  E( 24, 1), E( -24, 1), E( 9, 2), E( -9, 2), E( 10, 2),
1074  E( -10, 2), E( 11, 2), E( -11, 2), E( 12, 2), E( -12, 2),
1075  E( 7, 3), E( -7, 3), E( 8, 3), E( -8, 3), E( 5, 4),
1076  E( -5, 4), E( 6, 4), E( -6, 4), E( 3, 5), E( -3, 5),
1077  E( 4, 5), E( -4, 5), E( 5, 5), E( -5, 5), E( 6, 5),
1078  E( -6, 5), E( 3, 6), E( -3, 6), E( 4, 6), E( -4, 6),
1079  E( 2, 7), E( -2, 7), E( 2, 8), E( -2, 8), E( 2, 9),
1080  E( -2, 9), E( 0, 10), E( 2, 10), E( -2, 10), E( 0, 11),
1081  E( 0, 12), E( 0, 13), E( 1, 13), E( -1, 13), E( 1, 14),
1082  E( -1, 14), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
1083  E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1084  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
1085  E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1086  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
1087  E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1088  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
1089  E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1090  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
1091  E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1092  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
1093  E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1094  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
1095  E( 25, 1), E( -25, 1), E( 26, 1), E( -26, 1), E( 27, 1),
1096  E( -27, 1), E( 28, 1), E( -28, 1), E( 29, 1), E( -29, 1),
1097  E( 30, 1), E( -30, 1), E( 31, 1), E( -31, 1), E( 32, 1),
1098  E( -32, 1), E( 13, 2), E( -13, 2), E( 14, 2), E( -14, 2),
1099  E( 15, 2), E( -15, 2), E( 16, 2), E( -16, 2), E( 9, 3),
1100  E( -9, 3), E( 10, 3), E( -10, 3), E( 11, 3), E( -11, 3),
1101  E( 7, 4), E( -7, 4), E( 3, 7), E( -3, 7), E( 4, 7),
1102  E( -4, 7), E( 3, 8), E( -3, 8), E( 4, 8), E( -4, 8),
1103  E( 3, 9), E( -3, 9), E( 2, 11), E( -2, 11), E( 2, 12),
1104  E( -2, 12), E( 0, 14),
1105  // AC table Q16 - 512 elements
1106  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
1107  E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
1108  E( 0, 64), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1109  E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 7, 0),
1110  E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1111  E( 3, 1), E( -3, 1), E( 1, 3), E( -1, 3), E( 1, 4),
1112  E( -1, 4), E( 10, 0), E( -10, 0), E( 11, 0), E( -11, 0),
1113  E( 12, 0), E( -12, 0), E( 4, 1), E( -4, 1), E( 2, 2),
1114  E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6),
1115  E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
1116  E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
1117  E( 5, 1), E( -5, 1), E( 2, 3), E( -2, 3), E( 1, 7),
1118  E( -1, 7), E( 1, 8), E( -1, 8), E( 1, 9), E( -1, 9),
1119  E( 1, 10), E( -1, 10), E( 0, 0), E( 18, 0), E( -18, 0),
1120  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1121  E( -21, 0), E( 22, 0), E( -22, 0), E( 6, 1), E( -6, 1),
1122  E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1123  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11), E( -1, 11),
1124  E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1125  E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5),
1126  E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1127  E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15),
1128  E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1129  E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25),
1130  E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1131  E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35),
1132  E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1133  E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45),
1134  E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1135  E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55),
1136  E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1137  E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 1, 0),
1138  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1139  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
1140  E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1141  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
1142  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
1143  E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
1144  E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
1145  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1146  E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
1147  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1148  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1149  E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
1150  E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
1151  E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
1152  E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1153  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1154  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1155  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1156  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1157  E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
1158  E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
1159  E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
1160  E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
1161  E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
1162  E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
1163  E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
1164  E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
1165  E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
1166  E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
1167  E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
1168  E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
1169  E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
1170  E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
1171  E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
1172  E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
1173  E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
1174  E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
1175  E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
1176  E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
1177  E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
1178  E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
1179  E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
1180  E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
1181  E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
1182  E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
1183  E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
1184  E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
1185  E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
1186  E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
1187  E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
1188  E(-126, 0), E( 127, 0), E(-127, 0), E( 23, 0), E( -23, 0),
1189  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1190  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1191  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2),
1192  E( -4, 2), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1193  E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7), E( 29, 0),
1194  E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1195  E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1196  E( -34, 0), E( 35, 0), E( -35, 0), E( 0, 1), E( 10, 1),
1197  E( -10, 1), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
1198  E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3), E( 4, 3),
1199  E( -4, 3), E( 3, 5), E( -3, 5), E( 2, 8), E( -2, 8),
1200  E( 2, 9), E( -2, 9), E( 1, 14), E( -1, 14), E( 1, 15),
1201  E( -1, 15), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
1202  E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
1203  E( -40, 0), E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1),
1204  E( 15, 1), E( -15, 1), E( 6, 2), E( -6, 2), E( 7, 2),
1205  E( -7, 2), E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4),
1206  E( -4, 4), E( 0, 5), E( 0, 6), E( 3, 6), E( -3, 6),
1207  E( 0, 7), E( 3, 7), E( -3, 7), E( 2, 10), E( -2, 10),
1208  E( 1, 16), E( -1, 16),
1209  // AC table Q32 - 354 elements
1210  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 0, 64), E( 3, 0),
1211  E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 5, 0),
1212  E( -5, 0), E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 1, 3),
1213  E( -1, 3), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 3, 1),
1214  E( -3, 1), E( 1, 4), E( -1, 4), E( 1, 5), E( -1, 5), E( 8, 0),
1215  E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 4, 1),
1216  E( -4, 1), E( 2, 2), E( -2, 2), E( 1, 6), E( -1, 6), E( 1, 7),
1217  E( -1, 7), E( 1, 8), E( -1, 8), E( 11, 0), E(-11, 0), E( 12, 0),
1218  E(-12, 0), E( 13, 0), E(-13, 0), E( 5, 1), E( -5, 1), E( 2, 3),
1219  E( -2, 3), E( 1, 9), E( -1, 9), E( 1, 10), E( -1, 10), E( 14, 0),
1220  E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0), E(-16, 0), E( 6, 1),
1221  E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1222  E( -3, 3), E( 2, 4), E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11),
1223  E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1224  E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6),
1225  E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12),
1226  E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1227  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24),
1228  E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1229  E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36),
1230  E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42),
1231  E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1232  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54),
1233  E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1234  E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 17, 0), E(-17, 0),
1235  E( 18, 0), E(-18, 0), E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0),
1236  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2), E( -4, 2),
1237  E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1238  E( 2, 8), E( -2, 8), E( 1, 14), E( -1, 14), E( 0, 0), E( 1, 0),
1239  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0), E( 4, 0),
1240  E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
1241  E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
1242  E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 13, 0),
1243  E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0),
1244  E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0), E( 19, 0),
1245  E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0), E( 22, 0),
1246  E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0), E( 25, 0),
1247  E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0), E( 28, 0),
1248  E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0), E( 31, 0),
1249  E(-31, 0), E( 32, 0), E(-32, 0), E( 33, 0), E(-33, 0), E( 34, 0),
1250  E(-34, 0), E( 35, 0), E(-35, 0), E( 36, 0), E(-36, 0), E( 37, 0),
1251  E(-37, 0), E( 38, 0), E(-38, 0), E( 39, 0), E(-39, 0), E( 40, 0),
1252  E(-40, 0), E( 41, 0), E(-41, 0), E( 42, 0), E(-42, 0), E( 43, 0),
1253  E(-43, 0), E( 44, 0), E(-44, 0), E( 45, 0), E(-45, 0), E( 46, 0),
1254  E(-46, 0), E( 47, 0), E(-47, 0), E( 48, 0), E(-48, 0), E( 49, 0),
1255  E(-49, 0), E( 50, 0), E(-50, 0), E( 51, 0), E(-51, 0), E( 52, 0),
1256  E(-52, 0), E( 53, 0), E(-53, 0), E( 54, 0), E(-54, 0), E( 55, 0),
1257  E(-55, 0), E( 56, 0), E(-56, 0), E( 57, 0), E(-57, 0), E( 58, 0),
1258  E(-58, 0), E( 59, 0), E(-59, 0), E( 60, 0), E(-60, 0), E( 61, 0),
1259  E(-61, 0), E( 62, 0), E(-62, 0), E( 63, 0), E(-63, 0), E( 21, 0),
1260  E(-21, 0), E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 0, 1),
1261  E( 10, 1), E(-10, 1), E( 11, 1), E(-11, 1), E( 0, 2), E( 5, 2),
1262  E( -5, 2), E( 6, 2), E( -6, 2), E( 0, 3), E( 4, 3), E( -4, 3),
1263  E( 0, 4), E( 3, 5), E( -3, 5), E( 3, 6), E( -3, 6), E( 2, 9),
1264  E( -2, 9), E( 1, 15), E( -1, 15), E( 24, 0), E(-24, 0), E( 25, 0),
1265  E(-25, 0), E( 26, 0), E(-26, 0), E( 12, 1), E(-12, 1), E( 13, 1),
1266  E(-13, 1), E( 5, 3), E( -5, 3), E( 4, 4), E( -4, 4), E( 0, 5),
1267  E( 4, 5), E( -4, 5), E( 0, 6), E( 0, 7), E( 3, 7), E( -3, 7),
1268  E( 0, 8), E( 3, 8), E( -3, 8), E( 0, 9), E( 1, 16), E( -1, 16),
1269  // AC table Q64 - 257 elements
1270  E( 1, 0), E( -1, 0), E( 0, 64), E( 2, 0), E( -2, 0), E( 3, 0),
1271  E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 2, 1),
1272  E( -2, 1), E( 1, 2), E( -1, 2), E( 5, 0), E( -5, 0), E( 1, 3),
1273  E( -1, 3), E( 1, 4), E( -1, 4), E( 6, 0), E( -6, 0), E( 3, 1),
1274  E( -3, 1), E( 2, 2), E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6),
1275  E( -1, 6), E( 1, 7), E( -1, 7), E( 7, 0), E( -7, 0), E( 8, 0),
1276  E( -8, 0), E( 4, 1), E( -4, 1), E( 2, 3), E( -2, 3), E( 1, 8),
1277  E( -1, 8), E( 1, 9), E( -1, 9), E( 9, 0), E( -9, 0), E( 10, 0),
1278  E(-10, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1279  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 1, 11),
1280  E( -1, 11), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4),
1281  E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1282  E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16),
1283  E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22),
1284  E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1285  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34),
1286  E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1287  E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46),
1288  E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52),
1289  E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1290  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0),
1291  E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 6, 1), E( -6, 1),
1292  E( 7, 1), E( -7, 1), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1293  E( 3, 5), E( -3, 5), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1294  E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 1, 14), E( -1, 14),
1295  E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 0, 1), E( 8, 1),
1296  E( -8, 1), E( 4, 2), E( -4, 2), E( 4, 3), E( -4, 3), E( 2, 8),
1297  E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 15), E( -1, 15), E( 0, 0),
1298  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1299  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1300  E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1301  E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0),
1302  E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0),
1303  E( 16, 0), E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0),
1304  E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0),
1305  E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0),
1306  E( 25, 0), E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0),
1307  E( 28, 0), E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0),
1308  E( 31, 0), E(-31, 0), E( 15, 0), E(-15, 0), E( 9, 1), E( -9, 1),
1309  E( 10, 1), E(-10, 1), E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3),
1310  E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4), E( -4, 4), E( 0, 5),
1311  E( 4, 5), E( -4, 5), E( 0, 6), E( 3, 6), E( -3, 6), E( 3, 7),
1312  E( -3, 7), E( 1, 16), E( -1, 16), E( 1, 17), E( -1, 17),
1313  // AC table Q128 - 194 elements
1314  E( 1, 0), E( -1, 0), E( 0, 64), E( 1, 1), E( -1, 1), E( 2, 0),
1315  E( -2, 0), E( 3, 0), E( -3, 0), E( 2, 1), E( -2, 1), E( 1, 2),
1316  E( -1, 2), E( 1, 3), E( -1, 3), E( 1, 4), E( -1, 4), E( 4, 0),
1317  E( -4, 0), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6), E( 1, 7),
1318  E( -1, 7), E( 5, 0), E( -5, 0), E( 3, 1), E( -3, 1), E( 2, 2),
1319  E( -2, 2), E( 2, 3), E( -2, 3), E( 1, 8), E( -1, 8), E( 1, 9),
1320  E( -1, 9), E( 6, 0), E( -6, 0), E( 4, 1), E( -4, 1), E( 2, 4),
1321  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 7, 0),
1322  E( -7, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1323  E( -3, 3), E( 2, 6), E( -2, 6), E( 0, 0), E( 0, 1), E( 0, 2),
1324  E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1325  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14),
1326  E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1327  E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26),
1328  E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32),
1329  E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1330  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44),
1331  E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1332  E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56),
1333  E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62),
1334  E( 0, 63), E( 6, 1), E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 4),
1335  E( -3, 4), E( 3, 5), E( -3, 5), E( 2, 7), E( -2, 7), E( 2, 8),
1336  E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 11), E( -1, 11), E( 1, 12),
1337  E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0), E( 8, 0), E( -8, 0),
1338  E( 9, 0), E( -9, 0), E( 8, 1), E( -8, 1), E( 4, 2), E( -4, 2),
1339  E( 4, 3), E( -4, 3), E( 3, 6), E( -3, 6), E( 1, 14), E( -1, 14),
1340  E( 1, 15), E( -1, 15), E( 1, 16), E( -1, 16), E( 0, 1), E( 0, 2),
1341  E( 0, 3), E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
1342  E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0),
1343  E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1344  E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0),
1345  E( 12, 0), E(-12, 0), E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0),
1346  E( 15, 0), E(-15, 0),
1347 };
1348 
1349 static const uint8_t hqx_ac_lens[] = {
1350  // AC table Q0 - 815 elements
1351  4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
1352  13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1353  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1354  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1355  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1356  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1357  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1358  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1359  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1360  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1361  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1362  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1363  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1364  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1365  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1366  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1367  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1368  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1369  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1370  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1371  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1372  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1373  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1374  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1375  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1376  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1377  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1378  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1379  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1380  14, 14, 14, 14, 14, 14, 14, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1381  7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1382  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
1383  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1384  9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1385  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1386  10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10,
1387  10, 9, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1388  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1389  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1390  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1391  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1392  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1393  11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 12, 12, 12,
1394  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1395  12, 12, 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13,
1396  13, 13, 13, 13, 13,
1397  // AC table Q8 - 907 elements
1398  4, 4, 4, 4, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1399  6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
1400  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1401  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1402  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1403  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1404  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1405  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1406  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1407  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1408  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1409  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1410  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1411  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1412  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1413  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1414  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1415  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1416  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1417  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1418  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1419  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1420  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1421  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1422  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1423  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1424  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1425  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1426  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1427  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1428  15, 15, 15, 15, 15, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1429  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1430  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10,
1431  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1432  10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10,
1433  10, 9, 10, 10, 10, 10, 9, 10, 10, 9, 10, 10, 10, 10, 10, 10, 11, 11,
1434  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1435  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1436  11, 11, 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 10, 11, 11, 11, 11,
1437  11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1438  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1439  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1440  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1441  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 11, 11,
1442  12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1443  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1444  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1445  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1446  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1447  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1448  13, 13, 13, 13, 13, 13, 12,
1449  // AC table Q16 - 512 elements
1450  3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6,
1451  6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
1452  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1453  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1454  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1455  10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1456  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1457  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1458  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 17, 17,
1459  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1460  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1461  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1462  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1463  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1464  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1465  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1466  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1467  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1468  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1469  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1470  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1471  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1472  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11,
1473  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1474  11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1475  12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12,
1476  12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1477  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 13, 12, 12, 13,
1478  13, 12, 13, 13, 13, 13, 13, 13,
1479  // AC table Q32 - 354 elements
1480  3, 3, 4, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1481  6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
1482  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1483  9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1484  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15,
1485  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1486  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1487  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1488  15, 15, 15, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1489  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 17, 17, 17, 17, 17, 17, 17,
1490  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1491  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1492  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1493  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1494  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1495  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1496  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 11,
1497  12, 12, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12, 12,
1498  12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12,
1499  13, 13, 12, 12, 13, 13, 12, 13, 13, 12, 13, 13,
1500  // AC table Q64 - 257 elements
1501  3, 3, 2, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7,
1502  7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
1503  9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1504  10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1505  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1506  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1507  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10,
1508  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1509  11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12,
1510  12, 12, 12, 12, 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1511  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1512  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1513  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1514  13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 13,
1515  13, 13, 13, 13, 13,
1516  // AC table Q128 - 194 elements
1517  3, 3, 2, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
1518  7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1519  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
1520  10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1521  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1522  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1523  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11,
1524  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12,
1525  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1526  12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1527  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1528 };
1529 
1530 static const uint16_t hqx_ac_nb_elems[] = { 815, 907, 512, 354, 257, 194 };
1531 
1532 static VLCElem cbp_vlc[(1 << HQX_CBP_VLC_BITS) + 896 /* dc9 */ + 1344 /* dc10 */
1533  + 15630 /* RL_VLC_ELEMS for hqx_ac */];
1534 
1535 static const VLCElem *dc_vlc[2];
1536 
1537 #define INIT_DC_TABLE(idx, name) \
1538  do { \
1539  dc_vlc[idx] = ff_vlc_init_tables(&state, HQX_DC_VLC_BITS, \
1540  FF_ARRAY_ELEMS(name ## _vlc_lens), \
1541  name ## _vlc_lens, 1, 1, \
1542  name ## _vlc_bits, 2, 2, 0); \
1543  } while (0)
1544 
1546 {
1548  const uint8_t *lens = hqx_ac_lens;
1549  const int16_t *run_level = hqx_ac_run_level;
1550 
1552  cbp_vlc_lens, 1, 1, cbp_vlc_bits, 1, 1, 0);
1553 
1554  INIT_DC_TABLE(0, dc9);
1555  INIT_DC_TABLE(1, dc10);
1556 
1557  for (int i = 0; i < NUM_HQX_AC; ++i) {
1558  RL_VLC_ELEM *lut = state.table;
1559  unsigned nb_codes = state.size;
1560 
1561  hqx_ac[i].lut =
1563  hqx_ac_nb_elems[i], lens, 1,
1564  run_level, 2, 2, 0, 0);
1565 
1566  nb_codes -= state.size;
1567 
1568  for (unsigned j = 0; j < nb_codes; ++j) {
1569  // lut[j] is in VLC (not RL_VLC) state
1570  int sym = lut[j].sym;
1571  int len = lut[j].len;
1572  int level;
1573 
1574  if (len < 0) {
1575  level = sym;
1576  } else {
1577  level = sym >> 7;
1578  lut[j].run = sym & 0x7f;
1579  }
1580  // lut[j] is now in RL_VLC state
1581  lut[j].len8 = len;
1582  lut[j].level = level;
1583  }
1584  lens += hqx_ac_nb_elems[i];
1585  run_level += hqx_ac_nb_elems[i];
1586  }
1587 }
1588 
1589 #endif /* AVCODEC_HQXVLC_H*/
VLCElem::level
int16_t level
Definition: vlc.h:41
level
uint8_t level
Definition: svq3.c:205
HQX_AC_Q64
@ HQX_AC_Q64
Definition: hqxvlc.h:39
hqx_ac_run_level
static const int16_t hqx_ac_run_level[]
Definition: hqxvlc.h:757
HQX_CBP_VLC_BITS
#define HQX_CBP_VLC_BITS
Definition: hqxvlc.h:31
HQXAC::bits
int bits
Definition: hqxvlc.h:45
cbp_vlc_bits
static const uint8_t cbp_vlc_bits[16]
Definition: hqxvlc.h:49
av_unused
#define av_unused
Definition: attributes.h:131
HQX_AC_Q0
@ HQX_AC_Q0
Definition: hqxvlc.h:35
VLCElem::len
VLCBaseType len
Definition: vlc.h:37
HQX_AC_Q8
@ HQX_AC_Q8
Definition: hqxvlc.h:36
dc9_vlc_lens
static const uint8_t dc9_vlc_lens[512]
Definition: hqxvlc.h:125
cbp_vlc_lens
static const uint8_t cbp_vlc_lens[16]
Definition: hqxvlc.h:54
dc_vlc
static const VLCElem * dc_vlc[2]
Definition: hqxvlc.h:1535
macros.h
VLCElem::sym
VLCBaseType sym
Definition: vlc.h:36
E
#define E(level, run)
Definition: hqxvlc.h:755
hqx_ac
static HQXAC hqx_ac[NUM_HQX_AC]
Definition: hqxvlc.h:749
FF_ARRAY_ELEMS
#define FF_ARRAY_ELEMS(a)
Definition: sinewin_tablegen.c:29
av_cold
#define av_cold
Definition: attributes.h:90
VLCInitState
For static VLCs, the number of bits can often be hardcoded at each get_vlc2() callsite.
Definition: vlc.h:220
INIT_DC_TABLE
#define INIT_DC_TABLE(idx, name)
Definition: hqxvlc.h:1537
bits
uint8_t bits
Definition: vp3data.h:128
hqx_ac_lens
static const uint8_t hqx_ac_lens[]
Definition: hqxvlc.h:1349
VLCElem::run
uint8_t run
Definition: vlc.h:43
dc9_vlc_bits
static const uint16_t dc9_vlc_bits[512]
Definition: hqxvlc.h:58
HQXACMode
HQXACMode
Definition: hqxvlc.h:34
hqx_init_static
static av_cold av_unused void hqx_init_static(void)
Definition: hqxvlc.h:1545
NUM_HQX_AC
@ NUM_HQX_AC
Definition: hqxvlc.h:41
dc10_vlc_bits
static const uint16_t dc10_vlc_bits[1024]
Definition: hqxvlc.h:160
HQXAC::lut
const RL_VLC_ELEM * lut
Definition: hqxvlc.h:46
HQX_AC_Q16
@ HQX_AC_Q16
Definition: hqxvlc.h:37
VLCElem
Definition: vlc.h:32
dc11_vlc_lens
static const uint8_t dc11_vlc_lens[2048]
Definition: hqxvlc.h:617
VLCElem::len8
int8_t len8
Definition: vlc.h:42
attributes.h
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
hqx_ac_nb_elems
static const uint16_t hqx_ac_nb_elems[]
Definition: hqxvlc.h:1530
HQX_AC_Q32
@ HQX_AC_Q32
Definition: hqxvlc.h:38
dc10_vlc_lens
static const uint8_t dc10_vlc_lens[1024]
Definition: hqxvlc.h:291
len
int len
Definition: vorbis_enc_data.h:426
dc11_vlc_bits
static const uint16_t dc11_vlc_bits[2048]
Definition: hqxvlc.h:358
HQXAC
Definition: hqxvlc.h:44
ff_vlc_init_tables_from_lengths
const av_cold VLCElem * ff_vlc_init_tables_from_lengths(VLCInitState *state, int nb_bits, int nb_codes, const int8_t *lens, int lens_wrap, const void *symbols, int symbols_wrap, int symbols_size, int offset, int flags)
Definition: vlc.c:366
ff_vlc_init_tables
static const VLCElem * ff_vlc_init_tables(VLCInitState *state, int nb_bits, int nb_codes, const void *bits, int bits_wrap, int bits_size, const void *codes, int codes_wrap, int codes_size, int flags)
Definition: vlc.h:254
HQX_AC_Q128
@ HQX_AC_Q128
Definition: hqxvlc.h:40
VLC_INIT_STATE
#define VLC_INIT_STATE(_table)
Definition: vlc.h:225
vlc.h
cbp_vlc
static VLCElem cbp_vlc[(1<< HQX_CBP_VLC_BITS)+896+1344+15630]
Definition: hqxvlc.h:1533
state
static struct @481 state