1/*
2 * Topro TP6800/6810 webcam driver.
3 *
4 * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
5 * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
6 * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; If not, see <http://www.gnu.org/licenses/>.
20 */
21
22#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
23
24#include "gspca.h"
25
26MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
27MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, "
28		"Anders Blomdell <anders.blomdell@control.lth.se>");
29MODULE_LICENSE("GPL");
30
31static int force_sensor = -1;
32
33/* JPEG header */
34static const u8 jpeg_head[] = {
35	0xff, 0xd8,			/* jpeg */
36
37/* quantization table quality 50% */
38	0xff, 0xdb, 0x00, 0x84,		/* DQT */
390,
40#define JPEG_QT0_OFFSET 7
41	0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
42	0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
43	0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
44	0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
45	0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
46	0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
47	0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
48	0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
491,
50#define JPEG_QT1_OFFSET 72
51	0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
52	0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
53	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
54	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
55	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
56	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
57	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
58	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
59
60	/* Define Huffman table (thanks to Thomas Kaiser) */
61	0xff, 0xc4, 0x01, 0x5e,
62	0x00, 0x00, 0x02, 0x03,
63	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
64	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
65	0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
66	0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
67	0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
68	0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
69	0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
70	0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
71	0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
72	0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
73	0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
74	0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
75	0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
76	0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
77	0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
78	0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
79	0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
80	0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
81	0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
82	0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
83	0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
84	0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
85	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
86	0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
87	0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
88	0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
89	0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
90	0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
91	0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
92	0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
93	0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
94	0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
95	0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
96	0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
97	0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
98	0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
99	0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
100	0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
101	0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
102	0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
103	0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
104	0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
105	0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
106	0xff, 0xc0, 0x00, 0x11,		/* SOF0 (start of frame 0 */
107	0x08,				/* data precision */
108#define JPEG_HEIGHT_OFFSET 493
109	0x01, 0xe0,			/* height */
110	0x02, 0x80,			/* width */
111	0x03,				/* component number */
112		0x01,
113			0x21,		/* samples Y = jpeg 422 */
114			0x00,		/* quant Y */
115		0x02, 0x11, 0x01,	/* samples CbCr - quant CbCr */
116		0x03, 0x11, 0x01,
117
118	0xff, 0xda, 0x00, 0x0c,		/* SOS (start of scan) */
119	0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
120#define JPEG_HDR_SZ 521
121};
122
123struct sd {
124	struct gspca_dev gspca_dev;	/* !! must be the first item */
125	struct v4l2_ctrl *jpegqual;
126	struct v4l2_ctrl *sharpness;
127	struct v4l2_ctrl *gamma;
128	struct v4l2_ctrl *blue;
129	struct v4l2_ctrl *red;
130
131	u8 framerate;
132	u8 quality;		/* webcam current JPEG quality (0..16) */
133	s8 ag_cnt;		/* autogain / start counter for tp6810 */
134#define AG_CNT_START 13		/* check gain every N frames */
135
136	u8 bridge;
137	u8 sensor;
138
139	u8 jpeg_hdr[JPEG_HDR_SZ];
140};
141
142enum bridges {
143	BRIDGE_TP6800,
144	BRIDGE_TP6810,
145};
146
147enum sensors {
148	SENSOR_CX0342,
149	SENSOR_SOI763A,		/* ~= ov7630 / ov7648 */
150	NSENSORS
151};
152
153static const struct v4l2_pix_format vga_mode[] = {
154	{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
155		.bytesperline = 320,
156		.sizeimage = 320 * 240 * 4 / 8 + 590,
157		.colorspace = V4L2_COLORSPACE_JPEG},
158	{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
159		.bytesperline = 640,
160		.sizeimage = 640 * 480 * 3 / 8 + 590,
161		.colorspace = V4L2_COLORSPACE_JPEG}
162};
163
164/*
165 * JPEG quality
166 * index: webcam compression
167 * value: JPEG quality in %
168 */
169static const u8 jpeg_q[17] = {
170	88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
171};
172
173#define BULK_OUT_SIZE		0x20
174#if BULK_OUT_SIZE > USB_BUF_SZ
175#error "USB buffer too small"
176#endif
177
178static const u8 rates[] = {30, 20, 15, 10, 7, 5};
179static const struct framerates framerates[] = {
180	{
181		.rates = rates,
182		.nrates = ARRAY_SIZE(rates)
183	},
184	{
185		.rates = rates,
186		.nrates = ARRAY_SIZE(rates)
187	}
188};
189static const u8 rates_6810[] = {30, 15, 10, 7, 5};
190static const struct framerates framerates_6810[] = {
191	{
192		.rates = rates_6810,
193		.nrates = ARRAY_SIZE(rates_6810)
194	},
195	{
196		.rates = rates_6810,
197		.nrates = ARRAY_SIZE(rates_6810)
198	}
199};
200
201/*
202 * webcam quality in %
203 * the last value is the ultra fine quality
204 */
205
206/* TP6800 register offsets */
207#define TP6800_R10_SIF_TYPE		0x10
208#define TP6800_R11_SIF_CONTROL		0x11
209#define TP6800_R12_SIF_ADDR_S		0x12
210#define TP6800_R13_SIF_TX_DATA		0x13
211#define TP6800_R14_SIF_RX_DATA		0x14
212#define TP6800_R15_GPIO_PU		0x15
213#define TP6800_R16_GPIO_PD		0x16
214#define TP6800_R17_GPIO_IO		0x17
215#define TP6800_R18_GPIO_DATA		0x18
216#define TP6800_R19_SIF_ADDR_S2		0x19
217#define TP6800_R1A_SIF_TX_DATA2		0x1a
218#define TP6800_R1B_SIF_RX_DATA2		0x1b
219#define TP6800_R21_ENDP_1_CTL		0x21
220#define TP6800_R2F_TIMING_CFG		0x2f
221#define TP6800_R30_SENSOR_CFG		0x30
222#define TP6800_R31_PIXEL_START		0x31
223#define TP6800_R32_PIXEL_END_L		0x32
224#define TP6800_R33_PIXEL_END_H		0x33
225#define TP6800_R34_LINE_START		0x34
226#define TP6800_R35_LINE_END_L		0x35
227#define TP6800_R36_LINE_END_H		0x36
228#define TP6800_R37_FRONT_DARK_ST	0x37
229#define TP6800_R38_FRONT_DARK_END	0x38
230#define TP6800_R39_REAR_DARK_ST_L	0x39
231#define TP6800_R3A_REAR_DARK_ST_H	0x3a
232#define TP6800_R3B_REAR_DARK_END_L	0x3b
233#define TP6800_R3C_REAR_DARK_END_H	0x3c
234#define TP6800_R3D_HORIZ_DARK_LINE_L	0x3d
235#define TP6800_R3E_HORIZ_DARK_LINE_H	0x3e
236#define TP6800_R3F_FRAME_RATE		0x3f
237#define TP6800_R50			0x50
238#define TP6800_R51			0x51
239#define TP6800_R52			0x52
240#define TP6800_R53			0x53
241#define TP6800_R54_DARK_CFG		0x54
242#define TP6800_R55_GAMMA_R		0x55
243#define TP6800_R56_GAMMA_G		0x56
244#define TP6800_R57_GAMMA_B		0x57
245#define TP6800_R5C_EDGE_THRLD		0x5c
246#define TP6800_R5D_DEMOSAIC_CFG		0x5d
247#define TP6800_R78_FORMAT		0x78
248#define TP6800_R79_QUALITY		0x79
249#define TP6800_R7A_BLK_THRLD		0x7a
250
251/* CX0342 register offsets */
252
253#define CX0342_SENSOR_ID		0x00
254#define CX0342_VERSION_NO		0x01
255#define CX0342_ORG_X_L			0x02
256#define CX0342_ORG_X_H			0x03
257#define CX0342_ORG_Y_L			0x04
258#define CX0342_ORG_Y_H			0x05
259#define CX0342_STOP_X_L			0x06
260#define CX0342_STOP_X_H			0x07
261#define CX0342_STOP_Y_L			0x08
262#define CX0342_STOP_Y_H			0x09
263#define CX0342_FRAME_WIDTH_L		0x0a
264#define CX0342_FRAME_WIDTH_H		0x0b
265#define CX0342_FRAME_HEIGH_L		0x0c
266#define CX0342_FRAME_HEIGH_H		0x0d
267#define CX0342_EXPO_LINE_L		0x10
268#define CX0342_EXPO_LINE_H		0x11
269#define CX0342_EXPO_CLK_L		0x12
270#define CX0342_EXPO_CLK_H		0x13
271#define CX0342_RAW_GRGAIN_L		0x14
272#define CX0342_RAW_GRGAIN_H		0x15
273#define CX0342_RAW_GBGAIN_L		0x16
274#define CX0342_RAW_GBGAIN_H		0x17
275#define CX0342_RAW_RGAIN_L		0x18
276#define CX0342_RAW_RGAIN_H		0x19
277#define CX0342_RAW_BGAIN_L		0x1a
278#define CX0342_RAW_BGAIN_H		0x1b
279#define CX0342_GLOBAL_GAIN		0x1c
280#define CX0342_SYS_CTRL_0		0x20
281#define CX0342_SYS_CTRL_1		0x21
282#define CX0342_SYS_CTRL_2		0x22
283#define CX0342_BYPASS_MODE		0x23
284#define CX0342_SYS_CTRL_3		0x24
285#define CX0342_TIMING_EN		0x25
286#define CX0342_OUTPUT_CTRL		0x26
287#define CX0342_AUTO_ADC_CALIB		0x27
288#define CX0342_SYS_CTRL_4		0x28
289#define CX0342_ADCGN			0x30
290#define CX0342_SLPCR			0x31
291#define CX0342_SLPFN_LO			0x32
292#define CX0342_ADC_CTL			0x33
293#define CX0342_LVRST_BLBIAS		0x34
294#define CX0342_VTHSEL			0x35
295#define CX0342_RAMP_RIV			0x36
296#define CX0342_LDOSEL			0x37
297#define CX0342_CLOCK_GEN		0x40
298#define CX0342_SOFT_RESET		0x41
299#define CX0342_PLL			0x42
300#define CX0342_DR_ENH_PULSE_OFFSET_L	0x43
301#define CX0342_DR_ENH_PULSE_OFFSET_H	0x44
302#define CX0342_DR_ENH_PULSE_POS_L	0x45
303#define CX0342_DR_ENH_PULSE_POS_H	0x46
304#define CX0342_DR_ENH_PULSE_WIDTH	0x47
305#define CX0342_AS_CURRENT_CNT_L		0x48
306#define CX0342_AS_CURRENT_CNT_H		0x49
307#define CX0342_AS_PREVIOUS_CNT_L	0x4a
308#define CX0342_AS_PREVIOUS_CNT_H	0x4b
309#define CX0342_SPV_VALUE_L		0x4c
310#define CX0342_SPV_VALUE_H		0x4d
311#define CX0342_GPXLTHD_L		0x50
312#define CX0342_GPXLTHD_H		0x51
313#define CX0342_RBPXLTHD_L		0x52
314#define CX0342_RBPXLTHD_H		0x53
315#define CX0342_PLANETHD_L		0x54
316#define CX0342_PLANETHD_H		0x55
317#define CX0342_ROWDARK_TH		0x56
318#define CX0342_ROWDARK_TOL		0x57
319#define CX0342_RB_GAP_L			0x58
320#define CX0342_RB_GAP_H			0x59
321#define CX0342_G_GAP_L			0x5a
322#define CX0342_G_GAP_H			0x5b
323#define CX0342_AUTO_ROW_DARK		0x60
324#define CX0342_MANUAL_DARK_VALUE	0x61
325#define CX0342_GB_DARK_OFFSET		0x62
326#define CX0342_GR_DARK_OFFSET		0x63
327#define CX0342_RED_DARK_OFFSET		0x64
328#define CX0342_BLUE_DARK_OFFSET		0x65
329#define CX0342_DATA_SCALING_MULTI	0x66
330#define CX0342_AUTOD_Q_FRAME		0x67
331#define CX0342_AUTOD_ALLOW_VARI		0x68
332#define CX0342_AUTO_DARK_VALUE_L	0x69
333#define CX0342_AUTO_DARK_VALUE_H	0x6a
334#define CX0342_IO_CTRL_0		0x70
335#define CX0342_IO_CTRL_1		0x71
336#define CX0342_IO_CTRL_2		0x72
337#define CX0342_IDLE_CTRL		0x73
338#define CX0342_TEST_MODE		0x74
339#define CX0342_FRAME_FIX_DATA_TEST	0x75
340#define CX0342_FRAME_CNT_TEST		0x76
341#define CX0342_RST_OVERFLOW_L		0x80
342#define CX0342_RST_OVERFLOW_H		0x81
343#define CX0342_RST_UNDERFLOW_L		0x82
344#define CX0342_RST_UNDERFLOW_H		0x83
345#define CX0342_DATA_OVERFLOW_L		0x84
346#define CX0342_DATA_OVERFLOW_H		0x85
347#define CX0342_DATA_UNDERFLOW_L		0x86
348#define CX0342_DATA_UNDERFLOW_H		0x87
349#define CX0342_CHANNEL_0_0_L_irst	0x90
350#define CX0342_CHANNEL_0_0_H_irst	0x91
351#define CX0342_CHANNEL_0_1_L_irst	0x92
352#define CX0342_CHANNEL_0_1_H_irst	0x93
353#define CX0342_CHANNEL_0_2_L_irst	0x94
354#define CX0342_CHANNEL_0_2_H_irst	0x95
355#define CX0342_CHANNEL_0_3_L_irst	0x96
356#define CX0342_CHANNEL_0_3_H_irst	0x97
357#define CX0342_CHANNEL_0_4_L_irst	0x98
358#define CX0342_CHANNEL_0_4_H_irst	0x99
359#define CX0342_CHANNEL_0_5_L_irst	0x9a
360#define CX0342_CHANNEL_0_5_H_irst	0x9b
361#define CX0342_CHANNEL_0_6_L_irst	0x9c
362#define CX0342_CHANNEL_0_6_H_irst	0x9d
363#define CX0342_CHANNEL_0_7_L_irst	0x9e
364#define CX0342_CHANNEL_0_7_H_irst	0x9f
365#define CX0342_CHANNEL_1_0_L_itx	0xa0
366#define CX0342_CHANNEL_1_0_H_itx	0xa1
367#define CX0342_CHANNEL_1_1_L_itx	0xa2
368#define CX0342_CHANNEL_1_1_H_itx	0xa3
369#define CX0342_CHANNEL_1_2_L_itx	0xa4
370#define CX0342_CHANNEL_1_2_H_itx	0xa5
371#define CX0342_CHANNEL_1_3_L_itx	0xa6
372#define CX0342_CHANNEL_1_3_H_itx	0xa7
373#define CX0342_CHANNEL_1_4_L_itx	0xa8
374#define CX0342_CHANNEL_1_4_H_itx	0xa9
375#define CX0342_CHANNEL_1_5_L_itx	0xaa
376#define CX0342_CHANNEL_1_5_H_itx	0xab
377#define CX0342_CHANNEL_1_6_L_itx	0xac
378#define CX0342_CHANNEL_1_6_H_itx	0xad
379#define CX0342_CHANNEL_1_7_L_itx	0xae
380#define CX0342_CHANNEL_1_7_H_itx	0xaf
381#define CX0342_CHANNEL_2_0_L_iwl	0xb0
382#define CX0342_CHANNEL_2_0_H_iwl	0xb1
383#define CX0342_CHANNEL_2_1_L_iwl	0xb2
384#define CX0342_CHANNEL_2_1_H_iwl	0xb3
385#define CX0342_CHANNEL_2_2_L_iwl	0xb4
386#define CX0342_CHANNEL_2_2_H_iwl	0xb5
387#define CX0342_CHANNEL_2_3_L_iwl	0xb6
388#define CX0342_CHANNEL_2_3_H_iwl	0xb7
389#define CX0342_CHANNEL_2_4_L_iwl	0xb8
390#define CX0342_CHANNEL_2_4_H_iwl	0xb9
391#define CX0342_CHANNEL_2_5_L_iwl	0xba
392#define CX0342_CHANNEL_2_5_H_iwl	0xbb
393#define CX0342_CHANNEL_2_6_L_iwl	0xbc
394#define CX0342_CHANNEL_2_6_H_iwl	0xbd
395#define CX0342_CHANNEL_2_7_L_iwl	0xbe
396#define CX0342_CHANNEL_2_7_H_iwl	0xbf
397#define CX0342_CHANNEL_3_0_L_ensp	0xc0
398#define CX0342_CHANNEL_3_0_H_ensp	0xc1
399#define CX0342_CHANNEL_3_1_L_ensp	0xc2
400#define CX0342_CHANNEL_3_1_H_ensp	0xc3
401#define CX0342_CHANNEL_3_2_L_ensp	0xc4
402#define CX0342_CHANNEL_3_2_H_ensp	0xc5
403#define CX0342_CHANNEL_3_3_L_ensp	0xc6
404#define CX0342_CHANNEL_3_3_H_ensp	0xc7
405#define CX0342_CHANNEL_3_4_L_ensp	0xc8
406#define CX0342_CHANNEL_3_4_H_ensp	0xc9
407#define CX0342_CHANNEL_3_5_L_ensp	0xca
408#define CX0342_CHANNEL_3_5_H_ensp	0xcb
409#define CX0342_CHANNEL_3_6_L_ensp	0xcc
410#define CX0342_CHANNEL_3_6_H_ensp	0xcd
411#define CX0342_CHANNEL_3_7_L_ensp	0xce
412#define CX0342_CHANNEL_3_7_H_ensp	0xcf
413#define CX0342_CHANNEL_4_0_L_sela	0xd0
414#define CX0342_CHANNEL_4_0_H_sela	0xd1
415#define CX0342_CHANNEL_4_1_L_sela	0xd2
416#define CX0342_CHANNEL_4_1_H_sela	0xd3
417#define CX0342_CHANNEL_5_0_L_intla	0xe0
418#define CX0342_CHANNEL_5_0_H_intla	0xe1
419#define CX0342_CHANNEL_5_1_L_intla	0xe2
420#define CX0342_CHANNEL_5_1_H_intla	0xe3
421#define CX0342_CHANNEL_5_2_L_intla	0xe4
422#define CX0342_CHANNEL_5_2_H_intla	0xe5
423#define CX0342_CHANNEL_5_3_L_intla	0xe6
424#define CX0342_CHANNEL_5_3_H_intla	0xe7
425#define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
426#define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
427#define CX0342_CHANNEL_7_1_L_cds_pos	0xf2
428#define CX0342_CHANNEL_7_1_H_cds_pos	0xf3
429#define CX0342_SENSOR_HEIGHT_L		0xfb
430#define CX0342_SENSOR_HEIGHT_H		0xfc
431#define CX0342_SENSOR_WIDTH_L		0xfd
432#define CX0342_SENSOR_WIDTH_H		0xfe
433#define CX0342_VSYNC_HSYNC_READ		0xff
434
435struct cmd {
436	u8 reg;
437	u8 val;
438};
439
440static const u8 DQT[17][130] = {
441	/* Define quantization table (thanks to Thomas Kaiser) */
442	{			/* Quality 0 */
443	 0x00,
444	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
445	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
446	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
447	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
448	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
449	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
450	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
451	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
452	 0x01,
453	 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
454	 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
455	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
456	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
457	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
458	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
459	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
460	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
461	 },
462	{			/* Quality 1 */
463	 0x00,
464	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
465	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
466	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
467	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
468	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
469	 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
470	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
471	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
472	 0x01,
473	 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
474	 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
475	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
476	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
477	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
478	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
479	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
480	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
481	 },
482	{			/* Quality 2 */
483	 0x00,
484	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
485	 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
486	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
487	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
488	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
489	 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
490	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
491	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
492	 0x01,
493	 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
494	 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
495	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
496	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
497	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
498	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
499	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
500	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
501	 },
502	{			/* Quality 3 */
503	 0x00,
504	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
505	 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
506	 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
507	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
508	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
509	 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
510	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
511	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
512	 0x01,
513	 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
514	 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
515	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
516	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
517	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
518	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
519	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
520	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
521	 },
522	{			/* Quality 4 */
523	 0x00,
524	 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
525	 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
526	 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
527	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
528	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
529	 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
530	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
531	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
532	 0x01,
533	 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
534	 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
535	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
536	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
537	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
538	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
539	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
540	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
541	 },
542	{			/* Quality 5 */
543	 0x00,
544	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
545	 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
546	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
547	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
548	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
549	 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
550	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
551	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
552	 0x01,
553	 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
554	 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
555	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
556	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
557	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
558	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
559	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
560	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
561	 },
562	{			/* Quality 6 */
563	 0x00,
564	 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
565	 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
566	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
567	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
568	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
569	 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
570	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
571	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
572	 0x01,
573	 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
574	 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
575	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
576	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
577	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
578	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
579	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
580	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
581	 },
582	{			/* Quality 7 */
583	 0x00,
584	 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
585	 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
586	 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
587	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
588	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
589	 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
590	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
591	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
592	 0x01,
593	 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
594	 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
595	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
596	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
597	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
598	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
599	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
600	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
601	 },
602	{			/* Quality 8 */
603	 0x00,
604	 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
605	 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
606	 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
607	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
608	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
609	 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
610	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
611	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
612	 0x01,
613	 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
614	 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
615	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
616	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
617	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
618	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
619	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
620	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
621	 },
622	{			/* Quality 9 */
623	 0x00,
624	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
625	 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
626	 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
627	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
628	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
629	 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
630	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
631	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
632	 0x01,
633	 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
634	 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
635	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
636	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
637	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
638	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
639	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
640	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
641	 },
642	{			/* Quality 10 */
643	 0x00,
644	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
645	 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
646	 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
647	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
648	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
649	 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
650	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
651	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
652	 0x01,
653	 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
654	 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
655	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
656	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
657	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
658	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
659	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
660	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
661	 },
662	{			/* Quality 11 */
663	 0x00,
664	 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
665	 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
666	 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
667	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
668	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
669	 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
670	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
671	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
672	 0x01,
673	 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
674	 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
675	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
676	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
677	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
678	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
679	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
680	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
681	 },
682	{			/* Quality 12 */
683	 0x00,
684	 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
685	 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
686	 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
687	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
688	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
689	 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
690	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
691	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
692	 0x01,
693	 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
694	 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
695	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
696	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
697	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
698	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
699	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
700	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
701	 },
702	{			/* Quality 13 */
703	 0x00,
704	 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
705	 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
706	 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
707	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
708	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
709	 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
710	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
711	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
712	 0x01,
713	 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
714	 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
715	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
716	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
717	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
718	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
719	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
720	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
721	 },
722	{			/* Quality 14 */
723	 0x00,
724	 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
725	 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
726	 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
727	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
728	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
729	 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
730	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
731	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
732	 0x01,
733	 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
734	 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
735	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
736	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
737	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
738	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
739	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
740	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
741	 },
742	{			/* Quality 15 */
743	 0x00,
744	 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
745	 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
746	 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
747	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
748	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
749	 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
750	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
751	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
752	 0x01,
753	 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
754	 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
755	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
756	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
757	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
758	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
759	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
760	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
761	 },
762	{			/* Quality 16-31 */
763	 0x00,
764	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
765	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
766	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
767	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
768	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
769	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
770	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
771	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
772	 0x01,
773	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
774	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
775	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
776	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
777	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
778	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
779	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
780	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
781	 }
782};
783
784static const struct cmd tp6810_cx_init_common[] = {
785	{0x1c, 0x00},
786	{TP6800_R10_SIF_TYPE, 0x00},
787	{0x4e, 0x00},
788	{0x4f, 0x00},
789	{TP6800_R50, 0xff},
790	{TP6800_R51, 0x03},
791	{0x00, 0x07},
792	{TP6800_R79_QUALITY, 0x03},
793	{TP6800_R2F_TIMING_CFG, 0x37},
794	{TP6800_R30_SENSOR_CFG, 0x10},
795	{TP6800_R21_ENDP_1_CTL, 0x00},
796	{TP6800_R52, 0x40},
797	{TP6800_R53, 0x40},
798	{TP6800_R54_DARK_CFG, 0x40},
799	{TP6800_R30_SENSOR_CFG, 0x18},
800	{0x4b, 0x00},
801	{TP6800_R3F_FRAME_RATE, 0x83},
802	{TP6800_R79_QUALITY, 0x05},
803	{TP6800_R21_ENDP_1_CTL, 0x00},
804	{0x7c, 0x04},
805	{0x25, 0x14},
806	{0x26, 0x0f},
807	{0x7b, 0x10},
808};
809
810static const struct cmd tp6810_ov_init_common[] = {
811	{0x1c, 0x00},
812	{TP6800_R10_SIF_TYPE, 0x00},
813	{0x4e, 0x00},
814	{0x4f, 0x00},
815	{TP6800_R50, 0xff},
816	{TP6800_R51, 0x03},
817	{0x00, 0x07},
818	{TP6800_R52, 0x40},
819	{TP6800_R53, 0x40},
820	{TP6800_R54_DARK_CFG, 0x40},
821	{TP6800_R79_QUALITY, 0x03},
822	{TP6800_R2F_TIMING_CFG, 0x17},
823	{TP6800_R30_SENSOR_CFG, 0x18},
824	{TP6800_R21_ENDP_1_CTL, 0x00},
825	{TP6800_R3F_FRAME_RATE, 0x86},
826	{0x25, 0x18},
827	{0x26, 0x0f},
828	{0x7b, 0x90},
829};
830
831static const struct cmd tp6810_bridge_start[] = {
832	{0x59, 0x88},
833	{0x5a, 0x0f},
834	{0x5b, 0x4e},
835	{TP6800_R5C_EDGE_THRLD, 0x63},
836	{TP6800_R5D_DEMOSAIC_CFG, 0x00},
837	{0x03, 0x7f},
838	{0x04, 0x80},
839	{0x06, 0x00},
840	{0x00, 0x00},
841};
842
843static const struct cmd tp6810_late_start[] = {
844	{0x7d, 0x01},
845	{0xb0, 0x04},
846	{0xb1, 0x04},
847	{0xb2, 0x04},
848	{0xb3, 0x04},
849	{0xb4, 0x04},
850	{0xb5, 0x04},
851	{0xb6, 0x08},
852	{0xb7, 0x08},
853	{0xb8, 0x04},
854	{0xb9, 0x04},
855	{0xba, 0x04},
856	{0xbb, 0x04},
857	{0xbc, 0x04},
858	{0xbd, 0x08},
859	{0xbe, 0x08},
860	{0xbf, 0x08},
861	{0xc0, 0x04},
862	{0xc1, 0x04},
863	{0xc2, 0x08},
864	{0xc3, 0x08},
865	{0xc4, 0x08},
866	{0xc5, 0x08},
867	{0xc6, 0x08},
868	{0xc7, 0x13},
869	{0xc8, 0x04},
870	{0xc9, 0x08},
871	{0xca, 0x08},
872	{0xcb, 0x08},
873	{0xcc, 0x08},
874	{0xcd, 0x08},
875	{0xce, 0x13},
876	{0xcf, 0x13},
877	{0xd0, 0x08},
878	{0xd1, 0x08},
879	{0xd2, 0x08},
880	{0xd3, 0x08},
881	{0xd4, 0x08},
882	{0xd5, 0x13},
883	{0xd6, 0x13},
884	{0xd7, 0x13},
885	{0xd8, 0x08},
886	{0xd9, 0x08},
887	{0xda, 0x08},
888	{0xdb, 0x08},
889	{0xdc, 0x13},
890	{0xdd, 0x13},
891	{0xde, 0x13},
892	{0xdf, 0x13},
893	{0xe0, 0x08},
894	{0xe1, 0x08},
895	{0xe2, 0x08},
896	{0xe3, 0x13},
897	{0xe4, 0x13},
898	{0xe5, 0x13},
899	{0xe6, 0x13},
900	{0xe7, 0x13},
901	{0xe8, 0x08},
902	{0xe9, 0x08},
903	{0xea, 0x13},
904	{0xeb, 0x13},
905	{0xec, 0x13},
906	{0xed, 0x13},
907	{0xee, 0x13},
908	{0xef, 0x13},
909	{0x7d, 0x02},
910
911	/* later after isoc start */
912	{0x7d, 0x08},
913	{0x7d, 0x00},
914};
915
916static const struct cmd cx0342_timing_seq[] = {
917	{CX0342_CHANNEL_0_1_L_irst, 0x20},
918	{CX0342_CHANNEL_0_2_L_irst, 0x24},
919	{CX0342_CHANNEL_0_2_H_irst, 0x00},
920	{CX0342_CHANNEL_0_3_L_irst, 0x2f},
921	{CX0342_CHANNEL_0_3_H_irst, 0x00},
922	{CX0342_CHANNEL_1_0_L_itx, 0x02},
923	{CX0342_CHANNEL_1_0_H_itx, 0x00},
924	{CX0342_CHANNEL_1_1_L_itx, 0x20},
925	{CX0342_CHANNEL_1_1_H_itx, 0x00},
926	{CX0342_CHANNEL_1_2_L_itx, 0xe4},
927	{CX0342_CHANNEL_1_2_H_itx, 0x00},
928	{CX0342_CHANNEL_1_3_L_itx, 0xee},
929	{CX0342_CHANNEL_1_3_H_itx, 0x00},
930	{CX0342_CHANNEL_2_0_L_iwl, 0x30},
931	{CX0342_CHANNEL_2_0_H_iwl, 0x00},
932	{CX0342_CHANNEL_3_0_L_ensp, 0x34},
933	{CX0342_CHANNEL_3_1_L_ensp, 0xe2},
934	{CX0342_CHANNEL_3_1_H_ensp, 0x00},
935	{CX0342_CHANNEL_3_2_L_ensp, 0xf6},
936	{CX0342_CHANNEL_3_2_H_ensp, 0x00},
937	{CX0342_CHANNEL_3_3_L_ensp, 0xf4},
938	{CX0342_CHANNEL_3_3_H_ensp, 0x02},
939	{CX0342_CHANNEL_4_0_L_sela, 0x26},
940	{CX0342_CHANNEL_4_0_H_sela, 0x00},
941	{CX0342_CHANNEL_4_1_L_sela, 0xe2},
942	{CX0342_CHANNEL_4_1_H_sela, 0x00},
943	{CX0342_CHANNEL_5_0_L_intla, 0x26},
944	{CX0342_CHANNEL_5_1_L_intla, 0x29},
945	{CX0342_CHANNEL_5_2_L_intla, 0xf0},
946	{CX0342_CHANNEL_5_2_H_intla, 0x00},
947	{CX0342_CHANNEL_5_3_L_intla, 0xf3},
948	{CX0342_CHANNEL_5_3_H_intla, 0x00},
949	{CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
950	{CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
951	{CX0342_TIMING_EN, 0x01},
952};
953
954/* define the JPEG header */
955static void jpeg_define(u8 *jpeg_hdr,
956			int height,
957			int width)
958{
959	memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
960	jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
961	jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
962	jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
963	jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
964}
965
966/* set the JPEG quality for sensor soi763a */
967static void jpeg_set_qual(u8 *jpeg_hdr,
968			  int quality)
969{
970	int i, sc;
971
972	if (quality <= 0)
973		sc = 5000;
974	else if (quality < 50)
975		sc = 5000 / quality;
976	else
977		sc = 200 - quality * 2;
978	for (i = 0; i < 64; i++) {
979		jpeg_hdr[JPEG_QT0_OFFSET + i] =
980			(jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
981		jpeg_hdr[JPEG_QT1_OFFSET + i] =
982			(jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
983	}
984}
985
986static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
987{
988	struct usb_device *dev = gspca_dev->dev;
989	int ret;
990
991	if (gspca_dev->usb_err < 0)
992		return;
993	ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
994			0x0e,
995			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
996			value, index, NULL, 0, 500);
997	if (ret < 0) {
998		pr_err("reg_w err %d\n", ret);
999		gspca_dev->usb_err = ret;
1000	}
1001}
1002
1003/* the returned value is in gspca_dev->usb_buf */
1004static void reg_r(struct gspca_dev *gspca_dev, u8 index)
1005{
1006	struct usb_device *dev = gspca_dev->dev;
1007	int ret;
1008
1009	if (gspca_dev->usb_err < 0)
1010		return;
1011	ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1012			0x0d,
1013			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1014			0, index, gspca_dev->usb_buf, 1, 500);
1015	if (ret < 0) {
1016		pr_err("reg_r err %d\n", ret);
1017		gspca_dev->usb_err = ret;
1018	}
1019}
1020
1021static void reg_w_buf(struct gspca_dev *gspca_dev,
1022			const struct cmd *p, int l)
1023{
1024	do {
1025		reg_w(gspca_dev, p->reg, p->val);
1026		p++;
1027	} while (--l > 0);
1028}
1029
1030static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1031{
1032	struct sd *sd = (struct sd *) gspca_dev;
1033
1034	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1035	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1036	reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1037	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1038	if (sd->bridge == BRIDGE_TP6800)
1039		return 0;
1040	msleep(5);
1041	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1042	if (gspca_dev->usb_buf[0] == 0)
1043		return 0;
1044	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1045	return -1;				/* error */
1046}
1047
1048static void i2c_w_buf(struct gspca_dev *gspca_dev,
1049			const struct cmd *p, int l)
1050{
1051	do {
1052		i2c_w(gspca_dev, p->reg, p->val);
1053		p++;
1054	} while (--l > 0);
1055}
1056
1057static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1058{
1059	struct sd *sd = (struct sd *) gspca_dev;
1060	int v;
1061
1062	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1063	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1064	msleep(5);
1065	reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1066	v = gspca_dev->usb_buf[0];
1067	if (sd->bridge == BRIDGE_TP6800)
1068		return v;
1069	if (len > 1) {
1070		reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1071		v |= (gspca_dev->usb_buf[0] << 8);
1072	}
1073	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1074	if (gspca_dev->usb_buf[0] == 0)
1075		return v;
1076	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1077	return -1;
1078}
1079
1080static void bulk_w(struct gspca_dev *gspca_dev,
1081		  u8 tag,
1082		  const u8 *data,
1083		  int length)
1084{
1085	struct usb_device *dev = gspca_dev->dev;
1086	int count, actual_count, ret;
1087
1088	if (gspca_dev->usb_err < 0)
1089		return;
1090	for (;;) {
1091		count = length > BULK_OUT_SIZE - 1
1092				? BULK_OUT_SIZE - 1 : length;
1093		gspca_dev->usb_buf[0] = tag;
1094		memcpy(&gspca_dev->usb_buf[1], data, count);
1095		ret = usb_bulk_msg(dev,
1096				   usb_sndbulkpipe(dev, 3),
1097				   gspca_dev->usb_buf, count + 1,
1098				   &actual_count, 500);
1099		if (ret < 0) {
1100			pr_err("bulk write error %d tag=%02x\n",
1101				ret, tag);
1102			gspca_dev->usb_err = ret;
1103			return;
1104		}
1105		length -= count;
1106		if (length <= 0)
1107			break;
1108		data += count;
1109	}
1110}
1111
1112static int probe_6810(struct gspca_dev *gspca_dev)
1113{
1114	u8 gpio;
1115	int ret;
1116
1117	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1118	gpio = gspca_dev->usb_buf[0];
1119	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1120	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1121	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1122	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1123	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);	/* ov??? */
1124	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1125	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1126		return SENSOR_SOI763A;
1127
1128	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1129	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1130	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f);	/* (unknown i2c) */
1131	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1132		return -2;
1133
1134	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1135	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1136	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1137	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1138	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11);	/* tas??? / hv??? */
1139	ret = i2c_r(gspca_dev, 0x00, 1);
1140	if (ret > 0)
1141		return -3;
1142
1143	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1144	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1145	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1146	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e);	/* po??? */
1147	ret = i2c_r(gspca_dev, 0x00, 1);
1148	if (ret > 0)
1149		return -4;
1150
1151	ret = i2c_r(gspca_dev, 0x01, 1);
1152	if (ret > 0)
1153		return -5;
1154
1155	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1156	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1157	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1158	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1159	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d);	/* mi/mt??? */
1160	ret = i2c_r(gspca_dev, 0x00, 2);
1161	if (ret > 0)
1162		return -6;
1163
1164	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1165	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1166	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1167	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c);	/* mi/mt??? */
1168	ret = i2c_r(gspca_dev, 0x36, 2);
1169	if (ret > 0)
1170		return -7;
1171
1172	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1173	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1174	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1175	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61);	/* (unknown i2c) */
1176	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1177	if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1178		return -8;
1179
1180	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1181	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1182	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1183	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1184	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 */
1185	ret = i2c_r(gspca_dev, 0x00, 1);
1186	if (ret > 0)
1187		return SENSOR_CX0342;
1188	return -9;
1189}
1190
1191static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1192{
1193	static const struct cmd reg_init_1[] = {
1194		{TP6800_R2F_TIMING_CFG, 0x2f},
1195		{0x25, 0x02},
1196		{TP6800_R21_ENDP_1_CTL, 0x00},
1197		{TP6800_R3F_FRAME_RATE, 0x80},
1198		{TP6800_R2F_TIMING_CFG, 0x2f},
1199		{TP6800_R18_GPIO_DATA, 0xe1},
1200		{TP6800_R18_GPIO_DATA, 0xc1},
1201		{TP6800_R18_GPIO_DATA, 0xe1},
1202		{TP6800_R11_SIF_CONTROL, 0x00},
1203	};
1204	static const struct cmd reg_init_2[] = {
1205		{TP6800_R78_FORMAT, 0x48},
1206		{TP6800_R11_SIF_CONTROL, 0x00},
1207	};
1208	static const struct cmd sensor_init[] = {
1209		{CX0342_OUTPUT_CTRL, 0x07},
1210		{CX0342_BYPASS_MODE, 0x58},
1211		{CX0342_GPXLTHD_L, 0x28},
1212		{CX0342_RBPXLTHD_L, 0x28},
1213		{CX0342_PLANETHD_L, 0x50},
1214		{CX0342_PLANETHD_H, 0x03},
1215		{CX0342_RB_GAP_L, 0xff},
1216		{CX0342_RB_GAP_H, 0x07},
1217		{CX0342_G_GAP_L, 0xff},
1218		{CX0342_G_GAP_H, 0x07},
1219		{CX0342_RST_OVERFLOW_L, 0x5c},
1220		{CX0342_RST_OVERFLOW_H, 0x01},
1221		{CX0342_DATA_OVERFLOW_L, 0xfc},
1222		{CX0342_DATA_OVERFLOW_H, 0x03},
1223		{CX0342_DATA_UNDERFLOW_L, 0x00},
1224		{CX0342_DATA_UNDERFLOW_H, 0x00},
1225		{CX0342_SYS_CTRL_0, 0x40},
1226		{CX0342_GLOBAL_GAIN, 0x01},
1227		{CX0342_CLOCK_GEN, 0x00},
1228		{CX0342_SYS_CTRL_0, 0x02},
1229		{CX0342_IDLE_CTRL, 0x05},
1230		{CX0342_ADCGN, 0x00},
1231		{CX0342_ADC_CTL, 0x00},
1232		{CX0342_LVRST_BLBIAS, 0x01},
1233		{CX0342_VTHSEL, 0x0b},
1234		{CX0342_RAMP_RIV, 0x0b},
1235		{CX0342_LDOSEL, 0x07},
1236		{CX0342_SPV_VALUE_L, 0x40},
1237		{CX0342_SPV_VALUE_H, 0x02},
1238
1239		{CX0342_AUTO_ADC_CALIB, 0x81},
1240		{CX0342_TIMING_EN, 0x01},
1241	};
1242
1243	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1244	reg_w_buf(gspca_dev, tp6810_cx_init_common,
1245			ARRAY_SIZE(tp6810_cx_init_common));
1246	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1247
1248	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 I2C addr */
1249	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1250	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1251}
1252
1253static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1254{
1255	static const struct cmd reg_init_1[] = {
1256		{TP6800_R2F_TIMING_CFG, 0x2f},
1257		{TP6800_R18_GPIO_DATA, 0xe1},
1258		{0x25, 0x02},
1259		{TP6800_R21_ENDP_1_CTL, 0x00},
1260		{TP6800_R3F_FRAME_RATE, 0x80},
1261		{TP6800_R2F_TIMING_CFG, 0x2f},
1262		{TP6800_R18_GPIO_DATA, 0xc1},
1263	};
1264	static const struct cmd reg_init_2[] = {
1265		{TP6800_R78_FORMAT, 0x54},
1266	};
1267	static const struct cmd sensor_init[] = {
1268		{0x00, 0x00},
1269		{0x01, 0x80},
1270		{0x02, 0x80},
1271		{0x03, 0x90},
1272		{0x04, 0x20},
1273		{0x05, 0x20},
1274		{0x06, 0x80},
1275		{0x07, 0x00},
1276		{0x08, 0xff},
1277		{0x09, 0xff},
1278		{0x0a, 0x76},		/* 7630 = soi673a */
1279		{0x0b, 0x30},
1280		{0x0c, 0x20},
1281		{0x0d, 0x20},
1282		{0x0e, 0xff},
1283		{0x0f, 0xff},
1284		{0x10, 0x41},
1285		{0x15, 0x14},
1286		{0x11, 0x40},
1287		{0x12, 0x48},
1288		{0x13, 0x80},
1289		{0x14, 0x80},
1290		{0x16, 0x03},
1291		{0x28, 0xb0},
1292		{0x71, 0x20},
1293		{0x75, 0x8e},
1294		{0x17, 0x1b},
1295		{0x18, 0xbd},
1296		{0x19, 0x05},
1297		{0x1a, 0xf6},
1298		{0x1b, 0x04},
1299		{0x1c, 0x7f},		/* omnivision */
1300		{0x1d, 0xa2},
1301		{0x1e, 0x00},
1302		{0x1f, 0x00},
1303		{0x20, 0x45},
1304		{0x21, 0x80},
1305		{0x22, 0x80},
1306		{0x23, 0xee},
1307		{0x24, 0x50},
1308		{0x25, 0x7a},
1309		{0x26, 0xa0},
1310		{0x27, 0x9a},
1311		{0x29, 0x30},
1312		{0x2a, 0x80},
1313		{0x2b, 0x00},
1314		{0x2c, 0xac},
1315		{0x2d, 0x05},
1316		{0x2e, 0x80},
1317		{0x2f, 0x3c},
1318		{0x30, 0x22},
1319		{0x31, 0x00},
1320		{0x32, 0x86},
1321		{0x33, 0x08},
1322		{0x34, 0xff},
1323		{0x35, 0xff},
1324		{0x36, 0xff},
1325		{0x37, 0xff},
1326		{0x38, 0xff},
1327		{0x39, 0xff},
1328		{0x3a, 0xfe},
1329		{0x3b, 0xfe},
1330		{0x3c, 0xfe},
1331		{0x3d, 0xfe},
1332		{0x3e, 0xfe},
1333		{0x3f, 0x71},
1334		{0x40, 0xff},
1335		{0x41, 0xff},
1336		{0x42, 0xff},
1337		{0x43, 0xff},
1338		{0x44, 0xff},
1339		{0x45, 0xff},
1340		{0x46, 0xff},
1341		{0x47, 0xff},
1342		{0x48, 0xff},
1343		{0x49, 0xff},
1344		{0x4a, 0xfe},
1345		{0x4b, 0xff},
1346		{0x4c, 0x00},
1347		{0x4d, 0x00},
1348		{0x4e, 0xff},
1349		{0x4f, 0xff},
1350		{0x50, 0xff},
1351		{0x51, 0xff},
1352		{0x52, 0xff},
1353		{0x53, 0xff},
1354		{0x54, 0xff},
1355		{0x55, 0xff},
1356		{0x56, 0xff},
1357		{0x57, 0xff},
1358		{0x58, 0xff},
1359		{0x59, 0xff},
1360		{0x5a, 0xff},
1361		{0x5b, 0xfe},
1362		{0x5c, 0xff},
1363		{0x5d, 0x8f},
1364		{0x5e, 0xff},
1365		{0x5f, 0x8f},
1366		{0x60, 0xa2},
1367		{0x61, 0x4a},
1368		{0x62, 0xf3},
1369		{0x63, 0x75},
1370		{0x64, 0xf0},
1371		{0x65, 0x00},
1372		{0x66, 0x55},
1373		{0x67, 0x92},
1374		{0x68, 0xa0},
1375		{0x69, 0x4a},
1376		{0x6a, 0x22},
1377		{0x6b, 0x00},
1378		{0x6c, 0x33},
1379		{0x6d, 0x44},
1380		{0x6e, 0x22},
1381		{0x6f, 0x84},
1382		{0x70, 0x0b},
1383		{0x72, 0x10},
1384		{0x73, 0x50},
1385		{0x74, 0x21},
1386		{0x76, 0x00},
1387		{0x77, 0xa5},
1388		{0x78, 0x80},
1389		{0x79, 0x80},
1390		{0x7a, 0x80},
1391		{0x7b, 0xe2},
1392		{0x7c, 0x00},
1393		{0x7d, 0xf7},
1394		{0x7e, 0x00},
1395		{0x7f, 0x00},
1396	};
1397
1398	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1399	reg_w_buf(gspca_dev, tp6810_ov_init_common,
1400			ARRAY_SIZE(tp6810_ov_init_common));
1401	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1402
1403	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
1404	msleep(10);
1405	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1406}
1407
1408/* set the gain and exposure */
1409static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain,
1410							s32 blue, s32 red)
1411{
1412	struct sd *sd = (struct sd *) gspca_dev;
1413
1414	if (sd->sensor == SENSOR_CX0342) {
1415		expo = (expo << 2) - 1;
1416		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1417		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1418		if (sd->bridge == BRIDGE_TP6800)
1419			i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1420						gain >> 8);
1421		i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain);
1422		if (sd->bridge == BRIDGE_TP6800)
1423			i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1424					gain >> 8);
1425		i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain);
1426		if (sd->sensor == SENSOR_CX0342) {
1427			if (sd->bridge == BRIDGE_TP6800)
1428				i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1429						blue >> 8);
1430			i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue);
1431			if (sd->bridge == BRIDGE_TP6800)
1432				i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1433						red >> 8);
1434			i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red);
1435		}
1436		i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1437				sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1438		return;
1439	}
1440
1441	/* soi763a */
1442	i2c_w(gspca_dev, 0x10,		/* AEC_H (exposure time) */
1443			 expo);
1444/*	i2c_w(gspca_dev, 0x76, 0x02);	 * AEC_L ([1:0] */
1445	i2c_w(gspca_dev, 0x00,		/* gain */
1446			 gain);
1447}
1448
1449/* set the JPEG quantization tables */
1450static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1451{
1452	struct sd *sd = (struct sd *) gspca_dev;
1453
1454	/* update the jpeg quantization tables */
1455	PDEBUG(D_STREAM, "q %d -> %d", sd->quality, q);
1456	sd->quality = q;
1457	if (q > 16)
1458		q = 16;
1459	if (sd->sensor == SENSOR_SOI763A)
1460		jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1461	else
1462		memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1463			DQT[q], sizeof DQT[0]);
1464}
1465
1466/* set the JPEG compression quality factor */
1467static void setquality(struct gspca_dev *gspca_dev, s32 q)
1468{
1469	struct sd *sd = (struct sd *) gspca_dev;
1470
1471	if (q != 16)
1472		q = 15 - q;
1473
1474	reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1475	reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1476	reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1477
1478	/* auto quality */
1479	if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1480		msleep(4);
1481		reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1482	}
1483}
1484
1485static const u8 color_null[18] = {
1486	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1487	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1488	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1489};
1490static const u8 color_gain[NSENSORS][18] = {
1491[SENSOR_CX0342] =
1492	{0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00,	/* Y R/G/B (LE values) */
1493	 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00,	/* U R/G/B */
1494	 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1495[SENSOR_SOI763A] =
1496	{0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00,	/* Y R/G/B (LE values) */
1497	 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00,	/* U R/G/B */
1498	 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1499};
1500
1501static void setgamma(struct gspca_dev *gspca_dev, s32 gamma)
1502{
1503	struct sd *sd = (struct sd *) gspca_dev;
1504#define NGAMMA 6
1505	static const u8 gamma_tb[NGAMMA][3][1024] = {
1506	    {				/* gamma 0 - from tp6800 + soi763a */
1507		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1508		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1509		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1510		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1511		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1512		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1513		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1514		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1515		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1516		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1517		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1518		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1519		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1520		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1521		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1522		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1523		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1524		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1525		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1526		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1527		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1528		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1529		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1530		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1531		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1532		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1533		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1534		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1535		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1536		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1537		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1538		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1539		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1540		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1541		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1542		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1543		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1544		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1545		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1546		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1547		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1548		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1549		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1550		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1551		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1552		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1553		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1554		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1555		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1556		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1557		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1558		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1559		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1560		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1561		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1562		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1563		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1564		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1565		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1566		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1567		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1568		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1569		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1570		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1571		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1572		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1573		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1574		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1575		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1576		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1577		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1578		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1579		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1580		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1581		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1582		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1583		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1584		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1585		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1586		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1587		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1588		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1589		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1590		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1591		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1592		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1593		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1594		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1595		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1596		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1597		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1598		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1599		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1600		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1601		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1602		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1603		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1604		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1605		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1606		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1607		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1608		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1609		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1610		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1611		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1612		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1613		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1614		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1615		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1616		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1617		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1618		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1619		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1620		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1624		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1625		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1626		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1627		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1628		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1629		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1630		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1631		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1632		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1633		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1634		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1635		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1636		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1637		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1638		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1639		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1640		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1641		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1642		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1643		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1644		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1645		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1646		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1647		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1648		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1649		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1650		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1651		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1652		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1653		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1654		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1655		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1656		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1657		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1658		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1659		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1660		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1661		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1662		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1663		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1664		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1665		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1666		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1667		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1668		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1669		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1670		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1671		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1672		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1673		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1674		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1675		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1676		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1677		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1678		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1679		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1680		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1681		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1682		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1683		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1684		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1685		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1686		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1687		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1688		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1689		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1690		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1691		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1692		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1693		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1694		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1695		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1696		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1697		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1698		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1699		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1700		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1701		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1702		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1703		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1704		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1705		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1706		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1707		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1708		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1709		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1710		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1711		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1712		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1713		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1714		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1715		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1716		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1717		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1718		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1719		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1720		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1721		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1722		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1723		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1724		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1725		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1726		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1727		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1728		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1729		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1730		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1731		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1732		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1733		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1734		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1735		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1736		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1737		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1738		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1739		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1740		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1741		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1742		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1743		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1744		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1745		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1746		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1747		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1748		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1752		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1753		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1754		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1755		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1756		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1757		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1758		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1759		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1760		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1761		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1762		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1763		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1764		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1765		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1766		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1767		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1768		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1769		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1770		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1771		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1772		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1773		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1774		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1775		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1776		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1777		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1778		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1779		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1780		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1781		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1782		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1783		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1784		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1785		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1786		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1787		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1788		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1789		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1790		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1791		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1792		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1793		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1794		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1795		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1796		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1797		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1798		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1799		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1800		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1801		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1802		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1803		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1804		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1805		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1806		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1807		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1808		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1809		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1810		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1811		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1812		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1813		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1814		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1815		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1816		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1817		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1818		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1819		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1820		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1821		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1822		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1823		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1824		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1825		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1826		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1827		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1828		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1829		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1830		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1831		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1832		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1833		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1834		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1835		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1836		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1837		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1838		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1839		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1840		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1841		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1842		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1843		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1844		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1845		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1846		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1847		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1848		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1849		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1850		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1851		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1852		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1853		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1854		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1855		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1856		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1857		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1858		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1859		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1860		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1861		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1862		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1863		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1864		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1865		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1866		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1867		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1868		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1869		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1870		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1871		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1872		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1873		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1874		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1875		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1876		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1880		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1881		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1882		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1883		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1884		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1885		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1886		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1887		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1888		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1889		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1890		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
1891	    },
1892	    {				/* gamma 1 - from tp6810 + soi763a */
1893		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1894		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1895		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1896		 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1897		 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1898		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1899		 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1900		 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1901		 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1902		 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1903		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1904		 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1905		 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1906		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1907		 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1908		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1909		 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1910		 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1911		 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1912		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1913		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1914		 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1915		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1916		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1917		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1918		 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1919		 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1920		 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1921		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1922		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1923		 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1924		 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1925		 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1926		 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1927		 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1928		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1929		 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1930		 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1931		 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1932		 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1933		 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1934		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1935		 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1936		 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1937		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1938		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1939		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1940		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1941		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1942		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1943		 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1944		 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1945		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1946		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1947		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1948		 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1949		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1950		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1951		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1952		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1953		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1954		 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1955		 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1956		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1957		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1958		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1959		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1960		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1961		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1962		 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1963		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1964		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1965		 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1966		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1967		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1968		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1969		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1970		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1971		 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1972		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1973		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1974		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1975		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1976		 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1977		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1978		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1979		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1980		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1981		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1982		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1983		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1984		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1985		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1986		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1987		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1988		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1989		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2010		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2011		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2012		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2015		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2016		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2017		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2018		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2019		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2020		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2021		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2022		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2023		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2024		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2025		 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2026		 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2027		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2028		 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2029		 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2030		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2031		 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2032		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2033		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2034		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2035		 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2036		 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2037		 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2038		 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2039		 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2040		 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2041		 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2042		 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2043		 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2044		 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2045		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2046		 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2047		 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2048		 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2049		 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2050		 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2051		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2052		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2053		 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2054		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2055		 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2056		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2057		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2058		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2059		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2060		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2061		 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2062		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2063		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2064		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2065		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2066		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2067		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2068		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2069		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2070		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2071		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2072		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2073		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2074		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2075		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2076		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2077		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2078		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2079		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2080		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2081		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2082		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2083		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2084		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2085		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2086		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2087		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2088		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2089		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2090		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2091		 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2092		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2093		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2094		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2095		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2096		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2097		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2098		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2099		 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2100		 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2101		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2102		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2103		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2104		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2105		 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2106		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2107		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2108		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2109		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2110		 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2111		 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2112		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2113		 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2114		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2115		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2116		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2117		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2118		 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2119		 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2120		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2121		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2122		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2123		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2124		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2125		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2126		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2127		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2128		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2129		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2130		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2131		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2138		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2139		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2140		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2141		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2142		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2143		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2144		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2145		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2146		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2147		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2148		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2149		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2150		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2151		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2152		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2153		 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2154		 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2155		 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2156		 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2157		 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2158		 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2159		 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2160		 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2161		 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2162		 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2163		 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2164		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2165		 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2166		 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2167		 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2168		 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2169		 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2170		 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2171		 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2172		 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2173		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2174		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2175		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2176		 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2177		 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2178		 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2179		 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2180		 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2181		 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2182		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2183		 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2184		 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2185		 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2186		 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2187		 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2188		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2189		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2190		 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2191		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2192		 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2193		 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2194		 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2195		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2196		 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2197		 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2198		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2199		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2200		 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2201		 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2202		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2203		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2204		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2205		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2206		 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2207		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2208		 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2209		 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2210		 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2211		 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2212		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2213		 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2214		 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2215		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2216		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2217		 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2218		 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2219		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2220		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2221		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2222		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2223		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2224		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2225		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2226		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2227		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2228		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2229		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2230		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2231		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2232		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2233		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2234		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2235		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2236		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2237		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2238		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2239		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2240		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2241		 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2242		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2243		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2244		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2245		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2246		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2247		 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2248		 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2249		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2250		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2251		 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2252		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2253		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2254		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2255		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2256		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2257		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2258		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2259		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2260		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2261		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2262		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2263		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2264		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2265		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2266		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2267		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2268		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2269		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2270		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2271		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2272		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2273		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2274		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2275		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2276		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2277	    },
2278	    {							/* gamma 2 */
2279		{0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2280		 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2281		 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2282		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2283		 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2284		 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2285		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2286		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2287		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2288		 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2289		 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2290		 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2291		 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2292		 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2293		 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2294		 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2295		 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2296		 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2297		 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2298		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2299		 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2300		 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2301		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2302		 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2303		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2304		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2305		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2306		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2307		 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2308		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2309		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2310		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2311		 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2312		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2313		 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2314		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2315		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2316		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2317		 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2318		 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2319		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2320		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2321		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2322		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2323		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2324		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2325		 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2326		 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2327		 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2328		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2329		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2330		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2331		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2332		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2333		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2334		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2335		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2336		 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2337		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2338		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2339		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2340		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2341		 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2342		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2343		 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2344		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2345		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2346		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2347		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2348		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2349		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2350		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2351		 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2352		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2353		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2354		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2355		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2356		 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2357		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2358		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2359		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2360		 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2361		 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2362		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2363		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2364		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2365		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2366		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2367		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2368		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2369		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2370		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2371		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2372		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2373		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2374		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2396		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2397		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2398		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2399		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2400		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2401		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2402		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2403		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2404		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2405		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2406		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2407		{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2408		 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2409		 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2410		 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2411		 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2412		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2413		 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2414		 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2415		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2416		 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2417		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2418		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2419		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2420		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2421		 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2422		 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2423		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2424		 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2425		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2426		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2427		 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2428		 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2429		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2430		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2431		 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2432		 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2433		 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2434		 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2435		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2436		 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2437		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2438		 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2439		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2440		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2441		 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2442		 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2443		 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2444		 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2445		 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2446		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2447		 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2448		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2449		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2450		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2451		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2452		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2453		 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2454		 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2455		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2456		 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2457		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2458		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2459		 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2460		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2461		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2462		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2463		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2464		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2465		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2466		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2467		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2468		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2469		 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2470		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2471		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2472		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2473		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2474		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2475		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2476		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2477		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2478		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2479		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2480		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2481		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2482		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2483		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2484		 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2485		 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2486		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2487		 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2488		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2489		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2490		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2491		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2492		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2493		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2494		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2495		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2496		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2497		 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2498		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2499		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2500		 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2501		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2502		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2503		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2504		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2505		 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2506		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2507		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2508		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2509		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2510		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2511		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2512		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2513		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2514		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2515		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2516		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2517		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2518		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2524		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2525		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2526		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2527		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2528		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2529		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2530		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2531		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2532		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2533		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2534		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2535		{0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2536		 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2537		 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2538		 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2539		 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2540		 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2541		 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2542		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2543		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2544		 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2545		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2546		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2547		 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2548		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2549		 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2550		 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2551		 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2552		 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2553		 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2554		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2555		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2556		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2557		 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2558		 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2559		 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2560		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2561		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2562		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2563		 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2564		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2565		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2566		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2567		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2568		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2569		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2570		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2571		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2572		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2573		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2574		 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2575		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2576		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2577		 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2578		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2579		 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2580		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2581		 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2582		 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2583		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2584		 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2585		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2586		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2587		 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2588		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2589		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2590		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2591		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2592		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2593		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2594		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2595		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2596		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2597		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2598		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2599		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2600		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2601		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2602		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2603		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2604		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2605		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2606		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2607		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2608		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2609		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2610		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2611		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2612		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2613		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2614		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2615		 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2616		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2617		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2618		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2619		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2620		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2621		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2622		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2623		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2624		 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2625		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2626		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2627		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2628		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2629		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2630		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2631		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2632		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2633		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2634		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2635		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2636		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2637		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2638		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2639		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2652		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2653		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2654		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2655		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2656		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2657		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2658		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2659		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2660		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2661		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2662		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2663	    },
2664	    {				/* gamma 3 - from tp6810 + cx0342 */
2665		{0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2666		 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2667		 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2668		 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2669		 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2670		 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2671		 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2672		 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2673		 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2674		 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2675		 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2676		 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2677		 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2678		 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2679		 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2680		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2681		 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2682		 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2683		 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2684		 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2685		 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2686		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2687		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2688		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2689		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2690		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2691		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2692		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2693		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2694		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2695		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2696		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2697		 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2698		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2699		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2700		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2701		 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2702		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2703		 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2704		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2705		 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2706		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2707		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2708		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2709		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2710		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2711		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2712		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2713		 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2714		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2715		 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2716		 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2717		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2718		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2719		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2720		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2721		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2722		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2723		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2724		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2725		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2726		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2727		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2728		 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2729		 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2730		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2731		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2732		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2733		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2734		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2735		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2736		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2737		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2738		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2739		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2740		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2741		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2783		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2786		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2789		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2790		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2793		{0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2794		 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2795		 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2796		 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2797		 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2798		 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2799		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2800		 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2801		 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2802		 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2803		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2804		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2805		 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2806		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2807		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2808		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2809		 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2810		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2811		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2812		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2813		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2814		 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2815		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2816		 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2817		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2818		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2819		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2820		 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2821		 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2822		 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2823		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2824		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2825		 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2826		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2827		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2828		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2829		 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2830		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2831		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2832		 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2833		 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2834		 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2835		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2836		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2837		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2838		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2839		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2840		 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2841		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2842		 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2843		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2844		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2845		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2846		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2847		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2848		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2849		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2850		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2851		 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2852		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2853		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2854		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2855		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2856		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2857		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2858		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2859		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2860		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2861		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2862		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2863		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2864		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2865		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2866		 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2867		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2868		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2869		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2870		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2871		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2872		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2873		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2874		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2875		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2876		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2877		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2878		 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2879		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2880		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2881		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2882		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2883		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2884		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2885		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2886		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2887		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2888		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2889		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2890		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2891		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2892		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2893		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2910		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2912		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2913		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2915		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2916		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2920		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2921		{0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2922		 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2923		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2924		 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2925		 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2926		 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2927		 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2928		 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2929		 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2930		 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2931		 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2932		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2933		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2934		 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2935		 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2936		 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2937		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2938		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2939		 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2940		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2941		 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2942		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2943		 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2944		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2945		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2946		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2947		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2948		 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2949		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2950		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2951		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2952		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2953		 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2954		 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2955		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2956		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2957		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2958		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2959		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2960		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2961		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2962		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2963		 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2964		 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2965		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2966		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2967		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2968		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2969		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2970		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2971		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2972		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2973		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2974		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2975		 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2976		 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2977		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2978		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2979		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2980		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2981		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2982		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2983		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2984		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2985		 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2986		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2987		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2988		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
2989		 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
2990		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2991		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2992		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2993		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2994		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2995		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2996		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2997		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2998		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2999		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3000		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3001		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3038		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3039		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3040		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3042		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3043		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3045		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3046		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3048		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3049	    },
3050	    {				/* gamma 4 - from tp6800 + soi763a */
3051		{0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3052		 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3053		 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3054		 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3055		 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3056		 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3057		 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3058		 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3059		 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3060		 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3061		 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3062		 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3063		 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3064		 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3065		 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3066		 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3067		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3068		 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3069		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3070		 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3071		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3072		 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3073		 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3074		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3075		 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3076		 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3077		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3078		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3079		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3080		 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3081		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3082		 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3083		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3084		 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3085		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3086		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3087		 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3088		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3089		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3090		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3091		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3092		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3093		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3094		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3095		 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3096		 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3097		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3098		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3099		 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3100		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3101		 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3102		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3103		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3104		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3105		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3106		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3107		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3108		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3109		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3110		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3111		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3112		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3113		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3168		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3169		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3170		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3171		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3172		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3173		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3174		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3175		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3176		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3177		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3178		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3179		{0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3180		 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3181		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3182		 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3183		 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3184		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3185		 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3186		 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3187		 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3188		 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3189		 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3190		 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3191		 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3192		 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3193		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3194		 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3195		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3196		 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3197		 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3198		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3199		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3200		 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3201		 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3202		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3203		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3204		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3205		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3206		 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3207		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3208		 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3209		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3210		 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3211		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3212		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3213		 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3214		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3215		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3216		 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3217		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3218		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3219		 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3220		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3221		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3222		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3223		 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3224		 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3225		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3226		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3227		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3228		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3229		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3230		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3231		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3232		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3233		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3234		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3235		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3236		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3237		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3238		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3239		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3240		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3241		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3242		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3243		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3244		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3245		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3246		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3247		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3248		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3249		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3250		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3251		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3252		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3253		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3254		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3255		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3256		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3257		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3258		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3259		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3260		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3261		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3262		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3263		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3264		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3265		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3296		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3297		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3298		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3299		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3300		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3301		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3302		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3303		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3304		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3305		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3306		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3307		{0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3308		 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3309		 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3310		 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3311		 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3312		 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3313		 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3314		 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3315		 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3316		 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3317		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3318		 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3319		 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3320		 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3321		 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3322		 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3323		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3324		 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3325		 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3326		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3327		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3328		 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3329		 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3330		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3331		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3332		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3333		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3334		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3335		 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3336		 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3337		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3338		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3339		 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3340		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3341		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3342		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3343		 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3344		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3345		 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3346		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3347		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3348		 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3349		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3350		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3351		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3352		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3353		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3354		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3355		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3356		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3357		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3358		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3359		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3360		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3361		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3362		 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3363		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3364		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3365		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3366		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3367		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3368		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3369		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3370		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3371		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3372		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3373		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3374		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3375		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3376		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3377		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3378		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3424		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3425		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3426		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3427		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3428		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3429		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3430		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3431		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3432		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3433		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3434		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3435	    },
3436	    {							/* gamma 5 */
3437		{0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3438		 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3439		 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3440		 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3441		 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3442		 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3443		 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3444		 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3445		 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3446		 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3447		 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3448		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3449		 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3450		 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3451		 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3452		 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3453		 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3454		 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3455		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3456		 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3457		 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3458		 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3459		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3460		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3461		 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3462		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3463		 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3464		 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3465		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3466		 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3467		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3468		 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3469		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3470		 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3471		 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3472		 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3473		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3474		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3475		 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3476		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3477		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3478		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3479		 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3480		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3481		 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3482		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3483		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3484		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3485		 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3486		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3487		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3488		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3489		 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3490		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3491		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3492		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3493		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3494		 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3495		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3496		 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3497		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3498		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3499		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3500		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3501		 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3502		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3503		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3504		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3505		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3506		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3507		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3508		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3509		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3510		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3511		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3512		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3513		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3514		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3515		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3516		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3517		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3518		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3519		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3520		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3554		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3555		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3556		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3557		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3558		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3559		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3560		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3561		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3562		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3563		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3564		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3565		{0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3566		 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3567		 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3568		 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3569		 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3570		 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3571		 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3572		 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3573		 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3574		 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3575		 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3576		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3577		 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3578		 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3579		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3580		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3581		 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3582		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3583		 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3584		 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3585		 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3586		 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3587		 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3588		 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3589		 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3590		 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3591		 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3592		 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3593		 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3594		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3595		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3596		 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3597		 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3598		 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3599		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3600		 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3601		 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3602		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3603		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3604		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3605		 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3606		 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3607		 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3608		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3609		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3610		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3611		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3612		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3613		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3614		 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3615		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3616		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3617		 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3618		 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3619		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3620		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3621		 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3622		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3623		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3624		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3625		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3626		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3627		 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3628		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3629		 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3630		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3631		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3632		 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3633		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3634		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3635		 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3636		 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3637		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3638		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3639		 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3640		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3641		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3642		 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3643		 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3644		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3645		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3646		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3647		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3648		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3649		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3650		 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3651		 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3652		 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3653		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3654		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3655		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3656		 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3657		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3658		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3659		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3660		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3661		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3662		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3663		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3664		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3665		 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3666		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3667		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3668		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3669		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3670		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3671		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3672		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3673		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3674		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3675		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3676		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3682		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3683		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3684		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3685		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3686		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3687		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3688		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3689		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3690		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3691		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3692		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3693		{0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3694		 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3695		 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3696		 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3697		 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3698		 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3699		 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3700		 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3701		 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3702		 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3703		 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3704		 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3705		 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3706		 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3707		 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3708		 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3709		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3710		 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3711		 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3712		 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3713		 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3714		 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3715		 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3716		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3717		 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3718		 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3719		 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3720		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3721		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3722		 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3723		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3724		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3725		 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3726		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3727		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3728		 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3729		 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3730		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3731		 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3732		 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3733		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3734		 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3735		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3736		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3737		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3738		 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3739		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3740		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3741		 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3742		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3743		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3744		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3745		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3746		 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3747		 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3748		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3749		 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3750		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3751		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3752		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3753		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3754		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3755		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3756		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3757		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3758		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3759		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3760		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3761		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3762		 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3763		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3764		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3765		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3766		 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3767		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3768		 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3769		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3770		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3771		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3772		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3773		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3774		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3775		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3776		 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3777		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3778		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3779		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3780		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3781		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3782		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3783		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3784		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3785		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3786		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3787		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3810		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3811		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3812		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3813		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3814		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3815		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3816		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3817		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3818		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3819		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3820		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3821	    },
3822	};
3823
3824	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3825	if (sd->bridge == BRIDGE_TP6810)
3826		reg_w(gspca_dev, 0x02, 0x28);
3827/*	msleep(50); */
3828	bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3829	bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3830	bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3831	if (sd->bridge == BRIDGE_TP6810) {
3832		int i;
3833
3834		reg_w(gspca_dev, 0x02, 0x2b);
3835		reg_w(gspca_dev, 0x02, 0x28);
3836		for (i = 0; i < 6; i++)
3837			reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3838				gamma_tb[gamma][0][i]);
3839		reg_w(gspca_dev, 0x02, 0x2b);
3840		reg_w(gspca_dev, 0x02, 0x28);
3841		for (i = 0; i < 6; i++)
3842			reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3843				gamma_tb[gamma][1][i]);
3844		reg_w(gspca_dev, 0x02, 0x2b);
3845		reg_w(gspca_dev, 0x02, 0x28);
3846		for (i = 0; i < 6; i++)
3847			reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3848				gamma_tb[gamma][2][i]);
3849		reg_w(gspca_dev, 0x02, 0x28);
3850	}
3851	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3852/*	msleep(50); */
3853}
3854
3855static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
3856{
3857	struct sd *sd = (struct sd *) gspca_dev;
3858
3859	if (sd->bridge == BRIDGE_TP6800) {
3860		val |= 0x08;		/* grid compensation enable */
3861		if (gspca_dev->pixfmt.width == 640)
3862			reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3863		else
3864			val |= 0x04;		/* scaling down enable */
3865		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3866	} else {
3867		val = (val << 5) | 0x08;
3868		reg_w(gspca_dev, 0x59, val);
3869	}
3870}
3871
3872static void setautogain(struct gspca_dev *gspca_dev, s32 val)
3873{
3874	struct sd *sd = (struct sd *) gspca_dev;
3875
3876	sd->ag_cnt = val ? AG_CNT_START : -1;
3877}
3878
3879/* set the resolution for sensor cx0342 */
3880static void set_resolution(struct gspca_dev *gspca_dev)
3881{
3882	struct sd *sd = (struct sd *) gspca_dev;
3883
3884	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3885	if (gspca_dev->pixfmt.width == 320) {
3886		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3887		msleep(100);
3888		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3889		msleep(100);
3890		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3891		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
3892		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3893		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3894		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3895	} else {
3896		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3897		msleep(100);
3898		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3899		msleep(100);
3900		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3901		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
3902		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3903		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3904		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3905	}
3906	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3907	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3908				ARRAY_SIZE(color_gain[0]));
3909	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
3910	if (sd->sensor == SENSOR_SOI763A)
3911		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
3912}
3913
3914/* convert the frame rate to a tp68x0 value */
3915static int get_fr_idx(struct gspca_dev *gspca_dev)
3916{
3917	struct sd *sd = (struct sd *) gspca_dev;
3918	int i;
3919
3920	if (sd->bridge == BRIDGE_TP6800) {
3921		for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3922			if (sd->framerate >= rates[i])
3923				break;
3924		}
3925		i = 6 - i;		/* 1 = 5fps .. 6 = 30fps */
3926
3927		/* 640x480 * 30 fps does not work */
3928		if (i == 6			/* if 30 fps */
3929		 && gspca_dev->pixfmt.width == 640)
3930			i = 0x05;		/* 15 fps */
3931	} else {
3932		for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3933			if (sd->framerate >= rates_6810[i])
3934				break;
3935		}
3936		i = 7 - i;		/* 3 = 5fps .. 7 = 30fps */
3937
3938		/* 640x480 * 30 fps does not work */
3939		if (i == 7			/* if 30 fps */
3940		 && gspca_dev->pixfmt.width == 640)
3941			i = 6;			/* 15 fps */
3942		i |= 0x80;			/* clock * 1 */
3943	}
3944	return i;
3945}
3946
3947static void setframerate(struct gspca_dev *gspca_dev, s32 val)
3948{
3949	struct sd *sd = (struct sd *) gspca_dev;
3950	u8 fr_idx;
3951
3952	fr_idx = get_fr_idx(gspca_dev);
3953
3954	if (sd->bridge == BRIDGE_TP6810) {
3955		reg_r(gspca_dev, 0x7b);
3956		reg_w(gspca_dev, 0x7b,
3957			sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3958		if (val >= 128)
3959			fr_idx = 0xf0;		/* lower frame rate */
3960	}
3961
3962	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3963
3964	if (sd->sensor == SENSOR_CX0342)
3965		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3966}
3967
3968static void setrgain(struct gspca_dev *gspca_dev, s32 rgain)
3969{
3970	i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3971	i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3972	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3973}
3974
3975static int sd_setgain(struct gspca_dev *gspca_dev)
3976{
3977	struct sd *sd = (struct sd *) gspca_dev;
3978	s32 val = gspca_dev->gain->val;
3979
3980	if (sd->sensor == SENSOR_CX0342) {
3981		s32 old = gspca_dev->gain->cur.val ?
3982					gspca_dev->gain->cur.val : 1;
3983
3984		sd->blue->val = sd->blue->val * val / old;
3985		if (sd->blue->val > 4095)
3986			sd->blue->val = 4095;
3987		sd->red->val = sd->red->val * val / old;
3988		if (sd->red->val > 4095)
3989			sd->red->val = 4095;
3990	}
3991	if (gspca_dev->streaming) {
3992		if (sd->sensor == SENSOR_CX0342)
3993			setexposure(gspca_dev, gspca_dev->exposure->val,
3994					gspca_dev->gain->val,
3995					sd->blue->val, sd->red->val);
3996		else
3997			setexposure(gspca_dev, gspca_dev->exposure->val,
3998					gspca_dev->gain->val, 0, 0);
3999	}
4000	return gspca_dev->usb_err;
4001}
4002
4003static void setbgain(struct gspca_dev *gspca_dev, s32 bgain)
4004{
4005	i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
4006	i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
4007	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
4008}
4009
4010/* this function is called at probe time */
4011static int sd_config(struct gspca_dev *gspca_dev,
4012		     const struct usb_device_id *id)
4013{
4014	struct sd *sd = (struct sd *) gspca_dev;
4015
4016	sd->bridge = id->driver_info;
4017
4018	gspca_dev->cam.cam_mode = vga_mode;
4019	gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4020	gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4021			framerates : framerates_6810;
4022
4023	sd->framerate = 30;		/* default: 30 fps */
4024	return 0;
4025}
4026
4027/* this function is called at probe and resume time */
4028static int sd_init(struct gspca_dev *gspca_dev)
4029{
4030	struct sd *sd = (struct sd *) gspca_dev;
4031	static const struct cmd tp6800_preinit[] = {
4032		{TP6800_R10_SIF_TYPE, 0x01},	/* sif */
4033		{TP6800_R11_SIF_CONTROL, 0x01},
4034		{TP6800_R15_GPIO_PU, 0x9f},
4035		{TP6800_R16_GPIO_PD, 0x9f},
4036		{TP6800_R17_GPIO_IO, 0x80},
4037		{TP6800_R18_GPIO_DATA, 0x40},	/* LED off */
4038	};
4039	static const struct cmd tp6810_preinit[] = {
4040		{TP6800_R2F_TIMING_CFG, 0x2f},
4041		{TP6800_R15_GPIO_PU, 0x6f},
4042		{TP6800_R16_GPIO_PD, 0x40},
4043		{TP6800_R17_GPIO_IO, 0x9f},
4044		{TP6800_R18_GPIO_DATA, 0xc1},	/* LED off */
4045	};
4046
4047	if (sd->bridge == BRIDGE_TP6800)
4048		reg_w_buf(gspca_dev, tp6800_preinit,
4049				ARRAY_SIZE(tp6800_preinit));
4050	else
4051		reg_w_buf(gspca_dev, tp6810_preinit,
4052				ARRAY_SIZE(tp6810_preinit));
4053	msleep(15);
4054	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4055	PDEBUG(D_PROBE, "gpio: %02x", gspca_dev->usb_buf[0]);
4056/* values:
4057 *	0x80: snapshot button
4058 *	0x40: LED
4059 *	0x20: (bridge / sensor) reset for tp6810 ?
4060 *	0x07: sensor type ?
4061 */
4062
4063	/* guess the sensor type */
4064	if (force_sensor >= 0) {
4065		sd->sensor = force_sensor;
4066	} else {
4067		if (sd->bridge == BRIDGE_TP6800) {
4068/*fixme: not sure this is working*/
4069			switch (gspca_dev->usb_buf[0] & 0x07) {
4070			case 0:
4071				sd->sensor = SENSOR_SOI763A;
4072				break;
4073			case 1:
4074				sd->sensor = SENSOR_CX0342;
4075				break;
4076			}
4077		} else {
4078			int sensor;
4079
4080			sensor = probe_6810(gspca_dev);
4081			if (sensor < 0) {
4082				pr_warn("Unknown sensor %d - forced to soi763a\n",
4083					-sensor);
4084				sensor = SENSOR_SOI763A;
4085			}
4086			sd->sensor = sensor;
4087		}
4088	}
4089	if (sd->sensor == SENSOR_SOI763A) {
4090		pr_info("Sensor soi763a\n");
4091		if (sd->bridge == BRIDGE_TP6810) {
4092			soi763a_6810_init(gspca_dev);
4093		}
4094	} else {
4095		pr_info("Sensor cx0342\n");
4096		if (sd->bridge == BRIDGE_TP6810) {
4097			cx0342_6810_init(gspca_dev);
4098		}
4099	}
4100
4101	set_dqt(gspca_dev, 0);
4102	return 0;
4103}
4104
4105/* This function is called before choosing the alt setting */
4106static int sd_isoc_init(struct gspca_dev *gspca_dev)
4107{
4108	struct sd *sd = (struct sd *) gspca_dev;
4109	static const struct cmd cx_sensor_init[] = {
4110		{CX0342_AUTO_ADC_CALIB, 0x81},
4111		{CX0342_EXPO_LINE_L, 0x37},
4112		{CX0342_EXPO_LINE_H, 0x01},
4113		{CX0342_RAW_GRGAIN_L, 0x00},
4114		{CX0342_RAW_GBGAIN_L, 0x00},
4115		{CX0342_RAW_RGAIN_L, 0x00},
4116		{CX0342_RAW_BGAIN_L, 0x00},
4117		{CX0342_SYS_CTRL_0, 0x81},
4118	};
4119	static const struct cmd cx_bridge_init[] = {
4120		{0x4d, 0x00},
4121		{0x4c, 0xff},
4122		{0x4e, 0xff},
4123		{0x4f, 0x00},
4124	};
4125	static const struct cmd ov_sensor_init[] = {
4126		{0x10, 0x75},		/* exposure */
4127		{0x76, 0x03},
4128		{0x00, 0x00},		/* gain */
4129	};
4130	static const struct cmd ov_bridge_init[] = {
4131		{0x7b, 0x90},
4132		{TP6800_R3F_FRAME_RATE, 0x87},
4133	};
4134
4135	if (sd->bridge == BRIDGE_TP6800)
4136		return 0;
4137	if (sd->sensor == SENSOR_CX0342) {
4138		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4139		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4140		i2c_w_buf(gspca_dev, cx_sensor_init,
4141				ARRAY_SIZE(cx_sensor_init));
4142		reg_w_buf(gspca_dev, cx_bridge_init,
4143				ARRAY_SIZE(cx_bridge_init));
4144		bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4145		reg_w(gspca_dev, 0x59, 0x40);
4146	} else {
4147		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4148		i2c_w_buf(gspca_dev, ov_sensor_init,
4149				ARRAY_SIZE(ov_sensor_init));
4150		reg_r(gspca_dev, 0x7b);
4151		reg_w_buf(gspca_dev, ov_bridge_init,
4152				ARRAY_SIZE(ov_bridge_init));
4153	}
4154	reg_w(gspca_dev, TP6800_R78_FORMAT,
4155			gspca_dev->curr_mode ? 0x00 : 0x01);
4156	return gspca_dev->usb_err;
4157}
4158
4159static void set_led(struct gspca_dev *gspca_dev, int on)
4160{
4161	u8 data;
4162
4163	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4164	data = gspca_dev->usb_buf[0];
4165	if (on)
4166		data &= ~0x40;
4167	else
4168		data |= 0x40;
4169	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4170}
4171
4172static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4173{
4174	struct sd *sd = (struct sd *) gspca_dev;
4175	static const struct cmd reg_init[] = {
4176		/* fixme: is this useful? */
4177		{TP6800_R17_GPIO_IO, 0x9f},
4178		{TP6800_R16_GPIO_PD, 0x40},
4179		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4180		{TP6800_R50, 0x00},
4181		{TP6800_R51, 0x00},
4182		{TP6800_R52, 0xff},
4183		{TP6800_R53, 0x03},
4184		{TP6800_R54_DARK_CFG, 0x07},
4185		{TP6800_R5C_EDGE_THRLD, 0x40},
4186		{TP6800_R7A_BLK_THRLD, 0x40},
4187		{TP6800_R2F_TIMING_CFG, 0x17},
4188		{TP6800_R30_SENSOR_CFG, 0x18},	/* G1B..RG0 */
4189		{TP6800_R37_FRONT_DARK_ST, 0x00},
4190		{TP6800_R38_FRONT_DARK_END, 0x00},
4191		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4192		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4193		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4194		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4195		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4196		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4197		{TP6800_R21_ENDP_1_CTL, 0x03},
4198
4199		{TP6800_R31_PIXEL_START, 0x0b},
4200		{TP6800_R32_PIXEL_END_L, 0x8a},
4201		{TP6800_R33_PIXEL_END_H, 0x02},
4202		{TP6800_R34_LINE_START, 0x0e},
4203		{TP6800_R35_LINE_END_L, 0xf4},
4204		{TP6800_R36_LINE_END_H, 0x01},
4205		{TP6800_R78_FORMAT, 0x00},
4206		{TP6800_R12_SIF_ADDR_S, 0x20},	/* cx0342 i2c addr */
4207	};
4208	static const struct cmd sensor_init[] = {
4209		{CX0342_OUTPUT_CTRL, 0x07},
4210		{CX0342_BYPASS_MODE, 0x58},
4211		{CX0342_GPXLTHD_L, 0x16},
4212		{CX0342_RBPXLTHD_L, 0x16},
4213		{CX0342_PLANETHD_L, 0xc0},
4214		{CX0342_PLANETHD_H, 0x03},
4215		{CX0342_RB_GAP_L, 0xff},
4216		{CX0342_RB_GAP_H, 0x07},
4217		{CX0342_G_GAP_L, 0xff},
4218		{CX0342_G_GAP_H, 0x07},
4219		{CX0342_RST_OVERFLOW_L, 0x5c},
4220		{CX0342_RST_OVERFLOW_H, 0x01},
4221		{CX0342_DATA_OVERFLOW_L, 0xfc},
4222		{CX0342_DATA_OVERFLOW_H, 0x03},
4223		{CX0342_DATA_UNDERFLOW_L, 0x00},
4224		{CX0342_DATA_UNDERFLOW_H, 0x00},
4225		{CX0342_SYS_CTRL_0, 0x40},
4226		{CX0342_GLOBAL_GAIN, 0x01},
4227		{CX0342_CLOCK_GEN, 0x00},
4228		{CX0342_SYS_CTRL_0, 0x02},
4229		{CX0342_IDLE_CTRL, 0x05},
4230		{CX0342_ADCGN, 0x00},
4231		{CX0342_ADC_CTL, 0x00},
4232		{CX0342_LVRST_BLBIAS, 0x01},
4233		{CX0342_VTHSEL, 0x0b},
4234		{CX0342_RAMP_RIV, 0x0b},
4235		{CX0342_LDOSEL, 0x07},
4236		{CX0342_SPV_VALUE_L, 0x40},
4237		{CX0342_SPV_VALUE_H, 0x02},
4238	};
4239
4240	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4241	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4242	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4243	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4244	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4245	i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4246	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4247	if (sd->sensor == SENSOR_CX0342)
4248		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4249			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4250			v4l2_ctrl_g_ctrl(sd->blue),
4251			v4l2_ctrl_g_ctrl(sd->red));
4252	else
4253		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4254			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4255	set_led(gspca_dev, 1);
4256	set_resolution(gspca_dev);
4257}
4258
4259static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4260{
4261	struct sd *sd = (struct sd *) gspca_dev;
4262	static const struct cmd sensor_init_2[] = {
4263		{CX0342_EXPO_LINE_L, 0x6f},
4264		{CX0342_EXPO_LINE_H, 0x02},
4265		{CX0342_RAW_GRGAIN_L, 0x00},
4266		{CX0342_RAW_GBGAIN_L, 0x00},
4267		{CX0342_RAW_RGAIN_L, 0x00},
4268		{CX0342_RAW_BGAIN_L, 0x00},
4269		{CX0342_SYS_CTRL_0, 0x81},
4270	};
4271	static const struct cmd bridge_init_2[] = {
4272		{0x4d, 0x00},
4273		{0x4c, 0xff},
4274		{0x4e, 0xff},
4275		{0x4f, 0x00},
4276		{TP6800_R7A_BLK_THRLD, 0x00},
4277		{TP6800_R79_QUALITY, 0x04},
4278		{TP6800_R79_QUALITY, 0x01},
4279	};
4280	static const struct cmd bridge_init_3[] = {
4281		{TP6800_R31_PIXEL_START, 0x08},
4282		{TP6800_R32_PIXEL_END_L, 0x87},
4283		{TP6800_R33_PIXEL_END_H, 0x02},
4284		{TP6800_R34_LINE_START, 0x0e},
4285		{TP6800_R35_LINE_END_L, 0xf4},
4286		{TP6800_R36_LINE_END_H, 0x01},
4287	};
4288	static const struct cmd sensor_init_3[] = {
4289		{CX0342_AUTO_ADC_CALIB, 0x81},
4290		{CX0342_EXPO_LINE_L, 0x6f},
4291		{CX0342_EXPO_LINE_H, 0x02},
4292		{CX0342_RAW_GRGAIN_L, 0x00},
4293		{CX0342_RAW_GBGAIN_L, 0x00},
4294		{CX0342_RAW_RGAIN_L, 0x00},
4295		{CX0342_RAW_BGAIN_L, 0x00},
4296		{CX0342_SYS_CTRL_0, 0x81},
4297	};
4298	static const struct cmd bridge_init_5[] = {
4299		{0x4d, 0x00},
4300		{0x4c, 0xff},
4301		{0x4e, 0xff},
4302		{0x4f, 0x00},
4303	};
4304	static const struct cmd sensor_init_4[] = {
4305		{CX0342_EXPO_LINE_L, 0xd3},
4306		{CX0342_EXPO_LINE_H, 0x01},
4307/*fixme: gains, but 00..80 only*/
4308		{CX0342_RAW_GRGAIN_L, 0x40},
4309		{CX0342_RAW_GBGAIN_L, 0x40},
4310		{CX0342_RAW_RGAIN_L, 0x40},
4311		{CX0342_RAW_BGAIN_L, 0x40},
4312		{CX0342_SYS_CTRL_0, 0x81},
4313	};
4314	static const struct cmd sensor_init_5[] = {
4315		{CX0342_IDLE_CTRL, 0x05},
4316		{CX0342_ADCGN, 0x00},
4317		{CX0342_ADC_CTL, 0x00},
4318		{CX0342_LVRST_BLBIAS, 0x01},
4319		{CX0342_VTHSEL, 0x0b},
4320		{CX0342_RAMP_RIV, 0x0b},
4321		{CX0342_LDOSEL, 0x07},
4322		{CX0342_SPV_VALUE_L, 0x40},
4323		{CX0342_SPV_VALUE_H, 0x02},
4324		{CX0342_AUTO_ADC_CALIB, 0x81},
4325	};
4326
4327	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4328	i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4329	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4330	reg_w_buf(gspca_dev, tp6810_cx_init_common,
4331			ARRAY_SIZE(tp6810_cx_init_common));
4332	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4333	if (gspca_dev->curr_mode) {
4334		reg_w(gspca_dev, 0x4a, 0x7f);
4335		reg_w(gspca_dev, 0x07, 0x05);
4336		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4337	} else {
4338		reg_w(gspca_dev, 0x4a, 0xff);
4339		reg_w(gspca_dev, 0x07, 0x85);
4340		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4341	}
4342	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4343	reg_w_buf(gspca_dev, tp6810_bridge_start,
4344			ARRAY_SIZE(tp6810_bridge_start));
4345	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4346	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4347				ARRAY_SIZE(color_gain[0]));
4348	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4349	i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4350	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4351	i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4352	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4353	i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4354
4355	set_led(gspca_dev, 1);
4356/*	setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */
4357}
4358
4359static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4360{
4361	struct sd *sd = (struct sd *) gspca_dev;
4362	static const struct cmd reg_init[] = {
4363		{TP6800_R79_QUALITY, 0x04},
4364		{TP6800_R79_QUALITY, 0x01},
4365		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4366
4367		{TP6800_R50, 0x00},
4368		{TP6800_R51, 0x00},
4369		{TP6800_R52, 0xff},
4370		{TP6800_R53, 0x03},
4371		{TP6800_R54_DARK_CFG, 0x07},
4372		{TP6800_R5C_EDGE_THRLD, 0x40},
4373
4374		{TP6800_R79_QUALITY, 0x03},
4375		{TP6800_R7A_BLK_THRLD, 0x40},
4376
4377		{TP6800_R2F_TIMING_CFG, 0x46},
4378		{TP6800_R30_SENSOR_CFG, 0x10},	/* BG1..G0R */
4379		{TP6800_R37_FRONT_DARK_ST, 0x00},
4380		{TP6800_R38_FRONT_DARK_END, 0x00},
4381		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4382		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4383		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4384		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4385		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4386		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4387		{TP6800_R21_ENDP_1_CTL, 0x03},
4388
4389		{TP6800_R3F_FRAME_RATE, 0x04},	/* 15 fps */
4390		{TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4391
4392		{TP6800_R31_PIXEL_START, 0x1b},
4393		{TP6800_R32_PIXEL_END_L, 0x9a},
4394		{TP6800_R33_PIXEL_END_H, 0x02},
4395		{TP6800_R34_LINE_START, 0x0f},
4396		{TP6800_R35_LINE_END_L, 0xf4},
4397		{TP6800_R36_LINE_END_H, 0x01},
4398		{TP6800_R78_FORMAT, 0x01},	/* qvga */
4399		{TP6800_R12_SIF_ADDR_S, 0x21},	/* soi763a i2c addr */
4400		{TP6800_R1A_SIF_TX_DATA2, 0x00},
4401	};
4402	static const struct cmd sensor_init[] = {
4403		{0x12, 0x48},		/* mirror - RGB */
4404		{0x13, 0xa0},		/* clock - no AGC nor AEC */
4405		{0x03, 0xa4},		/* saturation */
4406		{0x04, 0x30},		/* hue */
4407		{0x05, 0x88},		/* contrast */
4408		{0x06, 0x60},		/* brightness */
4409		{0x10, 0x41},		/* AEC */
4410		{0x11, 0x40},		/* clock rate */
4411		{0x13, 0xa0},
4412		{0x14, 0x00},		/* 640x480 */
4413		{0x15, 0x14},
4414		{0x1f, 0x41},
4415		{0x20, 0x80},
4416		{0x23, 0xee},
4417		{0x24, 0x50},
4418		{0x25, 0x7a},
4419		{0x26, 0x00},
4420		{0x27, 0xe2},
4421		{0x28, 0xb0},
4422		{0x2a, 0x00},
4423		{0x2b, 0x00},
4424		{0x2d, 0x81},
4425		{0x2f, 0x9d},
4426		{0x60, 0x80},
4427		{0x61, 0x00},
4428		{0x62, 0x88},
4429		{0x63, 0x11},
4430		{0x64, 0x89},
4431		{0x65, 0x00},
4432		{0x67, 0x94},
4433		{0x68, 0x7a},
4434		{0x69, 0x0f},
4435		{0x6c, 0x80},
4436		{0x6d, 0x80},
4437		{0x6e, 0x80},
4438		{0x6f, 0xff},
4439		{0x71, 0x20},
4440		{0x74, 0x20},
4441		{0x75, 0x86},
4442		{0x77, 0xb5},
4443		{0x17, 0x18},		/* H href start */
4444		{0x18, 0xbf},		/* H href end */
4445		{0x19, 0x03},		/* V start */
4446		{0x1a, 0xf8},		/* V end */
4447		{0x01, 0x80},		/* blue gain */
4448		{0x02, 0x80},		/* red gain */
4449	};
4450
4451	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4452
4453	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
4454	msleep(10);
4455
4456	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4457
4458	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4459	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4460
4461	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4462
4463	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4464				ARRAY_SIZE(color_gain[0]));
4465
4466	set_led(gspca_dev, 1);
4467	if (sd->sensor == SENSOR_CX0342)
4468		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4469			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4470			v4l2_ctrl_g_ctrl(sd->blue),
4471			v4l2_ctrl_g_ctrl(sd->red));
4472	else
4473		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4474			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4475	if (sd->sensor == SENSOR_SOI763A)
4476		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
4477	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4478}
4479
4480static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4481{
4482	struct sd *sd = (struct sd *) gspca_dev;
4483	static const struct cmd bridge_init_2[] = {
4484		{TP6800_R7A_BLK_THRLD, 0x00},
4485		{TP6800_R79_QUALITY, 0x04},
4486		{TP6800_R79_QUALITY, 0x01},
4487	};
4488	static const struct cmd bridge_init_3[] = {
4489		{TP6800_R31_PIXEL_START, 0x20},
4490		{TP6800_R32_PIXEL_END_L, 0x9f},
4491		{TP6800_R33_PIXEL_END_H, 0x02},
4492		{TP6800_R34_LINE_START, 0x13},
4493		{TP6800_R35_LINE_END_L, 0xf8},
4494		{TP6800_R36_LINE_END_H, 0x01},
4495	};
4496	static const struct cmd bridge_init_6[] = {
4497		{0x08, 0xff},
4498		{0x09, 0xff},
4499		{0x0a, 0x5f},
4500		{0x0b, 0x80},
4501	};
4502
4503	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4504	bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4505	reg_w(gspca_dev, 0x59, 0x40);
4506	if (sd->sensor == SENSOR_CX0342)
4507		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4508			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4509			v4l2_ctrl_g_ctrl(sd->blue),
4510			v4l2_ctrl_g_ctrl(sd->red));
4511	else
4512		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4513			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4514	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4515	reg_w_buf(gspca_dev, tp6810_ov_init_common,
4516			ARRAY_SIZE(tp6810_ov_init_common));
4517	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4518	if (gspca_dev->curr_mode) {
4519		reg_w(gspca_dev, 0x4a, 0x7f);
4520		reg_w(gspca_dev, 0x07, 0x05);
4521		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4522	} else {
4523		reg_w(gspca_dev, 0x4a, 0xff);
4524		reg_w(gspca_dev, 0x07, 0x85);
4525		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4526	}
4527	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4528	reg_w_buf(gspca_dev, tp6810_bridge_start,
4529			ARRAY_SIZE(tp6810_bridge_start));
4530
4531	if (gspca_dev->curr_mode) {
4532		reg_w(gspca_dev, 0x4f, 0x00);
4533		reg_w(gspca_dev, 0x4e, 0x7c);
4534	}
4535
4536	reg_w(gspca_dev, 0x00, 0x00);
4537
4538	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4539	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4540				ARRAY_SIZE(color_gain[0]));
4541	set_led(gspca_dev, 1);
4542	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4543	if (sd->sensor == SENSOR_CX0342)
4544		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4545			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4546			v4l2_ctrl_g_ctrl(sd->blue),
4547			v4l2_ctrl_g_ctrl(sd->red));
4548	else
4549		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4550			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4551	reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4552}
4553
4554/* -- start the camera -- */
4555static int sd_start(struct gspca_dev *gspca_dev)
4556{
4557	struct sd *sd = (struct sd *) gspca_dev;
4558
4559	jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
4560			gspca_dev->pixfmt.width);
4561	set_dqt(gspca_dev, sd->quality);
4562	if (sd->bridge == BRIDGE_TP6800) {
4563		if (sd->sensor == SENSOR_CX0342)
4564			cx0342_6800_start(gspca_dev);
4565		else
4566			soi763a_6800_start(gspca_dev);
4567	} else {
4568		if (sd->sensor == SENSOR_CX0342)
4569			cx0342_6810_start(gspca_dev);
4570		else
4571			soi763a_6810_start(gspca_dev);
4572		reg_w_buf(gspca_dev, tp6810_late_start,
4573				ARRAY_SIZE(tp6810_late_start));
4574		reg_w(gspca_dev, 0x80, 0x03);
4575		reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4576
4577		if (sd->sensor == SENSOR_CX0342)
4578			setexposure(gspca_dev,
4579				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4580				v4l2_ctrl_g_ctrl(gspca_dev->gain),
4581				v4l2_ctrl_g_ctrl(sd->blue),
4582				v4l2_ctrl_g_ctrl(sd->red));
4583		else
4584			setexposure(gspca_dev,
4585				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4586				v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4587		if (sd->sensor == SENSOR_SOI763A)
4588			setquality(gspca_dev,
4589				   v4l2_ctrl_g_ctrl(sd->jpegqual));
4590		if (sd->bridge == BRIDGE_TP6810)
4591			setautogain(gspca_dev,
4592				    v4l2_ctrl_g_ctrl(gspca_dev->autogain));
4593	}
4594
4595	setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4596
4597	return gspca_dev->usb_err;
4598}
4599
4600static void sd_stopN(struct gspca_dev *gspca_dev)
4601{
4602	struct sd *sd = (struct sd *) gspca_dev;
4603
4604	if (sd->bridge == BRIDGE_TP6800)
4605		reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4606	set_led(gspca_dev, 0);
4607	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4608}
4609
4610static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4611			u8 *data,
4612			int len)
4613{
4614	struct sd *sd = (struct sd *) gspca_dev;
4615
4616	/* the start of frame contains:
4617	 *	ff d8
4618	 *	ff fe
4619	 *	width / 16
4620	 *	height / 8
4621	 *	quality
4622	 */
4623	if (sd->bridge == BRIDGE_TP6810) {
4624		if (*data != 0x5a) {
4625/*fixme: don't discard the whole frame..*/
4626			if (*data == 0xaa || *data == 0x00)
4627				return;
4628			if (*data > 0xc0) {
4629				PDEBUG(D_FRAM, "bad frame");
4630				gspca_dev->last_packet_type = DISCARD_PACKET;
4631				return;
4632			}
4633		}
4634		data++;
4635		len--;
4636		if (len < 2) {
4637			gspca_dev->last_packet_type = DISCARD_PACKET;
4638			return;
4639		}
4640		if (*data == 0xff && data[1] == 0xd8) {
4641/*fixme: there may be information in the 4 high bits*/
4642			if (len < 7) {
4643				gspca_dev->last_packet_type = DISCARD_PACKET;
4644				return;
4645			}
4646			if ((data[6] & 0x0f) != sd->quality)
4647				set_dqt(gspca_dev, data[6] & 0x0f);
4648			gspca_frame_add(gspca_dev, FIRST_PACKET,
4649					sd->jpeg_hdr, JPEG_HDR_SZ);
4650			gspca_frame_add(gspca_dev, INTER_PACKET,
4651					data + 7, len - 7);
4652		} else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4653			gspca_frame_add(gspca_dev, LAST_PACKET,
4654					data, len);
4655		} else {
4656			gspca_frame_add(gspca_dev, INTER_PACKET,
4657					data, len);
4658		}
4659		return;
4660	}
4661
4662	switch (*data) {
4663	case 0x55:
4664		gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4665
4666		if (len < 8
4667		 || data[1] != 0xff || data[2] != 0xd8
4668		 || data[3] != 0xff || data[4] != 0xfe) {
4669
4670			/* Have only seen this with corrupt frames */
4671			gspca_dev->last_packet_type = DISCARD_PACKET;
4672			return;
4673		}
4674		if (data[7] != sd->quality)
4675			set_dqt(gspca_dev, data[7]);
4676		gspca_frame_add(gspca_dev, FIRST_PACKET,
4677				sd->jpeg_hdr, JPEG_HDR_SZ);
4678		gspca_frame_add(gspca_dev, INTER_PACKET,
4679				data + 8, len - 8);
4680		break;
4681	case 0xaa:
4682		gspca_dev->last_packet_type = DISCARD_PACKET;
4683		break;
4684	case 0xcc:
4685		if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8))
4686			gspca_frame_add(gspca_dev, INTER_PACKET,
4687					data + 1, len - 1);
4688		else
4689			gspca_dev->last_packet_type = DISCARD_PACKET;
4690		break;
4691	}
4692}
4693
4694static void sd_dq_callback(struct gspca_dev *gspca_dev)
4695{
4696	struct sd *sd = (struct sd *) gspca_dev;
4697	int ret, alen;
4698	int luma, expo;
4699
4700	if (sd->ag_cnt < 0)
4701		return;
4702	if (--sd->ag_cnt > 5)
4703		return;
4704	switch (sd->ag_cnt) {
4705/*	case 5: */
4706	default:
4707		reg_w(gspca_dev, 0x7d, 0x00);
4708		break;
4709	case 4:
4710		reg_w(gspca_dev, 0x27, 0xb0);
4711		break;
4712	case 3:
4713		reg_w(gspca_dev, 0x0c, 0x01);
4714		break;
4715	case 2:
4716		ret = usb_bulk_msg(gspca_dev->dev,
4717				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4718				gspca_dev->usb_buf,
4719				32,
4720				&alen,
4721				500);
4722		if (ret < 0) {
4723			pr_err("bulk err %d\n", ret);
4724			break;
4725		}
4726		/* values not used (unknown) */
4727		break;
4728	case 1:
4729		reg_w(gspca_dev, 0x27, 0xd0);
4730		break;
4731	case 0:
4732		ret = usb_bulk_msg(gspca_dev->dev,
4733				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4734				gspca_dev->usb_buf,
4735				32,
4736				&alen,
4737				500);
4738		if (ret < 0) {
4739			pr_err("bulk err %d\n", ret);
4740			break;
4741		}
4742		luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4743			(gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4744			(gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4745			(gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4746			(gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4747			(gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4748			(gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4749			(gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4750				/ 8;
4751		if (gspca_dev->pixfmt.width == 640)
4752			luma /= 4;
4753		reg_w(gspca_dev, 0x7d, 0x00);
4754
4755		expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4756		ret = gspca_expo_autogain(gspca_dev, luma,
4757				60,	/* desired luma */
4758				6,	/* dead zone */
4759				2,	/* gain knee */
4760				70);	/* expo knee */
4761		sd->ag_cnt = AG_CNT_START;
4762		if (sd->bridge == BRIDGE_TP6810) {
4763			int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4764
4765			if ((expo >= 128 && new_expo < 128)
4766			 || (expo < 128 && new_expo >= 128))
4767				setframerate(gspca_dev, new_expo);
4768		}
4769		break;
4770	}
4771}
4772
4773/* get stream parameters (framerate) */
4774static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4775			     struct v4l2_streamparm *parm)
4776{
4777	struct sd *sd = (struct sd *) gspca_dev;
4778	struct v4l2_captureparm *cp = &parm->parm.capture;
4779	struct v4l2_fract *tpf = &cp->timeperframe;
4780	int fr, i;
4781
4782	cp->capability |= V4L2_CAP_TIMEPERFRAME;
4783	tpf->numerator = 1;
4784	i = get_fr_idx(gspca_dev);
4785	if (i & 0x80) {
4786		if (sd->bridge == BRIDGE_TP6800)
4787			fr = rates[6 - (i & 0x07)];
4788		else
4789			fr = rates_6810[7 - (i & 0x07)];
4790	} else {
4791		fr = rates[6 - i];
4792	}
4793	tpf->denominator = fr;
4794}
4795
4796/* set stream parameters (framerate) */
4797static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4798			     struct v4l2_streamparm *parm)
4799{
4800	struct sd *sd = (struct sd *) gspca_dev;
4801	struct v4l2_captureparm *cp = &parm->parm.capture;
4802	struct v4l2_fract *tpf = &cp->timeperframe;
4803	int fr, i;
4804
4805	if (tpf->numerator == 0 || tpf->denominator == 0)
4806		sd->framerate = 30;
4807	else
4808		sd->framerate = tpf->denominator / tpf->numerator;
4809
4810	if (gspca_dev->streaming)
4811		setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4812
4813	/* Return the actual framerate */
4814	i = get_fr_idx(gspca_dev);
4815	if (i & 0x80)
4816		fr = rates_6810[7 - (i & 0x07)];
4817	else
4818		fr = rates[6 - i];
4819	tpf->numerator = 1;
4820	tpf->denominator = fr;
4821}
4822
4823static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4824			const struct v4l2_jpegcompression *jcomp)
4825{
4826	struct sd *sd = (struct sd *) gspca_dev;
4827
4828	if (sd->sensor != SENSOR_SOI763A)
4829		return -ENOTTY;
4830	v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality);
4831	return 0;
4832}
4833
4834static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4835			struct v4l2_jpegcompression *jcomp)
4836{
4837	struct sd *sd = (struct sd *) gspca_dev;
4838
4839	if (sd->sensor != SENSOR_SOI763A)
4840		return -ENOTTY;
4841	memset(jcomp, 0, sizeof *jcomp);
4842	jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual);
4843	jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4844			| V4L2_JPEG_MARKER_DQT;
4845	return 0;
4846}
4847
4848static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
4849{
4850	struct gspca_dev *gspca_dev =
4851		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
4852	struct sd *sd = (struct sd *)gspca_dev;
4853
4854	gspca_dev->usb_err = 0;
4855
4856	if (!gspca_dev->streaming)
4857		return 0;
4858
4859	switch (ctrl->id) {
4860	case V4L2_CID_SHARPNESS:
4861		setsharpness(gspca_dev, ctrl->val);
4862		break;
4863	case V4L2_CID_GAMMA:
4864		setgamma(gspca_dev, ctrl->val);
4865		break;
4866	case V4L2_CID_BLUE_BALANCE:
4867		setbgain(gspca_dev, ctrl->val);
4868		break;
4869	case V4L2_CID_RED_BALANCE:
4870		setrgain(gspca_dev, ctrl->val);
4871		break;
4872	case V4L2_CID_EXPOSURE:
4873		sd_setgain(gspca_dev);
4874		break;
4875	case V4L2_CID_AUTOGAIN:
4876		if (ctrl->val)
4877			break;
4878		sd_setgain(gspca_dev);
4879		break;
4880	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
4881		jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
4882		break;
4883	}
4884	return gspca_dev->usb_err;
4885}
4886
4887static const struct v4l2_ctrl_ops sd_ctrl_ops = {
4888	.s_ctrl = sd_s_ctrl,
4889};
4890
4891static int sd_init_controls(struct gspca_dev *gspca_dev)
4892{
4893	struct sd *sd = (struct sd *)gspca_dev;
4894	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
4895
4896	gspca_dev->vdev.ctrl_handler = hdl;
4897	v4l2_ctrl_handler_init(hdl, 4);
4898	gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4899			V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e);
4900	if (sd->sensor == SENSOR_CX0342) {
4901		sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4902			V4L2_CID_RED_BALANCE, 0, 4095, 1, 256);
4903		sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4904			V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256);
4905	}
4906	if (sd->sensor == SENSOR_SOI763A)
4907		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4908			V4L2_CID_GAIN, 0, 15, 1, 3);
4909	else
4910		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4911			V4L2_CID_GAIN, 0, 4095, 1, 256);
4912	sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4913			V4L2_CID_SHARPNESS, 0, 3, 1, 2);
4914	sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4915			V4L2_CID_GAMMA, 0, NGAMMA - 1, 1,
4916			(sd->sensor == SENSOR_SOI763A &&
4917			 sd->bridge == BRIDGE_TP6800) ? 0 : 1);
4918	if (sd->bridge == BRIDGE_TP6810)
4919		gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4920			V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
4921	if (sd->sensor == SENSOR_SOI763A)
4922		sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4923			V4L2_CID_JPEG_COMPRESSION_QUALITY,
4924			0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13);
4925
4926	if (hdl->error) {
4927		pr_err("Could not initialize controls\n");
4928		return hdl->error;
4929	}
4930	if (gspca_dev->autogain)
4931		v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false);
4932	else
4933		v4l2_ctrl_cluster(2, &gspca_dev->exposure);
4934	return 0;
4935}
4936
4937static const struct sd_desc sd_desc = {
4938	.name = KBUILD_MODNAME,
4939	.config = sd_config,
4940	.init = sd_init,
4941	.init_controls = sd_init_controls,
4942	.isoc_init = sd_isoc_init,
4943	.start = sd_start,
4944	.stopN = sd_stopN,
4945	.pkt_scan = sd_pkt_scan,
4946	.dq_callback = sd_dq_callback,
4947	.get_streamparm = sd_get_streamparm,
4948	.set_streamparm = sd_set_streamparm,
4949	.get_jcomp = sd_get_jcomp,
4950	.set_jcomp = sd_set_jcomp,
4951};
4952
4953static const struct usb_device_id device_table[] = {
4954	{USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4955	{USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4956	{}			/* Terminating entry */
4957};
4958
4959MODULE_DEVICE_TABLE(usb, device_table);
4960
4961static int sd_probe(struct usb_interface *interface,
4962		    const struct usb_device_id *id)
4963{
4964	return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4965			       THIS_MODULE);
4966}
4967
4968static struct usb_driver sd_driver = {
4969	.name = KBUILD_MODNAME,
4970	.id_table = device_table,
4971	.probe = sd_probe,
4972	.disconnect = gspca_disconnect,
4973#ifdef CONFIG_PM
4974	.suspend = gspca_suspend,
4975	.resume = gspca_resume,
4976	.reset_resume = gspca_resume,
4977#endif
4978};
4979
4980module_usb_driver(sd_driver);
4981
4982module_param(force_sensor, int, 0644);
4983MODULE_PARM_DESC(force_sensor,
4984	"Force sensor. 0: cx0342, 1: soi763a");
4985