1/*
2 * Copyright 2004, Marcus Overhagen. All rights reserved.
3 * Distributed under the terms of the MIT license.
4 */
5
6//! This file implements an image format conversion from
7// planar YCbCr420 format to linear RGB32 format.
8// Lookup tables are used to avoid doing multiplications
9// or conditial if() checks inside the inner loop.
10// These tables have been generated by gen_lookup.cpp
11
12
13#include "gfx_conv_c.h"
14
15#include <strings.h>
16#include <stdio.h>
17
18
19extern const int32 Cr_Rtab[];
20extern const int32 Cr_Gtab[];
21extern const int32 Cb_Gtab[];
22extern const int32 Cb_Btab[];
23extern const int32 Ytab[];
24extern const uint32* Rtab;
25extern const uint32* Gtab;
26extern const uint32* Btab;
27
28
29void
30gfx_conv_YCbCr420p_RGB32_c(AVFrame* in, AVFrame* out, int width, int height)
31{
32	uint32 poutInc = 2 * out->linesize[0];
33	uint32* poutEven = (uint32*)out->data[0];
34	uint32* poutOdd = (uint32*)(out->linesize[0] + (uint8*)poutEven);
35
36	uint32 pi1Inc = in->linesize[0];
37	uint32 pi1Inc2 = 2 * pi1Inc;
38	uint32 pi2Inc = in->linesize[1];
39	uint32 pi3Inc = in->linesize[2];
40
41	uint8* pi1Base = (uint8*)in->data[0];
42	uint8* pi2Base = (uint8*)in->data[1];
43	uint8* pi3Base = (uint8*)in->data[2];
44
45	uint32 runs = height / 2;
46	for (uint32 i = 0; i < runs; i++) {
47
48		uint16* pi1Even = (uint16*)(i * pi1Inc2 + pi1Base);
49		uint16* pi1Odd = (uint16*)(pi1Inc + (uint8*)pi1Even);
50		uint8* pi2 = i * pi2Inc + pi2Base;
51		uint8* pi3 = i * pi3Inc + pi3Base;
52
53		for (uint32 j = 0; j < (uint32)width; j+= 2) {
54
55			int32 Cr_R, Cr_G, Cb_G, Cb_B;
56			int32 Y0, Y1, R, G, B;
57			uint32 temp;
58
59			temp = *(pi2++);
60			Cb_G = Cb_Gtab[temp];
61			Cb_B = Cb_Btab[temp];
62			temp = *(pi3++);
63			Cr_R = Cr_Rtab[temp];
64			Cr_G = Cr_Gtab[temp];
65
66			temp = *(pi1Even++);
67			Y0 = Ytab[temp & 0xff];
68			Y1 = Ytab[temp >> 8];
69
70			R = (Y0 + Cr_R) >> 15;
71			G = (Y0 + Cr_G + Cb_G) >> 15;
72			B = (Y0 + Cb_B) >> 15;
73			poutEven[j] = Rtab[R] | Gtab[G] | Btab[B];
74
75			R = (Y1 + Cr_R) >> 15;
76			G = (Y1 + Cr_G + Cb_G) >> 15;
77			B = (Y1 + Cb_B) >> 15;
78			poutEven[j + 1] = Rtab[R] | Gtab[G] | Btab[B];
79
80			temp = *(pi1Odd++);
81			Y0 = Ytab[temp & 0xff];
82			Y1 = Ytab[temp >> 8];
83
84			R = (Y0 + Cr_R) >> 15;
85			G = (Y0 + Cr_G + Cb_G) >> 15;
86			B = (Y0 + Cb_B) >> 15;
87			poutOdd[j] = Rtab[R] | Gtab[G] | Btab[B];
88
89			R = (Y1 + Cr_R) >> 15;
90			G = (Y1 + Cr_G + Cb_G) >> 15;
91			B = (Y1 + Cb_B) >> 15;
92			poutOdd[j + 1] = Rtab[R] | Gtab[G] | Btab[B];
93
94		}
95		poutEven = (uint32*)(poutInc + (uint8*)poutEven);
96		poutOdd = (uint32*)(poutInc + (uint8*)poutOdd);
97	}
98	if (height & 1) {
99		// XXX special case for last line if height not multiple of 2 goes here
100		memset((height - 1) * out->linesize[0] + (uint8*)out->data[0], 0,
101			width * 4);
102	}
103}
104
105const int32 Cb_Gtab[256] = {
106	1644167, 1631322, 1618477, 1605632, 1592787, 1579942, 1567097, 1554252,
107	1541407, 1528562, 1515717, 1502872, 1490026, 1477181, 1464336, 1451491,
108	1438646, 1425801, 1412956, 1400111, 1387266, 1374421, 1361576, 1348731,
109	1335886, 1323041, 1310196, 1297351, 1284506, 1271661, 1258815, 1245970,
110	1233125, 1220280, 1207435, 1194590, 1181745, 1168900, 1156055, 1143210,
111	1130365, 1117520, 1104675, 1091830, 1078985, 1066140, 1053295, 1040450,
112	1027604, 1014759, 1001914, 989069, 976224, 963379, 950534, 937689, 924844,
113	911999, 899154, 886309, 873464, 860619, 847774, 834929, 822084, 809239,
114	796393, 783548, 770703, 757858, 745013, 732168, 719323, 706478, 693633,
115	680788, 667943, 655098, 642253, 629408, 616563, 603718, 590873, 578028,
116	565182, 552337, 539492, 526647, 513802, 500957, 488112, 475267, 462422,
117	449577, 436732, 423887, 411042, 398197, 385352, 372507, 359662, 346817,
118	333971, 321126, 308281, 295436, 282591, 269746, 256901, 244056, 231211,
119	218366, 205521, 192676, 179831, 166986, 154141, 141296, 128451, 115606,
120	102760, 89915, 77070, 64225, 51380, 38535, 25690, 12845, 0, -12844, -25689,
121	-38534, -51379, -64224, -77069, -89914, -102759, -115605, -128450, -141295,
122	-154140, -166985, -179830, -192675, -205520, -218365, -231210, -244055,
123	-256900, -269745, -282590, -295435, -308280, -321125, -333970, -346816,
124	-359661, -372506, -385351, -398196, -411041, -423886, -436731, -449576,
125	-462421, -475266, -488111, -500956, -513801, -526646, -539491, -552336,
126	-565181, -578027, -590872, -603717, -616562, -629407, -642252, -655097,
127	-667942, -680787, -693632, -706477, -719322, -732167, -745012, -757857,
128	-770702, -783547, -796392, -809238, -822083, -834928, -847773, -860618,
129	-873463, -886308, -899153, -911998, -924843, -937688, -950533, -963378,
130	-976223, -989068, -1001913, -1014758, -1027603, -1040449, -1053294,
131	-1066139, -1078984, -1091829, -1104674, -1117519, -1130364, -1143209,
132	-1156054, -1168899, -1181744, -1194589, -1207434, -1220279, -1233124,
133	-1245969, -1258814, -1271660, -1284505, -1297350, -1310195, -1323040,
134	-1335885, -1348730, -1361575, -1374420, -1387265, -1400110, -1412955,
135	-1425800, -1438645, -1451490, -1464335, -1477180, -1490025, -1502871,
136	-1515716, -1528561, -1541406, -1554251, -1567096, -1579941, -1592786,
137	-1605631, -1618476, -1631321,
138};
139
140const int32 Cb_Btab[256] = {
141	-8459910, -8393817, -8327724, -8261631, -8195538, -8129445, -8063352,
142	-7997259, -7931166, -7865073, -7798980, -7732887, -7666793, -7600700,
143	-7534607, -7468514, -7402421, -7336328, -7270235, -7204142, -7138049,
144	-7071956, -7005863, -6939770, -6873677, -6807584, -6741491, -6675398,
145	-6609305, -6543212, -6477118, -6411025, -6344932, -6278839, -6212746,
146	-6146653, -6080560, -6014467, -5948374, -5882281, -5816188, -5750095,
147	-5684002, -5617909, -5551816, -5485723, -5419630, -5353537, -5287443,
148	-5221350, -5155257, -5089164, -5023071, -4956978, -4890885, -4824792,
149	-4758699, -4692606, -4626513, -4560420, -4494327, -4428234, -4362141,
150	-4296048, -4229955, -4163862, -4097768, -4031675, -3965582, -3899489,
151	-3833396, -3767303, -3701210, -3635117, -3569024, -3502931, -3436838,
152	-3370745, -3304652, -3238559, -3172466, -3106373, -3040280, -2974187,
153	-2908093, -2842000, -2775907, -2709814, -2643721, -2577628, -2511535,
154	-2445442, -2379349, -2313256, -2247163, -2181070, -2114977, -2048884,
155	-1982791, -1916698, -1850605, -1784512, -1718418, -1652325, -1586232,
156	-1520139, -1454046, -1387953, -1321860, -1255767, -1189674, -1123581,
157	-1057488, -991395, -925302, -859209, -793116, -727023, -660930, -594837,
158	-528743, -462650, -396557, -330464, -264371, -198278, -132185, -66092, 0,
159	66093, 132186, 198279, 264372, 330465, 396558, 462651, 528744, 594838,
160	660931, 727024, 793117, 859210, 925303, 991396, 1057489, 1123582,
161	1189675, 1255768, 1321861, 1387954, 1454047, 1520140, 1586233, 1652326,
162	1718419, 1784513, 1850606, 1916699, 1982792, 2048885, 2114978, 2181071,
163	2247164, 2313257, 2379350, 2445443, 2511536, 2577629, 2643722, 2709815,
164	2775908, 2842001, 2908094, 2974188, 3040281, 3106374, 3172467, 3238560,
165	3304653, 3370746, 3436839, 3502932, 3569025, 3635118, 3701211, 3767304,
166	3833397, 3899490, 3965583, 4031676, 4097769, 4163863, 4229956, 4296049,
167	4362142, 4428235, 4494328, 4560421, 4626514, 4692607, 4758700, 4824793,
168	4890886, 4956979, 5023072, 5089165, 5155258, 5221351, 5287444, 5353538,
169	5419631, 5485724, 5551817, 5617910, 5684003, 5750096, 5816189, 5882282,
170	5948375, 6014468, 6080561, 6146654, 6212747, 6278840, 6344933, 6411026,
171	6477119, 6543213, 6609306, 6675399, 6741492, 6807585, 6873678, 6939771,
172	7005864, 7071957, 7138050, 7204143, 7270236, 7336329, 7402422, 7468515,
173	7534608, 7600701, 7666794, 7732888, 7798981, 7865074, 7931167, 7997260,
174	8063353, 8129446, 8195539, 8261632, 8327725, 8393818,
175};
176
177const int32 Cr_Rtab[256] = {
178	-6694108, -6641810, -6589513, -6537215, -6484917, -6432620, -6380322,
179	-6328024, -6275726, -6223429, -6171131, -6118833, -6066535, -6014238,
180	-5961940, -5909642, -5857345, -5805047, -5752749, -5700451, -5648154,
181	-5595856, -5543558, -5491260, -5438963, -5386665, -5334367, -5282070,
182	-5229772, -5177474, -5125176, -5072879, -5020581, -4968283, -4915985,
183	-4863688, -4811390, -4759092, -4706795, -4654497, -4602199, -4549901,
184	-4497604, -4445306, -4393008, -4340710, -4288413, -4236115, -4183817,
185	-4131520, -4079222, -4026924, -3974626, -3922329, -3870031, -3817733,
186	-3765435, -3713138, -3660840, -3608542, -3556245, -3503947, -3451649,
187	-3399351, -3347054, -3294756, -3242458, -3190160, -3137863, -3085565,
188	-3033267, -2980969, -2928672, -2876374, -2824076, -2771779, -2719481,
189	-2667183, -2614885, -2562588, -2510290, -2457992, -2405694, -2353397,
190	-2301099, -2248801, -2196504, -2144206, -2091908, -2039610, -1987313,
191	-1935015, -1882717, -1830419, -1778122, -1725824, -1673526, -1621229,
192	-1568931, -1516633, -1464335, -1412038, -1359740, -1307442, -1255144,
193	-1202847, -1150549, -1098251, -1045954, -993656, -941358, -889060, -836763,
194	-784465, -732167, -679869, -627572, -575274, -522976, -470679, -418381,
195	-366083, -313785, -261488, -209190, -156892, -104594, -52297, 0, 52298,
196	104595, 156893, 209191, 261489, 313786, 366084, 418382, 470680, 522977,
197	575275, 627573, 679870, 732168, 784466, 836764, 889061, 941359, 993657,
198	1045955, 1098252, 1150550, 1202848, 1255145, 1307443, 1359741, 1412039,
199	1464336, 1516634, 1568932, 1621230, 1673527, 1725825, 1778123, 1830420,
200	1882718, 1935016, 1987314, 2039611, 2091909, 2144207, 2196505, 2248802,
201	2301100, 2353398, 2405695, 2457993, 2510291, 2562589, 2614886, 2667184,
202	2719482, 2771780, 2824077, 2876375, 2928673, 2980970, 3033268, 3085566,
203	3137864, 3190161, 3242459, 3294757, 3347055, 3399352, 3451650, 3503948,
204	3556246, 3608543, 3660841, 3713139, 3765436, 3817734, 3870032, 3922330,
205	3974627, 4026925, 4079223, 4131521, 4183818, 4236116, 4288414, 4340711,
206	4393009, 4445307, 4497605, 4549902, 4602200, 4654498, 4706796, 4759093,
207	4811391, 4863689, 4915986, 4968284, 5020582, 5072880, 5125177, 5177475,
208	5229773, 5282071, 5334368, 5386666, 5438964, 5491261, 5543559, 5595857,
209	5648155, 5700452, 5752750, 5805048, 5857346, 5909643, 5961941, 6014239,
210	6066536, 6118834, 6171132, 6223430, 6275727, 6328025, 6380323, 6432621,
211	6484918, 6537216, 6589514, 6641811,
212};
213
214const int32 Cr_Gtab[256] = {
215	3409969, 3383329, 3356688, 3330048, 3303408, 3276767, 3250127, 3223486,
216	3196846, 3170206, 3143565, 3116925, 3090285, 3063644, 3037004, 3010363,
217	2983723, 2957083, 2930442, 2903802, 2877161, 2850521, 2823881, 2797240,
218	2770600, 2743960, 2717319, 2690679, 2664038, 2637398, 2610758, 2584117,
219	2557477, 2530836, 2504196, 2477556, 2450915, 2424275, 2397635, 2370994,
220	2344354, 2317713, 2291073, 2264433, 2237792, 2211152, 2184511, 2157871,
221	2131231, 2104590, 2077950, 2051310, 2024669, 1998029, 1971388, 1944748,
222	1918108, 1891467, 1864827, 1838186, 1811546, 1784906, 1758265, 1731625,
223	1704985, 1678344, 1651704, 1625063, 1598423, 1571783, 1545142, 1518502,
224	1491862, 1465221, 1438581, 1411940, 1385300, 1358660, 1332019, 1305379,
225	1278738, 1252098, 1225458, 1198817, 1172177, 1145537, 1118896, 1092256,
226	1065615, 1038975, 1012335, 985694, 959054, 932413, 905773, 879133, 852492,
227	825852, 799212, 772571, 745931, 719290, 692650, 666010, 639369, 612729,
228	586088, 559448, 532808, 506167, 479527, 452887, 426246, 399606, 372965,
229	346325, 319685, 293044, 266404, 239763, 213123, 186483, 159842, 133202,
230	106562, 79921, 53281, 26640, 0, -26639, -53280, -79920, -106561, -133201,
231	-159841, -186482, -213122, -239762, -266403, -293043, -319684, -346324,
232	-372964, -399605, -426245, -452886, -479526, -506166, -532807, -559447,
233	-586087, -612728, -639368, -666009, -692649, -719289, -745930, -772570,
234	-799211, -825851, -852491, -879132, -905772, -932412, -959053, -985693,
235	-1012334, -1038974, -1065614, -1092255, -1118895, -1145536, -1172176,
236	-1198816, -1225457, -1252097, -1278737, -1305378, -1332018, -1358659,
237	-1385299, -1411939, -1438580, -1465220, -1491861, -1518501, -1545141,
238	-1571782, -1598422, -1625062, -1651703, -1678343, -1704984, -1731624,
239	-1758264, -1784905, -1811545, -1838185, -1864826, -1891466, -1918107,
240	-1944747, -1971387, -1998028, -2024668, -2051309, -2077949, -2104589,
241	-2131230, -2157870, -2184510, -2211151, -2237791, -2264432, -2291072,
242	-2317712, -2344353, -2370993, -2397634, -2424274, -2450914, -2477555,
243	-2504195, -2530835, -2557476, -2584116, -2610757, -2637397, -2664037,
244	-2690678, -2717318, -2743959, -2770599, -2797239, -2823880, -2850520,
245	-2877160, -2903801, -2930441, -2957082, -2983722, -3010362, -3037003,
246	-3063643, -3090284, -3116924, -3143564, -3170205, -3196845, -3223485,
247	-3250126, -3276766, -3303407, -3330047, -3356687, -3383328,
248};
249
250const int32 Ytab[256] = {
251	-610270, -572128, -533986, -495844, -457702, -419560, -381419, -343277,
252	-305135, -266993, -228851, -190709, -152567, -114425, -76283, -38141, 0,
253	38142, 76284, 114426, 152568, 190710, 228852, 266994, 305136, 343278,
254	381420, 419561, 457703, 495845, 533987, 572129, 610271, 648413, 686555,
255	724697, 762839, 800981, 839123, 877265, 915407, 953549, 991691, 1029833,
256	1067975, 1106117, 1144259, 1182401, 1220542, 1258684, 1296826, 1334968,
257	1373110, 1411252, 1449394, 1487536, 1525678, 1563820, 1601962, 1640104,
258	1678246, 1716388, 1754530, 1792672, 1830814, 1868956, 1907098, 1945240,
259	1983382, 2021523, 2059665, 2097807, 2135949, 2174091, 2212233, 2250375,
260	2288517, 2326659, 2364801, 2402943, 2441085, 2479227, 2517369, 2555511,
261	2593653, 2631795, 2669937, 2708079, 2746221, 2784362, 2822504, 2860646,
262	2898788, 2936930, 2975072, 3013214, 3051356, 3089498, 3127640, 3165782,
263	3203924, 3242066, 3280208, 3318350, 3356492, 3394634, 3432776, 3470918,
264	3509060, 3547202, 3585343, 3623485, 3661627, 3699769, 3737911, 3776053,
265	3814195, 3852337, 3890479, 3928621, 3966763, 4004905, 4043047, 4081189,
266	4119331, 4157473, 4195615, 4233757, 4271899, 4310041, 4348183, 4386324,
267	4424466, 4462608, 4500750, 4538892, 4577034, 4615176, 4653318, 4691460,
268	4729602, 4767744, 4805886, 4844028, 4882170, 4920312, 4958454, 4996596,
269	5034738, 5072880, 5111022, 5149164, 5187305, 5225447, 5263589, 5301731,
270	5339873, 5378015, 5416157, 5454299, 5492441, 5530583, 5568725, 5606867,
271	5645009, 5683151, 5721293, 5759435, 5797577, 5835719, 5873861, 5912003,
272	5950145, 5988286, 6026428, 6064570, 6102712, 6140854, 6178996, 6217138,
273	6255280, 6293422, 6331564, 6369706, 6407848, 6445990, 6484132, 6522274,
274	6560416, 6598558, 6636700, 6674842, 6712984, 6751126, 6789267, 6827409,
275	6865551, 6903693, 6941835, 6979977, 7018119, 7056261, 7094403, 7132545,
276	7170687, 7208829, 7246971, 7285113, 7323255, 7361397, 7399539, 7437681,
277	7475823, 7513965, 7552106, 7590248, 7628390, 7666532, 7704674, 7742816,
278	7780958, 7819100, 7857242, 7895384, 7933526, 7971668, 8009810, 8047952,
279	8086094, 8124236, 8162378, 8200520, 8238662, 8276804, 8314946, 8353087,
280	8391229, 8429371, 8467513, 8505655, 8543797, 8581939, 8620081, 8658223,
281	8696365, 8734507, 8772649, 8810791, 8848933, 8887075, 8925217, 8963359,
282	9001501, 9039643, 9077785, 9115927,
283};
284
285const uint32 Rsat[704] = {
286	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
287	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
288	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
289	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
290	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
291	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
292	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
293	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
294	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
295	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
296	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
297	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
298	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
299	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
300	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
301	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
302	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
303	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
304	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
305	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
306	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
307	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
308	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
309	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
310	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
311	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
312	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
313	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
314	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
315	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
316	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
317	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
318	0x010000, 0x020000, 0x030000, 0x040000, 0x050000, 0x060000, 0x070000,
319	0x080000, 0x090000, 0x0a0000, 0x0b0000, 0x0c0000, 0x0d0000, 0x0e0000,
320	0x0f0000, 0x100000, 0x110000, 0x120000, 0x130000, 0x140000, 0x150000,
321	0x160000, 0x170000, 0x180000, 0x190000, 0x1a0000, 0x1b0000, 0x1c0000,
322	0x1d0000, 0x1e0000, 0x1f0000, 0x200000, 0x210000, 0x220000, 0x230000,
323	0x240000, 0x250000, 0x260000, 0x270000, 0x280000, 0x290000, 0x2a0000,
324	0x2b0000, 0x2c0000, 0x2d0000, 0x2e0000, 0x2f0000, 0x300000, 0x310000,
325	0x320000, 0x330000, 0x340000, 0x350000, 0x360000, 0x370000, 0x380000,
326	0x390000, 0x3a0000, 0x3b0000, 0x3c0000, 0x3d0000, 0x3e0000, 0x3f0000,
327	0x400000, 0x410000, 0x420000, 0x430000, 0x440000, 0x450000, 0x460000,
328	0x470000, 0x480000, 0x490000, 0x4a0000, 0x4b0000, 0x4c0000, 0x4d0000,
329	0x4e0000, 0x4f0000, 0x500000, 0x510000, 0x520000, 0x530000, 0x540000,
330	0x550000, 0x560000, 0x570000, 0x580000, 0x590000, 0x5a0000, 0x5b0000,
331	0x5c0000, 0x5d0000, 0x5e0000, 0x5f0000, 0x600000, 0x610000, 0x620000,
332	0x630000, 0x640000, 0x650000, 0x660000, 0x670000, 0x680000, 0x690000,
333	0x6a0000, 0x6b0000, 0x6c0000, 0x6d0000, 0x6e0000, 0x6f0000, 0x700000,
334	0x710000, 0x720000, 0x730000, 0x740000, 0x750000, 0x760000, 0x770000,
335	0x780000, 0x790000, 0x7a0000, 0x7b0000, 0x7c0000, 0x7d0000, 0x7e0000,
336	0x7f0000, 0x800000, 0x810000, 0x820000, 0x830000, 0x840000, 0x850000,
337	0x860000, 0x870000, 0x880000, 0x890000, 0x8a0000, 0x8b0000, 0x8c0000,
338	0x8d0000, 0x8e0000, 0x8f0000, 0x900000, 0x910000, 0x920000, 0x930000,
339	0x940000, 0x950000, 0x960000, 0x970000, 0x980000, 0x990000, 0x9a0000,
340	0x9b0000, 0x9c0000, 0x9d0000, 0x9e0000, 0x9f0000, 0xa00000, 0xa10000,
341	0xa20000, 0xa30000, 0xa40000, 0xa50000, 0xa60000, 0xa70000, 0xa80000,
342	0xa90000, 0xaa0000, 0xab0000, 0xac0000, 0xad0000, 0xae0000, 0xaf0000,
343	0xb00000, 0xb10000, 0xb20000, 0xb30000, 0xb40000, 0xb50000, 0xb60000,
344	0xb70000, 0xb80000, 0xb90000, 0xba0000, 0xbb0000, 0xbc0000, 0xbd0000,
345	0xbe0000, 0xbf0000, 0xc00000, 0xc10000, 0xc20000, 0xc30000, 0xc40000,
346	0xc50000, 0xc60000, 0xc70000, 0xc80000, 0xc90000, 0xca0000, 0xcb0000,
347	0xcc0000, 0xcd0000, 0xce0000, 0xcf0000, 0xd00000, 0xd10000, 0xd20000,
348	0xd30000, 0xd40000, 0xd50000, 0xd60000, 0xd70000, 0xd80000, 0xd90000,
349	0xda0000, 0xdb0000, 0xdc0000, 0xdd0000, 0xde0000, 0xdf0000, 0xe00000,
350	0xe10000, 0xe20000, 0xe30000, 0xe40000, 0xe50000, 0xe60000, 0xe70000,
351	0xe80000, 0xe90000, 0xea0000, 0xeb0000, 0xec0000, 0xed0000, 0xee0000,
352	0xef0000, 0xf00000, 0xf10000, 0xf20000, 0xf30000, 0xf40000, 0xf50000,
353	0xf60000, 0xf70000, 0xf80000, 0xf90000, 0xfa0000, 0xfb0000, 0xfc0000,
354	0xfd0000, 0xfe0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
355	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
356	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
357	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
358	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
359	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
360	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
361	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
362	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
363	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
364	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
365	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
366	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
367	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
368	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
369	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
370	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
371	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
372	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
373	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
374	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
375	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
376	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
377	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
378	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
379	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
380	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
381	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
382	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
383	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
384	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
385	0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000, 0xff0000,
386	0xff0000, 0xff0000, 0xff0000, 0xff0000,
387};
388
389const uint32* Rtab = &Rsat[223];
390
391const uint32 Gsat[605] = {
392	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
393	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
394	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
395	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
396	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
397	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
398	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
399	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
400	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
401	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
402	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
403	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
404	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
405	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
406	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
407	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
408	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
409	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
410	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
411	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
412	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
413	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
414	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
415	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
416	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000100, 0x000200,
417	0x000300, 0x000400, 0x000500, 0x000600, 0x000700, 0x000800, 0x000900,
418	0x000a00, 0x000b00, 0x000c00, 0x000d00, 0x000e00, 0x000f00, 0x001000,
419	0x001100, 0x001200, 0x001300, 0x001400, 0x001500, 0x001600, 0x001700,
420	0x001800, 0x001900, 0x001a00, 0x001b00, 0x001c00, 0x001d00, 0x001e00,
421	0x001f00, 0x002000, 0x002100, 0x002200, 0x002300, 0x002400, 0x002500,
422	0x002600, 0x002700, 0x002800, 0x002900, 0x002a00, 0x002b00, 0x002c00,
423	0x002d00, 0x002e00, 0x002f00, 0x003000, 0x003100, 0x003200, 0x003300,
424	0x003400, 0x003500, 0x003600, 0x003700, 0x003800, 0x003900, 0x003a00,
425	0x003b00, 0x003c00, 0x003d00, 0x003e00, 0x003f00, 0x004000, 0x004100,
426	0x004200, 0x004300, 0x004400, 0x004500, 0x004600, 0x004700, 0x004800,
427	0x004900, 0x004a00, 0x004b00, 0x004c00, 0x004d00, 0x004e00, 0x004f00,
428	0x005000, 0x005100, 0x005200, 0x005300, 0x005400, 0x005500, 0x005600,
429	0x005700, 0x005800, 0x005900, 0x005a00, 0x005b00, 0x005c00, 0x005d00,
430	0x005e00, 0x005f00, 0x006000, 0x006100, 0x006200, 0x006300, 0x006400,
431	0x006500, 0x006600, 0x006700, 0x006800, 0x006900, 0x006a00, 0x006b00,
432	0x006c00, 0x006d00, 0x006e00, 0x006f00, 0x007000, 0x007100, 0x007200,
433	0x007300, 0x007400, 0x007500, 0x007600, 0x007700, 0x007800, 0x007900,
434	0x007a00, 0x007b00, 0x007c00, 0x007d00, 0x007e00, 0x007f00, 0x008000,
435	0x008100, 0x008200, 0x008300, 0x008400, 0x008500, 0x008600, 0x008700,
436	0x008800, 0x008900, 0x008a00, 0x008b00, 0x008c00, 0x008d00, 0x008e00,
437	0x008f00, 0x009000, 0x009100, 0x009200, 0x009300, 0x009400, 0x009500,
438	0x009600, 0x009700, 0x009800, 0x009900, 0x009a00, 0x009b00, 0x009c00,
439	0x009d00, 0x009e00, 0x009f00, 0x00a000, 0x00a100, 0x00a200, 0x00a300,
440	0x00a400, 0x00a500, 0x00a600, 0x00a700, 0x00a800, 0x00a900, 0x00aa00,
441	0x00ab00, 0x00ac00, 0x00ad00, 0x00ae00, 0x00af00, 0x00b000, 0x00b100,
442	0x00b200, 0x00b300, 0x00b400, 0x00b500, 0x00b600, 0x00b700, 0x00b800,
443	0x00b900, 0x00ba00, 0x00bb00, 0x00bc00, 0x00bd00, 0x00be00, 0x00bf00,
444	0x00c000, 0x00c100, 0x00c200, 0x00c300, 0x00c400, 0x00c500, 0x00c600,
445	0x00c700, 0x00c800, 0x00c900, 0x00ca00, 0x00cb00, 0x00cc00, 0x00cd00,
446	0x00ce00, 0x00cf00, 0x00d000, 0x00d100, 0x00d200, 0x00d300, 0x00d400,
447	0x00d500, 0x00d600, 0x00d700, 0x00d800, 0x00d900, 0x00da00, 0x00db00,
448	0x00dc00, 0x00dd00, 0x00de00, 0x00df00, 0x00e000, 0x00e100, 0x00e200,
449	0x00e300, 0x00e400, 0x00e500, 0x00e600, 0x00e700, 0x00e800, 0x00e900,
450	0x00ea00, 0x00eb00, 0x00ec00, 0x00ed00, 0x00ee00, 0x00ef00, 0x00f000,
451	0x00f100, 0x00f200, 0x00f300, 0x00f400, 0x00f500, 0x00f600, 0x00f700,
452	0x00f800, 0x00f900, 0x00fa00, 0x00fb00, 0x00fc00, 0x00fd00, 0x00fe00,
453	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
454	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
455	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
456	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
457	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
458	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
459	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
460	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
461	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
462	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
463	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
464	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
465	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
466	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
467	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
468	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
469	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
470	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
471	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
472	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
473	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
474	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
475	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
476	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
477	0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00, 0x00ff00,
478	0x00ff00, 0x00ff00, 0x00ff00,
479};
480const uint32* Gtab = &Gsat[172];
481
482const uint32 Bsat[812] = {
483	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
484	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
485	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
486	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
487	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
488	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
489	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
490	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
491	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
492	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
493	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
494	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
495	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
496	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
497	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
498	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
499	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
500	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
501	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
502	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
503	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
504	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
505	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
506	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
507	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
508	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
509	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
510	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
511	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
512	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
513	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
514	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
515	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
516	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
517	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
518	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
519	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
520	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
521	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
522	0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000001, 0x000002,
523	0x000003, 0x000004, 0x000005, 0x000006, 0x000007, 0x000008, 0x000009,
524	0x00000a, 0x00000b, 0x00000c, 0x00000d, 0x00000e, 0x00000f, 0x000010,
525	0x000011, 0x000012, 0x000013, 0x000014, 0x000015, 0x000016, 0x000017,
526	0x000018, 0x000019, 0x00001a, 0x00001b, 0x00001c, 0x00001d, 0x00001e,
527	0x00001f, 0x000020, 0x000021, 0x000022, 0x000023, 0x000024, 0x000025,
528	0x000026, 0x000027, 0x000028, 0x000029, 0x00002a, 0x00002b, 0x00002c,
529	0x00002d, 0x00002e, 0x00002f, 0x000030, 0x000031, 0x000032, 0x000033,
530	0x000034, 0x000035, 0x000036, 0x000037, 0x000038, 0x000039, 0x00003a,
531	0x00003b, 0x00003c, 0x00003d, 0x00003e, 0x00003f, 0x000040, 0x000041,
532	0x000042, 0x000043, 0x000044, 0x000045, 0x000046, 0x000047, 0x000048,
533	0x000049, 0x00004a, 0x00004b, 0x00004c, 0x00004d, 0x00004e, 0x00004f,
534	0x000050, 0x000051, 0x000052, 0x000053, 0x000054, 0x000055, 0x000056,
535	0x000057, 0x000058, 0x000059, 0x00005a, 0x00005b, 0x00005c, 0x00005d,
536	0x00005e, 0x00005f, 0x000060, 0x000061, 0x000062, 0x000063, 0x000064,
537	0x000065, 0x000066, 0x000067, 0x000068, 0x000069, 0x00006a, 0x00006b,
538	0x00006c, 0x00006d, 0x00006e, 0x00006f, 0x000070, 0x000071, 0x000072,
539	0x000073, 0x000074, 0x000075, 0x000076, 0x000077, 0x000078, 0x000079,
540	0x00007a, 0x00007b, 0x00007c, 0x00007d, 0x00007e, 0x00007f, 0x000080,
541	0x000081, 0x000082, 0x000083, 0x000084, 0x000085, 0x000086, 0x000087,
542	0x000088, 0x000089, 0x00008a, 0x00008b, 0x00008c, 0x00008d, 0x00008e,
543	0x00008f, 0x000090, 0x000091, 0x000092, 0x000093, 0x000094, 0x000095,
544	0x000096, 0x000097, 0x000098, 0x000099, 0x00009a, 0x00009b, 0x00009c,
545	0x00009d, 0x00009e, 0x00009f, 0x0000a0, 0x0000a1, 0x0000a2, 0x0000a3,
546	0x0000a4, 0x0000a5, 0x0000a6, 0x0000a7, 0x0000a8, 0x0000a9, 0x0000aa,
547	0x0000ab, 0x0000ac, 0x0000ad, 0x0000ae, 0x0000af, 0x0000b0, 0x0000b1,
548	0x0000b2, 0x0000b3, 0x0000b4, 0x0000b5, 0x0000b6, 0x0000b7, 0x0000b8,
549	0x0000b9, 0x0000ba, 0x0000bb, 0x0000bc, 0x0000bd, 0x0000be, 0x0000bf,
550	0x0000c0, 0x0000c1, 0x0000c2, 0x0000c3, 0x0000c4, 0x0000c5, 0x0000c6,
551	0x0000c7, 0x0000c8, 0x0000c9, 0x0000ca, 0x0000cb, 0x0000cc, 0x0000cd,
552	0x0000ce, 0x0000cf, 0x0000d0, 0x0000d1, 0x0000d2, 0x0000d3, 0x0000d4,
553	0x0000d5, 0x0000d6, 0x0000d7, 0x0000d8, 0x0000d9, 0x0000da, 0x0000db,
554	0x0000dc, 0x0000dd, 0x0000de, 0x0000df, 0x0000e0, 0x0000e1, 0x0000e2,
555	0x0000e3, 0x0000e4, 0x0000e5, 0x0000e6, 0x0000e7, 0x0000e8, 0x0000e9,
556	0x0000ea, 0x0000eb, 0x0000ec, 0x0000ed, 0x0000ee, 0x0000ef, 0x0000f0,
557	0x0000f1, 0x0000f2, 0x0000f3, 0x0000f4, 0x0000f5, 0x0000f6, 0x0000f7,
558	0x0000f8, 0x0000f9, 0x0000fa, 0x0000fb, 0x0000fc, 0x0000fd, 0x0000fe,
559	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
560	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
561	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
562	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
563	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
564	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
565	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
566	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
567	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
568	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
569	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
570	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
571	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
572	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
573	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
574	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
575	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
576	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
577	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
578	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
579	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
580	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
581	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
582	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
583	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
584	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
585	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
586	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
587	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
588	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
589	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
590	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
591	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
592	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
593	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
594	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
595	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
596	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
597	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
598	0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff, 0x0000ff,
599};
600
601const uint32* Btab = &Bsat[277];
602