1 
2 /* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 and
6  * only version 2 as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16  * 02110-1301, USA.
17  */
18 #include <linux/module.h>
19 #include <linux/kernel.h>
20 #include <linux/sched.h>
21 #include <linux/time.h>
22 #include <linux/init.h>
23 #include <linux/interrupt.h>
24 #include <linux/spinlock.h>
25 #include <linux/hrtimer.h>
26 #include <linux/clk.h>
27 #include <mach/hardware.h>
28 #include <linux/io.h>
29 #include <linux/debugfs.h>
30 
31 #include <asm/system.h>
32 #include <asm/mach-types.h>
33 #include <linux/semaphore.h>
34 #include <linux/uaccess.h>
35 
36 #include "mdp.h"
37 #include "msm_fb.h"
38 #include "mdp4.h"
39 
mdp4_sw_reset(ulong bits)40 void mdp4_sw_reset(ulong bits)
41 {
42 	bits &= 0x1f;	/* 5 bits */
43 	outpdw(MDP_BASE + 0x001c, bits);	/* MDP_SW_RESET */
44 
45 	while (inpdw(MDP_BASE + 0x001c) & bits) /* self clear when complete */
46 		;
47 	MSM_FB_INFO("mdp4_sw_reset: 0x%x\n", (int)bits);
48 }
49 
mdp4_overlay_cfg(int overlayer,int blt_mode,int refresh,int direct_out)50 void mdp4_overlay_cfg(int overlayer, int blt_mode, int refresh, int direct_out)
51 {
52 	ulong bits = 0;
53 
54 	if (blt_mode)
55 		bits |= (1 << 3);
56 	refresh &= 0x03;	/* 2 bites */
57 	bits |= (refresh << 1);
58 	direct_out &= 0x01;
59 	bits |= direct_out;
60 
61 	if (overlayer == MDP4_MIXER0)
62 		outpdw(MDP_BASE + 0x10004, bits); /* MDP_OVERLAY0_CFG */
63 	else
64 		outpdw(MDP_BASE + 0x18004, bits); /* MDP_OVERLAY1_CFG */
65 
66 	MSM_FB_INFO("mdp4_overlay_cfg: 0x%x\n", (int)inpdw(MDP_BASE + 0x10004));
67 }
68 
mdp4_display_intf_sel(int output,ulong intf)69 void mdp4_display_intf_sel(int output, ulong intf)
70 {
71 	ulong bits, mask;
72 
73 	bits = inpdw(MDP_BASE + 0x0038);	/* MDP_DISP_INTF_SEL */
74 
75 	mask = 0x03;	/* 2 bits */
76 	intf &= 0x03;	/* 2 bits */
77 
78 	switch (output) {
79 	case EXTERNAL_INTF_SEL:
80 		intf <<= 4;
81 		mask <<= 4;
82 		break;
83 	case SECONDARY_INTF_SEL:
84 		intf &= 0x02;	/* only MDDI and EBI2 support */
85 		intf <<= 2;
86 		mask <<= 2;
87 		break;
88 	default:
89 		break;
90 	}
91 
92 
93 	bits &= ~mask;
94 	bits |= intf;
95 
96 	outpdw(MDP_BASE + 0x0038, bits);	/* MDP_DISP_INTF_SEL */
97 
98   MSM_FB_INFO("mdp4_display_intf_sel: 0x%x\n", (int)inpdw(MDP_BASE + 0x0038));
99 }
100 
mdp4_display_status(void)101 unsigned long mdp4_display_status(void)
102 {
103 	return inpdw(MDP_BASE + 0x0018) & 0x3ff;	/* MDP_DISPLAY_STATUS */
104 }
105 
mdp4_ebi2_lcd_setup(int lcd,ulong base,int ystride)106 void mdp4_ebi2_lcd_setup(int lcd, ulong base, int ystride)
107 {
108 	/* always use memory map */
109 	ystride &= 0x01fff;	/* 13 bits */
110 	if (lcd == EBI2_LCD0) {
111 		outpdw(MDP_BASE + 0x0060, base);/* MDP_EBI2_LCD0 */
112 		outpdw(MDP_BASE + 0x0068, ystride);/* MDP_EBI2_LCD0_YSTRIDE */
113 	} else {
114 		outpdw(MDP_BASE + 0x0064, base);/* MDP_EBI2_LCD1 */
115 		outpdw(MDP_BASE + 0x006c, ystride);/* MDP_EBI2_LCD1_YSTRIDE */
116 	}
117 }
118 
mdp4_mddi_setup(int mddi,unsigned long id)119 void mdp4_mddi_setup(int mddi, unsigned long id)
120 {
121 	ulong 	bits;
122 
123 	if (mddi == MDDI_EXTERNAL_SET)
124 		bits = 0x02;
125 	else if (mddi == MDDI_SECONDARY_SET)
126 		bits = 0x01;
127 	else
128 		bits = 0;	/* PRIMARY_SET */
129 
130 	id <<= 16;
131 
132 	bits |= id;
133 
134 	outpdw(MDP_BASE + 0x0090, bits); /* MDP_MDDI_PARAM_WR_SEL */
135 }
136 
mdp_ppp_blit(struct fb_info * info,struct mdp_blit_req * req,struct file ** pp_src_file,struct file ** pp_dst_file)137 int mdp_ppp_blit(struct fb_info *info, struct mdp_blit_req *req,
138 	struct file **pp_src_file, struct file **pp_dst_file)
139 {
140 
141 	/* not implemented yet */
142 	return -1;
143 }
144 
mdp4_hw_init(void)145 void mdp4_hw_init(void)
146 {
147 	ulong bits;
148 
149 	/* MDP cmd block enable */
150 	mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
151 
152 #ifdef MDP4_ERROR
153 	/*
154 	 * Issue software reset on DMA_P will casue DMA_P dma engine stall
155 	 * on LCDC mode. However DMA_P does not stall at MDDI mode.
156 	 * This need further investigation.
157 	 */
158 	mdp4_sw_reset(0x17);
159 #endif
160 
161 	mdp4_clear_lcdc();
162 
163 	mdp4_mixer_blend_init(0);
164 	mdp4_mixer_blend_init(1);
165 	mdp4_vg_qseed_init(0);
166 	mdp4_vg_qseed_init(1);
167 	mdp4_vg_csc_mv_setup(0);
168 	mdp4_vg_csc_mv_setup(1);
169 	mdp4_vg_csc_pre_bv_setup(0);
170 	mdp4_vg_csc_pre_bv_setup(1);
171 	mdp4_vg_csc_post_bv_setup(0);
172 	mdp4_vg_csc_post_bv_setup(1);
173 	mdp4_vg_csc_pre_lv_setup(0);
174 	mdp4_vg_csc_pre_lv_setup(1);
175 	mdp4_vg_csc_post_lv_setup(0);
176 	mdp4_vg_csc_post_lv_setup(1);
177 
178 	mdp4_mixer_gc_lut_setup(0);
179 	mdp4_mixer_gc_lut_setup(1);
180 
181 	mdp4_vg_igc_lut_setup(0);
182 	mdp4_vg_igc_lut_setup(1);
183 
184 	 mdp4_rgb_igc_lut_setup(0);
185 	 mdp4_rgb_igc_lut_setup(1);
186 
187 	outp32(MDP_EBI2_PORTMAP_MODE, 0x3);
188 
189 	/* system interrupts */
190 
191 	bits =  mdp_intr_mask;
192 	outpdw(MDP_BASE + 0x0050, bits);/* enable specififed interrupts */
193 
194 	/* histogram */
195 	MDP_OUTP(MDP_BASE + 0x95010, 1);	/* auto clear HIST */
196 
197 	/* enable histogram interrupts */
198 	outpdw(MDP_BASE + 0x9501c, INTR_HIST_DONE);
199 
200 	/* For the max read pending cmd config below, if the MDP clock     */
201 	/* is less than the AXI clock, then we must use 3 pending          */
202 	/* pending requests.  Otherwise, we should use 8 pending requests. */
203 	/* In the future we should do this detection automatically.	   */
204 
205 	/* max read pending cmd config */
206 	outpdw(MDP_BASE + 0x004c, 0x02222);	/* 3 pending requests */
207 
208 	/* dma_p fetch config */
209 	outpdw(MDP_BASE + 0x91004, 0x27);	/* burst size of 8 */
210 
211 #ifndef CONFIG_FB_MSM_OVERLAY
212 	/* both REFRESH_MODE and DIRECT_OUT are ignored at BLT mode */
213 	mdp4_overlay_cfg(MDP4_MIXER0, OVERLAY_MODE_BLT, 0, 0);
214 	mdp4_overlay_cfg(MDP4_MIXER1, OVERLAY_MODE_BLT, 0, 0);
215 #endif
216 
217 	/* MDP cmd block disable */
218 	mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
219 }
220 
221 
mdp4_clear_lcdc(void)222 void mdp4_clear_lcdc(void)
223 {
224 	uint32 bits;
225 
226 	bits = inpdw(MDP_BASE + 0xc0000);
227 	if (bits & 0x01) /* enabled already */
228 		return;
229 
230 	outpdw(MDP_BASE + 0xc0004, 0);	/* vsync ctrl out */
231 	outpdw(MDP_BASE + 0xc0008, 0);	/* vsync period */
232 	outpdw(MDP_BASE + 0xc000c, 0);	/* vsync pusle width */
233 	outpdw(MDP_BASE + 0xc0010, 0);	/* lcdc display HCTL */
234 	outpdw(MDP_BASE + 0xc0014, 0);	/* lcdc display v start */
235 	outpdw(MDP_BASE + 0xc0018, 0);	/* lcdc display v end */
236 	outpdw(MDP_BASE + 0xc001c, 0);	/* lcdc active hctl */
237 	outpdw(MDP_BASE + 0xc0020, 0);	/* lcdc active v start */
238 	outpdw(MDP_BASE + 0xc0024, 0);	/* lcdc active v end */
239 	outpdw(MDP_BASE + 0xc0028, 0);	/* lcdc board color */
240 	outpdw(MDP_BASE + 0xc002c, 0);	/* lcdc underflow ctrl */
241 	outpdw(MDP_BASE + 0xc0030, 0);	/* lcdc hsync skew */
242 	outpdw(MDP_BASE + 0xc0034, 0);	/* lcdc test ctl */
243 	outpdw(MDP_BASE + 0xc0038, 0);	/* lcdc ctl polarity */
244 }
245 
246 static struct mdp_dma_data overlay1_data;
247 static int intr_dma_p;
248 static int intr_dma_s;
249 static int intr_dma_e;
250 static int intr_overlay0;
251 static int intr_overlay1;
252 
mdp4_isr(int irq,void * ptr)253 irqreturn_t mdp4_isr(int irq, void *ptr)
254 {
255 	uint32 isr, mask, lcdc;
256 	struct mdp_dma_data *dma;
257 
258 	mdp_is_in_isr = TRUE;
259 
260 	while (1) {
261 		isr = inpdw(MDP_INTR_STATUS);
262 		if (isr == 0)
263 			break;
264 
265 		mask = inpdw(MDP_INTR_ENABLE);
266 		outpdw(MDP_INTR_CLEAR, isr);
267 
268 		isr &= mask;
269 
270 		if (unlikely(isr == 0))
271 			break;
272 
273 		if (isr & INTR_DMA_P_DONE) {
274 			intr_dma_p++;
275 			lcdc = inpdw(MDP_BASE + 0xc0000);
276 			dma = &dma2_data;
277 			if (lcdc & 0x01) {	/* LCDC enable */
278 				/* disable LCDC interrupt */
279 				mdp_intr_mask &= ~INTR_DMA_P_DONE;
280 				outp32(MDP_INTR_ENABLE, mdp_intr_mask);
281 				dma->waiting = FALSE;
282 			} else {
283 				dma->busy = FALSE;
284 				mdp_pipe_ctrl(MDP_DMA2_BLOCK,
285 					MDP_BLOCK_POWER_OFF, TRUE);
286 			}
287 			complete(&dma->comp);
288 		}
289 		if (isr & INTR_DMA_S_DONE) {
290 			intr_dma_s++;
291 			dma = &dma_s_data;
292 			dma->busy = FALSE;
293 			mdp_pipe_ctrl(MDP_DMA_S_BLOCK,
294 					MDP_BLOCK_POWER_OFF, TRUE);
295 			complete(&dma->comp);
296 		}
297 		if (isr & INTR_DMA_E_DONE) {
298 			intr_dma_e++;
299 			dma = &dma_e_data;
300 			mdp_intr_mask &= ~INTR_DMA_E_DONE;
301 			outp32(MDP_INTR_ENABLE, mdp_intr_mask);
302 			dma->busy = FALSE;
303 
304 			if (dma->waiting) {
305 				dma->waiting = FALSE;
306 				complete(&dma->comp);
307 			}
308 		}
309 		if (isr & INTR_OVERLAY0_DONE) {
310 			intr_overlay0++;
311 			lcdc = inpdw(MDP_BASE + 0xc0000);
312 			dma = &dma2_data;
313 			if (lcdc & 0x01) {	/* LCDC enable */
314 				/* disable LCDC interrupt */
315 				mdp_intr_mask &= ~INTR_OVERLAY0_DONE;
316 				outp32(MDP_INTR_ENABLE, mdp_intr_mask);
317 				dma->waiting = FALSE;
318 				mdp4_overlay0_done_lcdc();
319 			} else {	/* MDDI */
320 				dma->busy = FALSE;
321 #ifdef MDP4_NONBLOCKING
322 				mdp_disable_irq_nolock(MDP_OVERLAY0_TERM);
323 #endif
324 				mdp_pipe_ctrl(MDP_OVERLAY0_BLOCK,
325 					MDP_BLOCK_POWER_OFF, TRUE);
326 				mdp4_overlay0_done_mddi();
327 			}
328 		}
329 		if (isr & INTR_OVERLAY1_DONE) {
330 			intr_overlay1++;
331 			dma = &overlay1_data;
332 			dma->busy = FALSE;
333 			mdp_pipe_ctrl(MDP_OVERLAY1_BLOCK,
334 					MDP_BLOCK_POWER_OFF, TRUE);
335 			complete(&dma->comp);
336 		}
337 		if (isr & INTR_DMA_P_HISTOGRAM) {
338 			isr = inpdw(MDP_DMA_P_HIST_INTR_STATUS);
339 			mask = inpdw(MDP_DMA_P_HIST_INTR_ENABLE);
340 			outpdw(MDP_DMA_P_HIST_INTR_CLEAR, isr);
341 			isr &= mask;
342 			if (isr & INTR_HIST_DONE) {
343 				if (mdp_hist.r)
344 					memcpy(mdp_hist.r, MDP_BASE + 0x95100,
345 							mdp_hist.bin_cnt*4);
346 				if (mdp_hist.g)
347 					memcpy(mdp_hist.g, MDP_BASE + 0x95200,
348 							mdp_hist.bin_cnt*4);
349 				if (mdp_hist.b)
350 					memcpy(mdp_hist.b, MDP_BASE + 0x95300,
351 						mdp_hist.bin_cnt*4);
352 				complete(&mdp_hist_comp);
353 			}
354 		}
355 	}
356 
357 	mdp_is_in_isr = FALSE;
358 
359 	return IRQ_HANDLED;
360 }
361 
362 
363 /*
364  * QSEED tables
365  */
366 
367 static uint32 vg_qseed_table0[] = {
368 	0x5556aaff, 0x00000000, 0x00000000, 0x00000000
369 };
370 
371 static uint32 vg_qseed_table1[] = {
372 	0x76543210, 0xfedcba98
373 };
374 
375 static uint32 vg_qseed_table2[] = {
376 	0x02000000, 0x00000000, 0x02060ff2, 0x00000008,
377 	0x02090fe4, 0x00000013, 0x020a0fd9, 0x0ffc0021,
378 	0x02080fce, 0x0ffa0030, 0x02030fc5, 0x0ff60042,
379 	0x01fd0fbe, 0x0ff10054, 0x01f50fb6, 0x0fed0068,
380 	0x01e90fb1, 0x0fe60080, 0x01dc0fae, 0x0fe10095,
381 	0x01ca0fae, 0x0fda00ae, 0x01b70fad, 0x0fd600c6,
382 	0x01a40fad, 0x0fcf00e0, 0x018f0faf, 0x0fc800fa,
383 	0x01780fb1, 0x0fc30114, 0x015f0fb5, 0x0fbf012d,
384 	0x01490fb7, 0x0fb70149, 0x012d0fbf, 0x0fb5015f,
385 	0x01140fc3, 0x0fb10178, 0x00fa0fc8, 0x0faf018f,
386 	0x00e00fcf, 0x0fad01a4, 0x00c60fd6, 0x0fad01b7,
387 	0x00ae0fda, 0x0fae01ca, 0x00950fe1, 0x0fae01dc,
388 	0x00800fe6, 0x0fb101e9, 0x00680fed, 0x0fb601f5,
389 	0x00540ff1, 0x0fbe01fd, 0x00420ff6, 0x0fc50203,
390 	0x00300ffa, 0x0fce0208, 0x00210ffc, 0x0fd9020a,
391 	0x00130000, 0x0fe40209, 0x00080000, 0x0ff20206,
392 	0x02000000, 0x00000000, 0x02040ff2, 0x0000000a,
393 	0x02040fe4, 0x00000018, 0x02010fda, 0x0ffc0029,
394 	0x01fc0fcf, 0x0ffa003b, 0x01f30fc7, 0x0ff60050,
395 	0x01e90fc0, 0x0ff20065, 0x01dc0fba, 0x0fee007c,
396 	0x01cc0fb6, 0x0fe80096, 0x01ba0fb4, 0x0fe400ae,
397 	0x01a70fb4, 0x0fdd00c8, 0x018f0fb5, 0x0fda00e2,
398 	0x017a0fb5, 0x0fd400fd, 0x01630fb8, 0x0fce0117,
399 	0x014c0fba, 0x0fca0130, 0x01320fbf, 0x0fc70148,
400 	0x011b0fc1, 0x0fc10163, 0x01010fc8, 0x0fc00177,
401 	0x00e90fcd, 0x0fbd018d, 0x00d10fd1, 0x0fbc01a2,
402 	0x00ba0fd7, 0x0fbb01b4, 0x00a30fdd, 0x0fbc01c4,
403 	0x008e0fe1, 0x0fbd01d4, 0x00790fe7, 0x0fbe01e2,
404 	0x00670feb, 0x0fc001ee, 0x00540ff1, 0x0fc501f6,
405 	0x00430ff4, 0x0fcb01fe, 0x00340ff8, 0x0fd10203,
406 	0x00260ffb, 0x0fd80207, 0x001a0ffd, 0x0fe10208,
407 	0x000f0000, 0x0fea0207, 0x00060000, 0x0ff50205,
408 	0x02000000, 0x00000000, 0x02020ff2, 0x0000000c,
409 	0x02000fe4, 0x0000001c, 0x01fa0fda, 0x0ffc0030,
410 	0x01f10fd0, 0x0ffa0045, 0x01e50fc8, 0x0ff6005d,
411 	0x01d60fc3, 0x0ff30074, 0x01c60fbd, 0x0fef008e,
412 	0x01b30fba, 0x0fe900aa, 0x019e0fb9, 0x0fe500c4,
413 	0x01870fba, 0x0fe000df, 0x016f0fbb, 0x0fdd00f9,
414 	0x01580fbc, 0x0fd80114, 0x01400fbf, 0x0fd3012e,
415 	0x01280fc2, 0x0fd00146, 0x010f0fc6, 0x0fce015d,
416 	0x00f90fc9, 0x0fc90175, 0x00e00fcf, 0x0fc90188,
417 	0x00ca0fd4, 0x0fc6019c, 0x00b40fd8, 0x0fc601ae,
418 	0x009f0fdd, 0x0fc501bf, 0x008b0fe3, 0x0fc601cc,
419 	0x00780fe6, 0x0fc701db, 0x00660feb, 0x0fc801e7,
420 	0x00560fef, 0x0fcb01f0, 0x00460ff3, 0x0fcf01f8,
421 	0x00380ff6, 0x0fd401fe, 0x002c0ff9, 0x0fd90202,
422 	0x00200ffc, 0x0fdf0205, 0x00160ffe, 0x0fe60206,
423 	0x000c0000, 0x0fed0207, 0x00050000, 0x0ff70204,
424 	0x02000000, 0x00000000, 0x01fe0ff3, 0x0000000f,
425 	0x01f60fe5, 0x00000025, 0x01ea0fdb, 0x0ffd003e,
426 	0x01db0fd2, 0x0ffb0058, 0x01c80fcc, 0x0ff70075,
427 	0x01b50fc7, 0x0ff40090, 0x01a00fc3, 0x0ff000ad,
428 	0x01880fc1, 0x0feb00cc, 0x01700fc1, 0x0fe800e7,
429 	0x01550fc3, 0x0fe40104, 0x013b0fc5, 0x0fe2011e,
430 	0x01240fc6, 0x0fde0138, 0x010c0fca, 0x0fda0150,
431 	0x00f40fcd, 0x0fd90166, 0x00dd0fd1, 0x0fd7017b,
432 	0x00c80fd4, 0x0fd40190, 0x00b20fd9, 0x0fd401a1,
433 	0x009f0fdd, 0x0fd301b1, 0x008c0fe1, 0x0fd301c0,
434 	0x007b0fe5, 0x0fd301cd, 0x006a0fea, 0x0fd401d8,
435 	0x005c0fec, 0x0fd501e3, 0x004d0ff0, 0x0fd601ed,
436 	0x00410ff3, 0x0fd801f4, 0x00340ff7, 0x0fdb01fa,
437 	0x002a0ff9, 0x0fdf01fe, 0x00200ffb, 0x0fe30202,
438 	0x00180ffd, 0x0fe70204, 0x00100ffe, 0x0fed0205,
439 	0x00090000, 0x0ff20205, 0x00040000, 0x0ff90203,
440 	0x02000000, 0x00000000, 0x02050ff5, 0x00000006,
441 	0x02070fea, 0x0000000f, 0x02080fe1, 0x0ffd001a,
442 	0x02070fd8, 0x0ffb0026, 0x02030fd1, 0x0ff80034,
443 	0x01fe0fcb, 0x0ff40043, 0x01f60fc5, 0x0ff10054,
444 	0x01ee0fc0, 0x0feb0067, 0x01e20fbe, 0x0fe70079,
445 	0x01d40fbd, 0x0fe1008e, 0x01c40fbc, 0x0fdd00a3,
446 	0x01b40fbb, 0x0fd700ba, 0x01a20fbc, 0x0fd100d1,
447 	0x018d0fbd, 0x0fcd00e9, 0x01770fc0, 0x0fc80101,
448 	0x01630fc1, 0x0fc1011b, 0x01480fc7, 0x0fbf0132,
449 	0x01300fca, 0x0fba014c, 0x01170fce, 0x0fb80163,
450 	0x00fd0fd4, 0x0fb5017a, 0x00e20fda, 0x0fb5018f,
451 	0x00c80fdd, 0x0fb401a7, 0x00ae0fe4, 0x0fb401ba,
452 	0x00960fe8, 0x0fb601cc, 0x007c0fee, 0x0fba01dc,
453 	0x00650ff2, 0x0fc001e9, 0x00500ff6, 0x0fc701f3,
454 	0x003b0ffa, 0x0fcf01fc, 0x00290ffc, 0x0fda0201,
455 	0x00180000, 0x0fe40204, 0x000a0000, 0x0ff20204,
456 	0x02000000, 0x00000000, 0x02030ff5, 0x00000008,
457 	0x02030fea, 0x00000013, 0x02020fe1, 0x0ffd0020,
458 	0x01fc0fd9, 0x0ffc002f, 0x01f60fd2, 0x0ff80040,
459 	0x01ed0fcd, 0x0ff50051, 0x01e30fc7, 0x0ff10065,
460 	0x01d70fc3, 0x0fec007a, 0x01c60fc2, 0x0fe9008f,
461 	0x01b60fc1, 0x0fe300a6, 0x01a20fc1, 0x0fe000bd,
462 	0x018f0fc1, 0x0fdb00d5, 0x017b0fc2, 0x0fd500ee,
463 	0x01640fc4, 0x0fd20106, 0x014d0fc8, 0x0fce011d,
464 	0x01370fc9, 0x0fc90137, 0x011d0fce, 0x0fc8014d,
465 	0x01060fd2, 0x0fc40164, 0x00ee0fd5, 0x0fc2017b,
466 	0x00d50fdb, 0x0fc1018f, 0x00bd0fe0, 0x0fc101a2,
467 	0x00a60fe3, 0x0fc101b6, 0x008f0fe9, 0x0fc201c6,
468 	0x007a0fec, 0x0fc301d7, 0x00650ff1, 0x0fc701e3,
469 	0x00510ff5, 0x0fcd01ed, 0x00400ff8, 0x0fd201f6,
470 	0x002f0ffc, 0x0fd901fc, 0x00200ffd, 0x0fe10202,
471 	0x00130000, 0x0fea0203, 0x00080000, 0x0ff50203,
472 	0x02000000, 0x00000000, 0x02020ff5, 0x00000009,
473 	0x01ff0fea, 0x00000017, 0x01fb0fe2, 0x0ffd0026,
474 	0x01f30fda, 0x0ffc0037, 0x01ea0fd3, 0x0ff8004b,
475 	0x01df0fce, 0x0ff5005e, 0x01d10fc9, 0x0ff20074,
476 	0x01c10fc6, 0x0fed008c, 0x01ae0fc5, 0x0fea00a3,
477 	0x019b0fc5, 0x0fe500bb, 0x01850fc6, 0x0fe200d3,
478 	0x01700fc6, 0x0fde00ec, 0x015a0fc8, 0x0fd90105,
479 	0x01430fca, 0x0fd6011d, 0x012b0fcd, 0x0fd30135,
480 	0x01150fcf, 0x0fcf014d, 0x00fc0fd4, 0x0fce0162,
481 	0x00e50fd8, 0x0fcc0177, 0x00cf0fdb, 0x0fca018c,
482 	0x00b80fe0, 0x0fc9019f, 0x00a20fe5, 0x0fca01af,
483 	0x008e0fe8, 0x0fcb01bf, 0x00790fec, 0x0fcb01d0,
484 	0x00670fef, 0x0fcd01dd, 0x00550ff4, 0x0fd001e7,
485 	0x00440ff7, 0x0fd501f0, 0x00350ffa, 0x0fda01f7,
486 	0x00270ffc, 0x0fdf01fe, 0x001b0ffe, 0x0fe70200,
487 	0x00100000, 0x0fee0202, 0x00060000, 0x0ff70203,
488 	0x02000000, 0x00000000, 0x01ff0ff5, 0x0000000c,
489 	0x01f80fea, 0x0000001e, 0x01ef0fe2, 0x0ffd0032,
490 	0x01e20fdb, 0x0ffc0047, 0x01d30fd5, 0x0ff9005f,
491 	0x01c20fd1, 0x0ff60077, 0x01b00fcd, 0x0ff30090,
492 	0x019b0fcb, 0x0fef00ab, 0x01850fcb, 0x0fec00c4,
493 	0x016e0fcc, 0x0fe800de, 0x01550fcd, 0x0fe600f8,
494 	0x013f0fce, 0x0fe20111, 0x01280fd0, 0x0fdf0129,
495 	0x01110fd2, 0x0fdd0140, 0x00f90fd6, 0x0fdb0156,
496 	0x00e40fd8, 0x0fd8016c, 0x00cd0fdd, 0x0fd8017e,
497 	0x00b80fe0, 0x0fd60192, 0x00a40fe3, 0x0fd601a3,
498 	0x00910fe7, 0x0fd501b3, 0x007f0feb, 0x0fd601c0,
499 	0x006e0fed, 0x0fd701ce, 0x005d0ff1, 0x0fd701db,
500 	0x004f0ff3, 0x0fd901e5, 0x00400ff7, 0x0fdc01ed,
501 	0x00330ff9, 0x0fe001f4, 0x00280ffb, 0x0fe301fa,
502 	0x001d0ffd, 0x0fe801fe, 0x00140ffe, 0x0fed0201,
503 	0x000c0000, 0x0ff20202, 0x00050000, 0x0ff90202,
504 	0x02000000, 0x00000000, 0x02040ff7, 0x00000005,
505 	0x02070fed, 0x0000000c, 0x02060fe6, 0x0ffe0016,
506 	0x02050fdf, 0x0ffc0020, 0x02020fd9, 0x0ff9002c,
507 	0x01fe0fd4, 0x0ff60038, 0x01f80fcf, 0x0ff30046,
508 	0x01f00fcb, 0x0fef0056, 0x01e70fc8, 0x0feb0066,
509 	0x01db0fc7, 0x0fe60078, 0x01cc0fc6, 0x0fe3008b,
510 	0x01bf0fc5, 0x0fdd009f, 0x01ae0fc6, 0x0fd800b4,
511 	0x019c0fc6, 0x0fd400ca, 0x01880fc9, 0x0fcf00e0,
512 	0x01750fc9, 0x0fc900f9, 0x015d0fce, 0x0fc6010f,
513 	0x01460fd0, 0x0fc20128, 0x012e0fd3, 0x0fbf0140,
514 	0x01140fd8, 0x0fbc0158, 0x00f90fdd, 0x0fbb016f,
515 	0x00df0fe0, 0x0fba0187, 0x00c40fe5, 0x0fb9019e,
516 	0x00aa0fe9, 0x0fba01b3, 0x008e0fef, 0x0fbd01c6,
517 	0x00740ff3, 0x0fc301d6, 0x005d0ff6, 0x0fc801e5,
518 	0x00450ffa, 0x0fd001f1, 0x00300ffc, 0x0fda01fa,
519 	0x001c0000, 0x0fe40200, 0x000c0000, 0x0ff20202,
520 	0x02000000, 0x00000000, 0x02030ff7, 0x00000006,
521 	0x02020fee, 0x00000010, 0x02000fe7, 0x0ffe001b,
522 	0x01fe0fdf, 0x0ffc0027, 0x01f70fda, 0x0ffa0035,
523 	0x01f00fd5, 0x0ff70044, 0x01e70fd0, 0x0ff40055,
524 	0x01dd0fcd, 0x0fef0067, 0x01d00fcb, 0x0fec0079,
525 	0x01bf0fcb, 0x0fe8008e, 0x01af0fca, 0x0fe500a2,
526 	0x019f0fc9, 0x0fe000b8, 0x018c0fca, 0x0fdb00cf,
527 	0x01770fcc, 0x0fd800e5, 0x01620fce, 0x0fd400fc,
528 	0x014d0fcf, 0x0fcf0115, 0x01350fd3, 0x0fcd012b,
529 	0x011d0fd6, 0x0fca0143, 0x01050fd9, 0x0fc8015a,
530 	0x00ec0fde, 0x0fc60170, 0x00d30fe2, 0x0fc60185,
531 	0x00bb0fe5, 0x0fc5019b, 0x00a30fea, 0x0fc501ae,
532 	0x008c0fed, 0x0fc601c1, 0x00740ff2, 0x0fc901d1,
533 	0x005e0ff5, 0x0fce01df, 0x004b0ff8, 0x0fd301ea,
534 	0x00370ffc, 0x0fda01f3, 0x00260ffd, 0x0fe201fb,
535 	0x00170000, 0x0fea01ff, 0x00090000, 0x0ff50202,
536 	0x02000000, 0x00000000, 0x02010ff7, 0x00000008,
537 	0x01ff0fee, 0x00000013, 0x01fb0fe7, 0x0ffe0020,
538 	0x01f60fe0, 0x0ffc002e, 0x01ed0fda, 0x0ffa003f,
539 	0x01e40fd6, 0x0ff7004f, 0x01d80fd2, 0x0ff40062,
540 	0x01ca0fcf, 0x0ff00077, 0x01bb0fcd, 0x0fed008b,
541 	0x01a90fcd, 0x0fe900a1, 0x01960fcd, 0x0fe600b7,
542 	0x01830fcd, 0x0fe200ce, 0x016d0fcf, 0x0fde00e6,
543 	0x01580fd0, 0x0fdb00fd, 0x01410fd3, 0x0fd80114,
544 	0x012c0fd4, 0x0fd4012c, 0x01140fd8, 0x0fd30141,
545 	0x00fd0fdb, 0x0fd00158, 0x00e60fde, 0x0fcf016d,
546 	0x00ce0fe2, 0x0fcd0183, 0x00b70fe6, 0x0fcd0196,
547 	0x00a10fe9, 0x0fcd01a9, 0x008b0fed, 0x0fcd01bb,
548 	0x00770ff0, 0x0fcf01ca, 0x00620ff4, 0x0fd201d8,
549 	0x004f0ff7, 0x0fd601e4, 0x003f0ffa, 0x0fda01ed,
550 	0x002e0ffc, 0x0fe001f6, 0x00200ffe, 0x0fe701fb,
551 	0x00130000, 0x0fee01ff, 0x00080000, 0x0ff70201,
552 	0x02000000, 0x00000000, 0x01ff0ff7, 0x0000000a,
553 	0x01f90fee, 0x00000019, 0x01f10fe7, 0x0ffe002a,
554 	0x01e60fe1, 0x0ffd003c, 0x01d90fdc, 0x0ffa0051,
555 	0x01cc0fd8, 0x0ff70065, 0x01bb0fd5, 0x0ff5007b,
556 	0x01a80fd3, 0x0ff10094, 0x01950fd2, 0x0fef00aa,
557 	0x01800fd2, 0x0feb00c3, 0x016a0fd3, 0x0fe900da,
558 	0x01540fd3, 0x0fe600f3, 0x013f0fd5, 0x0fe2010a,
559 	0x01280fd7, 0x0fe00121, 0x01100fda, 0x0fde0138,
560 	0x00fb0fdb, 0x0fdb014f, 0x00e40fdf, 0x0fdb0162,
561 	0x00ce0fe2, 0x0fd90177, 0x00b90fe4, 0x0fd8018b,
562 	0x00a50fe8, 0x0fd8019b, 0x00910fec, 0x0fd801ab,
563 	0x007e0fee, 0x0fd801bc, 0x006c0ff2, 0x0fd901c9,
564 	0x005c0ff4, 0x0fda01d6, 0x004b0ff7, 0x0fdd01e1,
565 	0x003c0ff9, 0x0fe001eb, 0x002f0ffb, 0x0fe401f2,
566 	0x00230ffd, 0x0fe801f8, 0x00180ffe, 0x0fed01fd,
567 	0x000e0000, 0x0ff20200, 0x00060000, 0x0ff90201,
568 	0x02000000, 0x00000000, 0x02030ff9, 0x00000004,
569 	0x02050ff2, 0x00000009, 0x02050fed, 0x0ffe0010,
570 	0x02040fe7, 0x0ffd0018, 0x02020fe3, 0x0ffb0020,
571 	0x01fe0fdf, 0x0ff9002a, 0x01fa0fdb, 0x0ff70034,
572 	0x01f40fd8, 0x0ff30041, 0x01ed0fd6, 0x0ff0004d,
573 	0x01e30fd5, 0x0fec005c, 0x01d80fd4, 0x0fea006a,
574 	0x01cd0fd3, 0x0fe5007b, 0x01c00fd3, 0x0fe1008c,
575 	0x01b10fd3, 0x0fdd009f, 0x01a10fd4, 0x0fd900b2,
576 	0x01900fd4, 0x0fd400c8, 0x017b0fd7, 0x0fd100dd,
577 	0x01660fd9, 0x0fcd00f4, 0x01500fda, 0x0fca010c,
578 	0x01380fde, 0x0fc60124, 0x011e0fe2, 0x0fc5013b,
579 	0x01040fe4, 0x0fc30155, 0x00e70fe8, 0x0fc10170,
580 	0x00cc0feb, 0x0fc10188, 0x00ad0ff0, 0x0fc301a0,
581 	0x00900ff4, 0x0fc701b5, 0x00750ff7, 0x0fcc01c8,
582 	0x00580ffb, 0x0fd201db, 0x003e0ffd, 0x0fdb01ea,
583 	0x00250000, 0x0fe501f6, 0x000f0000, 0x0ff301fe,
584 	0x02000000, 0x00000000, 0x02020ff9, 0x00000005,
585 	0x02020ff2, 0x0000000c, 0x02010fed, 0x0ffe0014,
586 	0x01fe0fe8, 0x0ffd001d, 0x01fa0fe3, 0x0ffb0028,
587 	0x01f40fe0, 0x0ff90033, 0x01ed0fdc, 0x0ff70040,
588 	0x01e50fd9, 0x0ff3004f, 0x01db0fd7, 0x0ff1005d,
589 	0x01ce0fd7, 0x0fed006e, 0x01c00fd6, 0x0feb007f,
590 	0x01b30fd5, 0x0fe70091, 0x01a30fd6, 0x0fe300a4,
591 	0x01920fd6, 0x0fe000b8, 0x017e0fd8, 0x0fdd00cd,
592 	0x016c0fd8, 0x0fd800e4, 0x01560fdb, 0x0fd600f9,
593 	0x01400fdd, 0x0fd20111, 0x01290fdf, 0x0fd00128,
594 	0x01110fe2, 0x0fce013f, 0x00f80fe6, 0x0fcd0155,
595 	0x00de0fe8, 0x0fcc016e, 0x00c40fec, 0x0fcb0185,
596 	0x00ab0fef, 0x0fcb019b, 0x00900ff3, 0x0fcd01b0,
597 	0x00770ff6, 0x0fd101c2, 0x005f0ff9, 0x0fd501d3,
598 	0x00470ffc, 0x0fdb01e2, 0x00320ffd, 0x0fe201ef,
599 	0x001e0000, 0x0fea01f8, 0x000c0000, 0x0ff501ff,
600 	0x02000000, 0x00000000, 0x02010ff9, 0x00000006,
601 	0x02000ff2, 0x0000000e, 0x01fd0fed, 0x0ffe0018,
602 	0x01f80fe8, 0x0ffd0023, 0x01f20fe4, 0x0ffb002f,
603 	0x01eb0fe0, 0x0ff9003c, 0x01e10fdd, 0x0ff7004b,
604 	0x01d60fda, 0x0ff4005c, 0x01c90fd9, 0x0ff2006c,
605 	0x01bc0fd8, 0x0fee007e, 0x01ab0fd8, 0x0fec0091,
606 	0x019b0fd8, 0x0fe800a5, 0x018b0fd8, 0x0fe400b9,
607 	0x01770fd9, 0x0fe200ce, 0x01620fdb, 0x0fdf00e4,
608 	0x014f0fdb, 0x0fdb00fb, 0x01380fde, 0x0fda0110,
609 	0x01210fe0, 0x0fd70128, 0x010a0fe2, 0x0fd5013f,
610 	0x00f30fe6, 0x0fd30154, 0x00da0fe9, 0x0fd3016a,
611 	0x00c30feb, 0x0fd20180, 0x00aa0fef, 0x0fd20195,
612 	0x00940ff1, 0x0fd301a8, 0x007b0ff5, 0x0fd501bb,
613 	0x00650ff7, 0x0fd801cc, 0x00510ffa, 0x0fdc01d9,
614 	0x003c0ffd, 0x0fe101e6, 0x002a0ffe, 0x0fe701f1,
615 	0x00190000, 0x0fee01f9, 0x000a0000, 0x0ff701ff,
616 	0x02000000, 0x00000000, 0x01ff0ff9, 0x00000008,
617 	0x01fb0ff2, 0x00000013, 0x01f50fed, 0x0ffe0020,
618 	0x01ed0fe8, 0x0ffd002e, 0x01e30fe4, 0x0ffb003e,
619 	0x01d80fe1, 0x0ff9004e, 0x01cb0fde, 0x0ff70060,
620 	0x01bc0fdc, 0x0ff40074, 0x01ac0fdb, 0x0ff20087,
621 	0x019a0fdb, 0x0fef009c, 0x01870fdb, 0x0fed00b1,
622 	0x01740fdb, 0x0fea00c7, 0x01600fdc, 0x0fe700dd,
623 	0x014b0fdd, 0x0fe500f3, 0x01350fdf, 0x0fe30109,
624 	0x01200fe0, 0x0fe00120, 0x01090fe3, 0x0fdf0135,
625 	0x00f30fe5, 0x0fdd014b, 0x00dd0fe7, 0x0fdc0160,
626 	0x00c70fea, 0x0fdb0174, 0x00b10fed, 0x0fdb0187,
627 	0x009c0fef, 0x0fdb019a, 0x00870ff2, 0x0fdb01ac,
628 	0x00740ff4, 0x0fdc01bc, 0x00600ff7, 0x0fde01cb,
629 	0x004e0ff9, 0x0fe101d8, 0x003e0ffb, 0x0fe401e3,
630 	0x002e0ffd, 0x0fe801ed, 0x00200ffe, 0x0fed01f5,
631 	0x00130000, 0x0ff201fb, 0x00080000, 0x0ff901ff,
632 	0x02000000, 0x00000000, 0x02060ff2, 0x00000008,
633 	0x02090fe4, 0x00000013, 0x020a0fd9, 0x0ffc0021,
634 	0x02080fce, 0x0ffa0030, 0x02030fc5, 0x0ff60042,
635 	0x01fd0fbe, 0x0ff10054, 0x01f50fb6, 0x0fed0068,
636 	0x01e90fb1, 0x0fe60080, 0x01dc0fae, 0x0fe10095,
637 	0x01ca0fae, 0x0fda00ae, 0x01b70fad, 0x0fd600c6,
638 	0x01a40fad, 0x0fcf00e0, 0x018f0faf, 0x0fc800fa,
639 	0x01780fb1, 0x0fc30114, 0x015f0fb5, 0x0fbf012d,
640 	0x01490fb7, 0x0fb70149, 0x012d0fbf, 0x0fb5015f,
641 	0x01140fc3, 0x0fb10178, 0x00fa0fc8, 0x0faf018f,
642 	0x00e00fcf, 0x0fad01a4, 0x00c60fd6, 0x0fad01b7,
643 	0x00ae0fda, 0x0fae01ca, 0x00950fe1, 0x0fae01dc,
644 	0x00800fe6, 0x0fb101e9, 0x00680fed, 0x0fb601f5,
645 	0x00540ff1, 0x0fbe01fd, 0x00420ff6, 0x0fc50203,
646 	0x00300ffa, 0x0fce0208, 0x00210ffc, 0x0fd9020a,
647 	0x00130000, 0x0fe40209, 0x00080000, 0x0ff20206,
648 	0x02000000, 0x00000000, 0x02040ff2, 0x0000000a,
649 	0x02040fe4, 0x00000018, 0x02010fda, 0x0ffc0029,
650 	0x01fc0fcf, 0x0ffa003b, 0x01f30fc7, 0x0ff60050,
651 	0x01e90fc0, 0x0ff20065, 0x01dc0fba, 0x0fee007c,
652 	0x01cc0fb6, 0x0fe80096, 0x01ba0fb4, 0x0fe400ae,
653 	0x01a70fb4, 0x0fdd00c8, 0x018f0fb5, 0x0fda00e2,
654 	0x017a0fb5, 0x0fd400fd, 0x01630fb8, 0x0fce0117,
655 	0x014c0fba, 0x0fca0130, 0x01320fbf, 0x0fc70148,
656 	0x011b0fc1, 0x0fc10163, 0x01010fc8, 0x0fc00177,
657 	0x00e90fcd, 0x0fbd018d, 0x00d10fd1, 0x0fbc01a2,
658 	0x00ba0fd7, 0x0fbb01b4, 0x00a30fdd, 0x0fbc01c4,
659 	0x008e0fe1, 0x0fbd01d4, 0x00790fe7, 0x0fbe01e2,
660 	0x00670feb, 0x0fc001ee, 0x00540ff1, 0x0fc501f6,
661 	0x00430ff4, 0x0fcb01fe, 0x00340ff8, 0x0fd10203,
662 	0x00260ffb, 0x0fd80207, 0x001a0ffd, 0x0fe10208,
663 	0x000f0000, 0x0fea0207, 0x00060000, 0x0ff50205,
664 	0x02000000, 0x00000000, 0x02020ff2, 0x0000000c,
665 	0x02000fe4, 0x0000001c, 0x01fa0fda, 0x0ffc0030,
666 	0x01f10fd0, 0x0ffa0045, 0x01e50fc8, 0x0ff6005d,
667 	0x01d60fc3, 0x0ff30074, 0x01c60fbd, 0x0fef008e,
668 	0x01b30fba, 0x0fe900aa, 0x019e0fb9, 0x0fe500c4,
669 	0x01870fba, 0x0fe000df, 0x016f0fbb, 0x0fdd00f9,
670 	0x01580fbc, 0x0fd80114, 0x01400fbf, 0x0fd3012e,
671 	0x01280fc2, 0x0fd00146, 0x010f0fc6, 0x0fce015d,
672 	0x00f90fc9, 0x0fc90175, 0x00e00fcf, 0x0fc90188,
673 	0x00ca0fd4, 0x0fc6019c, 0x00b40fd8, 0x0fc601ae,
674 	0x009f0fdd, 0x0fc501bf, 0x008b0fe3, 0x0fc601cc,
675 	0x00780fe6, 0x0fc701db, 0x00660feb, 0x0fc801e7,
676 	0x00560fef, 0x0fcb01f0, 0x00460ff3, 0x0fcf01f8,
677 	0x00380ff6, 0x0fd401fe, 0x002c0ff9, 0x0fd90202,
678 	0x00200ffc, 0x0fdf0205, 0x00160ffe, 0x0fe60206,
679 	0x000c0000, 0x0fed0207, 0x00050000, 0x0ff70204,
680 	0x02000000, 0x00000000, 0x01fe0ff3, 0x0000000f,
681 	0x01f60fe5, 0x00000025, 0x01ea0fdb, 0x0ffd003e,
682 	0x01db0fd2, 0x0ffb0058, 0x01c80fcc, 0x0ff70075,
683 	0x01b50fc7, 0x0ff40090, 0x01a00fc3, 0x0ff000ad,
684 	0x01880fc1, 0x0feb00cc, 0x01700fc1, 0x0fe800e7,
685 	0x01550fc3, 0x0fe40104, 0x013b0fc5, 0x0fe2011e,
686 	0x01240fc6, 0x0fde0138, 0x010c0fca, 0x0fda0150,
687 	0x00f40fcd, 0x0fd90166, 0x00dd0fd1, 0x0fd7017b,
688 	0x00c80fd4, 0x0fd40190, 0x00b20fd9, 0x0fd401a1,
689 	0x009f0fdd, 0x0fd301b1, 0x008c0fe1, 0x0fd301c0,
690 	0x007b0fe5, 0x0fd301cd, 0x006a0fea, 0x0fd401d8,
691 	0x005c0fec, 0x0fd501e3, 0x004d0ff0, 0x0fd601ed,
692 	0x00410ff3, 0x0fd801f4, 0x00340ff7, 0x0fdb01fa,
693 	0x002a0ff9, 0x0fdf01fe, 0x00200ffb, 0x0fe30202,
694 	0x00180ffd, 0x0fe70204, 0x00100ffe, 0x0fed0205,
695 	0x00090000, 0x0ff20205, 0x00040000, 0x0ff90203,
696 	0x02000000, 0x00000000, 0x02050ff5, 0x00000006,
697 	0x02070fea, 0x0000000f, 0x02080fe1, 0x0ffd001a,
698 	0x02070fd8, 0x0ffb0026, 0x02030fd1, 0x0ff80034,
699 	0x01fe0fcb, 0x0ff40043, 0x01f60fc5, 0x0ff10054,
700 	0x01ee0fc0, 0x0feb0067, 0x01e20fbe, 0x0fe70079,
701 	0x01d40fbd, 0x0fe1008e, 0x01c40fbc, 0x0fdd00a3,
702 	0x01b40fbb, 0x0fd700ba, 0x01a20fbc, 0x0fd100d1,
703 	0x018d0fbd, 0x0fcd00e9, 0x01770fc0, 0x0fc80101,
704 	0x01630fc1, 0x0fc1011b, 0x01480fc7, 0x0fbf0132,
705 	0x01300fca, 0x0fba014c, 0x01170fce, 0x0fb80163,
706 	0x00fd0fd4, 0x0fb5017a, 0x00e20fda, 0x0fb5018f,
707 	0x00c80fdd, 0x0fb401a7, 0x00ae0fe4, 0x0fb401ba,
708 	0x00960fe8, 0x0fb601cc, 0x007c0fee, 0x0fba01dc,
709 	0x00650ff2, 0x0fc001e9, 0x00500ff6, 0x0fc701f3,
710 	0x003b0ffa, 0x0fcf01fc, 0x00290ffc, 0x0fda0201,
711 	0x00180000, 0x0fe40204, 0x000a0000, 0x0ff20204,
712 	0x02000000, 0x00000000, 0x02030ff5, 0x00000008,
713 	0x02030fea, 0x00000013, 0x02020fe1, 0x0ffd0020,
714 	0x01fc0fd9, 0x0ffc002f, 0x01f60fd2, 0x0ff80040,
715 	0x01ed0fcd, 0x0ff50051, 0x01e30fc7, 0x0ff10065,
716 	0x01d70fc3, 0x0fec007a, 0x01c60fc2, 0x0fe9008f,
717 	0x01b60fc1, 0x0fe300a6, 0x01a20fc1, 0x0fe000bd,
718 	0x018f0fc1, 0x0fdb00d5, 0x017b0fc2, 0x0fd500ee,
719 	0x01640fc4, 0x0fd20106, 0x014d0fc8, 0x0fce011d,
720 	0x01370fc9, 0x0fc90137, 0x011d0fce, 0x0fc8014d,
721 	0x01060fd2, 0x0fc40164, 0x00ee0fd5, 0x0fc2017b,
722 	0x00d50fdb, 0x0fc1018f, 0x00bd0fe0, 0x0fc101a2,
723 	0x00a60fe3, 0x0fc101b6, 0x008f0fe9, 0x0fc201c6,
724 	0x007a0fec, 0x0fc301d7, 0x00650ff1, 0x0fc701e3,
725 	0x00510ff5, 0x0fcd01ed, 0x00400ff8, 0x0fd201f6,
726 	0x002f0ffc, 0x0fd901fc, 0x00200ffd, 0x0fe10202,
727 	0x00130000, 0x0fea0203, 0x00080000, 0x0ff50203,
728 	0x02000000, 0x00000000, 0x02020ff5, 0x00000009,
729 	0x01ff0fea, 0x00000017, 0x01fb0fe2, 0x0ffd0026,
730 	0x01f30fda, 0x0ffc0037, 0x01ea0fd3, 0x0ff8004b,
731 	0x01df0fce, 0x0ff5005e, 0x01d10fc9, 0x0ff20074,
732 	0x01c10fc6, 0x0fed008c, 0x01ae0fc5, 0x0fea00a3,
733 	0x019b0fc5, 0x0fe500bb, 0x01850fc6, 0x0fe200d3,
734 	0x01700fc6, 0x0fde00ec, 0x015a0fc8, 0x0fd90105,
735 	0x01430fca, 0x0fd6011d, 0x012b0fcd, 0x0fd30135,
736 	0x01150fcf, 0x0fcf014d, 0x00fc0fd4, 0x0fce0162,
737 	0x00e50fd8, 0x0fcc0177, 0x00cf0fdb, 0x0fca018c,
738 	0x00b80fe0, 0x0fc9019f, 0x00a20fe5, 0x0fca01af,
739 	0x008e0fe8, 0x0fcb01bf, 0x00790fec, 0x0fcb01d0,
740 	0x00670fef, 0x0fcd01dd, 0x00550ff4, 0x0fd001e7,
741 	0x00440ff7, 0x0fd501f0, 0x00350ffa, 0x0fda01f7,
742 	0x00270ffc, 0x0fdf01fe, 0x001b0ffe, 0x0fe70200,
743 	0x00100000, 0x0fee0202, 0x00060000, 0x0ff70203,
744 	0x02000000, 0x00000000, 0x01ff0ff5, 0x0000000c,
745 	0x01f80fea, 0x0000001e, 0x01ef0fe2, 0x0ffd0032,
746 	0x01e20fdb, 0x0ffc0047, 0x01d30fd5, 0x0ff9005f,
747 	0x01c20fd1, 0x0ff60077, 0x01b00fcd, 0x0ff30090,
748 	0x019b0fcb, 0x0fef00ab, 0x01850fcb, 0x0fec00c4,
749 	0x016e0fcc, 0x0fe800de, 0x01550fcd, 0x0fe600f8,
750 	0x013f0fce, 0x0fe20111, 0x01280fd0, 0x0fdf0129,
751 	0x01110fd2, 0x0fdd0140, 0x00f90fd6, 0x0fdb0156,
752 	0x00e40fd8, 0x0fd8016c, 0x00cd0fdd, 0x0fd8017e,
753 	0x00b80fe0, 0x0fd60192, 0x00a40fe3, 0x0fd601a3,
754 	0x00910fe7, 0x0fd501b3, 0x007f0feb, 0x0fd601c0,
755 	0x006e0fed, 0x0fd701ce, 0x005d0ff1, 0x0fd701db,
756 	0x004f0ff3, 0x0fd901e5, 0x00400ff7, 0x0fdc01ed,
757 	0x00330ff9, 0x0fe001f4, 0x00280ffb, 0x0fe301fa,
758 	0x001d0ffd, 0x0fe801fe, 0x00140ffe, 0x0fed0201,
759 	0x000c0000, 0x0ff20202, 0x00050000, 0x0ff90202,
760 	0x02000000, 0x00000000, 0x02040ff7, 0x00000005,
761 	0x02070fed, 0x0000000c, 0x02060fe6, 0x0ffe0016,
762 	0x02050fdf, 0x0ffc0020, 0x02020fd9, 0x0ff9002c,
763 	0x01fe0fd4, 0x0ff60038, 0x01f80fcf, 0x0ff30046,
764 	0x01f00fcb, 0x0fef0056, 0x01e70fc8, 0x0feb0066,
765 	0x01db0fc7, 0x0fe60078, 0x01cc0fc6, 0x0fe3008b,
766 	0x01bf0fc5, 0x0fdd009f, 0x01ae0fc6, 0x0fd800b4,
767 	0x019c0fc6, 0x0fd400ca, 0x01880fc9, 0x0fcf00e0,
768 	0x01750fc9, 0x0fc900f9, 0x015d0fce, 0x0fc6010f,
769 	0x01460fd0, 0x0fc20128, 0x012e0fd3, 0x0fbf0140,
770 	0x01140fd8, 0x0fbc0158, 0x00f90fdd, 0x0fbb016f,
771 	0x00df0fe0, 0x0fba0187, 0x00c40fe5, 0x0fb9019e,
772 	0x00aa0fe9, 0x0fba01b3, 0x008e0fef, 0x0fbd01c6,
773 	0x00740ff3, 0x0fc301d6, 0x005d0ff6, 0x0fc801e5,
774 	0x00450ffa, 0x0fd001f1, 0x00300ffc, 0x0fda01fa,
775 	0x001c0000, 0x0fe40200, 0x000c0000, 0x0ff20202,
776 	0x02000000, 0x00000000, 0x02030ff7, 0x00000006,
777 	0x02020fee, 0x00000010, 0x02000fe7, 0x0ffe001b,
778 	0x01fe0fdf, 0x0ffc0027, 0x01f70fda, 0x0ffa0035,
779 	0x01f00fd5, 0x0ff70044, 0x01e70fd0, 0x0ff40055,
780 	0x01dd0fcd, 0x0fef0067, 0x01d00fcb, 0x0fec0079,
781 	0x01bf0fcb, 0x0fe8008e, 0x01af0fca, 0x0fe500a2,
782 	0x019f0fc9, 0x0fe000b8, 0x018c0fca, 0x0fdb00cf,
783 	0x01770fcc, 0x0fd800e5, 0x01620fce, 0x0fd400fc,
784 	0x014d0fcf, 0x0fcf0115, 0x01350fd3, 0x0fcd012b,
785 	0x011d0fd6, 0x0fca0143, 0x01050fd9, 0x0fc8015a,
786 	0x00ec0fde, 0x0fc60170, 0x00d30fe2, 0x0fc60185,
787 	0x00bb0fe5, 0x0fc5019b, 0x00a30fea, 0x0fc501ae,
788 	0x008c0fed, 0x0fc601c1, 0x00740ff2, 0x0fc901d1,
789 	0x005e0ff5, 0x0fce01df, 0x004b0ff8, 0x0fd301ea,
790 	0x00370ffc, 0x0fda01f3, 0x00260ffd, 0x0fe201fb,
791 	0x00170000, 0x0fea01ff, 0x00090000, 0x0ff50202,
792 	0x02000000, 0x00000000, 0x02010ff7, 0x00000008,
793 	0x01ff0fee, 0x00000013, 0x01fb0fe7, 0x0ffe0020,
794 	0x01f60fe0, 0x0ffc002e, 0x01ed0fda, 0x0ffa003f,
795 	0x01e40fd6, 0x0ff7004f, 0x01d80fd2, 0x0ff40062,
796 	0x01ca0fcf, 0x0ff00077, 0x01bb0fcd, 0x0fed008b,
797 	0x01a90fcd, 0x0fe900a1, 0x01960fcd, 0x0fe600b7,
798 	0x01830fcd, 0x0fe200ce, 0x016d0fcf, 0x0fde00e6,
799 	0x01580fd0, 0x0fdb00fd, 0x01410fd3, 0x0fd80114,
800 	0x012c0fd4, 0x0fd4012c, 0x01140fd8, 0x0fd30141,
801 	0x00fd0fdb, 0x0fd00158, 0x00e60fde, 0x0fcf016d,
802 	0x00ce0fe2, 0x0fcd0183, 0x00b70fe6, 0x0fcd0196,
803 	0x00a10fe9, 0x0fcd01a9, 0x008b0fed, 0x0fcd01bb,
804 	0x00770ff0, 0x0fcf01ca, 0x00620ff4, 0x0fd201d8,
805 	0x004f0ff7, 0x0fd601e4, 0x003f0ffa, 0x0fda01ed,
806 	0x002e0ffc, 0x0fe001f6, 0x00200ffe, 0x0fe701fb,
807 	0x00130000, 0x0fee01ff, 0x00080000, 0x0ff70201,
808 	0x02000000, 0x00000000, 0x01ff0ff7, 0x0000000a,
809 	0x01f90fee, 0x00000019, 0x01f10fe7, 0x0ffe002a,
810 	0x01e60fe1, 0x0ffd003c, 0x01d90fdc, 0x0ffa0051,
811 	0x01cc0fd8, 0x0ff70065, 0x01bb0fd5, 0x0ff5007b,
812 	0x01a80fd3, 0x0ff10094, 0x01950fd2, 0x0fef00aa,
813 	0x01800fd2, 0x0feb00c3, 0x016a0fd3, 0x0fe900da,
814 	0x01540fd3, 0x0fe600f3, 0x013f0fd5, 0x0fe2010a,
815 	0x01280fd7, 0x0fe00121, 0x01100fda, 0x0fde0138,
816 	0x00fb0fdb, 0x0fdb014f, 0x00e40fdf, 0x0fdb0162,
817 	0x00ce0fe2, 0x0fd90177, 0x00b90fe4, 0x0fd8018b,
818 	0x00a50fe8, 0x0fd8019b, 0x00910fec, 0x0fd801ab,
819 	0x007e0fee, 0x0fd801bc, 0x006c0ff2, 0x0fd901c9,
820 	0x005c0ff4, 0x0fda01d6, 0x004b0ff7, 0x0fdd01e1,
821 	0x003c0ff9, 0x0fe001eb, 0x002f0ffb, 0x0fe401f2,
822 	0x00230ffd, 0x0fe801f8, 0x00180ffe, 0x0fed01fd,
823 	0x000e0000, 0x0ff20200, 0x00060000, 0x0ff90201,
824 	0x02000000, 0x00000000, 0x02030ff9, 0x00000004,
825 	0x02050ff2, 0x00000009, 0x02050fed, 0x0ffe0010,
826 	0x02040fe7, 0x0ffd0018, 0x02020fe3, 0x0ffb0020,
827 	0x01fe0fdf, 0x0ff9002a, 0x01fa0fdb, 0x0ff70034,
828 	0x01f40fd8, 0x0ff30041, 0x01ed0fd6, 0x0ff0004d,
829 	0x01e30fd5, 0x0fec005c, 0x01d80fd4, 0x0fea006a,
830 	0x01cd0fd3, 0x0fe5007b, 0x01c00fd3, 0x0fe1008c,
831 	0x01b10fd3, 0x0fdd009f, 0x01a10fd4, 0x0fd900b2,
832 	0x01900fd4, 0x0fd400c8, 0x017b0fd7, 0x0fd100dd,
833 	0x01660fd9, 0x0fcd00f4, 0x01500fda, 0x0fca010c,
834 	0x01380fde, 0x0fc60124, 0x011e0fe2, 0x0fc5013b,
835 	0x01040fe4, 0x0fc30155, 0x00e70fe8, 0x0fc10170,
836 	0x00cc0feb, 0x0fc10188, 0x00ad0ff0, 0x0fc301a0,
837 	0x00900ff4, 0x0fc701b5, 0x00750ff7, 0x0fcc01c8,
838 	0x00580ffb, 0x0fd201db, 0x003e0ffd, 0x0fdb01ea,
839 	0x00250000, 0x0fe501f6, 0x000f0000, 0x0ff301fe,
840 	0x02000000, 0x00000000, 0x02020ff9, 0x00000005,
841 	0x02020ff2, 0x0000000c, 0x02010fed, 0x0ffe0014,
842 	0x01fe0fe8, 0x0ffd001d, 0x01fa0fe3, 0x0ffb0028,
843 	0x01f40fe0, 0x0ff90033, 0x01ed0fdc, 0x0ff70040,
844 	0x01e50fd9, 0x0ff3004f, 0x01db0fd7, 0x0ff1005d,
845 	0x01ce0fd7, 0x0fed006e, 0x01c00fd6, 0x0feb007f,
846 	0x01b30fd5, 0x0fe70091, 0x01a30fd6, 0x0fe300a4,
847 	0x01920fd6, 0x0fe000b8, 0x017e0fd8, 0x0fdd00cd,
848 	0x016c0fd8, 0x0fd800e4, 0x01560fdb, 0x0fd600f9,
849 	0x01400fdd, 0x0fd20111, 0x01290fdf, 0x0fd00128,
850 	0x01110fe2, 0x0fce013f, 0x00f80fe6, 0x0fcd0155,
851 	0x00de0fe8, 0x0fcc016e, 0x00c40fec, 0x0fcb0185,
852 	0x00ab0fef, 0x0fcb019b, 0x00900ff3, 0x0fcd01b0,
853 	0x00770ff6, 0x0fd101c2, 0x005f0ff9, 0x0fd501d3,
854 	0x00470ffc, 0x0fdb01e2, 0x00320ffd, 0x0fe201ef,
855 	0x001e0000, 0x0fea01f8, 0x000c0000, 0x0ff501ff,
856 	0x02000000, 0x00000000, 0x02010ff9, 0x00000006,
857 	0x02000ff2, 0x0000000e, 0x01fd0fed, 0x0ffe0018,
858 	0x01f80fe8, 0x0ffd0023, 0x01f20fe4, 0x0ffb002f,
859 	0x01eb0fe0, 0x0ff9003c, 0x01e10fdd, 0x0ff7004b,
860 	0x01d60fda, 0x0ff4005c, 0x01c90fd9, 0x0ff2006c,
861 	0x01bc0fd8, 0x0fee007e, 0x01ab0fd8, 0x0fec0091,
862 	0x019b0fd8, 0x0fe800a5, 0x018b0fd8, 0x0fe400b9,
863 	0x01770fd9, 0x0fe200ce, 0x01620fdb, 0x0fdf00e4,
864 	0x014f0fdb, 0x0fdb00fb, 0x01380fde, 0x0fda0110,
865 	0x01210fe0, 0x0fd70128, 0x010a0fe2, 0x0fd5013f,
866 	0x00f30fe6, 0x0fd30154, 0x00da0fe9, 0x0fd3016a,
867 	0x00c30feb, 0x0fd20180, 0x00aa0fef, 0x0fd20195,
868 	0x00940ff1, 0x0fd301a8, 0x007b0ff5, 0x0fd501bb,
869 	0x00650ff7, 0x0fd801cc, 0x00510ffa, 0x0fdc01d9,
870 	0x003c0ffd, 0x0fe101e6, 0x002a0ffe, 0x0fe701f1,
871 	0x00190000, 0x0fee01f9, 0x000a0000, 0x0ff701ff,
872 	0x02000000, 0x00000000, 0x01ff0ff9, 0x00000008,
873 	0x01fb0ff2, 0x00000013, 0x01f50fed, 0x0ffe0020,
874 	0x01ed0fe8, 0x0ffd002e, 0x01e30fe4, 0x0ffb003e,
875 	0x01d80fe1, 0x0ff9004e, 0x01cb0fde, 0x0ff70060,
876 	0x01bc0fdc, 0x0ff40074, 0x01ac0fdb, 0x0ff20087,
877 	0x019a0fdb, 0x0fef009c, 0x01870fdb, 0x0fed00b1,
878 	0x01740fdb, 0x0fea00c7, 0x01600fdc, 0x0fe700dd,
879 	0x014b0fdd, 0x0fe500f3, 0x01350fdf, 0x0fe30109,
880 	0x01200fe0, 0x0fe00120, 0x01090fe3, 0x0fdf0135,
881 	0x00f30fe5, 0x0fdd014b, 0x00dd0fe7, 0x0fdc0160,
882 	0x00c70fea, 0x0fdb0174, 0x00b10fed, 0x0fdb0187,
883 	0x009c0fef, 0x0fdb019a, 0x00870ff2, 0x0fdb01ac,
884 	0x00740ff4, 0x0fdc01bc, 0x00600ff7, 0x0fde01cb,
885 	0x004e0ff9, 0x0fe101d8, 0x003e0ffb, 0x0fe401e3,
886 	0x002e0ffd, 0x0fe801ed, 0x00200ffe, 0x0fed01f5,
887 	0x00130000, 0x0ff201fb, 0x00080000, 0x0ff901ff
888 };
889 
890 
891 #define MDP4_QSEED_TABLE0_OFF 0x8100
892 #define MDP4_QSEED_TABLE1_OFF 0x8200
893 #define MDP4_QSEED_TABLE2_OFF 0x9000
894 
mdp4_vg_qseed_init(int vp_num)895 void mdp4_vg_qseed_init(int vp_num)
896 {
897 	uint32 *off;
898 	int i, voff;
899 
900 	voff = MDP4_VIDEO_OFF * vp_num;
901 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
902 						MDP4_QSEED_TABLE0_OFF);
903 	for (i = 0; i < (sizeof(vg_qseed_table0) / sizeof(uint32)); i++) {
904 		outpdw(off, vg_qseed_table0[i]);
905 		off++;
906 	}
907 
908 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
909 						MDP4_QSEED_TABLE1_OFF);
910 	for (i = 0; i < (sizeof(vg_qseed_table1) / sizeof(uint32)); i++) {
911 		outpdw(off, vg_qseed_table1[i]);
912 		off++;
913 	}
914 
915 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
916 						MDP4_QSEED_TABLE2_OFF);
917 	for (i = 0; i < (sizeof(vg_qseed_table2) / sizeof(uint32)); i++) {
918 		outpdw(off, vg_qseed_table2[i]);
919 		off++;
920 	}
921 
922 }
923 
mdp4_mixer_blend_init(mixer_num)924 void mdp4_mixer_blend_init(mixer_num)
925 {
926 	unsigned char *overlay_base;
927 	int off;
928 
929 	if (mixer_num) 	/* mixer number, /dev/fb0, /dev/fb1 */
930 		overlay_base = MDP_BASE + MDP4_OVERLAYPROC1_BASE;/* 0x18000 */
931 	else
932 		overlay_base = MDP_BASE + MDP4_OVERLAYPROC0_BASE;/* 0x10000 */
933 
934 	/* stage 0 to stage 2 */
935 	off = 0;
936 	outpdw(overlay_base + off + 0x104, 0x010);
937 	outpdw(overlay_base + off + 0x108, 0xff);/* FG */
938 	outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
939 
940 	off += 0x20;
941 	outpdw(overlay_base + off + 0x104, 0x010);
942 	outpdw(overlay_base + off + 0x108, 0xff);/* FG */
943 	outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
944 
945 	off += 0x20;
946 	outpdw(overlay_base + off + 0x104, 0x010);
947 	outpdw(overlay_base + off + 0x108, 0xff);/* FG */
948 	outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
949 }
950 
951 
952 static uint32 csc_matrix_tab[9] = {
953 	0x0254, 0x0000, 0x0331,
954 	0x0254, 0xff37, 0xfe60,
955 	0x0254, 0x0409, 0x0000
956 };
957 
958 static uint32 csc_pre_bv_tab[3] = {0xfff0, 0xff80, 0xff80 };
959 static uint32 csc_post_bv_tab[3] = {0, 0, 0 };
960 
961 static  uint32 csc_pre_lv_tab[6] =  {0, 0xff, 0, 0xff, 0, 0xff };
962 static  uint32 csc_post_lv_tab[6] = {0, 0xff, 0, 0xff, 0, 0xff };
963 
964 #define MDP4_CSC_MV_OFF 	0x4400
965 #define MDP4_CSC_PRE_BV_OFF 	0x4500
966 #define MDP4_CSC_POST_BV_OFF 	0x4580
967 #define MDP4_CSC_PRE_LV_OFF 	0x4600
968 #define MDP4_CSC_POST_LV_OFF 	0x4680
969 
mdp4_vg_csc_mv_setup(int vp_num)970 void mdp4_vg_csc_mv_setup(int vp_num)
971 {
972 	uint32 *off;
973 	int i, voff;
974 
975 	voff = MDP4_VIDEO_OFF * vp_num;
976 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
977 					MDP4_CSC_MV_OFF);
978 	for (i = 0; i < 9; i++) {
979 		outpdw(off, csc_matrix_tab[i]);
980 		off++;
981 	}
982 }
983 
mdp4_vg_csc_pre_bv_setup(int vp_num)984 void mdp4_vg_csc_pre_bv_setup(int vp_num)
985 {
986 	uint32 *off;
987 	int i, voff;
988 
989 	voff = MDP4_VIDEO_OFF * vp_num;
990 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
991 					MDP4_CSC_PRE_BV_OFF);
992 	for (i = 0; i < 3; i++) {
993 		outpdw(off, csc_pre_bv_tab[i]);
994 		off++;
995 	}
996 }
997 
mdp4_vg_csc_post_bv_setup(int vp_num)998 void mdp4_vg_csc_post_bv_setup(int vp_num)
999 {
1000 	uint32 *off;
1001 	int i, voff;
1002 
1003 	voff = MDP4_VIDEO_OFF * vp_num;
1004 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1005 					MDP4_CSC_POST_BV_OFF);
1006 	for (i = 0; i < 3; i++) {
1007 		outpdw(off, csc_post_bv_tab[i]);
1008 		off++;
1009 	}
1010 }
1011 
mdp4_vg_csc_pre_lv_setup(int vp_num)1012 void mdp4_vg_csc_pre_lv_setup(int vp_num)
1013 {
1014 	uint32 *off;
1015 	int i, voff;
1016 
1017 	voff = MDP4_VIDEO_OFF * vp_num;
1018 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1019 					MDP4_CSC_PRE_LV_OFF);
1020 
1021 	for (i = 0; i < 6; i++) {
1022 		outpdw(off, csc_pre_lv_tab[i]);
1023 		off++;
1024 	}
1025 }
1026 
mdp4_vg_csc_post_lv_setup(int vp_num)1027 void mdp4_vg_csc_post_lv_setup(int vp_num)
1028 {
1029 	uint32 *off;
1030 	int i, voff;
1031 
1032 	voff = MDP4_VIDEO_OFF * vp_num;
1033 	off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1034 					MDP4_CSC_POST_LV_OFF);
1035 
1036 	for (i = 0; i < 6; i++) {
1037 		outpdw(off, csc_post_lv_tab[i]);
1038 		off++;
1039 	}
1040 }
1041 
1042 char gc_lut[] = {
1043 	0x0, 0x1, 0x2, 0x2, 0x3, 0x4, 0x5, 0x6,
1044 	0x6, 0x7, 0x8, 0x9, 0xA, 0xA, 0xB, 0xC,
1045 	0xD, 0xD, 0xE, 0xF, 0xF, 0x10, 0x10, 0x11,
1046 	0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x15,
1047 	0x16, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x19,
1048 	0x19, 0x19, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C,
1049 	0x1C, 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F,
1050 	0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
1051 	0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24,
1052 	0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26,
1053 	0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28,
1054 	0x28, 0x29, 0x29, 0x29, 0x29, 0x2A, 0x2A, 0x2A,
1055 	0x2A, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2C, 0x2C,
1056 	0x2C, 0x2C, 0x2D, 0x2D, 0x2D, 0x2D, 0x2E, 0x2E,
1057 	0x2E, 0x2E, 0x2E, 0x2F, 0x2F, 0x2F, 0x2F, 0x30,
1058 	0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31,
1059 	0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33,
1060 	0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34,
1061 	0x35, 0x35, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36,
1062 	0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37,
1063 	0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39,
1064 	0x39, 0x39, 0x39, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A,
1065 	0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3C,
1066 	0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3D, 0x3D, 0x3D,
1067 	0x3D, 0x3D, 0x3D, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E,
1068 	0x3E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x40,
1069 	0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41,
1070 	0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42,
1071 	0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43,
1072 	0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
1073 	0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
1074 	0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47,
1075 	0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48,
1076 	0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49,
1077 	0x49, 0x49, 0x49, 0x49, 0x49, 0x4A, 0x4A, 0x4A,
1078 	0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4B, 0x4B, 0x4B,
1079 	0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x4C, 0x4C,
1080 	0x4C, 0x4C, 0x4C, 0x4C, 0x4D, 0x4D, 0x4D, 0x4D,
1081 	0x4D, 0x4D, 0x4D, 0x4D, 0x4E, 0x4E, 0x4E, 0x4E,
1082 	0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x4F, 0x4F,
1083 	0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x50, 0x50, 0x50,
1084 	0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51,
1085 	0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52,
1086 	0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53,
1087 	0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54,
1088 	0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
1089 	0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1090 	0x55, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
1091 	0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
1092 	0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58,
1093 	0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59,
1094 	0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x5A, 0x5A,
1095 	0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
1096 	0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B,
1097 	0x5B, 0x5B, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C,
1098 	0x5C, 0x5C, 0x5C, 0x5C, 0x5D, 0x5D, 0x5D, 0x5D,
1099 	0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5E, 0x5E,
1100 	0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E,
1101 	0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F,
1102 	0x5F, 0x5F, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
1103 	0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1104 	0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62,
1105 	0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62,
1106 	0x62, 0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
1107 	0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64,
1108 	0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
1109 	0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
1110 	0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 0x66, 0x66,
1111 	0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67,
1112 	0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67,
1113 	0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68,
1114 	0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
1115 	0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1116 	0x69, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A,
1117 	0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6B, 0x6B, 0x6B,
1118 	0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
1119 	0x6B, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C,
1120 	0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D,
1121 	0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
1122 	0x6D, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E,
1123 	0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6F, 0x6F, 0x6F,
1124 	0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F,
1125 	0x6F, 0x6F, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
1126 	0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71,
1127 	0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71,
1128 	0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72,
1129 	0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
1130 	0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
1131 	0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
1132 	0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74,
1133 	0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
1134 	0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
1135 	0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76,
1136 	0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77,
1137 	0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1138 	0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78,
1139 	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
1140 	0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
1141 	0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7A, 0x7A,
1142 	0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A,
1143 	0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7B, 0x7B,
1144 	0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B,
1145 	0x7B, 0x7B, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
1146 	0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
1147 	0x7C, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
1148 	0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
1149 	0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E,
1150 	0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F,
1151 	0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
1152 	0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80,
1153 	0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1154 	0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81,
1155 	0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
1156 	0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82,
1157 	0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
1158 	0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
1159 	0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
1160 	0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
1161 	0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
1162 	0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
1163 	0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
1164 	0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
1165 	0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
1166 	0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
1167 	0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
1168 	0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
1169 	0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
1170 	0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
1171 	0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
1172 	0x89, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
1173 	0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
1174 	0x8A, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
1175 	0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
1176 	0x8B, 0x8B, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
1177 	0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
1178 	0x8C, 0x8C, 0x8C, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
1179 	0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
1180 	0x8D, 0x8D, 0x8D, 0x8D, 0x8E, 0x8E, 0x8E, 0x8E,
1181 	0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
1182 	0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F, 0x8F, 0x8F,
1183 	0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
1184 	0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x90, 0x90,
1185 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
1186 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91,
1187 	0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
1188 	0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
1189 	0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
1190 	0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
1191 	0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
1192 	0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
1193 	0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
1194 	0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
1195 	0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 0x95,
1196 	0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
1197 	0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
1198 	0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
1199 	0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
1200 	0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x97,
1201 	0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
1202 	0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1203 	0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
1204 	0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
1205 	0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
1206 	0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
1207 	0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
1208 	0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
1209 	0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0x9B, 0x9B,
1210 	0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
1211 	0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
1212 	0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
1213 	0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
1214 	0x9C, 0x9C, 0x9C, 0x9C, 0x9D, 0x9D, 0x9D, 0x9D,
1215 	0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
1216 	0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9E,
1217 	0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
1218 	0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
1219 	0x9E, 0x9E, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
1220 	0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
1221 	0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0xA0, 0xA0,
1222 	0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
1223 	0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
1224 	0xA0, 0xA0, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
1225 	0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
1226 	0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA2, 0xA2,
1227 	0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
1228 	0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
1229 	0xA2, 0xA2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
1230 	0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
1231 	0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA4, 0xA4,
1232 	0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
1233 	0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
1234 	0xA4, 0xA4, 0xA4, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1235 	0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1236 	0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1237 	0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
1238 	0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
1239 	0xA6, 0xA6, 0xA6, 0xA6, 0xA7, 0xA7, 0xA7, 0xA7,
1240 	0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
1241 	0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
1242 	0xA7, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
1243 	0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
1244 	0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA9,
1245 	0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
1246 	0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
1247 	0xA9, 0xA9, 0xA9, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA,
1248 	0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
1249 	0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
1250 	0xAA, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
1251 	0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
1252 	0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAC,
1253 	0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
1254 	0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
1255 	0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAD, 0xAD, 0xAD,
1256 	0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
1257 	0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
1258 	0xAD, 0xAD, 0xAD, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1259 	0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1260 	0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1261 	0xAE, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
1262 	0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
1263 	0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xB0,
1264 	0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
1265 	0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
1266 	0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB1,
1267 	0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
1268 	0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
1269 	0xB1, 0xB1, 0xB1, 0xB1, 0xB2, 0xB2, 0xB2, 0xB2,
1270 	0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
1271 	0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
1272 	0xB2, 0xB2, 0xB2, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1273 	0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1274 	0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1275 	0xB3, 0xB3, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1276 	0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1277 	0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1278 	0xB4, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1279 	0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1280 	0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1281 	0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1282 	0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1283 	0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1284 	0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
1285 	0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
1286 	0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB8,
1287 	0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
1288 	0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
1289 	0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB9,
1290 	0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
1291 	0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
1292 	0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xBA,
1293 	0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
1294 	0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
1295 	0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBB,
1296 	0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1297 	0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1298 	0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1299 	0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1300 	0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1301 	0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1302 	0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1303 	0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1304 	0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1305 	0xBD, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1306 	0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1307 	0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1308 	0xBE, 0xBE, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1309 	0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1310 	0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1311 	0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1312 	0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1313 	0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1314 	0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1,
1315 	0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
1316 	0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
1317 	0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC2, 0xC2, 0xC2,
1318 	0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
1319 	0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
1320 	0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC3, 0xC3,
1321 	0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1322 	0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1323 	0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1324 	0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1325 	0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1326 	0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1327 	0xC4, 0xC4, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1328 	0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1329 	0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1330 	0xC5, 0xC5, 0xC5, 0xC5, 0xC6, 0xC6, 0xC6, 0xC6,
1331 	0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
1332 	0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
1333 	0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC7, 0xC7,
1334 	0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1335 	0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1336 	0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1337 	0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1338 	0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1339 	0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1340 	0xC8, 0xC8, 0xC8, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1341 	0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1342 	0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1343 	0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xCA, 0xCA,
1344 	0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1345 	0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1346 	0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1347 	0xCA, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1348 	0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1349 	0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1350 	0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xCC, 0xCC,
1351 	0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
1352 	0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
1353 	0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCD,
1354 	0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1355 	0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1356 	0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1357 	0xCD, 0xCD, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1358 	0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1359 	0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1360 	0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCF, 0xCF,
1361 	0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1362 	0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1363 	0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1364 	0xCF, 0xCF, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1365 	0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1366 	0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1367 	0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD1, 0xD1, 0xD1,
1368 	0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1369 	0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1370 	0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1371 	0xD1, 0xD1, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1372 	0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1373 	0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1374 	0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD3, 0xD3,
1375 	0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1376 	0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1377 	0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1378 	0xD3, 0xD3, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1379 	0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1380 	0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1381 	0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD5,
1382 	0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1383 	0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1384 	0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1385 	0xD5, 0xD5, 0xD5, 0xD5, 0xD6, 0xD6, 0xD6, 0xD6,
1386 	0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1387 	0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1388 	0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1389 	0xD6, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1390 	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1391 	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1392 	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD8,
1393 	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1394 	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1395 	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1396 	0xD8, 0xD8, 0xD8, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1397 	0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1398 	0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1399 	0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1400 	0xD9, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1401 	0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1402 	0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1403 	0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDB, 0xDB,
1404 	0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1405 	0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1406 	0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1407 	0xDB, 0xDB, 0xDB, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC,
1408 	0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1409 	0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1410 	0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1411 	0xDC, 0xDC, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1412 	0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1413 	0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1414 	0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1415 	0xDD, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1416 	0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1417 	0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1418 	0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDF,
1419 	0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1420 	0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1421 	0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1422 	0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE0, 0xE0,
1423 	0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1424 	0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1425 	0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1426 	0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0xE1,
1427 	0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1428 	0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1429 	0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1430 	0xE1, 0xE1, 0xE1, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1431 	0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1432 	0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1433 	0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1434 	0xE2, 0xE2, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1435 	0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1436 	0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1437 	0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1438 	0xE3, 0xE3, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1439 	0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1440 	0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1441 	0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1442 	0xE4, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1443 	0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1444 	0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1445 	0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1446 	0xE5, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1447 	0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1448 	0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1449 	0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1450 	0xE6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1451 	0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1452 	0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1453 	0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1454 	0xE7, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1455 	0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1456 	0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1457 	0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1458 	0xE8, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1459 	0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1460 	0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1461 	0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1462 	0xE9, 0xE9, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1463 	0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1464 	0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1465 	0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1466 	0xEA, 0xEA, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1467 	0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1468 	0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1469 	0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1470 	0xEB, 0xEB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1471 	0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1472 	0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1473 	0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1474 	0xEC, 0xEC, 0xEC, 0xEC, 0xED, 0xED, 0xED, 0xED,
1475 	0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1476 	0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1477 	0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1478 	0xED, 0xED, 0xED, 0xED, 0xED, 0xEE, 0xEE, 0xEE,
1479 	0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1480 	0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1481 	0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1482 	0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF,
1483 	0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1484 	0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1485 	0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1486 	0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1487 	0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1488 	0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1489 	0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1490 	0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1491 	0xF0, 0xF0, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1492 	0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1493 	0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1494 	0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1495 	0xF1, 0xF1, 0xF1, 0xF1, 0xF2, 0xF2, 0xF2, 0xF2,
1496 	0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1497 	0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1498 	0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1499 	0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF3, 0xF3,
1500 	0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1501 	0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1502 	0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1503 	0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1504 	0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1505 	0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1506 	0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1507 	0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1508 	0xF4, 0xF4, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1509 	0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1510 	0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1511 	0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1512 	0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF6, 0xF6, 0xF6,
1513 	0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1514 	0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1515 	0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1516 	0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1517 	0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1518 	0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1519 	0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1520 	0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1521 	0xF7, 0xF7, 0xF7, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1522 	0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1523 	0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1524 	0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1525 	0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF9, 0xF9,
1526 	0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1527 	0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1528 	0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1529 	0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1530 	0xF9, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1531 	0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1532 	0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1533 	0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1534 	0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFB, 0xFB, 0xFB,
1535 	0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1536 	0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1537 	0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1538 	0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1539 	0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1540 	0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1541 	0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1542 	0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1543 	0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD,
1544 	0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1545 	0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1546 	0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1547 	0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1548 	0xFD, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1549 	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1550 	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1551 	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1552 	0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
1553 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1554 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1555 };
1556 
mdp4_mixer_gc_lut_setup(int mixer_num)1557 void mdp4_mixer_gc_lut_setup(int mixer_num)
1558 {
1559 	unsigned char *base;
1560 	uint32 data;
1561 	char val;
1562 	int i, off;
1563 
1564 	if (mixer_num) 	/* mixer number, /dev/fb0, /dev/fb1 */
1565 		base = MDP_BASE + MDP4_OVERLAYPROC1_BASE;/* 0x18000 */
1566 	else
1567 		base = MDP_BASE + MDP4_OVERLAYPROC0_BASE;/* 0x10000 */
1568 
1569 	base += 0x4000;	/* GC_LUT offset */
1570 
1571 	off = 0;
1572 	for (i = 0; i < 4096; i++) {
1573 		val = gc_lut[i];
1574 		data = (val << 16 | val << 8 | val); /* R, B, and G are same */
1575 		outpdw(base + off, data);
1576 		off += 4;
1577 	}
1578 }
1579 
1580 uint32 igc_video_lut[] = {	 /* non linear */
1581 	0x0, 0x1, 0x2, 0x4, 0x5, 0x6, 0x7, 0x9,
1582 	0xA, 0xB, 0xC, 0xE, 0xF, 0x10, 0x12, 0x14,
1583 	0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23,
1584 	0x25, 0x28, 0x2A, 0x2D, 0x30, 0x32, 0x35, 0x38,
1585 	0x3B, 0x3E, 0x42, 0x45, 0x48, 0x4C, 0x4F, 0x53,
1586 	0x57, 0x5B, 0x5F, 0x63, 0x67, 0x6B, 0x70, 0x74,
1587 	0x79, 0x7E, 0x83, 0x88, 0x8D, 0x92, 0x97, 0x9C,
1588 	0xA2, 0xA8, 0xAD, 0xB3, 0xB9, 0xBF, 0xC5, 0xCC,
1589 	0xD2, 0xD8, 0xDF, 0xE6, 0xED, 0xF4, 0xFB, 0x102,
1590 	0x109, 0x111, 0x118, 0x120, 0x128, 0x130, 0x138, 0x140,
1591 	0x149, 0x151, 0x15A, 0x162, 0x16B, 0x174, 0x17D, 0x186,
1592 	0x190, 0x199, 0x1A3, 0x1AC, 0x1B6, 0x1C0, 0x1CA, 0x1D5,
1593 	0x1DF, 0x1EA, 0x1F4, 0x1FF, 0x20A, 0x215, 0x220, 0x22B,
1594 	0x237, 0x242, 0x24E, 0x25A, 0x266, 0x272, 0x27F, 0x28B,
1595 	0x298, 0x2A4, 0x2B1, 0x2BE, 0x2CB, 0x2D8, 0x2E6, 0x2F3,
1596 	0x301, 0x30F, 0x31D, 0x32B, 0x339, 0x348, 0x356, 0x365,
1597 	0x374, 0x383, 0x392, 0x3A1, 0x3B1, 0x3C0, 0x3D0, 0x3E0,
1598 	0x3F0, 0x400, 0x411, 0x421, 0x432, 0x443, 0x454, 0x465,
1599 	0x476, 0x487, 0x499, 0x4AB, 0x4BD, 0x4CF, 0x4E1, 0x4F3,
1600 	0x506, 0x518, 0x52B, 0x53E, 0x551, 0x565, 0x578, 0x58C,
1601 	0x5A0, 0x5B3, 0x5C8, 0x5DC, 0x5F0, 0x605, 0x61A, 0x62E,
1602 	0x643, 0x659, 0x66E, 0x684, 0x699, 0x6AF, 0x6C5, 0x6DB,
1603 	0x6F2, 0x708, 0x71F, 0x736, 0x74D, 0x764, 0x77C, 0x793,
1604 	0x7AB, 0x7C3, 0x7DB, 0x7F3, 0x80B, 0x824, 0x83D, 0x855,
1605 	0x86F, 0x888, 0x8A1, 0x8BB, 0x8D4, 0x8EE, 0x908, 0x923,
1606 	0x93D, 0x958, 0x973, 0x98E, 0x9A9, 0x9C4, 0x9DF, 0x9FB,
1607 	0xA17, 0xA33, 0xA4F, 0xA6C, 0xA88, 0xAA5, 0xAC2, 0xADF,
1608 	0xAFC, 0xB19, 0xB37, 0xB55, 0xB73, 0xB91, 0xBAF, 0xBCE,
1609 	0xBEC, 0xC0B, 0xC2A, 0xC4A, 0xC69, 0xC89, 0xCA8, 0xCC8,
1610 	0xCE8, 0xD09, 0xD29, 0xD4A, 0xD6B, 0xD8C, 0xDAD, 0xDCF,
1611 	0xDF0, 0xE12, 0xE34, 0xE56, 0xE79, 0xE9B, 0xEBE, 0xEE1,
1612 	0xF04, 0xF27, 0xF4B, 0xF6E, 0xF92, 0xFB6, 0xFDB, 0xFFF,
1613 };
1614 
mdp4_vg_igc_lut_setup(int vp_num)1615 void mdp4_vg_igc_lut_setup(int vp_num)
1616 {
1617 	unsigned char *base;
1618 	int i, voff, off;
1619 	uint32 data, val;
1620 
1621 	voff = MDP4_VIDEO_OFF * vp_num;
1622 	base = MDP_BASE + MDP4_VIDEO_BASE + voff + 0x5000;
1623 
1624 	off = 0;
1625 	for (i = 0; i < 256; i++) {
1626 		val = igc_video_lut[i];
1627 		data = (val << 16 | val);	/* color 0 and 1 */
1628 		outpdw(base + off, data);
1629 		outpdw(base + off + 0x800, val);	/* color 2 */
1630 		off += 4;
1631 	}
1632 }
1633 
1634 uint32 igc_rgb_lut[] = {   /* linear */
1635 	0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
1636 	0x80, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1,
1637 	0x101, 0x111, 0x121, 0x131, 0x141, 0x151, 0x161, 0x171,
1638 	0x181, 0x191, 0x1A2, 0x1B2, 0x1C2, 0x1D2, 0x1E2, 0x1F2,
1639 	0x202, 0x212, 0x222, 0x232, 0x242, 0x252, 0x262, 0x272,
1640 	0x282, 0x292, 0x2A2, 0x2B3, 0x2C3, 0x2D3, 0x2E3, 0x2F3,
1641 	0x303, 0x313, 0x323, 0x333, 0x343, 0x353, 0x363, 0x373,
1642 	0x383, 0x393, 0x3A3, 0x3B3, 0x3C4, 0x3D4, 0x3E4, 0x3F4,
1643 	0x404, 0x414, 0x424, 0x434, 0x444, 0x454, 0x464, 0x474,
1644 	0x484, 0x494, 0x4A4, 0x4B4, 0x4C4, 0x4D5, 0x4E5, 0x4F5,
1645 	0x505, 0x515, 0x525, 0x535, 0x545, 0x555, 0x565, 0x575,
1646 	0x585, 0x595, 0x5A5, 0x5B5, 0x5C5, 0x5D5, 0x5E6, 0x5F6,
1647 	0x606, 0x616, 0x626, 0x636, 0x646, 0x656, 0x666, 0x676,
1648 	0x686, 0x696, 0x6A6, 0x6B6, 0x6C6, 0x6D6, 0x6E6, 0x6F7,
1649 	0x707, 0x717, 0x727, 0x737, 0x747, 0x757, 0x767, 0x777,
1650 	0x787, 0x797, 0x7A7, 0x7B7, 0x7C7, 0x7D7, 0x7E7, 0x7F7,
1651 	0x808, 0x818, 0x828, 0x838, 0x848, 0x858, 0x868, 0x878,
1652 	0x888, 0x898, 0x8A8, 0x8B8, 0x8C8, 0x8D8, 0x8E8, 0x8F8,
1653 	0x908, 0x919, 0x929, 0x939, 0x949, 0x959, 0x969, 0x979,
1654 	0x989, 0x999, 0x9A9, 0x9B9, 0x9C9, 0x9D9, 0x9E9, 0x9F9,
1655 	0xA09, 0xA19, 0xA2A, 0xA3A, 0xA4A, 0xA5A, 0xA6A, 0xA7A,
1656 	0xA8A, 0xA9A, 0xAAA, 0xABA, 0xACA, 0xADA, 0xAEA, 0xAFA,
1657 	0xB0A, 0xB1A, 0xB2A, 0xB3B, 0xB4B, 0xB5B, 0xB6B, 0xB7B,
1658 	0xB8B, 0xB9B, 0xBAB, 0xBBB, 0xBCB, 0xBDB, 0xBEB, 0xBFB,
1659 	0xC0B, 0xC1B, 0xC2B, 0xC3B, 0xC4C, 0xC5C, 0xC6C, 0xC7C,
1660 	0xC8C, 0xC9C, 0xCAC, 0xCBC, 0xCCC, 0xCDC, 0xCEC, 0xCFC,
1661 	0xD0C, 0xD1C, 0xD2C, 0xD3C, 0xD4C, 0xD5D, 0xD6D, 0xD7D,
1662 	0xD8D, 0xD9D, 0xDAD, 0xDBD, 0xDCD, 0xDDD, 0xDED, 0xDFD,
1663 	0xE0D, 0xE1D, 0xE2D, 0xE3D, 0xE4D, 0xE5D, 0xE6E, 0xE7E,
1664 	0xE8E, 0xE9E, 0xEAE, 0xEBE, 0xECE, 0xEDE, 0xEEE, 0xEFE,
1665 	0xF0E, 0xF1E, 0xF2E, 0xF3E, 0xF4E, 0xF5E, 0xF6E, 0xF7F,
1666 	0xF8F, 0xF9F, 0xFAF, 0xFBF, 0xFCF, 0xFDF, 0xFEF, 0xFFF,
1667 };
1668 
mdp4_rgb_igc_lut_setup(int num)1669 void mdp4_rgb_igc_lut_setup(int num)
1670 {
1671 	unsigned char *base;
1672 	int i, voff, off;
1673 	uint32 data, val;
1674 
1675 	voff = MDP4_RGB_OFF * num;
1676 	base = MDP_BASE + MDP4_RGB_BASE + voff + 0x5000;
1677 
1678 	off = 0;
1679 	for (i = 0; i < 256; i++) {
1680 		val = igc_rgb_lut[i];
1681 		data = (val << 16 | val);	/* color 0 and 1 */
1682 		outpdw(base + off, data);
1683 		outpdw(base + off + 0x800, val);	/* color 2 */
1684 		off += 4;
1685 	}
1686 }
1687