1;hq3x filter
2;16bpp output
3;----------------------------------------------------------
4;Copyright (C) 2003 MaxSt ( maxst@hiend3d.com )
5;
6;This program is free software; you can redistribute it and/or
7;modify it under the terms of the GNU General Public License
8;as published by the Free Software Foundation; either
9;version 2 of the License, or (at your option) any later
10;version.
11;
12;This program is distributed in the hope that it will be useful,
13;but WITHOUT ANY WARRANTY; without even the implied warranty of
14;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15;GNU General Public License for more details.
16;
17;You should have received a copy of the GNU General Public License
18;along with this program; if not, write to the Free Software
19;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
21GLOBAL hq3x_16_i386
22
23EXTERN LUT16to32
24EXTERN RGBtoYUV
25
26SECTION .bss
27linesleft resd 1
28xcounter  resd 1
29cross     resd 1
30nextline  resd 1
31prevline  resd 1
32w1        resd 1
33w2        resd 1
34w3        resd 1
35w4        resd 1
36w5        resd 1
37w6        resd 1
38w7        resd 1
39w8        resd 1
40w9        resd 1
41
42SECTION .data
43
44reg_blank    dd  0,0
45const7       dd  0x00070007,0x00000007
46threshold    dd  0x00300706,0x00000000
47zerolowbits  dd  0xF7DEF7DE
48
49SECTION .text
50
51%macro TestDiff 2
52    xor     ecx,ecx
53    mov     edx,[%1]
54    cmp     edx,[%2]
55    je      %%fin
56    mov     ecx,RGBtoYUV
57    movd    mm1,[ecx+edx*4]
58    movq    mm5,mm1
59    mov     edx,[%2]
60    movd    mm2,[ecx+edx*4]
61    psubusb mm1,mm2
62    psubusb mm2,mm5
63    por     mm1,mm2
64    psubusb mm1,[threshold]
65    movd    ecx,mm1
66%%fin:
67%endmacro
68
69%macro DiffOrNot 4
70   TestDiff %1,%2
71   test ecx,ecx
72   jz   %%same
73   %3
74   jmp %%fin
75%%same:
76   %4
77%%fin
78%endmacro
79
80%macro DiffOrNot 6
81   TestDiff %1,%2
82   test ecx,ecx
83   jz   %%same
84   %3
85   %4
86   jmp %%fin
87%%same:
88   %5
89   %6
90%%fin
91%endmacro
92
93%macro DiffOrNot 8
94   TestDiff %1,%2
95   test ecx,ecx
96   jz   %%same
97   %3
98   %4
99   %5
100   jmp %%fin
101%%same:
102   %6
103   %7
104   %8
105%%fin
106%endmacro
107
108%macro DiffOrNot 10
109   TestDiff %1,%2
110   test ecx,ecx
111   jz %%same
112   %3
113   %4
114   %5
115   %6
116   jmp %%fin
117%%same:
118   %7
119   %8
120   %9
121   %10
122%%fin
123%endmacro
124
125%macro Interp1 3
126    mov edx,%2
127    mov ecx,%3
128    cmp edx,ecx
129    je  %%fin
130    and edx,[zerolowbits]
131    and ecx,[zerolowbits]
132    add ecx,edx
133    shr ecx,1
134    add ecx,0x0821
135    and ecx,[zerolowbits]
136    add edx,ecx
137    shr edx,1
138%%fin
139    mov %1,dx
140%endmacro
141
142%macro Interp2 4
143    mov edx,%3
144    mov ecx,%4
145    cmp edx,ecx
146    je  %%fin1
147    and edx,[zerolowbits]
148    and ecx,[zerolowbits]
149    add ecx,edx
150    shr ecx,1
151    add ecx,0x0821
152%%fin1
153    mov edx,%2
154    cmp edx,ecx
155    je  %%fin2
156    and ecx,[zerolowbits]
157    and edx,[zerolowbits]
158    add edx,ecx
159    shr edx,1
160%%fin2
161    mov %1,dx
162%endmacro
163
164%macro Interp3 2
165    mov        ecx, LUT16to32
166    movd       mm4, [reg_blank]
167    movd       mm1, [ecx+eax*4]
168    mov        edx, %2
169    movd       mm2, [ecx+edx*4]
170    punpcklbw  mm1, mm4
171    punpcklbw  mm2, mm4
172    pmullw     mm1, [const7]
173    paddw      mm1, mm2
174    psrlw      mm1, 5
175    packuswb   mm1, mm4
176    movd       edx, mm1
177    shl        dl,  2
178    shr        edx, 1
179    shl        dx,  3
180    shr        edx, 5
181    mov        %1,  dx
182%endmacro
183
184%macro Interp4 3
185    mov        ecx, LUT16to32
186    movd       mm4, [reg_blank]
187    movd       mm1, [ecx+eax*4]
188    mov        edx, %2
189    movd       mm2, [ecx+edx*4]
190    mov        edx, %3
191    movd       mm3, [ecx+edx*4]
192    punpcklbw  mm1, mm4
193    punpcklbw  mm2, mm4
194    punpcklbw  mm3, mm4
195    psllw      mm1, 1
196    paddw      mm2, mm3
197    pmullw     mm2, [const7]
198    paddw      mm1, mm2
199    psrlw      mm1, 6
200    packuswb   mm1, mm4
201    movd       edx, mm1
202    shl        dl,  2
203    shr        edx, 1
204    shl        dx,  3
205    shr        edx, 5
206    mov        %1,  dx
207%endmacro
208
209%macro Interp5 3
210    mov edx,%2
211    mov ecx,%3
212    cmp edx,ecx
213    je  %%fin
214    and edx,[zerolowbits]
215    and ecx,[zerolowbits]
216    add edx,ecx
217    shr edx,1
218%%fin
219    mov %1,dx
220%endmacro
221
222%macro PIXEL00_1M 0
223    Interp1 [edi],eax,[w1]
224%endmacro
225
226%macro PIXEL00_1U 0
227    Interp1 [edi],eax,[w2]
228%endmacro
229
230%macro PIXEL00_1L 0
231    Interp1 [edi],eax,[w4]
232%endmacro
233
234%macro PIXEL00_2 0
235    Interp2 [edi],eax,[w4],[w2]
236%endmacro
237
238%macro PIXEL00_4 0
239    Interp4 [edi],[w4],[w2]
240%endmacro
241
242%macro PIXEL00_5 0
243    Interp5 [edi],[w4],[w2]
244%endmacro
245
246%macro PIXEL00_C 0
247    mov [edi],ax
248%endmacro
249
250%macro PIXEL01_1 0
251    Interp1 [edi+2],eax,[w2]
252%endmacro
253
254%macro PIXEL01_3 0
255    Interp3 [edi+2],[w2]
256%endmacro
257
258%macro PIXEL01_6 0
259    Interp1 [edi+2],[w2],eax
260%endmacro
261
262%macro PIXEL01_C 0
263    mov [edi+2],ax
264%endmacro
265
266%macro PIXEL02_1M 0
267    Interp1 [edi+4],eax,[w3]
268%endmacro
269
270%macro PIXEL02_1U 0
271    Interp1 [edi+4],eax,[w2]
272%endmacro
273
274%macro PIXEL02_1R 0
275    Interp1 [edi+4],eax,[w6]
276%endmacro
277
278%macro PIXEL02_2 0
279    Interp2 [edi+4],eax,[w2],[w6]
280%endmacro
281
282%macro PIXEL02_4 0
283    Interp4 [edi+4],[w2],[w6]
284%endmacro
285
286%macro PIXEL02_5 0
287    Interp5 [edi+4],[w2],[w6]
288%endmacro
289
290%macro PIXEL02_C 0
291    mov [edi+4],ax
292%endmacro
293
294%macro PIXEL10_1 0
295    Interp1 [edi+ebx],eax,[w4]
296%endmacro
297
298%macro PIXEL10_3 0
299    Interp3 [edi+ebx],[w4]
300%endmacro
301
302%macro PIXEL10_6 0
303    Interp1 [edi+ebx],[w4],eax
304%endmacro
305
306%macro PIXEL10_C 0
307    mov [edi+ebx],ax
308%endmacro
309
310%macro PIXEL11 0
311    mov [edi+ebx+2],ax
312%endmacro
313
314%macro PIXEL12_1 0
315    Interp1 [edi+ebx+4],eax,[w6]
316%endmacro
317
318%macro PIXEL12_3 0
319    Interp3 [edi+ebx+4],[w6]
320%endmacro
321
322%macro PIXEL12_6 0
323    Interp1 [edi+ebx+4],[w6],eax
324%endmacro
325
326%macro PIXEL12_C 0
327    mov [edi+ebx+4],ax
328%endmacro
329
330%macro PIXEL20_1M 0
331    Interp1 [edi+ebx*2],eax,[w7]
332%endmacro
333
334%macro PIXEL20_1D 0
335    Interp1 [edi+ebx*2],eax,[w8]
336%endmacro
337
338%macro PIXEL20_1L 0
339    Interp1 [edi+ebx*2],eax,[w4]
340%endmacro
341
342%macro PIXEL20_2 0
343    Interp2 [edi+ebx*2],eax,[w8],[w4]
344%endmacro
345
346%macro PIXEL20_4 0
347    Interp4 [edi+ebx*2],[w8],[w4]
348%endmacro
349
350%macro PIXEL20_5 0
351    Interp5 [edi+ebx*2],[w8],[w4]
352%endmacro
353
354%macro PIXEL20_C 0
355    mov [edi+ebx*2],ax
356%endmacro
357
358%macro PIXEL21_1 0
359    Interp1 [edi+ebx*2+2],eax,[w8]
360%endmacro
361
362%macro PIXEL21_3 0
363    Interp3 [edi+ebx*2+2],[w8]
364%endmacro
365
366%macro PIXEL21_6 0
367    Interp1 [edi+ebx*2+2],[w8],eax
368%endmacro
369
370%macro PIXEL21_C 0
371    mov [edi+ebx*2+2],ax
372%endmacro
373
374%macro PIXEL22_1M 0
375    Interp1 [edi+ebx*2+4],eax,[w9]
376%endmacro
377
378%macro PIXEL22_1D 0
379    Interp1 [edi+ebx*2+4],eax,[w8]
380%endmacro
381
382%macro PIXEL22_1R 0
383    Interp1 [edi+ebx*2+4],eax,[w6]
384%endmacro
385
386%macro PIXEL22_2 0
387    Interp2 [edi+ebx*2+4],eax,[w6],[w8]
388%endmacro
389
390%macro PIXEL22_4 0
391    Interp4 [edi+ebx*2+4],[w6],[w8]
392%endmacro
393
394%macro PIXEL22_5 0
395    Interp5 [edi+ebx*2+4],[w6],[w8]
396%endmacro
397
398%macro PIXEL22_C 0
399    mov [edi+ebx*2+4],ax
400%endmacro
401
402inbuffer     equ 8
403outbuffer    equ 12
404Xres         equ 16
405Yres         equ 20
406pitch        equ 24
407
408hq3x_16_i386:
409    push ebp
410    mov ebp,esp
411    pushad
412
413    mov     esi,[ebp+inbuffer]
414    mov     edi,[ebp+outbuffer]
415    mov     edx,[ebp+Yres]
416    mov     [linesleft],edx
417    mov     ebx,[ebp+Xres]
418    shl     ebx,1
419    mov     dword[prevline],0
420    mov     dword[nextline],ebx
421.loopy
422    mov     ecx,[ebp+Xres]
423    sub     ecx,2                 ; x={Xres-2, Xres-1} are special cases.
424    mov     dword[xcounter],ecx
425    ; x=0 - special case
426    mov     ebx,[prevline]
427    movq    mm5,[esi+ebx]
428    movq    mm6,[esi]
429    mov     ebx,[nextline]
430    movq    mm7,[esi+ebx]
431    movd    eax,mm5
432    movzx   edx,ax
433    mov     [w1],edx
434    mov     [w2],edx
435    shr     eax,16
436    mov     [w3],eax
437    movd    eax,mm6
438    movzx   edx,ax
439    mov     [w4],edx
440    mov     [w5],edx
441    shr     eax,16
442    mov     [w6],eax
443    movd    eax,mm7
444    movzx   edx,ax
445    mov     [w7],edx
446    mov     [w8],edx
447    shr     eax,16
448    mov     [w9],eax
449    jmp     .flags
450.loopx
451    mov     ebx,[prevline]
452    movq    mm5,[esi+ebx-2]
453    movq    mm6,[esi-2]
454    mov     ebx,[nextline]
455    movq    mm7,[esi+ebx-2]
456    movd    eax,mm5
457    movzx   edx,ax
458    mov     [w1],edx
459    shr     eax,16
460    mov     [w2],eax
461    psrlq   mm5,32
462    movd    eax,mm5
463    movzx   edx,ax
464    mov     [w3],edx
465    movd    eax,mm6
466    movzx   edx,ax
467    mov     [w4],edx
468    shr     eax,16
469    mov     [w5],eax
470    psrlq   mm6,32
471    movd    eax,mm6
472    movzx   edx,ax
473    mov     [w6],edx
474    movd    eax,mm7
475    movzx   edx,ax
476    mov     [w7],edx
477    shr     eax,16
478    mov     [w8],eax
479    psrlq   mm7,32
480    movd    eax,mm7
481    movzx   edx,ax
482    mov     [w9],edx
483.flags
484    mov     ebx,RGBtoYUV
485    mov     eax,[w5]
486    xor     ecx,ecx
487    movd    mm5,[ebx+eax*4]
488    mov     dword[cross],0
489
490    mov     edx,[w2]
491    cmp     eax,edx
492    je      .noflag2
493    or      dword[cross],1
494    movq    mm1,mm5
495    movd    mm2,[ebx+edx*4]
496    psubusb mm1,mm2
497    psubusb mm2,mm5
498    por     mm1,mm2
499    psubusb mm1,[threshold]
500    movd    edx,mm1
501    test    edx,edx
502    jz      .noflag2
503    or      ecx,2
504.noflag2
505    mov     edx,[w4]
506    cmp     eax,edx
507    je      .noflag4
508    or      dword[cross],2
509    movq    mm1,mm5
510    movd    mm2,[ebx+edx*4]
511    psubusb mm1,mm2
512    psubusb mm2,mm5
513    por     mm1,mm2
514    psubusb mm1,[threshold]
515    movd    edx,mm1
516    test    edx,edx
517    jz      .noflag4
518    or      ecx,8
519.noflag4
520    mov     edx,[w6]
521    cmp     eax,edx
522    je      .noflag6
523    or      dword[cross],4
524    movq    mm1,mm5
525    movd    mm2,[ebx+edx*4]
526    psubusb mm1,mm2
527    psubusb mm2,mm5
528    por     mm1,mm2
529    psubusb mm1,[threshold]
530    movd    edx,mm1
531    test    edx,edx
532    jz      .noflag6
533    or      ecx,16
534.noflag6
535    mov     edx,[w8]
536    cmp     eax,edx
537    je      .noflag8
538    or      dword[cross],8
539    movq    mm1,mm5
540    movd    mm2,[ebx+edx*4]
541    psubusb mm1,mm2
542    psubusb mm2,mm5
543    por     mm1,mm2
544    psubusb mm1,[threshold]
545    movd    edx,mm1
546    test    edx,edx
547    jz      .noflag8
548    or      ecx,64
549.noflag8
550    test    ecx,ecx
551    jnz     .testflag1
552    mov     ecx,[cross]
553    mov     ebx,[ebp+pitch]
554    jmp     [FuncTable2+ecx*4]
555.testflag1
556    mov     edx,[w1]
557    cmp     eax,edx
558    je      .noflag1
559    movq    mm1,mm5
560    movd    mm2,[ebx+edx*4]
561    psubusb mm1,mm2
562    psubusb mm2,mm5
563    por     mm1,mm2
564    psubusb mm1,[threshold]
565    movd    edx,mm1
566    test    edx,edx
567    jz      .noflag1
568    or      ecx,1
569.noflag1
570    mov     edx,[w3]
571    cmp     eax,edx
572    je      .noflag3
573    movq    mm1,mm5
574    movd    mm2,[ebx+edx*4]
575    psubusb mm1,mm2
576    psubusb mm2,mm5
577    por     mm1,mm2
578    psubusb mm1,[threshold]
579    movd    edx,mm1
580    test    edx,edx
581    jz      .noflag3
582    or      ecx,4
583.noflag3
584    mov     edx,[w7]
585    cmp     eax,edx
586    je      .noflag7
587    movq    mm1,mm5
588    movd    mm2,[ebx+edx*4]
589    psubusb mm1,mm2
590    psubusb mm2,mm5
591    por     mm1,mm2
592    psubusb mm1,[threshold]
593    movd    edx,mm1
594    test    edx,edx
595    jz      .noflag7
596    or      ecx,32
597.noflag7
598    mov     edx,[w9]
599    cmp     eax,edx
600    je      .noflag9
601    movq    mm1,mm5
602    movd    mm2,[ebx+edx*4]
603    psubusb mm1,mm2
604    psubusb mm2,mm5
605    por     mm1,mm2
606    psubusb mm1,[threshold]
607    movd    edx,mm1
608    test    edx,edx
609    jz      .noflag9
610    or      ecx,128
611.noflag9
612    mov  ebx,[ebp+pitch]
613    jmp  [FuncTable+ecx*4]
614
615..@flag0
616..@flag1
617..@flag4
618..@flag32
619..@flag128
620..@flag5
621..@flag132
622..@flag160
623..@flag33
624..@flag129
625..@flag36
626..@flag133
627..@flag164
628..@flag161
629..@flag37
630..@flag165
631    PIXEL00_2
632    PIXEL01_1
633    PIXEL02_2
634    PIXEL10_1
635    PIXEL11
636    PIXEL12_1
637    PIXEL20_2
638    PIXEL21_1
639    PIXEL22_2
640    jmp .loopx_end
641..@flag2
642..@flag34
643..@flag130
644..@flag162
645    PIXEL00_1M
646    PIXEL01_C
647    PIXEL02_1M
648    PIXEL10_1
649    PIXEL11
650    PIXEL12_1
651    PIXEL20_2
652    PIXEL21_1
653    PIXEL22_2
654    jmp .loopx_end
655..@flag16
656..@flag17
657..@flag48
658..@flag49
659    PIXEL00_2
660    PIXEL01_1
661    PIXEL02_1M
662    PIXEL10_1
663    PIXEL11
664    PIXEL12_C
665    PIXEL20_2
666    PIXEL21_1
667    PIXEL22_1M
668    jmp .loopx_end
669..@flag64
670..@flag65
671..@flag68
672..@flag69
673    PIXEL00_2
674    PIXEL01_1
675    PIXEL02_2
676    PIXEL10_1
677    PIXEL11
678    PIXEL12_1
679    PIXEL20_1M
680    PIXEL21_C
681    PIXEL22_1M
682    jmp .loopx_end
683..@flag8
684..@flag12
685..@flag136
686..@flag140
687    PIXEL00_1M
688    PIXEL01_1
689    PIXEL02_2
690    PIXEL10_C
691    PIXEL11
692    PIXEL12_1
693    PIXEL20_1M
694    PIXEL21_1
695    PIXEL22_2
696    jmp .loopx_end
697..@flag3
698..@flag35
699..@flag131
700..@flag163
701    PIXEL00_1L
702    PIXEL01_C
703    PIXEL02_1M
704    PIXEL10_1
705    PIXEL11
706    PIXEL12_1
707    PIXEL20_2
708    PIXEL21_1
709    PIXEL22_2
710    jmp .loopx_end
711..@flag6
712..@flag38
713..@flag134
714..@flag166
715    PIXEL00_1M
716    PIXEL01_C
717    PIXEL02_1R
718    PIXEL10_1
719    PIXEL11
720    PIXEL12_1
721    PIXEL20_2
722    PIXEL21_1
723    PIXEL22_2
724    jmp .loopx_end
725..@flag20
726..@flag21
727..@flag52
728..@flag53
729    PIXEL00_2
730    PIXEL01_1
731    PIXEL02_1U
732    PIXEL10_1
733    PIXEL11
734    PIXEL12_C
735    PIXEL20_2
736    PIXEL21_1
737    PIXEL22_1M
738    jmp .loopx_end
739..@flag144
740..@flag145
741..@flag176
742..@flag177
743    PIXEL00_2
744    PIXEL01_1
745    PIXEL02_1M
746    PIXEL10_1
747    PIXEL11
748    PIXEL12_C
749    PIXEL20_2
750    PIXEL21_1
751    PIXEL22_1D
752    jmp .loopx_end
753..@flag192
754..@flag193
755..@flag196
756..@flag197
757    PIXEL00_2
758    PIXEL01_1
759    PIXEL02_2
760    PIXEL10_1
761    PIXEL11
762    PIXEL12_1
763    PIXEL20_1M
764    PIXEL21_C
765    PIXEL22_1R
766    jmp .loopx_end
767..@flag96
768..@flag97
769..@flag100
770..@flag101
771    PIXEL00_2
772    PIXEL01_1
773    PIXEL02_2
774    PIXEL10_1
775    PIXEL11
776    PIXEL12_1
777    PIXEL20_1L
778    PIXEL21_C
779    PIXEL22_1M
780    jmp .loopx_end
781..@flag40
782..@flag44
783..@flag168
784..@flag172
785    PIXEL00_1M
786    PIXEL01_1
787    PIXEL02_2
788    PIXEL10_C
789    PIXEL11
790    PIXEL12_1
791    PIXEL20_1D
792    PIXEL21_1
793    PIXEL22_2
794    jmp .loopx_end
795..@flag9
796..@flag13
797..@flag137
798..@flag141
799    PIXEL00_1U
800    PIXEL01_1
801    PIXEL02_2
802    PIXEL10_C
803    PIXEL11
804    PIXEL12_1
805    PIXEL20_1M
806    PIXEL21_1
807    PIXEL22_2
808    jmp .loopx_end
809..@flag18
810..@flag50
811    PIXEL00_1M
812    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
813    PIXEL10_1
814    PIXEL11
815    PIXEL20_2
816    PIXEL21_1
817    PIXEL22_1M
818    jmp .loopx_end
819..@flag80
820..@flag81
821    PIXEL00_2
822    PIXEL01_1
823    PIXEL02_1M
824    PIXEL10_1
825    PIXEL11
826    PIXEL20_1M
827    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL12_3,PIXEL21_3,PIXEL22_4
828    jmp .loopx_end
829..@flag72
830..@flag76
831    PIXEL00_1M
832    PIXEL01_1
833    PIXEL02_2
834    PIXEL11
835    PIXEL12_1
836    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
837    PIXEL22_1M
838    jmp .loopx_end
839..@flag10
840..@flag138
841    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
842    PIXEL02_1M
843    PIXEL11
844    PIXEL12_1
845    PIXEL20_1M
846    PIXEL21_1
847    PIXEL22_2
848    jmp .loopx_end
849..@flag66
850    PIXEL00_1M
851    PIXEL01_C
852    PIXEL02_1M
853    PIXEL10_1
854    PIXEL11
855    PIXEL12_1
856    PIXEL20_1M
857    PIXEL21_C
858    PIXEL22_1M
859    jmp .loopx_end
860..@flag24
861    PIXEL00_1M
862    PIXEL01_1
863    PIXEL02_1M
864    PIXEL10_C
865    PIXEL11
866    PIXEL12_C
867    PIXEL20_1M
868    PIXEL21_1
869    PIXEL22_1M
870    jmp .loopx_end
871..@flag7
872..@flag39
873..@flag135
874    PIXEL00_1L
875    PIXEL01_C
876    PIXEL02_1R
877    PIXEL10_1
878    PIXEL11
879    PIXEL12_1
880    PIXEL20_2
881    PIXEL21_1
882    PIXEL22_2
883    jmp .loopx_end
884..@flag148
885..@flag149
886..@flag180
887    PIXEL00_2
888    PIXEL01_1
889    PIXEL02_1U
890    PIXEL10_1
891    PIXEL11
892    PIXEL12_C
893    PIXEL20_2
894    PIXEL21_1
895    PIXEL22_1D
896    jmp .loopx_end
897..@flag224
898..@flag228
899..@flag225
900    PIXEL00_2
901    PIXEL01_1
902    PIXEL02_2
903    PIXEL10_1
904    PIXEL11
905    PIXEL12_1
906    PIXEL20_1L
907    PIXEL21_C
908    PIXEL22_1R
909    jmp .loopx_end
910..@flag41
911..@flag169
912..@flag45
913    PIXEL00_1U
914    PIXEL01_1
915    PIXEL02_2
916    PIXEL10_C
917    PIXEL11
918    PIXEL12_1
919    PIXEL20_1D
920    PIXEL21_1
921    PIXEL22_2
922    jmp .loopx_end
923..@flag22
924..@flag54
925    PIXEL00_1M
926    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
927    PIXEL10_1
928    PIXEL11
929    PIXEL20_2
930    PIXEL21_1
931    PIXEL22_1M
932    jmp .loopx_end
933..@flag208
934..@flag209
935    PIXEL00_2
936    PIXEL01_1
937    PIXEL02_1M
938    PIXEL10_1
939    PIXEL11
940    PIXEL20_1M
941    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
942    jmp .loopx_end
943..@flag104
944..@flag108
945    PIXEL00_1M
946    PIXEL01_1
947    PIXEL02_2
948    PIXEL11
949    PIXEL12_1
950    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
951    PIXEL22_1M
952    jmp .loopx_end
953..@flag11
954..@flag139
955    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
956    PIXEL02_1M
957    PIXEL11
958    PIXEL12_1
959    PIXEL20_1M
960    PIXEL21_1
961    PIXEL22_2
962    jmp .loopx_end
963..@flag19
964..@flag51
965    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
966    PIXEL10_1
967    PIXEL11
968    PIXEL20_2
969    PIXEL21_1
970    PIXEL22_1M
971    jmp .loopx_end
972..@flag146
973..@flag178
974    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
975    PIXEL00_1M
976    PIXEL10_1
977    PIXEL11
978    PIXEL20_2
979    PIXEL21_1
980    jmp .loopx_end
981..@flag84
982..@flag85
983    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
984    PIXEL00_2
985    PIXEL01_1
986    PIXEL10_1
987    PIXEL11
988    PIXEL20_1M
989    jmp .loopx_end
990..@flag112
991..@flag113
992    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_1M,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
993    PIXEL00_2
994    PIXEL01_1
995    PIXEL02_1M
996    PIXEL10_1
997    PIXEL11
998    jmp .loopx_end
999..@flag200
1000..@flag204
1001    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
1002    PIXEL00_1M
1003    PIXEL01_1
1004    PIXEL02_2
1005    PIXEL11
1006    PIXEL12_1
1007    jmp .loopx_end
1008..@flag73
1009..@flag77
1010    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
1011    PIXEL01_1
1012    PIXEL02_2
1013    PIXEL11
1014    PIXEL12_1
1015    PIXEL22_1M
1016    jmp .loopx_end
1017..@flag42
1018..@flag170
1019    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
1020    PIXEL02_1M
1021    PIXEL11
1022    PIXEL12_1
1023    PIXEL21_1
1024    PIXEL22_2
1025    jmp .loopx_end
1026..@flag14
1027..@flag142
1028    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
1029    PIXEL11
1030    PIXEL12_1
1031    PIXEL20_1M
1032    PIXEL21_1
1033    PIXEL22_2
1034    jmp .loopx_end
1035..@flag67
1036    PIXEL00_1L
1037    PIXEL01_C
1038    PIXEL02_1M
1039    PIXEL10_1
1040    PIXEL11
1041    PIXEL12_1
1042    PIXEL20_1M
1043    PIXEL21_C
1044    PIXEL22_1M
1045    jmp .loopx_end
1046..@flag70
1047    PIXEL00_1M
1048    PIXEL01_C
1049    PIXEL02_1R
1050    PIXEL10_1
1051    PIXEL11
1052    PIXEL12_1
1053    PIXEL20_1M
1054    PIXEL21_C
1055    PIXEL22_1M
1056    jmp .loopx_end
1057..@flag28
1058    PIXEL00_1M
1059    PIXEL01_1
1060    PIXEL02_1U
1061    PIXEL10_C
1062    PIXEL11
1063    PIXEL12_C
1064    PIXEL20_1M
1065    PIXEL21_1
1066    PIXEL22_1M
1067    jmp .loopx_end
1068..@flag152
1069    PIXEL00_1M
1070    PIXEL01_1
1071    PIXEL02_1M
1072    PIXEL10_C
1073    PIXEL11
1074    PIXEL12_C
1075    PIXEL20_1M
1076    PIXEL21_1
1077    PIXEL22_1D
1078    jmp .loopx_end
1079..@flag194
1080    PIXEL00_1M
1081    PIXEL01_C
1082    PIXEL02_1M
1083    PIXEL10_1
1084    PIXEL11
1085    PIXEL12_1
1086    PIXEL20_1M
1087    PIXEL21_C
1088    PIXEL22_1R
1089    jmp .loopx_end
1090..@flag98
1091    PIXEL00_1M
1092    PIXEL01_C
1093    PIXEL02_1M
1094    PIXEL10_1
1095    PIXEL11
1096    PIXEL12_1
1097    PIXEL20_1L
1098    PIXEL21_C
1099    PIXEL22_1M
1100    jmp .loopx_end
1101..@flag56
1102    PIXEL00_1M
1103    PIXEL01_1
1104    PIXEL02_1M
1105    PIXEL10_C
1106    PIXEL11
1107    PIXEL12_C
1108    PIXEL20_1D
1109    PIXEL21_1
1110    PIXEL22_1M
1111    jmp .loopx_end
1112..@flag25
1113    PIXEL00_1U
1114    PIXEL01_1
1115    PIXEL02_1M
1116    PIXEL10_C
1117    PIXEL11
1118    PIXEL12_C
1119    PIXEL20_1M
1120    PIXEL21_1
1121    PIXEL22_1M
1122    jmp .loopx_end
1123..@flag26
1124..@flag31
1125    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
1126    PIXEL01_C
1127    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
1128    PIXEL11
1129    PIXEL20_1M
1130    PIXEL21_1
1131    PIXEL22_1M
1132    jmp .loopx_end
1133..@flag82
1134..@flag214
1135    PIXEL00_1M
1136    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
1137    PIXEL10_1
1138    PIXEL11
1139    PIXEL12_C
1140    PIXEL20_1M
1141    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
1142    jmp .loopx_end
1143..@flag88
1144..@flag248
1145    PIXEL00_1M
1146    PIXEL01_1
1147    PIXEL02_1M
1148    PIXEL11
1149    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
1150    PIXEL21_C
1151    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
1152    jmp .loopx_end
1153..@flag74
1154..@flag107
1155    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
1156    PIXEL02_1M
1157    PIXEL10_C
1158    PIXEL11
1159    PIXEL12_1
1160    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
1161    PIXEL22_1M
1162    jmp .loopx_end
1163..@flag27
1164    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1165    PIXEL02_1M
1166    PIXEL11
1167    PIXEL12_C
1168    PIXEL20_1M
1169    PIXEL21_1
1170    PIXEL22_1M
1171    jmp .loopx_end
1172..@flag86
1173    PIXEL00_1M
1174    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1175    PIXEL10_1
1176    PIXEL11
1177    PIXEL20_1M
1178    PIXEL21_C
1179    PIXEL22_1M
1180    jmp .loopx_end
1181..@flag216
1182    PIXEL00_1M
1183    PIXEL01_1
1184    PIXEL02_1M
1185    PIXEL10_C
1186    PIXEL11
1187    PIXEL20_1M
1188    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1189    jmp .loopx_end
1190..@flag106
1191    PIXEL00_1M
1192    PIXEL01_C
1193    PIXEL02_1M
1194    PIXEL11
1195    PIXEL12_1
1196    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1197    PIXEL22_1M
1198    jmp .loopx_end
1199..@flag30
1200    PIXEL00_1M
1201    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1202    PIXEL10_C
1203    PIXEL11
1204    PIXEL20_1M
1205    PIXEL21_1
1206    PIXEL22_1M
1207    jmp .loopx_end
1208..@flag210
1209    PIXEL00_1M
1210    PIXEL01_C
1211    PIXEL02_1M
1212    PIXEL10_1
1213    PIXEL11
1214    PIXEL20_1M
1215    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1216    jmp .loopx_end
1217..@flag120
1218    PIXEL00_1M
1219    PIXEL01_1
1220    PIXEL02_1M
1221    PIXEL11
1222    PIXEL12_C
1223    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1224    PIXEL22_1M
1225    jmp .loopx_end
1226..@flag75
1227    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1228    PIXEL02_1M
1229    PIXEL11
1230    PIXEL12_1
1231    PIXEL20_1M
1232    PIXEL21_C
1233    PIXEL22_1M
1234    jmp .loopx_end
1235..@flag29
1236    PIXEL00_1U
1237    PIXEL01_1
1238    PIXEL02_1U
1239    PIXEL10_C
1240    PIXEL11
1241    PIXEL12_C
1242    PIXEL20_1M
1243    PIXEL21_1
1244    PIXEL22_1M
1245    jmp .loopx_end
1246..@flag198
1247    PIXEL00_1M
1248    PIXEL01_C
1249    PIXEL02_1R
1250    PIXEL10_1
1251    PIXEL11
1252    PIXEL12_1
1253    PIXEL20_1M
1254    PIXEL21_C
1255    PIXEL22_1R
1256    jmp .loopx_end
1257..@flag184
1258    PIXEL00_1M
1259    PIXEL01_1
1260    PIXEL02_1M
1261    PIXEL10_C
1262    PIXEL11
1263    PIXEL12_C
1264    PIXEL20_1D
1265    PIXEL21_1
1266    PIXEL22_1D
1267    jmp .loopx_end
1268..@flag99
1269    PIXEL00_1L
1270    PIXEL01_C
1271    PIXEL02_1M
1272    PIXEL10_1
1273    PIXEL11
1274    PIXEL12_1
1275    PIXEL20_1L
1276    PIXEL21_C
1277    PIXEL22_1M
1278    jmp .loopx_end
1279..@flag57
1280    PIXEL00_1U
1281    PIXEL01_1
1282    PIXEL02_1M
1283    PIXEL10_C
1284    PIXEL11
1285    PIXEL12_C
1286    PIXEL20_1D
1287    PIXEL21_1
1288    PIXEL22_1M
1289    jmp .loopx_end
1290..@flag71
1291    PIXEL00_1L
1292    PIXEL01_C
1293    PIXEL02_1R
1294    PIXEL10_1
1295    PIXEL11
1296    PIXEL12_1
1297    PIXEL20_1M
1298    PIXEL21_C
1299    PIXEL22_1M
1300    jmp .loopx_end
1301..@flag156
1302    PIXEL00_1M
1303    PIXEL01_1
1304    PIXEL02_1U
1305    PIXEL10_C
1306    PIXEL11
1307    PIXEL12_C
1308    PIXEL20_1M
1309    PIXEL21_1
1310    PIXEL22_1D
1311    jmp .loopx_end
1312..@flag226
1313    PIXEL00_1M
1314    PIXEL01_C
1315    PIXEL02_1M
1316    PIXEL10_1
1317    PIXEL11
1318    PIXEL12_1
1319    PIXEL20_1L
1320    PIXEL21_C
1321    PIXEL22_1R
1322    jmp .loopx_end
1323..@flag60
1324    PIXEL00_1M
1325    PIXEL01_1
1326    PIXEL02_1U
1327    PIXEL10_C
1328    PIXEL11
1329    PIXEL12_C
1330    PIXEL20_1D
1331    PIXEL21_1
1332    PIXEL22_1M
1333    jmp .loopx_end
1334..@flag195
1335    PIXEL00_1L
1336    PIXEL01_C
1337    PIXEL02_1M
1338    PIXEL10_1
1339    PIXEL11
1340    PIXEL12_1
1341    PIXEL20_1M
1342    PIXEL21_C
1343    PIXEL22_1R
1344    jmp .loopx_end
1345..@flag102
1346    PIXEL00_1M
1347    PIXEL01_C
1348    PIXEL02_1R
1349    PIXEL10_1
1350    PIXEL11
1351    PIXEL12_1
1352    PIXEL20_1L
1353    PIXEL21_C
1354    PIXEL22_1M
1355    jmp .loopx_end
1356..@flag153
1357    PIXEL00_1U
1358    PIXEL01_1
1359    PIXEL02_1M
1360    PIXEL10_C
1361    PIXEL11
1362    PIXEL12_C
1363    PIXEL20_1M
1364    PIXEL21_1
1365    PIXEL22_1D
1366    jmp .loopx_end
1367..@flag58
1368    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1369    PIXEL01_C
1370    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1371    PIXEL10_C
1372    PIXEL11
1373    PIXEL12_C
1374    PIXEL20_1D
1375    PIXEL21_1
1376    PIXEL22_1M
1377    jmp .loopx_end
1378..@flag83
1379    PIXEL00_1L
1380    PIXEL01_C
1381    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1382    PIXEL10_1
1383    PIXEL11
1384    PIXEL12_C
1385    PIXEL20_1M
1386    PIXEL21_C
1387    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1388    jmp .loopx_end
1389..@flag92
1390    PIXEL00_1M
1391    PIXEL01_1
1392    PIXEL02_1U
1393    PIXEL10_C
1394    PIXEL11
1395    PIXEL12_C
1396    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1397    PIXEL21_C
1398    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1399    jmp .loopx_end
1400..@flag202
1401    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1402    PIXEL01_C
1403    PIXEL02_1M
1404    PIXEL10_C
1405    PIXEL11
1406    PIXEL12_1
1407    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1408    PIXEL21_C
1409    PIXEL22_1R
1410    jmp .loopx_end
1411..@flag78
1412    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1413    PIXEL01_C
1414    PIXEL02_1R
1415    PIXEL10_C
1416    PIXEL11
1417    PIXEL12_1
1418    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1419    PIXEL21_C
1420    PIXEL22_1M
1421    jmp .loopx_end
1422..@flag154
1423    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1424    PIXEL01_C
1425    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1426    PIXEL10_C
1427    PIXEL11
1428    PIXEL12_C
1429    PIXEL20_1M
1430    PIXEL21_1
1431    PIXEL22_1D
1432    jmp .loopx_end
1433..@flag114
1434    PIXEL00_1M
1435    PIXEL01_C
1436    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1437    PIXEL10_1
1438    PIXEL11
1439    PIXEL12_C
1440    PIXEL20_1L
1441    PIXEL21_C
1442    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1443    jmp .loopx_end
1444..@flag89
1445    PIXEL00_1U
1446    PIXEL01_1
1447    PIXEL02_1M
1448    PIXEL10_C
1449    PIXEL11
1450    PIXEL12_C
1451    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1452    PIXEL21_C
1453    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1454    jmp .loopx_end
1455..@flag90
1456    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1457    PIXEL01_C
1458    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1459    PIXEL10_C
1460    PIXEL11
1461    PIXEL12_C
1462    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1463    PIXEL21_C
1464    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1465    jmp .loopx_end
1466..@flag55
1467..@flag23
1468    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
1469    PIXEL10_1
1470    PIXEL11
1471    PIXEL20_2
1472    PIXEL21_1
1473    PIXEL22_1M
1474    jmp .loopx_end
1475..@flag182
1476..@flag150
1477    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
1478    PIXEL00_1M
1479    PIXEL10_1
1480    PIXEL11
1481    PIXEL20_2
1482    PIXEL21_1
1483    jmp .loopx_end
1484..@flag213
1485..@flag212
1486    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
1487    PIXEL00_2
1488    PIXEL01_1
1489    PIXEL10_1
1490    PIXEL11
1491    PIXEL20_1M
1492    jmp .loopx_end
1493..@flag241
1494..@flag240
1495    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
1496    PIXEL00_2
1497    PIXEL01_1
1498    PIXEL02_1M
1499    PIXEL10_1
1500    PIXEL11
1501    jmp .loopx_end
1502..@flag236
1503..@flag232
1504    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
1505    PIXEL00_1M
1506    PIXEL01_1
1507    PIXEL02_2
1508    PIXEL11
1509    PIXEL12_1
1510    jmp .loopx_end
1511..@flag109
1512..@flag105
1513    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
1514    PIXEL01_1
1515    PIXEL02_2
1516    PIXEL11
1517    PIXEL12_1
1518    PIXEL22_1M
1519    jmp .loopx_end
1520..@flag171
1521..@flag43
1522    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
1523    PIXEL02_1M
1524    PIXEL11
1525    PIXEL12_1
1526    PIXEL21_1
1527    PIXEL22_2
1528    jmp .loopx_end
1529..@flag143
1530..@flag15
1531    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
1532    PIXEL11
1533    PIXEL12_1
1534    PIXEL20_1M
1535    PIXEL21_1
1536    PIXEL22_2
1537    jmp .loopx_end
1538..@flag124
1539    PIXEL00_1M
1540    PIXEL01_1
1541    PIXEL02_1U
1542    PIXEL11
1543    PIXEL12_C
1544    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1545    PIXEL22_1M
1546    jmp .loopx_end
1547..@flag203
1548    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1549    PIXEL02_1M
1550    PIXEL11
1551    PIXEL12_1
1552    PIXEL20_1M
1553    PIXEL21_C
1554    PIXEL22_1R
1555    jmp .loopx_end
1556..@flag62
1557    PIXEL00_1M
1558    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1559    PIXEL10_C
1560    PIXEL11
1561    PIXEL20_1D
1562    PIXEL21_1
1563    PIXEL22_1M
1564    jmp .loopx_end
1565..@flag211
1566    PIXEL00_1L
1567    PIXEL01_C
1568    PIXEL02_1M
1569    PIXEL10_1
1570    PIXEL11
1571    PIXEL20_1M
1572    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1573    jmp .loopx_end
1574..@flag118
1575    PIXEL00_1M
1576    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1577    PIXEL10_1
1578    PIXEL11
1579    PIXEL20_1L
1580    PIXEL21_C
1581    PIXEL22_1M
1582    jmp .loopx_end
1583..@flag217
1584    PIXEL00_1U
1585    PIXEL01_1
1586    PIXEL02_1M
1587    PIXEL10_C
1588    PIXEL11
1589    PIXEL20_1M
1590    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1591    jmp .loopx_end
1592..@flag110
1593    PIXEL00_1M
1594    PIXEL01_C
1595    PIXEL02_1R
1596    PIXEL11
1597    PIXEL12_1
1598    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1599    PIXEL22_1M
1600    jmp .loopx_end
1601..@flag155
1602    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1603    PIXEL02_1M
1604    PIXEL11
1605    PIXEL12_C
1606    PIXEL20_1M
1607    PIXEL21_1
1608    PIXEL22_1D
1609    jmp .loopx_end
1610..@flag188
1611    PIXEL00_1M
1612    PIXEL01_1
1613    PIXEL02_1U
1614    PIXEL10_C
1615    PIXEL11
1616    PIXEL12_C
1617    PIXEL20_1D
1618    PIXEL21_1
1619    PIXEL22_1D
1620    jmp .loopx_end
1621..@flag185
1622    PIXEL00_1U
1623    PIXEL01_1
1624    PIXEL02_1M
1625    PIXEL10_C
1626    PIXEL11
1627    PIXEL12_C
1628    PIXEL20_1D
1629    PIXEL21_1
1630    PIXEL22_1D
1631    jmp .loopx_end
1632..@flag61
1633    PIXEL00_1U
1634    PIXEL01_1
1635    PIXEL02_1U
1636    PIXEL10_C
1637    PIXEL11
1638    PIXEL12_C
1639    PIXEL20_1D
1640    PIXEL21_1
1641    PIXEL22_1M
1642    jmp .loopx_end
1643..@flag157
1644    PIXEL00_1U
1645    PIXEL01_1
1646    PIXEL02_1U
1647    PIXEL10_C
1648    PIXEL11
1649    PIXEL12_C
1650    PIXEL20_1M
1651    PIXEL21_1
1652    PIXEL22_1D
1653    jmp .loopx_end
1654..@flag103
1655    PIXEL00_1L
1656    PIXEL01_C
1657    PIXEL02_1R
1658    PIXEL10_1
1659    PIXEL11
1660    PIXEL12_1
1661    PIXEL20_1L
1662    PIXEL21_C
1663    PIXEL22_1M
1664    jmp .loopx_end
1665..@flag227
1666    PIXEL00_1L
1667    PIXEL01_C
1668    PIXEL02_1M
1669    PIXEL10_1
1670    PIXEL11
1671    PIXEL12_1
1672    PIXEL20_1L
1673    PIXEL21_C
1674    PIXEL22_1R
1675    jmp .loopx_end
1676..@flag230
1677    PIXEL00_1M
1678    PIXEL01_C
1679    PIXEL02_1R
1680    PIXEL10_1
1681    PIXEL11
1682    PIXEL12_1
1683    PIXEL20_1L
1684    PIXEL21_C
1685    PIXEL22_1R
1686    jmp .loopx_end
1687..@flag199
1688    PIXEL00_1L
1689    PIXEL01_C
1690    PIXEL02_1R
1691    PIXEL10_1
1692    PIXEL11
1693    PIXEL12_1
1694    PIXEL20_1M
1695    PIXEL21_C
1696    PIXEL22_1R
1697    jmp .loopx_end
1698..@flag220
1699    PIXEL00_1M
1700    PIXEL01_1
1701    PIXEL02_1U
1702    PIXEL10_C
1703    PIXEL11
1704    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1705    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1706    jmp .loopx_end
1707..@flag158
1708    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1709    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1710    PIXEL10_C
1711    PIXEL11
1712    PIXEL20_1M
1713    PIXEL21_1
1714    PIXEL22_1D
1715    jmp .loopx_end
1716..@flag234
1717    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1718    PIXEL01_C
1719    PIXEL02_1M
1720    PIXEL11
1721    PIXEL12_1
1722    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1723    PIXEL22_1R
1724    jmp .loopx_end
1725..@flag242
1726    PIXEL00_1M
1727    PIXEL01_C
1728    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1729    PIXEL10_1
1730    PIXEL11
1731    PIXEL20_1L
1732    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1733    jmp .loopx_end
1734..@flag59
1735    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1736    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1737    PIXEL11
1738    PIXEL12_C
1739    PIXEL20_1D
1740    PIXEL21_1
1741    PIXEL22_1M
1742    jmp .loopx_end
1743..@flag121
1744    PIXEL00_1U
1745    PIXEL01_1
1746    PIXEL02_1M
1747    PIXEL11
1748    PIXEL12_C
1749    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1750    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1751    jmp .loopx_end
1752..@flag87
1753    PIXEL00_1L
1754    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1755    PIXEL10_1
1756    PIXEL11
1757    PIXEL20_1M
1758    PIXEL21_C
1759    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1760    jmp .loopx_end
1761..@flag79
1762    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1763    PIXEL02_1R
1764    PIXEL11
1765    PIXEL12_1
1766    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1767    PIXEL21_C
1768    PIXEL22_1M
1769    jmp .loopx_end
1770..@flag122
1771    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1772    PIXEL01_C
1773    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1774    PIXEL11
1775    PIXEL12_C
1776    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1777    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1778    jmp .loopx_end
1779..@flag94
1780    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1781    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1782    PIXEL10_C
1783    PIXEL11
1784    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1785    PIXEL21_C
1786    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1787    jmp .loopx_end
1788..@flag218
1789    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1790    PIXEL01_C
1791    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1792    PIXEL10_C
1793    PIXEL11
1794    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1795    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1796    jmp .loopx_end
1797..@flag91
1798    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1799    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1800    PIXEL11
1801    PIXEL12_C
1802    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1803    PIXEL21_C
1804    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1805    jmp .loopx_end
1806..@flag229
1807    PIXEL00_2
1808    PIXEL01_1
1809    PIXEL02_2
1810    PIXEL10_1
1811    PIXEL11
1812    PIXEL12_1
1813    PIXEL20_1L
1814    PIXEL21_C
1815    PIXEL22_1R
1816    jmp .loopx_end
1817..@flag167
1818    PIXEL00_1L
1819    PIXEL01_C
1820    PIXEL02_1R
1821    PIXEL10_1
1822    PIXEL11
1823    PIXEL12_1
1824    PIXEL20_2
1825    PIXEL21_1
1826    PIXEL22_2
1827    jmp .loopx_end
1828..@flag173
1829    PIXEL00_1U
1830    PIXEL01_1
1831    PIXEL02_2
1832    PIXEL10_C
1833    PIXEL11
1834    PIXEL12_1
1835    PIXEL20_1D
1836    PIXEL21_1
1837    PIXEL22_2
1838    jmp .loopx_end
1839..@flag181
1840    PIXEL00_2
1841    PIXEL01_1
1842    PIXEL02_1U
1843    PIXEL10_1
1844    PIXEL11
1845    PIXEL12_C
1846    PIXEL20_2
1847    PIXEL21_1
1848    PIXEL22_1D
1849    jmp .loopx_end
1850..@flag186
1851    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1852    PIXEL01_C
1853    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1854    PIXEL10_C
1855    PIXEL11
1856    PIXEL12_C
1857    PIXEL20_1D
1858    PIXEL21_1
1859    PIXEL22_1D
1860    jmp .loopx_end
1861..@flag115
1862    PIXEL00_1L
1863    PIXEL01_C
1864    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1865    PIXEL10_1
1866    PIXEL11
1867    PIXEL12_C
1868    PIXEL20_1L
1869    PIXEL21_C
1870    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1871    jmp .loopx_end
1872..@flag93
1873    PIXEL00_1U
1874    PIXEL01_1
1875    PIXEL02_1U
1876    PIXEL10_C
1877    PIXEL11
1878    PIXEL12_C
1879    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1880    PIXEL21_C
1881    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1882    jmp .loopx_end
1883..@flag206
1884    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1885    PIXEL01_C
1886    PIXEL02_1R
1887    PIXEL10_C
1888    PIXEL11
1889    PIXEL12_1
1890    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1891    PIXEL21_C
1892    PIXEL22_1R
1893    jmp .loopx_end
1894..@flag205
1895..@flag201
1896    PIXEL00_1U
1897    PIXEL01_1
1898    PIXEL02_2
1899    PIXEL10_C
1900    PIXEL11
1901    PIXEL12_1
1902    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
1903    PIXEL21_C
1904    PIXEL22_1R
1905    jmp .loopx_end
1906..@flag174
1907..@flag46
1908    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
1909    PIXEL01_C
1910    PIXEL02_1R
1911    PIXEL10_C
1912    PIXEL11
1913    PIXEL12_1
1914    PIXEL20_1D
1915    PIXEL21_1
1916    PIXEL22_2
1917    jmp .loopx_end
1918..@flag179
1919..@flag147
1920    PIXEL00_1L
1921    PIXEL01_C
1922    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
1923    PIXEL10_1
1924    PIXEL11
1925    PIXEL12_C
1926    PIXEL20_2
1927    PIXEL21_1
1928    PIXEL22_1D
1929    jmp .loopx_end
1930..@flag117
1931..@flag116
1932    PIXEL00_2
1933    PIXEL01_1
1934    PIXEL02_1U
1935    PIXEL10_1
1936    PIXEL11
1937    PIXEL12_C
1938    PIXEL20_1L
1939    PIXEL21_C
1940    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
1941    jmp .loopx_end
1942..@flag189
1943    PIXEL00_1U
1944    PIXEL01_1
1945    PIXEL02_1U
1946    PIXEL10_C
1947    PIXEL11
1948    PIXEL12_C
1949    PIXEL20_1D
1950    PIXEL21_1
1951    PIXEL22_1D
1952    jmp .loopx_end
1953..@flag231
1954    PIXEL00_1L
1955    PIXEL01_C
1956    PIXEL02_1R
1957    PIXEL10_1
1958    PIXEL11
1959    PIXEL12_1
1960    PIXEL20_1L
1961    PIXEL21_C
1962    PIXEL22_1R
1963    jmp .loopx_end
1964..@flag126
1965    PIXEL00_1M
1966    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
1967    PIXEL11
1968    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
1969    PIXEL22_1M
1970    jmp .loopx_end
1971..@flag219
1972    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
1973    PIXEL02_1M
1974    PIXEL11
1975    PIXEL20_1M
1976    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
1977    jmp .loopx_end
1978..@flag125
1979    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
1980    PIXEL01_1
1981    PIXEL02_1U
1982    PIXEL11
1983    PIXEL12_C
1984    PIXEL22_1M
1985    jmp .loopx_end
1986..@flag221
1987    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
1988    PIXEL00_1U
1989    PIXEL01_1
1990    PIXEL10_C
1991    PIXEL11
1992    PIXEL20_1M
1993    jmp .loopx_end
1994..@flag207
1995    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
1996    PIXEL11
1997    PIXEL12_1
1998    PIXEL20_1M
1999    PIXEL21_C
2000    PIXEL22_1R
2001    jmp .loopx_end
2002..@flag238
2003    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
2004    PIXEL00_1M
2005    PIXEL01_C
2006    PIXEL02_1R
2007    PIXEL11
2008    PIXEL12_1
2009    jmp .loopx_end
2010..@flag190
2011    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
2012    PIXEL00_1M
2013    PIXEL10_C
2014    PIXEL11
2015    PIXEL20_1D
2016    PIXEL21_1
2017    jmp .loopx_end
2018..@flag187
2019    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
2020    PIXEL02_1M
2021    PIXEL11
2022    PIXEL12_C
2023    PIXEL21_1
2024    PIXEL22_1D
2025    jmp .loopx_end
2026..@flag243
2027    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
2028    PIXEL00_1L
2029    PIXEL01_C
2030    PIXEL02_1M
2031    PIXEL10_1
2032    PIXEL11
2033    jmp .loopx_end
2034..@flag119
2035    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
2036    PIXEL10_1
2037    PIXEL11
2038    PIXEL20_1L
2039    PIXEL21_C
2040    PIXEL22_1M
2041    jmp .loopx_end
2042..@flag237
2043..@flag233
2044    PIXEL00_1U
2045    PIXEL01_1
2046    PIXEL02_2
2047    PIXEL10_C
2048    PIXEL11
2049    PIXEL12_1
2050    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2051    PIXEL21_C
2052    PIXEL22_1R
2053    jmp .loopx_end
2054..@flag175
2055..@flag47
2056    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2057    PIXEL01_C
2058    PIXEL02_1R
2059    PIXEL10_C
2060    PIXEL11
2061    PIXEL12_1
2062    PIXEL20_1D
2063    PIXEL21_1
2064    PIXEL22_2
2065    jmp .loopx_end
2066..@flag183
2067..@flag151
2068    PIXEL00_1L
2069    PIXEL01_C
2070    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2071    PIXEL10_1
2072    PIXEL11
2073    PIXEL12_C
2074    PIXEL20_2
2075    PIXEL21_1
2076    PIXEL22_1D
2077    jmp .loopx_end
2078..@flag245
2079..@flag244
2080    PIXEL00_2
2081    PIXEL01_1
2082    PIXEL02_1U
2083    PIXEL10_1
2084    PIXEL11
2085    PIXEL12_C
2086    PIXEL20_1L
2087    PIXEL21_C
2088    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2089    jmp .loopx_end
2090..@flag250
2091    PIXEL00_1M
2092    PIXEL01_C
2093    PIXEL02_1M
2094    PIXEL11
2095    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
2096    PIXEL21_C
2097    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
2098    jmp .loopx_end
2099..@flag123
2100    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
2101    PIXEL02_1M
2102    PIXEL10_C
2103    PIXEL11
2104    PIXEL12_C
2105    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
2106    PIXEL22_1M
2107    jmp .loopx_end
2108..@flag95
2109    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
2110    PIXEL01_C
2111    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
2112    PIXEL11
2113    PIXEL20_1M
2114    PIXEL21_C
2115    PIXEL22_1M
2116    jmp .loopx_end
2117..@flag222
2118    PIXEL00_1M
2119    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
2120    PIXEL10_C
2121    PIXEL11
2122    PIXEL12_C
2123    PIXEL20_1M
2124    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
2125    jmp .loopx_end
2126..@flag252
2127    PIXEL00_1M
2128    PIXEL01_1
2129    PIXEL02_1U
2130    PIXEL11
2131    PIXEL12_C
2132    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
2133    PIXEL21_C
2134    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2135    jmp .loopx_end
2136..@flag249
2137    PIXEL00_1U
2138    PIXEL01_1
2139    PIXEL02_1M
2140    PIXEL10_C
2141    PIXEL11
2142    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2143    PIXEL21_C
2144    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
2145    jmp .loopx_end
2146..@flag235
2147    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
2148    PIXEL02_1M
2149    PIXEL10_C
2150    PIXEL11
2151    PIXEL12_1
2152    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2153    PIXEL21_C
2154    PIXEL22_1R
2155    jmp .loopx_end
2156..@flag111
2157    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2158    PIXEL01_C
2159    PIXEL02_1R
2160    PIXEL10_C
2161    PIXEL11
2162    PIXEL12_1
2163    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
2164    PIXEL22_1M
2165    jmp .loopx_end
2166..@flag63
2167    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2168    PIXEL01_C
2169    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
2170    PIXEL10_C
2171    PIXEL11
2172    PIXEL20_1D
2173    PIXEL21_1
2174    PIXEL22_1M
2175    jmp .loopx_end
2176..@flag159
2177    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
2178    PIXEL01_C
2179    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2180    PIXEL11
2181    PIXEL12_C
2182    PIXEL20_1M
2183    PIXEL21_1
2184    PIXEL22_1D
2185    jmp .loopx_end
2186..@flag215
2187    PIXEL00_1L
2188    PIXEL01_C
2189    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2190    PIXEL10_1
2191    PIXEL11
2192    PIXEL12_C
2193    PIXEL20_1M
2194    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
2195    jmp .loopx_end
2196..@flag246
2197    PIXEL00_1M
2198    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
2199    PIXEL10_1
2200    PIXEL11
2201    PIXEL12_C
2202    PIXEL20_1L
2203    PIXEL21_C
2204    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2205    jmp .loopx_end
2206..@flag254
2207    PIXEL00_1M
2208    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
2209    PIXEL11
2210    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
2211    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_2
2212    jmp .loopx_end
2213..@flag253
2214    PIXEL00_1U
2215    PIXEL01_1
2216    PIXEL02_1U
2217    PIXEL10_C
2218    PIXEL11
2219    PIXEL12_C
2220    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2221    PIXEL21_C
2222    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2223    jmp .loopx_end
2224..@flag251
2225    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
2226    PIXEL02_1M
2227    PIXEL11
2228    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_2,PIXEL21_3
2229    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
2230    jmp .loopx_end
2231..@flag239
2232    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2233    PIXEL01_C
2234    PIXEL02_1R
2235    PIXEL10_C
2236    PIXEL11
2237    PIXEL12_1
2238    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2239    PIXEL21_C
2240    PIXEL22_1R
2241    jmp .loopx_end
2242..@flag127
2243    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_2,PIXEL01_3,PIXEL10_3
2244    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
2245    PIXEL11
2246    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
2247    PIXEL22_1M
2248    jmp .loopx_end
2249..@flag191
2250    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2251    PIXEL01_C
2252    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2253    PIXEL10_C
2254    PIXEL11
2255    PIXEL12_C
2256    PIXEL20_1D
2257    PIXEL21_1
2258    PIXEL22_1D
2259    jmp .loopx_end
2260..@flag223
2261    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
2262    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_2,PIXEL12_3
2263    PIXEL11
2264    PIXEL20_1M
2265    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
2266    jmp .loopx_end
2267..@flag247
2268    PIXEL00_1L
2269    PIXEL01_C
2270    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2271    PIXEL10_1
2272    PIXEL11
2273    PIXEL12_C
2274    PIXEL20_1L
2275    PIXEL21_C
2276    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2277    jmp .loopx_end
2278..@flag255
2279    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
2280    PIXEL01_C
2281    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
2282    PIXEL10_C
2283    PIXEL11
2284    PIXEL12_C
2285    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
2286    PIXEL21_C
2287    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
2288    jmp .loopx_end
2289
2290..@cross0
2291    mov edx,eax
2292    shl eax,16
2293    or  eax,edx
2294    mov [edi],eax
2295    mov [edi+4],ax
2296    mov [edi+ebx],eax
2297    mov [edi+ebx+4],ax
2298    mov [edi+ebx*2],eax
2299    mov [edi+ebx*2+4],ax
2300    jmp .loopx_end
2301..@cross1
2302    mov edx,eax
2303    shl eax,16
2304    or  eax,edx
2305    mov ecx,[w2]
2306    and edx,[zerolowbits]
2307    and ecx,[zerolowbits]
2308    add ecx,edx
2309    shr ecx,1
2310    add ecx,0x0821
2311    and ecx,[zerolowbits]
2312    add edx,ecx
2313    shr edx,1
2314    mov [edi],dx
2315    mov [edi+2],dx
2316    mov [edi+4],dx
2317    mov [edi+ebx],eax
2318    mov [edi+ebx+4],ax
2319    mov [edi+ebx*2],eax
2320    mov [edi+ebx*2+4],ax
2321    jmp .loopx_end
2322..@cross2
2323    mov edx,eax
2324    shl eax,16
2325    or  eax,edx
2326    mov ecx,[w4]
2327    and edx,[zerolowbits]
2328    and ecx,[zerolowbits]
2329    add ecx,edx
2330    shr ecx,1
2331    add ecx,0x0821
2332    and ecx,[zerolowbits]
2333    add edx,ecx
2334    shr edx,1
2335    mov [edi],dx
2336    mov [edi+2],eax
2337    mov [edi+ebx],dx
2338    mov [edi+ebx+2],eax
2339    mov [edi+ebx*2],dx
2340    mov [edi+ebx*2+2],eax
2341    jmp .loopx_end
2342..@cross4
2343    mov edx,eax
2344    shl eax,16
2345    or  eax,edx
2346    mov ecx,[w6]
2347    and edx,[zerolowbits]
2348    and ecx,[zerolowbits]
2349    add ecx,edx
2350    shr ecx,1
2351    add ecx,0x0821
2352    and ecx,[zerolowbits]
2353    add edx,ecx
2354    shr edx,1
2355    mov [edi],eax
2356    mov [edi+4],dx
2357    mov [edi+ebx],eax
2358    mov [edi+ebx+4],dx
2359    mov [edi+ebx*2],eax
2360    mov [edi+ebx*2+4],dx
2361    jmp .loopx_end
2362..@cross8
2363    mov edx,eax
2364    shl eax,16
2365    or  eax,edx
2366    mov ecx,[w8]
2367    and edx,[zerolowbits]
2368    and ecx,[zerolowbits]
2369    add ecx,edx
2370    shr ecx,1
2371    add ecx,0x0821
2372    and ecx,[zerolowbits]
2373    add edx,ecx
2374    shr edx,1
2375    mov [edi],eax
2376    mov [edi+4],ax
2377    mov [edi+ebx],eax
2378    mov [edi+ebx+4],ax
2379    mov [edi+ebx*2],dx
2380    mov [edi+ebx*2+2],dx
2381    mov [edi+ebx*2+4],dx
2382    jmp     .loopx_end
2383
2384.loopx_end
2385    add     esi,2
2386    add     edi,6
2387    dec     dword[xcounter]
2388    jle     .xres_2
2389    jmp     .loopx
2390.xres_2
2391    ; x=Xres-2 - special case
2392    jl      NEAR .xres_1
2393    mov     ebx,[prevline]
2394    movq    mm5,[esi+ebx-4]
2395    movq    mm6,[esi-4]
2396    mov     ebx,[nextline]
2397    movq    mm7,[esi+ebx-4]
2398    psrlq   mm5,16
2399    psrlq   mm6,16
2400    psrlq   mm7,16
2401    movd    eax,mm5
2402    movzx   edx,ax
2403    mov     [w1],edx
2404    shr     eax,16
2405    mov     [w2],eax
2406    psrlq   mm5,32
2407    movd    eax,mm5
2408    mov     [w3],eax
2409    movd    eax,mm6
2410    movzx   edx,ax
2411    mov     [w4],edx
2412    shr     eax,16
2413    mov     [w5],eax
2414    psrlq   mm6,32
2415    movd    eax,mm6
2416    mov     [w6],eax
2417    movd    eax,mm7
2418    movzx   edx,ax
2419    mov     [w7],edx
2420    shr     eax,16
2421    mov     [w8],eax
2422    psrlq   mm7,32
2423    movd    eax,mm7
2424    mov     [w9],eax
2425    jmp     .flags
2426.xres_1
2427    cmp     dword[xcounter],-1
2428    jl      .nexty
2429    ; x=Xres-1 - special case
2430    mov     ebx,[prevline]
2431    movq    mm5,[esi+ebx-6]
2432    movq    mm6,[esi-6]
2433    mov     ebx,[nextline]
2434    movq    mm7,[esi+ebx-6]
2435    psrlq   mm5,32
2436    psrlq   mm6,32
2437    psrlq   mm7,32
2438    movd    eax,mm5
2439    movzx   edx,ax
2440    mov     [w1],edx
2441    shr     eax,16
2442    mov     [w2],eax
2443    mov     [w3],eax
2444    movd    eax,mm6
2445    movzx   edx,ax
2446    mov     [w4],edx
2447    shr     eax,16
2448    mov     [w5],eax
2449    mov     [w6],eax
2450    movd    eax,mm7
2451    movzx   edx,ax
2452    mov     [w7],edx
2453    shr     eax,16
2454    mov     [w8],eax
2455    mov     [w9],eax
2456    jmp     .flags
2457.nexty
2458    add     edi,ebx
2459    add     edi,ebx
2460    dec     dword[linesleft]
2461    jz      .fin
2462    mov     ebx,[ebp+Xres]
2463    shl     ebx,1
2464    cmp     dword[linesleft],1
2465    je      .lastline
2466    mov     dword[nextline],ebx
2467    neg     ebx
2468    mov     dword[prevline],ebx
2469    jmp     .loopy
2470.lastline
2471    mov     dword[nextline],0
2472    neg     ebx
2473    mov     dword[prevline],ebx
2474    jmp     .loopy
2475.fin
2476    emms
2477    popad
2478    mov esp,ebp
2479    pop ebp
2480    ret
2481
2482SECTION .data
2483FuncTable
2484    dd ..@flag0, ..@flag1, ..@flag2, ..@flag3, ..@flag4, ..@flag5, ..@flag6, ..@flag7
2485    dd ..@flag8, ..@flag9, ..@flag10, ..@flag11, ..@flag12, ..@flag13, ..@flag14, ..@flag15
2486    dd ..@flag16, ..@flag17, ..@flag18, ..@flag19, ..@flag20, ..@flag21, ..@flag22, ..@flag23
2487    dd ..@flag24, ..@flag25, ..@flag26, ..@flag27, ..@flag28, ..@flag29, ..@flag30, ..@flag31
2488    dd ..@flag32, ..@flag33, ..@flag34, ..@flag35, ..@flag36, ..@flag37, ..@flag38, ..@flag39
2489    dd ..@flag40, ..@flag41, ..@flag42, ..@flag43, ..@flag44, ..@flag45, ..@flag46, ..@flag47
2490    dd ..@flag48, ..@flag49, ..@flag50, ..@flag51, ..@flag52, ..@flag53, ..@flag54, ..@flag55
2491    dd ..@flag56, ..@flag57, ..@flag58, ..@flag59, ..@flag60, ..@flag61, ..@flag62, ..@flag63
2492    dd ..@flag64, ..@flag65, ..@flag66, ..@flag67, ..@flag68, ..@flag69, ..@flag70, ..@flag71
2493    dd ..@flag72, ..@flag73, ..@flag74, ..@flag75, ..@flag76, ..@flag77, ..@flag78, ..@flag79
2494    dd ..@flag80, ..@flag81, ..@flag82, ..@flag83, ..@flag84, ..@flag85, ..@flag86, ..@flag87
2495    dd ..@flag88, ..@flag89, ..@flag90, ..@flag91, ..@flag92, ..@flag93, ..@flag94, ..@flag95
2496    dd ..@flag96, ..@flag97, ..@flag98, ..@flag99, ..@flag100, ..@flag101, ..@flag102, ..@flag103
2497    dd ..@flag104, ..@flag105, ..@flag106, ..@flag107, ..@flag108, ..@flag109, ..@flag110, ..@flag111
2498    dd ..@flag112, ..@flag113, ..@flag114, ..@flag115, ..@flag116, ..@flag117, ..@flag118, ..@flag119
2499    dd ..@flag120, ..@flag121, ..@flag122, ..@flag123, ..@flag124, ..@flag125, ..@flag126, ..@flag127
2500    dd ..@flag128, ..@flag129, ..@flag130, ..@flag131, ..@flag132, ..@flag133, ..@flag134, ..@flag135
2501    dd ..@flag136, ..@flag137, ..@flag138, ..@flag139, ..@flag140, ..@flag141, ..@flag142, ..@flag143
2502    dd ..@flag144, ..@flag145, ..@flag146, ..@flag147, ..@flag148, ..@flag149, ..@flag150, ..@flag151
2503    dd ..@flag152, ..@flag153, ..@flag154, ..@flag155, ..@flag156, ..@flag157, ..@flag158, ..@flag159
2504    dd ..@flag160, ..@flag161, ..@flag162, ..@flag163, ..@flag164, ..@flag165, ..@flag166, ..@flag167
2505    dd ..@flag168, ..@flag169, ..@flag170, ..@flag171, ..@flag172, ..@flag173, ..@flag174, ..@flag175
2506    dd ..@flag176, ..@flag177, ..@flag178, ..@flag179, ..@flag180, ..@flag181, ..@flag182, ..@flag183
2507    dd ..@flag184, ..@flag185, ..@flag186, ..@flag187, ..@flag188, ..@flag189, ..@flag190, ..@flag191
2508    dd ..@flag192, ..@flag193, ..@flag194, ..@flag195, ..@flag196, ..@flag197, ..@flag198, ..@flag199
2509    dd ..@flag200, ..@flag201, ..@flag202, ..@flag203, ..@flag204, ..@flag205, ..@flag206, ..@flag207
2510    dd ..@flag208, ..@flag209, ..@flag210, ..@flag211, ..@flag212, ..@flag213, ..@flag214, ..@flag215
2511    dd ..@flag216, ..@flag217, ..@flag218, ..@flag219, ..@flag220, ..@flag221, ..@flag222, ..@flag223
2512    dd ..@flag224, ..@flag225, ..@flag226, ..@flag227, ..@flag228, ..@flag229, ..@flag230, ..@flag231
2513    dd ..@flag232, ..@flag233, ..@flag234, ..@flag235, ..@flag236, ..@flag237, ..@flag238, ..@flag239
2514    dd ..@flag240, ..@flag241, ..@flag242, ..@flag243, ..@flag244, ..@flag245, ..@flag246, ..@flag247
2515    dd ..@flag248, ..@flag249, ..@flag250, ..@flag251, ..@flag252, ..@flag253, ..@flag254, ..@flag255
2516
2517FuncTable2
2518    dd ..@cross0, ..@cross1, ..@cross2, ..@flag0,
2519    dd ..@cross4, ..@flag0,  ..@flag0,  ..@flag0,
2520    dd ..@cross8, ..@flag0,  ..@flag0,  ..@flag0,
2521    dd ..@flag0,  ..@flag0,  ..@flag0,  ..@flag0
2522
2523