vfs: check userland buffers before reading them.
[haiku.git] / src / add-ons / media / plugins / ffmpeg / gfx_conv_c_lookup.cpp
blobb81b333ff7c6cc0811179cbd94fce31321b9db18
1 /*
2 * Copyright 2004, Marcus Overhagen. All rights reserved.
3 * Distributed under the terms of the MIT license.
4 */
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
13 #include "gfx_conv_c.h"
15 #include <strings.h>
16 #include <stdio.h>
19 extern const int32 Cr_Rtab[];
20 extern const int32 Cr_Gtab[];
21 extern const int32 Cb_Gtab[];
22 extern const int32 Cb_Btab[];
23 extern const int32 Ytab[];
24 extern const uint32* Rtab;
25 extern const uint32* Gtab;
26 extern const uint32* Btab;
29 void
30 gfx_conv_YCbCr420p_RGB32_c(AVFrame* in, AVFrame* out, int width, int height)
32 uint32 poutInc = 2 * out->linesize[0];
33 uint32* poutEven = (uint32*)out->data[0];
34 uint32* poutOdd = (uint32*)(out->linesize[0] + (uint8*)poutEven);
36 uint32 pi1Inc = in->linesize[0];
37 uint32 pi1Inc2 = 2 * pi1Inc;
38 uint32 pi2Inc = in->linesize[1];
39 uint32 pi3Inc = in->linesize[2];
41 uint8* pi1Base = (uint8*)in->data[0];
42 uint8* pi2Base = (uint8*)in->data[1];
43 uint8* pi3Base = (uint8*)in->data[2];
45 uint32 runs = height / 2;
46 for (uint32 i = 0; i < runs; i++) {
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;
53 for (uint32 j = 0; j < (uint32)width; j+= 2) {
55 int32 Cr_R, Cr_G, Cb_G, Cb_B;
56 int32 Y0, Y1, R, G, B;
57 uint32 temp;
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];
66 temp = *(pi1Even++);
67 Y0 = Ytab[temp & 0xff];
68 Y1 = Ytab[temp >> 8];
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];
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];
80 temp = *(pi1Odd++);
81 Y0 = Ytab[temp & 0xff];
82 Y1 = Ytab[temp >> 8];
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];
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];
95 poutEven = (uint32*)(poutInc + (uint8*)poutEven);
96 poutOdd = (uint32*)(poutInc + (uint8*)poutOdd);
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);
105 const 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,
140 const 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,
177 const 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,
214 const 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,
250 const 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,
285 const 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,
389 const uint32* Rtab = &Rsat[223];
391 const 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,
480 const uint32* Gtab = &Gsat[172];
482 const 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,
601 const uint32* Btab = &Bsat[277];