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