https://github.com/scummvm/scummvm
Raw File
Tip revision: 5dbefa955166e4b22207d117104181d044f5590a authored by Lothar Serra Mari on 16 July 2022, 20:03:12 UTC
DISTS: Generated Code::Blocks and MSVC project files
Tip revision: 5dbefa9
hq2x_i386.asm
;hq2x filter
;16bpp output
;----------------------------------------------------------
;Copyright (C) 2003 MaxSt ( maxst@hiend3d.com )
;
;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.

GLOBAL _hq2x_16

SECTION .text

thresholdVal0        equ 0x00300706
thresholdVal1        equ 0x00000000

; Function variables space

w1                   equ -112
w2                   equ -108
w3                   equ -104
w4                   equ -100
w5                   equ -96
w6                   equ -92
w7                   equ -88
w8                   equ -84
w9                   equ -80
linesleft            equ -76
xcounter             equ -72
cross                equ -68
nextline             equ -64
prevline             equ -60
moduloSrc            equ -56
moduloDst            equ -52
threshold            equ -48
; threshold is 64bits
pFuncTable2          equ -40
pFuncTable           equ -36

; the following variables must match hqx_parameters structure
; Address of the whole structure
hqx_params_          equ -32
RGBtoYUV             equ -32
highbits             equ -28
lowbits              equ -24
low2bits             equ -20
low3bits             equ -16
greenMask            equ -12
redBlueMask          equ -8
green_redBlue_Mask   equ -4

inbuffer     equ 8
outbuffer    equ 12
Xres         equ 16
Yres         equ 20
srcPitch     equ 24
dstPitch     equ 28
hqx_params   equ 32

%macro TestDiff 2
    xor     ecx,ecx
    mov     edx,[%1]
    cmp     edx,[%2]
    je      %%fin
    mov     ecx,[ebp+RGBtoYUV]
    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,[ebp+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

; interpolate16_3_1
; Mix two pixels with weight 3 and 1, respectively: (c1*3+c2)/4;
; Note: This implementation is not completely accurate, it sacrifices
; some accuracy for raw speed.
%macro Interp1 3
    mov edx,%2
    mov ecx,%3
    and edx,[ebp+highbits]
    and ecx,[ebp+highbits]
    add ecx,edx
    shr ecx,1
    add ecx,[ebp+lowbits]
    and ecx,[ebp+highbits]
    add edx,ecx
    shr edx,1
    mov %1,dx
%endmacro

; interpolate16_2_1_1
; Mix three pixels with weight 2, 1, and 1, respectively: (c1*2+c2+c3)/4;
; Note: This implementation is not completely accurate, it sacrifices
; some accuracy for raw speed.
%macro Interp2 4
    mov edx,%3
    mov ecx,%4
    and edx,[ebp+highbits]
    and ecx,[ebp+highbits]
    add ecx,edx
    shr ecx,1
    add ecx,[ebp+lowbits]
    mov edx,%2
    and ecx,[ebp+highbits]
    and edx,[ebp+highbits]
    add edx,ecx
    shr edx,1
    mov %1,dx
%endmacro

; interpolate16_5_2_1
; Mix three pixels with weight 5, 2, and 1, respectively: (c1*5+c2*2+c3)/8;
%macro Interp6 3
	; Unpack eax to ecx
	mov ecx, eax
	shl ecx, 16
	or  ecx, eax
	and ecx, [ebp+green_redBlue_Mask]

	; multiply c1 by 5
	lea ecx, [5*ecx]

	; unpack c2 to edx
	mov edx, %2
	shl edx, 16
	or  edx, %2
	and edx, [ebp+green_redBlue_Mask]

	; add 2*c2 to 5*c1
	lea ecx, [ecx + 2*edx]

	; unpack c3 to edx
	mov edx, %3
	shl edx, 16
	or  edx, %3
	and edx, [ebp+green_redBlue_Mask]

	; add c3 and 2*c2+c1*5, divide by 8, mask the result
	add edx, ecx
	shr edx, 3
	and edx, [ebp+green_redBlue_Mask]

	; finally, repack the mixed pixel
	mov ecx, edx
	shr ecx, 16
	or  edx, ecx

    mov %1,  dx
%endmacro

; interpolate16_6_1_1
; Mix three pixels with weight 6, 1, and 1, respectively: (c1*6+c2+c3)/8;
%macro Interp7 3
	; unpack c1 to ecx
	mov ecx, eax
	shl ecx, 16
	or  ecx, eax
	and ecx, [ebp+green_redBlue_Mask]

	; multiply c1 by 6
	lea ecx, [3*ecx]		; mul by 3
	add ecx, ecx			; mul by 2

	; unpack c2 to edx
	mov edx, %2
	shl edx, 16
	or  edx, %2
	and edx, [ebp+green_redBlue_Mask]

	; add c2 to c1*6
	add ecx, edx

	; unpack c3 to edx
	mov edx, %3
	shl edx, 16
	or  edx, %3
	and edx, [ebp+green_redBlue_Mask]

	; add c3 and c2+c1*3, divide by 8, mask the result
	add edx, ecx
	shr edx, 3
	and edx, [ebp+green_redBlue_Mask]

	; finally, repack the mixed pixel
	mov ecx, edx
	shr ecx, 16
	or  edx, ecx

    mov %1,  dx
%endmacro

; interpolate16_2_3_3
; Mix three pixels with weight 2, 3, and 3, respectively: (c1*2+(c2+c3)*3)/8;
%macro Interp9 3
	; unpack c2 to edx
	mov edx, %2
	shl edx, 16
	or  edx, %2
	and edx, [ebp+green_redBlue_Mask]

	; unpack c3 to ecx
	mov ecx, %3
	shl ecx, 16
	or  ecx, %3
	and ecx, [ebp+green_redBlue_Mask]

	; set edx to 3*(c2+c3)
	add edx, ecx
	lea edx, [3*edx]

	; unpack c1 to ecx
	mov ecx, eax
	shl ecx, 16
	or  ecx, eax
	and ecx, [ebp+green_redBlue_Mask]

	; sum 2*c1 + 3*(c2+c3), divide by 8, mask the result
	lea edx, [edx + 2*ecx]
	shr edx, 3
	and edx, [ebp+green_redBlue_Mask]

	; finally, repack the mixed pixel
	mov ecx, edx
	shr ecx, 16
	or  edx, ecx

    mov %1,  dx
%endmacro

; interpolate16_14_1_1
; Mix three pixels with weight 14, 1, and 1, respectively: (c1*14+c2+c3)/16;
%macro Interp10 3
	; unpack c1 to edx
	mov edx, eax
	shl edx, 16
	or  edx, eax
	and edx, [ebp+green_redBlue_Mask]

	; multiply c1 by 7 -> store in ecx
	lea ecx, [8*edx]
	sub ecx, edx

	; unpack c2 to edx
	mov edx, %2
	shl edx, 16
	or  edx, %2
	and edx, [ebp+green_redBlue_Mask]

	; add c2 to 2*ecx=2*(c1*7)=c1*14 -> store in ecx
	lea ecx, [edx + 2*ecx]

	; unpack c3 to edx
	mov edx, %3
	shl edx, 16
	or  edx, %3
	and edx, [ebp+green_redBlue_Mask]

	; add c3 and c2+c1*14, divide by 16, mask the result
	add edx, ecx
	shr edx, 4
	and edx, [ebp+green_redBlue_Mask]

	; finally, repack the mixed pixel
	mov ecx, edx
	shr ecx, 16
	or  edx, ecx

    mov %1,  dx
%endmacro

%macro PIXEL00_0 0
    mov [edi],ax
%endmacro

%macro PIXEL00_10 0
    Interp1 [edi],eax,[ebp+w1]
%endmacro

%macro PIXEL00_11 0
    Interp1 [edi],eax,[ebp+w4]
%endmacro

%macro PIXEL00_12 0
    Interp1 [edi],eax,[ebp+w2]
%endmacro

%macro PIXEL00_20 0
    Interp2 [edi],eax,[ebp+w4],[ebp+w2]
%endmacro

%macro PIXEL00_21 0
    Interp2 [edi],eax,[ebp+w1],[ebp+w2]
%endmacro

%macro PIXEL00_22 0
    Interp2 [edi],eax,[ebp+w1],[ebp+w4]
%endmacro

%macro PIXEL00_60 0
    Interp6 [edi],[ebp+w2],[ebp+w4]
%endmacro

%macro PIXEL00_61 0
    Interp6 [edi],[ebp+w4],[ebp+w2]
%endmacro

%macro PIXEL00_70 0
    Interp7 [edi],[ebp+w4],[ebp+w2]
%endmacro

%macro PIXEL00_90 0
    Interp9 [edi],[ebp+w4],[ebp+w2]
%endmacro

%macro PIXEL00_100 0
    Interp10 [edi],[ebp+w4],[ebp+w2]
%endmacro

%macro PIXEL01_0 0
    mov [edi+2],ax
%endmacro

%macro PIXEL01_10 0
    Interp1 [edi+2],eax,[ebp+w3]
%endmacro

%macro PIXEL01_11 0
    Interp1 [edi+2],eax,[ebp+w2]
%endmacro

%macro PIXEL01_12 0
    Interp1 [edi+2],eax,[ebp+w6]
%endmacro

%macro PIXEL01_20 0
    Interp2 [edi+2],eax,[ebp+w2],[ebp+w6]
%endmacro

%macro PIXEL01_21 0
    Interp2 [edi+2],eax,[ebp+w3],[ebp+w6]
%endmacro

%macro PIXEL01_22 0
    Interp2 [edi+2],eax,[ebp+w3],[ebp+w2]
%endmacro

%macro PIXEL01_60 0
    Interp6 [edi+2],[ebp+w6],[ebp+w2]
%endmacro

%macro PIXEL01_61 0
    Interp6 [edi+2],[ebp+w2],[ebp+w6]
%endmacro

%macro PIXEL01_70 0
    Interp7 [edi+2],[ebp+w2],[ebp+w6]
%endmacro

%macro PIXEL01_90 0
    Interp9 [edi+2],[ebp+w2],[ebp+w6]
%endmacro

%macro PIXEL01_100 0
    Interp10 [edi+2],[ebp+w2],[ebp+w6]
%endmacro

%macro PIXEL10_0 0
    mov [edi+ebx],ax
%endmacro

%macro PIXEL10_10 0
    Interp1 [edi+ebx],eax,[ebp+w7]
%endmacro

%macro PIXEL10_11 0
    Interp1 [edi+ebx],eax,[ebp+w8]
%endmacro

%macro PIXEL10_12 0
    Interp1 [edi+ebx],eax,[ebp+w4]
%endmacro

%macro PIXEL10_20 0
    Interp2 [edi+ebx],eax,[ebp+w8],[ebp+w4]
%endmacro

%macro PIXEL10_21 0
    Interp2 [edi+ebx],eax,[ebp+w7],[ebp+w4]
%endmacro

%macro PIXEL10_22 0
    Interp2 [edi+ebx],eax,[ebp+w7],[ebp+w8]
%endmacro

%macro PIXEL10_60 0
    Interp6 [edi+ebx],[ebp+w4],[ebp+w8]
%endmacro

%macro PIXEL10_61 0
    Interp6 [edi+ebx],[ebp+w8],[ebp+w4]
%endmacro

%macro PIXEL10_70 0
    Interp7 [edi+ebx],[ebp+w8],[ebp+w4]
%endmacro

%macro PIXEL10_90 0
    Interp9 [edi+ebx],[ebp+w8],[ebp+w4]
%endmacro

%macro PIXEL10_100 0
    Interp10 [edi+ebx],[ebp+w8],[ebp+w4]
%endmacro

%macro PIXEL11_0 0
    mov [edi+ebx+2],ax
%endmacro

%macro PIXEL11_10 0
    Interp1 [edi+ebx+2],eax,[ebp+w9]
%endmacro

%macro PIXEL11_11 0
    Interp1 [edi+ebx+2],eax,[ebp+w6]
%endmacro

%macro PIXEL11_12 0
    Interp1 [edi+ebx+2],eax,[ebp+w8]
%endmacro

%macro PIXEL11_20 0
    Interp2 [edi+ebx+2],eax,[ebp+w6],[ebp+w8]
%endmacro

%macro PIXEL11_21 0
    Interp2 [edi+ebx+2],eax,[ebp+w9],[ebp+w8]
%endmacro

%macro PIXEL11_22 0
    Interp2 [edi+ebx+2],eax,[ebp+w9],[ebp+w6]
%endmacro

%macro PIXEL11_60 0
    Interp6 [edi+ebx+2],[ebp+w8],[ebp+w6]
%endmacro

%macro PIXEL11_61 0
    Interp6 [edi+ebx+2],[ebp+w6],[ebp+w8]
%endmacro

%macro PIXEL11_70 0
    Interp7 [edi+ebx+2],[ebp+w6],[ebp+w8]
%endmacro

%macro PIXEL11_90 0
    Interp9 [edi+ebx+2],[ebp+w6],[ebp+w8]
%endmacro

%macro PIXEL11_100 0
    Interp10 [edi+ebx+2],[ebp+w6],[ebp+w8]
%endmacro

_hq2x_16:
    push ebp
    mov ebp,esp
    sub esp,112
    pushad

    call    _get_pc
.pc_anchor:
    mov     ecx,eax
    add     eax,(FuncTable-.pc_anchor)
    mov     dword[ebp+pFuncTable],eax
    add     ecx,(FuncTable2-.pc_anchor)
    mov     dword[ebp+pFuncTable2],ecx
    mov     dword[ebp+threshold],thresholdVal0
    mov     dword[ebp+threshold+4], thresholdVal1

    mov     esi,[ebp+hqx_params]
    lea     edi,[ebp+hqx_params_]
    mov     ecx,(green_redBlue_Mask+4-hqx_params_)/4
    rep     movsd

    mov     esi,[ebp+inbuffer]
    mov     edi,[ebp+outbuffer]
    mov     edx,[ebp+Yres]
    mov     [ebp+linesleft],edx
    mov     ecx,[ebp+Xres]
    shl     ecx,1
    mov     ebx,[ebp+dstPitch]
    mov     dword[ebp+moduloDst],ebx
    sub     dword[ebp+moduloDst],ecx
    shl     dword[ebp+moduloDst],1
    mov     ebx,[ebp+srcPitch]
    mov     dword[ebp+nextline],ebx
    mov     dword[ebp+moduloSrc],ebx
    sub     dword[ebp+moduloSrc],ecx
    neg     ebx
    mov     dword[ebp+prevline],ebx
.loopy:
    mov     ecx,[ebp+Xres]
    mov     dword[ebp+xcounter],ecx
.loopx:
    mov     ebx,[ebp+prevline]
    movq    mm5,[esi+ebx-2]
    movq    mm6,[esi-2]
    mov     ebx,[ebp+nextline]
    movq    mm7,[esi+ebx-2]
    movd    eax,mm5
    movzx   edx,ax
    mov     [ebp+w1],edx
    shr     eax,16
    mov     [ebp+w2],eax
    psrlq   mm5,32
    movd    eax,mm5
    movzx   edx,ax
    mov     [ebp+w3],edx
    movd    eax,mm6
    movzx   edx,ax
    mov     [ebp+w4],edx
    shr     eax,16
    mov     [ebp+w5],eax
    psrlq   mm6,32
    movd    eax,mm6
    movzx   edx,ax
    mov     [ebp+w6],edx
    movd    eax,mm7
    movzx   edx,ax
    mov     [ebp+w7],edx
    shr     eax,16
    mov     [ebp+w8],eax
    psrlq   mm7,32
    movd    eax,mm7
    movzx   edx,ax
    mov     [ebp+w9],edx
.flags:
    mov     ebx,[ebp+RGBtoYUV]
    mov     eax,[ebp+w5]
    xor     ecx,ecx
    movd    mm5,[ebx+eax*4]
    mov     dword[ebp+cross],0

    mov     edx,[ebp+w2]
    cmp     eax,edx
    je      .noflag2
    or      dword[ebp+cross],1
    movq    mm1,mm5
    movd    mm2,[ebx+edx*4]
    psubusb mm1,mm2
    psubusb mm2,mm5
    por     mm1,mm2
    psubusb mm1,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag2
    or      ecx,2
.noflag2:
    mov     edx,[ebp+w4]
    cmp     eax,edx
    je      .noflag4
    or      dword[ebp+cross],2
    movq    mm1,mm5
    movd    mm2,[ebx+edx*4]
    psubusb mm1,mm2
    psubusb mm2,mm5
    por     mm1,mm2
    psubusb mm1,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag4
    or      ecx,8
.noflag4:
    mov     edx,[ebp+w6]
    cmp     eax,edx
    je      .noflag6
    or      dword[ebp+cross],4
    movq    mm1,mm5
    movd    mm2,[ebx+edx*4]
    psubusb mm1,mm2
    psubusb mm2,mm5
    por     mm1,mm2
    psubusb mm1,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag6
    or      ecx,16
.noflag6:
    mov     edx,[ebp+w8]
    cmp     eax,edx
    je      .noflag8
    or      dword[ebp+cross],8
    movq    mm1,mm5
    movd    mm2,[ebx+edx*4]
    psubusb mm1,mm2
    psubusb mm2,mm5
    por     mm1,mm2
    psubusb mm1,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag8
    or      ecx,64
.noflag8:
    test    ecx,ecx
    jnz     .testflag1
    mov     ecx,[ebp+cross]
    mov     ebx, [ebp+pFuncTable2]
    mov     ecx, [ebx+ecx*4]
    add     ecx, ebx
    mov     ebx,[ebp+dstPitch]
    jmp     ecx
.testflag1:
    mov     edx,[ebp+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,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag1
    or      ecx,1
.noflag1:
    mov     edx,[ebp+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,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag3
    or      ecx,4
.noflag3:
    mov     edx,[ebp+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,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag7
    or      ecx,32
.noflag7:
    mov     edx,[ebp+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,[ebp+threshold]
    movd    edx,mm1
    test    edx,edx
    jz      .noflag9
    or      ecx,128
.noflag9:
    mov  ebx, [ebp+pFuncTable]
    mov  ecx, [ebx+ecx*4]
    add  ecx, ebx
    mov  ebx,[ebp+dstPitch]
    jmp  ecx

..@flag0:
..@flag1:
..@flag4:
..@flag32:
..@flag128:
..@flag5:
..@flag132:
..@flag160:
..@flag33:
..@flag129:
..@flag36:
..@flag133:
..@flag164:
..@flag161:
..@flag37:
..@flag165:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag2:
..@flag34:
..@flag130:
..@flag162:
    PIXEL00_22
    PIXEL01_21
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag16:
..@flag17:
..@flag48:
..@flag49:
    PIXEL00_20
    PIXEL01_22
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag64:
..@flag65:
..@flag68:
..@flag69:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_21
    PIXEL11_22
    jmp .loopx_end
..@flag8:
..@flag12:
..@flag136:
..@flag140:
    PIXEL00_21
    PIXEL01_20
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag3:
..@flag35:
..@flag131:
..@flag163:
    PIXEL00_11
    PIXEL01_21
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag6:
..@flag38:
..@flag134:
..@flag166:
    PIXEL00_22
    PIXEL01_12
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag20:
..@flag21:
..@flag52:
..@flag53:
    PIXEL00_20
    PIXEL01_11
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag144:
..@flag145:
..@flag176:
..@flag177:
    PIXEL00_20
    PIXEL01_22
    PIXEL10_20
    PIXEL11_12
    jmp .loopx_end
..@flag192:
..@flag193:
..@flag196:
..@flag197:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_21
    PIXEL11_11
    jmp .loopx_end
..@flag96:
..@flag97:
..@flag100:
..@flag101:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_12
    PIXEL11_22
    jmp .loopx_end
..@flag40:
..@flag44:
..@flag168:
..@flag172:
    PIXEL00_21
    PIXEL01_20
    PIXEL10_11
    PIXEL11_20
    jmp .loopx_end
..@flag9:
..@flag13:
..@flag137:
..@flag141:
    PIXEL00_12
    PIXEL01_20
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag18:
..@flag50:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_20
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag80:
..@flag81:
    PIXEL00_20
    PIXEL01_22
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_20
    jmp .loopx_end
..@flag72:
..@flag76:
    PIXEL00_21
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag10:
..@flag138:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_20
    PIXEL01_21
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag66:
    PIXEL00_22
    PIXEL01_21
    PIXEL10_21
    PIXEL11_22
    jmp .loopx_end
..@flag24:
    PIXEL00_21
    PIXEL01_22
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag7:
..@flag39:
..@flag135:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag148:
..@flag149:
..@flag180:
    PIXEL00_20
    PIXEL01_11
    PIXEL10_20
    PIXEL11_12
    jmp .loopx_end
..@flag224:
..@flag228:
..@flag225:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag41:
..@flag169:
..@flag45:
    PIXEL00_12
    PIXEL01_20
    PIXEL10_11
    PIXEL11_20
    jmp .loopx_end
..@flag22:
..@flag54:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag208:
..@flag209:
    PIXEL00_20
    PIXEL01_22
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag104:
..@flag108:
    PIXEL00_21
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag11:
..@flag139:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_21
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag19:
..@flag51:
    DiffOrNot ebp+w2,ebp+w6,PIXEL00_11,PIXEL01_10,PIXEL00_60,PIXEL01_90
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag146:
..@flag178:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL11_12,PIXEL01_90,PIXEL11_61
    PIXEL10_20
    jmp .loopx_end
..@flag84:
..@flag85:
    PIXEL00_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL01_11,PIXEL11_10,PIXEL01_60,PIXEL11_90
    PIXEL10_21
    jmp .loopx_end
..@flag112:
..@flag113:
    PIXEL00_20
    PIXEL01_22
    DiffOrNot ebp+w6,ebp+w8,PIXEL10_12,PIXEL11_10,PIXEL10_61,PIXEL11_90
    jmp .loopx_end
..@flag200:
..@flag204:
    PIXEL00_21
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL11_11,PIXEL10_90,PIXEL11_60
    jmp .loopx_end
..@flag73:
..@flag77:
    DiffOrNot ebp+w8,ebp+w4,PIXEL00_12,PIXEL10_10,PIXEL00_61,PIXEL10_90
    PIXEL01_20
    PIXEL11_22
    jmp .loopx_end
..@flag42:
..@flag170:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL10_11,PIXEL00_90,PIXEL10_60
    PIXEL01_21
    PIXEL11_20
    jmp .loopx_end
..@flag14:
..@flag142:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL01_12,PIXEL00_90,PIXEL01_61
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag67:
    PIXEL00_11
    PIXEL01_21
    PIXEL10_21
    PIXEL11_22
    jmp .loopx_end
..@flag70:
    PIXEL00_22
    PIXEL01_12
    PIXEL10_21
    PIXEL11_22
    jmp .loopx_end
..@flag28:
    PIXEL00_21
    PIXEL01_11
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag152:
    PIXEL00_21
    PIXEL01_22
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag194:
    PIXEL00_22
    PIXEL01_21
    PIXEL10_21
    PIXEL11_11
    jmp .loopx_end
..@flag98:
    PIXEL00_22
    PIXEL01_21
    PIXEL10_12
    PIXEL11_22
    jmp .loopx_end
..@flag56:
    PIXEL00_21
    PIXEL01_22
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag25:
    PIXEL00_12
    PIXEL01_22
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag26:
..@flag31:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag82:
..@flag214:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag88:
..@flag248:
    PIXEL00_21
    PIXEL01_22
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag74:
..@flag107:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_21
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag27:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_10
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag86:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_21
    PIXEL11_10
    jmp .loopx_end
..@flag216:
    PIXEL00_21
    PIXEL01_22
    PIXEL10_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag106:
    PIXEL00_10
    PIXEL01_21
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag30:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag210:
    PIXEL00_22
    PIXEL01_10
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag120:
    PIXEL00_21
    PIXEL01_22
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_10
    jmp .loopx_end
..@flag75:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_21
    PIXEL10_10
    PIXEL11_22
    jmp .loopx_end
..@flag29:
    PIXEL00_12
    PIXEL01_11
    PIXEL10_22
    PIXEL11_21
    jmp .loopx_end
..@flag198:
    PIXEL00_22
    PIXEL01_12
    PIXEL10_21
    PIXEL11_11
    jmp .loopx_end
..@flag184:
    PIXEL00_21
    PIXEL01_22
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag99:
    PIXEL00_11
    PIXEL01_21
    PIXEL10_12
    PIXEL11_22
    jmp .loopx_end
..@flag57:
    PIXEL00_12
    PIXEL01_22
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag71:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_21
    PIXEL11_22
    jmp .loopx_end
..@flag156:
    PIXEL00_21
    PIXEL01_11
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag226:
    PIXEL00_22
    PIXEL01_21
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag60:
    PIXEL00_21
    PIXEL01_11
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag195:
    PIXEL00_11
    PIXEL01_21
    PIXEL10_21
    PIXEL11_11
    jmp .loopx_end
..@flag102:
    PIXEL00_22
    PIXEL01_12
    PIXEL10_12
    PIXEL11_22
    jmp .loopx_end
..@flag153:
    PIXEL00_12
    PIXEL01_22
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag58:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag83:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag92:
    PIXEL00_21
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag202:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    PIXEL01_21
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    PIXEL11_11
    jmp .loopx_end
..@flag78:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    PIXEL11_22
    jmp .loopx_end
..@flag154:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag114:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag89:
    PIXEL00_12
    PIXEL01_22
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag90:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag55:
..@flag23:
    DiffOrNot ebp+w2,ebp+w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90
    PIXEL10_20
    PIXEL11_21
    jmp .loopx_end
..@flag182:
..@flag150:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61
    PIXEL10_20
    jmp .loopx_end
..@flag213:
..@flag212:
    PIXEL00_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90
    PIXEL10_21
    jmp .loopx_end
..@flag241:
..@flag240:
    PIXEL00_20
    PIXEL01_22
    DiffOrNot ebp+w6,ebp+w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90
    jmp .loopx_end
..@flag236:
..@flag232:
    PIXEL00_21
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60
    jmp .loopx_end
..@flag109:
..@flag105:
    DiffOrNot ebp+w8,ebp+w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90
    PIXEL01_20
    PIXEL11_22
    jmp .loopx_end
..@flag171:
..@flag43:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60
    PIXEL01_21
    PIXEL11_20
    jmp .loopx_end
..@flag143:
..@flag15:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61
    PIXEL10_22
    PIXEL11_20
    jmp .loopx_end
..@flag124:
    PIXEL00_21
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_10
    jmp .loopx_end
..@flag203:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_21
    PIXEL10_10
    PIXEL11_11
    jmp .loopx_end
..@flag62:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag211:
    PIXEL00_11
    PIXEL01_10
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag118:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_12
    PIXEL11_10
    jmp .loopx_end
..@flag217:
    PIXEL00_12
    PIXEL01_22
    PIXEL10_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag110:
    PIXEL00_10
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag155:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_10
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag188:
    PIXEL00_21
    PIXEL01_11
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag185:
    PIXEL00_12
    PIXEL01_22
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag61:
    PIXEL00_12
    PIXEL01_11
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag157:
    PIXEL00_12
    PIXEL01_11
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag103:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_12
    PIXEL11_22
    jmp .loopx_end
..@flag227:
    PIXEL00_11
    PIXEL01_21
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag230:
    PIXEL00_22
    PIXEL01_12
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag199:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_21
    PIXEL11_11
    jmp .loopx_end
..@flag220:
    PIXEL00_21
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag158:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag234:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    PIXEL01_21
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_11
    jmp .loopx_end
..@flag242:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag59:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag121:
    PIXEL00_12
    PIXEL01_22
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag87:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag79:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    PIXEL11_22
    jmp .loopx_end
..@flag122:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag94:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag218:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag91:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag229:
    PIXEL00_20
    PIXEL01_20
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag167:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_20
    PIXEL11_20
    jmp .loopx_end
..@flag173:
    PIXEL00_12
    PIXEL01_20
    PIXEL10_11
    PIXEL11_20
    jmp .loopx_end
..@flag181:
    PIXEL00_20
    PIXEL01_11
    PIXEL10_20
    PIXEL11_12
    jmp .loopx_end
..@flag186:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag115:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag93:
    PIXEL00_12
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag206:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    PIXEL11_11
    jmp .loopx_end
..@flag205:
..@flag201:
    PIXEL00_12
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_10,PIXEL10_70
    PIXEL11_11
    jmp .loopx_end
..@flag174:
..@flag46:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_10,PIXEL00_70
    PIXEL01_12
    PIXEL10_11
    PIXEL11_20
    jmp .loopx_end
..@flag179:
..@flag147:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_10,PIXEL01_70
    PIXEL10_20
    PIXEL11_12
    jmp .loopx_end
..@flag117:
..@flag116:
    PIXEL00_20
    PIXEL01_11
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_10,PIXEL11_70
    jmp .loopx_end
..@flag189:
    PIXEL00_12
    PIXEL01_11
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag231:
    PIXEL00_11
    PIXEL01_12
    PIXEL10_12
    PIXEL11_11
    jmp .loopx_end
..@flag126:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_10
    jmp .loopx_end
..@flag219:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_10
    PIXEL10_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag125:
    DiffOrNot ebp+w8,ebp+w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90
    PIXEL01_11
    PIXEL11_10
    jmp .loopx_end
..@flag221:
    PIXEL00_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90
    PIXEL10_10
    jmp .loopx_end
..@flag207:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61
    PIXEL10_10
    PIXEL11_11
    jmp .loopx_end
..@flag238:
    PIXEL00_10
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60
    jmp .loopx_end
..@flag190:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61
    PIXEL10_11
    jmp .loopx_end
..@flag187:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60
    PIXEL01_10
    PIXEL11_12
    jmp .loopx_end
..@flag243:
    PIXEL00_11
    PIXEL01_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90
    jmp .loopx_end
..@flag119:
    DiffOrNot ebp+w2,ebp+w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90
    PIXEL10_12
    PIXEL11_10
    jmp .loopx_end
..@flag237:
..@flag233:
    PIXEL00_12
    PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    PIXEL11_11
    jmp .loopx_end
..@flag175:
..@flag47:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    PIXEL01_12
    PIXEL10_11
    PIXEL11_20
    jmp .loopx_end
..@flag183:
..@flag151:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_20
    PIXEL11_12
    jmp .loopx_end
..@flag245:
..@flag244:
    PIXEL00_20
    PIXEL01_11
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag250:
    PIXEL00_10
    PIXEL01_10
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag123:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_10
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_10
    jmp .loopx_end
..@flag95:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_10
    PIXEL11_10
    jmp .loopx_end
..@flag222:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag252:
    PIXEL00_21
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag249:
    PIXEL00_12
    PIXEL01_22
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag235:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_21
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    PIXEL11_11
    jmp .loopx_end
..@flag111:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_22
    jmp .loopx_end
..@flag63:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_11
    PIXEL11_21
    jmp .loopx_end
..@flag159:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_22
    PIXEL11_12
    jmp .loopx_end
..@flag215:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_21
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag246:
    PIXEL00_22
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag254:
    PIXEL00_10
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag253:
    PIXEL00_12
    PIXEL01_11
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag251:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    PIXEL01_10
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag239:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    PIXEL01_12
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    PIXEL11_11
    jmp .loopx_end
..@flag127:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_20
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_20
    PIXEL11_10
    jmp .loopx_end
..@flag191:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_11
    PIXEL11_12
    jmp .loopx_end
..@flag223:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_20
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_10
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_20
    jmp .loopx_end
..@flag247:
    PIXEL00_11
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    PIXEL10_12
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end
..@flag255:
    DiffOrNot ebp+w4,ebp+w2,PIXEL00_0,PIXEL00_100
    DiffOrNot ebp+w2,ebp+w6,PIXEL01_0,PIXEL01_100
    DiffOrNot ebp+w8,ebp+w4,PIXEL10_0,PIXEL10_100
    DiffOrNot ebp+w6,ebp+w8,PIXEL11_0,PIXEL11_100
    jmp .loopx_end

..@cross0:
    mov     edx,eax
    shl     eax,16
    or      eax,edx
    mov     [edi],eax
    mov     [edi+ebx],eax
    jmp     .loopx_end
..@cross1:
    mov     edx,eax
    shl     eax,16
    or      eax,edx
    mov     ecx,[ebp+w2]
    and     edx,[ebp+highbits]
    and     ecx,[ebp+highbits]
    add     ecx,edx
    shr     ecx,1
    add     ecx,[ebp+lowbits]
    and     ecx,[ebp+highbits]
    add     edx,ecx
    shr     edx,1
    mov     ecx,edx
    shl     edx,16
    or      edx,ecx
    mov     [edi],edx
    mov     [edi+ebx],eax
    jmp     .loopx_end
..@cross2:
    shl     eax,16
    mov     ecx,[ebp+w4]
    and     edx,[ebp+highbits]
    and     ecx,[ebp+highbits]
    add     ecx,edx
    shr     ecx,1
    add     ecx,[ebp+lowbits]
    and     ecx,[ebp+highbits]
    add     edx,ecx
    shr     edx,1
    or      eax,edx
    mov     [edi],eax
    mov     [edi+ebx],eax
    jmp     .loopx_end
..@cross4:
    mov     ecx,[ebp+w6]
    and     edx,[ebp+highbits]
    and     ecx,[ebp+highbits]
    add     ecx,edx
    shr     ecx,1
    add     ecx,[ebp+lowbits]
    and     ecx,[ebp+highbits]
    add     edx,ecx
    shr     edx,1
    shl     edx,16
    or      eax,edx
    mov     [edi],eax
    mov     [edi+ebx],eax
    jmp     .loopx_end
..@cross8:
    mov     edx,eax
    shl     eax,16
    or      eax,edx
    mov     ecx,[ebp+w8]
    and     edx,[ebp+highbits]
    and     ecx,[ebp+highbits]
    add     ecx,edx
    shr     ecx,1
    add     ecx,[ebp+lowbits]
    and     ecx,[ebp+highbits]
    add     edx,ecx
    shr     edx,1
    mov     ecx,edx
    shl     edx,16
    or      edx,ecx
    mov     [edi],eax
    mov     [edi+ebx],edx
    jmp     .loopx_end

.loopx_end:
    add     esi,2
    add     edi,4
    dec     dword[ebp+xcounter]
    jz      .nexty
    jmp     .loopx
.nexty:
    add     esi,dword[ebp+moduloSrc]
    add     edi,dword[ebp+moduloDst]
    dec     dword[ebp+linesleft]
    jz      .fin
    mov     ebx,[ebp+srcPitch]
    mov     dword[ebp+nextline],ebx
    neg     ebx
    mov     dword[ebp+prevline],ebx
    jmp     .loopy
.fin:
    emms
    popad
    mov esp,ebp
    pop ebp
    ret

_get_pc:
    mov     eax, dword[esp]
    ret

FuncTable:
    dd ..@flag0 - FuncTable, ..@flag1 - FuncTable, ..@flag2 - FuncTable, ..@flag3 - FuncTable, ..@flag4 - FuncTable, ..@flag5 - FuncTable, ..@flag6 - FuncTable, ..@flag7 - FuncTable
    dd ..@flag8 - FuncTable, ..@flag9 - FuncTable, ..@flag10 - FuncTable, ..@flag11 - FuncTable, ..@flag12 - FuncTable, ..@flag13 - FuncTable, ..@flag14 - FuncTable, ..@flag15 - FuncTable
    dd ..@flag16 - FuncTable, ..@flag17 - FuncTable, ..@flag18 - FuncTable, ..@flag19 - FuncTable, ..@flag20 - FuncTable, ..@flag21 - FuncTable, ..@flag22 - FuncTable, ..@flag23 - FuncTable
    dd ..@flag24 - FuncTable, ..@flag25 - FuncTable, ..@flag26 - FuncTable, ..@flag27 - FuncTable, ..@flag28 - FuncTable, ..@flag29 - FuncTable, ..@flag30 - FuncTable, ..@flag31 - FuncTable
    dd ..@flag32 - FuncTable, ..@flag33 - FuncTable, ..@flag34 - FuncTable, ..@flag35 - FuncTable, ..@flag36 - FuncTable, ..@flag37 - FuncTable, ..@flag38 - FuncTable, ..@flag39 - FuncTable
    dd ..@flag40 - FuncTable, ..@flag41 - FuncTable, ..@flag42 - FuncTable, ..@flag43 - FuncTable, ..@flag44 - FuncTable, ..@flag45 - FuncTable, ..@flag46 - FuncTable, ..@flag47 - FuncTable
    dd ..@flag48 - FuncTable, ..@flag49 - FuncTable, ..@flag50 - FuncTable, ..@flag51 - FuncTable, ..@flag52 - FuncTable, ..@flag53 - FuncTable, ..@flag54 - FuncTable, ..@flag55 - FuncTable
    dd ..@flag56 - FuncTable, ..@flag57 - FuncTable, ..@flag58 - FuncTable, ..@flag59 - FuncTable, ..@flag60 - FuncTable, ..@flag61 - FuncTable, ..@flag62 - FuncTable, ..@flag63 - FuncTable
    dd ..@flag64 - FuncTable, ..@flag65 - FuncTable, ..@flag66 - FuncTable, ..@flag67 - FuncTable, ..@flag68 - FuncTable, ..@flag69 - FuncTable, ..@flag70 - FuncTable, ..@flag71 - FuncTable
    dd ..@flag72 - FuncTable, ..@flag73 - FuncTable, ..@flag74 - FuncTable, ..@flag75 - FuncTable, ..@flag76 - FuncTable, ..@flag77 - FuncTable, ..@flag78 - FuncTable, ..@flag79 - FuncTable
    dd ..@flag80 - FuncTable, ..@flag81 - FuncTable, ..@flag82 - FuncTable, ..@flag83 - FuncTable, ..@flag84 - FuncTable, ..@flag85 - FuncTable, ..@flag86 - FuncTable, ..@flag87 - FuncTable
    dd ..@flag88 - FuncTable, ..@flag89 - FuncTable, ..@flag90 - FuncTable, ..@flag91 - FuncTable, ..@flag92 - FuncTable, ..@flag93 - FuncTable, ..@flag94 - FuncTable, ..@flag95 - FuncTable
    dd ..@flag96 - FuncTable, ..@flag97 - FuncTable, ..@flag98 - FuncTable, ..@flag99 - FuncTable, ..@flag100 - FuncTable, ..@flag101 - FuncTable, ..@flag102 - FuncTable, ..@flag103 - FuncTable
    dd ..@flag104 - FuncTable, ..@flag105 - FuncTable, ..@flag106 - FuncTable, ..@flag107 - FuncTable, ..@flag108 - FuncTable, ..@flag109 - FuncTable, ..@flag110 - FuncTable, ..@flag111 - FuncTable
    dd ..@flag112 - FuncTable, ..@flag113 - FuncTable, ..@flag114 - FuncTable, ..@flag115 - FuncTable, ..@flag116 - FuncTable, ..@flag117 - FuncTable, ..@flag118 - FuncTable, ..@flag119 - FuncTable
    dd ..@flag120 - FuncTable, ..@flag121 - FuncTable, ..@flag122 - FuncTable, ..@flag123 - FuncTable, ..@flag124 - FuncTable, ..@flag125 - FuncTable, ..@flag126 - FuncTable, ..@flag127 - FuncTable
    dd ..@flag128 - FuncTable, ..@flag129 - FuncTable, ..@flag130 - FuncTable, ..@flag131 - FuncTable, ..@flag132 - FuncTable, ..@flag133 - FuncTable, ..@flag134 - FuncTable, ..@flag135 - FuncTable
    dd ..@flag136 - FuncTable, ..@flag137 - FuncTable, ..@flag138 - FuncTable, ..@flag139 - FuncTable, ..@flag140 - FuncTable, ..@flag141 - FuncTable, ..@flag142 - FuncTable, ..@flag143 - FuncTable
    dd ..@flag144 - FuncTable, ..@flag145 - FuncTable, ..@flag146 - FuncTable, ..@flag147 - FuncTable, ..@flag148 - FuncTable, ..@flag149 - FuncTable, ..@flag150 - FuncTable, ..@flag151 - FuncTable
    dd ..@flag152 - FuncTable, ..@flag153 - FuncTable, ..@flag154 - FuncTable, ..@flag155 - FuncTable, ..@flag156 - FuncTable, ..@flag157 - FuncTable, ..@flag158 - FuncTable, ..@flag159 - FuncTable
    dd ..@flag160 - FuncTable, ..@flag161 - FuncTable, ..@flag162 - FuncTable, ..@flag163 - FuncTable, ..@flag164 - FuncTable, ..@flag165 - FuncTable, ..@flag166 - FuncTable, ..@flag167 - FuncTable
    dd ..@flag168 - FuncTable, ..@flag169 - FuncTable, ..@flag170 - FuncTable, ..@flag171 - FuncTable, ..@flag172 - FuncTable, ..@flag173 - FuncTable, ..@flag174 - FuncTable, ..@flag175 - FuncTable
    dd ..@flag176 - FuncTable, ..@flag177 - FuncTable, ..@flag178 - FuncTable, ..@flag179 - FuncTable, ..@flag180 - FuncTable, ..@flag181 - FuncTable, ..@flag182 - FuncTable, ..@flag183 - FuncTable
    dd ..@flag184 - FuncTable, ..@flag185 - FuncTable, ..@flag186 - FuncTable, ..@flag187 - FuncTable, ..@flag188 - FuncTable, ..@flag189 - FuncTable, ..@flag190 - FuncTable, ..@flag191 - FuncTable
    dd ..@flag192 - FuncTable, ..@flag193 - FuncTable, ..@flag194 - FuncTable, ..@flag195 - FuncTable, ..@flag196 - FuncTable, ..@flag197 - FuncTable, ..@flag198 - FuncTable, ..@flag199 - FuncTable
    dd ..@flag200 - FuncTable, ..@flag201 - FuncTable, ..@flag202 - FuncTable, ..@flag203 - FuncTable, ..@flag204 - FuncTable, ..@flag205 - FuncTable, ..@flag206 - FuncTable, ..@flag207 - FuncTable
    dd ..@flag208 - FuncTable, ..@flag209 - FuncTable, ..@flag210 - FuncTable, ..@flag211 - FuncTable, ..@flag212 - FuncTable, ..@flag213 - FuncTable, ..@flag214 - FuncTable, ..@flag215 - FuncTable
    dd ..@flag216 - FuncTable, ..@flag217 - FuncTable, ..@flag218 - FuncTable, ..@flag219 - FuncTable, ..@flag220 - FuncTable, ..@flag221 - FuncTable, ..@flag222 - FuncTable, ..@flag223 - FuncTable
    dd ..@flag224 - FuncTable, ..@flag225 - FuncTable, ..@flag226 - FuncTable, ..@flag227 - FuncTable, ..@flag228 - FuncTable, ..@flag229 - FuncTable, ..@flag230 - FuncTable, ..@flag231 - FuncTable
    dd ..@flag232 - FuncTable, ..@flag233 - FuncTable, ..@flag234 - FuncTable, ..@flag235 - FuncTable, ..@flag236 - FuncTable, ..@flag237 - FuncTable, ..@flag238 - FuncTable, ..@flag239 - FuncTable
    dd ..@flag240 - FuncTable, ..@flag241 - FuncTable, ..@flag242 - FuncTable, ..@flag243 - FuncTable, ..@flag244 - FuncTable, ..@flag245 - FuncTable, ..@flag246 - FuncTable, ..@flag247 - FuncTable
    dd ..@flag248 - FuncTable, ..@flag249 - FuncTable, ..@flag250 - FuncTable, ..@flag251 - FuncTable, ..@flag252 - FuncTable, ..@flag253 - FuncTable, ..@flag254 - FuncTable, ..@flag255 - FuncTable

FuncTable2:
    dd ..@cross0 - FuncTable2, ..@cross1 - FuncTable2, ..@cross2 - FuncTable2, ..@flag0 - FuncTable2,
    dd ..@cross4 - FuncTable2, ..@flag0  - FuncTable2, ..@flag0  - FuncTable2, ..@flag0 - FuncTable2,
    dd ..@cross8 - FuncTable2, ..@flag0  - FuncTable2, ..@flag0  - FuncTable2, ..@flag0 - FuncTable2,
    dd ..@flag0  - FuncTable2, ..@flag0  - FuncTable2, ..@flag0  - FuncTable2, ..@flag0 - FuncTable2


%ifidn __OUTPUT_FORMAT__,elf
section .note.GNU-stack noalloc noexec nowrite progbits
%endif
back to top