1 /*
2  * Copyright (C) 2003 Maxim Stepin ( maxst@hiend3d.com )
3  *
4  * Copyright (C) 2010 Cameron Zemek ( grom@zeminvaders.net)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (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 GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  */
20 
21 #include <stdint.h>
22 #include "hqx/common.h"
23 #include "hqx/hqx.h"
24 
25 #define PIXEL00_1M  *dp = Interp1(w[5], w[1]);
26 #define PIXEL00_1U  *dp = Interp1(w[5], w[2]);
27 #define PIXEL00_1L  *dp = Interp1(w[5], w[4]);
28 #define PIXEL00_2   *dp = Interp2(w[5], w[4], w[2]);
29 #define PIXEL00_4   *dp = Interp4(w[5], w[4], w[2]);
30 #define PIXEL00_5   *dp = Interp5(w[4], w[2]);
31 #define PIXEL00_C   *dp   = w[5];
32 
33 #define PIXEL01_1   *(dp+1) = Interp1(w[5], w[2]);
34 #define PIXEL01_3   *(dp+1) = Interp3(w[5], w[2]);
35 #define PIXEL01_6   *(dp+1) = Interp1(w[2], w[5]);
36 #define PIXEL01_C   *(dp+1) = w[5];
37 
38 #define PIXEL02_1M  *(dp+2) = Interp1(w[5], w[3]);
39 #define PIXEL02_1U  *(dp+2) = Interp1(w[5], w[2]);
40 #define PIXEL02_1R  *(dp+2) = Interp1(w[5], w[6]);
41 #define PIXEL02_2   *(dp+2) = Interp2(w[5], w[2], w[6]);
42 #define PIXEL02_4   *(dp+2) = Interp4(w[5], w[2], w[6]);
43 #define PIXEL02_5   *(dp+2) = Interp5(w[2], w[6]);
44 #define PIXEL02_C   *(dp+2) = w[5];
45 
46 #define PIXEL10_1   *(dp+dpL) = Interp1(w[5], w[4]);
47 #define PIXEL10_3   *(dp+dpL) = Interp3(w[5], w[4]);
48 #define PIXEL10_6   *(dp+dpL) = Interp1(w[4], w[5]);
49 #define PIXEL10_C   *(dp+dpL) = w[5];
50 
51 #define PIXEL11     *(dp+dpL+1) = w[5];
52 
53 #define PIXEL12_1   *(dp+dpL+2) = Interp1(w[5], w[6]);
54 #define PIXEL12_3   *(dp+dpL+2) = Interp3(w[5], w[6]);
55 #define PIXEL12_6   *(dp+dpL+2) = Interp1(w[6], w[5]);
56 #define PIXEL12_C   *(dp+dpL+2) = w[5];
57 
58 #define PIXEL20_1M  *(dp+dpL+dpL) = Interp1(w[5], w[7]);
59 #define PIXEL20_1D  *(dp+dpL+dpL) = Interp1(w[5], w[8]);
60 #define PIXEL20_1L  *(dp+dpL+dpL) = Interp1(w[5], w[4]);
61 #define PIXEL20_2   *(dp+dpL+dpL) = Interp2(w[5], w[8], w[4]);
62 #define PIXEL20_4   *(dp+dpL+dpL) = Interp4(w[5], w[8], w[4]);
63 #define PIXEL20_5   *(dp+dpL+dpL) = Interp5(w[8], w[4]);
64 #define PIXEL20_C   *(dp+dpL+dpL) = w[5];
65 
66 #define PIXEL21_1   *(dp+dpL+dpL+1) = Interp1(w[5], w[8]);
67 #define PIXEL21_3   *(dp+dpL+dpL+1) = Interp3(w[5], w[8]);
68 #define PIXEL21_6   *(dp+dpL+dpL+1) = Interp1(w[8], w[5]);
69 #define PIXEL21_C   *(dp+dpL+dpL+1) = w[5];
70 
71 #define PIXEL22_1M  *(dp+dpL+dpL+2) = Interp1(w[5], w[9]);
72 #define PIXEL22_1D  *(dp+dpL+dpL+2) = Interp1(w[5], w[8]);
73 #define PIXEL22_1R  *(dp+dpL+dpL+2) = Interp1(w[5], w[6]);
74 #define PIXEL22_2   *(dp+dpL+dpL+2) = Interp2(w[5], w[6], w[8]);
75 #define PIXEL22_4   *(dp+dpL+dpL+2) = Interp4(w[5], w[6], w[8]);
76 #define PIXEL22_5   *(dp+dpL+dpL+2) = Interp5(w[6], w[8]);
77 #define PIXEL22_C   *(dp+dpL+dpL+2) = w[5];
78 
hq3x_32_rb(uint32_t * sp,uint32_t srb,uint32_t * dp,uint32_t drb,int Xres,int Yres)79 HQX_API void HQX_CALLCONV hq3x_32_rb( uint32_t * sp, uint32_t srb, uint32_t * dp, uint32_t drb, int Xres, int Yres )
80 {
81     int  i, j, k;
82     int  prevline, nextline;
83     uint32_t  w[10];
84     int dpL = (drb >> 2);
85     int spL = (srb >> 2);
86     uint8_t *sRowP = (uint8_t *) sp;
87     uint8_t *dRowP = (uint8_t *) dp;
88     uint32_t yuv1, yuv2;
89 
90     //   +----+----+----+
91     //   |    |    |    |
92     //   | w1 | w2 | w3 |
93     //   +----+----+----+
94     //   |    |    |    |
95     //   | w4 | w5 | w6 |
96     //   +----+----+----+
97     //   |    |    |    |
98     //   | w7 | w8 | w9 |
99     //   +----+----+----+
100 
101     for (j=0; j<Yres; j++)
102     {
103         if (j>0)      prevline = -spL; else prevline = 0;
104         if (j<Yres-1) nextline =  spL; else nextline = 0;
105 
106         for (i=0; i<Xres; i++)
107         {
108             w[2] = *(sp + prevline);
109             w[5] = *sp;
110             w[8] = *(sp + nextline);
111 
112             if (i>0)
113             {
114                 w[1] = *(sp + prevline - 1);
115                 w[4] = *(sp - 1);
116                 w[7] = *(sp + nextline - 1);
117             }
118             else
119             {
120                 w[1] = w[2];
121                 w[4] = w[5];
122                 w[7] = w[8];
123             }
124 
125             if (i<Xres-1)
126             {
127                 w[3] = *(sp + prevline + 1);
128                 w[6] = *(sp + 1);
129                 w[9] = *(sp + nextline + 1);
130             }
131             else
132             {
133                 w[3] = w[2];
134                 w[6] = w[5];
135                 w[9] = w[8];
136             }
137 
138             int pattern = 0;
139             int flag = 1;
140 
141             yuv1 = rgb_to_yuv(w[5]);
142 
143             for (k=1; k<=9; k++)
144             {
145                 if (k==5) continue;
146 
147                 if ( w[k] != w[5] )
148                 {
149                     yuv2 = rgb_to_yuv(w[k]);
150                     if (yuv_diff(yuv1, yuv2))
151                         pattern |= flag;
152                 }
153                 flag <<= 1;
154             }
155 
156             switch (pattern)
157             {
158                 case 0:
159                 case 1:
160                 case 4:
161                 case 32:
162                 case 128:
163                 case 5:
164                 case 132:
165                 case 160:
166                 case 33:
167                 case 129:
168                 case 36:
169                 case 133:
170                 case 164:
171                 case 161:
172                 case 37:
173                 case 165:
174                     {
175                         PIXEL00_2
176                         PIXEL01_1
177                         PIXEL02_2
178                         PIXEL10_1
179                         PIXEL11
180                         PIXEL12_1
181                         PIXEL20_2
182                         PIXEL21_1
183                         PIXEL22_2
184                         break;
185                     }
186                 case 2:
187                 case 34:
188                 case 130:
189                 case 162:
190                     {
191                         PIXEL00_1M
192                         PIXEL01_C
193                         PIXEL02_1M
194                         PIXEL10_1
195                         PIXEL11
196                         PIXEL12_1
197                         PIXEL20_2
198                         PIXEL21_1
199                         PIXEL22_2
200                         break;
201                     }
202                 case 16:
203                 case 17:
204                 case 48:
205                 case 49:
206                     {
207                         PIXEL00_2
208                         PIXEL01_1
209                         PIXEL02_1M
210                         PIXEL10_1
211                         PIXEL11
212                         PIXEL12_C
213                         PIXEL20_2
214                         PIXEL21_1
215                         PIXEL22_1M
216                         break;
217                     }
218                 case 64:
219                 case 65:
220                 case 68:
221                 case 69:
222                     {
223                         PIXEL00_2
224                         PIXEL01_1
225                         PIXEL02_2
226                         PIXEL10_1
227                         PIXEL11
228                         PIXEL12_1
229                         PIXEL20_1M
230                         PIXEL21_C
231                         PIXEL22_1M
232                         break;
233                     }
234                 case 8:
235                 case 12:
236                 case 136:
237                 case 140:
238                     {
239                         PIXEL00_1M
240                         PIXEL01_1
241                         PIXEL02_2
242                         PIXEL10_C
243                         PIXEL11
244                         PIXEL12_1
245                         PIXEL20_1M
246                         PIXEL21_1
247                         PIXEL22_2
248                         break;
249                     }
250                 case 3:
251                 case 35:
252                 case 131:
253                 case 163:
254                     {
255                         PIXEL00_1L
256                         PIXEL01_C
257                         PIXEL02_1M
258                         PIXEL10_1
259                         PIXEL11
260                         PIXEL12_1
261                         PIXEL20_2
262                         PIXEL21_1
263                         PIXEL22_2
264                         break;
265                     }
266                 case 6:
267                 case 38:
268                 case 134:
269                 case 166:
270                     {
271                         PIXEL00_1M
272                         PIXEL01_C
273                         PIXEL02_1R
274                         PIXEL10_1
275                         PIXEL11
276                         PIXEL12_1
277                         PIXEL20_2
278                         PIXEL21_1
279                         PIXEL22_2
280                         break;
281                     }
282                 case 20:
283                 case 21:
284                 case 52:
285                 case 53:
286                     {
287                         PIXEL00_2
288                         PIXEL01_1
289                         PIXEL02_1U
290                         PIXEL10_1
291                         PIXEL11
292                         PIXEL12_C
293                         PIXEL20_2
294                         PIXEL21_1
295                         PIXEL22_1M
296                         break;
297                     }
298                 case 144:
299                 case 145:
300                 case 176:
301                 case 177:
302                     {
303                         PIXEL00_2
304                         PIXEL01_1
305                         PIXEL02_1M
306                         PIXEL10_1
307                         PIXEL11
308                         PIXEL12_C
309                         PIXEL20_2
310                         PIXEL21_1
311                         PIXEL22_1D
312                         break;
313                     }
314                 case 192:
315                 case 193:
316                 case 196:
317                 case 197:
318                     {
319                         PIXEL00_2
320                         PIXEL01_1
321                         PIXEL02_2
322                         PIXEL10_1
323                         PIXEL11
324                         PIXEL12_1
325                         PIXEL20_1M
326                         PIXEL21_C
327                         PIXEL22_1R
328                         break;
329                     }
330                 case 96:
331                 case 97:
332                 case 100:
333                 case 101:
334                     {
335                         PIXEL00_2
336                         PIXEL01_1
337                         PIXEL02_2
338                         PIXEL10_1
339                         PIXEL11
340                         PIXEL12_1
341                         PIXEL20_1L
342                         PIXEL21_C
343                         PIXEL22_1M
344                         break;
345                     }
346                 case 40:
347                 case 44:
348                 case 168:
349                 case 172:
350                     {
351                         PIXEL00_1M
352                         PIXEL01_1
353                         PIXEL02_2
354                         PIXEL10_C
355                         PIXEL11
356                         PIXEL12_1
357                         PIXEL20_1D
358                         PIXEL21_1
359                         PIXEL22_2
360                         break;
361                     }
362                 case 9:
363                 case 13:
364                 case 137:
365                 case 141:
366                     {
367                         PIXEL00_1U
368                         PIXEL01_1
369                         PIXEL02_2
370                         PIXEL10_C
371                         PIXEL11
372                         PIXEL12_1
373                         PIXEL20_1M
374                         PIXEL21_1
375                         PIXEL22_2
376                         break;
377                     }
378                 case 18:
379                 case 50:
380                     {
381                         PIXEL00_1M
382                         if (Diff(w[2], w[6]))
383                         {
384                             PIXEL01_C
385                             PIXEL02_1M
386                             PIXEL12_C
387                         }
388                         else
389                         {
390                             PIXEL01_3
391                             PIXEL02_4
392                             PIXEL12_3
393                         }
394                         PIXEL10_1
395                         PIXEL11
396                         PIXEL20_2
397                         PIXEL21_1
398                         PIXEL22_1M
399                         break;
400                     }
401                 case 80:
402                 case 81:
403                     {
404                         PIXEL00_2
405                         PIXEL01_1
406                         PIXEL02_1M
407                         PIXEL10_1
408                         PIXEL11
409                         PIXEL20_1M
410                         if (Diff(w[6], w[8]))
411                         {
412                             PIXEL12_C
413                             PIXEL21_C
414                             PIXEL22_1M
415                         }
416                         else
417                         {
418                             PIXEL12_3
419                             PIXEL21_3
420                             PIXEL22_4
421                         }
422                         break;
423                     }
424                 case 72:
425                 case 76:
426                     {
427                         PIXEL00_1M
428                         PIXEL01_1
429                         PIXEL02_2
430                         PIXEL11
431                         PIXEL12_1
432                         if (Diff(w[8], w[4]))
433                         {
434                             PIXEL10_C
435                             PIXEL20_1M
436                             PIXEL21_C
437                         }
438                         else
439                         {
440                             PIXEL10_3
441                             PIXEL20_4
442                             PIXEL21_3
443                         }
444                         PIXEL22_1M
445                         break;
446                     }
447                 case 10:
448                 case 138:
449                     {
450                         if (Diff(w[4], w[2]))
451                         {
452                             PIXEL00_1M
453                             PIXEL01_C
454                             PIXEL10_C
455                         }
456                         else
457                         {
458                             PIXEL00_4
459                             PIXEL01_3
460                             PIXEL10_3
461                         }
462                         PIXEL02_1M
463                         PIXEL11
464                         PIXEL12_1
465                         PIXEL20_1M
466                         PIXEL21_1
467                         PIXEL22_2
468                         break;
469                     }
470                 case 66:
471                     {
472                         PIXEL00_1M
473                         PIXEL01_C
474                         PIXEL02_1M
475                         PIXEL10_1
476                         PIXEL11
477                         PIXEL12_1
478                         PIXEL20_1M
479                         PIXEL21_C
480                         PIXEL22_1M
481                         break;
482                     }
483                 case 24:
484                     {
485                         PIXEL00_1M
486                         PIXEL01_1
487                         PIXEL02_1M
488                         PIXEL10_C
489                         PIXEL11
490                         PIXEL12_C
491                         PIXEL20_1M
492                         PIXEL21_1
493                         PIXEL22_1M
494                         break;
495                     }
496                 case 7:
497                 case 39:
498                 case 135:
499                     {
500                         PIXEL00_1L
501                         PIXEL01_C
502                         PIXEL02_1R
503                         PIXEL10_1
504                         PIXEL11
505                         PIXEL12_1
506                         PIXEL20_2
507                         PIXEL21_1
508                         PIXEL22_2
509                         break;
510                     }
511                 case 148:
512                 case 149:
513                 case 180:
514                     {
515                         PIXEL00_2
516                         PIXEL01_1
517                         PIXEL02_1U
518                         PIXEL10_1
519                         PIXEL11
520                         PIXEL12_C
521                         PIXEL20_2
522                         PIXEL21_1
523                         PIXEL22_1D
524                         break;
525                     }
526                 case 224:
527                 case 228:
528                 case 225:
529                     {
530                         PIXEL00_2
531                         PIXEL01_1
532                         PIXEL02_2
533                         PIXEL10_1
534                         PIXEL11
535                         PIXEL12_1
536                         PIXEL20_1L
537                         PIXEL21_C
538                         PIXEL22_1R
539                         break;
540                     }
541                 case 41:
542                 case 169:
543                 case 45:
544                     {
545                         PIXEL00_1U
546                         PIXEL01_1
547                         PIXEL02_2
548                         PIXEL10_C
549                         PIXEL11
550                         PIXEL12_1
551                         PIXEL20_1D
552                         PIXEL21_1
553                         PIXEL22_2
554                         break;
555                     }
556                 case 22:
557                 case 54:
558                     {
559                         PIXEL00_1M
560                         if (Diff(w[2], w[6]))
561                         {
562                             PIXEL01_C
563                             PIXEL02_C
564                             PIXEL12_C
565                         }
566                         else
567                         {
568                             PIXEL01_3
569                             PIXEL02_4
570                             PIXEL12_3
571                         }
572                         PIXEL10_1
573                         PIXEL11
574                         PIXEL20_2
575                         PIXEL21_1
576                         PIXEL22_1M
577                         break;
578                     }
579                 case 208:
580                 case 209:
581                     {
582                         PIXEL00_2
583                         PIXEL01_1
584                         PIXEL02_1M
585                         PIXEL10_1
586                         PIXEL11
587                         PIXEL20_1M
588                         if (Diff(w[6], w[8]))
589                         {
590                             PIXEL12_C
591                             PIXEL21_C
592                             PIXEL22_C
593                         }
594                         else
595                         {
596                             PIXEL12_3
597                             PIXEL21_3
598                             PIXEL22_4
599                         }
600                         break;
601                     }
602                 case 104:
603                 case 108:
604                     {
605                         PIXEL00_1M
606                         PIXEL01_1
607                         PIXEL02_2
608                         PIXEL11
609                         PIXEL12_1
610                         if (Diff(w[8], w[4]))
611                         {
612                             PIXEL10_C
613                             PIXEL20_C
614                             PIXEL21_C
615                         }
616                         else
617                         {
618                             PIXEL10_3
619                             PIXEL20_4
620                             PIXEL21_3
621                         }
622                         PIXEL22_1M
623                         break;
624                     }
625                 case 11:
626                 case 139:
627                     {
628                         if (Diff(w[4], w[2]))
629                         {
630                             PIXEL00_C
631                             PIXEL01_C
632                             PIXEL10_C
633                         }
634                         else
635                         {
636                             PIXEL00_4
637                             PIXEL01_3
638                             PIXEL10_3
639                         }
640                         PIXEL02_1M
641                         PIXEL11
642                         PIXEL12_1
643                         PIXEL20_1M
644                         PIXEL21_1
645                         PIXEL22_2
646                         break;
647                     }
648                 case 19:
649                 case 51:
650                     {
651                         if (Diff(w[2], w[6]))
652                         {
653                             PIXEL00_1L
654                             PIXEL01_C
655                             PIXEL02_1M
656                             PIXEL12_C
657                         }
658                         else
659                         {
660                             PIXEL00_2
661                             PIXEL01_6
662                             PIXEL02_5
663                             PIXEL12_1
664                         }
665                         PIXEL10_1
666                         PIXEL11
667                         PIXEL20_2
668                         PIXEL21_1
669                         PIXEL22_1M
670                         break;
671                     }
672                 case 146:
673                 case 178:
674                     {
675                         if (Diff(w[2], w[6]))
676                         {
677                             PIXEL01_C
678                             PIXEL02_1M
679                             PIXEL12_C
680                             PIXEL22_1D
681                         }
682                         else
683                         {
684                             PIXEL01_1
685                             PIXEL02_5
686                             PIXEL12_6
687                             PIXEL22_2
688                         }
689                         PIXEL00_1M
690                         PIXEL10_1
691                         PIXEL11
692                         PIXEL20_2
693                         PIXEL21_1
694                         break;
695                     }
696                 case 84:
697                 case 85:
698                     {
699                         if (Diff(w[6], w[8]))
700                         {
701                             PIXEL02_1U
702                             PIXEL12_C
703                             PIXEL21_C
704                             PIXEL22_1M
705                         }
706                         else
707                         {
708                             PIXEL02_2
709                             PIXEL12_6
710                             PIXEL21_1
711                             PIXEL22_5
712                         }
713                         PIXEL00_2
714                         PIXEL01_1
715                         PIXEL10_1
716                         PIXEL11
717                         PIXEL20_1M
718                         break;
719                     }
720                 case 112:
721                 case 113:
722                     {
723                         if (Diff(w[6], w[8]))
724                         {
725                             PIXEL12_C
726                             PIXEL20_1L
727                             PIXEL21_C
728                             PIXEL22_1M
729                         }
730                         else
731                         {
732                             PIXEL12_1
733                             PIXEL20_2
734                             PIXEL21_6
735                             PIXEL22_5
736                         }
737                         PIXEL00_2
738                         PIXEL01_1
739                         PIXEL02_1M
740                         PIXEL10_1
741                         PIXEL11
742                         break;
743                     }
744                 case 200:
745                 case 204:
746                     {
747                         if (Diff(w[8], w[4]))
748                         {
749                             PIXEL10_C
750                             PIXEL20_1M
751                             PIXEL21_C
752                             PIXEL22_1R
753                         }
754                         else
755                         {
756                             PIXEL10_1
757                             PIXEL20_5
758                             PIXEL21_6
759                             PIXEL22_2
760                         }
761                         PIXEL00_1M
762                         PIXEL01_1
763                         PIXEL02_2
764                         PIXEL11
765                         PIXEL12_1
766                         break;
767                     }
768                 case 73:
769                 case 77:
770                     {
771                         if (Diff(w[8], w[4]))
772                         {
773                             PIXEL00_1U
774                             PIXEL10_C
775                             PIXEL20_1M
776                             PIXEL21_C
777                         }
778                         else
779                         {
780                             PIXEL00_2
781                             PIXEL10_6
782                             PIXEL20_5
783                             PIXEL21_1
784                         }
785                         PIXEL01_1
786                         PIXEL02_2
787                         PIXEL11
788                         PIXEL12_1
789                         PIXEL22_1M
790                         break;
791                     }
792                 case 42:
793                 case 170:
794                     {
795                         if (Diff(w[4], w[2]))
796                         {
797                             PIXEL00_1M
798                             PIXEL01_C
799                             PIXEL10_C
800                             PIXEL20_1D
801                         }
802                         else
803                         {
804                             PIXEL00_5
805                             PIXEL01_1
806                             PIXEL10_6
807                             PIXEL20_2
808                         }
809                         PIXEL02_1M
810                         PIXEL11
811                         PIXEL12_1
812                         PIXEL21_1
813                         PIXEL22_2
814                         break;
815                     }
816                 case 14:
817                 case 142:
818                     {
819                         if (Diff(w[4], w[2]))
820                         {
821                             PIXEL00_1M
822                             PIXEL01_C
823                             PIXEL02_1R
824                             PIXEL10_C
825                         }
826                         else
827                         {
828                             PIXEL00_5
829                             PIXEL01_6
830                             PIXEL02_2
831                             PIXEL10_1
832                         }
833                         PIXEL11
834                         PIXEL12_1
835                         PIXEL20_1M
836                         PIXEL21_1
837                         PIXEL22_2
838                         break;
839                     }
840                 case 67:
841                     {
842                         PIXEL00_1L
843                         PIXEL01_C
844                         PIXEL02_1M
845                         PIXEL10_1
846                         PIXEL11
847                         PIXEL12_1
848                         PIXEL20_1M
849                         PIXEL21_C
850                         PIXEL22_1M
851                         break;
852                     }
853                 case 70:
854                     {
855                         PIXEL00_1M
856                         PIXEL01_C
857                         PIXEL02_1R
858                         PIXEL10_1
859                         PIXEL11
860                         PIXEL12_1
861                         PIXEL20_1M
862                         PIXEL21_C
863                         PIXEL22_1M
864                         break;
865                     }
866                 case 28:
867                     {
868                         PIXEL00_1M
869                         PIXEL01_1
870                         PIXEL02_1U
871                         PIXEL10_C
872                         PIXEL11
873                         PIXEL12_C
874                         PIXEL20_1M
875                         PIXEL21_1
876                         PIXEL22_1M
877                         break;
878                     }
879                 case 152:
880                     {
881                         PIXEL00_1M
882                         PIXEL01_1
883                         PIXEL02_1M
884                         PIXEL10_C
885                         PIXEL11
886                         PIXEL12_C
887                         PIXEL20_1M
888                         PIXEL21_1
889                         PIXEL22_1D
890                         break;
891                     }
892                 case 194:
893                     {
894                         PIXEL00_1M
895                         PIXEL01_C
896                         PIXEL02_1M
897                         PIXEL10_1
898                         PIXEL11
899                         PIXEL12_1
900                         PIXEL20_1M
901                         PIXEL21_C
902                         PIXEL22_1R
903                         break;
904                     }
905                 case 98:
906                     {
907                         PIXEL00_1M
908                         PIXEL01_C
909                         PIXEL02_1M
910                         PIXEL10_1
911                         PIXEL11
912                         PIXEL12_1
913                         PIXEL20_1L
914                         PIXEL21_C
915                         PIXEL22_1M
916                         break;
917                     }
918                 case 56:
919                     {
920                         PIXEL00_1M
921                         PIXEL01_1
922                         PIXEL02_1M
923                         PIXEL10_C
924                         PIXEL11
925                         PIXEL12_C
926                         PIXEL20_1D
927                         PIXEL21_1
928                         PIXEL22_1M
929                         break;
930                     }
931                 case 25:
932                     {
933                         PIXEL00_1U
934                         PIXEL01_1
935                         PIXEL02_1M
936                         PIXEL10_C
937                         PIXEL11
938                         PIXEL12_C
939                         PIXEL20_1M
940                         PIXEL21_1
941                         PIXEL22_1M
942                         break;
943                     }
944                 case 26:
945                 case 31:
946                     {
947                         if (Diff(w[4], w[2]))
948                         {
949                             PIXEL00_C
950                             PIXEL10_C
951                         }
952                         else
953                         {
954                             PIXEL00_4
955                             PIXEL10_3
956                         }
957                         PIXEL01_C
958                         if (Diff(w[2], w[6]))
959                         {
960                             PIXEL02_C
961                             PIXEL12_C
962                         }
963                         else
964                         {
965                             PIXEL02_4
966                             PIXEL12_3
967                         }
968                         PIXEL11
969                         PIXEL20_1M
970                         PIXEL21_1
971                         PIXEL22_1M
972                         break;
973                     }
974                 case 82:
975                 case 214:
976                     {
977                         PIXEL00_1M
978                         if (Diff(w[2], w[6]))
979                         {
980                             PIXEL01_C
981                             PIXEL02_C
982                         }
983                         else
984                         {
985                             PIXEL01_3
986                             PIXEL02_4
987                         }
988                         PIXEL10_1
989                         PIXEL11
990                         PIXEL12_C
991                         PIXEL20_1M
992                         if (Diff(w[6], w[8]))
993                         {
994                             PIXEL21_C
995                             PIXEL22_C
996                         }
997                         else
998                         {
999                             PIXEL21_3
1000                             PIXEL22_4
1001                         }
1002                         break;
1003                     }
1004                 case 88:
1005                 case 248:
1006                     {
1007                         PIXEL00_1M
1008                         PIXEL01_1
1009                         PIXEL02_1M
1010                         PIXEL11
1011                         if (Diff(w[8], w[4]))
1012                         {
1013                             PIXEL10_C
1014                             PIXEL20_C
1015                         }
1016                         else
1017                         {
1018                             PIXEL10_3
1019                             PIXEL20_4
1020                         }
1021                         PIXEL21_C
1022                         if (Diff(w[6], w[8]))
1023                         {
1024                             PIXEL12_C
1025                             PIXEL22_C
1026                         }
1027                         else
1028                         {
1029                             PIXEL12_3
1030                             PIXEL22_4
1031                         }
1032                         break;
1033                     }
1034                 case 74:
1035                 case 107:
1036                     {
1037                         if (Diff(w[4], w[2]))
1038                         {
1039                             PIXEL00_C
1040                             PIXEL01_C
1041                         }
1042                         else
1043                         {
1044                             PIXEL00_4
1045                             PIXEL01_3
1046                         }
1047                         PIXEL02_1M
1048                         PIXEL10_C
1049                         PIXEL11
1050                         PIXEL12_1
1051                         if (Diff(w[8], w[4]))
1052                         {
1053                             PIXEL20_C
1054                             PIXEL21_C
1055                         }
1056                         else
1057                         {
1058                             PIXEL20_4
1059                             PIXEL21_3
1060                         }
1061                         PIXEL22_1M
1062                         break;
1063                     }
1064                 case 27:
1065                     {
1066                         if (Diff(w[4], w[2]))
1067                         {
1068                             PIXEL00_C
1069                             PIXEL01_C
1070                             PIXEL10_C
1071                         }
1072                         else
1073                         {
1074                             PIXEL00_4
1075                             PIXEL01_3
1076                             PIXEL10_3
1077                         }
1078                         PIXEL02_1M
1079                         PIXEL11
1080                         PIXEL12_C
1081                         PIXEL20_1M
1082                         PIXEL21_1
1083                         PIXEL22_1M
1084                         break;
1085                     }
1086                 case 86:
1087                     {
1088                         PIXEL00_1M
1089                         if (Diff(w[2], w[6]))
1090                         {
1091                             PIXEL01_C
1092                             PIXEL02_C
1093                             PIXEL12_C
1094                         }
1095                         else
1096                         {
1097                             PIXEL01_3
1098                             PIXEL02_4
1099                             PIXEL12_3
1100                         }
1101                         PIXEL10_1
1102                         PIXEL11
1103                         PIXEL20_1M
1104                         PIXEL21_C
1105                         PIXEL22_1M
1106                         break;
1107                     }
1108                 case 216:
1109                     {
1110                         PIXEL00_1M
1111                         PIXEL01_1
1112                         PIXEL02_1M
1113                         PIXEL10_C
1114                         PIXEL11
1115                         PIXEL20_1M
1116                         if (Diff(w[6], w[8]))
1117                         {
1118                             PIXEL12_C
1119                             PIXEL21_C
1120                             PIXEL22_C
1121                         }
1122                         else
1123                         {
1124                             PIXEL12_3
1125                             PIXEL21_3
1126                             PIXEL22_4
1127                         }
1128                         break;
1129                     }
1130                 case 106:
1131                     {
1132                         PIXEL00_1M
1133                         PIXEL01_C
1134                         PIXEL02_1M
1135                         PIXEL11
1136                         PIXEL12_1
1137                         if (Diff(w[8], w[4]))
1138                         {
1139                             PIXEL10_C
1140                             PIXEL20_C
1141                             PIXEL21_C
1142                         }
1143                         else
1144                         {
1145                             PIXEL10_3
1146                             PIXEL20_4
1147                             PIXEL21_3
1148                         }
1149                         PIXEL22_1M
1150                         break;
1151                     }
1152                 case 30:
1153                     {
1154                         PIXEL00_1M
1155                         if (Diff(w[2], w[6]))
1156                         {
1157                             PIXEL01_C
1158                             PIXEL02_C
1159                             PIXEL12_C
1160                         }
1161                         else
1162                         {
1163                             PIXEL01_3
1164                             PIXEL02_4
1165                             PIXEL12_3
1166                         }
1167                         PIXEL10_C
1168                         PIXEL11
1169                         PIXEL20_1M
1170                         PIXEL21_1
1171                         PIXEL22_1M
1172                         break;
1173                     }
1174                 case 210:
1175                     {
1176                         PIXEL00_1M
1177                         PIXEL01_C
1178                         PIXEL02_1M
1179                         PIXEL10_1
1180                         PIXEL11
1181                         PIXEL20_1M
1182                         if (Diff(w[6], w[8]))
1183                         {
1184                             PIXEL12_C
1185                             PIXEL21_C
1186                             PIXEL22_C
1187                         }
1188                         else
1189                         {
1190                             PIXEL12_3
1191                             PIXEL21_3
1192                             PIXEL22_4
1193                         }
1194                         break;
1195                     }
1196                 case 120:
1197                     {
1198                         PIXEL00_1M
1199                         PIXEL01_1
1200                         PIXEL02_1M
1201                         PIXEL11
1202                         PIXEL12_C
1203                         if (Diff(w[8], w[4]))
1204                         {
1205                             PIXEL10_C
1206                             PIXEL20_C
1207                             PIXEL21_C
1208                         }
1209                         else
1210                         {
1211                             PIXEL10_3
1212                             PIXEL20_4
1213                             PIXEL21_3
1214                         }
1215                         PIXEL22_1M
1216                         break;
1217                     }
1218                 case 75:
1219                     {
1220                         if (Diff(w[4], w[2]))
1221                         {
1222                             PIXEL00_C
1223                             PIXEL01_C
1224                             PIXEL10_C
1225                         }
1226                         else
1227                         {
1228                             PIXEL00_4
1229                             PIXEL01_3
1230                             PIXEL10_3
1231                         }
1232                         PIXEL02_1M
1233                         PIXEL11
1234                         PIXEL12_1
1235                         PIXEL20_1M
1236                         PIXEL21_C
1237                         PIXEL22_1M
1238                         break;
1239                     }
1240                 case 29:
1241                     {
1242                         PIXEL00_1U
1243                         PIXEL01_1
1244                         PIXEL02_1U
1245                         PIXEL10_C
1246                         PIXEL11
1247                         PIXEL12_C
1248                         PIXEL20_1M
1249                         PIXEL21_1
1250                         PIXEL22_1M
1251                         break;
1252                     }
1253                 case 198:
1254                     {
1255                         PIXEL00_1M
1256                         PIXEL01_C
1257                         PIXEL02_1R
1258                         PIXEL10_1
1259                         PIXEL11
1260                         PIXEL12_1
1261                         PIXEL20_1M
1262                         PIXEL21_C
1263                         PIXEL22_1R
1264                         break;
1265                     }
1266                 case 184:
1267                     {
1268                         PIXEL00_1M
1269                         PIXEL01_1
1270                         PIXEL02_1M
1271                         PIXEL10_C
1272                         PIXEL11
1273                         PIXEL12_C
1274                         PIXEL20_1D
1275                         PIXEL21_1
1276                         PIXEL22_1D
1277                         break;
1278                     }
1279                 case 99:
1280                     {
1281                         PIXEL00_1L
1282                         PIXEL01_C
1283                         PIXEL02_1M
1284                         PIXEL10_1
1285                         PIXEL11
1286                         PIXEL12_1
1287                         PIXEL20_1L
1288                         PIXEL21_C
1289                         PIXEL22_1M
1290                         break;
1291                     }
1292                 case 57:
1293                     {
1294                         PIXEL00_1U
1295                         PIXEL01_1
1296                         PIXEL02_1M
1297                         PIXEL10_C
1298                         PIXEL11
1299                         PIXEL12_C
1300                         PIXEL20_1D
1301                         PIXEL21_1
1302                         PIXEL22_1M
1303                         break;
1304                     }
1305                 case 71:
1306                     {
1307                         PIXEL00_1L
1308                         PIXEL01_C
1309                         PIXEL02_1R
1310                         PIXEL10_1
1311                         PIXEL11
1312                         PIXEL12_1
1313                         PIXEL20_1M
1314                         PIXEL21_C
1315                         PIXEL22_1M
1316                         break;
1317                     }
1318                 case 156:
1319                     {
1320                         PIXEL00_1M
1321                         PIXEL01_1
1322                         PIXEL02_1U
1323                         PIXEL10_C
1324                         PIXEL11
1325                         PIXEL12_C
1326                         PIXEL20_1M
1327                         PIXEL21_1
1328                         PIXEL22_1D
1329                         break;
1330                     }
1331                 case 226:
1332                     {
1333                         PIXEL00_1M
1334                         PIXEL01_C
1335                         PIXEL02_1M
1336                         PIXEL10_1
1337                         PIXEL11
1338                         PIXEL12_1
1339                         PIXEL20_1L
1340                         PIXEL21_C
1341                         PIXEL22_1R
1342                         break;
1343                     }
1344                 case 60:
1345                     {
1346                         PIXEL00_1M
1347                         PIXEL01_1
1348                         PIXEL02_1U
1349                         PIXEL10_C
1350                         PIXEL11
1351                         PIXEL12_C
1352                         PIXEL20_1D
1353                         PIXEL21_1
1354                         PIXEL22_1M
1355                         break;
1356                     }
1357                 case 195:
1358                     {
1359                         PIXEL00_1L
1360                         PIXEL01_C
1361                         PIXEL02_1M
1362                         PIXEL10_1
1363                         PIXEL11
1364                         PIXEL12_1
1365                         PIXEL20_1M
1366                         PIXEL21_C
1367                         PIXEL22_1R
1368                         break;
1369                     }
1370                 case 102:
1371                     {
1372                         PIXEL00_1M
1373                         PIXEL01_C
1374                         PIXEL02_1R
1375                         PIXEL10_1
1376                         PIXEL11
1377                         PIXEL12_1
1378                         PIXEL20_1L
1379                         PIXEL21_C
1380                         PIXEL22_1M
1381                         break;
1382                     }
1383                 case 153:
1384                     {
1385                         PIXEL00_1U
1386                         PIXEL01_1
1387                         PIXEL02_1M
1388                         PIXEL10_C
1389                         PIXEL11
1390                         PIXEL12_C
1391                         PIXEL20_1M
1392                         PIXEL21_1
1393                         PIXEL22_1D
1394                         break;
1395                     }
1396                 case 58:
1397                     {
1398                         if (Diff(w[4], w[2]))
1399                         {
1400                             PIXEL00_1M
1401                         }
1402                         else
1403                         {
1404                             PIXEL00_2
1405                         }
1406                         PIXEL01_C
1407                         if (Diff(w[2], w[6]))
1408                         {
1409                             PIXEL02_1M
1410                         }
1411                         else
1412                         {
1413                             PIXEL02_2
1414                         }
1415                         PIXEL10_C
1416                         PIXEL11
1417                         PIXEL12_C
1418                         PIXEL20_1D
1419                         PIXEL21_1
1420                         PIXEL22_1M
1421                         break;
1422                     }
1423                 case 83:
1424                     {
1425                         PIXEL00_1L
1426                         PIXEL01_C
1427                         if (Diff(w[2], w[6]))
1428                         {
1429                             PIXEL02_1M
1430                         }
1431                         else
1432                         {
1433                             PIXEL02_2
1434                         }
1435                         PIXEL10_1
1436                         PIXEL11
1437                         PIXEL12_C
1438                         PIXEL20_1M
1439                         PIXEL21_C
1440                         if (Diff(w[6], w[8]))
1441                         {
1442                             PIXEL22_1M
1443                         }
1444                         else
1445                         {
1446                             PIXEL22_2
1447                         }
1448                         break;
1449                     }
1450                 case 92:
1451                     {
1452                         PIXEL00_1M
1453                         PIXEL01_1
1454                         PIXEL02_1U
1455                         PIXEL10_C
1456                         PIXEL11
1457                         PIXEL12_C
1458                         if (Diff(w[8], w[4]))
1459                         {
1460                             PIXEL20_1M
1461                         }
1462                         else
1463                         {
1464                             PIXEL20_2
1465                         }
1466                         PIXEL21_C
1467                         if (Diff(w[6], w[8]))
1468                         {
1469                             PIXEL22_1M
1470                         }
1471                         else
1472                         {
1473                             PIXEL22_2
1474                         }
1475                         break;
1476                     }
1477                 case 202:
1478                     {
1479                         if (Diff(w[4], w[2]))
1480                         {
1481                             PIXEL00_1M
1482                         }
1483                         else
1484                         {
1485                             PIXEL00_2
1486                         }
1487                         PIXEL01_C
1488                         PIXEL02_1M
1489                         PIXEL10_C
1490                         PIXEL11
1491                         PIXEL12_1
1492                         if (Diff(w[8], w[4]))
1493                         {
1494                             PIXEL20_1M
1495                         }
1496                         else
1497                         {
1498                             PIXEL20_2
1499                         }
1500                         PIXEL21_C
1501                         PIXEL22_1R
1502                         break;
1503                     }
1504                 case 78:
1505                     {
1506                         if (Diff(w[4], w[2]))
1507                         {
1508                             PIXEL00_1M
1509                         }
1510                         else
1511                         {
1512                             PIXEL00_2
1513                         }
1514                         PIXEL01_C
1515                         PIXEL02_1R
1516                         PIXEL10_C
1517                         PIXEL11
1518                         PIXEL12_1
1519                         if (Diff(w[8], w[4]))
1520                         {
1521                             PIXEL20_1M
1522                         }
1523                         else
1524                         {
1525                             PIXEL20_2
1526                         }
1527                         PIXEL21_C
1528                         PIXEL22_1M
1529                         break;
1530                     }
1531                 case 154:
1532                     {
1533                         if (Diff(w[4], w[2]))
1534                         {
1535                             PIXEL00_1M
1536                         }
1537                         else
1538                         {
1539                             PIXEL00_2
1540                         }
1541                         PIXEL01_C
1542                         if (Diff(w[2], w[6]))
1543                         {
1544                             PIXEL02_1M
1545                         }
1546                         else
1547                         {
1548                             PIXEL02_2
1549                         }
1550                         PIXEL10_C
1551                         PIXEL11
1552                         PIXEL12_C
1553                         PIXEL20_1M
1554                         PIXEL21_1
1555                         PIXEL22_1D
1556                         break;
1557                     }
1558                 case 114:
1559                     {
1560                         PIXEL00_1M
1561                         PIXEL01_C
1562                         if (Diff(w[2], w[6]))
1563                         {
1564                             PIXEL02_1M
1565                         }
1566                         else
1567                         {
1568                             PIXEL02_2
1569                         }
1570                         PIXEL10_1
1571                         PIXEL11
1572                         PIXEL12_C
1573                         PIXEL20_1L
1574                         PIXEL21_C
1575                         if (Diff(w[6], w[8]))
1576                         {
1577                             PIXEL22_1M
1578                         }
1579                         else
1580                         {
1581                             PIXEL22_2
1582                         }
1583                         break;
1584                     }
1585                 case 89:
1586                     {
1587                         PIXEL00_1U
1588                         PIXEL01_1
1589                         PIXEL02_1M
1590                         PIXEL10_C
1591                         PIXEL11
1592                         PIXEL12_C
1593                         if (Diff(w[8], w[4]))
1594                         {
1595                             PIXEL20_1M
1596                         }
1597                         else
1598                         {
1599                             PIXEL20_2
1600                         }
1601                         PIXEL21_C
1602                         if (Diff(w[6], w[8]))
1603                         {
1604                             PIXEL22_1M
1605                         }
1606                         else
1607                         {
1608                             PIXEL22_2
1609                         }
1610                         break;
1611                     }
1612                 case 90:
1613                     {
1614                         if (Diff(w[4], w[2]))
1615                         {
1616                             PIXEL00_1M
1617                         }
1618                         else
1619                         {
1620                             PIXEL00_2
1621                         }
1622                         PIXEL01_C
1623                         if (Diff(w[2], w[6]))
1624                         {
1625                             PIXEL02_1M
1626                         }
1627                         else
1628                         {
1629                             PIXEL02_2
1630                         }
1631                         PIXEL10_C
1632                         PIXEL11
1633                         PIXEL12_C
1634                         if (Diff(w[8], w[4]))
1635                         {
1636                             PIXEL20_1M
1637                         }
1638                         else
1639                         {
1640                             PIXEL20_2
1641                         }
1642                         PIXEL21_C
1643                         if (Diff(w[6], w[8]))
1644                         {
1645                             PIXEL22_1M
1646                         }
1647                         else
1648                         {
1649                             PIXEL22_2
1650                         }
1651                         break;
1652                     }
1653                 case 55:
1654                 case 23:
1655                     {
1656                         if (Diff(w[2], w[6]))
1657                         {
1658                             PIXEL00_1L
1659                             PIXEL01_C
1660                             PIXEL02_C
1661                             PIXEL12_C
1662                         }
1663                         else
1664                         {
1665                             PIXEL00_2
1666                             PIXEL01_6
1667                             PIXEL02_5
1668                             PIXEL12_1
1669                         }
1670                         PIXEL10_1
1671                         PIXEL11
1672                         PIXEL20_2
1673                         PIXEL21_1
1674                         PIXEL22_1M
1675                         break;
1676                     }
1677                 case 182:
1678                 case 150:
1679                     {
1680                         if (Diff(w[2], w[6]))
1681                         {
1682                             PIXEL01_C
1683                             PIXEL02_C
1684                             PIXEL12_C
1685                             PIXEL22_1D
1686                         }
1687                         else
1688                         {
1689                             PIXEL01_1
1690                             PIXEL02_5
1691                             PIXEL12_6
1692                             PIXEL22_2
1693                         }
1694                         PIXEL00_1M
1695                         PIXEL10_1
1696                         PIXEL11
1697                         PIXEL20_2
1698                         PIXEL21_1
1699                         break;
1700                     }
1701                 case 213:
1702                 case 212:
1703                     {
1704                         if (Diff(w[6], w[8]))
1705                         {
1706                             PIXEL02_1U
1707                             PIXEL12_C
1708                             PIXEL21_C
1709                             PIXEL22_C
1710                         }
1711                         else
1712                         {
1713                             PIXEL02_2
1714                             PIXEL12_6
1715                             PIXEL21_1
1716                             PIXEL22_5
1717                         }
1718                         PIXEL00_2
1719                         PIXEL01_1
1720                         PIXEL10_1
1721                         PIXEL11
1722                         PIXEL20_1M
1723                         break;
1724                     }
1725                 case 241:
1726                 case 240:
1727                     {
1728                         if (Diff(w[6], w[8]))
1729                         {
1730                             PIXEL12_C
1731                             PIXEL20_1L
1732                             PIXEL21_C
1733                             PIXEL22_C
1734                         }
1735                         else
1736                         {
1737                             PIXEL12_1
1738                             PIXEL20_2
1739                             PIXEL21_6
1740                             PIXEL22_5
1741                         }
1742                         PIXEL00_2
1743                         PIXEL01_1
1744                         PIXEL02_1M
1745                         PIXEL10_1
1746                         PIXEL11
1747                         break;
1748                     }
1749                 case 236:
1750                 case 232:
1751                     {
1752                         if (Diff(w[8], w[4]))
1753                         {
1754                             PIXEL10_C
1755                             PIXEL20_C
1756                             PIXEL21_C
1757                             PIXEL22_1R
1758                         }
1759                         else
1760                         {
1761                             PIXEL10_1
1762                             PIXEL20_5
1763                             PIXEL21_6
1764                             PIXEL22_2
1765                         }
1766                         PIXEL00_1M
1767                         PIXEL01_1
1768                         PIXEL02_2
1769                         PIXEL11
1770                         PIXEL12_1
1771                         break;
1772                     }
1773                 case 109:
1774                 case 105:
1775                     {
1776                         if (Diff(w[8], w[4]))
1777                         {
1778                             PIXEL00_1U
1779                             PIXEL10_C
1780                             PIXEL20_C
1781                             PIXEL21_C
1782                         }
1783                         else
1784                         {
1785                             PIXEL00_2
1786                             PIXEL10_6
1787                             PIXEL20_5
1788                             PIXEL21_1
1789                         }
1790                         PIXEL01_1
1791                         PIXEL02_2
1792                         PIXEL11
1793                         PIXEL12_1
1794                         PIXEL22_1M
1795                         break;
1796                     }
1797                 case 171:
1798                 case 43:
1799                     {
1800                         if (Diff(w[4], w[2]))
1801                         {
1802                             PIXEL00_C
1803                             PIXEL01_C
1804                             PIXEL10_C
1805                             PIXEL20_1D
1806                         }
1807                         else
1808                         {
1809                             PIXEL00_5
1810                             PIXEL01_1
1811                             PIXEL10_6
1812                             PIXEL20_2
1813                         }
1814                         PIXEL02_1M
1815                         PIXEL11
1816                         PIXEL12_1
1817                         PIXEL21_1
1818                         PIXEL22_2
1819                         break;
1820                     }
1821                 case 143:
1822                 case 15:
1823                     {
1824                         if (Diff(w[4], w[2]))
1825                         {
1826                             PIXEL00_C
1827                             PIXEL01_C
1828                             PIXEL02_1R
1829                             PIXEL10_C
1830                         }
1831                         else
1832                         {
1833                             PIXEL00_5
1834                             PIXEL01_6
1835                             PIXEL02_2
1836                             PIXEL10_1
1837                         }
1838                         PIXEL11
1839                         PIXEL12_1
1840                         PIXEL20_1M
1841                         PIXEL21_1
1842                         PIXEL22_2
1843                         break;
1844                     }
1845                 case 124:
1846                     {
1847                         PIXEL00_1M
1848                         PIXEL01_1
1849                         PIXEL02_1U
1850                         PIXEL11
1851                         PIXEL12_C
1852                         if (Diff(w[8], w[4]))
1853                         {
1854                             PIXEL10_C
1855                             PIXEL20_C
1856                             PIXEL21_C
1857                         }
1858                         else
1859                         {
1860                             PIXEL10_3
1861                             PIXEL20_4
1862                             PIXEL21_3
1863                         }
1864                         PIXEL22_1M
1865                         break;
1866                     }
1867                 case 203:
1868                     {
1869                         if (Diff(w[4], w[2]))
1870                         {
1871                             PIXEL00_C
1872                             PIXEL01_C
1873                             PIXEL10_C
1874                         }
1875                         else
1876                         {
1877                             PIXEL00_4
1878                             PIXEL01_3
1879                             PIXEL10_3
1880                         }
1881                         PIXEL02_1M
1882                         PIXEL11
1883                         PIXEL12_1
1884                         PIXEL20_1M
1885                         PIXEL21_C
1886                         PIXEL22_1R
1887                         break;
1888                     }
1889                 case 62:
1890                     {
1891                         PIXEL00_1M
1892                         if (Diff(w[2], w[6]))
1893                         {
1894                             PIXEL01_C
1895                             PIXEL02_C
1896                             PIXEL12_C
1897                         }
1898                         else
1899                         {
1900                             PIXEL01_3
1901                             PIXEL02_4
1902                             PIXEL12_3
1903                         }
1904                         PIXEL10_C
1905                         PIXEL11
1906                         PIXEL20_1D
1907                         PIXEL21_1
1908                         PIXEL22_1M
1909                         break;
1910                     }
1911                 case 211:
1912                     {
1913                         PIXEL00_1L
1914                         PIXEL01_C
1915                         PIXEL02_1M
1916                         PIXEL10_1
1917                         PIXEL11
1918                         PIXEL20_1M
1919                         if (Diff(w[6], w[8]))
1920                         {
1921                             PIXEL12_C
1922                             PIXEL21_C
1923                             PIXEL22_C
1924                         }
1925                         else
1926                         {
1927                             PIXEL12_3
1928                             PIXEL21_3
1929                             PIXEL22_4
1930                         }
1931                         break;
1932                     }
1933                 case 118:
1934                     {
1935                         PIXEL00_1M
1936                         if (Diff(w[2], w[6]))
1937                         {
1938                             PIXEL01_C
1939                             PIXEL02_C
1940                             PIXEL12_C
1941                         }
1942                         else
1943                         {
1944                             PIXEL01_3
1945                             PIXEL02_4
1946                             PIXEL12_3
1947                         }
1948                         PIXEL10_1
1949                         PIXEL11
1950                         PIXEL20_1L
1951                         PIXEL21_C
1952                         PIXEL22_1M
1953                         break;
1954                     }
1955                 case 217:
1956                     {
1957                         PIXEL00_1U
1958                         PIXEL01_1
1959                         PIXEL02_1M
1960                         PIXEL10_C
1961                         PIXEL11
1962                         PIXEL20_1M
1963                         if (Diff(w[6], w[8]))
1964                         {
1965                             PIXEL12_C
1966                             PIXEL21_C
1967                             PIXEL22_C
1968                         }
1969                         else
1970                         {
1971                             PIXEL12_3
1972                             PIXEL21_3
1973                             PIXEL22_4
1974                         }
1975                         break;
1976                     }
1977                 case 110:
1978                     {
1979                         PIXEL00_1M
1980                         PIXEL01_C
1981                         PIXEL02_1R
1982                         PIXEL11
1983                         PIXEL12_1
1984                         if (Diff(w[8], w[4]))
1985                         {
1986                             PIXEL10_C
1987                             PIXEL20_C
1988                             PIXEL21_C
1989                         }
1990                         else
1991                         {
1992                             PIXEL10_3
1993                             PIXEL20_4
1994                             PIXEL21_3
1995                         }
1996                         PIXEL22_1M
1997                         break;
1998                     }
1999                 case 155:
2000                     {
2001                         if (Diff(w[4], w[2]))
2002                         {
2003                             PIXEL00_C
2004                             PIXEL01_C
2005                             PIXEL10_C
2006                         }
2007                         else
2008                         {
2009                             PIXEL00_4
2010                             PIXEL01_3
2011                             PIXEL10_3
2012                         }
2013                         PIXEL02_1M
2014                         PIXEL11
2015                         PIXEL12_C
2016                         PIXEL20_1M
2017                         PIXEL21_1
2018                         PIXEL22_1D
2019                         break;
2020                     }
2021                 case 188:
2022                     {
2023                         PIXEL00_1M
2024                         PIXEL01_1
2025                         PIXEL02_1U
2026                         PIXEL10_C
2027                         PIXEL11
2028                         PIXEL12_C
2029                         PIXEL20_1D
2030                         PIXEL21_1
2031                         PIXEL22_1D
2032                         break;
2033                     }
2034                 case 185:
2035                     {
2036                         PIXEL00_1U
2037                         PIXEL01_1
2038                         PIXEL02_1M
2039                         PIXEL10_C
2040                         PIXEL11
2041                         PIXEL12_C
2042                         PIXEL20_1D
2043                         PIXEL21_1
2044                         PIXEL22_1D
2045                         break;
2046                     }
2047                 case 61:
2048                     {
2049                         PIXEL00_1U
2050                         PIXEL01_1
2051                         PIXEL02_1U
2052                         PIXEL10_C
2053                         PIXEL11
2054                         PIXEL12_C
2055                         PIXEL20_1D
2056                         PIXEL21_1
2057                         PIXEL22_1M
2058                         break;
2059                     }
2060                 case 157:
2061                     {
2062                         PIXEL00_1U
2063                         PIXEL01_1
2064                         PIXEL02_1U
2065                         PIXEL10_C
2066                         PIXEL11
2067                         PIXEL12_C
2068                         PIXEL20_1M
2069                         PIXEL21_1
2070                         PIXEL22_1D
2071                         break;
2072                     }
2073                 case 103:
2074                     {
2075                         PIXEL00_1L
2076                         PIXEL01_C
2077                         PIXEL02_1R
2078                         PIXEL10_1
2079                         PIXEL11
2080                         PIXEL12_1
2081                         PIXEL20_1L
2082                         PIXEL21_C
2083                         PIXEL22_1M
2084                         break;
2085                     }
2086                 case 227:
2087                     {
2088                         PIXEL00_1L
2089                         PIXEL01_C
2090                         PIXEL02_1M
2091                         PIXEL10_1
2092                         PIXEL11
2093                         PIXEL12_1
2094                         PIXEL20_1L
2095                         PIXEL21_C
2096                         PIXEL22_1R
2097                         break;
2098                     }
2099                 case 230:
2100                     {
2101                         PIXEL00_1M
2102                         PIXEL01_C
2103                         PIXEL02_1R
2104                         PIXEL10_1
2105                         PIXEL11
2106                         PIXEL12_1
2107                         PIXEL20_1L
2108                         PIXEL21_C
2109                         PIXEL22_1R
2110                         break;
2111                     }
2112                 case 199:
2113                     {
2114                         PIXEL00_1L
2115                         PIXEL01_C
2116                         PIXEL02_1R
2117                         PIXEL10_1
2118                         PIXEL11
2119                         PIXEL12_1
2120                         PIXEL20_1M
2121                         PIXEL21_C
2122                         PIXEL22_1R
2123                         break;
2124                     }
2125                 case 220:
2126                     {
2127                         PIXEL00_1M
2128                         PIXEL01_1
2129                         PIXEL02_1U
2130                         PIXEL10_C
2131                         PIXEL11
2132                         if (Diff(w[8], w[4]))
2133                         {
2134                             PIXEL20_1M
2135                         }
2136                         else
2137                         {
2138                             PIXEL20_2
2139                         }
2140                         if (Diff(w[6], w[8]))
2141                         {
2142                             PIXEL12_C
2143                             PIXEL21_C
2144                             PIXEL22_C
2145                         }
2146                         else
2147                         {
2148                             PIXEL12_3
2149                             PIXEL21_3
2150                             PIXEL22_4
2151                         }
2152                         break;
2153                     }
2154                 case 158:
2155                     {
2156                         if (Diff(w[4], w[2]))
2157                         {
2158                             PIXEL00_1M
2159                         }
2160                         else
2161                         {
2162                             PIXEL00_2
2163                         }
2164                         if (Diff(w[2], w[6]))
2165                         {
2166                             PIXEL01_C
2167                             PIXEL02_C
2168                             PIXEL12_C
2169                         }
2170                         else
2171                         {
2172                             PIXEL01_3
2173                             PIXEL02_4
2174                             PIXEL12_3
2175                         }
2176                         PIXEL10_C
2177                         PIXEL11
2178                         PIXEL20_1M
2179                         PIXEL21_1
2180                         PIXEL22_1D
2181                         break;
2182                     }
2183                 case 234:
2184                     {
2185                         if (Diff(w[4], w[2]))
2186                         {
2187                             PIXEL00_1M
2188                         }
2189                         else
2190                         {
2191                             PIXEL00_2
2192                         }
2193                         PIXEL01_C
2194                         PIXEL02_1M
2195                         PIXEL11
2196                         PIXEL12_1
2197                         if (Diff(w[8], w[4]))
2198                         {
2199                             PIXEL10_C
2200                             PIXEL20_C
2201                             PIXEL21_C
2202                         }
2203                         else
2204                         {
2205                             PIXEL10_3
2206                             PIXEL20_4
2207                             PIXEL21_3
2208                         }
2209                         PIXEL22_1R
2210                         break;
2211                     }
2212                 case 242:
2213                     {
2214                         PIXEL00_1M
2215                         PIXEL01_C
2216                         if (Diff(w[2], w[6]))
2217                         {
2218                             PIXEL02_1M
2219                         }
2220                         else
2221                         {
2222                             PIXEL02_2
2223                         }
2224                         PIXEL10_1
2225                         PIXEL11
2226                         PIXEL20_1L
2227                         if (Diff(w[6], w[8]))
2228                         {
2229                             PIXEL12_C
2230                             PIXEL21_C
2231                             PIXEL22_C
2232                         }
2233                         else
2234                         {
2235                             PIXEL12_3
2236                             PIXEL21_3
2237                             PIXEL22_4
2238                         }
2239                         break;
2240                     }
2241                 case 59:
2242                     {
2243                         if (Diff(w[4], w[2]))
2244                         {
2245                             PIXEL00_C
2246                             PIXEL01_C
2247                             PIXEL10_C
2248                         }
2249                         else
2250                         {
2251                             PIXEL00_4
2252                             PIXEL01_3
2253                             PIXEL10_3
2254                         }
2255                         if (Diff(w[2], w[6]))
2256                         {
2257                             PIXEL02_1M
2258                         }
2259                         else
2260                         {
2261                             PIXEL02_2
2262                         }
2263                         PIXEL11
2264                         PIXEL12_C
2265                         PIXEL20_1D
2266                         PIXEL21_1
2267                         PIXEL22_1M
2268                         break;
2269                     }
2270                 case 121:
2271                     {
2272                         PIXEL00_1U
2273                         PIXEL01_1
2274                         PIXEL02_1M
2275                         PIXEL11
2276                         PIXEL12_C
2277                         if (Diff(w[8], w[4]))
2278                         {
2279                             PIXEL10_C
2280                             PIXEL20_C
2281                             PIXEL21_C
2282                         }
2283                         else
2284                         {
2285                             PIXEL10_3
2286                             PIXEL20_4
2287                             PIXEL21_3
2288                         }
2289                         if (Diff(w[6], w[8]))
2290                         {
2291                             PIXEL22_1M
2292                         }
2293                         else
2294                         {
2295                             PIXEL22_2
2296                         }
2297                         break;
2298                     }
2299                 case 87:
2300                     {
2301                         PIXEL00_1L
2302                         if (Diff(w[2], w[6]))
2303                         {
2304                             PIXEL01_C
2305                             PIXEL02_C
2306                             PIXEL12_C
2307                         }
2308                         else
2309                         {
2310                             PIXEL01_3
2311                             PIXEL02_4
2312                             PIXEL12_3
2313                         }
2314                         PIXEL10_1
2315                         PIXEL11
2316                         PIXEL20_1M
2317                         PIXEL21_C
2318                         if (Diff(w[6], w[8]))
2319                         {
2320                             PIXEL22_1M
2321                         }
2322                         else
2323                         {
2324                             PIXEL22_2
2325                         }
2326                         break;
2327                     }
2328                 case 79:
2329                     {
2330                         if (Diff(w[4], w[2]))
2331                         {
2332                             PIXEL00_C
2333                             PIXEL01_C
2334                             PIXEL10_C
2335                         }
2336                         else
2337                         {
2338                             PIXEL00_4
2339                             PIXEL01_3
2340                             PIXEL10_3
2341                         }
2342                         PIXEL02_1R
2343                         PIXEL11
2344                         PIXEL12_1
2345                         if (Diff(w[8], w[4]))
2346                         {
2347                             PIXEL20_1M
2348                         }
2349                         else
2350                         {
2351                             PIXEL20_2
2352                         }
2353                         PIXEL21_C
2354                         PIXEL22_1M
2355                         break;
2356                     }
2357                 case 122:
2358                     {
2359                         if (Diff(w[4], w[2]))
2360                         {
2361                             PIXEL00_1M
2362                         }
2363                         else
2364                         {
2365                             PIXEL00_2
2366                         }
2367                         PIXEL01_C
2368                         if (Diff(w[2], w[6]))
2369                         {
2370                             PIXEL02_1M
2371                         }
2372                         else
2373                         {
2374                             PIXEL02_2
2375                         }
2376                         PIXEL11
2377                         PIXEL12_C
2378                         if (Diff(w[8], w[4]))
2379                         {
2380                             PIXEL10_C
2381                             PIXEL20_C
2382                             PIXEL21_C
2383                         }
2384                         else
2385                         {
2386                             PIXEL10_3
2387                             PIXEL20_4
2388                             PIXEL21_3
2389                         }
2390                         if (Diff(w[6], w[8]))
2391                         {
2392                             PIXEL22_1M
2393                         }
2394                         else
2395                         {
2396                             PIXEL22_2
2397                         }
2398                         break;
2399                     }
2400                 case 94:
2401                     {
2402                         if (Diff(w[4], w[2]))
2403                         {
2404                             PIXEL00_1M
2405                         }
2406                         else
2407                         {
2408                             PIXEL00_2
2409                         }
2410                         if (Diff(w[2], w[6]))
2411                         {
2412                             PIXEL01_C
2413                             PIXEL02_C
2414                             PIXEL12_C
2415                         }
2416                         else
2417                         {
2418                             PIXEL01_3
2419                             PIXEL02_4
2420                             PIXEL12_3
2421                         }
2422                         PIXEL10_C
2423                         PIXEL11
2424                         if (Diff(w[8], w[4]))
2425                         {
2426                             PIXEL20_1M
2427                         }
2428                         else
2429                         {
2430                             PIXEL20_2
2431                         }
2432                         PIXEL21_C
2433                         if (Diff(w[6], w[8]))
2434                         {
2435                             PIXEL22_1M
2436                         }
2437                         else
2438                         {
2439                             PIXEL22_2
2440                         }
2441                         break;
2442                     }
2443                 case 218:
2444                     {
2445                         if (Diff(w[4], w[2]))
2446                         {
2447                             PIXEL00_1M
2448                         }
2449                         else
2450                         {
2451                             PIXEL00_2
2452                         }
2453                         PIXEL01_C
2454                         if (Diff(w[2], w[6]))
2455                         {
2456                             PIXEL02_1M
2457                         }
2458                         else
2459                         {
2460                             PIXEL02_2
2461                         }
2462                         PIXEL10_C
2463                         PIXEL11
2464                         if (Diff(w[8], w[4]))
2465                         {
2466                             PIXEL20_1M
2467                         }
2468                         else
2469                         {
2470                             PIXEL20_2
2471                         }
2472                         if (Diff(w[6], w[8]))
2473                         {
2474                             PIXEL12_C
2475                             PIXEL21_C
2476                             PIXEL22_C
2477                         }
2478                         else
2479                         {
2480                             PIXEL12_3
2481                             PIXEL21_3
2482                             PIXEL22_4
2483                         }
2484                         break;
2485                     }
2486                 case 91:
2487                     {
2488                         if (Diff(w[4], w[2]))
2489                         {
2490                             PIXEL00_C
2491                             PIXEL01_C
2492                             PIXEL10_C
2493                         }
2494                         else
2495                         {
2496                             PIXEL00_4
2497                             PIXEL01_3
2498                             PIXEL10_3
2499                         }
2500                         if (Diff(w[2], w[6]))
2501                         {
2502                             PIXEL02_1M
2503                         }
2504                         else
2505                         {
2506                             PIXEL02_2
2507                         }
2508                         PIXEL11
2509                         PIXEL12_C
2510                         if (Diff(w[8], w[4]))
2511                         {
2512                             PIXEL20_1M
2513                         }
2514                         else
2515                         {
2516                             PIXEL20_2
2517                         }
2518                         PIXEL21_C
2519                         if (Diff(w[6], w[8]))
2520                         {
2521                             PIXEL22_1M
2522                         }
2523                         else
2524                         {
2525                             PIXEL22_2
2526                         }
2527                         break;
2528                     }
2529                 case 229:
2530                     {
2531                         PIXEL00_2
2532                         PIXEL01_1
2533                         PIXEL02_2
2534                         PIXEL10_1
2535                         PIXEL11
2536                         PIXEL12_1
2537                         PIXEL20_1L
2538                         PIXEL21_C
2539                         PIXEL22_1R
2540                         break;
2541                     }
2542                 case 167:
2543                     {
2544                         PIXEL00_1L
2545                         PIXEL01_C
2546                         PIXEL02_1R
2547                         PIXEL10_1
2548                         PIXEL11
2549                         PIXEL12_1
2550                         PIXEL20_2
2551                         PIXEL21_1
2552                         PIXEL22_2
2553                         break;
2554                     }
2555                 case 173:
2556                     {
2557                         PIXEL00_1U
2558                         PIXEL01_1
2559                         PIXEL02_2
2560                         PIXEL10_C
2561                         PIXEL11
2562                         PIXEL12_1
2563                         PIXEL20_1D
2564                         PIXEL21_1
2565                         PIXEL22_2
2566                         break;
2567                     }
2568                 case 181:
2569                     {
2570                         PIXEL00_2
2571                         PIXEL01_1
2572                         PIXEL02_1U
2573                         PIXEL10_1
2574                         PIXEL11
2575                         PIXEL12_C
2576                         PIXEL20_2
2577                         PIXEL21_1
2578                         PIXEL22_1D
2579                         break;
2580                     }
2581                 case 186:
2582                     {
2583                         if (Diff(w[4], w[2]))
2584                         {
2585                             PIXEL00_1M
2586                         }
2587                         else
2588                         {
2589                             PIXEL00_2
2590                         }
2591                         PIXEL01_C
2592                         if (Diff(w[2], w[6]))
2593                         {
2594                             PIXEL02_1M
2595                         }
2596                         else
2597                         {
2598                             PIXEL02_2
2599                         }
2600                         PIXEL10_C
2601                         PIXEL11
2602                         PIXEL12_C
2603                         PIXEL20_1D
2604                         PIXEL21_1
2605                         PIXEL22_1D
2606                         break;
2607                     }
2608                 case 115:
2609                     {
2610                         PIXEL00_1L
2611                         PIXEL01_C
2612                         if (Diff(w[2], w[6]))
2613                         {
2614                             PIXEL02_1M
2615                         }
2616                         else
2617                         {
2618                             PIXEL02_2
2619                         }
2620                         PIXEL10_1
2621                         PIXEL11
2622                         PIXEL12_C
2623                         PIXEL20_1L
2624                         PIXEL21_C
2625                         if (Diff(w[6], w[8]))
2626                         {
2627                             PIXEL22_1M
2628                         }
2629                         else
2630                         {
2631                             PIXEL22_2
2632                         }
2633                         break;
2634                     }
2635                 case 93:
2636                     {
2637                         PIXEL00_1U
2638                         PIXEL01_1
2639                         PIXEL02_1U
2640                         PIXEL10_C
2641                         PIXEL11
2642                         PIXEL12_C
2643                         if (Diff(w[8], w[4]))
2644                         {
2645                             PIXEL20_1M
2646                         }
2647                         else
2648                         {
2649                             PIXEL20_2
2650                         }
2651                         PIXEL21_C
2652                         if (Diff(w[6], w[8]))
2653                         {
2654                             PIXEL22_1M
2655                         }
2656                         else
2657                         {
2658                             PIXEL22_2
2659                         }
2660                         break;
2661                     }
2662                 case 206:
2663                     {
2664                         if (Diff(w[4], w[2]))
2665                         {
2666                             PIXEL00_1M
2667                         }
2668                         else
2669                         {
2670                             PIXEL00_2
2671                         }
2672                         PIXEL01_C
2673                         PIXEL02_1R
2674                         PIXEL10_C
2675                         PIXEL11
2676                         PIXEL12_1
2677                         if (Diff(w[8], w[4]))
2678                         {
2679                             PIXEL20_1M
2680                         }
2681                         else
2682                         {
2683                             PIXEL20_2
2684                         }
2685                         PIXEL21_C
2686                         PIXEL22_1R
2687                         break;
2688                     }
2689                 case 205:
2690                 case 201:
2691                     {
2692                         PIXEL00_1U
2693                         PIXEL01_1
2694                         PIXEL02_2
2695                         PIXEL10_C
2696                         PIXEL11
2697                         PIXEL12_1
2698                         if (Diff(w[8], w[4]))
2699                         {
2700                             PIXEL20_1M
2701                         }
2702                         else
2703                         {
2704                             PIXEL20_2
2705                         }
2706                         PIXEL21_C
2707                         PIXEL22_1R
2708                         break;
2709                     }
2710                 case 174:
2711                 case 46:
2712                     {
2713                         if (Diff(w[4], w[2]))
2714                         {
2715                             PIXEL00_1M
2716                         }
2717                         else
2718                         {
2719                             PIXEL00_2
2720                         }
2721                         PIXEL01_C
2722                         PIXEL02_1R
2723                         PIXEL10_C
2724                         PIXEL11
2725                         PIXEL12_1
2726                         PIXEL20_1D
2727                         PIXEL21_1
2728                         PIXEL22_2
2729                         break;
2730                     }
2731                 case 179:
2732                 case 147:
2733                     {
2734                         PIXEL00_1L
2735                         PIXEL01_C
2736                         if (Diff(w[2], w[6]))
2737                         {
2738                             PIXEL02_1M
2739                         }
2740                         else
2741                         {
2742                             PIXEL02_2
2743                         }
2744                         PIXEL10_1
2745                         PIXEL11
2746                         PIXEL12_C
2747                         PIXEL20_2
2748                         PIXEL21_1
2749                         PIXEL22_1D
2750                         break;
2751                     }
2752                 case 117:
2753                 case 116:
2754                     {
2755                         PIXEL00_2
2756                         PIXEL01_1
2757                         PIXEL02_1U
2758                         PIXEL10_1
2759                         PIXEL11
2760                         PIXEL12_C
2761                         PIXEL20_1L
2762                         PIXEL21_C
2763                         if (Diff(w[6], w[8]))
2764                         {
2765                             PIXEL22_1M
2766                         }
2767                         else
2768                         {
2769                             PIXEL22_2
2770                         }
2771                         break;
2772                     }
2773                 case 189:
2774                     {
2775                         PIXEL00_1U
2776                         PIXEL01_1
2777                         PIXEL02_1U
2778                         PIXEL10_C
2779                         PIXEL11
2780                         PIXEL12_C
2781                         PIXEL20_1D
2782                         PIXEL21_1
2783                         PIXEL22_1D
2784                         break;
2785                     }
2786                 case 231:
2787                     {
2788                         PIXEL00_1L
2789                         PIXEL01_C
2790                         PIXEL02_1R
2791                         PIXEL10_1
2792                         PIXEL11
2793                         PIXEL12_1
2794                         PIXEL20_1L
2795                         PIXEL21_C
2796                         PIXEL22_1R
2797                         break;
2798                     }
2799                 case 126:
2800                     {
2801                         PIXEL00_1M
2802                         if (Diff(w[2], w[6]))
2803                         {
2804                             PIXEL01_C
2805                             PIXEL02_C
2806                             PIXEL12_C
2807                         }
2808                         else
2809                         {
2810                             PIXEL01_3
2811                             PIXEL02_4
2812                             PIXEL12_3
2813                         }
2814                         PIXEL11
2815                         if (Diff(w[8], w[4]))
2816                         {
2817                             PIXEL10_C
2818                             PIXEL20_C
2819                             PIXEL21_C
2820                         }
2821                         else
2822                         {
2823                             PIXEL10_3
2824                             PIXEL20_4
2825                             PIXEL21_3
2826                         }
2827                         PIXEL22_1M
2828                         break;
2829                     }
2830                 case 219:
2831                     {
2832                         if (Diff(w[4], w[2]))
2833                         {
2834                             PIXEL00_C
2835                             PIXEL01_C
2836                             PIXEL10_C
2837                         }
2838                         else
2839                         {
2840                             PIXEL00_4
2841                             PIXEL01_3
2842                             PIXEL10_3
2843                         }
2844                         PIXEL02_1M
2845                         PIXEL11
2846                         PIXEL20_1M
2847                         if (Diff(w[6], w[8]))
2848                         {
2849                             PIXEL12_C
2850                             PIXEL21_C
2851                             PIXEL22_C
2852                         }
2853                         else
2854                         {
2855                             PIXEL12_3
2856                             PIXEL21_3
2857                             PIXEL22_4
2858                         }
2859                         break;
2860                     }
2861                 case 125:
2862                     {
2863                         if (Diff(w[8], w[4]))
2864                         {
2865                             PIXEL00_1U
2866                             PIXEL10_C
2867                             PIXEL20_C
2868                             PIXEL21_C
2869                         }
2870                         else
2871                         {
2872                             PIXEL00_2
2873                             PIXEL10_6
2874                             PIXEL20_5
2875                             PIXEL21_1
2876                         }
2877                         PIXEL01_1
2878                         PIXEL02_1U
2879                         PIXEL11
2880                         PIXEL12_C
2881                         PIXEL22_1M
2882                         break;
2883                     }
2884                 case 221:
2885                     {
2886                         if (Diff(w[6], w[8]))
2887                         {
2888                             PIXEL02_1U
2889                             PIXEL12_C
2890                             PIXEL21_C
2891                             PIXEL22_C
2892                         }
2893                         else
2894                         {
2895                             PIXEL02_2
2896                             PIXEL12_6
2897                             PIXEL21_1
2898                             PIXEL22_5
2899                         }
2900                         PIXEL00_1U
2901                         PIXEL01_1
2902                         PIXEL10_C
2903                         PIXEL11
2904                         PIXEL20_1M
2905                         break;
2906                     }
2907                 case 207:
2908                     {
2909                         if (Diff(w[4], w[2]))
2910                         {
2911                             PIXEL00_C
2912                             PIXEL01_C
2913                             PIXEL02_1R
2914                             PIXEL10_C
2915                         }
2916                         else
2917                         {
2918                             PIXEL00_5
2919                             PIXEL01_6
2920                             PIXEL02_2
2921                             PIXEL10_1
2922                         }
2923                         PIXEL11
2924                         PIXEL12_1
2925                         PIXEL20_1M
2926                         PIXEL21_C
2927                         PIXEL22_1R
2928                         break;
2929                     }
2930                 case 238:
2931                     {
2932                         if (Diff(w[8], w[4]))
2933                         {
2934                             PIXEL10_C
2935                             PIXEL20_C
2936                             PIXEL21_C
2937                             PIXEL22_1R
2938                         }
2939                         else
2940                         {
2941                             PIXEL10_1
2942                             PIXEL20_5
2943                             PIXEL21_6
2944                             PIXEL22_2
2945                         }
2946                         PIXEL00_1M
2947                         PIXEL01_C
2948                         PIXEL02_1R
2949                         PIXEL11
2950                         PIXEL12_1
2951                         break;
2952                     }
2953                 case 190:
2954                     {
2955                         if (Diff(w[2], w[6]))
2956                         {
2957                             PIXEL01_C
2958                             PIXEL02_C
2959                             PIXEL12_C
2960                             PIXEL22_1D
2961                         }
2962                         else
2963                         {
2964                             PIXEL01_1
2965                             PIXEL02_5
2966                             PIXEL12_6
2967                             PIXEL22_2
2968                         }
2969                         PIXEL00_1M
2970                         PIXEL10_C
2971                         PIXEL11
2972                         PIXEL20_1D
2973                         PIXEL21_1
2974                         break;
2975                     }
2976                 case 187:
2977                     {
2978                         if (Diff(w[4], w[2]))
2979                         {
2980                             PIXEL00_C
2981                             PIXEL01_C
2982                             PIXEL10_C
2983                             PIXEL20_1D
2984                         }
2985                         else
2986                         {
2987                             PIXEL00_5
2988                             PIXEL01_1
2989                             PIXEL10_6
2990                             PIXEL20_2
2991                         }
2992                         PIXEL02_1M
2993                         PIXEL11
2994                         PIXEL12_C
2995                         PIXEL21_1
2996                         PIXEL22_1D
2997                         break;
2998                     }
2999                 case 243:
3000                     {
3001                         if (Diff(w[6], w[8]))
3002                         {
3003                             PIXEL12_C
3004                             PIXEL20_1L
3005                             PIXEL21_C
3006                             PIXEL22_C
3007                         }
3008                         else
3009                         {
3010                             PIXEL12_1
3011                             PIXEL20_2
3012                             PIXEL21_6
3013                             PIXEL22_5
3014                         }
3015                         PIXEL00_1L
3016                         PIXEL01_C
3017                         PIXEL02_1M
3018                         PIXEL10_1
3019                         PIXEL11
3020                         break;
3021                     }
3022                 case 119:
3023                     {
3024                         if (Diff(w[2], w[6]))
3025                         {
3026                             PIXEL00_1L
3027                             PIXEL01_C
3028                             PIXEL02_C
3029                             PIXEL12_C
3030                         }
3031                         else
3032                         {
3033                             PIXEL00_2
3034                             PIXEL01_6
3035                             PIXEL02_5
3036                             PIXEL12_1
3037                         }
3038                         PIXEL10_1
3039                         PIXEL11
3040                         PIXEL20_1L
3041                         PIXEL21_C
3042                         PIXEL22_1M
3043                         break;
3044                     }
3045                 case 237:
3046                 case 233:
3047                     {
3048                         PIXEL00_1U
3049                         PIXEL01_1
3050                         PIXEL02_2
3051                         PIXEL10_C
3052                         PIXEL11
3053                         PIXEL12_1
3054                         if (Diff(w[8], w[4]))
3055                         {
3056                             PIXEL20_C
3057                         }
3058                         else
3059                         {
3060                             PIXEL20_2
3061                         }
3062                         PIXEL21_C
3063                         PIXEL22_1R
3064                         break;
3065                     }
3066                 case 175:
3067                 case 47:
3068                     {
3069                         if (Diff(w[4], w[2]))
3070                         {
3071                             PIXEL00_C
3072                         }
3073                         else
3074                         {
3075                             PIXEL00_2
3076                         }
3077                         PIXEL01_C
3078                         PIXEL02_1R
3079                         PIXEL10_C
3080                         PIXEL11
3081                         PIXEL12_1
3082                         PIXEL20_1D
3083                         PIXEL21_1
3084                         PIXEL22_2
3085                         break;
3086                     }
3087                 case 183:
3088                 case 151:
3089                     {
3090                         PIXEL00_1L
3091                         PIXEL01_C
3092                         if (Diff(w[2], w[6]))
3093                         {
3094                             PIXEL02_C
3095                         }
3096                         else
3097                         {
3098                             PIXEL02_2
3099                         }
3100                         PIXEL10_1
3101                         PIXEL11
3102                         PIXEL12_C
3103                         PIXEL20_2
3104                         PIXEL21_1
3105                         PIXEL22_1D
3106                         break;
3107                     }
3108                 case 245:
3109                 case 244:
3110                     {
3111                         PIXEL00_2
3112                         PIXEL01_1
3113                         PIXEL02_1U
3114                         PIXEL10_1
3115                         PIXEL11
3116                         PIXEL12_C
3117                         PIXEL20_1L
3118                         PIXEL21_C
3119                         if (Diff(w[6], w[8]))
3120                         {
3121                             PIXEL22_C
3122                         }
3123                         else
3124                         {
3125                             PIXEL22_2
3126                         }
3127                         break;
3128                     }
3129                 case 250:
3130                     {
3131                         PIXEL00_1M
3132                         PIXEL01_C
3133                         PIXEL02_1M
3134                         PIXEL11
3135                         if (Diff(w[8], w[4]))
3136                         {
3137                             PIXEL10_C
3138                             PIXEL20_C
3139                         }
3140                         else
3141                         {
3142                             PIXEL10_3
3143                             PIXEL20_4
3144                         }
3145                         PIXEL21_C
3146                         if (Diff(w[6], w[8]))
3147                         {
3148                             PIXEL12_C
3149                             PIXEL22_C
3150                         }
3151                         else
3152                         {
3153                             PIXEL12_3
3154                             PIXEL22_4
3155                         }
3156                         break;
3157                     }
3158                 case 123:
3159                     {
3160                         if (Diff(w[4], w[2]))
3161                         {
3162                             PIXEL00_C
3163                             PIXEL01_C
3164                         }
3165                         else
3166                         {
3167                             PIXEL00_4
3168                             PIXEL01_3
3169                         }
3170                         PIXEL02_1M
3171                         PIXEL10_C
3172                         PIXEL11
3173                         PIXEL12_C
3174                         if (Diff(w[8], w[4]))
3175                         {
3176                             PIXEL20_C
3177                             PIXEL21_C
3178                         }
3179                         else
3180                         {
3181                             PIXEL20_4
3182                             PIXEL21_3
3183                         }
3184                         PIXEL22_1M
3185                         break;
3186                     }
3187                 case 95:
3188                     {
3189                         if (Diff(w[4], w[2]))
3190                         {
3191                             PIXEL00_C
3192                             PIXEL10_C
3193                         }
3194                         else
3195                         {
3196                             PIXEL00_4
3197                             PIXEL10_3
3198                         }
3199                         PIXEL01_C
3200                         if (Diff(w[2], w[6]))
3201                         {
3202                             PIXEL02_C
3203                             PIXEL12_C
3204                         }
3205                         else
3206                         {
3207                             PIXEL02_4
3208                             PIXEL12_3
3209                         }
3210                         PIXEL11
3211                         PIXEL20_1M
3212                         PIXEL21_C
3213                         PIXEL22_1M
3214                         break;
3215                     }
3216                 case 222:
3217                     {
3218                         PIXEL00_1M
3219                         if (Diff(w[2], w[6]))
3220                         {
3221                             PIXEL01_C
3222                             PIXEL02_C
3223                         }
3224                         else
3225                         {
3226                             PIXEL01_3
3227                             PIXEL02_4
3228                         }
3229                         PIXEL10_C
3230                         PIXEL11
3231                         PIXEL12_C
3232                         PIXEL20_1M
3233                         if (Diff(w[6], w[8]))
3234                         {
3235                             PIXEL21_C
3236                             PIXEL22_C
3237                         }
3238                         else
3239                         {
3240                             PIXEL21_3
3241                             PIXEL22_4
3242                         }
3243                         break;
3244                     }
3245                 case 252:
3246                     {
3247                         PIXEL00_1M
3248                         PIXEL01_1
3249                         PIXEL02_1U
3250                         PIXEL11
3251                         PIXEL12_C
3252                         if (Diff(w[8], w[4]))
3253                         {
3254                             PIXEL10_C
3255                             PIXEL20_C
3256                         }
3257                         else
3258                         {
3259                             PIXEL10_3
3260                             PIXEL20_4
3261                         }
3262                         PIXEL21_C
3263                         if (Diff(w[6], w[8]))
3264                         {
3265                             PIXEL22_C
3266                         }
3267                         else
3268                         {
3269                             PIXEL22_2
3270                         }
3271                         break;
3272                     }
3273                 case 249:
3274                     {
3275                         PIXEL00_1U
3276                         PIXEL01_1
3277                         PIXEL02_1M
3278                         PIXEL10_C
3279                         PIXEL11
3280                         if (Diff(w[8], w[4]))
3281                         {
3282                             PIXEL20_C
3283                         }
3284                         else
3285                         {
3286                             PIXEL20_2
3287                         }
3288                         PIXEL21_C
3289                         if (Diff(w[6], w[8]))
3290                         {
3291                             PIXEL12_C
3292                             PIXEL22_C
3293                         }
3294                         else
3295                         {
3296                             PIXEL12_3
3297                             PIXEL22_4
3298                         }
3299                         break;
3300                     }
3301                 case 235:
3302                     {
3303                         if (Diff(w[4], w[2]))
3304                         {
3305                             PIXEL00_C
3306                             PIXEL01_C
3307                         }
3308                         else
3309                         {
3310                             PIXEL00_4
3311                             PIXEL01_3
3312                         }
3313                         PIXEL02_1M
3314                         PIXEL10_C
3315                         PIXEL11
3316                         PIXEL12_1
3317                         if (Diff(w[8], w[4]))
3318                         {
3319                             PIXEL20_C
3320                         }
3321                         else
3322                         {
3323                             PIXEL20_2
3324                         }
3325                         PIXEL21_C
3326                         PIXEL22_1R
3327                         break;
3328                     }
3329                 case 111:
3330                     {
3331                         if (Diff(w[4], w[2]))
3332                         {
3333                             PIXEL00_C
3334                         }
3335                         else
3336                         {
3337                             PIXEL00_2
3338                         }
3339                         PIXEL01_C
3340                         PIXEL02_1R
3341                         PIXEL10_C
3342                         PIXEL11
3343                         PIXEL12_1
3344                         if (Diff(w[8], w[4]))
3345                         {
3346                             PIXEL20_C
3347                             PIXEL21_C
3348                         }
3349                         else
3350                         {
3351                             PIXEL20_4
3352                             PIXEL21_3
3353                         }
3354                         PIXEL22_1M
3355                         break;
3356                     }
3357                 case 63:
3358                     {
3359                         if (Diff(w[4], w[2]))
3360                         {
3361                             PIXEL00_C
3362                         }
3363                         else
3364                         {
3365                             PIXEL00_2
3366                         }
3367                         PIXEL01_C
3368                         if (Diff(w[2], w[6]))
3369                         {
3370                             PIXEL02_C
3371                             PIXEL12_C
3372                         }
3373                         else
3374                         {
3375                             PIXEL02_4
3376                             PIXEL12_3
3377                         }
3378                         PIXEL10_C
3379                         PIXEL11
3380                         PIXEL20_1D
3381                         PIXEL21_1
3382                         PIXEL22_1M
3383                         break;
3384                     }
3385                 case 159:
3386                     {
3387                         if (Diff(w[4], w[2]))
3388                         {
3389                             PIXEL00_C
3390                             PIXEL10_C
3391                         }
3392                         else
3393                         {
3394                             PIXEL00_4
3395                             PIXEL10_3
3396                         }
3397                         PIXEL01_C
3398                         if (Diff(w[2], w[6]))
3399                         {
3400                             PIXEL02_C
3401                         }
3402                         else
3403                         {
3404                             PIXEL02_2
3405                         }
3406                         PIXEL11
3407                         PIXEL12_C
3408                         PIXEL20_1M
3409                         PIXEL21_1
3410                         PIXEL22_1D
3411                         break;
3412                     }
3413                 case 215:
3414                     {
3415                         PIXEL00_1L
3416                         PIXEL01_C
3417                         if (Diff(w[2], w[6]))
3418                         {
3419                             PIXEL02_C
3420                         }
3421                         else
3422                         {
3423                             PIXEL02_2
3424                         }
3425                         PIXEL10_1
3426                         PIXEL11
3427                         PIXEL12_C
3428                         PIXEL20_1M
3429                         if (Diff(w[6], w[8]))
3430                         {
3431                             PIXEL21_C
3432                             PIXEL22_C
3433                         }
3434                         else
3435                         {
3436                             PIXEL21_3
3437                             PIXEL22_4
3438                         }
3439                         break;
3440                     }
3441                 case 246:
3442                     {
3443                         PIXEL00_1M
3444                         if (Diff(w[2], w[6]))
3445                         {
3446                             PIXEL01_C
3447                             PIXEL02_C
3448                         }
3449                         else
3450                         {
3451                             PIXEL01_3
3452                             PIXEL02_4
3453                         }
3454                         PIXEL10_1
3455                         PIXEL11
3456                         PIXEL12_C
3457                         PIXEL20_1L
3458                         PIXEL21_C
3459                         if (Diff(w[6], w[8]))
3460                         {
3461                             PIXEL22_C
3462                         }
3463                         else
3464                         {
3465                             PIXEL22_2
3466                         }
3467                         break;
3468                     }
3469                 case 254:
3470                     {
3471                         PIXEL00_1M
3472                         if (Diff(w[2], w[6]))
3473                         {
3474                             PIXEL01_C
3475                             PIXEL02_C
3476                         }
3477                         else
3478                         {
3479                             PIXEL01_3
3480                             PIXEL02_4
3481                         }
3482                         PIXEL11
3483                         if (Diff(w[8], w[4]))
3484                         {
3485                             PIXEL10_C
3486                             PIXEL20_C
3487                         }
3488                         else
3489                         {
3490                             PIXEL10_3
3491                             PIXEL20_4
3492                         }
3493                         if (Diff(w[6], w[8]))
3494                         {
3495                             PIXEL12_C
3496                             PIXEL21_C
3497                             PIXEL22_C
3498                         }
3499                         else
3500                         {
3501                             PIXEL12_3
3502                             PIXEL21_3
3503                             PIXEL22_2
3504                         }
3505                         break;
3506                     }
3507                 case 253:
3508                     {
3509                         PIXEL00_1U
3510                         PIXEL01_1
3511                         PIXEL02_1U
3512                         PIXEL10_C
3513                         PIXEL11
3514                         PIXEL12_C
3515                         if (Diff(w[8], w[4]))
3516                         {
3517                             PIXEL20_C
3518                         }
3519                         else
3520                         {
3521                             PIXEL20_2
3522                         }
3523                         PIXEL21_C
3524                         if (Diff(w[6], w[8]))
3525                         {
3526                             PIXEL22_C
3527                         }
3528                         else
3529                         {
3530                             PIXEL22_2
3531                         }
3532                         break;
3533                     }
3534                 case 251:
3535                     {
3536                         if (Diff(w[4], w[2]))
3537                         {
3538                             PIXEL00_C
3539                             PIXEL01_C
3540                         }
3541                         else
3542                         {
3543                             PIXEL00_4
3544                             PIXEL01_3
3545                         }
3546                         PIXEL02_1M
3547                         PIXEL11
3548                         if (Diff(w[8], w[4]))
3549                         {
3550                             PIXEL10_C
3551                             PIXEL20_C
3552                             PIXEL21_C
3553                         }
3554                         else
3555                         {
3556                             PIXEL10_3
3557                             PIXEL20_2
3558                             PIXEL21_3
3559                         }
3560                         if (Diff(w[6], w[8]))
3561                         {
3562                             PIXEL12_C
3563                             PIXEL22_C
3564                         }
3565                         else
3566                         {
3567                             PIXEL12_3
3568                             PIXEL22_4
3569                         }
3570                         break;
3571                     }
3572                 case 239:
3573                     {
3574                         if (Diff(w[4], w[2]))
3575                         {
3576                             PIXEL00_C
3577                         }
3578                         else
3579                         {
3580                             PIXEL00_2
3581                         }
3582                         PIXEL01_C
3583                         PIXEL02_1R
3584                         PIXEL10_C
3585                         PIXEL11
3586                         PIXEL12_1
3587                         if (Diff(w[8], w[4]))
3588                         {
3589                             PIXEL20_C
3590                         }
3591                         else
3592                         {
3593                             PIXEL20_2
3594                         }
3595                         PIXEL21_C
3596                         PIXEL22_1R
3597                         break;
3598                     }
3599                 case 127:
3600                     {
3601                         if (Diff(w[4], w[2]))
3602                         {
3603                             PIXEL00_C
3604                             PIXEL01_C
3605                             PIXEL10_C
3606                         }
3607                         else
3608                         {
3609                             PIXEL00_2
3610                             PIXEL01_3
3611                             PIXEL10_3
3612                         }
3613                         if (Diff(w[2], w[6]))
3614                         {
3615                             PIXEL02_C
3616                             PIXEL12_C
3617                         }
3618                         else
3619                         {
3620                             PIXEL02_4
3621                             PIXEL12_3
3622                         }
3623                         PIXEL11
3624                         if (Diff(w[8], w[4]))
3625                         {
3626                             PIXEL20_C
3627                             PIXEL21_C
3628                         }
3629                         else
3630                         {
3631                             PIXEL20_4
3632                             PIXEL21_3
3633                         }
3634                         PIXEL22_1M
3635                         break;
3636                     }
3637                 case 191:
3638                     {
3639                         if (Diff(w[4], w[2]))
3640                         {
3641                             PIXEL00_C
3642                         }
3643                         else
3644                         {
3645                             PIXEL00_2
3646                         }
3647                         PIXEL01_C
3648                         if (Diff(w[2], w[6]))
3649                         {
3650                             PIXEL02_C
3651                         }
3652                         else
3653                         {
3654                             PIXEL02_2
3655                         }
3656                         PIXEL10_C
3657                         PIXEL11
3658                         PIXEL12_C
3659                         PIXEL20_1D
3660                         PIXEL21_1
3661                         PIXEL22_1D
3662                         break;
3663                     }
3664                 case 223:
3665                     {
3666                         if (Diff(w[4], w[2]))
3667                         {
3668                             PIXEL00_C
3669                             PIXEL10_C
3670                         }
3671                         else
3672                         {
3673                             PIXEL00_4
3674                             PIXEL10_3
3675                         }
3676                         if (Diff(w[2], w[6]))
3677                         {
3678                             PIXEL01_C
3679                             PIXEL02_C
3680                             PIXEL12_C
3681                         }
3682                         else
3683                         {
3684                             PIXEL01_3
3685                             PIXEL02_2
3686                             PIXEL12_3
3687                         }
3688                         PIXEL11
3689                         PIXEL20_1M
3690                         if (Diff(w[6], w[8]))
3691                         {
3692                             PIXEL21_C
3693                             PIXEL22_C
3694                         }
3695                         else
3696                         {
3697                             PIXEL21_3
3698                             PIXEL22_4
3699                         }
3700                         break;
3701                     }
3702                 case 247:
3703                     {
3704                         PIXEL00_1L
3705                         PIXEL01_C
3706                         if (Diff(w[2], w[6]))
3707                         {
3708                             PIXEL02_C
3709                         }
3710                         else
3711                         {
3712                             PIXEL02_2
3713                         }
3714                         PIXEL10_1
3715                         PIXEL11
3716                         PIXEL12_C
3717                         PIXEL20_1L
3718                         PIXEL21_C
3719                         if (Diff(w[6], w[8]))
3720                         {
3721                             PIXEL22_C
3722                         }
3723                         else
3724                         {
3725                             PIXEL22_2
3726                         }
3727                         break;
3728                     }
3729                 case 255:
3730                     {
3731                         if (Diff(w[4], w[2]))
3732                         {
3733                             PIXEL00_C
3734                         }
3735                         else
3736                         {
3737                             PIXEL00_2
3738                         }
3739                         PIXEL01_C
3740                         if (Diff(w[2], w[6]))
3741                         {
3742                             PIXEL02_C
3743                         }
3744                         else
3745                         {
3746                             PIXEL02_2
3747                         }
3748                         PIXEL10_C
3749                         PIXEL11
3750                         PIXEL12_C
3751                         if (Diff(w[8], w[4]))
3752                         {
3753                             PIXEL20_C
3754                         }
3755                         else
3756                         {
3757                             PIXEL20_2
3758                         }
3759                         PIXEL21_C
3760                         if (Diff(w[6], w[8]))
3761                         {
3762                             PIXEL22_C
3763                         }
3764                         else
3765                         {
3766                             PIXEL22_2
3767                         }
3768                         break;
3769                     }
3770             }
3771             sp++;
3772             dp += 3;
3773         }
3774 
3775         sRowP += srb;
3776         sp = (uint32_t *) sRowP;
3777 
3778         dRowP += drb * 3;
3779         dp = (uint32_t *) dRowP;
3780     }
3781 }
3782 
hq3x_32(uint32_t * sp,uint32_t * dp,int Xres,int Yres)3783 HQX_API void HQX_CALLCONV hq3x_32( uint32_t * sp, uint32_t * dp, int Xres, int Yres )
3784 {
3785     uint32_t rowBytesL = Xres * 4;
3786     hq3x_32_rb(sp, rowBytesL, dp, rowBytesL * 3, Xres, Yres);
3787 }
3788