1;hq2x filter 2;16bpp output 3;---------------------------------------------------------- 4;Copyright (C) 2003 MaxSt ( maxst@hiend3d.com ) 5; 6;This program is free software; you can redistribute it and/or 7;modify it under the terms of the GNU General Public License 8;as published by the Free Software Foundation; either 9;version 2 of the License, or (at your option) any later 10;version. 11; 12;This program is distributed in the hope that it will be useful, 13;but WITHOUT ANY WARRANTY; without even the implied warranty of 14;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15;GNU General Public License for more details. 16; 17;You should have received a copy of the GNU General Public License 18;along with this program; if not, write to the Free Software 19;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 21GLOBAL hq2x_16_i386 22 23EXTERN LUT16to32 24EXTERN RGBtoYUV 25 26SECTION .bss 27linesleft resd 1 28xcounter resd 1 29cross resd 1 30nextline resd 1 31prevline resd 1 32w1 resd 1 33w2 resd 1 34w3 resd 1 35w4 resd 1 36w5 resd 1 37w6 resd 1 38w7 resd 1 39w8 resd 1 40w9 resd 1 41 42SECTION .data 43 44reg_blank dd 0,0 45const3 dd 0x00030003,0x00000003 46const5 dd 0x00050005,0x00000005 47const6 dd 0x00060006,0x00000006 48const14 dd 0x000E000E,0x0000000E 49threshold dd 0x00300706,0x00000000 50zerolowbits dd 0xF7DEF7DE 51 52SECTION .text 53 54 55%macro TestDiff 2 56 xor ecx,ecx 57 mov edx,[%1] 58 cmp edx,[%2] 59 je %%fin 60 mov ecx,RGBtoYUV 61 movd mm1,[ecx+edx*4] 62 movq mm5,mm1 63 mov edx,[%2] 64 movd mm2,[ecx+edx*4] 65 psubusb mm1,mm2 66 psubusb mm2,mm5 67 por mm1,mm2 68 psubusb mm1,[threshold] 69 movd ecx,mm1 70%%fin: 71%endmacro 72 73%macro DiffOrNot 4 74 TestDiff %1,%2 75 test ecx,ecx 76 jz %%same 77 %3 78 jmp %%fin 79%%same: 80 %4 81%%fin 82%endmacro 83 84%macro DiffOrNot 6 85 TestDiff %1,%2 86 test ecx,ecx 87 jz %%same 88 %3 89 %4 90 jmp %%fin 91%%same: 92 %5 93 %6 94%%fin 95%endmacro 96 97%macro DiffOrNot 8 98 TestDiff %1,%2 99 test ecx,ecx 100 jz %%same 101 %3 102 %4 103 %5 104 jmp %%fin 105%%same: 106 %6 107 %7 108 %8 109%%fin 110%endmacro 111 112%macro DiffOrNot 10 113 TestDiff %1,%2 114 test ecx,ecx 115 jz %%same 116 %3 117 %4 118 %5 119 %6 120 jmp %%fin 121%%same: 122 %7 123 %8 124 %9 125 %10 126%%fin 127%endmacro 128 129%macro Interp1 3 130 mov edx,%2 131 mov ecx,%3 132 cmp edx,ecx 133 je %%fin 134 and edx,[zerolowbits] 135 and ecx,[zerolowbits] 136 add ecx,edx 137 shr ecx,1 138 add ecx,0x0821 139 and ecx,[zerolowbits] 140 add edx,ecx 141 shr edx,1 142%%fin 143 mov %1,dx 144%endmacro 145 146%macro Interp2 4 147 mov edx,%3 148 mov ecx,%4 149 cmp edx,ecx 150 je %%fin1 151 and edx,[zerolowbits] 152 and ecx,[zerolowbits] 153 add ecx,edx 154 shr ecx,1 155 add ecx,0x0821 156%%fin1 157 mov edx,%2 158 cmp edx,ecx 159 je %%fin2 160 and ecx,[zerolowbits] 161 and edx,[zerolowbits] 162 add edx,ecx 163 shr edx,1 164%%fin2 165 mov %1,dx 166%endmacro 167 168%macro Interp5 3 169 mov edx,%2 170 mov ecx,%3 171 cmp edx,ecx 172 je %%fin 173 and edx,[zerolowbits] 174 and ecx,[zerolowbits] 175 add edx,ecx 176 shr edx,1 177%%fin 178 mov %1,dx 179%endmacro 180 181%macro Interp6 3 182 mov ecx, LUT16to32 183 movd mm4, [reg_blank] 184 movd mm1, [ecx+eax*4] 185 mov edx, %2 186 movd mm2, [ecx+edx*4] 187 mov edx, %3 188 movd mm3, [ecx+edx*4] 189 punpcklbw mm1, mm4 190 punpcklbw mm2, mm4 191 punpcklbw mm3, mm4 192 pmullw mm1, [const5] 193 psllw mm2, 1 194 paddw mm1, mm3 195 paddw mm1, mm2 196 psrlw mm1, 5 197 packuswb mm1, mm4 198 movd edx, mm1 199 shl dl, 2 200 shr edx, 1 201 shl dx, 3 202 shr edx, 5 203 mov %1, dx 204%endmacro 205 206%macro Interp7 3 207 mov ecx, LUT16to32 208 movd mm4, [reg_blank] 209 movd mm1, [ecx+eax*4] 210 mov edx, %2 211 movd mm2, [ecx+edx*4] 212 mov edx, %3 213 movd mm3, [ecx+edx*4] 214 punpcklbw mm1, mm4 215 punpcklbw mm2, mm4 216 punpcklbw mm3, mm4 217 pmullw mm1, [const6] 218 paddw mm2, mm3 219 paddw mm1, mm2 220 psrlw mm1, 5 221 packuswb mm1, mm4 222 movd edx, mm1 223 shl dl, 2 224 shr edx, 1 225 shl dx, 3 226 shr edx, 5 227 mov %1, dx 228%endmacro 229 230%macro Interp9 3 231 mov ecx, LUT16to32 232 movd mm4, [reg_blank] 233 movd mm1, [ecx+eax*4] 234 mov edx, %2 235 movd mm2, [ecx+edx*4] 236 mov edx, %3 237 movd mm3, [ecx+edx*4] 238 punpcklbw mm1, mm4 239 punpcklbw mm2, mm4 240 punpcklbw mm3, mm4 241 psllw mm1, 1 242 paddw mm2, mm3 243 pmullw mm2, [const3] 244 paddw mm1, mm2 245 psrlw mm1, 5 246 packuswb mm1, mm4 247 movd edx, mm1 248 shl dl, 2 249 shr edx, 1 250 shl dx, 3 251 shr edx, 5 252 mov %1, dx 253%endmacro 254 255%macro Interp10 3 256 mov ecx, LUT16to32 257 movd mm4, [reg_blank] 258 movd mm1, [ecx+eax*4] 259 mov edx, %2 260 movd mm2, [ecx+edx*4] 261 mov edx, %3 262 movd mm3, [ecx+edx*4] 263 punpcklbw mm1, mm4 264 punpcklbw mm2, mm4 265 punpcklbw mm3, mm4 266 pmullw mm1, [const14] 267 paddw mm2, mm3 268 paddw mm1, mm2 269 psrlw mm1, 6 270 packuswb mm1, mm4 271 movd edx, mm1 272 shl dl, 2 273 shr edx, 1 274 shl dx, 3 275 shr edx, 5 276 mov %1, dx 277%endmacro 278 279%macro PIXEL00_0 0 280 mov [edi],ax 281%endmacro 282 283%macro PIXEL00_10 0 284 Interp1 [edi],eax,[w1] 285%endmacro 286 287%macro PIXEL00_11 0 288 Interp1 [edi],eax,[w4] 289%endmacro 290 291%macro PIXEL00_12 0 292 Interp1 [edi],eax,[w2] 293%endmacro 294 295%macro PIXEL00_20 0 296 Interp2 [edi],eax,[w4],[w2] 297%endmacro 298 299%macro PIXEL00_21 0 300 Interp2 [edi],eax,[w1],[w2] 301%endmacro 302 303%macro PIXEL00_22 0 304 Interp2 [edi],eax,[w1],[w4] 305%endmacro 306 307%macro PIXEL00_60 0 308 Interp6 [edi],[w2],[w4] 309%endmacro 310 311%macro PIXEL00_61 0 312 Interp6 [edi],[w4],[w2] 313%endmacro 314 315%macro PIXEL00_70 0 316 Interp7 [edi],[w4],[w2] 317%endmacro 318 319%macro PIXEL00_90 0 320 Interp9 [edi],[w4],[w2] 321%endmacro 322 323%macro PIXEL00_100 0 324 Interp10 [edi],[w4],[w2] 325%endmacro 326 327%macro PIXEL01_0 0 328 mov [edi+2],ax 329%endmacro 330 331%macro PIXEL01_10 0 332 Interp1 [edi+2],eax,[w3] 333%endmacro 334 335%macro PIXEL01_11 0 336 Interp1 [edi+2],eax,[w2] 337%endmacro 338 339%macro PIXEL01_12 0 340 Interp1 [edi+2],eax,[w6] 341%endmacro 342 343%macro PIXEL01_20 0 344 Interp2 [edi+2],eax,[w2],[w6] 345%endmacro 346 347%macro PIXEL01_21 0 348 Interp2 [edi+2],eax,[w3],[w6] 349%endmacro 350 351%macro PIXEL01_22 0 352 Interp2 [edi+2],eax,[w3],[w2] 353%endmacro 354 355%macro PIXEL01_60 0 356 Interp6 [edi+2],[w6],[w2] 357%endmacro 358 359%macro PIXEL01_61 0 360 Interp6 [edi+2],[w2],[w6] 361%endmacro 362 363%macro PIXEL01_70 0 364 Interp7 [edi+2],[w2],[w6] 365%endmacro 366 367%macro PIXEL01_90 0 368 Interp9 [edi+2],[w2],[w6] 369%endmacro 370 371%macro PIXEL01_100 0 372 Interp10 [edi+2],[w2],[w6] 373%endmacro 374 375%macro PIXEL10_0 0 376 mov [edi+ebx],ax 377%endmacro 378 379%macro PIXEL10_10 0 380 Interp1 [edi+ebx],eax,[w7] 381%endmacro 382 383%macro PIXEL10_11 0 384 Interp1 [edi+ebx],eax,[w8] 385%endmacro 386 387%macro PIXEL10_12 0 388 Interp1 [edi+ebx],eax,[w4] 389%endmacro 390 391%macro PIXEL10_20 0 392 Interp2 [edi+ebx],eax,[w8],[w4] 393%endmacro 394 395%macro PIXEL10_21 0 396 Interp2 [edi+ebx],eax,[w7],[w4] 397%endmacro 398 399%macro PIXEL10_22 0 400 Interp2 [edi+ebx],eax,[w7],[w8] 401%endmacro 402 403%macro PIXEL10_60 0 404 Interp6 [edi+ebx],[w4],[w8] 405%endmacro 406 407%macro PIXEL10_61 0 408 Interp6 [edi+ebx],[w8],[w4] 409%endmacro 410 411%macro PIXEL10_70 0 412 Interp7 [edi+ebx],[w8],[w4] 413%endmacro 414 415%macro PIXEL10_90 0 416 Interp9 [edi+ebx],[w8],[w4] 417%endmacro 418 419%macro PIXEL10_100 0 420 Interp10 [edi+ebx],[w8],[w4] 421%endmacro 422 423%macro PIXEL11_0 0 424 mov [edi+ebx+2],ax 425%endmacro 426 427%macro PIXEL11_10 0 428 Interp1 [edi+ebx+2],eax,[w9] 429%endmacro 430 431%macro PIXEL11_11 0 432 Interp1 [edi+ebx+2],eax,[w6] 433%endmacro 434 435%macro PIXEL11_12 0 436 Interp1 [edi+ebx+2],eax,[w8] 437%endmacro 438 439%macro PIXEL11_20 0 440 Interp2 [edi+ebx+2],eax,[w6],[w8] 441%endmacro 442 443%macro PIXEL11_21 0 444 Interp2 [edi+ebx+2],eax,[w9],[w8] 445%endmacro 446 447%macro PIXEL11_22 0 448 Interp2 [edi+ebx+2],eax,[w9],[w6] 449%endmacro 450 451%macro PIXEL11_60 0 452 Interp6 [edi+ebx+2],[w8],[w6] 453%endmacro 454 455%macro PIXEL11_61 0 456 Interp6 [edi+ebx+2],[w6],[w8] 457%endmacro 458 459%macro PIXEL11_70 0 460 Interp7 [edi+ebx+2],[w6],[w8] 461%endmacro 462 463%macro PIXEL11_90 0 464 Interp9 [edi+ebx+2],[w6],[w8] 465%endmacro 466 467%macro PIXEL11_100 0 468 Interp10 [edi+ebx+2],[w6],[w8] 469%endmacro 470 471inbuffer equ 8 472outbuffer equ 12 473Xres equ 16 474Yres equ 20 475pitch equ 24 476 477hq2x_16_i386: 478 push ebp 479 mov ebp,esp 480 pushad 481 482 mov esi,[ebp+inbuffer] 483 mov edi,[ebp+outbuffer] 484 mov edx,[ebp+Yres] 485 mov [linesleft],edx 486 mov ebx,[ebp+Xres] 487 shl ebx,1 488 mov dword[prevline],0 489 mov dword[nextline],ebx 490.loopy 491 mov ecx,[ebp+Xres] 492 sub ecx,2 ; x={Xres-2, Xres-1} are special cases. 493 mov dword[xcounter],ecx 494 ; x=0 - special case 495 mov ebx,[prevline] 496 movq mm5,[esi+ebx] 497 movq mm6,[esi] 498 mov ebx,[nextline] 499 movq mm7,[esi+ebx] 500 movd eax,mm5 501 movzx edx,ax 502 mov [w1],edx 503 mov [w2],edx 504 shr eax,16 505 mov [w3],eax 506 movd eax,mm6 507 movzx edx,ax 508 mov [w4],edx 509 mov [w5],edx 510 shr eax,16 511 mov [w6],eax 512 movd eax,mm7 513 movzx edx,ax 514 mov [w7],edx 515 mov [w8],edx 516 shr eax,16 517 mov [w9],eax 518 jmp .flags 519.loopx 520 mov ebx,[prevline] 521 movq mm5,[esi+ebx-2] 522 movq mm6,[esi-2] 523 mov ebx,[nextline] 524 movq mm7,[esi+ebx-2] 525 movd eax,mm5 526 movzx edx,ax 527 mov [w1],edx 528 shr eax,16 529 mov [w2],eax 530 psrlq mm5,32 531 movd eax,mm5 532 movzx edx,ax 533 mov [w3],edx 534 movd eax,mm6 535 movzx edx,ax 536 mov [w4],edx 537 shr eax,16 538 mov [w5],eax 539 psrlq mm6,32 540 movd eax,mm6 541 movzx edx,ax 542 mov [w6],edx 543 movd eax,mm7 544 movzx edx,ax 545 mov [w7],edx 546 shr eax,16 547 mov [w8],eax 548 psrlq mm7,32 549 movd eax,mm7 550 movzx edx,ax 551 mov [w9],edx 552.flags 553 mov ebx,RGBtoYUV 554 mov eax,[w5] 555 xor ecx,ecx 556 movd mm5,[ebx+eax*4] 557 mov dword[cross],0 558 559 mov edx,[w2] 560 cmp eax,edx 561 je .noflag2 562 or dword[cross],1 563 movq mm1,mm5 564 movd mm2,[ebx+edx*4] 565 psubusb mm1,mm2 566 psubusb mm2,mm5 567 por mm1,mm2 568 psubusb mm1,[threshold] 569 movd edx,mm1 570 test edx,edx 571 jz .noflag2 572 or ecx,2 573.noflag2 574 mov edx,[w4] 575 cmp eax,edx 576 je .noflag4 577 or dword[cross],2 578 movq mm1,mm5 579 movd mm2,[ebx+edx*4] 580 psubusb mm1,mm2 581 psubusb mm2,mm5 582 por mm1,mm2 583 psubusb mm1,[threshold] 584 movd edx,mm1 585 test edx,edx 586 jz .noflag4 587 or ecx,8 588.noflag4 589 mov edx,[w6] 590 cmp eax,edx 591 je .noflag6 592 or dword[cross],4 593 movq mm1,mm5 594 movd mm2,[ebx+edx*4] 595 psubusb mm1,mm2 596 psubusb mm2,mm5 597 por mm1,mm2 598 psubusb mm1,[threshold] 599 movd edx,mm1 600 test edx,edx 601 jz .noflag6 602 or ecx,16 603.noflag6 604 mov edx,[w8] 605 cmp eax,edx 606 je .noflag8 607 or dword[cross],8 608 movq mm1,mm5 609 movd mm2,[ebx+edx*4] 610 psubusb mm1,mm2 611 psubusb mm2,mm5 612 por mm1,mm2 613 psubusb mm1,[threshold] 614 movd edx,mm1 615 test edx,edx 616 jz .noflag8 617 or ecx,64 618.noflag8 619 test ecx,ecx 620 jnz .testflag1 621 mov ecx,[cross] 622 mov ebx,[ebp+pitch] 623 jmp [FuncTable2+ecx*4] 624.testflag1 625 mov edx,[w1] 626 cmp eax,edx 627 je .noflag1 628 movq mm1,mm5 629 movd mm2,[ebx+edx*4] 630 psubusb mm1,mm2 631 psubusb mm2,mm5 632 por mm1,mm2 633 psubusb mm1,[threshold] 634 movd edx,mm1 635 test edx,edx 636 jz .noflag1 637 or ecx,1 638.noflag1 639 mov edx,[w3] 640 cmp eax,edx 641 je .noflag3 642 movq mm1,mm5 643 movd mm2,[ebx+edx*4] 644 psubusb mm1,mm2 645 psubusb mm2,mm5 646 por mm1,mm2 647 psubusb mm1,[threshold] 648 movd edx,mm1 649 test edx,edx 650 jz .noflag3 651 or ecx,4 652.noflag3 653 mov edx,[w7] 654 cmp eax,edx 655 je .noflag7 656 movq mm1,mm5 657 movd mm2,[ebx+edx*4] 658 psubusb mm1,mm2 659 psubusb mm2,mm5 660 por mm1,mm2 661 psubusb mm1,[threshold] 662 movd edx,mm1 663 test edx,edx 664 jz .noflag7 665 or ecx,32 666.noflag7 667 mov edx,[w9] 668 cmp eax,edx 669 je .noflag9 670 movq mm1,mm5 671 movd mm2,[ebx+edx*4] 672 psubusb mm1,mm2 673 psubusb mm2,mm5 674 por mm1,mm2 675 psubusb mm1,[threshold] 676 movd edx,mm1 677 test edx,edx 678 jz .noflag9 679 or ecx,128 680.noflag9 681 mov ebx,[ebp+pitch] 682 jmp [FuncTable+ecx*4] 683 684..@flag0 685..@flag1 686..@flag4 687..@flag32 688..@flag128 689..@flag5 690..@flag132 691..@flag160 692..@flag33 693..@flag129 694..@flag36 695..@flag133 696..@flag164 697..@flag161 698..@flag37 699..@flag165 700 PIXEL00_20 701 PIXEL01_20 702 PIXEL10_20 703 PIXEL11_20 704 jmp .loopx_end 705..@flag2 706..@flag34 707..@flag130 708..@flag162 709 PIXEL00_22 710 PIXEL01_21 711 PIXEL10_20 712 PIXEL11_20 713 jmp .loopx_end 714..@flag16 715..@flag17 716..@flag48 717..@flag49 718 PIXEL00_20 719 PIXEL01_22 720 PIXEL10_20 721 PIXEL11_21 722 jmp .loopx_end 723..@flag64 724..@flag65 725..@flag68 726..@flag69 727 PIXEL00_20 728 PIXEL01_20 729 PIXEL10_21 730 PIXEL11_22 731 jmp .loopx_end 732..@flag8 733..@flag12 734..@flag136 735..@flag140 736 PIXEL00_21 737 PIXEL01_20 738 PIXEL10_22 739 PIXEL11_20 740 jmp .loopx_end 741..@flag3 742..@flag35 743..@flag131 744..@flag163 745 PIXEL00_11 746 PIXEL01_21 747 PIXEL10_20 748 PIXEL11_20 749 jmp .loopx_end 750..@flag6 751..@flag38 752..@flag134 753..@flag166 754 PIXEL00_22 755 PIXEL01_12 756 PIXEL10_20 757 PIXEL11_20 758 jmp .loopx_end 759..@flag20 760..@flag21 761..@flag52 762..@flag53 763 PIXEL00_20 764 PIXEL01_11 765 PIXEL10_20 766 PIXEL11_21 767 jmp .loopx_end 768..@flag144 769..@flag145 770..@flag176 771..@flag177 772 PIXEL00_20 773 PIXEL01_22 774 PIXEL10_20 775 PIXEL11_12 776 jmp .loopx_end 777..@flag192 778..@flag193 779..@flag196 780..@flag197 781 PIXEL00_20 782 PIXEL01_20 783 PIXEL10_21 784 PIXEL11_11 785 jmp .loopx_end 786..@flag96 787..@flag97 788..@flag100 789..@flag101 790 PIXEL00_20 791 PIXEL01_20 792 PIXEL10_12 793 PIXEL11_22 794 jmp .loopx_end 795..@flag40 796..@flag44 797..@flag168 798..@flag172 799 PIXEL00_21 800 PIXEL01_20 801 PIXEL10_11 802 PIXEL11_20 803 jmp .loopx_end 804..@flag9 805..@flag13 806..@flag137 807..@flag141 808 PIXEL00_12 809 PIXEL01_20 810 PIXEL10_22 811 PIXEL11_20 812 jmp .loopx_end 813..@flag18 814..@flag50 815 PIXEL00_22 816 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_20 817 PIXEL10_20 818 PIXEL11_21 819 jmp .loopx_end 820..@flag80 821..@flag81 822 PIXEL00_20 823 PIXEL01_22 824 PIXEL10_21 825 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_20 826 jmp .loopx_end 827..@flag72 828..@flag76 829 PIXEL00_21 830 PIXEL01_20 831 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_20 832 PIXEL11_22 833 jmp .loopx_end 834..@flag10 835..@flag138 836 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_20 837 PIXEL01_21 838 PIXEL10_22 839 PIXEL11_20 840 jmp .loopx_end 841..@flag66 842 PIXEL00_22 843 PIXEL01_21 844 PIXEL10_21 845 PIXEL11_22 846 jmp .loopx_end 847..@flag24 848 PIXEL00_21 849 PIXEL01_22 850 PIXEL10_22 851 PIXEL11_21 852 jmp .loopx_end 853..@flag7 854..@flag39 855..@flag135 856 PIXEL00_11 857 PIXEL01_12 858 PIXEL10_20 859 PIXEL11_20 860 jmp .loopx_end 861..@flag148 862..@flag149 863..@flag180 864 PIXEL00_20 865 PIXEL01_11 866 PIXEL10_20 867 PIXEL11_12 868 jmp .loopx_end 869..@flag224 870..@flag228 871..@flag225 872 PIXEL00_20 873 PIXEL01_20 874 PIXEL10_12 875 PIXEL11_11 876 jmp .loopx_end 877..@flag41 878..@flag169 879..@flag45 880 PIXEL00_12 881 PIXEL01_20 882 PIXEL10_11 883 PIXEL11_20 884 jmp .loopx_end 885..@flag22 886..@flag54 887 PIXEL00_22 888 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 889 PIXEL10_20 890 PIXEL11_21 891 jmp .loopx_end 892..@flag208 893..@flag209 894 PIXEL00_20 895 PIXEL01_22 896 PIXEL10_21 897 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 898 jmp .loopx_end 899..@flag104 900..@flag108 901 PIXEL00_21 902 PIXEL01_20 903 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 904 PIXEL11_22 905 jmp .loopx_end 906..@flag11 907..@flag139 908 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 909 PIXEL01_21 910 PIXEL10_22 911 PIXEL11_20 912 jmp .loopx_end 913..@flag19 914..@flag51 915 DiffOrNot w2,w6,PIXEL00_11,PIXEL01_10,PIXEL00_60,PIXEL01_90 916 PIXEL10_20 917 PIXEL11_21 918 jmp .loopx_end 919..@flag146 920..@flag178 921 PIXEL00_22 922 DiffOrNot w2,w6,PIXEL01_10,PIXEL11_12,PIXEL01_90,PIXEL11_61 923 PIXEL10_20 924 jmp .loopx_end 925..@flag84 926..@flag85 927 PIXEL00_20 928 DiffOrNot w6,w8,PIXEL01_11,PIXEL11_10,PIXEL01_60,PIXEL11_90 929 PIXEL10_21 930 jmp .loopx_end 931..@flag112 932..@flag113 933 PIXEL00_20 934 PIXEL01_22 935 DiffOrNot w6,w8,PIXEL10_12,PIXEL11_10,PIXEL10_61,PIXEL11_90 936 jmp .loopx_end 937..@flag200 938..@flag204 939 PIXEL00_21 940 PIXEL01_20 941 DiffOrNot w8,w4,PIXEL10_10,PIXEL11_11,PIXEL10_90,PIXEL11_60 942 jmp .loopx_end 943..@flag73 944..@flag77 945 DiffOrNot w8,w4,PIXEL00_12,PIXEL10_10,PIXEL00_61,PIXEL10_90 946 PIXEL01_20 947 PIXEL11_22 948 jmp .loopx_end 949..@flag42 950..@flag170 951 DiffOrNot w4,w2,PIXEL00_10,PIXEL10_11,PIXEL00_90,PIXEL10_60 952 PIXEL01_21 953 PIXEL11_20 954 jmp .loopx_end 955..@flag14 956..@flag142 957 DiffOrNot w4,w2,PIXEL00_10,PIXEL01_12,PIXEL00_90,PIXEL01_61 958 PIXEL10_22 959 PIXEL11_20 960 jmp .loopx_end 961..@flag67 962 PIXEL00_11 963 PIXEL01_21 964 PIXEL10_21 965 PIXEL11_22 966 jmp .loopx_end 967..@flag70 968 PIXEL00_22 969 PIXEL01_12 970 PIXEL10_21 971 PIXEL11_22 972 jmp .loopx_end 973..@flag28 974 PIXEL00_21 975 PIXEL01_11 976 PIXEL10_22 977 PIXEL11_21 978 jmp .loopx_end 979..@flag152 980 PIXEL00_21 981 PIXEL01_22 982 PIXEL10_22 983 PIXEL11_12 984 jmp .loopx_end 985..@flag194 986 PIXEL00_22 987 PIXEL01_21 988 PIXEL10_21 989 PIXEL11_11 990 jmp .loopx_end 991..@flag98 992 PIXEL00_22 993 PIXEL01_21 994 PIXEL10_12 995 PIXEL11_22 996 jmp .loopx_end 997..@flag56 998 PIXEL00_21 999 PIXEL01_22 1000 PIXEL10_11 1001 PIXEL11_21 1002 jmp .loopx_end 1003..@flag25 1004 PIXEL00_12 1005 PIXEL01_22 1006 PIXEL10_22 1007 PIXEL11_21 1008 jmp .loopx_end 1009..@flag26 1010..@flag31 1011 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1012 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1013 PIXEL10_22 1014 PIXEL11_21 1015 jmp .loopx_end 1016..@flag82 1017..@flag214 1018 PIXEL00_22 1019 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1020 PIXEL10_21 1021 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1022 jmp .loopx_end 1023..@flag88 1024..@flag248 1025 PIXEL00_21 1026 PIXEL01_22 1027 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1028 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1029 jmp .loopx_end 1030..@flag74 1031..@flag107 1032 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1033 PIXEL01_21 1034 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1035 PIXEL11_22 1036 jmp .loopx_end 1037..@flag27 1038 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1039 PIXEL01_10 1040 PIXEL10_22 1041 PIXEL11_21 1042 jmp .loopx_end 1043..@flag86 1044 PIXEL00_22 1045 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1046 PIXEL10_21 1047 PIXEL11_10 1048 jmp .loopx_end 1049..@flag216 1050 PIXEL00_21 1051 PIXEL01_22 1052 PIXEL10_10 1053 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1054 jmp .loopx_end 1055..@flag106 1056 PIXEL00_10 1057 PIXEL01_21 1058 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1059 PIXEL11_22 1060 jmp .loopx_end 1061..@flag30 1062 PIXEL00_10 1063 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1064 PIXEL10_22 1065 PIXEL11_21 1066 jmp .loopx_end 1067..@flag210 1068 PIXEL00_22 1069 PIXEL01_10 1070 PIXEL10_21 1071 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1072 jmp .loopx_end 1073..@flag120 1074 PIXEL00_21 1075 PIXEL01_22 1076 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1077 PIXEL11_10 1078 jmp .loopx_end 1079..@flag75 1080 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1081 PIXEL01_21 1082 PIXEL10_10 1083 PIXEL11_22 1084 jmp .loopx_end 1085..@flag29 1086 PIXEL00_12 1087 PIXEL01_11 1088 PIXEL10_22 1089 PIXEL11_21 1090 jmp .loopx_end 1091..@flag198 1092 PIXEL00_22 1093 PIXEL01_12 1094 PIXEL10_21 1095 PIXEL11_11 1096 jmp .loopx_end 1097..@flag184 1098 PIXEL00_21 1099 PIXEL01_22 1100 PIXEL10_11 1101 PIXEL11_12 1102 jmp .loopx_end 1103..@flag99 1104 PIXEL00_11 1105 PIXEL01_21 1106 PIXEL10_12 1107 PIXEL11_22 1108 jmp .loopx_end 1109..@flag57 1110 PIXEL00_12 1111 PIXEL01_22 1112 PIXEL10_11 1113 PIXEL11_21 1114 jmp .loopx_end 1115..@flag71 1116 PIXEL00_11 1117 PIXEL01_12 1118 PIXEL10_21 1119 PIXEL11_22 1120 jmp .loopx_end 1121..@flag156 1122 PIXEL00_21 1123 PIXEL01_11 1124 PIXEL10_22 1125 PIXEL11_12 1126 jmp .loopx_end 1127..@flag226 1128 PIXEL00_22 1129 PIXEL01_21 1130 PIXEL10_12 1131 PIXEL11_11 1132 jmp .loopx_end 1133..@flag60 1134 PIXEL00_21 1135 PIXEL01_11 1136 PIXEL10_11 1137 PIXEL11_21 1138 jmp .loopx_end 1139..@flag195 1140 PIXEL00_11 1141 PIXEL01_21 1142 PIXEL10_21 1143 PIXEL11_11 1144 jmp .loopx_end 1145..@flag102 1146 PIXEL00_22 1147 PIXEL01_12 1148 PIXEL10_12 1149 PIXEL11_22 1150 jmp .loopx_end 1151..@flag153 1152 PIXEL00_12 1153 PIXEL01_22 1154 PIXEL10_22 1155 PIXEL11_12 1156 jmp .loopx_end 1157..@flag58 1158 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1159 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1160 PIXEL10_11 1161 PIXEL11_21 1162 jmp .loopx_end 1163..@flag83 1164 PIXEL00_11 1165 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1166 PIXEL10_21 1167 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1168 jmp .loopx_end 1169..@flag92 1170 PIXEL00_21 1171 PIXEL01_11 1172 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1173 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1174 jmp .loopx_end 1175..@flag202 1176 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1177 PIXEL01_21 1178 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1179 PIXEL11_11 1180 jmp .loopx_end 1181..@flag78 1182 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1183 PIXEL01_12 1184 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1185 PIXEL11_22 1186 jmp .loopx_end 1187..@flag154 1188 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1189 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1190 PIXEL10_22 1191 PIXEL11_12 1192 jmp .loopx_end 1193..@flag114 1194 PIXEL00_22 1195 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1196 PIXEL10_12 1197 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1198 jmp .loopx_end 1199..@flag89 1200 PIXEL00_12 1201 PIXEL01_22 1202 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1203 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1204 jmp .loopx_end 1205..@flag90 1206 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1207 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1208 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1209 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1210 jmp .loopx_end 1211..@flag55 1212..@flag23 1213 DiffOrNot w2,w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90 1214 PIXEL10_20 1215 PIXEL11_21 1216 jmp .loopx_end 1217..@flag182 1218..@flag150 1219 PIXEL00_22 1220 DiffOrNot w2,w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61 1221 PIXEL10_20 1222 jmp .loopx_end 1223..@flag213 1224..@flag212 1225 PIXEL00_20 1226 DiffOrNot w6,w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90 1227 PIXEL10_21 1228 jmp .loopx_end 1229..@flag241 1230..@flag240 1231 PIXEL00_20 1232 PIXEL01_22 1233 DiffOrNot w6,w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90 1234 jmp .loopx_end 1235..@flag236 1236..@flag232 1237 PIXEL00_21 1238 PIXEL01_20 1239 DiffOrNot w8,w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60 1240 jmp .loopx_end 1241..@flag109 1242..@flag105 1243 DiffOrNot w8,w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90 1244 PIXEL01_20 1245 PIXEL11_22 1246 jmp .loopx_end 1247..@flag171 1248..@flag43 1249 DiffOrNot w4,w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60 1250 PIXEL01_21 1251 PIXEL11_20 1252 jmp .loopx_end 1253..@flag143 1254..@flag15 1255 DiffOrNot w4,w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61 1256 PIXEL10_22 1257 PIXEL11_20 1258 jmp .loopx_end 1259..@flag124 1260 PIXEL00_21 1261 PIXEL01_11 1262 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1263 PIXEL11_10 1264 jmp .loopx_end 1265..@flag203 1266 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1267 PIXEL01_21 1268 PIXEL10_10 1269 PIXEL11_11 1270 jmp .loopx_end 1271..@flag62 1272 PIXEL00_10 1273 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1274 PIXEL10_11 1275 PIXEL11_21 1276 jmp .loopx_end 1277..@flag211 1278 PIXEL00_11 1279 PIXEL01_10 1280 PIXEL10_21 1281 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1282 jmp .loopx_end 1283..@flag118 1284 PIXEL00_22 1285 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1286 PIXEL10_12 1287 PIXEL11_10 1288 jmp .loopx_end 1289..@flag217 1290 PIXEL00_12 1291 PIXEL01_22 1292 PIXEL10_10 1293 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1294 jmp .loopx_end 1295..@flag110 1296 PIXEL00_10 1297 PIXEL01_12 1298 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1299 PIXEL11_22 1300 jmp .loopx_end 1301..@flag155 1302 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1303 PIXEL01_10 1304 PIXEL10_22 1305 PIXEL11_12 1306 jmp .loopx_end 1307..@flag188 1308 PIXEL00_21 1309 PIXEL01_11 1310 PIXEL10_11 1311 PIXEL11_12 1312 jmp .loopx_end 1313..@flag185 1314 PIXEL00_12 1315 PIXEL01_22 1316 PIXEL10_11 1317 PIXEL11_12 1318 jmp .loopx_end 1319..@flag61 1320 PIXEL00_12 1321 PIXEL01_11 1322 PIXEL10_11 1323 PIXEL11_21 1324 jmp .loopx_end 1325..@flag157 1326 PIXEL00_12 1327 PIXEL01_11 1328 PIXEL10_22 1329 PIXEL11_12 1330 jmp .loopx_end 1331..@flag103 1332 PIXEL00_11 1333 PIXEL01_12 1334 PIXEL10_12 1335 PIXEL11_22 1336 jmp .loopx_end 1337..@flag227 1338 PIXEL00_11 1339 PIXEL01_21 1340 PIXEL10_12 1341 PIXEL11_11 1342 jmp .loopx_end 1343..@flag230 1344 PIXEL00_22 1345 PIXEL01_12 1346 PIXEL10_12 1347 PIXEL11_11 1348 jmp .loopx_end 1349..@flag199 1350 PIXEL00_11 1351 PIXEL01_12 1352 PIXEL10_21 1353 PIXEL11_11 1354 jmp .loopx_end 1355..@flag220 1356 PIXEL00_21 1357 PIXEL01_11 1358 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1359 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1360 jmp .loopx_end 1361..@flag158 1362 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1363 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1364 PIXEL10_22 1365 PIXEL11_12 1366 jmp .loopx_end 1367..@flag234 1368 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1369 PIXEL01_21 1370 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1371 PIXEL11_11 1372 jmp .loopx_end 1373..@flag242 1374 PIXEL00_22 1375 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1376 PIXEL10_12 1377 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1378 jmp .loopx_end 1379..@flag59 1380 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1381 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1382 PIXEL10_11 1383 PIXEL11_21 1384 jmp .loopx_end 1385..@flag121 1386 PIXEL00_12 1387 PIXEL01_22 1388 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1389 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1390 jmp .loopx_end 1391..@flag87 1392 PIXEL00_11 1393 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1394 PIXEL10_21 1395 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1396 jmp .loopx_end 1397..@flag79 1398 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1399 PIXEL01_12 1400 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1401 PIXEL11_22 1402 jmp .loopx_end 1403..@flag122 1404 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1405 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1406 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1407 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1408 jmp .loopx_end 1409..@flag94 1410 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1411 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1412 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1413 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1414 jmp .loopx_end 1415..@flag218 1416 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1417 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1418 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1419 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1420 jmp .loopx_end 1421..@flag91 1422 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1423 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1424 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1425 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1426 jmp .loopx_end 1427..@flag229 1428 PIXEL00_20 1429 PIXEL01_20 1430 PIXEL10_12 1431 PIXEL11_11 1432 jmp .loopx_end 1433..@flag167 1434 PIXEL00_11 1435 PIXEL01_12 1436 PIXEL10_20 1437 PIXEL11_20 1438 jmp .loopx_end 1439..@flag173 1440 PIXEL00_12 1441 PIXEL01_20 1442 PIXEL10_11 1443 PIXEL11_20 1444 jmp .loopx_end 1445..@flag181 1446 PIXEL00_20 1447 PIXEL01_11 1448 PIXEL10_20 1449 PIXEL11_12 1450 jmp .loopx_end 1451..@flag186 1452 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1453 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1454 PIXEL10_11 1455 PIXEL11_12 1456 jmp .loopx_end 1457..@flag115 1458 PIXEL00_11 1459 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1460 PIXEL10_12 1461 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1462 jmp .loopx_end 1463..@flag93 1464 PIXEL00_12 1465 PIXEL01_11 1466 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1467 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1468 jmp .loopx_end 1469..@flag206 1470 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1471 PIXEL01_12 1472 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1473 PIXEL11_11 1474 jmp .loopx_end 1475..@flag205 1476..@flag201 1477 PIXEL00_12 1478 PIXEL01_20 1479 DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70 1480 PIXEL11_11 1481 jmp .loopx_end 1482..@flag174 1483..@flag46 1484 DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70 1485 PIXEL01_12 1486 PIXEL10_11 1487 PIXEL11_20 1488 jmp .loopx_end 1489..@flag179 1490..@flag147 1491 PIXEL00_11 1492 DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70 1493 PIXEL10_20 1494 PIXEL11_12 1495 jmp .loopx_end 1496..@flag117 1497..@flag116 1498 PIXEL00_20 1499 PIXEL01_11 1500 PIXEL10_12 1501 DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70 1502 jmp .loopx_end 1503..@flag189 1504 PIXEL00_12 1505 PIXEL01_11 1506 PIXEL10_11 1507 PIXEL11_12 1508 jmp .loopx_end 1509..@flag231 1510 PIXEL00_11 1511 PIXEL01_12 1512 PIXEL10_12 1513 PIXEL11_11 1514 jmp .loopx_end 1515..@flag126 1516 PIXEL00_10 1517 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1518 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1519 PIXEL11_10 1520 jmp .loopx_end 1521..@flag219 1522 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1523 PIXEL01_10 1524 PIXEL10_10 1525 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1526 jmp .loopx_end 1527..@flag125 1528 DiffOrNot w8,w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90 1529 PIXEL01_11 1530 PIXEL11_10 1531 jmp .loopx_end 1532..@flag221 1533 PIXEL00_12 1534 DiffOrNot w6,w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90 1535 PIXEL10_10 1536 jmp .loopx_end 1537..@flag207 1538 DiffOrNot w4,w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61 1539 PIXEL10_10 1540 PIXEL11_11 1541 jmp .loopx_end 1542..@flag238 1543 PIXEL00_10 1544 PIXEL01_12 1545 DiffOrNot w8,w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60 1546 jmp .loopx_end 1547..@flag190 1548 PIXEL00_10 1549 DiffOrNot w2,w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61 1550 PIXEL10_11 1551 jmp .loopx_end 1552..@flag187 1553 DiffOrNot w4,w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60 1554 PIXEL01_10 1555 PIXEL11_12 1556 jmp .loopx_end 1557..@flag243 1558 PIXEL00_11 1559 PIXEL01_10 1560 DiffOrNot w6,w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90 1561 jmp .loopx_end 1562..@flag119 1563 DiffOrNot w2,w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90 1564 PIXEL10_12 1565 PIXEL11_10 1566 jmp .loopx_end 1567..@flag237 1568..@flag233 1569 PIXEL00_12 1570 PIXEL01_20 1571 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1572 PIXEL11_11 1573 jmp .loopx_end 1574..@flag175 1575..@flag47 1576 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1577 PIXEL01_12 1578 PIXEL10_11 1579 PIXEL11_20 1580 jmp .loopx_end 1581..@flag183 1582..@flag151 1583 PIXEL00_11 1584 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1585 PIXEL10_20 1586 PIXEL11_12 1587 jmp .loopx_end 1588..@flag245 1589..@flag244 1590 PIXEL00_20 1591 PIXEL01_11 1592 PIXEL10_12 1593 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1594 jmp .loopx_end 1595..@flag250 1596 PIXEL00_10 1597 PIXEL01_10 1598 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1599 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1600 jmp .loopx_end 1601..@flag123 1602 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1603 PIXEL01_10 1604 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1605 PIXEL11_10 1606 jmp .loopx_end 1607..@flag95 1608 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1609 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1610 PIXEL10_10 1611 PIXEL11_10 1612 jmp .loopx_end 1613..@flag222 1614 PIXEL00_10 1615 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1616 PIXEL10_10 1617 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1618 jmp .loopx_end 1619..@flag252 1620 PIXEL00_21 1621 PIXEL01_11 1622 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1623 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1624 jmp .loopx_end 1625..@flag249 1626 PIXEL00_12 1627 PIXEL01_22 1628 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1629 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1630 jmp .loopx_end 1631..@flag235 1632 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1633 PIXEL01_21 1634 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1635 PIXEL11_11 1636 jmp .loopx_end 1637..@flag111 1638 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1639 PIXEL01_12 1640 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1641 PIXEL11_22 1642 jmp .loopx_end 1643..@flag63 1644 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1645 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1646 PIXEL10_11 1647 PIXEL11_21 1648 jmp .loopx_end 1649..@flag159 1650 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1651 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1652 PIXEL10_22 1653 PIXEL11_12 1654 jmp .loopx_end 1655..@flag215 1656 PIXEL00_11 1657 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1658 PIXEL10_21 1659 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1660 jmp .loopx_end 1661..@flag246 1662 PIXEL00_22 1663 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1664 PIXEL10_12 1665 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1666 jmp .loopx_end 1667..@flag254 1668 PIXEL00_10 1669 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1670 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1671 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1672 jmp .loopx_end 1673..@flag253 1674 PIXEL00_12 1675 PIXEL01_11 1676 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1677 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1678 jmp .loopx_end 1679..@flag251 1680 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1681 PIXEL01_10 1682 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1683 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1684 jmp .loopx_end 1685..@flag239 1686 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1687 PIXEL01_12 1688 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1689 PIXEL11_11 1690 jmp .loopx_end 1691..@flag127 1692 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1693 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20 1694 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20 1695 PIXEL11_10 1696 jmp .loopx_end 1697..@flag191 1698 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1699 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1700 PIXEL10_11 1701 PIXEL11_12 1702 jmp .loopx_end 1703..@flag223 1704 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20 1705 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1706 PIXEL10_10 1707 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20 1708 jmp .loopx_end 1709..@flag247 1710 PIXEL00_11 1711 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1712 PIXEL10_12 1713 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1714 jmp .loopx_end 1715..@flag255 1716 DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100 1717 DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100 1718 DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100 1719 DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100 1720 jmp .loopx_end 1721 1722 1723..@cross0 1724 mov edx,eax 1725 shl eax,16 1726 or eax,edx 1727 mov [edi],eax 1728 mov [edi+ebx],eax 1729 jmp .loopx_end 1730..@cross1 1731 mov edx,eax 1732 shl eax,16 1733 or eax,edx 1734 mov ecx,[w2] 1735 and edx,[zerolowbits] 1736 and ecx,[zerolowbits] 1737 add ecx,edx 1738 shr ecx,1 1739 add ecx,0x0821 1740 and ecx,[zerolowbits] 1741 add edx,ecx 1742 shr edx,1 1743 mov ecx,edx 1744 shl edx,16 1745 or edx,ecx 1746 mov [edi],edx 1747 mov [edi+ebx],eax 1748 jmp .loopx_end 1749..@cross2 1750 shl eax,16 1751 mov ecx,[w4] 1752 and edx,[zerolowbits] 1753 and ecx,[zerolowbits] 1754 add ecx,edx 1755 shr ecx,1 1756 add ecx,0x0821 1757 and ecx,[zerolowbits] 1758 add edx,ecx 1759 shr edx,1 1760 or eax,edx 1761 mov [edi],eax 1762 mov [edi+ebx],eax 1763 jmp .loopx_end 1764..@cross4 1765 mov ecx,[w6] 1766 and edx,[zerolowbits] 1767 and ecx,[zerolowbits] 1768 add ecx,edx 1769 shr ecx,1 1770 add ecx,0x0821 1771 and ecx,[zerolowbits] 1772 add edx,ecx 1773 shr edx,1 1774 shl edx,16 1775 or eax,edx 1776 mov [edi],eax 1777 mov [edi+ebx],eax 1778 jmp .loopx_end 1779..@cross8 1780 mov edx,eax 1781 shl eax,16 1782 or eax,edx 1783 mov ecx,[w8] 1784 and edx,[zerolowbits] 1785 and ecx,[zerolowbits] 1786 add ecx,edx 1787 shr ecx,1 1788 add ecx,0x0821 1789 and ecx,[zerolowbits] 1790 add edx,ecx 1791 shr edx,1 1792 mov ecx,edx 1793 shl edx,16 1794 or edx,ecx 1795 mov [edi],eax 1796 mov [edi+ebx],edx 1797 jmp .loopx_end 1798 1799.loopx_end 1800 add esi,2 1801 add edi,4 1802 dec dword[xcounter] 1803 jle .xres_2 1804 jmp .loopx 1805.xres_2 1806 ; x=Xres-2 - special case 1807 jl NEAR .xres_1 1808 mov ebx,[prevline] 1809 movq mm5,[esi+ebx-4] 1810 movq mm6,[esi-4] 1811 mov ebx,[nextline] 1812 movq mm7,[esi+ebx-4] 1813 psrlq mm5,16 1814 psrlq mm6,16 1815 psrlq mm7,16 1816 movd eax,mm5 1817 movzx edx,ax 1818 mov [w1],edx 1819 shr eax,16 1820 mov [w2],eax 1821 psrlq mm5,32 1822 movd eax,mm5 1823 mov [w3],eax 1824 movd eax,mm6 1825 movzx edx,ax 1826 mov [w4],edx 1827 shr eax,16 1828 mov [w5],eax 1829 psrlq mm6,32 1830 movd eax,mm6 1831 mov [w6],eax 1832 movd eax,mm7 1833 movzx edx,ax 1834 mov [w7],edx 1835 shr eax,16 1836 mov [w8],eax 1837 psrlq mm7,32 1838 movd eax,mm7 1839 mov [w9],eax 1840 jmp .flags 1841.xres_1 1842 cmp dword[xcounter],-1 1843 jl .nexty 1844 ; x=Xres-1 - special case 1845 mov ebx,[prevline] 1846 movq mm5,[esi+ebx-6] 1847 movq mm6,[esi-6] 1848 mov ebx,[nextline] 1849 movq mm7,[esi+ebx-6] 1850 psrlq mm5,32 1851 psrlq mm6,32 1852 psrlq mm7,32 1853 movd eax,mm5 1854 movzx edx,ax 1855 mov [w1],edx 1856 shr eax,16 1857 mov [w2],eax 1858 mov [w3],eax 1859 movd eax,mm6 1860 movzx edx,ax 1861 mov [w4],edx 1862 shr eax,16 1863 mov [w5],eax 1864 mov [w6],eax 1865 movd eax,mm7 1866 movzx edx,ax 1867 mov [w7],edx 1868 shr eax,16 1869 mov [w8],eax 1870 mov [w9],eax 1871 jmp .flags 1872.nexty 1873 1874 add edi,ebx 1875 dec dword[linesleft] 1876 jz .fin 1877 mov ebx,[ebp+Xres] 1878 shl ebx,1 1879 cmp dword[linesleft],1 1880 je .lastline 1881 mov dword[nextline],ebx 1882 neg ebx 1883 mov dword[prevline],ebx 1884 jmp .loopy 1885.lastline 1886 mov dword[nextline],0 1887 neg ebx 1888 mov dword[prevline],ebx 1889 jmp .loopy 1890.fin 1891 emms 1892 popad 1893 mov esp,ebp 1894 pop ebp 1895 ret 1896 1897SECTION .data 1898FuncTable 1899 dd ..@flag0, ..@flag1, ..@flag2, ..@flag3, ..@flag4, ..@flag5, ..@flag6, ..@flag7 1900 dd ..@flag8, ..@flag9, ..@flag10, ..@flag11, ..@flag12, ..@flag13, ..@flag14, ..@flag15 1901 dd ..@flag16, ..@flag17, ..@flag18, ..@flag19, ..@flag20, ..@flag21, ..@flag22, ..@flag23 1902 dd ..@flag24, ..@flag25, ..@flag26, ..@flag27, ..@flag28, ..@flag29, ..@flag30, ..@flag31 1903 dd ..@flag32, ..@flag33, ..@flag34, ..@flag35, ..@flag36, ..@flag37, ..@flag38, ..@flag39 1904 dd ..@flag40, ..@flag41, ..@flag42, ..@flag43, ..@flag44, ..@flag45, ..@flag46, ..@flag47 1905 dd ..@flag48, ..@flag49, ..@flag50, ..@flag51, ..@flag52, ..@flag53, ..@flag54, ..@flag55 1906 dd ..@flag56, ..@flag57, ..@flag58, ..@flag59, ..@flag60, ..@flag61, ..@flag62, ..@flag63 1907 dd ..@flag64, ..@flag65, ..@flag66, ..@flag67, ..@flag68, ..@flag69, ..@flag70, ..@flag71 1908 dd ..@flag72, ..@flag73, ..@flag74, ..@flag75, ..@flag76, ..@flag77, ..@flag78, ..@flag79 1909 dd ..@flag80, ..@flag81, ..@flag82, ..@flag83, ..@flag84, ..@flag85, ..@flag86, ..@flag87 1910 dd ..@flag88, ..@flag89, ..@flag90, ..@flag91, ..@flag92, ..@flag93, ..@flag94, ..@flag95 1911 dd ..@flag96, ..@flag97, ..@flag98, ..@flag99, ..@flag100, ..@flag101, ..@flag102, ..@flag103 1912 dd ..@flag104, ..@flag105, ..@flag106, ..@flag107, ..@flag108, ..@flag109, ..@flag110, ..@flag111 1913 dd ..@flag112, ..@flag113, ..@flag114, ..@flag115, ..@flag116, ..@flag117, ..@flag118, ..@flag119 1914 dd ..@flag120, ..@flag121, ..@flag122, ..@flag123, ..@flag124, ..@flag125, ..@flag126, ..@flag127 1915 dd ..@flag128, ..@flag129, ..@flag130, ..@flag131, ..@flag132, ..@flag133, ..@flag134, ..@flag135 1916 dd ..@flag136, ..@flag137, ..@flag138, ..@flag139, ..@flag140, ..@flag141, ..@flag142, ..@flag143 1917 dd ..@flag144, ..@flag145, ..@flag146, ..@flag147, ..@flag148, ..@flag149, ..@flag150, ..@flag151 1918 dd ..@flag152, ..@flag153, ..@flag154, ..@flag155, ..@flag156, ..@flag157, ..@flag158, ..@flag159 1919 dd ..@flag160, ..@flag161, ..@flag162, ..@flag163, ..@flag164, ..@flag165, ..@flag166, ..@flag167 1920 dd ..@flag168, ..@flag169, ..@flag170, ..@flag171, ..@flag172, ..@flag173, ..@flag174, ..@flag175 1921 dd ..@flag176, ..@flag177, ..@flag178, ..@flag179, ..@flag180, ..@flag181, ..@flag182, ..@flag183 1922 dd ..@flag184, ..@flag185, ..@flag186, ..@flag187, ..@flag188, ..@flag189, ..@flag190, ..@flag191 1923 dd ..@flag192, ..@flag193, ..@flag194, ..@flag195, ..@flag196, ..@flag197, ..@flag198, ..@flag199 1924 dd ..@flag200, ..@flag201, ..@flag202, ..@flag203, ..@flag204, ..@flag205, ..@flag206, ..@flag207 1925 dd ..@flag208, ..@flag209, ..@flag210, ..@flag211, ..@flag212, ..@flag213, ..@flag214, ..@flag215 1926 dd ..@flag216, ..@flag217, ..@flag218, ..@flag219, ..@flag220, ..@flag221, ..@flag222, ..@flag223 1927 dd ..@flag224, ..@flag225, ..@flag226, ..@flag227, ..@flag228, ..@flag229, ..@flag230, ..@flag231 1928 dd ..@flag232, ..@flag233, ..@flag234, ..@flag235, ..@flag236, ..@flag237, ..@flag238, ..@flag239 1929 dd ..@flag240, ..@flag241, ..@flag242, ..@flag243, ..@flag244, ..@flag245, ..@flag246, ..@flag247 1930 dd ..@flag248, ..@flag249, ..@flag250, ..@flag251, ..@flag252, ..@flag253, ..@flag254, ..@flag255 1931 1932FuncTable2 1933 dd ..@cross0, ..@cross1, ..@cross2, ..@flag0, 1934 dd ..@cross4, ..@flag0, ..@flag0, ..@flag0, 1935 dd ..@cross8, ..@flag0, ..@flag0, ..@flag0, 1936 dd ..@flag0, ..@flag0, ..@flag0, ..@flag0 1937 1938