add basic .Z support
[pcsx_rearmed.git] / plugins / dfxvideo / hq3x.h
1 /*
2  * This file is part of the Advance project.
3  *
4  * Copyright (C) 2004 Andrea Mazzoleni
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  *
20  * In addition, as a special exception, Andrea Mazzoleni
21  * gives permission to link the code of this program with
22  * the MAME library (or with modified versions of MAME that use the
23  * same license as MAME), and distribute linked combinations including
24  * the two.  You must obey the GNU General Public License in all
25  * respects for all of the code used other than MAME.  If you modify
26  * this file, you may extend this exception to your version of the
27  * file, but you are not obligated to do so.  If you do not wish to
28  * do so, delete this exception statement from your version.
29  */
30
31 /*
32  * This effect is a rewritten implementation of the hq effect made by Maxim Stepin
33  */
34
35 #define P0 dst0[0]
36 #define P1 dst0[1]
37 #define P2 dst0[2]
38 #define P3 dst1[0]
39 #define P4 dst1[1]
40 #define P5 dst1[2]
41 #define P6 dst2[0]
42 #define P7 dst2[1]
43 #define P8 dst2[2]
44 #define MUR interp_32_diff(c[1], c[5])
45 #define MDR interp_32_diff(c[5], c[7])
46 #define MDL interp_32_diff(c[7], c[3])
47 #define MUL interp_32_diff(c[3], c[1])
48 #define IC(p0) c[p0]
49 #define I11(p0,p1) interp_32_11(c[p0], c[p1])
50 #define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2])
51 #define I31(p0,p1) interp_32_31(c[p0], c[p1])
52 #define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2])
53 #define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2])
54 #define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2])
55 #define I53(p0,p1) interp_32_53(c[p0], c[p1])
56 #define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2])
57 #define I71(p0,p1) interp_32_71(c[p0], c[p1])
58 #define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2])
59 #define I97(p0,p1) interp_32_97(c[p0], c[p1])
60 #define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2])
61 #define I151(p0,p1) interp_32_151(c[p0], c[p1])
62
63 case 0 :
64 case 1 :
65 case 4 :
66 case 5 :
67 case 32 :
68 case 33 :
69 case 36 :
70 case 37 :
71 case 128 :
72 case 129 :
73 case 132 :
74 case 133 :
75 case 160 :
76 case 161 :
77 case 164 :
78 case 165 :
79 {
80 P0 = I211(4, 1, 3);
81 P1 = I31(4,1);
82 P2 = I211(4, 1, 5);
83 P3 = I31(4, 3);
84 P4 = IC(4);
85 P5 = I31(4,5);
86 P6 = I211(4, 3, 7);
87 P7 = I31(4, 7);
88 P8 = I211(4, 5, 7);
89
90 } break;
91 case 2 :
92 case 34 :
93 case 130 :
94 case 162 :
95 {
96 P0 = I31(4, 0);
97 P1 = IC(4);
98 P2 = I31(4, 2);
99 P3 = I31(4, 3);
100 P4 = IC(4);
101 P5 = I31(4,5);
102 P6 = I211(4, 3, 7);
103 P7 = I31(4, 7);
104 P8 = I211(4, 5, 7);
105 } break;
106 case 3 :
107 case 35 :
108 case 131 :
109 case 163 :
110 {
111 P0 = I31(4, 3);
112 P1 = IC(4);
113 P2 = I31(4, 2);
114 P3 = I31(4, 3);
115 P4 = IC(4);
116 P5 = I31(4,5);
117 P6 = I211(4, 3, 7);
118 P7 = I31(4, 7);
119 P8 = I211(4, 5, 7);
120 } break;
121 case 6 :
122 case 38 :
123 case 134 :
124 case 166 :
125 {
126 P0 = I31(4, 0);
127 P1 = IC(4);
128 P2 = I31(4,5);
129 P3 = I31(4, 3);
130 P4 = IC(4);
131 P5 = I31(4,5);
132 P6 = I211(4, 3, 7);
133 P7 = I31(4, 7);
134 P8 = I211(4, 5, 7);
135 } break;
136 case 7 :
137 case 39 :
138 case 135 :
139 case 167 :
140 {
141 P0 = I31(4, 3);
142 P1 = IC(4);
143 P2 = I31(4,5);
144 P3 = I31(4, 3);
145 P4 = IC(4);
146 P5 = I31(4,5);
147 P6 = I211(4, 3, 7);
148 P7 = I31(4, 7);
149 P8 = I211(4, 5, 7);
150 } break;
151 case 8 :
152 case 12 :
153 case 136 :
154 case 140 :
155 {
156 P0 = I31(4, 0);
157 P1 = I31(4,1);
158 P2 = I211(4, 1, 5);
159 P3 = IC(4);
160 P4 = IC(4);
161 P5 = I31(4,5);
162 P6 = I31(4, 6);
163 P7 = I31(4, 7);
164 P8 = I211(4, 5, 7);
165 } break;
166 case 9 :
167 case 13 :
168 case 137 :
169 case 141 :
170 {
171 P0 = I31(4,1);
172 P1 = I31(4,1);
173 P2 = I211(4, 1, 5);
174 P3 = IC(4);
175 P4 = IC(4);
176 P5 = I31(4,5);
177 P6 = I31(4, 6);
178 P7 = I31(4, 7);
179 P8 = I211(4, 5, 7);
180 } break;
181 case 10 :
182 case 138 :
183 {
184 P2 = I31(4, 2);
185 P4 = IC(4);
186 P5 = I31(4,5);
187 P6 = I31(4, 6);
188 P7 = I31(4, 7);
189 P8 = I211(4, 5, 7);
190 if (MUL) {
191         P0 = I31(4, 0);
192         P1 = IC(4);
193         P3 = IC(4);
194 } else {
195         P0 = I772(1, 3, 4);
196         P1 = I71(4, 1);
197         P3 = I71(4, 3);
198 }
199 } break;
200 case 11 :
201 case 139 :
202 {
203 P2 = I31(4, 2);
204 P4 = IC(4);
205 P5 = I31(4,5);
206 P6 = I31(4, 6);
207 P7 = I31(4, 7);
208 P8 = I211(4, 5, 7);
209 if (MUL) {
210         P0 = IC(4);
211         P1 = IC(4);
212         P3 = IC(4);
213 } else {
214         P0 = I772(1, 3, 4);
215         P1 = I71(4, 1);
216         P3 = I71(4, 3);
217 }
218 } break;
219 case 14 :
220 case 142 :
221 {
222 P4 = IC(4);
223 P5 = I31(4,5);
224 P6 = I31(4, 6);
225 P7 = I31(4, 7);
226 P8 = I211(4, 5, 7);
227 if (MUL) {
228         P0 = I31(4, 0);
229         P1 = IC(4);
230         P2 = I31(4,5);
231         P3 = IC(4);
232 } else {
233         P0 = I11(1, 3);
234         P1 = I31(1, 4);
235         P2 = I211(4, 1, 5);
236         P3 = I31(4, 3);
237 }
238 } break;
239 case 15 :
240 case 143 :
241 {
242 P4 = IC(4);
243 P5 = I31(4,5);
244 P6 = I31(4, 6);
245 P7 = I31(4, 7);
246 P8 = I211(4, 5, 7);
247 if (MUL) {
248         P0 = IC(4);
249         P1 = IC(4);
250         P2 = I31(4,5);
251         P3 = IC(4);
252 } else {
253         P0 = I11(1, 3);
254         P1 = I31(1, 4);
255         P2 = I211(4, 1, 5);
256         P3 = I31(4, 3);
257 }
258 } break;
259 case 16 :
260 case 17 :
261 case 48 :
262 case 49 :
263 {
264 P0 = I211(4, 1, 3);
265 P1 = I31(4,1);
266 P2 = I31(4, 2);
267 P3 = I31(4, 3);
268 P4 = IC(4);
269 P5 = IC(4);
270 P6 = I211(4, 3, 7);
271 P7 = I31(4, 7);
272 P8 = I31(4, 8);
273 } break;
274 case 18 :
275 case 50 :
276 {
277 P0 = I31(4, 0);
278 P3 = I31(4, 3);
279 P4 = IC(4);
280 P6 = I211(4, 3, 7);
281 P7 = I31(4, 7);
282 P8 = I31(4, 8);
283 if (MUR) {
284         P1 = IC(4);
285         P2 = I31(4, 2);
286         P5 = IC(4);
287 } else {
288         P1 = I71(4, 1);
289         P2 = I772(1, 5, 4);
290         P5 = I71(4, 5);
291 }
292 } break;
293 case 19 :
294 case 51 :
295 {
296 P3 = I31(4, 3);
297 P4 = IC(4);
298 P6 = I211(4, 3, 7);
299 P7 = I31(4, 7);
300 P8 = I31(4, 8);
301 if (MUR) {
302         P0 = I31(4, 3);
303         P1 = IC(4);
304         P2 = I31(4, 2);
305         P5 = IC(4);
306 } else {
307         P0 = I211(4, 1, 3);
308         P1 = I31(1, 4);
309         P2 = I11(1, 5);
310         P5 = I31(4,5);
311 }
312 } break;
313 case 20 :
314 case 21 :
315 case 52 :
316 case 53 :
317 {
318 P0 = I211(4, 1, 3);
319 P1 = I31(4,1);
320 P2 = I31(4,1);
321 P3 = I31(4, 3);
322 P4 = IC(4);
323 P5 = IC(4);
324 P6 = I211(4, 3, 7);
325 P7 = I31(4, 7);
326 P8 = I31(4, 8);
327 } break;
328 case 22 :
329 case 54 :
330 {
331 P0 = I31(4, 0);
332 P3 = I31(4, 3);
333 P4 = IC(4);
334 P6 = I211(4, 3, 7);
335 P7 = I31(4, 7);
336 P8 = I31(4, 8);
337 if (MUR) {
338         P1 = IC(4);
339         P2 = IC(4);
340         P5 = IC(4);
341 } else {
342         P1 = I71(4, 1);
343         P2 = I772(1, 5, 4);
344         P5 = I71(4, 5);
345 }
346 } break;
347 case 23 :
348 case 55 :
349 {
350 P3 = I31(4, 3);
351 P4 = IC(4);
352 P6 = I211(4, 3, 7);
353 P7 = I31(4, 7);
354 P8 = I31(4, 8);
355 if (MUR) {
356         P0 = I31(4, 3);
357         P1 = IC(4);
358         P2 = IC(4);
359         P5 = IC(4);
360 } else {
361         P0 = I211(4, 1, 3);
362         P1 = I31(1, 4);
363         P2 = I11(1, 5);
364         P5 = I31(4,5);
365 }
366 } break;
367 case 24 :
368 {
369 P0 = I31(4, 0);
370 P1 = I31(4,1);
371 P2 = I31(4, 2);
372 P3 = IC(4);
373 P4 = IC(4);
374 P5 = IC(4);
375 P6 = I31(4, 6);
376 P7 = I31(4, 7);
377 P8 = I31(4, 8);
378 } break;
379 case 25 :
380 {
381 P0 = I31(4,1);
382 P1 = I31(4,1);
383 P2 = I31(4, 2);
384 P3 = IC(4);
385 P4 = IC(4);
386 P5 = IC(4);
387 P6 = I31(4, 6);
388 P7 = I31(4, 7);
389 P8 = I31(4, 8);
390 } break;
391 case 26 :
392 case 31 :
393 {
394 P1 = IC(4);
395 P4 = IC(4);
396 P6 = I31(4, 6);
397 P7 = I31(4, 7);
398 P8 = I31(4, 8);
399 if (MUL) {
400         P0 = IC(4);
401         P3 = IC(4);
402 } else {
403         P0 = I772(1, 3, 4);
404         P3 = I71(4, 3);
405 }
406 if (MUR) {
407         P2 = IC(4);
408         P5 = IC(4);
409 } else {
410         P2 = I772(1, 5, 4);
411         P5 = I71(4, 5);
412 }
413 } break;
414 case 27 :
415 {
416 P2 = I31(4, 2);
417 P4 = IC(4);
418 P5 = IC(4);
419 P6 = I31(4, 6);
420 P7 = I31(4, 7);
421 P8 = I31(4, 8);
422 if (MUL) {
423         P0 = IC(4);
424         P1 = IC(4);
425         P3 = IC(4);
426 } else {
427         P0 = I772(1, 3, 4);
428         P1 = I71(4, 1);
429         P3 = I71(4, 3);
430 }
431 } break;
432 case 28 :
433 {
434 P0 = I31(4, 0);
435 P1 = I31(4,1);
436 P2 = I31(4,1);
437 P3 = IC(4);
438 P4 = IC(4);
439 P5 = IC(4);
440 P6 = I31(4, 6);
441 P7 = I31(4, 7);
442 P8 = I31(4, 8);
443 } break;
444 case 29 :
445 {
446 P0 = I31(4,1);
447 P1 = I31(4,1);
448 P2 = I31(4,1);
449 P3 = IC(4);
450 P4 = IC(4);
451 P5 = IC(4);
452 P6 = I31(4, 6);
453 P7 = I31(4, 7);
454 P8 = I31(4, 8);
455 } break;
456 case 30 :
457 {
458 P0 = I31(4, 0);
459 P3 = IC(4);
460 P4 = IC(4);
461 P6 = I31(4, 6);
462 P7 = I31(4, 7);
463 P8 = I31(4, 8);
464 if (MUR) {
465         P1 = IC(4);
466         P2 = IC(4);
467         P5 = IC(4);
468 } else {
469         P1 = I71(4, 1);
470         P2 = I772(1, 5, 4);
471         P5 = I71(4, 5);
472 }
473 } break;
474 case 40 :
475 case 44 :
476 case 168 :
477 case 172 :
478 {
479 P0 = I31(4, 0);
480 P1 = I31(4,1);
481 P2 = I211(4, 1, 5);
482 P3 = IC(4);
483 P4 = IC(4);
484 P5 = I31(4,5);
485 P6 = I31(4, 7);
486 P7 = I31(4, 7);
487 P8 = I211(4, 5, 7);
488 } break;
489 case 41 :
490 case 45 :
491 case 169 :
492 case 173 :
493 {
494 P0 = I31(4,1);
495 P1 = I31(4,1);
496 P2 = I211(4, 1, 5);
497 P3 = IC(4);
498 P4 = IC(4);
499 P5 = I31(4,5);
500 P6 = I31(4, 7);
501 P7 = I31(4, 7);
502 P8 = I211(4, 5, 7);
503 } break;
504 case 42 :
505 case 170 :
506 {
507 P2 = I31(4, 2);
508 P4 = IC(4);
509 P5 = I31(4,5);
510 P7 = I31(4, 7);
511 P8 = I211(4, 5, 7);
512 if (MUL) {
513         P0 = I31(4, 0);
514         P1 = IC(4);
515         P3 = IC(4);
516         P6 = I31(4, 7);
517 } else {
518         P0 = I11(1, 3);
519         P1 = I31(4,1);
520         P3 = I31(3, 4);
521         P6 = I211(4, 3, 7);
522 }
523 } break;
524 case 43 :
525 case 171 :
526 {
527 P2 = I31(4, 2);
528 P4 = IC(4);
529 P5 = I31(4,5);
530 P7 = I31(4, 7);
531 P8 = I211(4, 5, 7);
532 if (MUL) {
533         P0 = IC(4);
534         P1 = IC(4);
535         P3 = IC(4);
536         P6 = I31(4, 7);
537 } else {
538         P0 = I11(1, 3);
539         P1 = I31(4,1);
540         P3 = I31(3, 4);
541         P6 = I211(4, 3, 7);
542 }
543 } break;
544 case 46 :
545 case 174 :
546 {
547 P1 = IC(4);
548 P2 = I31(4,5);
549 P3 = IC(4);
550 P4 = IC(4);
551 P5 = I31(4,5);
552 P6 = I31(4, 7);
553 P7 = I31(4, 7);
554 P8 = I211(4, 5, 7);
555 if (MUL) {
556         P0 = I31(4, 0);
557 } else {
558         P0 = I211(4, 1, 3);
559 }
560 } break;
561 case 47 :
562 case 175 :
563 {
564 P1 = IC(4);
565 P2 = I31(4,5);
566 P3 = IC(4);
567 P4 = IC(4);
568 P5 = I31(4,5);
569 P6 = I31(4, 7);
570 P7 = I31(4, 7);
571 P8 = I211(4, 5, 7);
572 if (MUL) {
573         P0 = IC(4);
574 } else {
575         P0 = I211(4, 1, 3);
576 }
577 } break;
578 case 56 :
579 {
580 P0 = I31(4, 0);
581 P1 = I31(4,1);
582 P2 = I31(4, 2);
583 P3 = IC(4);
584 P4 = IC(4);
585 P5 = IC(4);
586 P6 = I31(4, 7);
587 P7 = I31(4, 7);
588 P8 = I31(4, 8);
589 } break;
590 case 57 :
591 {
592 P0 = I31(4,1);
593 P1 = I31(4,1);
594 P2 = I31(4, 2);
595 P3 = IC(4);
596 P4 = IC(4);
597 P5 = IC(4);
598 P6 = I31(4, 7);
599 P7 = I31(4, 7);
600 P8 = I31(4, 8);
601 } break;
602 case 58 :
603 {
604 P1 = IC(4);
605 P3 = IC(4);
606 P4 = IC(4);
607 P5 = IC(4);
608 P6 = I31(4, 7);
609 P7 = I31(4, 7);
610 P8 = I31(4, 8);
611 if (MUL) {
612         P0 = I31(4, 0);
613 } else {
614         P0 = I211(4, 1, 3);
615 }
616 if (MUR) {
617         P2 = I31(4, 2);
618 } else {
619         P2 = I211(4, 1, 5);
620 }
621 } break;
622 case 59 :
623 {
624 P4 = IC(4);
625 P5 = IC(4);
626 P6 = I31(4, 7);
627 P7 = I31(4, 7);
628 P8 = I31(4, 8);
629 if (MUL) {
630         P0 = IC(4);
631         P1 = IC(4);
632         P3 = IC(4);
633 } else {
634         P0 = I772(1, 3, 4);
635         P1 = I71(4, 1);
636         P3 = I71(4, 3);
637 }
638 if (MUR) {
639         P2 = I31(4, 2);
640 } else {
641         P2 = I211(4, 1, 5);
642 }
643 } break;
644 case 60 :
645 {
646 P0 = I31(4, 0);
647 P1 = I31(4,1);
648 P2 = I31(4,1);
649 P3 = IC(4);
650 P4 = IC(4);
651 P5 = IC(4);
652 P6 = I31(4, 7);
653 P7 = I31(4, 7);
654 P8 = I31(4, 8);
655 } break;
656 case 61 :
657 {
658 P0 = I31(4,1);
659 P1 = I31(4,1);
660 P2 = I31(4,1);
661 P3 = IC(4);
662 P4 = IC(4);
663 P5 = IC(4);
664 P6 = I31(4, 7);
665 P7 = I31(4, 7);
666 P8 = I31(4, 8);
667 } break;
668 case 62 :
669 {
670 P0 = I31(4, 0);
671 P3 = IC(4);
672 P4 = IC(4);
673 P6 = I31(4, 7);
674 P7 = I31(4, 7);
675 P8 = I31(4, 8);
676 if (MUR) {
677         P1 = IC(4);
678         P2 = IC(4);
679         P5 = IC(4);
680 } else {
681         P1 = I71(4, 1);
682         P2 = I772(1, 5, 4);
683         P5 = I71(4, 5);
684 }
685 } break;
686 case 63 :
687 {
688 P1 = IC(4);
689 P3 = IC(4);
690 P4 = IC(4);
691 P6 = I31(4, 7);
692 P7 = I31(4, 7);
693 P8 = I31(4, 8);
694 if (MUL) {
695         P0 = IC(4);
696 } else {
697         P0 = I211(4, 1, 3);
698 }
699 if (MUR) {
700         P2 = IC(4);
701         P5 = IC(4);
702 } else {
703         P2 = I772(1, 5, 4);
704         P5 = I71(4, 5);
705 }
706 } break;
707 case 64 :
708 case 65 :
709 case 68 :
710 case 69 :
711 {
712 P0 = I211(4, 1, 3);
713 P1 = I31(4,1);
714 P2 = I211(4, 1, 5);
715 P3 = I31(4, 3);
716 P4 = IC(4);
717 P5 = I31(4,5);
718 P6 = I31(4, 6);
719 P7 = IC(4);
720 P8 = I31(4, 8);
721 } break;
722 case 66 :
723 {
724 P0 = I31(4, 0);
725 P1 = IC(4);
726 P2 = I31(4, 2);
727 P3 = I31(4, 3);
728 P4 = IC(4);
729 P5 = I31(4,5);
730 P6 = I31(4, 6);
731 P7 = IC(4);
732 P8 = I31(4, 8);
733 } break;
734 case 67 :
735 {
736 P0 = I31(4, 3);
737 P1 = IC(4);
738 P2 = I31(4, 2);
739 P3 = I31(4, 3);
740 P4 = IC(4);
741 P5 = I31(4,5);
742 P6 = I31(4, 6);
743 P7 = IC(4);
744 P8 = I31(4, 8);
745 } break;
746 case 70 :
747 {
748 P0 = I31(4, 0);
749 P1 = IC(4);
750 P2 = I31(4,5);
751 P3 = I31(4, 3);
752 P4 = IC(4);
753 P5 = I31(4,5);
754 P6 = I31(4, 6);
755 P7 = IC(4);
756 P8 = I31(4, 8);
757 } break;
758 case 71 :
759 {
760 P0 = I31(4, 3);
761 P1 = IC(4);
762 P2 = I31(4,5);
763 P3 = I31(4, 3);
764 P4 = IC(4);
765 P5 = I31(4,5);
766 P6 = I31(4, 6);
767 P7 = IC(4);
768 P8 = I31(4, 8);
769 } break;
770 case 72 :
771 case 76 :
772 {
773 P0 = I31(4, 0);
774 P1 = I31(4,1);
775 P2 = I211(4, 1, 5);
776 P4 = IC(4);
777 P5 = I31(4,5);
778 P8 = I31(4, 8);
779 if (MDL) {
780         P3 = IC(4);
781         P6 = I31(4, 6);
782         P7 = IC(4);
783 } else {
784         P3 = I71(4, 3);
785         P6 = I772(3, 7, 4);
786         P7 = I71(4, 7);
787 }
788 } break;
789 case 73 :
790 case 77 :
791 {
792 P1 = I31(4,1);
793 P2 = I211(4, 1, 5);
794 P4 = IC(4);
795 P5 = I31(4,5);
796 P8 = I31(4, 8);
797 if (MDL) {
798         P0 = I31(4,1);
799         P3 = IC(4);
800         P6 = I31(4, 6);
801         P7 = IC(4);
802 } else {
803         P0 = I211(4, 1, 3);
804         P3 = I31(3, 4);
805         P6 = I11(3, 7);
806         P7 = I31(4, 7);
807 }
808 } break;
809 case 74 :
810 case 107 :
811 {
812 P2 = I31(4, 2);
813 P3 = IC(4);
814 P4 = IC(4);
815 P5 = I31(4,5);
816 P8 = I31(4, 8);
817 if (MDL) {
818         P6 = IC(4);
819         P7 = IC(4);
820 } else {
821         P6 = I772(3, 7, 4);
822         P7 = I71(4, 7);
823 }
824 if (MUL) {
825         P0 = IC(4);
826         P1 = IC(4);
827 } else {
828         P0 = I772(1, 3, 4);
829         P1 = I71(4, 1);
830 }
831 } break;
832 case 75 :
833 {
834 P2 = I31(4, 2);
835 P4 = IC(4);
836 P5 = I31(4,5);
837 P6 = I31(4, 6);
838 P7 = IC(4);
839 P8 = I31(4, 8);
840 if (MUL) {
841         P0 = IC(4);
842         P1 = IC(4);
843         P3 = IC(4);
844 } else {
845         P0 = I772(1, 3, 4);
846         P1 = I71(4, 1);
847         P3 = I71(4, 3);
848 }
849 } break;
850 case 78 :
851 {
852 P1 = IC(4);
853 P2 = I31(4,5);
854 P3 = IC(4);
855 P4 = IC(4);
856 P5 = I31(4,5);
857 P7 = IC(4);
858 P8 = I31(4, 8);
859 if (MDL) {
860         P6 = I31(4, 6);
861 } else {
862         P6 = I211(4, 3, 7);
863 }
864 if (MUL) {
865         P0 = I31(4, 0);
866 } else {
867         P0 = I211(4, 1, 3);
868 }
869 } break;
870 case 79 :
871 {
872 P2 = I31(4,5);
873 P4 = IC(4);
874 P5 = I31(4,5);
875 P7 = IC(4);
876 P8 = I31(4, 8);
877 if (MDL) {
878         P6 = I31(4, 6);
879 } else {
880         P6 = I211(4, 3, 7);
881 }
882 if (MUL) {
883         P0 = IC(4);
884         P1 = IC(4);
885         P3 = IC(4);
886 } else {
887         P0 = I772(1, 3, 4);
888         P1 = I71(4, 1);
889         P3 = I71(4, 3);
890 }
891 } break;
892 case 80 :
893 case 81 :
894 {
895 P0 = I211(4, 1, 3);
896 P1 = I31(4,1);
897 P2 = I31(4, 2);
898 P3 = I31(4, 3);
899 P4 = IC(4);
900 P6 = I31(4, 6);
901 if (MDR) {
902         P5 = IC(4);
903         P7 = IC(4);
904         P8 = I31(4, 8);
905 } else {
906         P5 = I71(4, 5);
907         P7 = I71(4, 7);
908         P8 = I772(5, 7, 4);
909 }
910 } break;
911 case 82 :
912 case 214 :
913 {
914 P0 = I31(4, 0);
915 P3 = I31(4, 3);
916 P4 = IC(4);
917 P5 = IC(4);
918 P6 = I31(4, 6);
919 if (MDR) {
920         P7 = IC(4);
921         P8 = IC(4);
922 } else {
923         P7 = I71(4, 7);
924         P8 = I772(5, 7, 4);
925 }
926 if (MUR) {
927         P1 = IC(4);
928         P2 = IC(4);
929 } else {
930         P1 = I71(4, 1);
931         P2 = I772(1, 5, 4);
932 }
933 } break;
934 case 83 :
935 {
936 P0 = I31(4, 3);
937 P1 = IC(4);
938 P3 = I31(4, 3);
939 P4 = IC(4);
940 P5 = IC(4);
941 P6 = I31(4, 6);
942 P7 = IC(4);
943 if (MDR) {
944         P8 = I31(4, 8);
945 } else {
946         P8 = I211(4, 5, 7);
947 }
948 if (MUR) {
949         P2 = I31(4, 2);
950 } else {
951         P2 = I211(4, 1, 5);
952 }
953 } break;
954 case 84 :
955 case 85 :
956 {
957 P0 = I211(4, 1, 3);
958 P1 = I31(4,1);
959 P3 = I31(4, 3);
960 P4 = IC(4);
961 P6 = I31(4, 6);
962 if (MDR) {
963         P2 = I31(4,1);
964         P5 = IC(4);
965         P7 = IC(4);
966         P8 = I31(4, 8);
967 } else {
968         P2 = I211(4, 1, 5);
969         P5 = I31(5, 4);
970         P7 = I31(4, 7);
971         P8 = I11(5, 7);
972 }
973 } break;
974 case 86 :
975 {
976 P0 = I31(4, 0);
977 P3 = I31(4, 3);
978 P4 = IC(4);
979 P6 = I31(4, 6);
980 P7 = IC(4);
981 P8 = I31(4, 8);
982 if (MUR) {
983         P1 = IC(4);
984         P2 = IC(4);
985         P5 = IC(4);
986 } else {
987         P1 = I71(4, 1);
988         P2 = I772(1, 5, 4);
989         P5 = I71(4, 5);
990 }
991 } break;
992 case 87 :
993 {
994 P0 = I31(4, 3);
995 P3 = I31(4, 3);
996 P4 = IC(4);
997 P6 = I31(4, 6);
998 P7 = IC(4);
999 if (MDR) {
1000         P8 = I31(4, 8);
1001 } else {
1002         P8 = I211(4, 5, 7);
1003 }
1004 if (MUR) {
1005         P1 = IC(4);
1006         P2 = IC(4);
1007         P5 = IC(4);
1008 } else {
1009         P1 = I71(4, 1);
1010         P2 = I772(1, 5, 4);
1011         P5 = I71(4, 5);
1012 }
1013 } break;
1014 case 88 :
1015 case 248 :
1016 {
1017 P0 = I31(4, 0);
1018 P1 = I31(4,1);
1019 P2 = I31(4, 2);
1020 P4 = IC(4);
1021 P7 = IC(4);
1022 if (MDL) {
1023         P3 = IC(4);
1024         P6 = IC(4);
1025 } else {
1026         P3 = I71(4, 3);
1027         P6 = I772(3, 7, 4);
1028 }
1029 if (MDR) {
1030         P5 = IC(4);
1031         P8 = IC(4);
1032 } else {
1033         P5 = I71(4, 5);
1034         P8 = I772(5, 7, 4);
1035 }
1036 } break;
1037 case 89 :
1038 {
1039 P0 = I31(4,1);
1040 P1 = I31(4,1);
1041 P2 = I31(4, 2);
1042 P3 = IC(4);
1043 P4 = IC(4);
1044 P5 = IC(4);
1045 P7 = IC(4);
1046 if (MDL) {
1047         P6 = I31(4, 6);
1048 } else {
1049         P6 = I211(4, 3, 7);
1050 }
1051 if (MDR) {
1052         P8 = I31(4, 8);
1053 } else {
1054         P8 = I211(4, 5, 7);
1055 }
1056 } break;
1057 case 90 :
1058 {
1059 P1 = IC(4);
1060 P3 = IC(4);
1061 P4 = IC(4);
1062 P5 = IC(4);
1063 P7 = IC(4);
1064 if (MDL) {
1065         P6 = I31(4, 6);
1066 } else {
1067         P6 = I211(4, 3, 7);
1068 }
1069 if (MDR) {
1070         P8 = I31(4, 8);
1071 } else {
1072         P8 = I211(4, 5, 7);
1073 }
1074 if (MUL) {
1075         P0 = I31(4, 0);
1076 } else {
1077         P0 = I211(4, 1, 3);
1078 }
1079 if (MUR) {
1080         P2 = I31(4, 2);
1081 } else {
1082         P2 = I211(4, 1, 5);
1083 }
1084 } break;
1085 case 91 :
1086 {
1087 P4 = IC(4);
1088 P5 = IC(4);
1089 P7 = IC(4);
1090 if (MDL) {
1091         P6 = I31(4, 6);
1092 } else {
1093         P6 = I211(4, 3, 7);
1094 }
1095 if (MDR) {
1096         P8 = I31(4, 8);
1097 } else {
1098         P8 = I211(4, 5, 7);
1099 }
1100 if (MUL) {
1101         P0 = IC(4);
1102         P1 = IC(4);
1103         P3 = IC(4);
1104 } else {
1105         P0 = I772(1, 3, 4);
1106         P1 = I71(4, 1);
1107         P3 = I71(4, 3);
1108 }
1109 if (MUR) {
1110         P2 = I31(4, 2);
1111 } else {
1112         P2 = I211(4, 1, 5);
1113 }
1114 } break;
1115 case 92 :
1116 {
1117 P0 = I31(4, 0);
1118 P1 = I31(4,1);
1119 P2 = I31(4,1);
1120 P3 = IC(4);
1121 P4 = IC(4);
1122 P5 = IC(4);
1123 P7 = IC(4);
1124 if (MDL) {
1125         P6 = I31(4, 6);
1126 } else {
1127         P6 = I211(4, 3, 7);
1128 }
1129 if (MDR) {
1130         P8 = I31(4, 8);
1131 } else {
1132         P8 = I211(4, 5, 7);
1133 }
1134 } break;
1135 case 93 :
1136 {
1137 P0 = I31(4,1);
1138 P1 = I31(4,1);
1139 P2 = I31(4,1);
1140 P3 = IC(4);
1141 P4 = IC(4);
1142 P5 = IC(4);
1143 P7 = IC(4);
1144 if (MDL) {
1145         P6 = I31(4, 6);
1146 } else {
1147         P6 = I211(4, 3, 7);
1148 }
1149 if (MDR) {
1150         P8 = I31(4, 8);
1151 } else {
1152         P8 = I211(4, 5, 7);
1153 }
1154 } break;
1155 case 94 :
1156 {
1157 P3 = IC(4);
1158 P4 = IC(4);
1159 P7 = IC(4);
1160 if (MDL) {
1161         P6 = I31(4, 6);
1162 } else {
1163         P6 = I211(4, 3, 7);
1164 }
1165 if (MDR) {
1166         P8 = I31(4, 8);
1167 } else {
1168         P8 = I211(4, 5, 7);
1169 }
1170 if (MUL) {
1171         P0 = I31(4, 0);
1172 } else {
1173         P0 = I211(4, 1, 3);
1174 }
1175 if (MUR) {
1176         P1 = IC(4);
1177         P2 = IC(4);
1178         P5 = IC(4);
1179 } else {
1180         P1 = I71(4, 1);
1181         P2 = I772(1, 5, 4);
1182         P5 = I71(4, 5);
1183 }
1184 } break;
1185 case 95 :
1186 {
1187 P1 = IC(4);
1188 P4 = IC(4);
1189 P6 = I31(4, 6);
1190 P7 = IC(4);
1191 P8 = I31(4, 8);
1192 if (MUL) {
1193         P0 = IC(4);
1194         P3 = IC(4);
1195 } else {
1196         P0 = I772(1, 3, 4);
1197         P3 = I71(4, 3);
1198 }
1199 if (MUR) {
1200         P2 = IC(4);
1201         P5 = IC(4);
1202 } else {
1203         P2 = I772(1, 5, 4);
1204         P5 = I71(4, 5);
1205 }
1206 } break;
1207 case 96 :
1208 case 97 :
1209 case 100 :
1210 case 101 :
1211 {
1212 P0 = I211(4, 1, 3);
1213 P1 = I31(4,1);
1214 P2 = I211(4, 1, 5);
1215 P3 = I31(4, 3);
1216 P4 = IC(4);
1217 P5 = I31(4,5);
1218 P6 = I31(4, 3);
1219 P7 = IC(4);
1220 P8 = I31(4, 8);
1221 } break;
1222 case 98 :
1223 {
1224 P0 = I31(4, 0);
1225 P1 = IC(4);
1226 P2 = I31(4, 2);
1227 P3 = I31(4, 3);
1228 P4 = IC(4);
1229 P5 = I31(4,5);
1230 P6 = I31(4, 3);
1231 P7 = IC(4);
1232 P8 = I31(4, 8);
1233 } break;
1234 case 99 :
1235 {
1236 P0 = I31(4, 3);
1237 P1 = IC(4);
1238 P2 = I31(4, 2);
1239 P3 = I31(4, 3);
1240 P4 = IC(4);
1241 P5 = I31(4,5);
1242 P6 = I31(4, 3);
1243 P7 = IC(4);
1244 P8 = I31(4, 8);
1245 } break;
1246 case 102 :
1247 {
1248 P0 = I31(4, 0);
1249 P1 = IC(4);
1250 P2 = I31(4,5);
1251 P3 = I31(4, 3);
1252 P4 = IC(4);
1253 P5 = I31(4,5);
1254 P6 = I31(4, 3);
1255 P7 = IC(4);
1256 P8 = I31(4, 8);
1257 } break;
1258 case 103 :
1259 {
1260 P0 = I31(4, 3);
1261 P1 = IC(4);
1262 P2 = I31(4,5);
1263 P3 = I31(4, 3);
1264 P4 = IC(4);
1265 P5 = I31(4,5);
1266 P6 = I31(4, 3);
1267 P7 = IC(4);
1268 P8 = I31(4, 8);
1269 } break;
1270 case 104 :
1271 case 108 :
1272 {
1273 P0 = I31(4, 0);
1274 P1 = I31(4,1);
1275 P2 = I211(4, 1, 5);
1276 P4 = IC(4);
1277 P5 = I31(4,5);
1278 P8 = I31(4, 8);
1279 if (MDL) {
1280         P3 = IC(4);
1281         P6 = IC(4);
1282         P7 = IC(4);
1283 } else {
1284         P3 = I71(4, 3);
1285         P6 = I772(3, 7, 4);
1286         P7 = I71(4, 7);
1287 }
1288 } break;
1289 case 105 :
1290 case 109 :
1291 {
1292 P1 = I31(4,1);
1293 P2 = I211(4, 1, 5);
1294 P4 = IC(4);
1295 P5 = I31(4,5);
1296 P8 = I31(4, 8);
1297 if (MDL) {
1298         P0 = I31(4,1);
1299         P3 = IC(4);
1300         P6 = IC(4);
1301         P7 = IC(4);
1302 } else {
1303         P0 = I211(4, 1, 3);
1304         P3 = I31(3, 4);
1305         P6 = I11(3, 7);
1306         P7 = I31(4, 7);
1307 }
1308 } break;
1309 case 106 :
1310 {
1311 P0 = I31(4, 0);
1312 P1 = IC(4);
1313 P2 = I31(4, 2);
1314 P4 = IC(4);
1315 P5 = I31(4,5);
1316 P8 = I31(4, 8);
1317 if (MDL) {
1318         P3 = IC(4);
1319         P6 = IC(4);
1320         P7 = IC(4);
1321 } else {
1322         P3 = I71(4, 3);
1323         P6 = I772(3, 7, 4);
1324         P7 = I71(4, 7);
1325 }
1326 } break;
1327 case 110 :
1328 {
1329 P0 = I31(4, 0);
1330 P1 = IC(4);
1331 P2 = I31(4,5);
1332 P4 = IC(4);
1333 P5 = I31(4,5);
1334 P8 = I31(4, 8);
1335 if (MDL) {
1336         P3 = IC(4);
1337         P6 = IC(4);
1338         P7 = IC(4);
1339 } else {
1340         P3 = I71(4, 3);
1341         P6 = I772(3, 7, 4);
1342         P7 = I71(4, 7);
1343 }
1344 } break;
1345 case 111 :
1346 {
1347 P1 = IC(4);
1348 P2 = I31(4,5);
1349 P3 = IC(4);
1350 P4 = IC(4);
1351 P5 = I31(4,5);
1352 P8 = I31(4, 8);
1353 if (MDL) {
1354         P6 = IC(4);
1355         P7 = IC(4);
1356 } else {
1357         P6 = I772(3, 7, 4);
1358         P7 = I71(4, 7);
1359 }
1360 if (MUL) {
1361         P0 = IC(4);
1362 } else {
1363         P0 = I211(4, 1, 3);
1364 }
1365 } break;
1366 case 112 :
1367 case 113 :
1368 {
1369 P0 = I211(4, 1, 3);
1370 P1 = I31(4,1);
1371 P2 = I31(4, 2);
1372 P3 = I31(4, 3);
1373 P4 = IC(4);
1374 if (MDR) {
1375         P5 = IC(4);
1376         P6 = I31(4, 3);
1377         P7 = IC(4);
1378         P8 = I31(4, 8);
1379 } else {
1380         P5 = I31(4,5);
1381         P6 = I211(4, 3, 7);
1382         P7 = I31(7, 4);
1383         P8 = I11(5, 7);
1384 }
1385 } break;
1386 case 114 :
1387 {
1388 P0 = I31(4, 0);
1389 P1 = IC(4);
1390 P3 = I31(4, 3);
1391 P4 = IC(4);
1392 P5 = IC(4);
1393 P6 = I31(4, 3);
1394 P7 = IC(4);
1395 if (MDR) {
1396         P8 = I31(4, 8);
1397 } else {
1398         P8 = I211(4, 5, 7);
1399 }
1400 if (MUR) {
1401         P2 = I31(4, 2);
1402 } else {
1403         P2 = I211(4, 1, 5);
1404 }
1405 } break;
1406 case 115 :
1407 {
1408 P0 = I31(4, 3);
1409 P1 = IC(4);
1410 P3 = I31(4, 3);
1411 P4 = IC(4);
1412 P5 = IC(4);
1413 P6 = I31(4, 3);
1414 P7 = IC(4);
1415 if (MDR) {
1416         P8 = I31(4, 8);
1417 } else {
1418         P8 = I211(4, 5, 7);
1419 }
1420 if (MUR) {
1421         P2 = I31(4, 2);
1422 } else {
1423         P2 = I211(4, 1, 5);
1424 }
1425 } break;
1426 case 116 :
1427 case 117 :
1428 {
1429 P0 = I211(4, 1, 3);
1430 P1 = I31(4,1);
1431 P2 = I31(4,1);
1432 P3 = I31(4, 3);
1433 P4 = IC(4);
1434 P5 = IC(4);
1435 P6 = I31(4, 3);
1436 P7 = IC(4);
1437 if (MDR) {
1438         P8 = I31(4, 8);
1439 } else {
1440         P8 = I211(4, 5, 7);
1441 }
1442 } break;
1443 case 118 :
1444 {
1445 P0 = I31(4, 0);
1446 P3 = I31(4, 3);
1447 P4 = IC(4);
1448 P6 = I31(4, 3);
1449 P7 = IC(4);
1450 P8 = I31(4, 8);
1451 if (MUR) {
1452         P1 = IC(4);
1453         P2 = IC(4);
1454         P5 = IC(4);
1455 } else {
1456         P1 = I71(4, 1);
1457         P2 = I772(1, 5, 4);
1458         P5 = I71(4, 5);
1459 }
1460 } break;
1461 case 119 :
1462 {
1463 P3 = I31(4, 3);
1464 P4 = IC(4);
1465 P6 = I31(4, 3);
1466 P7 = IC(4);
1467 P8 = I31(4, 8);
1468 if (MUR) {
1469         P0 = I31(4, 3);
1470         P1 = IC(4);
1471         P2 = IC(4);
1472         P5 = IC(4);
1473 } else {
1474         P0 = I211(4, 1, 3);
1475         P1 = I31(1, 4);
1476         P2 = I11(1, 5);
1477         P5 = I31(4,5);
1478 }
1479 } break;
1480 case 120 :
1481 {
1482 P0 = I31(4, 0);
1483 P1 = I31(4,1);
1484 P2 = I31(4, 2);
1485 P4 = IC(4);
1486 P5 = IC(4);
1487 P8 = I31(4, 8);
1488 if (MDL) {
1489         P3 = IC(4);
1490         P6 = IC(4);
1491         P7 = IC(4);
1492 } else {
1493         P3 = I71(4, 3);
1494         P6 = I772(3, 7, 4);
1495         P7 = I71(4, 7);
1496 }
1497 } break;
1498 case 121 :
1499 {
1500 P0 = I31(4,1);
1501 P1 = I31(4,1);
1502 P2 = I31(4, 2);
1503 P4 = IC(4);
1504 P5 = IC(4);
1505 if (MDL) {
1506         P3 = IC(4);
1507         P6 = IC(4);
1508         P7 = IC(4);
1509 } else {
1510         P3 = I71(4, 3);
1511         P6 = I772(3, 7, 4);
1512         P7 = I71(4, 7);
1513 }
1514 if (MDR) {
1515         P8 = I31(4, 8);
1516 } else {
1517         P8 = I211(4, 5, 7);
1518 }
1519 } break;
1520 case 122 :
1521 {
1522 P1 = IC(4);
1523 P4 = IC(4);
1524 P5 = IC(4);
1525 if (MDL) {
1526         P3 = IC(4);
1527         P6 = IC(4);
1528         P7 = IC(4);
1529 } else {
1530         P3 = I71(4, 3);
1531         P6 = I772(3, 7, 4);
1532         P7 = I71(4, 7);
1533 }
1534 if (MDR) {
1535         P8 = I31(4, 8);
1536 } else {
1537         P8 = I211(4, 5, 7);
1538 }
1539 if (MUL) {
1540         P0 = I31(4, 0);
1541 } else {
1542         P0 = I211(4, 1, 3);
1543 }
1544 if (MUR) {
1545         P2 = I31(4, 2);
1546 } else {
1547         P2 = I211(4, 1, 5);
1548 }
1549 } break;
1550 case 123 :
1551 {
1552 P2 = I31(4, 2);
1553 P3 = IC(4);
1554 P4 = IC(4);
1555 P5 = IC(4);
1556 P8 = I31(4, 8);
1557 if (MDL) {
1558         P6 = IC(4);
1559         P7 = IC(4);
1560 } else {
1561         P6 = I772(3, 7, 4);
1562         P7 = I71(4, 7);
1563 }
1564 if (MUL) {
1565         P0 = IC(4);
1566         P1 = IC(4);
1567 } else {
1568         P0 = I772(1, 3, 4);
1569         P1 = I71(4, 1);
1570 }
1571 } break;
1572 case 124 :
1573 {
1574 P0 = I31(4, 0);
1575 P1 = I31(4,1);
1576 P2 = I31(4,1);
1577 P4 = IC(4);
1578 P5 = IC(4);
1579 P8 = I31(4, 8);
1580 if (MDL) {
1581         P3 = IC(4);
1582         P6 = IC(4);
1583         P7 = IC(4);
1584 } else {
1585         P3 = I71(4, 3);
1586         P6 = I772(3, 7, 4);
1587         P7 = I71(4, 7);
1588 }
1589 } break;
1590 case 125 :
1591 {
1592 P1 = I31(4,1);
1593 P2 = I31(4,1);
1594 P4 = IC(4);
1595 P5 = IC(4);
1596 P8 = I31(4, 8);
1597 if (MDL) {
1598         P0 = I31(4,1);
1599         P3 = IC(4);
1600         P6 = IC(4);
1601         P7 = IC(4);
1602 } else {
1603         P0 = I211(4, 1, 3);
1604         P3 = I31(3, 4);
1605         P6 = I11(3, 7);
1606         P7 = I31(4, 7);
1607 }
1608 } break;
1609 case 126 :
1610 {
1611 P0 = I31(4, 0);
1612 P4 = IC(4);
1613 P8 = I31(4, 8);
1614 if (MDL) {
1615         P3 = IC(4);
1616         P6 = IC(4);
1617         P7 = IC(4);
1618 } else {
1619         P3 = I71(4, 3);
1620         P6 = I772(3, 7, 4);
1621         P7 = I71(4, 7);
1622 }
1623 if (MUR) {
1624         P1 = IC(4);
1625         P2 = IC(4);
1626         P5 = IC(4);
1627 } else {
1628         P1 = I71(4, 1);
1629         P2 = I772(1, 5, 4);
1630         P5 = I71(4, 5);
1631 }
1632 } break;
1633 case 127 :
1634 {
1635 P4 = IC(4);
1636 P8 = I31(4, 8);
1637 if (MDL) {
1638         P6 = IC(4);
1639         P7 = IC(4);
1640 } else {
1641         P6 = I772(3, 7, 4);
1642         P7 = I71(4, 7);
1643 }
1644 if (MUL) {
1645         P0 = IC(4);
1646         P1 = IC(4);
1647         P3 = IC(4);
1648 } else {
1649         P0 = I211(4, 1, 3);
1650         P1 = I71(4, 1);
1651         P3 = I71(4, 3);
1652 }
1653 if (MUR) {
1654         P2 = IC(4);
1655         P5 = IC(4);
1656 } else {
1657         P2 = I772(1, 5, 4);
1658         P5 = I71(4, 5);
1659 }
1660 } break;
1661 case 144 :
1662 case 145 :
1663 case 176 :
1664 case 177 :
1665 {
1666 P0 = I211(4, 1, 3);
1667 P1 = I31(4,1);
1668 P2 = I31(4, 2);
1669 P3 = I31(4, 3);
1670 P4 = IC(4);
1671 P5 = IC(4);
1672 P6 = I211(4, 3, 7);
1673 P7 = I31(4, 7);
1674 P8 = I31(4, 7);
1675 } break;
1676 case 146 :
1677 case 178 :
1678 {
1679 P0 = I31(4, 0);
1680 P3 = I31(4, 3);
1681 P4 = IC(4);
1682 P6 = I211(4, 3, 7);
1683 P7 = I31(4, 7);
1684 if (MUR) {
1685         P1 = IC(4);
1686         P2 = I31(4, 2);
1687         P5 = IC(4);
1688         P8 = I31(4, 7);
1689 } else {
1690         P1 = I31(4,1);
1691         P2 = I11(1, 5);
1692         P5 = I31(5, 4);
1693         P8 = I211(4, 5, 7);
1694 }
1695 } break;
1696 case 147 :
1697 case 179 :
1698 {
1699 P0 = I31(4, 3);
1700 P1 = IC(4);
1701 P3 = I31(4, 3);
1702 P4 = IC(4);
1703 P5 = IC(4);
1704 P6 = I211(4, 3, 7);
1705 P7 = I31(4, 7);
1706 P8 = I31(4, 7);
1707 if (MUR) {
1708         P2 = I31(4, 2);
1709 } else {
1710         P2 = I211(4, 1, 5);
1711 }
1712 } break;
1713 case 148 :
1714 case 149 :
1715 case 180 :
1716 case 181 :
1717 {
1718 P0 = I211(4, 1, 3);
1719 P1 = I31(4,1);
1720 P2 = I31(4,1);
1721 P3 = I31(4, 3);
1722 P4 = IC(4);
1723 P5 = IC(4);
1724 P6 = I211(4, 3, 7);
1725 P7 = I31(4, 7);
1726 P8 = I31(4, 7);
1727 } break;
1728 case 150 :
1729 case 182 :
1730 {
1731 P0 = I31(4, 0);
1732 P3 = I31(4, 3);
1733 P4 = IC(4);
1734 P6 = I211(4, 3, 7);
1735 P7 = I31(4, 7);
1736 if (MUR) {
1737         P1 = IC(4);
1738         P2 = IC(4);
1739         P5 = IC(4);
1740         P8 = I31(4, 7);
1741 } else {
1742         P1 = I31(4,1);
1743         P2 = I11(1, 5);
1744         P5 = I31(5, 4);
1745         P8 = I211(4, 5, 7);
1746 }
1747 } break;
1748 case 151 :
1749 case 183 :
1750 {
1751 P0 = I31(4, 3);
1752 P1 = IC(4);
1753 P3 = I31(4, 3);
1754 P4 = IC(4);
1755 P5 = IC(4);
1756 P6 = I211(4, 3, 7);
1757 P7 = I31(4, 7);
1758 P8 = I31(4, 7);
1759 if (MUR) {
1760         P2 = IC(4);
1761 } else {
1762         P2 = I211(4, 1, 5);
1763 }
1764 } break;
1765 case 152 :
1766 {
1767 P0 = I31(4, 0);
1768 P1 = I31(4,1);
1769 P2 = I31(4, 2);
1770 P3 = IC(4);
1771 P4 = IC(4);
1772 P5 = IC(4);
1773 P6 = I31(4, 6);
1774 P7 = I31(4, 7);
1775 P8 = I31(4, 7);
1776 } break;
1777 case 153 :
1778 {
1779 P0 = I31(4,1);
1780 P1 = I31(4,1);
1781 P2 = I31(4, 2);
1782 P3 = IC(4);
1783 P4 = IC(4);
1784 P5 = IC(4);
1785 P6 = I31(4, 6);
1786 P7 = I31(4, 7);
1787 P8 = I31(4, 7);
1788 } break;
1789 case 154 :
1790 {
1791 P1 = IC(4);
1792 P3 = IC(4);
1793 P4 = IC(4);
1794 P5 = IC(4);
1795 P6 = I31(4, 6);
1796 P7 = I31(4, 7);
1797 P8 = I31(4, 7);
1798 if (MUL) {
1799         P0 = I31(4, 0);
1800 } else {
1801         P0 = I211(4, 1, 3);
1802 }
1803 if (MUR) {
1804         P2 = I31(4, 2);
1805 } else {
1806         P2 = I211(4, 1, 5);
1807 }
1808 } break;
1809 case 155 :
1810 {
1811 P2 = I31(4, 2);
1812 P4 = IC(4);
1813 P5 = IC(4);
1814 P6 = I31(4, 6);
1815 P7 = I31(4, 7);
1816 P8 = I31(4, 7);
1817 if (MUL) {
1818         P0 = IC(4);
1819         P1 = IC(4);
1820         P3 = IC(4);
1821 } else {
1822         P0 = I772(1, 3, 4);
1823         P1 = I71(4, 1);
1824         P3 = I71(4, 3);
1825 }
1826 } break;
1827 case 156 :
1828 {
1829 P0 = I31(4, 0);
1830 P1 = I31(4,1);
1831 P2 = I31(4,1);
1832 P3 = IC(4);
1833 P4 = IC(4);
1834 P5 = IC(4);
1835 P6 = I31(4, 6);
1836 P7 = I31(4, 7);
1837 P8 = I31(4, 7);
1838 } break;
1839 case 157 :
1840 {
1841 P0 = I31(4,1);
1842 P1 = I31(4,1);
1843 P2 = I31(4,1);
1844 P3 = IC(4);
1845 P4 = IC(4);
1846 P5 = IC(4);
1847 P6 = I31(4, 6);
1848 P7 = I31(4, 7);
1849 P8 = I31(4, 7);
1850 } break;
1851 case 158 :
1852 {
1853 P3 = IC(4);
1854 P4 = IC(4);
1855 P6 = I31(4, 6);
1856 P7 = I31(4, 7);
1857 P8 = I31(4, 7);
1858 if (MUL) {
1859         P0 = I31(4, 0);
1860 } else {
1861         P0 = I211(4, 1, 3);
1862 }
1863 if (MUR) {
1864         P1 = IC(4);
1865         P2 = IC(4);
1866         P5 = IC(4);
1867 } else {
1868         P1 = I71(4, 1);
1869         P2 = I772(1, 5, 4);
1870         P5 = I71(4, 5);
1871 }
1872 } break;
1873 case 159 :
1874 {
1875 P1 = IC(4);
1876 P4 = IC(4);
1877 P5 = IC(4);
1878 P6 = I31(4, 6);
1879 P7 = I31(4, 7);
1880 P8 = I31(4, 7);
1881 if (MUL) {
1882         P0 = IC(4);
1883         P3 = IC(4);
1884 } else {
1885         P0 = I772(1, 3, 4);
1886         P3 = I71(4, 3);
1887 }
1888 if (MUR) {
1889         P2 = IC(4);
1890 } else {
1891         P2 = I211(4, 1, 5);
1892 }
1893 } break;
1894 case 184 :
1895 {
1896 P0 = I31(4, 0);
1897 P1 = I31(4,1);
1898 P2 = I31(4, 2);
1899 P3 = IC(4);
1900 P4 = IC(4);
1901 P5 = IC(4);
1902 P6 = I31(4, 7);
1903 P7 = I31(4, 7);
1904 P8 = I31(4, 7);
1905 } break;
1906 case 185 :
1907 {
1908 P0 = I31(4,1);
1909 P1 = I31(4,1);
1910 P2 = I31(4, 2);
1911 P3 = IC(4);
1912 P4 = IC(4);
1913 P5 = IC(4);
1914 P6 = I31(4, 7);
1915 P7 = I31(4, 7);
1916 P8 = I31(4, 7);
1917 } break;
1918 case 186 :
1919 {
1920 P1 = IC(4);
1921 P3 = IC(4);
1922 P4 = IC(4);
1923 P5 = IC(4);
1924 P6 = I31(4, 7);
1925 P7 = I31(4, 7);
1926 P8 = I31(4, 7);
1927 if (MUL) {
1928         P0 = I31(4, 0);
1929 } else {
1930         P0 = I211(4, 1, 3);
1931 }
1932 if (MUR) {
1933         P2 = I31(4, 2);
1934 } else {
1935         P2 = I211(4, 1, 5);
1936 }
1937 } break;
1938 case 187 :
1939 {
1940 P2 = I31(4, 2);
1941 P4 = IC(4);
1942 P5 = IC(4);
1943 P7 = I31(4, 7);
1944 P8 = I31(4, 7);
1945 if (MUL) {
1946         P0 = IC(4);
1947         P1 = IC(4);
1948         P3 = IC(4);
1949         P6 = I31(4, 7);
1950 } else {
1951         P0 = I11(1, 3);
1952         P1 = I31(4,1);
1953         P3 = I31(3, 4);
1954         P6 = I211(4, 3, 7);
1955 }
1956 } break;
1957 case 188 :
1958 {
1959 P0 = I31(4, 0);
1960 P1 = I31(4,1);
1961 P2 = I31(4,1);
1962 P3 = IC(4);
1963 P4 = IC(4);
1964 P5 = IC(4);
1965 P6 = I31(4, 7);
1966 P7 = I31(4, 7);
1967 P8 = I31(4, 7);
1968 } break;
1969 case 189 :
1970 {
1971 P0 = I31(4,1);
1972 P1 = I31(4,1);
1973 P2 = I31(4,1);
1974 P3 = IC(4);
1975 P4 = IC(4);
1976 P5 = IC(4);
1977 P6 = I31(4, 7);
1978 P7 = I31(4, 7);
1979 P8 = I31(4, 7);
1980 } break;
1981 case 190 :
1982 {
1983 P0 = I31(4, 0);
1984 P3 = IC(4);
1985 P4 = IC(4);
1986 P6 = I31(4, 7);
1987 P7 = I31(4, 7);
1988 if (MUR) {
1989         P1 = IC(4);
1990         P2 = IC(4);
1991         P5 = IC(4);
1992         P8 = I31(4, 7);
1993 } else {
1994         P1 = I31(4,1);
1995         P2 = I11(1, 5);
1996         P5 = I31(5, 4);
1997         P8 = I211(4, 5, 7);
1998 }
1999 } break;
2000 case 191 :
2001 {
2002 P1 = IC(4);
2003 P3 = IC(4);
2004 P4 = IC(4);
2005 P5 = IC(4);
2006 P6 = I31(4, 7);
2007 P7 = I31(4, 7);
2008 P8 = I31(4, 7);
2009 if (MUL) {
2010         P0 = IC(4);
2011 } else {
2012         P0 = I211(4, 1, 3);
2013 }
2014 if (MUR) {
2015         P2 = IC(4);
2016 } else {
2017         P2 = I211(4, 1, 5);
2018 }
2019 } break;
2020 case 192 :
2021 case 193 :
2022 case 196 :
2023 case 197 :
2024 {
2025 P0 = I211(4, 1, 3);
2026 P1 = I31(4,1);
2027 P2 = I211(4, 1, 5);
2028 P3 = I31(4, 3);
2029 P4 = IC(4);
2030 P5 = I31(4,5);
2031 P6 = I31(4, 6);
2032 P7 = IC(4);
2033 P8 = I31(4,5);
2034 } break;
2035 case 194 :
2036 {
2037 P0 = I31(4, 0);
2038 P1 = IC(4);
2039 P2 = I31(4, 2);
2040 P3 = I31(4, 3);
2041 P4 = IC(4);
2042 P5 = I31(4,5);
2043 P6 = I31(4, 6);
2044 P7 = IC(4);
2045 P8 = I31(4,5);
2046 } break;
2047 case 195 :
2048 {
2049 P0 = I31(4, 3);
2050 P1 = IC(4);
2051 P2 = I31(4, 2);
2052 P3 = I31(4, 3);
2053 P4 = IC(4);
2054 P5 = I31(4,5);
2055 P6 = I31(4, 6);
2056 P7 = IC(4);
2057 P8 = I31(4,5);
2058 } break;
2059 case 198 :
2060 {
2061 P0 = I31(4, 0);
2062 P1 = IC(4);
2063 P2 = I31(4,5);
2064 P3 = I31(4, 3);
2065 P4 = IC(4);
2066 P5 = I31(4,5);
2067 P6 = I31(4, 6);
2068 P7 = IC(4);
2069 P8 = I31(4,5);
2070 } break;
2071 case 199 :
2072 {
2073 P0 = I31(4, 3);
2074 P1 = IC(4);
2075 P2 = I31(4,5);
2076 P3 = I31(4, 3);
2077 P4 = IC(4);
2078 P5 = I31(4,5);
2079 P6 = I31(4, 6);
2080 P7 = IC(4);
2081 P8 = I31(4,5);
2082 } break;
2083 case 200 :
2084 case 204 :
2085 {
2086 P0 = I31(4, 0);
2087 P1 = I31(4,1);
2088 P2 = I211(4, 1, 5);
2089 P4 = IC(4);
2090 P5 = I31(4,5);
2091 if (MDL) {
2092         P3 = IC(4);
2093         P6 = I31(4, 6);
2094         P7 = IC(4);
2095         P8 = I31(4,5);
2096 } else {
2097         P3 = I31(4, 3);
2098         P6 = I11(3, 7);
2099         P7 = I31(7, 4);
2100         P8 = I211(4, 5, 7);
2101 }
2102 } break;
2103 case 201 :
2104 case 205 :
2105 {
2106 P0 = I31(4,1);
2107 P1 = I31(4,1);
2108 P2 = I211(4, 1, 5);
2109 P3 = IC(4);
2110 P4 = IC(4);
2111 P5 = I31(4,5);
2112 P7 = IC(4);
2113 P8 = I31(4,5);
2114 if (MDL) {
2115         P6 = I31(4, 6);
2116 } else {
2117         P6 = I211(4, 3, 7);
2118 }
2119 } break;
2120 case 202 :
2121 {
2122 P1 = IC(4);
2123 P2 = I31(4, 2);
2124 P3 = IC(4);
2125 P4 = IC(4);
2126 P5 = I31(4,5);
2127 P7 = IC(4);
2128 P8 = I31(4,5);
2129 if (MDL) {
2130         P6 = I31(4, 6);
2131 } else {
2132         P6 = I211(4, 3, 7);
2133 }
2134 if (MUL) {
2135         P0 = I31(4, 0);
2136 } else {
2137         P0 = I211(4, 1, 3);
2138 }
2139 } break;
2140 case 203 :
2141 {
2142 P2 = I31(4, 2);
2143 P4 = IC(4);
2144 P5 = I31(4,5);
2145 P6 = I31(4, 6);
2146 P7 = IC(4);
2147 P8 = I31(4,5);
2148 if (MUL) {
2149         P0 = IC(4);
2150         P1 = IC(4);
2151         P3 = IC(4);
2152 } else {
2153         P0 = I772(1, 3, 4);
2154         P1 = I71(4, 1);
2155         P3 = I71(4, 3);
2156 }
2157 } break;
2158 case 206 :
2159 {
2160 P1 = IC(4);
2161 P2 = I31(4,5);
2162 P3 = IC(4);
2163 P4 = IC(4);
2164 P5 = I31(4,5);
2165 P7 = IC(4);
2166 P8 = I31(4,5);
2167 if (MDL) {
2168         P6 = I31(4, 6);
2169 } else {
2170         P6 = I211(4, 3, 7);
2171 }
2172 if (MUL) {
2173         P0 = I31(4, 0);
2174 } else {
2175         P0 = I211(4, 1, 3);
2176 }
2177 } break;
2178 case 207 :
2179 {
2180 P4 = IC(4);
2181 P5 = I31(4,5);
2182 P6 = I31(4, 6);
2183 P7 = IC(4);
2184 P8 = I31(4,5);
2185 if (MUL) {
2186         P0 = IC(4);
2187         P1 = IC(4);
2188         P2 = I31(4,5);
2189         P3 = IC(4);
2190 } else {
2191         P0 = I11(1, 3);
2192         P1 = I31(1, 4);
2193         P2 = I211(4, 1, 5);
2194         P3 = I31(4, 3);
2195 }
2196 } break;
2197 case 208 :
2198 case 209 :
2199 {
2200 P0 = I211(4, 1, 3);
2201 P1 = I31(4,1);
2202 P2 = I31(4, 2);
2203 P3 = I31(4, 3);
2204 P4 = IC(4);
2205 P6 = I31(4, 6);
2206 if (MDR) {
2207         P5 = IC(4);
2208         P7 = IC(4);
2209         P8 = IC(4);
2210 } else {
2211         P5 = I71(4, 5);
2212         P7 = I71(4, 7);
2213         P8 = I772(5, 7, 4);
2214 }
2215 } break;
2216 case 210 :
2217 {
2218 P0 = I31(4, 0);
2219 P1 = IC(4);
2220 P2 = I31(4, 2);
2221 P3 = I31(4, 3);
2222 P4 = IC(4);
2223 P6 = I31(4, 6);
2224 if (MDR) {
2225         P5 = IC(4);
2226         P7 = IC(4);
2227         P8 = IC(4);
2228 } else {
2229         P5 = I71(4, 5);
2230         P7 = I71(4, 7);
2231         P8 = I772(5, 7, 4);
2232 }
2233 } break;
2234 case 211 :
2235 {
2236 P0 = I31(4, 3);
2237 P1 = IC(4);
2238 P2 = I31(4, 2);
2239 P3 = I31(4, 3);
2240 P4 = IC(4);
2241 P6 = I31(4, 6);
2242 if (MDR) {
2243         P5 = IC(4);
2244         P7 = IC(4);
2245         P8 = IC(4);
2246 } else {
2247         P5 = I71(4, 5);
2248         P7 = I71(4, 7);
2249         P8 = I772(5, 7, 4);
2250 }
2251 } break;
2252 case 212 :
2253 case 213 :
2254 {
2255 P0 = I211(4, 1, 3);
2256 P1 = I31(4,1);
2257 P3 = I31(4, 3);
2258 P4 = IC(4);
2259 P6 = I31(4, 6);
2260 if (MDR) {
2261         P2 = I31(4,1);
2262         P5 = IC(4);
2263         P7 = IC(4);
2264         P8 = IC(4);
2265 } else {
2266         P2 = I211(4, 1, 5);
2267         P5 = I31(5, 4);
2268         P7 = I31(4, 7);
2269         P8 = I11(5, 7);
2270 }
2271 } break;
2272 case 215 :
2273 {
2274 P0 = I31(4, 3);
2275 P1 = IC(4);
2276 P3 = I31(4, 3);
2277 P4 = IC(4);
2278 P5 = IC(4);
2279 P6 = I31(4, 6);
2280 if (MDR) {
2281         P7 = IC(4);
2282         P8 = IC(4);
2283 } else {
2284         P7 = I71(4, 7);
2285         P8 = I772(5, 7, 4);
2286 }
2287 if (MUR) {
2288         P2 = IC(4);
2289 } else {
2290         P2 = I211(4, 1, 5);
2291 }
2292 } break;
2293 case 216 :
2294 {
2295 P0 = I31(4, 0);
2296 P1 = I31(4,1);
2297 P2 = I31(4, 2);
2298 P3 = IC(4);
2299 P4 = IC(4);
2300 P6 = I31(4, 6);
2301 if (MDR) {
2302         P5 = IC(4);
2303         P7 = IC(4);
2304         P8 = IC(4);
2305 } else {
2306         P5 = I71(4, 5);
2307         P7 = I71(4, 7);
2308         P8 = I772(5, 7, 4);
2309 }
2310 } break;
2311 case 217 :
2312 {
2313 P0 = I31(4,1);
2314 P1 = I31(4,1);
2315 P2 = I31(4, 2);
2316 P3 = IC(4);
2317 P4 = IC(4);
2318 P6 = I31(4, 6);
2319 if (MDR) {
2320         P5 = IC(4);
2321         P7 = IC(4);
2322         P8 = IC(4);
2323 } else {
2324         P5 = I71(4, 5);
2325         P7 = I71(4, 7);
2326         P8 = I772(5, 7, 4);
2327 }
2328 } break;
2329 case 218 :
2330 {
2331 P1 = IC(4);
2332 P3 = IC(4);
2333 P4 = IC(4);
2334 if (MDL) {
2335         P6 = I31(4, 6);
2336 } else {
2337         P6 = I211(4, 3, 7);
2338 }
2339 if (MDR) {
2340         P5 = IC(4);
2341         P7 = IC(4);
2342         P8 = IC(4);
2343 } else {
2344         P5 = I71(4, 5);
2345         P7 = I71(4, 7);
2346         P8 = I772(5, 7, 4);
2347 }
2348 if (MUL) {
2349         P0 = I31(4, 0);
2350 } else {
2351         P0 = I211(4, 1, 3);
2352 }
2353 if (MUR) {
2354         P2 = I31(4, 2);
2355 } else {
2356         P2 = I211(4, 1, 5);
2357 }
2358 } break;
2359 case 219 :
2360 {
2361 P2 = I31(4, 2);
2362 P4 = IC(4);
2363 P6 = I31(4, 6);
2364 if (MDR) {
2365         P5 = IC(4);
2366         P7 = IC(4);
2367         P8 = IC(4);
2368 } else {
2369         P5 = I71(4, 5);
2370         P7 = I71(4, 7);
2371         P8 = I772(5, 7, 4);
2372 }
2373 if (MUL) {
2374         P0 = IC(4);
2375         P1 = IC(4);
2376         P3 = IC(4);
2377 } else {
2378         P0 = I772(1, 3, 4);
2379         P1 = I71(4, 1);
2380         P3 = I71(4, 3);
2381 }
2382 } break;
2383 case 220 :
2384 {
2385 P0 = I31(4, 0);
2386 P1 = I31(4,1);
2387 P2 = I31(4,1);
2388 P3 = IC(4);
2389 P4 = IC(4);
2390 if (MDL) {
2391         P6 = I31(4, 6);
2392 } else {
2393         P6 = I211(4, 3, 7);
2394 }
2395 if (MDR) {
2396         P5 = IC(4);
2397         P7 = IC(4);
2398         P8 = IC(4);
2399 } else {
2400         P5 = I71(4, 5);
2401         P7 = I71(4, 7);
2402         P8 = I772(5, 7, 4);
2403 }
2404 } break;
2405 case 221 :
2406 {
2407 P0 = I31(4,1);
2408 P1 = I31(4,1);
2409 P3 = IC(4);
2410 P4 = IC(4);
2411 P6 = I31(4, 6);
2412 if (MDR) {
2413         P2 = I31(4,1);
2414         P5 = IC(4);
2415         P7 = IC(4);
2416         P8 = IC(4);
2417 } else {
2418         P2 = I211(4, 1, 5);
2419         P5 = I31(5, 4);
2420         P7 = I31(4, 7);
2421         P8 = I11(5, 7);
2422 }
2423 } break;
2424 case 222 :
2425 {
2426 P0 = I31(4, 0);
2427 P3 = IC(4);
2428 P4 = IC(4);
2429 P5 = IC(4);
2430 P6 = I31(4, 6);
2431 if (MDR) {
2432         P7 = IC(4);
2433         P8 = IC(4);
2434 } else {
2435         P7 = I71(4, 7);
2436         P8 = I772(5, 7, 4);
2437 }
2438 if (MUR) {
2439         P1 = IC(4);
2440         P2 = IC(4);
2441 } else {
2442         P1 = I71(4, 1);
2443         P2 = I772(1, 5, 4);
2444 }
2445 } break;
2446 case 223 :
2447 {
2448 P4 = IC(4);
2449 P6 = I31(4, 6);
2450 if (MDR) {
2451         P7 = IC(4);
2452         P8 = IC(4);
2453 } else {
2454         P7 = I71(4, 7);
2455         P8 = I772(5, 7, 4);
2456 }
2457 if (MUL) {
2458         P0 = IC(4);
2459         P3 = IC(4);
2460 } else {
2461         P0 = I772(1, 3, 4);
2462         P3 = I71(4, 3);
2463 }
2464 if (MUR) {
2465         P1 = IC(4);
2466         P2 = IC(4);
2467         P5 = IC(4);
2468 } else {
2469         P1 = I71(4, 1);
2470         P2 = I211(4, 1, 5);
2471         P5 = I71(4, 5);
2472 }
2473 } break;
2474 case 224 :
2475 case 225 :
2476 case 228 :
2477 case 229 :
2478 {
2479 P0 = I211(4, 1, 3);
2480 P1 = I31(4,1);
2481 P2 = I211(4, 1, 5);
2482 P3 = I31(4, 3);
2483 P4 = IC(4);
2484 P5 = I31(4,5);
2485 P6 = I31(4, 3);
2486 P7 = IC(4);
2487 P8 = I31(4,5);
2488 } break;
2489 case 226 :
2490 {
2491 P0 = I31(4, 0);
2492 P1 = IC(4);
2493 P2 = I31(4, 2);
2494 P3 = I31(4, 3);
2495 P4 = IC(4);
2496 P5 = I31(4,5);
2497 P6 = I31(4, 3);
2498 P7 = IC(4);
2499 P8 = I31(4,5);
2500 } break;
2501 case 227 :
2502 {
2503 P0 = I31(4, 3);
2504 P1 = IC(4);
2505 P2 = I31(4, 2);
2506 P3 = I31(4, 3);
2507 P4 = IC(4);
2508 P5 = I31(4,5);
2509 P6 = I31(4, 3);
2510 P7 = IC(4);
2511 P8 = I31(4,5);
2512 } break;
2513 case 230 :
2514 {
2515 P0 = I31(4, 0);
2516 P1 = IC(4);
2517 P2 = I31(4,5);
2518 P3 = I31(4, 3);
2519 P4 = IC(4);
2520 P5 = I31(4,5);
2521 P6 = I31(4, 3);
2522 P7 = IC(4);
2523 P8 = I31(4,5);
2524 } break;
2525 case 231 :
2526 {
2527 P0 = I31(4, 3);
2528 P1 = IC(4);
2529 P2 = I31(4,5);
2530 P3 = I31(4, 3);
2531 P4 = IC(4);
2532 P5 = I31(4,5);
2533 P6 = I31(4, 3);
2534 P7 = IC(4);
2535 P8 = I31(4,5);
2536 } break;
2537 case 232 :
2538 case 236 :
2539 {
2540 P0 = I31(4, 0);
2541 P1 = I31(4,1);
2542 P2 = I211(4, 1, 5);
2543 P4 = IC(4);
2544 P5 = I31(4,5);
2545 if (MDL) {
2546         P3 = IC(4);
2547         P6 = IC(4);
2548         P7 = IC(4);
2549         P8 = I31(4,5);
2550 } else {
2551         P3 = I31(4, 3);
2552         P6 = I11(3, 7);
2553         P7 = I31(7, 4);
2554         P8 = I211(4, 5, 7);
2555 }
2556 } break;
2557 case 233 :
2558 case 237 :
2559 {
2560 P0 = I31(4,1);
2561 P1 = I31(4,1);
2562 P2 = I211(4, 1, 5);
2563 P3 = IC(4);
2564 P4 = IC(4);
2565 P5 = I31(4,5);
2566 P7 = IC(4);
2567 P8 = I31(4,5);
2568 if (MDL) {
2569         P6 = IC(4);
2570 } else {
2571         P6 = I211(4, 3, 7);
2572 }
2573 } break;
2574 case 234 :
2575 {
2576 P1 = IC(4);
2577 P2 = I31(4, 2);
2578 P4 = IC(4);
2579 P5 = I31(4,5);
2580 P8 = I31(4,5);
2581 if (MDL) {
2582         P3 = IC(4);
2583         P6 = IC(4);
2584         P7 = IC(4);
2585 } else {
2586         P3 = I71(4, 3);
2587         P6 = I772(3, 7, 4);
2588         P7 = I71(4, 7);
2589 }
2590 if (MUL) {
2591         P0 = I31(4, 0);
2592 } else {
2593         P0 = I211(4, 1, 3);
2594 }
2595 } break;
2596 case 235 :
2597 {
2598 P2 = I31(4, 2);
2599 P3 = IC(4);
2600 P4 = IC(4);
2601 P5 = I31(4,5);
2602 P7 = IC(4);
2603 P8 = I31(4,5);
2604 if (MDL) {
2605         P6 = IC(4);
2606 } else {
2607         P6 = I211(4, 3, 7);
2608 }
2609 if (MUL) {
2610         P0 = IC(4);
2611         P1 = IC(4);
2612 } else {
2613         P0 = I772(1, 3, 4);
2614         P1 = I71(4, 1);
2615 }
2616 } break;
2617 case 238 :
2618 {
2619 P0 = I31(4, 0);
2620 P1 = IC(4);
2621 P2 = I31(4,5);
2622 P4 = IC(4);
2623 P5 = I31(4,5);
2624 if (MDL) {
2625         P3 = IC(4);
2626         P6 = IC(4);
2627         P7 = IC(4);
2628         P8 = I31(4,5);
2629 } else {
2630         P3 = I31(4, 3);
2631         P6 = I11(3, 7);
2632         P7 = I31(7, 4);
2633         P8 = I211(4, 5, 7);
2634 }
2635 } break;
2636 case 239 :
2637 {
2638 P1 = IC(4);
2639 P2 = I31(4,5);
2640 P3 = IC(4);
2641 P4 = IC(4);
2642 P5 = I31(4,5);
2643 P7 = IC(4);
2644 P8 = I31(4,5);
2645 if (MDL) {
2646         P6 = IC(4);
2647 } else {
2648         P6 = I211(4, 3, 7);
2649 }
2650 if (MUL) {
2651         P0 = IC(4);
2652 } else {
2653         P0 = I211(4, 1, 3);
2654 }
2655 } break;
2656 case 240 :
2657 case 241 :
2658 {
2659 P0 = I211(4, 1, 3);
2660 P1 = I31(4,1);
2661 P2 = I31(4, 2);
2662 P3 = I31(4, 3);
2663 P4 = IC(4);
2664 if (MDR) {
2665         P5 = IC(4);
2666         P6 = I31(4, 3);
2667         P7 = IC(4);
2668         P8 = IC(4);
2669 } else {
2670         P5 = I31(4,5);
2671         P6 = I211(4, 3, 7);
2672         P7 = I31(7, 4);
2673         P8 = I11(5, 7);
2674 }
2675 } break;
2676 case 242 :
2677 {
2678 P0 = I31(4, 0);
2679 P1 = IC(4);
2680 P3 = I31(4, 3);
2681 P4 = IC(4);
2682 P6 = I31(4, 3);
2683 if (MDR) {
2684         P5 = IC(4);
2685         P7 = IC(4);
2686         P8 = IC(4);
2687 } else {
2688         P5 = I71(4, 5);
2689         P7 = I71(4, 7);
2690         P8 = I772(5, 7, 4);
2691 }
2692 if (MUR) {
2693         P2 = I31(4, 2);
2694 } else {
2695         P2 = I211(4, 1, 5);
2696 }
2697 } break;
2698 case 243 :
2699 {
2700 P0 = I31(4, 3);
2701 P1 = IC(4);
2702 P2 = I31(4, 2);
2703 P3 = I31(4, 3);
2704 P4 = IC(4);
2705 if (MDR) {
2706         P5 = IC(4);
2707         P6 = I31(4, 3);
2708         P7 = IC(4);
2709         P8 = IC(4);
2710 } else {
2711         P5 = I31(4,5);
2712         P6 = I211(4, 3, 7);
2713         P7 = I31(7, 4);
2714         P8 = I11(5, 7);
2715 }
2716 } break;
2717 case 244 :
2718 case 245 :
2719 {
2720 P0 = I211(4, 1, 3);
2721 P1 = I31(4,1);
2722 P2 = I31(4,1);
2723 P3 = I31(4, 3);
2724 P4 = IC(4);
2725 P5 = IC(4);
2726 P6 = I31(4, 3);
2727 P7 = IC(4);
2728 if (MDR) {
2729         P8 = IC(4);
2730 } else {
2731         P8 = I211(4, 5, 7);
2732 }
2733 } break;
2734 case 246 :
2735 {
2736 P0 = I31(4, 0);
2737 P3 = I31(4, 3);
2738 P4 = IC(4);
2739 P5 = IC(4);
2740 P6 = I31(4, 3);
2741 P7 = IC(4);
2742 if (MDR) {
2743         P8 = IC(4);
2744 } else {
2745         P8 = I211(4, 5, 7);
2746 }
2747 if (MUR) {
2748         P1 = IC(4);
2749         P2 = IC(4);
2750 } else {
2751         P1 = I71(4, 1);
2752         P2 = I772(1, 5, 4);
2753 }
2754 } break;
2755 case 247 :
2756 {
2757 P0 = I31(4, 3);
2758 P1 = IC(4);
2759 P3 = I31(4, 3);
2760 P4 = IC(4);
2761 P5 = IC(4);
2762 P6 = I31(4, 3);
2763 P7 = IC(4);
2764 if (MDR) {
2765         P8 = IC(4);
2766 } else {
2767         P8 = I211(4, 5, 7);
2768 }
2769 if (MUR) {
2770         P2 = IC(4);
2771 } else {
2772         P2 = I211(4, 1, 5);
2773 }
2774 } break;
2775 case 249 :
2776 {
2777 P0 = I31(4,1);
2778 P1 = I31(4,1);
2779 P2 = I31(4, 2);
2780 P3 = IC(4);
2781 P4 = IC(4);
2782 P7 = IC(4);
2783 if (MDL) {
2784         P6 = IC(4);
2785 } else {
2786         P6 = I211(4, 3, 7);
2787 }
2788 if (MDR) {
2789         P5 = IC(4);
2790         P8 = IC(4);
2791 } else {
2792         P5 = I71(4, 5);
2793         P8 = I772(5, 7, 4);
2794 }
2795 } break;
2796 case 250 :
2797 {
2798 P0 = I31(4, 0);
2799 P1 = IC(4);
2800 P2 = I31(4, 2);
2801 P4 = IC(4);
2802 P7 = IC(4);
2803 if (MDL) {
2804         P3 = IC(4);
2805         P6 = IC(4);
2806 } else {
2807         P3 = I71(4, 3);
2808         P6 = I772(3, 7, 4);
2809 }
2810 if (MDR) {
2811         P5 = IC(4);
2812         P8 = IC(4);
2813 } else {
2814         P5 = I71(4, 5);
2815         P8 = I772(5, 7, 4);
2816 }
2817 } break;
2818 case 251 :
2819 {
2820 P2 = I31(4, 2);
2821 P4 = IC(4);
2822 if (MDL) {
2823         P3 = IC(4);
2824         P6 = IC(4);
2825         P7 = IC(4);
2826 } else {
2827         P3 = I71(4, 3);
2828         P6 = I211(4, 3, 7);
2829         P7 = I71(4, 7);
2830 }
2831 if (MDR) {
2832         P5 = IC(4);
2833         P8 = IC(4);
2834 } else {
2835         P5 = I71(4, 5);
2836         P8 = I772(5, 7, 4);
2837 }
2838 if (MUL) {
2839         P0 = IC(4);
2840         P1 = IC(4);
2841 } else {
2842         P0 = I772(1, 3, 4);
2843         P1 = I71(4, 1);
2844 }
2845 } break;
2846 case 252 :
2847 {
2848 P0 = I31(4, 0);
2849 P1 = I31(4,1);
2850 P2 = I31(4,1);
2851 P4 = IC(4);
2852 P5 = IC(4);
2853 P7 = IC(4);
2854 if (MDL) {
2855         P3 = IC(4);
2856         P6 = IC(4);
2857 } else {
2858         P3 = I71(4, 3);
2859         P6 = I772(3, 7, 4);
2860 }
2861 if (MDR) {
2862         P8 = IC(4);
2863 } else {
2864         P8 = I211(4, 5, 7);
2865 }
2866 } break;
2867 case 253 :
2868 {
2869 P0 = I31(4,1);
2870 P1 = I31(4,1);
2871 P2 = I31(4,1);
2872 P3 = IC(4);
2873 P4 = IC(4);
2874 P5 = IC(4);
2875 P7 = IC(4);
2876 if (MDL) {
2877         P6 = IC(4);
2878 } else {
2879         P6 = I211(4, 3, 7);
2880 }
2881 if (MDR) {
2882         P8 = IC(4);
2883 } else {
2884         P8 = I211(4, 5, 7);
2885 }
2886 } break;
2887 case 254 :
2888 {
2889 P0 = I31(4, 0);
2890 P4 = IC(4);
2891 if (MDL) {
2892         P3 = IC(4);
2893         P6 = IC(4);
2894 } else {
2895         P3 = I71(4, 3);
2896         P6 = I772(3, 7, 4);
2897 }
2898 if (MDR) {
2899         P5 = IC(4);
2900         P7 = IC(4);
2901         P8 = IC(4);
2902 } else {
2903         P5 = I71(4, 5);
2904         P7 = I71(4, 7);
2905         P8 = I211(4, 5, 7);
2906 }
2907 if (MUR) {
2908         P1 = IC(4);
2909         P2 = IC(4);
2910 } else {
2911         P1 = I71(4, 1);
2912         P2 = I772(1, 5, 4);
2913 }
2914 } break;
2915 case 255 :
2916 {
2917 P1 = IC(4);
2918 P3 = IC(4);
2919 P4 = IC(4);
2920 P5 = IC(4);
2921 P7 = IC(4);
2922 if (MDL) {
2923         P6 = IC(4);
2924 } else {
2925         P6 = I211(4, 3, 7);
2926 }
2927 if (MDR) {
2928         P8 = IC(4);
2929 } else {
2930         P8 = I211(4, 5, 7);
2931 }
2932 if (MUL) {
2933         P0 = IC(4);
2934 } else {
2935         P0 = I211(4, 1, 3);
2936 }
2937 if (MUR) {
2938         P2 = IC(4);
2939 } else {
2940         P2 = I211(4, 1, 5);
2941 }
2942 } break;
2943
2944 #undef P0
2945 #undef P1
2946 #undef P2
2947 #undef P3
2948 #undef P4
2949 #undef P5
2950 #undef P6
2951 #undef P7
2952 #undef P8
2953 #undef MUR
2954 #undef MDR
2955 #undef MDL
2956 #undef MUL
2957 #undef IC
2958 #undef I11
2959 #undef I211
2960 #undef I31
2961 #undef I332
2962 #undef I431
2963 #undef I521
2964 #undef I53
2965 #undef I611
2966 #undef I71
2967 #undef I772
2968 #undef I97
2969 #undef I1411
2970 #undef I151