Files
ZSNES/zsnes/src/video/hq3x32.asm

2813 lines
55 KiB
NASM

;Copyright (C) 1997-2005 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
;
;http://www.zsnes.com
;http://sourceforge.net/projects/zsnes
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either
;version 2 of the License, or (at your option) any later
;version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;----------------------------------------------------------
;hq3x filter
;Copyright (C) 2003 MaxSt ( maxst@hiend3d.com )
;----------------------------------------------------------
%include "macros.mac"
EXTSYM vidbuffer,curblank,MMXSupport,GUIOn,GUIOn2,vidbufferofsb,FilteredGUI
EXTSYM resolutn,lineleft,cfield,hirestiledat,newengen,SpecialLine,hqFilter
EXTSYM AddEndBytes,NumBytesPerLine,WinVidMemStart,BitConv32Ptr,RGBtoYUVPtr
EXTSYM prevline,nextline,deltaptr,xcounter,w1,w2,w3,w4,w5,w6,w7,w8,w9
EXTSYM c1,c2,c3,c4,c6,c7,c8,c9,reg_blank,const7,cross,threshold
SECTION .text
%macro TestDiff 2
xor ecx,ecx
mov edx,[%1]
cmp edx,[%2]
je %%fin
mov ecx,[RGBtoYUVPtr]
movd mm1,[ecx+edx*4]
movq mm5,mm1
mov edx,[%2]
movd mm2,[ecx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd ecx,mm1
%%fin:
%endmacro
%macro DiffOrNot 4
TestDiff %1,%2
test ecx,ecx
jz %%same
%3
jmp %%fin
%%same:
%4
%%fin
%endmacro
%macro DiffOrNot 6
TestDiff %1,%2
test ecx,ecx
jz %%same
%3
%4
jmp %%fin
%%same:
%5
%6
%%fin
%endmacro
%macro DiffOrNot 8
TestDiff %1,%2
test ecx,ecx
jz %%same
%3
%4
%5
jmp %%fin
%%same:
%6
%7
%8
%%fin
%endmacro
%macro DiffOrNot 10
TestDiff %1,%2
test ecx,ecx
jz %%same
%3
%4
%5
%6
jmp %%fin
%%same:
%7
%8
%9
%10
%%fin
%endmacro
%macro Interp1 3
mov edx,%2
shl edx,2
add edx,%3
sub edx,%2
shr edx,2
mov %1,edx
%endmacro
%macro Interp2 4
mov edx,%2
shl edx,1
add edx,%3
add edx,%4
shr edx,2
mov %1,edx
%endmacro
%macro Interp3 2
movd mm1, eax
movd mm2, %2
punpcklbw mm1, [reg_blank]
punpcklbw mm2, [reg_blank]
pmullw mm1, [const7]
paddw mm1, mm2
psrlw mm1, 3
packuswb mm1, [reg_blank]
movd %1, mm1
%endmacro
%macro Interp4 3
movd mm1, eax
movd mm2, %2
movd mm3, %3
punpcklbw mm1, [reg_blank]
punpcklbw mm2, [reg_blank]
punpcklbw mm3, [reg_blank]
psllw mm1, 1
paddw mm2, mm3
pmullw mm2, [const7]
paddw mm1, mm2
psrlw mm1, 4
packuswb mm1, [reg_blank]
movd %1, mm1
%endmacro
%macro Interp5 3
mov edx,%2
add edx,%3
shr edx,1
mov %1,edx
%endmacro
%macro PIXEL00_1M 0
Interp1 [edi],eax,[c1]
%endmacro
%macro PIXEL00_1U 0
Interp1 [edi],eax,[c2]
%endmacro
%macro PIXEL00_1L 0
Interp1 [edi],eax,[c4]
%endmacro
%macro PIXEL00_2 0
Interp2 [edi],eax,[c4],[c2]
%endmacro
%macro PIXEL00_4 0
Interp4 [edi],[c4],[c2]
%endmacro
%macro PIXEL00_5 0
Interp5 [edi],[c4],[c2]
%endmacro
%macro PIXEL00_C 0
mov [edi],eax
%endmacro
%macro PIXEL01_1 0
Interp1 [edi+4],eax,[c2]
%endmacro
%macro PIXEL01_3 0
Interp3 [edi+4],[c2]
%endmacro
%macro PIXEL01_6 0
Interp1 [edi+4],[c2],eax
%endmacro
%macro PIXEL01_C 0
mov [edi+4],eax
%endmacro
%macro PIXEL02_1M 0
Interp1 [edi+8],eax,[c3]
%endmacro
%macro PIXEL02_1U 0
Interp1 [edi+8],eax,[c2]
%endmacro
%macro PIXEL02_1R 0
Interp1 [edi+8],eax,[c6]
%endmacro
%macro PIXEL02_2 0
Interp2 [edi+8],eax,[c2],[c6]
%endmacro
%macro PIXEL02_4 0
Interp4 [edi+8],[c2],[c6]
%endmacro
%macro PIXEL02_5 0
Interp5 [edi+8],[c2],[c6]
%endmacro
%macro PIXEL02_C 0
mov [edi+8],eax
%endmacro
%macro PIXEL10_1 0
Interp1 [edi+ebx],eax,[c4]
%endmacro
%macro PIXEL10_3 0
Interp3 [edi+ebx],[c4]
%endmacro
%macro PIXEL10_6 0
Interp1 [edi+ebx],[c4],eax
%endmacro
%macro PIXEL10_C 0
mov [edi+ebx],eax
%endmacro
%macro PIXEL11 0
mov [edi+ebx+4],eax
%endmacro
%macro PIXEL12_1 0
Interp1 [edi+ebx+8],eax,[c6]
%endmacro
%macro PIXEL12_3 0
Interp3 [edi+ebx+8],[c6]
%endmacro
%macro PIXEL12_6 0
Interp1 [edi+ebx+8],[c6],eax
%endmacro
%macro PIXEL12_C 0
mov [edi+ebx+8],eax
%endmacro
%macro PIXEL20_1M 0
Interp1 [edi+ebx*2],eax,[c7]
%endmacro
%macro PIXEL20_1D 0
Interp1 [edi+ebx*2],eax,[c8]
%endmacro
%macro PIXEL20_1L 0
Interp1 [edi+ebx*2],eax,[c4]
%endmacro
%macro PIXEL20_2 0
Interp2 [edi+ebx*2],eax,[c8],[c4]
%endmacro
%macro PIXEL20_4 0
Interp4 [edi+ebx*2],[c8],[c4]
%endmacro
%macro PIXEL20_5 0
Interp5 [edi+ebx*2],[c8],[c4]
%endmacro
%macro PIXEL20_C 0
mov [edi+ebx*2],eax
%endmacro
%macro PIXEL21_1 0
Interp1 [edi+ebx*2+4],eax,[c8]
%endmacro
%macro PIXEL21_3 0
Interp3 [edi+ebx*2+4],[c8]
%endmacro
%macro PIXEL21_6 0
Interp1 [edi+ebx*2+4],[c8],eax
%endmacro
%macro PIXEL21_C 0
mov [edi+ebx*2+4],eax
%endmacro
%macro PIXEL22_1M 0
Interp1 [edi+ebx*2+8],eax,[c9]
%endmacro
%macro PIXEL22_1D 0
Interp1 [edi+ebx*2+8],eax,[c8]
%endmacro
%macro PIXEL22_1R 0
Interp1 [edi+ebx*2+8],eax,[c6]
%endmacro
%macro PIXEL22_2 0
Interp2 [edi+ebx*2+8],eax,[c6],[c8]
%endmacro
%macro PIXEL22_4 0
Interp4 [edi+ebx*2+8],[c6],[c8]
%endmacro
%macro PIXEL22_5 0
Interp5 [edi+ebx*2+8],[c6],[c8]
%endmacro
%macro PIXEL22_C 0
mov [edi+ebx*2+8],eax
%endmacro
NEWSYM hq3x_32b
cmp byte[curblank],40h
jne .startcopy
ret
.startcopy
pushad
mov ax,ds
mov es,ax
mov esi,[vidbuffer]
mov edi,[WinVidMemStart]
add esi,16*2+256*2+32*2
mov ecx,[vidbufferofsb]
mov [deltaptr],ecx
cmp byte[FilteredGUI],0
jne .filtergui
cmp byte[GUIOn2],1
je nointerp
.filtergui
cmp byte[MMXSupport],0
je nointerp
cmp byte[hqFilter],0
jne hq3x
;----------------------------;
nointerp:
mov dl,[resolutn]
mov [lineleft],dl
mov ebx,[NumBytesPerLine]
mov edx,[BitConv32Ptr]
.loopy
mov ecx,256
.loopx
movzx eax,word[esi]
mov eax,[edx+eax*4]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],eax
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],eax
add esi,2
add edi,12
dec ecx
jnz .loopx
add edi,[AddEndBytes]
add edi,ebx
add edi,ebx
add esi,64
dec byte[lineleft]
jnz near .loopy
popad
ret
;----------------------------;
hq3x:
mov dl,[resolutn]
mov [lineleft],dl
mov dword[prevline],0
mov dword[nextline],576
mov ebx,hirestiledat+1
cmp byte[GUIOn],1
je .loopy
cmp byte[newengen],0
je .loopy
mov ebx,SpecialLine+1
.loopy
mov [InterPtr],ebx
cmp byte[ebx],1
jbe .nohires
call HighResProc
mov edx,[deltaptr]
mov ecx,128
mov eax,0xAAAAAAAA
.a
mov [edx],eax
add edx,4
dec ecx
jnz .a
mov [deltaptr],edx
jmp .nexty
.nohires
mov dword[xcounter],254 ; x={Xres-2, Xres-1} are special cases.
; x=0 - special case
mov edx,[deltaptr]
mov ecx,[prevline]
mov eax,[nextline]
movq mm2,[esi+ecx]
movq mm3,[esi]
movq mm4,[esi+eax]
movq mm5,mm2
movq mm6,mm3
movq mm7,mm4
pcmpeqw mm2,[edx+ecx]
pcmpeqw mm3,[edx]
pcmpeqw mm4,[edx+eax]
pand mm2,mm3
pand mm2,mm4
movd eax,mm2
inc eax
jz near .loopx_end
movd eax,mm5
movzx edx,ax
mov [w1],edx
mov [w2],edx
shr eax,16
mov [w3],eax
movd eax,mm6
movzx edx,ax
mov [w4],edx
mov [w5],edx
shr eax,16
mov [w6],eax
movd eax,mm7
movzx edx,ax
mov [w7],edx
mov [w8],edx
shr eax,16
mov [w9],eax
jmp .flags
.loopx
mov edx,[deltaptr]
mov ecx,[prevline]
mov eax,[nextline]
movq mm2,[esi+ecx-2]
movq mm3,[esi-2]
movq mm4,[esi+eax-2]
movq mm5,mm2
movq mm6,mm3
movq mm7,mm4
pcmpeqw mm2,[edx+ecx-2]
pcmpeqw mm3,[edx-2]
pcmpeqw mm4,[edx+eax-2]
pand mm2,mm3
pand mm2,mm4
movd ebx,mm2
psrlq mm2,32
movd eax,mm2
cwde
and eax,ebx
inc eax
jz near .loopx_end
movd eax,mm5
mov [edx+ecx-2],ax
movzx edx,ax
mov [w1],edx
shr eax,16
mov [w2],eax
psrlq mm5,32
movd eax,mm5
movzx edx,ax
mov [w3],edx
movd eax,mm6
movzx edx,ax
mov [w4],edx
shr eax,16
mov [w5],eax
psrlq mm6,32
movd eax,mm6
movzx edx,ax
mov [w6],edx
movd eax,mm7
movzx edx,ax
mov [w7],edx
shr eax,16
mov [w8],eax
psrlq mm7,32
movd eax,mm7
movzx edx,ax
mov [w9],edx
.flags
mov ebx,[RGBtoYUVPtr]
mov eax,[w5]
xor ecx,ecx
movd mm5,[ebx+eax*4]
mov dword[cross],0
mov edx,[w2]
cmp eax,edx
je .noflag2
or dword[cross],1
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag2
or ecx,2
.noflag2
mov edx,[w4]
cmp eax,edx
je .noflag4
or dword[cross],2
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag4
or ecx,8
.noflag4
mov edx,[w6]
cmp eax,edx
je .noflag6
or dword[cross],4
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag6
or ecx,16
.noflag6
mov edx,[w8]
cmp eax,edx
je .noflag8
or dword[cross],8
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag8
or ecx,64
.noflag8
test ecx,ecx
jnz .testflag1
mov ecx,[cross]
mov ebx,[BitConv32Ptr]
mov eax,[ebx+eax*4]
jmp [FuncTable2+ecx*4]
.testflag1
mov edx,[w1]
cmp eax,edx
je .noflag1
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag1
or ecx,1
.noflag1
mov edx,[w3]
cmp eax,edx
je .noflag3
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag3
or ecx,4
.noflag3
mov edx,[w7]
cmp eax,edx
je .noflag7
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag7
or ecx,32
.noflag7
mov edx,[w9]
cmp eax,edx
je .noflag9
movq mm1,mm5
movd mm2,[ebx+edx*4]
psubusb mm1,mm2
psubusb mm2,mm5
por mm1,mm2
psubusb mm1,[threshold]
movd edx,mm1
test edx,edx
jz .noflag9
or ecx,128
.noflag9
mov ebx,[BitConv32Ptr]
mov eax,[ebx+eax*4]
mov edx,[w2]
mov edx,[ebx+edx*4]
mov [c2],edx
mov edx,[w4]
mov edx,[ebx+edx*4]
mov [c4],edx
mov edx,[w6]
mov edx,[ebx+edx*4]
mov [c6],edx
mov edx,[w8]
mov edx,[ebx+edx*4]
mov [c8],edx
test ecx,0x005A
jz .switch
mov edx,[w1]
mov edx,[ebx+edx*4]
mov [c1],edx
mov edx,[w3]
mov edx,[ebx+edx*4]
mov [c3],edx
mov edx,[w7]
mov edx,[ebx+edx*4]
mov [c7],edx
mov edx,[w9]
mov edx,[ebx+edx*4]
mov [c9],edx
.switch
mov ebx,[NumBytesPerLine]
jmp [FuncTable+ecx*4]
..@flag0
..@flag1
..@flag4
..@flag32
..@flag128
..@flag5
..@flag132
..@flag160
..@flag33
..@flag129
..@flag36
..@flag133
..@flag164
..@flag161
..@flag37
..@flag165
; PIXEL00_2
; PIXEL01_1
; PIXEL02_2
; PIXEL10_1
; PIXEL11
; PIXEL12_1
; PIXEL20_2
; PIXEL21_1
; PIXEL22_2
; the same, only optimized
mov ecx,eax
shl ecx,1
add ecx,[c2]
mov edx,ecx
add edx,[c4]
shr edx,2
mov [edi],edx
mov edx,ecx
add edx,eax
shr edx,2
mov [edi+4],edx
add ecx,[c6]
shr ecx,2
mov [edi+8],ecx
mov ecx,eax
shl ecx,2
sub ecx,eax
mov edx,ecx
add edx,[c4]
shr edx,2
mov [edi+ebx],edx
mov [edi+ebx+4],eax
add ecx,[c6]
shr ecx,2
mov [edi+ebx+8],ecx
mov ecx,eax
shl ecx,1
add ecx,[c8]
mov edx,ecx
add edx,[c4]
shr edx,2
mov [edi+ebx*2],edx
mov edx,ecx
add edx,eax
shr edx,2
mov [edi+ebx*2+4],edx
add ecx,[c6]
shr ecx,2
mov [edi+ebx*2+8],ecx
jmp .loopx_end
..@flag2
..@flag34
..@flag130
..@flag162
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_2
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag16
..@flag17
..@flag48
..@flag49
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag64
..@flag65
..@flag68
..@flag69
PIXEL00_2
PIXEL01_1
PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag8
..@flag12
..@flag136
..@flag140
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag3
..@flag35
..@flag131
..@flag163
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_2
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag6
..@flag38
..@flag134
..@flag166
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_2
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag20
..@flag21
..@flag52
..@flag53
PIXEL00_2
PIXEL01_1
PIXEL02_1U
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag144
..@flag145
..@flag176
..@flag177
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag192
..@flag193
..@flag196
..@flag197
PIXEL00_2
PIXEL01_1
PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag96
..@flag97
..@flag100
..@flag101
PIXEL00_2
PIXEL01_1
PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag40
..@flag44
..@flag168
..@flag172
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1D
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag9
..@flag13
..@flag137
..@flag141
PIXEL00_1U
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag18
..@flag50
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag80
..@flag81
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag72
..@flag76
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag10
..@flag138
DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag66
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag24
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag7
..@flag39
..@flag135
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_2
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag148
..@flag149
..@flag180
PIXEL00_2
PIXEL01_1
PIXEL02_1U
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag224
..@flag228
..@flag225
PIXEL00_2
PIXEL01_1
PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag41
..@flag169
..@flag45
PIXEL00_1U
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1D
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag22
..@flag54
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag208
..@flag209
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag104
..@flag108
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag11
..@flag139
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag19
..@flag51
DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag146
..@flag178
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
PIXEL00_1M
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
jmp .loopx_end
..@flag84
..@flag85
DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
PIXEL00_2
PIXEL01_1
PIXEL10_1
PIXEL11
PIXEL20_1M
jmp .loopx_end
..@flag112
..@flag113
DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_1M,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
jmp .loopx_end
..@flag200
..@flag204
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
jmp .loopx_end
..@flag73
..@flag77
DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
PIXEL22_1M
jmp .loopx_end
..@flag42
..@flag170
DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag14
..@flag142
DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag67
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag70
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag28
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag152
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag194
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag98
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag56
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag25
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag26
..@flag31
DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
PIXEL11
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag82
..@flag214
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1M
DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag88
..@flag248
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL11
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
PIXEL21_C
DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
jmp .loopx_end
..@flag74
..@flag107
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag27
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag86
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_1
PIXEL11
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag216
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag106
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag30
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_C
PIXEL11
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag210
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag120
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag75
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag29
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag198
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag184
PIXEL00_1M
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag99
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag57
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag71
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag156
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag226
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag60
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag195
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag102
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag153
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag58
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag83
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag92
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag202
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag78
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag154
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag114
PIXEL00_1M
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag89
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag90
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag55
..@flag23
DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag182
..@flag150
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
PIXEL00_1M
PIXEL10_1
PIXEL11
PIXEL20_2
PIXEL21_1
jmp .loopx_end
..@flag213
..@flag212
DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
PIXEL00_2
PIXEL01_1
PIXEL10_1
PIXEL11
PIXEL20_1M
jmp .loopx_end
..@flag241
..@flag240
DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
PIXEL00_2
PIXEL01_1
PIXEL02_1M
PIXEL10_1
PIXEL11
jmp .loopx_end
..@flag236
..@flag232
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
PIXEL00_1M
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
jmp .loopx_end
..@flag109
..@flag105
DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
PIXEL01_1
PIXEL02_2
PIXEL11
PIXEL12_1
PIXEL22_1M
jmp .loopx_end
..@flag171
..@flag43
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag143
..@flag15
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag124
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag203
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag62
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_C
PIXEL11
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag211
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag118
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_1
PIXEL11
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag217
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag110
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag155
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag188
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag185
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag61
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag157
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag103
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag227
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag230
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag199
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag220
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag158
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_C
PIXEL11
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag234
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
PIXEL02_1M
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1R
jmp .loopx_end
..@flag242
PIXEL00_1M
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL20_1L
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag59
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag121
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag87
PIXEL00_1L
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_1
PIXEL11
PIXEL20_1M
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag79
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1R
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag122
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag94
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL10_C
PIXEL11
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag218
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_C
PIXEL11
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag91
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag229
PIXEL00_2
PIXEL01_1
PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag167
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_2
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag173
PIXEL00_1U
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1D
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag181
PIXEL00_2
PIXEL01_1
PIXEL02_1U
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag186
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag115
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag93
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag206
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag205
..@flag201
PIXEL00_1U
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag174
..@flag46
DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1D
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag179
..@flag147
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag117
..@flag116
PIXEL00_2
PIXEL01_1
PIXEL02_1U
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
jmp .loopx_end
..@flag189
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag231
PIXEL00_1L
PIXEL01_C
PIXEL02_1R
PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1L
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag126
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
PIXEL11
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag219
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
PIXEL02_1M
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag125
DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
PIXEL01_1
PIXEL02_1U
PIXEL11
PIXEL12_C
PIXEL22_1M
jmp .loopx_end
..@flag221
DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
PIXEL00_1U
PIXEL01_1
PIXEL10_C
PIXEL11
PIXEL20_1M
jmp .loopx_end
..@flag207
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
PIXEL11
PIXEL12_1
PIXEL20_1M
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag238
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
PIXEL00_1M
PIXEL01_C
PIXEL02_1R
PIXEL11
PIXEL12_1
jmp .loopx_end
..@flag190
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
PIXEL00_1M
PIXEL10_C
PIXEL11
PIXEL20_1D
PIXEL21_1
jmp .loopx_end
..@flag187
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
PIXEL02_1M
PIXEL11
PIXEL12_C
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag243
DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
PIXEL00_1L
PIXEL01_C
PIXEL02_1M
PIXEL10_1
PIXEL11
jmp .loopx_end
..@flag119
DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
PIXEL10_1
PIXEL11
PIXEL20_1L
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag237
..@flag233
PIXEL00_1U
PIXEL01_1
PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag175
..@flag47
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
PIXEL20_1D
PIXEL21_1
PIXEL22_2
jmp .loopx_end
..@flag183
..@flag151
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_2
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag245
..@flag244
PIXEL00_2
PIXEL01_1
PIXEL02_1U
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@flag250
PIXEL00_1M
PIXEL01_C
PIXEL02_1M
PIXEL11
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
PIXEL21_C
DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
jmp .loopx_end
..@flag123
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag95
DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
PIXEL11
PIXEL20_1M
PIXEL21_C
PIXEL22_1M
jmp .loopx_end
..@flag222
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1M
DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag252
PIXEL00_1M
PIXEL01_1
PIXEL02_1U
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@flag249
PIXEL00_1U
PIXEL01_1
PIXEL02_1M
PIXEL10_C
PIXEL11
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
jmp .loopx_end
..@flag235
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
PIXEL02_1M
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag111
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag63
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
PIXEL10_C
PIXEL11
PIXEL20_1D
PIXEL21_1
PIXEL22_1M
jmp .loopx_end
..@flag159
DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL11
PIXEL12_C
PIXEL20_1M
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag215
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1M
DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag246
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@flag254
PIXEL00_1M
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
PIXEL11
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_2
jmp .loopx_end
..@flag253
PIXEL00_1U
PIXEL01_1
PIXEL02_1U
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@flag251
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
PIXEL02_1M
PIXEL11
DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_2,PIXEL21_3
DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
jmp .loopx_end
..@flag239
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
PIXEL02_1R
PIXEL10_C
PIXEL11
PIXEL12_1
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
PIXEL22_1R
jmp .loopx_end
..@flag127
DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_2,PIXEL01_3,PIXEL10_3
DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
PIXEL11
DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
PIXEL22_1M
jmp .loopx_end
..@flag191
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
PIXEL20_1D
PIXEL21_1
PIXEL22_1D
jmp .loopx_end
..@flag223
DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_2,PIXEL12_3
PIXEL11
PIXEL20_1M
DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
jmp .loopx_end
..@flag247
PIXEL00_1L
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL10_1
PIXEL11
PIXEL12_C
PIXEL20_1L
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@flag255
DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
PIXEL01_C
DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
PIXEL10_C
PIXEL11
PIXEL12_C
DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
PIXEL21_C
DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
jmp .loopx_end
..@cross0
mov ebx,[NumBytesPerLine]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],eax
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],eax
jmp .loopx_end
..@cross1
mov ecx,[w2]
mov edx,eax
shl edx,2
add edx,[ebx+ecx*4]
sub edx,eax
shr edx,2
mov ebx,[NumBytesPerLine]
mov [edi],edx
mov [edi+4],edx
mov [edi+8],edx
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],eax
jmp .loopx_end
..@cross2
mov ecx,[w4]
mov edx,eax
shl edx,2
add edx,[ebx+ecx*4]
sub edx,eax
shr edx,2
mov ebx,[NumBytesPerLine]
mov [edi],edx
mov [edi+4],eax
mov [edi+8],eax
mov [edi+ebx],edx
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2],edx
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],eax
jmp .loopx_end
..@cross4
mov ecx,[w6]
mov edx,eax
shl edx,2
add edx,[ebx+ecx*4]
sub edx,eax
shr edx,2
mov ebx,[NumBytesPerLine]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],edx
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],edx
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],edx
jmp .loopx_end
..@cross8
mov ecx,[w8]
mov edx,eax
shl edx,2
add edx,[ebx+ecx*4]
sub edx,eax
shr edx,2
mov ebx,[NumBytesPerLine]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],eax
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2],edx
mov [edi+ebx*2+4],edx
mov [edi+ebx*2+8],edx
jmp .loopx_end
..@crossN
mov edx,[w2]
mov ecx,[ebx+edx*4]
mov [c2],ecx
mov edx,[w4]
mov ecx,[ebx+edx*4]
mov [c4],ecx
mov edx,[w6]
mov ecx,[ebx+edx*4]
mov [c6],ecx
mov edx,[w8]
mov ecx,[ebx+edx*4]
mov [c8],ecx
mov ebx,[NumBytesPerLine]
jmp ..@flag0
.loopx_end
add esi,2
add dword[deltaptr],2
add edi,12
dec dword[xcounter]
jle .xres_2
jmp .loopx
.xres_2
; x=Xres-2 - special case
jl near .xres_1
mov edx,[deltaptr]
mov ecx,[prevline]
mov eax,[nextline]
movq mm2,[esi+ecx-4]
movq mm3,[esi-4]
movq mm4,[esi+eax-4]
movq mm5,mm2
movq mm6,mm3
movq mm7,mm4
pcmpeqw mm2,[edx+ecx-4]
pcmpeqw mm3,[edx-4]
pcmpeqw mm4,[edx+eax-4]
pand mm2,mm3
pand mm2,mm4
psrlq mm2,16
movd ebx,mm2
psrlq mm2,32
movd eax,mm2
cwde
and eax,ebx
inc eax
jz .loopx_end
psrlq mm5,16
psrlq mm6,16
psrlq mm7,16
movd eax,mm5
mov [edx+ecx-2],ax
movzx edx,ax
mov [w1],edx
shr eax,16
mov [w2],eax
psrlq mm5,32
movd eax,mm5
mov [w3],eax
movd eax,mm6
movzx edx,ax
mov [w4],edx
shr eax,16
mov [w5],eax
psrlq mm6,32
movd eax,mm6
mov [w6],eax
movd eax,mm7
movzx edx,ax
mov [w7],edx
shr eax,16
mov [w8],eax
psrlq mm7,32
movd eax,mm7
mov [w9],eax
jmp .flags
.xres_1
cmp dword[xcounter],-1
jl near .endofline
; x=Xres-1 - special case
mov edx,[deltaptr]
mov ecx,[prevline]
mov eax,[nextline]
movq mm2,[esi+ecx-6]
movq mm3,[esi-6]
movq mm4,[esi+eax-6]
movq mm5,mm2
movq mm6,mm3
movq mm7,mm4
pcmpeqw mm2,[edx+ecx-6]
pcmpeqw mm3,[edx-6]
pcmpeqw mm4,[edx+eax-6]
pand mm2,mm3
pand mm2,mm4
psrlq mm2,32
movd eax,mm2
inc eax
jz .loopx_end
psrlq mm5,32
psrlq mm6,32
psrlq mm7,32
movd eax,mm5
mov [edx+ecx-2],eax
movzx edx,ax
mov [w1],edx
shr eax,16
mov [w2],eax
mov [w3],eax
movd eax,mm6
movzx edx,ax
mov [w4],edx
shr eax,16
mov [w5],eax
mov [w6],eax
movd eax,mm7
movzx edx,ax
mov [w7],edx
shr eax,16
mov [w8],eax
mov [w9],eax
jmp .flags
.endofline
mov ebx,[NumBytesPerLine]
.nexty
add esi,64
add dword[deltaptr],64
add edi,[AddEndBytes]
add edi,ebx
add edi,ebx
mov ebx,[InterPtr]
inc ebx
dec byte[lineleft]
jz .fin
cmp byte[lineleft],1
je .lastline
mov dword[nextline],576
mov dword[prevline],-576
jmp .loopy
.lastline
mov dword[nextline],0
mov dword[prevline],-576
jmp .loopy
.fin
emms
popad
ret
HighResProc:
mov ecx,256
cmp byte[ebx],3
je near .hiresmode7
cmp byte[ebx],7
je near .hiresmode7
test byte[ebx],3
jnz near .hires
mov ebx,[NumBytesPerLine]
test byte[cfield],1
jnz .cfield1
.cfield0
movzx eax,word[esi]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],eax
mov [edi+ebx],eax
mov [edi+ebx+4],eax
mov [edi+ebx+8],eax
add esi,2
add edi,12
dec ecx
jnz .cfield0
ret
.cfield1
movzx eax,word[esi]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],eax
mov [edi+ebx*2+8],eax
add esi,2
add edi,12
dec ecx
jnz .cfield1
ret
.hiresmode7
mov ebx,[NumBytesPerLine]
.a
movzx eax,word[esi]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi],eax
mov [edi+4],eax
mov [edi+8],eax
movzx edx,word[esi+75036*4]
shl edx,2
add edx,[BitConv32Ptr]
mov edx,[edx]
mov [edi+ebx*2],edx
mov [edi+ebx*2+4],edx
mov [edi+ebx*2+8],edx
add edx,eax
shr edx,1
mov [edi+ebx],edx
mov [edi+ebx+4],edx
mov [edi+ebx+8],edx
add esi,2
add edi,12
dec ecx
jnz .a
ret
.hires
test byte[ebx],4
jnz .m56
mov ebx,[NumBytesPerLine]
.bng
movzx eax, word[esi+75036*4]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi+8],eax
mov [edi+ebx+8],eax
mov [edi+ebx*2+8],eax
movzx edx, word[esi]
shl edx,2
add edx,[BitConv32Ptr]
mov edx,[edx]
mov [edi],edx
mov [edi+ebx],edx
mov [edi+ebx*2],edx
add edx,eax
shr edx,1
mov [edi+4],edx
mov [edi+ebx+4],edx
mov [edi+ebx*2+4],edx
add esi,2
add edi,12
dec ecx
jnz .bng
ret
.m56
mov ebx,[NumBytesPerLine]
test byte[cfield],1
jnz .cfield1hr
.cfield0hr
movzx eax, word[esi+75036*4]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi+8],eax
mov [edi+ebx+8],eax
movzx edx, word[esi]
shl edx,2
add edx,[BitConv32Ptr]
mov edx,[edx]
mov [edi],edx
mov [edi+ebx],edx
add edx,eax
shr edx,1
mov [edi+4],edx
mov [edi+ebx+4],edx
add esi,2
add edi,12
dec ecx
jnz .cfield0hr
ret
.cfield1hr
movzx eax, word[esi+75036*4]
shl eax,2
add eax,[BitConv32Ptr]
mov eax,[eax]
mov [edi+ebx*2+8],eax
movzx edx, word[esi]
shl edx,2
add edx,[BitConv32Ptr]
mov edx,[edx]
mov [edi+ebx*2],edx
add edx,eax
shr edx,1
mov [edi+ebx*2+4],edx
add esi,2
add edi,12
dec ecx
jnz .cfield1hr
ret
SECTION .data
FuncTable:
dd ..@flag0, ..@flag1, ..@flag2, ..@flag3, ..@flag4, ..@flag5, ..@flag6, ..@flag7
dd ..@flag8, ..@flag9, ..@flag10, ..@flag11, ..@flag12, ..@flag13, ..@flag14, ..@flag15
dd ..@flag16, ..@flag17, ..@flag18, ..@flag19, ..@flag20, ..@flag21, ..@flag22, ..@flag23
dd ..@flag24, ..@flag25, ..@flag26, ..@flag27, ..@flag28, ..@flag29, ..@flag30, ..@flag31
dd ..@flag32, ..@flag33, ..@flag34, ..@flag35, ..@flag36, ..@flag37, ..@flag38, ..@flag39
dd ..@flag40, ..@flag41, ..@flag42, ..@flag43, ..@flag44, ..@flag45, ..@flag46, ..@flag47
dd ..@flag48, ..@flag49, ..@flag50, ..@flag51, ..@flag52, ..@flag53, ..@flag54, ..@flag55
dd ..@flag56, ..@flag57, ..@flag58, ..@flag59, ..@flag60, ..@flag61, ..@flag62, ..@flag63
dd ..@flag64, ..@flag65, ..@flag66, ..@flag67, ..@flag68, ..@flag69, ..@flag70, ..@flag71
dd ..@flag72, ..@flag73, ..@flag74, ..@flag75, ..@flag76, ..@flag77, ..@flag78, ..@flag79
dd ..@flag80, ..@flag81, ..@flag82, ..@flag83, ..@flag84, ..@flag85, ..@flag86, ..@flag87
dd ..@flag88, ..@flag89, ..@flag90, ..@flag91, ..@flag92, ..@flag93, ..@flag94, ..@flag95
dd ..@flag96, ..@flag97, ..@flag98, ..@flag99, ..@flag100, ..@flag101, ..@flag102, ..@flag103
dd ..@flag104, ..@flag105, ..@flag106, ..@flag107, ..@flag108, ..@flag109, ..@flag110, ..@flag111
dd ..@flag112, ..@flag113, ..@flag114, ..@flag115, ..@flag116, ..@flag117, ..@flag118, ..@flag119
dd ..@flag120, ..@flag121, ..@flag122, ..@flag123, ..@flag124, ..@flag125, ..@flag126, ..@flag127
dd ..@flag128, ..@flag129, ..@flag130, ..@flag131, ..@flag132, ..@flag133, ..@flag134, ..@flag135
dd ..@flag136, ..@flag137, ..@flag138, ..@flag139, ..@flag140, ..@flag141, ..@flag142, ..@flag143
dd ..@flag144, ..@flag145, ..@flag146, ..@flag147, ..@flag148, ..@flag149, ..@flag150, ..@flag151
dd ..@flag152, ..@flag153, ..@flag154, ..@flag155, ..@flag156, ..@flag157, ..@flag158, ..@flag159
dd ..@flag160, ..@flag161, ..@flag162, ..@flag163, ..@flag164, ..@flag165, ..@flag166, ..@flag167
dd ..@flag168, ..@flag169, ..@flag170, ..@flag171, ..@flag172, ..@flag173, ..@flag174, ..@flag175
dd ..@flag176, ..@flag177, ..@flag178, ..@flag179, ..@flag180, ..@flag181, ..@flag182, ..@flag183
dd ..@flag184, ..@flag185, ..@flag186, ..@flag187, ..@flag188, ..@flag189, ..@flag190, ..@flag191
dd ..@flag192, ..@flag193, ..@flag194, ..@flag195, ..@flag196, ..@flag197, ..@flag198, ..@flag199
dd ..@flag200, ..@flag201, ..@flag202, ..@flag203, ..@flag204, ..@flag205, ..@flag206, ..@flag207
dd ..@flag208, ..@flag209, ..@flag210, ..@flag211, ..@flag212, ..@flag213, ..@flag214, ..@flag215
dd ..@flag216, ..@flag217, ..@flag218, ..@flag219, ..@flag220, ..@flag221, ..@flag222, ..@flag223
dd ..@flag224, ..@flag225, ..@flag226, ..@flag227, ..@flag228, ..@flag229, ..@flag230, ..@flag231
dd ..@flag232, ..@flag233, ..@flag234, ..@flag235, ..@flag236, ..@flag237, ..@flag238, ..@flag239
dd ..@flag240, ..@flag241, ..@flag242, ..@flag243, ..@flag244, ..@flag245, ..@flag246, ..@flag247
dd ..@flag248, ..@flag249, ..@flag250, ..@flag251, ..@flag252, ..@flag253, ..@flag254, ..@flag255
FuncTable2:
dd ..@cross0, ..@cross1, ..@cross2, ..@crossN,
dd ..@cross4, ..@crossN, ..@crossN, ..@crossN,
dd ..@cross8, ..@crossN, ..@crossN, ..@crossN,
dd ..@crossN, ..@crossN, ..@crossN, ..@crossN
SECTION .bss
InterPtr resd 1
SECTION .text