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