xref: /third_party/ffmpeg/libavcodec/hqxvlc.c (revision cabdff1a)
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
23static 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
28static 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
32static 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
99static 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
134static 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
265static 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
332static 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
591static 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
733static 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
1132static 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
1580static 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
1777static 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
1925static 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
2041static 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
2132const HQXAC ff_hqx_ac[NUM_HQX_AC] = {
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
2151av_cold int ff_hqx_init_vlcs(HQXContext *ctx)
2152{
2153    int ret = init_vlc(&ctx->cbp_vlc, HQX_CBP_VLC_BITS, 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}
2164