Files
ZSNES/zsnes/src/video/hq3x16.asm
2005-01-03 18:11:49 +00:00

2760 lines
54 KiB
NASM

;Copyright (C) 1997-2005 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
;
;zsknight@zsnes.com
;_demo_@zsnes.com
;pagefault@zsnes.com
;n-a-c-h@users.sf.net
;
;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,
EXTSYM vidbufferofsb
EXTSYM FilteredGUI,resolutn,lineleft,cfield
EXTSYM hirestiledat,newengen,SpecialLine,HalfTrans
EXTSYM hqFilter
EXTSYM AddEndBytes
EXTSYM NumBytesPerLine
EXTSYM WinVidMemStart
EXTSYM BitConv32Ptr
EXTSYM RGBtoYUVPtr
EXTSYM prevline, nextline, deltaptr, xcounter
EXTSYM w1, w2, w3, w4, w5, w6, w7, w8, w9
EXTSYM 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
mov ecx,%3
cmp edx,ecx
je %%fin
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
%%fin
mov %1,dx
%endmacro
%macro Interp2 4
mov edx,%3
mov ecx,%4
cmp edx,ecx
je %%fin1
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
%%fin1
mov edx,%2
cmp edx,ecx
je %%fin2
and ecx,[HalfTrans]
and edx,[HalfTrans]
add edx,ecx
shr edx,1
%%fin2
mov %1,dx
%endmacro
%macro Interp3 2
mov ecx, [BitConv32Ptr]
movd mm1, [ecx+eax*4]
mov edx, %2
movd mm2, [ecx+edx*4]
punpcklbw mm1, [reg_blank]
punpcklbw mm2, [reg_blank]
pmullw mm1, [const7]
paddw mm1, mm2
psrlw mm1, 5
packuswb mm1, [reg_blank]
movd edx, mm1
shl dl, 2
shr edx, 1
shl dx, 3
shr edx, 5
mov %1, dx
%endmacro
%macro Interp4 3
mov ecx, [BitConv32Ptr]
movd mm1, [ecx+eax*4]
mov edx, %2
movd mm2, [ecx+edx*4]
mov edx, %3
movd mm3, [ecx+edx*4]
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, 6
packuswb mm1, [reg_blank]
movd edx, mm1
shl dl, 2
shr edx, 1
shl dx, 3
shr edx, 5
mov %1, dx
%endmacro
%macro Interp5 3
mov edx,%2
mov ecx,%3
cmp edx,ecx
je %%fin
and edx,[HalfTrans]
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
%%fin
mov %1,dx
%endmacro
%macro PIXEL00_1M 0
Interp1 [edi],eax,[w1]
%endmacro
%macro PIXEL00_1U 0
Interp1 [edi],eax,[w2]
%endmacro
%macro PIXEL00_1L 0
Interp1 [edi],eax,[w4]
%endmacro
%macro PIXEL00_2 0
Interp2 [edi],eax,[w4],[w2]
%endmacro
%macro PIXEL00_4 0
Interp4 [edi],[w4],[w2]
%endmacro
%macro PIXEL00_5 0
Interp5 [edi],[w4],[w2]
%endmacro
%macro PIXEL00_C 0
mov [edi],ax
%endmacro
%macro PIXEL01_1 0
Interp1 [edi+2],eax,[w2]
%endmacro
%macro PIXEL01_3 0
Interp3 [edi+2],[w2]
%endmacro
%macro PIXEL01_6 0
Interp1 [edi+2],[w2],eax
%endmacro
%macro PIXEL01_C 0
mov [edi+2],ax
%endmacro
%macro PIXEL02_1M 0
Interp1 [edi+4],eax,[w3]
%endmacro
%macro PIXEL02_1U 0
Interp1 [edi+4],eax,[w2]
%endmacro
%macro PIXEL02_1R 0
Interp1 [edi+4],eax,[w6]
%endmacro
%macro PIXEL02_2 0
Interp2 [edi+4],eax,[w2],[w6]
%endmacro
%macro PIXEL02_4 0
Interp4 [edi+4],[w2],[w6]
%endmacro
%macro PIXEL02_5 0
Interp5 [edi+4],[w2],[w6]
%endmacro
%macro PIXEL02_C 0
mov [edi+4],ax
%endmacro
%macro PIXEL10_1 0
Interp1 [edi+ebx],eax,[w4]
%endmacro
%macro PIXEL10_3 0
Interp3 [edi+ebx],[w4]
%endmacro
%macro PIXEL10_6 0
Interp1 [edi+ebx],[w4],eax
%endmacro
%macro PIXEL10_C 0
mov [edi+ebx],ax
%endmacro
%macro PIXEL11 0
mov [edi+ebx+2],ax
%endmacro
%macro PIXEL12_1 0
Interp1 [edi+ebx+4],eax,[w6]
%endmacro
%macro PIXEL12_3 0
Interp3 [edi+ebx+4],[w6]
%endmacro
%macro PIXEL12_6 0
Interp1 [edi+ebx+4],[w6],eax
%endmacro
%macro PIXEL12_C 0
mov [edi+ebx+4],ax
%endmacro
%macro PIXEL20_1M 0
Interp1 [edi+ebx*2],eax,[w7]
%endmacro
%macro PIXEL20_1D 0
Interp1 [edi+ebx*2],eax,[w8]
%endmacro
%macro PIXEL20_1L 0
Interp1 [edi+ebx*2],eax,[w4]
%endmacro
%macro PIXEL20_2 0
Interp2 [edi+ebx*2],eax,[w8],[w4]
%endmacro
%macro PIXEL20_4 0
Interp4 [edi+ebx*2],[w8],[w4]
%endmacro
%macro PIXEL20_5 0
Interp5 [edi+ebx*2],[w8],[w4]
%endmacro
%macro PIXEL20_C 0
mov [edi+ebx*2],ax
%endmacro
%macro PIXEL21_1 0
Interp1 [edi+ebx*2+2],eax,[w8]
%endmacro
%macro PIXEL21_3 0
Interp3 [edi+ebx*2+2],[w8]
%endmacro
%macro PIXEL21_6 0
Interp1 [edi+ebx*2+2],[w8],eax
%endmacro
%macro PIXEL21_C 0
mov [edi+ebx*2+2],ax
%endmacro
%macro PIXEL22_1M 0
Interp1 [edi+ebx*2+4],eax,[w9]
%endmacro
%macro PIXEL22_1D 0
Interp1 [edi+ebx*2+4],eax,[w8]
%endmacro
%macro PIXEL22_1R 0
Interp1 [edi+ebx*2+4],eax,[w6]
%endmacro
%macro PIXEL22_2 0
Interp2 [edi+ebx*2+4],eax,[w6],[w8]
%endmacro
%macro PIXEL22_4 0
Interp4 [edi+ebx*2+4],[w6],[w8]
%endmacro
%macro PIXEL22_5 0
Interp5 [edi+ebx*2+4],[w6],[w8]
%endmacro
%macro PIXEL22_C 0
mov [edi+ebx*2+4],ax
%endmacro
NEWSYM hq3x_16b
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 ebx,[NumBytesPerLine]
.loopy
mov ecx,256
.loopx
mov ax,[esi]
shl eax,16
mov ax,[esi]
mov [edi],eax
mov [edi+ebx],eax
mov [edi+ebx*2],eax
mov [edi+4],ax
mov [edi+ebx+4],ax
mov [edi+ebx*2+4],ax
add esi,2
add edi,6
dec ecx
jnz .loopx
add edi,[AddEndBytes]
add edi,ebx
add edi,ebx
add esi,64
dec dl
jnz near .loopy
popad
ret
;----------------------------;
hq3x:
mov dl,[resolutn]
mov byte[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,[NumBytesPerLine]
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,[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
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 edx,eax
shl eax,16
or eax,edx
mov [edi],eax
mov [edi+4],ax
mov [edi+ebx],eax
mov [edi+ebx+4],ax
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],ax
jmp .loopx_end
..@cross1
mov edx,eax
shl eax,16
or eax,edx
mov ecx,[w2]
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
mov [edi],dx
mov [edi+2],dx
mov [edi+4],dx
mov [edi+ebx],eax
mov [edi+ebx+4],ax
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],ax
jmp .loopx_end
..@cross2
mov edx,eax
shl eax,16
or eax,edx
mov ecx,[w4]
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
mov [edi],dx
mov [edi+2],eax
mov [edi+ebx],dx
mov [edi+ebx+2],eax
mov [edi+ebx*2],dx
mov [edi+ebx*2+2],eax
jmp .loopx_end
..@cross4
mov edx,eax
shl eax,16
or eax,edx
mov ecx,[w6]
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
mov [edi],eax
mov [edi+4],dx
mov [edi+ebx],eax
mov [edi+ebx+4],dx
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],dx
jmp .loopx_end
..@cross8
mov edx,eax
shl eax,16
or eax,edx
mov ecx,[w8]
and edx,[HalfTrans]
and ecx,[HalfTrans]
add ecx,edx
shr ecx,1
add ecx,0x0821
and ecx,[HalfTrans]
add edx,ecx
shr edx,1
mov [edi],eax
mov [edi+4],ax
mov [edi+ebx],eax
mov [edi+ebx+4],ax
mov [edi+ebx*2],dx
mov [edi+ebx*2+2],dx
mov [edi+ebx*2+4],dx
jmp .loopx_end
.loopx_end
add esi,2
add dword[deltaptr],2
add edi,6
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
mov ax,[esi]
shl eax,16
mov ax,[esi]
mov [edi],eax
mov [edi+ebx],eax
mov [edi+4],ax
mov [edi+ebx+4],ax
add esi,2
add edi,6
dec ecx
jnz .cfield0
ret
.cfield1
mov ax,[esi]
shl eax,16
mov ax,[esi]
mov [edi+ebx*2],eax
mov [edi+ebx*2+4],ax
add esi,2
add edi,6
dec ecx
jnz .cfield1
ret
.hiresmode7
mov ebx,[NumBytesPerLine]
.a
mov ax,[esi]
shl eax,16
mov ax,[esi]
mov [edi],eax
mov [edi+4],ax
mov dx,[esi+75036*4]
shl edx,16
mov dx,[esi+75036*4]
mov [edi+ebx*2],edx
mov [edi+ebx*2+4],dx
and edx,[HalfTrans]
and eax,[HalfTrans]
add edx,eax
shr edx,1
mov [edi+ebx],edx
mov [edi+ebx+4],dx
add esi,2
add edi,6
dec ecx
jnz .a
ret
.hires
test byte[ebx],4
jnz .m56
mov ebx,[NumBytesPerLine]
.bng
movzx eax, word[esi+75036*4]
mov [edi+4],ax
mov [edi+ebx+4],ax
mov [edi+ebx*2+4],ax
movzx edx, word[esi]
and edx,[HalfTrans]
and eax,[HalfTrans]
add edx,eax
shl edx,15
mov dx,[esi]
mov [edi],edx
mov [edi+ebx],edx
mov [edi+ebx*2],edx
add esi,2
add edi,6
dec ecx
jnz .bng
ret
.m56
mov ebx,[NumBytesPerLine]
test byte[cfield],1
jnz .cfield1hr
.cfield0hr
movzx eax, word[esi+75036*4]
mov [edi+4],ax
mov [edi+ebx+4],ax
movzx edx, word[esi]
and edx,[HalfTrans]
and eax,[HalfTrans]
add edx,eax
shl edx,15
mov dx,[esi]
mov [edi],edx
mov [edi+ebx],edx
add esi,2
add edi,6
dec ecx
jnz .cfield0hr
ret
.cfield1hr
movzx eax, word[esi+75036*4]
mov [edi+ebx*2+4],ax
movzx edx, word[esi]
and edx,[HalfTrans]
and eax,[HalfTrans]
add edx,eax
shl edx,15
mov dx,[esi]
mov [edi+ebx*2],edx
add esi,2
add edi,6
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, ..@flag0,
dd ..@cross4, ..@flag0, ..@flag0, ..@flag0,
dd ..@cross8, ..@flag0, ..@flag0, ..@flag0,
dd ..@flag0, ..@flag0, ..@flag0, ..@flag0
SECTION .bss
InterPtr resd 1
SECTION .text