]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1440b6.zip
authorToni Wilen <twilen@winuae.net>
Wed, 12 Sep 2007 17:33:53 +0000 (20:33 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:35:42 +0000 (21:35 +0200)
31 files changed:
akiko.c
cfgfile.c
expansion.c
filesys [new file with mode: 0755]
filesys.c
filesys_bootrom.c
hardfile.c
include/autoconf.h
include/filesys.h
include/filter.h [deleted file]
include/gfxfilter.h
od-win32/dxwrap.h
od-win32/hardfile_win32.c
od-win32/hq2x.c [deleted file]
od-win32/hq2x16.asm [new file with mode: 0755]
od-win32/hq2x32.asm
od-win32/hq3x16.asm [deleted file]
od-win32/hq3x32.asm [deleted file]
od-win32/hq4x32.asm [deleted file]
od-win32/resources/resource
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/scaler.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32_scale2x.c
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuae_msvc/winuae_msvc.8.vcproj
od-win32/winuae_msvc/winuae_msvc.vcproj
od-win32/winuaechangelog.txt

diff --git a/akiko.c b/akiko.c
index 0c6c676fb8e4d2b309f237d15713274b3fc05277..77e88da9881cf86f6b4772b23f454a4aaf22d1a7 100755 (executable)
--- a/akiko.c
+++ b/akiko.c
@@ -30,7 +30,7 @@
 
 #define AKIKO_DEBUG_NVRAM 0
 #define AKIKO_DEBUG_IO 0
-#define AKIKO_DEBUG_IO_CMD 1
+#define AKIKO_DEBUG_IO_CMD 0
 
 static void irq(void)
 {
index 778a9092b4973cf4731234e4103e66c5bbbc45b3..10db9193bd711ff4cb96301fbaee26b42a863945 100755 (executable)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -1392,6 +1392,13 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, char *option, char *valu
        return 1;
     }
 
+    for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) {
+       char tmp[100];
+       sprintf (tmp, "uaehf%d", i);
+       if (strcmp (option, tmp) == 0)
+           return 1;
+    }
     if (strcmp (option, "filesystem") == 0
        || strcmp (option, "hardfile") == 0)
     {
index 471e418934ce679cdbb11034f3a4b83b3ae90441..56c4f2e9d44e433b46ac3b6e26098c6dfbbf2bc3 100755 (executable)
@@ -1075,6 +1075,8 @@ int need_uae_boot_rom(void)
        return 1;
     if (currprefs.gfxmem_size)
        return 1;
+    if (currprefs.win32_automount_removable)
+       return 1;
     if (currprefs.chipmem_size > 2 * 1024 * 1024)
        return 1;
     return 0;
diff --git a/filesys b/filesys
new file mode 100755 (executable)
index 0000000..d76f4e7
Binary files /dev/null and b/filesys differ
index e3b941a7a7cde6d5758da05776939099d154e762..0fcfa41b6b5fce447a3f222e612310c62c0189ef 100755 (executable)
--- a/filesys.c
+++ b/filesys.c
@@ -114,6 +114,7 @@ typedef struct {
     int devno;
     int controller;
     int wasisempty; /* if true, this unit can be safely ejected and inserted */
+    int configureddrive; /* if true, this is drive that was manually configured */
 
     struct hardfiledata hf;
 
@@ -215,15 +216,20 @@ int get_filesys_unitconfig (struct uae_prefs *p, int index, struct mountedinfo *
            mi->ismounted = 1;
            if (uci->rootdir && strlen(uci->rootdir) == 0)
                return FILESYS_VIRTUAL;
-           if (my_existsfile (uci->rootdir))
+           if (my_existsfile (uci->rootdir)) {
+               mi->ismedia = 1;
                return FILESYS_VIRTUAL;
+           }
            if (my_getvolumeinfo (uci->rootdir) < 0)
                return -1;
+           mi->ismedia = 1;
            return FILESYS_VIRTUAL;
        } else {
            ui->hf.readonly = 1;
            ui->hf.blocksize = uci->blocksize;
            if (!hdf_open (&ui->hf, uci->rootdir)) {
+               mi->ismedia = 0;
+               mi->ismounted = 1;
                if (uci->reserved == 0 && uci->sectors == 0 && uci->surfaces == 0) {
                    if (ui->hf.flags & 1)
                        return FILESYS_HARDDRIVE;
@@ -231,11 +237,19 @@ int get_filesys_unitconfig (struct uae_prefs *p, int index, struct mountedinfo *
                }
                return -1;
            }
+           mi->ismedia = 1;
+           if (ui->hf.drive_empty)
+               mi->ismedia = 0;
            hdf_close (&ui->hf);
        }
     } else {
-       if (!ui->controller || (ui->controller && p->cs_ide))
+       if (!ui->controller || (ui->controller && p->cs_ide)) {
            mi->ismounted = 1;
+           if (uci->ishdf)
+               mi->ismedia = ui->hf.drive_empty ? 0 : 1;
+           else
+               mi->ismedia = 1;
+       }
     }
     mi->size = ui->hf.size;
     mi->nrcyls = (int)(uci->sectors * uci->surfaces ? (ui->hf.size / uci->blocksize) / (uci->sectors * uci->surfaces) : 0);
@@ -298,8 +312,12 @@ char *filesys_createvolname (const char *volname, const char *rootdir, const cha
        else
            nvol = my_strdup (def);
     }
-    if (!nvol)
-       nvol = my_strdup ("");
+    if (!nvol) {
+       if (volname && strlen (volname))
+           nvol = my_strdup (volname);
+       else
+           nvol = my_strdup ("");
+    }
     stripsemicolon(nvol);
     xfree (p);
     return nvol;
@@ -382,9 +400,9 @@ static int set_filesys_unit_1 (int nr,
            if (set_filesys_volume (rootdir, &flags, &readonly, &emptydrive, &ui->zarchive) < 0)
                return -1;
        }
-       if (!emptydrive) {
+       //if (!emptydrive) {
            ui->volname = filesys_createvolname (volname, rootdir, "harddrive");
-       }
+       //}
        ui->volflags = flags;
     } else {
        ui->hf.secspertrack = secspertrack;
@@ -398,25 +416,27 @@ static int set_filesys_unit_1 (int nr,
            hdf_open (&ui->hf, rootdir);
        }
        ui->hf.readonly = readonly;
-       if (ui->hf.handle_valid == 0) {
-           write_log ("Hardfile %s not found\n", ui->hf.device_name);
-           goto err;
-       }
-       if ((ui->hf.blocksize & (ui->hf.blocksize - 1)) != 0 || ui->hf.blocksize == 0) {
-           write_log ("Hardfile %s bad blocksize\n", ui->hf.device_name);
-           goto err;
-       }
-       if ((ui->hf.secspertrack || ui->hf.surfaces || ui->hf.reservedblocks) &&
-           (ui->hf.secspertrack < 1 || ui->hf.surfaces < 1 || ui->hf.surfaces > 1023 ||
-           ui->hf.reservedblocks < 0 || ui->hf.reservedblocks > 1023) != 0) {
-               write_log ("Hardfile %s bad hardfile geometry\n", ui->hf.device_name);
+       if (!ui->hf.drive_empty) {
+           if (ui->hf.handle_valid == 0) {
+               write_log ("Hardfile %s not found\n", ui->hf.device_name);
                goto err;
+           }
+           if ((ui->hf.blocksize & (ui->hf.blocksize - 1)) != 0 || ui->hf.blocksize == 0) {
+               write_log ("Hardfile %s bad blocksize\n", ui->hf.device_name);
+               goto err;
+           }
+           if ((ui->hf.secspertrack || ui->hf.surfaces || ui->hf.reservedblocks) &&
+               (ui->hf.secspertrack < 1 || ui->hf.surfaces < 1 || ui->hf.surfaces > 1023 ||
+               ui->hf.reservedblocks < 0 || ui->hf.reservedblocks > 1023) != 0) {
+                   write_log ("Hardfile %s bad hardfile geometry\n", ui->hf.device_name);
+                   goto err;
+           }
+           if (ui->hf.blocksize > ui->hf.size || ui->hf.size == 0) {
+               write_log ("Hardfile %s too small\n", ui->hf.device_name);
+               goto err;
+           }
+           ui->hf.nrcyls = (int)(ui->hf.secspertrack * ui->hf.surfaces ? (ui->hf.size / ui->hf.blocksize) / (ui->hf.secspertrack * ui->hf.surfaces) : 0);
        }
-       if (ui->hf.blocksize > ui->hf.size || ui->hf.size == 0) {
-           write_log ("Hardfile %s Hardfile too small\n", ui->hf.device_name);
-           goto err;
-       }
-       ui->hf.nrcyls = (int)(ui->hf.secspertrack * ui->hf.surfaces ? (ui->hf.size / ui->hf.blocksize) / (ui->hf.secspertrack * ui->hf.surfaces) : 0);
     }
     ui->self = 0;
     ui->reset_state = FS_STARTUP;
@@ -511,9 +531,13 @@ static void initialize_mountinfo(void)
            idx = set_filesys_unit_1 (-1, uci->devname, uci->ishdf ? NULL : uci->volname, uci->rootdir,
                uci->readonly, uci->sectors, uci->surfaces, uci->reserved,
                uci->blocksize, uci->bootpri, uci->filesys, 0, 0);
-           if (idx >= 0)
+           if (idx >= 0) {
+               UnitInfo *ui;
                uci->configoffset = idx;
-       } else if (uci->controller <= HD_CONTROLLER_IDE3 ) {
+               ui = &mountinfo.ui[idx];
+               ui->configureddrive = 1;
+           }
+        } else if (uci->controller <= HD_CONTROLLER_IDE3 ) {
            gayle_add_ide_unit (uci->controller - HD_CONTROLLER_IDE0, uci->rootdir, uci->blocksize, uci->readonly,
                uci->devname, uci->sectors, uci->surfaces, uci->reserved,
                uci->bootpri, uci->filesys);
@@ -959,7 +983,6 @@ void filesys_vsync (void)
     }
 }
 
-
 int filesys_media_change (char *rootdir, int inserted)
 {
     Unit *u;
@@ -967,6 +990,8 @@ int filesys_media_change (char *rootdir, int inserted)
     int nr = -1;
     char volname[MAX_DPATH], *volptr;
 
+    if (!mountertask)
+       return 0;
     if (automountunit >= 0)
        return -1;
     nr = -1;
@@ -981,6 +1006,12 @@ int filesys_media_change (char *rootdir, int inserted)
            }
        }
     }
+    ui = NULL;
+    if (nr >= 0)
+       ui = &mountinfo.ui[nr];
+    /* only configured drives have automount support if automount is disabled */
+    if (!currprefs.win32_automount_removable && (!ui || !ui->configureddrive))
+        return 0;
     if (nr < 0 && !inserted)
        return 0;
     /* already mounted volume was ejected? */
@@ -993,6 +1024,10 @@ int filesys_media_change (char *rootdir, int inserted)
        volptr = volname;
        if (!volname[0])
            volptr = NULL;
+       if (ui && ui->configureddrive && ui->volname) {
+           volptr = volname;
+           strcpy (volptr, ui->volname);
+       }
        /* new volume inserted and it was previously mounted? */
        if (nr >= 0) {
            if (!filesys_isvolume (u)) /* not going to mount twice */
@@ -1016,6 +1051,18 @@ int filesys_media_change (char *rootdir, int inserted)
     return 0;
 }
 
+int hardfile_remount (int nr)
+{
+    /* this does work but every media reinsert duplicates the device.. */
+#if 0
+    if (!mountertask)
+       return 0;
+    automountunit = nr;
+    uae_Signal (mountertask, 1 << 17);
+#endif
+    return 1;
+}
+
 int filesys_insert (int nr, char *volume, char *rootdir, int readonly, int flags)
 {
     struct uaedev_config_info *uci;
@@ -2638,8 +2685,6 @@ static ExAllKey *getexall (Unit *unit, int id)
 }
 
 
-#if 1
-
 static int exalldo (uaecptr exalldata, uae_u32 exalldatasize, uae_u32 type, uaecptr control, Unit *unit, a_inode *aino)
 {
     uaecptr exp = exalldata;
@@ -2826,8 +2871,8 @@ static int action_examine_all (Unit *unit, dpacket packet)
 
     ok = 0;
 
-    write_log ("exall: %08x %08x-%08x %d %d %08x\n", lock, exalldata, exalldata + exalldatasize, exalldatasize, type, control);
-    write_log ("exall: MatchString %08x, MatchFunc %08x\n", get_long (control + 8), get_long (control + 12));
+    //write_log ("exall: %08x %08x-%08x %d %d %08x\n", lock, exalldata, exalldata + exalldatasize, exalldatasize, type, control);
+    //write_log ("exall: MatchString %08x, MatchFunc %08x\n", get_long (control + 8), get_long (control + 12));
 
     put_long (control + 0, 0); /* eac_Entries */
 
@@ -2896,7 +2941,7 @@ fail:
        exp = get_long (exp); /* ed_Next */
        i--;
     }
-    write_log("ok=%d, err=%d, eac_Entries = %d\n", ok, ok ? -1 : doserr, get_long (control + 0));
+    //write_log("ok=%d, err=%d, eac_Entries = %d\n", ok, ok ? -1 : doserr, get_long (control + 0));
 
     if (!ok) {
        PUT_PCK_RES1 (packet, DOS_FALSE);
@@ -2911,7 +2956,6 @@ fail:
     }
     return 1;
 }
-#endif
 
 static void action_examine_object (Unit *unit, dpacket packet)
 {
@@ -4747,6 +4791,7 @@ static uae_u32 REGPARAM2 filesys_init_storeinfo (TrapContext *context)
        ret = automountunit;
        automountunit = -1;
        break;
+       case 3:
        return 0;
     }
     return ret;
@@ -4875,6 +4920,11 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke
     int oldversion, oldrevision;
     int newversion, newrevision;
 
+    if (hfd->drive_empty) {
+       rdbmnt
+       write_log ("ignored, drive is empty\n");
+       return -2;
+    }
     if (hfd->blocksize == 0) {
        rdbmnt
        write_log ("failed, blocksize == 0\n");
@@ -4958,7 +5008,7 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke
     }
 
     if (!(flags & 1)) /* not bootable */
-       m68k_dreg (&regs, 7) = 0;
+       m68k_dreg (&regs, 7) = m68k_dreg (&regs, 7) & ~1;
 
     buf[37 + buf[36]] = 0; /* zero terminate BSTR */
     uip->rdb_devname_amiga[partnum] = ds (device_dupfix (get_long (parmpacket + PP_EXPLIB), buf + 37));
index bba76f94740ca9a498e5718d027b69a7f634484c..81b4a4ef3e3fdba4a37c207d1f251ece9f18c42c 100755 (executable)
@@ -1,52 +1,54 @@
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x00); db(0x08); db(0x50); db(0x00); db(0x00); db(0x06); db(0xb8);
- db(0x00); db(0x00); db(0x00); db(0x34); db(0x00); db(0x00); db(0x01); db(0x58);
- db(0x00); db(0x00); db(0x00); db(0x20); db(0x00); db(0x00); db(0x02); db(0x14);
- db(0x00); db(0x00); db(0x0a); db(0x84); db(0x00); db(0x00); db(0x0c); db(0x18);
- db(0x43); db(0xfa); db(0x0d); db(0xee); db(0x4e); db(0xae); db(0xff); db(0xa0);
+ db(0x60); db(0x00); db(0x09); db(0x50); db(0x00); db(0x00); db(0x07); db(0x26);
+ db(0x00); db(0x00); db(0x00); db(0x34); db(0x00); db(0x00); db(0x01); db(0x68);
+ db(0x00); db(0x00); db(0x00); db(0x20); db(0x00); db(0x00); db(0x02); db(0x24);
+ db(0x00); db(0x00); db(0x0b); db(0x84); db(0x00); db(0x00); db(0x0d); db(0x1c);
+ db(0x43); db(0xfa); db(0x0e); db(0xf2); db(0x4e); db(0xae); db(0xff); db(0xa0);
  db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x16); db(0x20); db(0x40);
  db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xfc);
- db(0x61); db(0x00); db(0x0a); db(0x32); db(0x2a); db(0x50); db(0x43); db(0xfa);
- db(0x0d); db(0xe6); db(0x70); db(0x24); db(0x7a); db(0x00); db(0x4e); db(0xae);
+ db(0x61); db(0x00); db(0x0b); db(0x32); db(0x2a); db(0x50); db(0x43); db(0xfa);
+ db(0x0e); db(0xea); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x43); db(0xfa);
- db(0x0d); db(0xd6); db(0x70); db(0x00); db(0x7a); db(0x01); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x27); db(0x4c);
- db(0x01); db(0x9c); db(0x7c); db(0x00); db(0xbc); db(0xad); db(0x01); db(0x0c);
- db(0x64); db(0x24); db(0x2f); db(0x06); db(0x7e); db(0x01); db(0x2f); db(0x0b);
- db(0x20); db(0x4b); db(0x61); db(0x00); db(0x06); db(0x2c); db(0x26); db(0x5f);
- db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08);
- db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4);
- db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xd6); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x09); db(0xbe);
- db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c);
- db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a);
- db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44); db(0x4e); db(0xae);
- db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x0d); db(0x10); db(0x43); db(0xfa);
- db(0x00); db(0x1c); db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0a); db(0xde);
- db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48);
- db(0x61); db(0x00); db(0x09); db(0x8a); db(0x4e); db(0x90); db(0x4c); db(0xdf);
- db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x43); db(0xfa); db(0x0d); db(0x0c); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0xe4);
- db(0x2c); db(0x40); db(0x41); db(0xfa); db(0x0c); db(0xe3); db(0x22); db(0x08);
- db(0x74); db(0x0f); db(0x41); db(0xfa); db(0x00); db(0x20); db(0x26); db(0x08);
- db(0xe4); db(0x8b); db(0x28); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x60); db(0xbc);
+ db(0x0e); db(0xda); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x4a); db(0xad); db(0x01); db(0x0c);
+ db(0x67); db(0x4a); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0x9c);
+ db(0x7c); db(0x00); db(0xbc); db(0xad); db(0x01); db(0x0c); db(0x64); db(0x2c);
+ db(0x2f); db(0x06); db(0x7e); db(0x01); db(0x4a); db(0x45); db(0x67); db(0x04);
+ db(0x08); db(0xc7); db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b);
+ db(0x61); db(0x00); db(0x06); db(0x8c); db(0x26); db(0x5f); db(0x0c); db(0x80);
+ db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46);
+ db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xdc); db(0x2c); db(0x1f);
+ db(0x52); db(0x46); db(0x60); db(0xce); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x30); db(0x3c);
+ db(0xff); db(0x80); db(0x61); db(0x00); db(0x0a); db(0xb0); db(0x4e); db(0x90);
+ db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20);
+ db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a); db(0x67); db(0x08);
+ db(0x78); db(0x00); db(0x22); db(0x44); db(0x4e); db(0xae); db(0xfd); db(0x96);
+ db(0x41); db(0xfa); db(0x0e); db(0x06); db(0x43); db(0xfa); db(0x00); db(0x1c);
+ db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xd0); db(0x22); db(0x40);
+ db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x0a); db(0x7c); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x43); db(0xfa); db(0x0e); db(0x02); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0xe4); db(0x2c); db(0x40);
+ db(0x41); db(0xfa); db(0x0d); db(0xd9); db(0x22); db(0x08); db(0x74); db(0x0f);
+ db(0x41); db(0xfa); db(0x00); db(0x22); db(0x26); db(0x08); db(0xe4); db(0x8b);
+ db(0x28); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x60); db(0xbc); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
- db(0x09); db(0x2c); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
- db(0x61); db(0x00); db(0x06); db(0xb8); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x0a); db(0x1c); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x07); db(0x88); db(0x70); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x00); db(0x20); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x09); db(0x12); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x61); db(0x00); db(0x0a); db(0x02); db(0x70); db(0x00); db(0x4e); db(0x90);
  db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78);
  db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x08); db(0xfc); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
+ db(0x09); db(0xec); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
  db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06);
  db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40);
  db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
  db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
  db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
  db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x08); db(0x6e);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x09); db(0x5e);
  db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf);
  db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0);
  db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x0b); db(0xad); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x0c); db(0xa1); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
  db(0xff); db(0x28); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
  db(0xff); db(0x20); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
  db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
@@ -80,7 +82,7 @@
  db(0x43); db(0xeb); db(0x01); db(0xa0); db(0x11); db(0xb1); db(0x00); db(0x00);
  db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c);
  db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40);
- db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); db(0x0b); db(0x47);
+ db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); db(0x0c); db(0x3b);
  db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x98);
  db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10);
  db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7);
  db(0x48); db(0xe7); db(0x40); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90);
  db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa);
- db(0x0a); db(0x88); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
+ db(0x0b); db(0x7c); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
  db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42); db(0x60); db(0xf2);
  db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c);
  db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
  db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08);
- db(0x41); db(0xfa); db(0x0a); db(0x5e); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x09); db(0xeb); db(0x25); db(0x48); db(0x00); db(0x0e);
+ db(0x41); db(0xfa); db(0x0b); db(0x52); db(0x25); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x0a); db(0xdf); db(0x25); db(0x48); db(0x00); db(0x0e);
  db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90);
  db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50);
  db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a);
  db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x47); db(0x02); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x01); db(0x02); db(0x2e); db(0x00); db(0x4a); db(0x2b);
- db(0x00); db(0x4c); db(0x67); db(0x7a); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x00); db(0x4c); db(0x67); db(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0);
  db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e);
  db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80);
- db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x60); db(0x08); db(0x07);
+ db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07);
  db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20);
  db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07);
  db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
  db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b);
  db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e);
- db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x30); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x20); db(0x6b);
- db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x43); db(0xeb); db(0x00); db(0x20); db(0x22); db(0xa8);
- db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
- db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22);
- db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
- db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
- db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
- db(0xff); db(0xfe); db(0x67); db(0x72); db(0x08); db(0x07); db(0x00); db(0x00);
- db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
- db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20);
+ db(0x61); db(0x00); db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4);
+ db(0x61); db(0x00); db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76);
+ db(0x4c); db(0xdf); db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x01); db(0x22); db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e);
+ db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80);
+ db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20);
+ db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
+ db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b);
+ db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20);
+ db(0x61); db(0x00); db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01);
  db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c);
- db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
- db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae);
- db(0xfd); db(0x6c); db(0x60); db(0x42); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x20); db(0x6b); db(0x00); db(0xa0);
- db(0x20); db(0x68); db(0x00); db(0x22); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4);
+ db(0x61); db(0x00); db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76);
+ db(0x4c); db(0xdf); db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48);
+ db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22);
+ db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x22); db(0xa8); db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88);
+ db(0x21); db(0x40); db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48);
+ db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22);
  db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
- db(0x43); db(0xe8); db(0x00); db(0x04); db(0x45); db(0xeb); db(0x00); db(0x20);
- db(0x20); db(0x28); db(0x00); db(0x04); db(0x67); db(0x14); db(0xd0); db(0x80);
- db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x0a); db(0x22); db(0x40);
- db(0x20); db(0x51); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x60); db(0xe8);
- db(0x22); db(0x92); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
- db(0x44); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
+ db(0x22); db(0x68); db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9);
+ db(0xb3); db(0xca); db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04);
+ db(0x60); db(0x18); db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11);
+ db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04);
+ db(0x22); db(0x40); db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02);
+ db(0x22); db(0x92); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
  db(0x74); db(0x16); db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02);
  db(0x42); db(0x32); db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80);
  db(0x67); db(0x26); db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x36);
  db(0x70); db(0x00); db(0x4a); db(0x33); db(0x00); db(0x4d); db(0x67); db(0x04);
  db(0x52); db(0x00); db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x4c);
- db(0x67); db(0x24); db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x42);
+ db(0x67); db(0x24); db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2);
  db(0x70); db(0x01); db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16);
  db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x10); db(0x42); db(0x2b);
- db(0x00); db(0x4c); db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0xb6);
+ db(0x00); db(0x4c); db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68);
  db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75);
  db(0x4a); db(0xac); db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00);
  db(0x72); db(0x01); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75);
  db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x08); db(0x4a); db(0xa8);
  db(0x00); db(0x0c); db(0x66); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
  db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18);
- db(0x2e); db(0x15); db(0x4a); db(0x87); db(0x67); db(0x64); db(0x20); db(0x0a);
- db(0x67); db(0x60); db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08);
- db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80);
- db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c);
- db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a);
- db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08);
- db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f);
- db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06);
- db(0x67); db(0x1a); db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a);
- db(0x4a); db(0x92); db(0x67); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a);
- db(0x22); db(0xd8); db(0x59); db(0x81); db(0x6a); db(0xfa); db(0x53); db(0x95);
- db(0x53); db(0x87); db(0x60); db(0x9e); db(0x24); db(0x52); db(0x53); db(0x87);
- db(0x60); db(0x98); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75);
- db(0x61); db(0x00); db(0xfc); db(0xe6); db(0x21); db(0x40); db(0x01); db(0x98);
- db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00);
- db(0x03); db(0xac); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
- db(0x61); db(0x00); db(0x03); db(0xa2); db(0x22); db(0x48); db(0x20); db(0x5f);
- db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94);
- db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x83); db(0xff); db(0xff);
- db(0xff); db(0xfe); db(0x67); db(0x00); db(0xfa); db(0x06); db(0x0c); db(0x83);
- db(0x00); db(0x00); db(0x00); db(0x02); db(0x67); db(0x0c); db(0xc0); db(0x85);
- db(0x67); db(0x08); db(0x4a); db(0xa8); db(0x01); db(0x90); db(0x67); db(0x00);
- db(0xf9); db(0xf2); db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x12);
- db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40);
- db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48);
- db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0x4e);
- db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c); db(0x2f); db(0x08);
- db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f); db(0x22); db(0x48);
- db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x03); db(0x34); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40);
- db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40);
- db(0x00); db(0x20); db(0x4a); db(0xa9); db(0x01); db(0x94); db(0x67); db(0x28);
- db(0x20); db(0x69); db(0x01); db(0x94); db(0x61); db(0x00); db(0xfb); db(0x48);
- db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90);
- db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01);
- db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0xd2);
- db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf9); db(0x6e); db(0x30); db(0x3c);
- db(0xff); db(0x18); db(0x61); db(0x00); db(0x02); db(0xe8); db(0x4e); db(0x90);
- db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80);
- db(0x66); db(0x1a); db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70);
- db(0x00); db(0x14); db(0x43); db(0xfa); db(0xf8); db(0x58); db(0x20); db(0x09);
- db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20); db(0x70); db(0xff);
- db(0x27); db(0x40); db(0x00); db(0x24); db(0x08); db(0x07); db(0x00); db(0x00);
- db(0x67); db(0x38); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14);
- db(0x72); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x70); db(0x00); db(0x22); db(0x80); db(0x23); db(0x40); db(0x00); db(0x04);
- db(0x33); db(0x40); db(0x00); db(0x0e); db(0x30); db(0x3c); db(0x10); db(0x00);
- db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d);
- db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10);
- db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xf2);
- db(0x4e); db(0x75); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x02); db(0x72); db(0x01);
- db(0x70); db(0xec); db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a);
+ db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70);
+ db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d);
+ db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04);
+ db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34);
+ db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d);
+ db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a);
+ db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a);
+ db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75);
+ db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
+ db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04);
+ db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05);
+ db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a);
+ db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80);
+ db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94);
+ db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c);
+ db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x61); db(0x00);
+ db(0xfc); db(0x88); db(0x21); db(0x40); db(0x01); db(0x98); db(0x2f); db(0x08);
+ db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x04); db(0x3e);
+ db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00);
+ db(0x04); db(0x34); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8);
+ db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91);
+ db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00);
+ db(0xf9); db(0xa8); db(0x0c); db(0x43); db(0x00); db(0x01); db(0x66); db(0x14);
+ db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x0e); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x66); db(0x08); db(0x4a); db(0xa8); db(0x01); db(0x90);
+ db(0x67); db(0x00); db(0xf9); db(0x8e); db(0x20); db(0x28); db(0x01); db(0x90);
+ db(0x67); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f);
+ db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e);
+ db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
+ db(0x03); db(0xdc); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c);
+ db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f);
+ db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20);
+ db(0x61); db(0x00); db(0x03); db(0xc2); db(0x4e); db(0x90); db(0x70); db(0x00);
+ db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10);
+ db(0x27); db(0x40); db(0x00); db(0x20); db(0x4a); db(0xa9); db(0x01); db(0x94);
+ db(0x67); db(0x28); db(0x20); db(0x69); db(0x01); db(0x94); db(0x61); db(0x00);
+ db(0xfa); db(0xe6); db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29);
+ db(0x01); db(0x90); db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf);
+ db(0x03); db(0x01); db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00);
+ db(0xfa); db(0x70); db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf9); db(0x0a);
+ db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x03); db(0x76);
+ db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f);
+ db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c); db(0x00); db(0x00);
+ db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf7); db(0xe6);
+ db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20);
+ db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x3a); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0x14); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x22); db(0x40); db(0x70); db(0x00); db(0x22); db(0x80); db(0x23); db(0x40);
+ db(0x00); db(0x04); db(0x33); db(0x40); db(0x00); db(0x0e); db(0x30); db(0x3c);
+ db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08);
+ db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b);
+ db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae);
+ db(0xfe); db(0xf2); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49);
+ db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec); db(0x2c); db(0x4c);
+ db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56);
+ db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30);
+ db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40);
+ db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c);
+ db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x06); db(0x50); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a);
+ db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00);
  db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01);
- db(0x7e); db(0x02); db(0x7a); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x43); db(0xfa); db(0x06); db(0x14); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
+ db(0x06); db(0x3a); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02);
+ db(0x43); db(0xfa); db(0x06); db(0x28); db(0x70); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
  db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x21); db(0x4c);
- db(0x01); db(0x9c); db(0x48); db(0xe7); db(0x00); db(0x0a); db(0x61); db(0x00);
- db(0xfe); db(0x78); db(0x4c); db(0xdf); db(0x50); db(0x00); db(0x22); db(0x4c);
+ db(0x01); db(0x9c); db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00);
+ db(0xfd); db(0xf6); db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80);
+ db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46);
+ db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x4c);
  db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
  db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
  db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8);
- db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x05); db(0xac); db(0x70); db(0x00);
+ db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x05); db(0xb0); db(0x70); db(0x00);
  db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c);
  db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01);
  db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40);
  db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
  db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
  db(0x01); db(0xac); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
- db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0x3c); db(0x08); db(0x02);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xfa); db(0x4c); db(0x08); db(0x02);
  db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xfc); db(0x54); db(0x61); db(0x00); db(0x03); db(0x38); db(0x60); db(0x00);
- db(0x00); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x30); db(0x20); db(0x4d);
+ db(0xfb); db(0xb4); db(0x61); db(0x00); db(0x03); db(0x3c); db(0x60); db(0x00);
+ db(0x00); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x34); db(0x20); db(0x4d);
  db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
  db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
  db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae);
  db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08);
- db(0x61); db(0x00); db(0xfc); db(0xf8); db(0x42); db(0x2b); db(0x00); db(0xac);
+ db(0x61); db(0x00); db(0xfc); db(0x58); db(0x42); db(0x2b); db(0x00); db(0xac);
  db(0x20); db(0x0c); db(0x67); db(0xce); db(0x0c); db(0x6c); db(0x00); db(0x26);
  db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac); db(0x40); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42); db(0x0c); db(0x6c);
  db(0x60); db(0x00); db(0xff); db(0x08); db(0x28); db(0x43); db(0x61); db(0x04);
  db(0x60); db(0x00); db(0xff); db(0x00); db(0x0c); db(0xac); db(0x00); db(0x00);
  db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00);
- db(0xfb); db(0xf8); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09);
- db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfc); db(0x26);
+ db(0xfb); db(0x58); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09);
+ db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x86);
  db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d);
  db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05);
  db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a);
  db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18);
  db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01);
  db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87);
- db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xf5); db(0x7e);
+ db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xf4); db(0x7e);
  db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0);
  db(0x4e); db(0x75); db(0x00); db(0x00); db(0x0c); db(0xaf); db(0x00); db(0x00);
  db(0x00); db(0x22); db(0x00); db(0x08); db(0x66); db(0x30); db(0x48); db(0xe7);
  db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x22);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x70);
  db(0x61); db(0x00); db(0xff); db(0xbc); db(0x67); db(0x1a); db(0x22); db(0x40);
- db(0x24); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x40); db(0x70); db(0x00);
+ db(0x24); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x44); db(0x70); db(0x00);
  db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
  db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
  db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x61); db(0x00); db(0xff); db(0x3c); db(0x61); db(0x00); db(0xff); db(0x88);
  db(0x67); db(0x1a); db(0x24); db(0x40); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x02); db(0x19); db(0x70); db(0x00); db(0x72); db(0x00); db(0x4e); db(0xae);
+ db(0x02); db(0x1d); db(0x70); db(0x00); db(0x72); db(0x00); db(0x4e); db(0xae);
  db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81);
  db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf);
  db(0x44); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32);
  db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00);
  db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0x30); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
  db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42);
  db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b);
  db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b);
  db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a);
- db(0x24); db(0x43); db(0x97); db(0xcb); db(0x4e); db(0xae); db(0xfe); db(0xe6);
- db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x08); db(0x4a); db(0x2b);
- db(0x00); db(0x9d); db(0x66); db(0x26); db(0x41); db(0xfa); db(0xff); db(0xf0);
- db(0x0c); db(0x10); db(0x00); db(0x01); db(0x66); db(0x1c); db(0x41); db(0xfa);
- db(0x01); db(0x96); db(0x43); db(0xfa); db(0x00); db(0x1a); db(0x70); db(0x05);
- db(0x61); db(0x00); db(0xff); db(0x82); db(0x50); db(0xeb); db(0x00); db(0x9d);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00); db(0xfe); db(0x2e);
- db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x4e); db(0x75); db(0x2c); db(0x79);
- db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x74); db(0x00); db(0x01); db(0xc2); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40); db(0x70); db(0x14);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00);
- db(0x43); db(0xfa); db(0x01); db(0xaa); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2e); db(0x00); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x44);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x61); db(0x00); db(0xfe); db(0xc6);
- db(0x2b); db(0x40); db(0x00); db(0x3c); db(0x67); db(0x00); db(0x00); db(0x4e);
- db(0x61); db(0x00); db(0xfe); db(0xee); db(0x2b); db(0x40); db(0x00); db(0x40);
- db(0x67); db(0x00); db(0x00); db(0x42); db(0x47); db(0xed); db(0x00); db(0x16);
- db(0x27); db(0x4c); db(0x00); db(0x0c); db(0x27); db(0x42); db(0x00); db(0x08);
- db(0x70); db(0xff); db(0x26); db(0x80); db(0x27); db(0x40); db(0x00); db(0x04);
- db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
- db(0x41); db(0xfa); db(0x00); db(0xfc); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x00); db(0xa0); db(0x23); db(0x48); db(0x00); db(0x12);
- db(0x23); db(0x4b); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x60); db(0x02); db(0x4e); db(0x75); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x22); db(0x6d); db(0x00); db(0x3c);
- db(0x45); db(0xed); db(0x00); db(0x26); db(0x33); db(0x7c); db(0x00); db(0x0b);
- db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04);
- db(0x00); db(0x04); db(0x42); db(0x2a); db(0x00); db(0x05); db(0x42); db(0x6a);
- db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x47);
- db(0x20); db(0x2d); db(0x00); db(0x16); db(0x32); db(0x28); db(0x00); db(0x30);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x35); db(0x40); db(0x00); db(0x0a);
- db(0x20); db(0x2d); db(0x00); db(0x1a); db(0x32); db(0x28); db(0x00); db(0x2e);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x48); db(0xc0); db(0x35); db(0x40);
- db(0x00); db(0x0c); db(0x22); db(0x6d); db(0x00); db(0x40); db(0x33); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d);
- db(0x00); db(0x40); db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e);
- db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x00); db(0x3c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0x00);
- db(0xff); db(0x76); db(0x30); db(0x3a); db(0xfe); db(0xa4); db(0x48); db(0xc0);
- db(0x32); db(0x3a); db(0xfe); db(0xa0); db(0x48); db(0xc1); db(0xb0); db(0x91);
- db(0x66); db(0x00); db(0x00); db(0x0a); db(0xb2); db(0xa9); db(0x00); db(0x04);
- db(0x67); db(0x00); db(0x00); db(0x18); db(0x23); db(0x41); db(0x00); db(0x04);
- db(0x22); db(0x80); db(0x20); db(0x29); db(0x00); db(0x08); db(0x22); db(0x69);
- db(0x00); db(0x0c); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75);
- db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
- db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20);
- db(0x68); db(0x61); db(0x63); db(0x6b); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73);
- db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d);
- db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55);
- db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75);
- db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20);
- db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00);
- db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
- db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75);
- db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69);
- db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78);
- db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e);
+ db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae);
+ db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c);
+ db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x2f); db(0x08); db(0x4a); db(0x2b); db(0x00); db(0x9d); db(0x66); db(0x26);
+ db(0x41); db(0xfa); db(0xff); db(0xf0); db(0x0c); db(0x10); db(0x00); db(0x01);
+ db(0x66); db(0x1c); db(0x41); db(0xfa); db(0x01); db(0x96); db(0x43); db(0xfa);
+ db(0x00); db(0x1a); db(0x70); db(0x05); db(0x61); db(0x00); db(0xff); db(0x7e);
+ db(0x50); db(0xeb); db(0x00); db(0x9d); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x61); db(0x00); db(0xfe); db(0x2a); db(0x4e); db(0x90); db(0x20); db(0x5f);
+ db(0x4e); db(0x75); db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x74); db(0x00);
+ db(0x01); db(0xc2); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x43); db(0xfa); db(0x01); db(0xaa);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2e); db(0x00); db(0x70); db(0x00);
+ db(0x30); db(0x3c); db(0x00); db(0x44); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40);
+ db(0x61); db(0x00); db(0xfe); db(0xc2); db(0x2b); db(0x40); db(0x00); db(0x3c);
+ db(0x67); db(0x00); db(0x00); db(0x4e); db(0x61); db(0x00); db(0xfe); db(0xea);
+ db(0x2b); db(0x40); db(0x00); db(0x40); db(0x67); db(0x00); db(0x00); db(0x42);
+ db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4c); db(0x00); db(0x0c);
+ db(0x27); db(0x42); db(0x00); db(0x08); db(0x70); db(0xff); db(0x26); db(0x80);
+ db(0x27); db(0x40); db(0x00); db(0x04); db(0x43); db(0xed); db(0x00); db(0x00);
+ db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c);
+ db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x00); db(0xfc);
+ db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0xa0);
+ db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4b); db(0x00); db(0x0e);
+ db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x60); db(0x02);
+ db(0x4e); db(0x75); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x22); db(0x6d); db(0x00); db(0x3c); db(0x45); db(0xed); db(0x00); db(0x26);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
+ db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x04); db(0x42); db(0x2a);
+ db(0x00); db(0x05); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a);
+ db(0x00); db(0x08); db(0x20); db(0x47); db(0x20); db(0x2d); db(0x00); db(0x16);
+ db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41);
+ db(0x35); db(0x40); db(0x00); db(0x0a); db(0x20); db(0x2d); db(0x00); db(0x1a);
+ db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41);
+ db(0x48); db(0xc0); db(0x35); db(0x40); db(0x00); db(0x0c); db(0x22); db(0x6d);
+ db(0x00); db(0x40); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c);
+ db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x22); db(0x6d); db(0x00); db(0x40); db(0x25); db(0x69);
+ db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24);
+ db(0x00); db(0x12); db(0x22); db(0x6d); db(0x00); db(0x3c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x60); db(0x00); db(0xff); db(0x76); db(0x30); db(0x3a);
+ db(0xfe); db(0xa4); db(0x48); db(0xc0); db(0x32); db(0x3a); db(0xfe); db(0xa0);
+ db(0x48); db(0xc1); db(0xb0); db(0x91); db(0x66); db(0x00); db(0x00); db(0x0a);
+ db(0xb2); db(0xa9); db(0x00); db(0x04); db(0x67); db(0x00); db(0x00); db(0x18);
+ db(0x23); db(0x41); db(0x00); db(0x04); db(0x22); db(0x80); db(0x20); db(0x29);
+ db(0x00); db(0x08); db(0x22); db(0x69); db(0x00); db(0x0c); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x41); db(0xf9);
+ db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65);
+ db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d);
+ db(0x65); db(0x72); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
+ db(0x65); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f);
+ db(0x75); db(0x73); db(0x65); db(0x20); db(0x68); db(0x61); db(0x63); db(0x6b);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c);
+ db(0x65); db(0x73); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61);
+ db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74);
+ db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66);
+ db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f);
+ db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63);
+ db(0x65); db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e);
  db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
- db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74);
- db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75);
- db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f);
+ db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
+ db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73);
+ db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
+ db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65);
+ db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72);
+ db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00);
+ db(0x00); db(0x00); db(0x03); db(0xf2);
 
index e4a8358d3ffb8e17b7f8d8c56dd389457ec47c44..3242654bb16ea3dcb176f42355d03df93824dd2f 100755 (executable)
@@ -400,6 +400,13 @@ static int checkbounds(struct hardfiledata *hfd, uae_u64 offset, uae_u64 len)
     return 1;
 }
 
+static int nodisk (struct hardfiledata *hfd)
+{
+    if (hfd->drive_empty)
+       return 1;
+    return 0;
+}
+
 int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8 *cmdbuf, int scsi_cmd_len,
                uae_u8 *scsi_data, int *data_len, uae_u8 *r, int *reply_len, uae_u8 *s, int *sense_len)
 {
@@ -415,8 +422,12 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
     switch (cmdbuf[0])
     {
        case 0x00: /* TEST UNIT READY */
+       if (nodisk (hfd))
+           goto nodisk;
        break;
        case 0x08: /* READ (6) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = ((cmdbuf[1] & 31) << 16) | (cmdbuf[2] << 8) | cmdbuf[3];
        offset *= hfd->blocksize;
        len = cmdbuf[4];
@@ -426,6 +437,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            scsi_len = (uae_u32)cmd_readx (hfd, scsi_data, offset, len);
        break;
        case 0x0a: /* WRITE (6) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = ((cmdbuf[1] & 31) << 16) | (cmdbuf[2] << 8) | cmdbuf[3];
        offset *= hfd->blocksize;
        len = cmdbuf[4];
@@ -440,6 +453,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
        len = cmdbuf[4];
        if (cmdbuf[1] >> 5)
            goto err;//r[0] = 0x7f; /* no lun supported */
+       if (hfd->drive_empty)
+           r[1] |= 0x80; // removable..
        r[2] = 2; /* supports SCSI-2 */
        r[3] = 2; /* response data format */
        r[4] = 32; /* additional length */
@@ -485,6 +500,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            int pcode = cmdbuf[2] & 0x3f;
            int dbd = cmdbuf[1] & 8;
            int cyl, cylsec, head, tracksec;
+           if (nodisk (hfd))
+               goto nodisk;
            if (hdhfd) {
                cyl = hdhfd->cyls;
                head = hdhfd->heads;
@@ -548,6 +565,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            uae_u32 lba = (cmdbuf[2] << 24) | (cmdbuf[3] << 16) | (cmdbuf[2] << 8) | cmdbuf[3];
            uae_u32 blocks = (uae_u32)(hfd->size / hfd->blocksize - 1);
            int cyl, cylsec, head, tracksec;
+           if (nodisk (hfd))
+               goto nodisk;
            if (hdhfd) {
                cyl = hdhfd->cyls;
                head = hdhfd->heads;
@@ -570,6 +589,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
        }
        break;
        case 0x28: /* READ (10) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = rl (cmdbuf + 2);
        offset *= hfd->blocksize;
        len = rl (cmdbuf + 7 - 2) & 0xffff;
@@ -578,6 +599,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            scsi_len = (uae_u32)cmd_readx (hfd, scsi_data, offset, len);
        break;
        case 0x2a: /* WRITE (10) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = rl (cmdbuf + 2);
        offset *= hfd->blocksize;
        len = rl (cmdbuf + 7 - 2) & 0xffff;
@@ -586,8 +609,12 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            scsi_len = (uae_u32)cmd_writex (hfd, scsi_data, offset, len);
        break;
        case 0x35: /* SYNCRONIZE CACHE (10) */
+       if (nodisk (hfd))
+           goto nodisk;
        break;
        case 0xa8: /* READ (12) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = rl (cmdbuf + 2);
        offset *= hfd->blocksize;
        len = rl (cmdbuf + 6);
@@ -596,6 +623,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            scsi_len = (uae_u32)cmd_readx (hfd, scsi_data, offset, len);
        break;
        case 0xaa: /* WRITE (12) */
+       if (nodisk (hfd))
+           goto nodisk;
        offset = rl (cmdbuf + 2);
        offset *= hfd->blocksize;
        len = rl (cmdbuf + 6);
@@ -604,6 +633,8 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
            scsi_len = (uae_u32)cmd_writex (hfd, scsi_data, offset, len);
        break;
        case 0x37: /* READ DEFECT DATA */
+       if (nodisk (hfd))
+           goto nodisk;
        write_log ("UAEHF: READ DEFECT DATA\n");
        status = 2; /* CHECK CONDITION */
        s[0] = 0x70;
@@ -611,6 +642,14 @@ int scsi_emulate(struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, uae_u8
        s[12] = 0x1c; /* DEFECT LIST NOT FOUND */
        ls = 12;
        break;
+nodisk:
+       status = 2; /* CHECK CONDITION */
+       s[0] = 0x70;
+       s[2] = 2; /* NOT READY */
+       s[12] = 0x3A; /* MEDIUM NOT PRESENT */
+       ls = 12;
+       break;
+
        default:
 err:
        lr = -1;
@@ -700,8 +739,16 @@ static int handle_scsi (uaecptr request, struct hardfiledata *hfd)
 void hardfile_do_disk_change (int fsid, int insert)
 {
     int j;
+    int newstate = insert ? 0 : 1;
+    struct hardfiledata *hfd;
 
-    write_log("uaehf.device:%d %d\n", fsid, insert);
+    hfd = get_hardfile_data (fsid);
+    if (!hfd)
+       return;
+    if (hfd->drive_empty == newstate)
+       return;
+    write_log("uaehf.device:%d media status=%d\n", fsid, insert);
+    hfd->drive_empty = newstate;
     uae_sem_wait (&change_sem);
     hardfpd[fsid].changenum++;
     j = 0;
@@ -816,13 +863,16 @@ static uae_u32 REGPARAM2 hardfile_open (TrapContext *context)
     int err = -1;
 
     /* Check unit number */
-    if (unit >= 0 && get_hardfile_data (unit) && start_thread (context, unit)) {
-       put_word (hfpd->base + 32, get_word (hfpd->base + 32) + 1);
-       put_long (tmp1 + 24, unit); /* io_Unit */
-       put_byte (tmp1 + 31, 0); /* io_Error */
-       put_byte (tmp1 + 8, 7); /* ln_type = NT_REPLYMSG */
-       hf_log ("hardfile_open, unit %d (%d), OK\n", unit, m68k_dreg (&context->regs, 0));
-       return 0;
+    if (unit >= 0) {
+       struct hardfiledata *hfd = get_hardfile_data (unit);
+       if (hfd && hfd->handle_valid && start_thread (context, unit)) {
+           put_word (hfpd->base + 32, get_word (hfpd->base + 32) + 1);
+           put_long (tmp1 + 24, unit); /* io_Unit */
+           put_byte (tmp1 + 31, 0); /* io_Error */
+           put_byte (tmp1 + 8, 7); /* ln_type = NT_REPLYMSG */
+           hf_log ("hardfile_open, unit %d (%d), OK\n", unit, m68k_dreg (&context->regs, 0));
+           return 0;
+       }
     }
     if (unit < 1000 || is_hardfile(unit) == FILESYS_VIRTUAL)
        err = 50; /* HFERR_NoBoard */
@@ -878,6 +928,8 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
     switch (cmd)
     {
        case CMD_READ:
+       if (nodisk (hfd))
+           goto no_disk;
        offset = get_long (request + 44);
        len = get_long (request + 36); /* io_Length */
        if ((offset & bmask) || (len & bmask)) {
@@ -893,6 +945,8 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
 
        case TD_READ64:
        case NSCMD_TD_READ64:
+       if (nodisk (hfd))
+           goto no_disk;
        offset64 = get_long (request + 44) | ((uae_u64)get_long (request + 32) << 32);
        len = get_long (request + 36); /* io_Length */
        if ((offset64 & bmask) || (len & bmask)) {
@@ -908,6 +962,8 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
 
        case CMD_WRITE:
        case CMD_FORMAT: /* Format */
+       if (nodisk (hfd))
+           goto no_disk;
        if (hfd->readonly) {
            error = 28; /* write protect */
        } else {
@@ -929,6 +985,8 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
        case TD_FORMAT64:
        case NSCMD_TD_WRITE64:
        case NSCMD_TD_FORMAT64:
+       if (nodisk (hfd))
+           goto no_disk;
        if (hfd->readonly) {
            error = 28; /* write protect */
        } else {
@@ -949,6 +1007,9 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
        bad_command:
        error = -5; /* IOERR_BADADDRESS */
        break;
+       no_disk:
+       error = 29; /* no disk */
+       break;
 
        case NSCMD_DEVICEQUERY:
            put_long (dataptr + 4, 16); /* size */
@@ -994,7 +1055,7 @@ static uae_u32 hardfile_do_io (struct hardfiledata *hfd, struct hardfileprivdata
        break;
 
        case CMD_CHANGESTATE:
-       actual = 0;
+           actual = hfd->drive_empty ? 1 :0;
        break;
 
        /* Some commands that just do nothing and return zero */
index 0c3362051cf33801c580ba10104ac67455f07c6c..a8c487ec0ee2dbe58470c7a4f3e31c4bc59469dd 100755 (executable)
@@ -44,6 +44,7 @@ struct mountedinfo
 {
     uae_u64 size;
     int ismounted;
+    int ismedia;
     int nrcyls;
 };
 
index 9330b8e7fa9e6d74bd89f61a85a042f4f7be6321..9945faf77e4333af815c15da808edec1bdad6aef 100755 (executable)
@@ -34,6 +34,9 @@ struct hardfiledata {
     int warned;
     uae_u8 *virtual_rdb;
     uae_u64 virtual_size;
+
+    int drive_empty;
+    char *emptyname;
 };
 
 #define HFD_FLAGS_REALDRIVE 1
diff --git a/include/filter.h b/include/filter.h
deleted file mode 100755 (executable)
index 2c78b18..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned long u32;
-
-extern void S2X_refresh (void);
-extern void S2X_render (void);
-extern void S2X_init (int dw, int dh, int aw, int ah, int mult, int ad, int dd);
-
-typedef unsigned char uint8;
-typedef unsigned short uint16;
-typedef unsigned long uint32;
-typedef int bool;
-
-extern void S2X_configure (int rb, int gb, int bb, int rs, int gs, int bs);
-extern int Init_2xSaI(int rb, int gb, int bb, int rs, int gs, int bs);
-extern void Super2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
-extern void SuperEagle(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
-extern void _2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
-extern void AdMame2x(u8 *srcPtr, u32 srcPitch, /* u8 deltaPtr, */
-             u8 *dstPtr, u32 dstPitch, int width, int height);
-extern void AdMame2x32(u8 *srcPtr, u32 srcPitch, /* u8 deltaPtr, */
-             u8 *dstPtr, u32 dstPitch, int width, int height);
-
-extern void hq_init(int rb, int gb, int bb, int rs, int gs, int bs);
-extern void hq2x_32(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq3x_32(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq3x_16(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq4x_32(unsigned char*, unsigned char*, int, int, int, int, int);
-
-#define UAE_FILTER_NULL 1
-#define UAE_FILTER_DIRECT3D 2
-#define UAE_FILTER_OPENGL 3
-#define UAE_FILTER_SCALE2X 4
-#define UAE_FILTER_SUPEREAGLE 5
-#define UAE_FILTER_SUPER2XSAI 6
-#define UAE_FILTER_2XSAI 7
-#define UAE_FILTER_HQ 8
-
-#define UAE_FILTER_MODE_16 16
-#define UAE_FILTER_MODE_16_16 16
-#define UAE_FILTER_MODE_16_32 (16 | 8)
-#define UAE_FILTER_MODE_32 32
-#define UAE_FILTER_MODE_32_32 32
-#define UAE_FILTER_MODE_32_16 (32 | 8)
-
-
-struct uae_filter
-{
-    int type;
-    char *name, *cfgname;
-    int x[5];
-};
-
-extern struct uae_filter uaefilters[];
-extern struct uae_filter *usedfilter;
index e77e89d8c713c05ab5113eb5038c99e418a0c3bc..4adaaa8aef3cbcc712dd815f165da50b5b8ed7f8 100755 (executable)
@@ -32,10 +32,8 @@ extern void AdMame2x32(u8 *srcPtr, u32 srcPitch, /* u8 deltaPtr, */
              u8 *dstPtr, u32 dstPitch, int width, int height);
 
 extern void hq_init(int rb, int gb, int bb, int rs, int gs, int bs);
-extern void hq2x_32(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq3x_32(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq3x_16(unsigned char*, unsigned char*, int, int, int, int, int);
-extern void hq4x_32(unsigned char*, unsigned char*, int, int, int, int, int);
+extern void hq2x_16(unsigned char*, unsigned char*, DWORD, DWORD, DWORD);
+extern void hq2x_32(unsigned char*, unsigned char*, DWORD, DWORD, DWORD);
 
 #define UAE_FILTER_NULL 1
 #define UAE_FILTER_DIRECT3D 2
index 4141774c15367fd10702392ef06e807f4b02fb6a..1a1e05d52fcca70e9e8f04c79ebcf0aad8af2632 100755 (executable)
@@ -187,6 +187,11 @@ struct DirectDrawSurfaceMapper
        DDSURFACEDESC2 desc;
     } temporary;
     struct
+    {
+       LPDIRECTDRAWSURFACE7 surface;
+       DDSURFACEDESC2 desc;
+    } temporary2;
+    struct
     {
        DDSURFACEDESC2 desc;
     } current;
index f4fa6ac34084de1e157eb4235fbabb918ddc31fa..751902bd777a0271acca362441d26f2c3662e42a 100755 (executable)
@@ -37,6 +37,8 @@ struct uae_driveinfo {
     uae_u64 size;
     uae_u64 offset;
     int bytespersector;
+    int removablemedia;
+    int nomedia;
     int dangerous;
 };
 
@@ -52,9 +54,19 @@ struct uae_driveinfo {
  */
 
 int harddrive_dangerous, do_rdbdump;
-static int num_drives;
 static struct uae_driveinfo uae_drives[MAX_FILESYSTEM_UNITS];
 
+static int isnomediaerr (DWORD err)
+{
+    if (err == ERROR_NOT_READY ||
+       err == ERROR_MEDIA_CHANGED ||
+       err == ERROR_NO_MEDIA_IN_DRIVE ||
+       err == ERROR_DEV_NOT_EXIST ||
+       err == ERROR_BAD_NET_NAME)
+       return 1;
+    return 0;
+}
+
 static void rdbdump (HANDLE *h, uae_u64 offset, uae_u8 *buf, int blocksize)
 {
     static int cnt = 1;
@@ -132,7 +144,7 @@ int isharddrive (const char *name)
 {
     int i;
 
-    for (i = 0; i < num_drives; i++) {
+    for (i = 0; i < hdf_getnumharddrives (); i++) {
        if (!strcmp (uae_drives[i].device_name, name))
            return i;
     }
@@ -141,14 +153,16 @@ int isharddrive (const char *name)
 
 static char *hdz[] = { "hdz", "zip", "rar", "7z", NULL };
 
-int hdf_open (struct hardfiledata *hfd, const char *name)
+int hdf_open (struct hardfiledata *hfd, const char *pname)
 {
     HANDLE h = INVALID_HANDLE_VALUE;
     DWORD flags;
     int i;
     struct uae_driveinfo *udi;
+    char *name = my_strdup (pname);
 
     hfd->flags = 0;
+    hfd->drive_empty = 0;
     hdf_close (hfd);
     hfd->cache = VirtualAlloc (NULL, CACHE_SIZE, MEM_COMMIT, PAGE_READWRITE);
     hfd->cache_valid = 0;
@@ -156,7 +170,7 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
     hfd->virtual_rdb = NULL;
     if (!hfd->cache) {
        write_log ("VirtualAlloc(%d) failed, error %d\n", CACHE_SIZE, GetLastError());
-       return 0;
+       goto end;
     }
     hfd_log ("hfd open: '%s'\n", name);
     if (strlen (name) > 4 && !memcmp (name, "HD_", 3)) {
@@ -166,16 +180,16 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
            DWORD r;
            udi = &uae_drives[i];
            hfd->flags = HFD_FLAGS_REALDRIVE;
-           flags =  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS;
+           if (udi->nomedia)
+               hfd->drive_empty = -1;
+           flags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS;
            h = CreateFile (udi->device_path,
                GENERIC_READ | (hfd->readonly ? 0 : GENERIC_WRITE),
                FILE_SHARE_READ | (hfd->readonly ? 0 : FILE_SHARE_WRITE),
                NULL, OPEN_EXISTING, flags, NULL);
            hfd->handle = h;
-           if (h == INVALID_HANDLE_VALUE) {
-               hdf_close (hfd);
-               return 0;
-           }
+           if (h == INVALID_HANDLE_VALUE)
+               goto end;
            if (!DeviceIoControl(h, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, &r, NULL))
                write_log ("FSCTL_ALLOW_EXTENDED_DASD_IO returned %d\n", GetLastError());
            strncpy (hfd->vendor_id, udi->vendor_id, 8);
@@ -188,25 +202,31 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
                abort ();
            }
            hfd->blocksize = udi->bytespersector;
-           if (hfd->offset == 0) {
+           if (hfd->offset == 0 && !hfd->drive_empty) {
                int sf = safetycheck (hfd->handle, 0, hfd->cache, hfd->blocksize);
-               if (sf > 0) {
-                   hdf_close (hfd);
-                   return 0;
-               }
-               if (sf == 0) {
+               if (sf > 0)
+                   goto end;
+               if (sf == 0 && hfd->warned >= 0) {
                    if (harddrive_dangerous != 0x1234dead) {
-                       gui_message_id (IDS_HARDDRIVESAFETYWARNING1);
-                       hdf_close(hfd);
-                       return 0;
+                       if (!hfd->warned)
+                           gui_message_id (IDS_HARDDRIVESAFETYWARNING1);
+                       hfd->warned = 1;
+                       goto end;
                    }
                    if (!hfd->warned) {
                        gui_message_id (IDS_HARDDRIVESAFETYWARNING2);
                        hfd->warned = 1;
                    }
                }
+           } else {
+               hfd->warned = -1;
            }
            hfd->handle_valid = HDF_HANDLE_WIN32;
+           hfd->emptyname = my_strdup (name);
+       } else {
+           hfd->flags = HFD_FLAGS_REALDRIVE;
+           hfd->drive_empty = -1;
+           hfd->emptyname = my_strdup (name);
        }
     } else {
        int zmode = 0;
@@ -235,15 +255,11 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
            DWORD ret, low, high;
            high = 0;
            ret = SetFilePointer (h, 0, &high, FILE_END);
-           if (ret == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) {
-               hdf_close (hfd);
-               return 0;
-           }
+           if (ret == INVALID_FILE_SIZE && GetLastError() != NO_ERROR)
+               goto end;
            low = GetFileSize (h, &high);
-           if (low == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) {
-               hdf_close (hfd);
-               return 0;
-           }
+           if (low == INVALID_FILE_SIZE && GetLastError() != NO_ERROR)
+               goto end;
            low &= ~(hfd->blocksize - 1);
            hfd->size = hfd->size2 = ((uae_u64)high << 32) | low;
            hfd->handle_valid = HDF_HANDLE_WIN32;
@@ -251,10 +267,8 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
                write_log ("HDF '%s' re-opened in zfile-mode\n", name);
                CloseHandle (h);
                hfd->handle = h = zfile_fopen(name, hfd->readonly ? "rb" : "r+b");
-               if (!h) {
-                   hdf_close (hfd);
-                   return 0;
-               }
+               if (!h)
+                   goto end;
                zfile_fseek (h, 0, SEEK_END);
                hfd->size = hfd->size2 = zfile_ftell (h);
                zfile_fseek (h, 0, SEEK_SET);
@@ -265,11 +279,14 @@ int hdf_open (struct hardfiledata *hfd, const char *name)
        }
     }
     hfd->handle = h;
-    if (hfd->handle != INVALID_HANDLE_VALUE) {
-       hfd_log ("HDF '%s' opened succesfully, handle=%p, mode=%d\n", name, hfd->handle, hfd->handle_valid);
+    if (hfd->handle_valid || hfd->drive_empty) {
+       hfd_log ("HDF '%s' opened succesfully, mode=%d empty=%d\n",
+           name, hfd->handle_valid, hfd->drive_empty);
        return 1;
     }
+end:
     hdf_close (hfd);
+    xfree (name);
     return 0;
 }
 
@@ -277,13 +294,14 @@ void hdf_close (struct hardfiledata *hfd)
 {
     if (!hfd->handle_valid)
        return;
-    hfd_log ("close handle=%p\n", hfd->handle);
     if (hfd->handle && hfd->handle != INVALID_HANDLE_VALUE) {
        if (hfd->handle_valid == HDF_HANDLE_WIN32)
            CloseHandle (hfd->handle);
        else if(hfd->handle_valid == HDF_HANDLE_ZFILE)
            zfile_fclose (hfd->handle);
     }
+    xfree (hfd->emptyname);
+    hfd->emptyname = NULL;
     hfd->handle = 0;
     hfd->handle_valid = 0;
     if (hfd->cache)
@@ -293,6 +311,7 @@ void hdf_close (struct hardfiledata *hfd)
     hfd->virtual_size = 0;
     hfd->cache = 0;
     hfd->cache_valid = 0;
+    hfd->drive_empty = 0;
 }
 
 int hdf_dup (struct hardfiledata *dhfd, const struct hardfiledata *shfd)
@@ -548,6 +567,8 @@ int hdf_read (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len)
     int got = 0;
     uae_u8 *p = buffer;
 
+    if (hfd->drive_empty)
+       return 0;
     if (offset < hfd->virtual_size) {
        uae_u64 len2 = offset + len <= hfd->virtual_size ? len : hfd->virtual_size - offset;
        if (!hfd->virtual_rdb)
@@ -589,6 +610,9 @@ int hdf_write (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len)
 {
     int got = 0;
     uae_u8 *p = buffer;
+
+    if (hfd->drive_empty)
+       return 0;
     if (offset < hfd->virtual_size)
        return len;
     offset -= hfd->virtual_size;
@@ -769,13 +793,13 @@ Return Value:
                        hDevice,
                        IOCTL_STORAGE_QUERY_PROPERTY,
                        &query,
-                       sizeof( STORAGE_PROPERTY_QUERY ),
+                       sizeof(STORAGE_PROPERTY_QUERY),
                        &outBuf,
                        sizeof (outBuf),
                        &returnedLength,
                        NULL
                        );
-    if ( !status ) {
+    if (!status) {
        write_log ("IOCTL_STORAGE_QUERY_PROPERTY failed with error code%d.\n", GetLastError());
        ret = 1;
        goto end;
@@ -788,7 +812,7 @@ Return Value:
                        hDevice,
                        IOCTL_STORAGE_QUERY_PROPERTY,
                        &query,
-                       sizeof( STORAGE_PROPERTY_QUERY ),
+                       sizeof(STORAGE_PROPERTY_QUERY),
                        &outBuf,
                        sizeof (outBuf),
                        &returnedLength,
@@ -846,10 +870,17 @@ Return Value:
            write_log ("empty device id?!?, replacing with device path\n");
            strcpy (udi->device_name, udi->device_path);
        }
+       udi->removablemedia = devDesc->RemovableMedia;
 
        write_log ("device id string: '%s'\n", udi->device_name);
+    strcpy (orgname, udi->device_name);
     if (!DeviceIoControl (hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, (void*)&dg, sizeof (dg), &returnedLength, NULL)) {
-       write_log ("IOCTL_DISK_GET_DRIVE_GEOMETRY failed with error code %d.\n", GetLastError());
+       DWORD err = GetLastError();
+       if (isnomediaerr (err)) {
+           udi->nomedia = 1;
+           goto amipartfound;
+       }
+       write_log ("IOCTL_DISK_GET_DRIVE_GEOMETRY failed with error code %d.\n", err);
        ret = 1;
        goto end;
     }
@@ -887,7 +918,6 @@ Return Value:
        ret = 1;
        goto end;
     }
-    strcpy (orgname, udi->device_name);
     trim (orgname);
     dli = (DRIVE_LAYOUT_INFORMATION*)outBuf;
     if (dli->PartitionCount) {
@@ -950,7 +980,10 @@ end:
 }
 #endif
 
-int hdf_init (void)
+
+static int num_drives;
+
+static int hdf_init2 (int force)
 {
 #ifdef WINDDK
     HDEVINFO hIntDevInfo;
@@ -959,7 +992,7 @@ int hdf_init (void)
     uae_u8 *buffer;
     static int done;
 
-    if (done)
+    if (done && !force)
        return num_drives;
     done = 1;
     num_drives = 0;
@@ -987,6 +1020,11 @@ int hdf_init (void)
     return num_drives;
 }
 
+int hdf_init (void)
+{
+    return hdf_init2 (0);
+}
+
 int hdf_getnumharddrives (void)
 {
     return num_drives;
@@ -997,6 +1035,7 @@ char *hdf_getnameharddrive (int index, int flags, int *sectorsize)
     static char name[512];
     char tmp[32];
     uae_u64 size = uae_drives[index].size;
+    int nomedia = uae_drives[index].nomedia;
     char *dang = "?";
 
     switch (uae_drives[index].dangerous)
@@ -1011,14 +1050,20 @@ char *hdf_getnameharddrive (int index, int flags, int *sectorsize)
        dang = "NON-EMPTY";
        break;
     }
+    if (nomedia)       
+       dang = "NO MEDIA";
 
     if (sectorsize)
        *sectorsize = uae_drives[index].bytespersector;
     if (flags & 1) {
-       if (size >= 1024 * 1024 * 1024)
-           sprintf (tmp, "%.1fG", ((double)(uae_u32)(size / (1024 * 1024))) / 1024.0);
-       else
-           sprintf (tmp, "%.1fM", ((double)(uae_u32)(size / (1024))) / 1024.0);
+       if (nomedia) {
+           strcpy (tmp, "N/A");
+       } else {
+           if (size >= 1024 * 1024 * 1024)
+               sprintf (tmp, "%.1fG", ((double)(uae_u32)(size / (1024 * 1024))) / 1024.0);
+           else
+               sprintf (tmp, "%.1fM", ((double)(uae_u32)(size / (1024))) / 1024.0);
+       }
        sprintf (name, "%10s [%s] %s", dang, tmp, uae_drives[index].device_name);
        return name;
     }
@@ -1027,6 +1072,77 @@ char *hdf_getnameharddrive (int index, int flags, int *sectorsize)
     return uae_drives[index].device_name;
 }
 
+static int hmc (struct hardfiledata *hfd, int nr)
+{
+    uae_u8 *buf = xmalloc (hfd->blocksize);
+    DWORD ret, got, err, status;
+    int first = 1;
+
+    while (hfd->handle_valid) {
+       status = 0;
+       SetFilePointer (hfd->handle, 0, NULL, FILE_BEGIN);
+       ret = ReadFile (hfd->handle, buf, hfd->blocksize, &got, NULL);
+       err = GetLastError ();
+       if (!ret && err == ERROR_DEV_NOT_EXIST) {
+           if (!first)
+               break;
+           first = 0;
+           hdf_open (hfd, hfd->emptyname);
+           continue;
+       }
+       break;
+    }
+    if (ret && hfd->drive_empty)
+       status = 1;
+    if (!ret && !hfd->drive_empty && isnomediaerr (err))
+       status = -1;
+    xfree (buf);
+    return status;
+}
+
+int hardfile_remount (int nr);
+
+int win32_hardfile_media_change (void)
+{
+    int gotinsert = 0, rescanned = 0;
+    int i;
+
+    for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) {
+       struct hardfiledata *hfd = get_hardfile_data (i);
+       int ret, reopen = 0;
+       if (!hfd || !(hfd->flags & HFD_FLAGS_REALDRIVE))
+           continue;
+       if (!hfd->emptyname)
+           continue;
+       if (!rescanned) {
+           hdf_init2 (1);
+           rescanned = 1;
+       }
+       if (hfd->drive_empty < 0 || !hfd->handle_valid) {
+           int empty = hfd->drive_empty;
+           if (!hdf_open (hfd, hfd->emptyname))
+               continue;
+           reopen = 1;
+           if (hfd->drive_empty < 0)
+               continue;
+           hfd->drive_empty = empty ? 1 : 0;
+       }
+       ret = hmc (hfd, i);
+       if (!ret)
+           continue;
+       if (ret > 0) {
+           if (!reopen) {
+               hdf_open (hfd, hfd->emptyname);
+               if (!hfd->handle_valid)
+                   continue;
+           }
+           gotinsert = 1;
+           hardfile_remount (i);
+       }
+       hardfile_do_disk_change (i, ret < 0 ? 0 : 1);
+    }
+    return gotinsert;
+}
 
 static int progressdialogreturn;
 static int progressdialogactive;
@@ -1199,4 +1315,3 @@ ok:
        CloseHandle(hdst);
     return retcode;
 }
-
diff --git a/od-win32/hq2x.c b/od-win32/hq2x.c
deleted file mode 100755 (executable)
index db73bd1..0000000
+++ /dev/null
@@ -1,2886 +0,0 @@
-//hq2x filter demo program
-//----------------------------------------------------------
-//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 Lesser General Public
-//License as published by the Free Software Foundation; either
-//version 2.1 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
-//Lesser General Public License for more details.
-//
-//You should have received a copy of the GNU Lesser General Public
-//License along with this program; if not, write to the Free Software
-//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-#include <stdio.h>
-
-static int   LUT16to32[65536];
-static int   RGBtoYUV[65536];
-static int   YUV1, YUV2;
-const  int   Ymask = 0x00FF0000;
-const  int   Umask = 0x0000FF00;
-const  int   Vmask = 0x000000FF;
-const  int   trY   = 0x00300000;
-const  int   trU   = 0x00000700;
-const  int   trV   = 0x00000006;
-
-inline void Interp1(unsigned char * pc, int c1, int c2)
-{
-  *((int*)pc) = (c1*3+c2) >> 2;
-}
-
-inline void Interp2(unsigned char * pc, int c1, int c2, int c3)
-{
-  *((int*)pc) = (c1*2+c2+c3) >> 2;
-}
-
-inline void Interp5(unsigned char * pc, int c1, int c2)
-{
-  *((int*)pc) = (c1+c2) >> 1;
-}
-
-inline void Interp6(unsigned char * pc, int c1, int c2, int c3)
-{
-  //*((int*)pc) = (c1*5+c2*2+c3)/8;
-
-  *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*2 + (c3 & 0x00FF00) ) & 0x0007F800) +
-                (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*2 + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3;
-}
-
-inline void Interp7(unsigned char * pc, int c1, int c2, int c3)
-{
-  //*((int*)pc) = (c1*6+c2+c3)/8;
-
-  *((int*)pc) = ((((c1 & 0x00FF00)*6 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x0007F800) +
-                (((c1 & 0xFF00FF)*6 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3;
-}
-
-inline void Interp9(unsigned char * pc, int c1, int c2, int c3)
-{
-  //*((int*)pc) = (c1*2+(c2+c3)*3)/8;
-
-  *((int*)pc) = ((((c1 & 0x00FF00)*2 + ((c2 & 0x00FF00) + (c3 & 0x00FF00))*3 ) & 0x0007F800) +
-                (((c1 & 0xFF00FF)*2 + ((c2 & 0xFF00FF) + (c3 & 0xFF00FF))*3 ) & 0x07F807F8)) >> 3;
-}
-
-inline void Interp10(unsigned char * pc, int c1, int c2, int c3)
-{
-  //*((int*)pc) = (c1*14+c2+c3)/16;
-
-  *((int*)pc) = ((((c1 & 0x00FF00)*14 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x000FF000) +
-                (((c1 & 0xFF00FF)*14 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x0FF00FF0)) >> 4;
-}
-
-
-#define PIXEL00_0     *((int*)(pOut)) = c[5];
-#define PIXEL00_10    Interp1(pOut, c[5], c[1]);
-#define PIXEL00_11    Interp1(pOut, c[5], c[4]);
-#define PIXEL00_12    Interp1(pOut, c[5], c[2]);
-#define PIXEL00_20    Interp2(pOut, c[5], c[4], c[2]);
-#define PIXEL00_21    Interp2(pOut, c[5], c[1], c[2]);
-#define PIXEL00_22    Interp2(pOut, c[5], c[1], c[4]);
-#define PIXEL00_60    Interp6(pOut, c[5], c[2], c[4]);
-#define PIXEL00_61    Interp6(pOut, c[5], c[4], c[2]);
-#define PIXEL00_70    Interp7(pOut, c[5], c[4], c[2]);
-#define PIXEL00_90    Interp9(pOut, c[5], c[4], c[2]);
-#define PIXEL00_100   Interp10(pOut, c[5], c[4], c[2]);
-#define PIXEL01_0     *((int*)(pOut+4)) = c[5];
-#define PIXEL01_10    Interp1(pOut+4, c[5], c[3]);
-#define PIXEL01_11    Interp1(pOut+4, c[5], c[2]);
-#define PIXEL01_12    Interp1(pOut+4, c[5], c[6]);
-#define PIXEL01_20    Interp2(pOut+4, c[5], c[2], c[6]);
-#define PIXEL01_21    Interp2(pOut+4, c[5], c[3], c[6]);
-#define PIXEL01_22    Interp2(pOut+4, c[5], c[3], c[2]);
-#define PIXEL01_60    Interp6(pOut+4, c[5], c[6], c[2]);
-#define PIXEL01_61    Interp6(pOut+4, c[5], c[2], c[6]);
-#define PIXEL01_70    Interp7(pOut+4, c[5], c[2], c[6]);
-#define PIXEL01_90    Interp9(pOut+4, c[5], c[2], c[6]);
-#define PIXEL01_100   Interp10(pOut+4, c[5], c[2], c[6]);
-#define PIXEL10_0     *((int*)(pOut+BpL)) = c[5];
-#define PIXEL10_10    Interp1(pOut+BpL, c[5], c[7]);
-#define PIXEL10_11    Interp1(pOut+BpL, c[5], c[8]);
-#define PIXEL10_12    Interp1(pOut+BpL, c[5], c[4]);
-#define PIXEL10_20    Interp2(pOut+BpL, c[5], c[8], c[4]);
-#define PIXEL10_21    Interp2(pOut+BpL, c[5], c[7], c[4]);
-#define PIXEL10_22    Interp2(pOut+BpL, c[5], c[7], c[8]);
-#define PIXEL10_60    Interp6(pOut+BpL, c[5], c[4], c[8]);
-#define PIXEL10_61    Interp6(pOut+BpL, c[5], c[8], c[4]);
-#define PIXEL10_70    Interp7(pOut+BpL, c[5], c[8], c[4]);
-#define PIXEL10_90    Interp9(pOut+BpL, c[5], c[8], c[4]);
-#define PIXEL10_100   Interp10(pOut+BpL, c[5], c[8], c[4]);
-#define PIXEL11_0     *((int*)(pOut+BpL+4)) = c[5];
-#define PIXEL11_10    Interp1(pOut+BpL+4, c[5], c[9]);
-#define PIXEL11_11    Interp1(pOut+BpL+4, c[5], c[6]);
-#define PIXEL11_12    Interp1(pOut+BpL+4, c[5], c[8]);
-#define PIXEL11_20    Interp2(pOut+BpL+4, c[5], c[6], c[8]);
-#define PIXEL11_21    Interp2(pOut+BpL+4, c[5], c[9], c[8]);
-#define PIXEL11_22    Interp2(pOut+BpL+4, c[5], c[9], c[6]);
-#define PIXEL11_60    Interp6(pOut+BpL+4, c[5], c[8], c[6]);
-#define PIXEL11_61    Interp6(pOut+BpL+4, c[5], c[6], c[8]);
-#define PIXEL11_70    Interp7(pOut+BpL+4, c[5], c[6], c[8]);
-#define PIXEL11_90    Interp9(pOut+BpL+4, c[5], c[6], c[8]);
-#define PIXEL11_100   Interp10(pOut+BpL+4, c[5], c[6], c[8]);
-
-
-
-inline bool Diff(unsigned int w1, unsigned int w2)
-{
-  YUV1 = RGBtoYUV[w1];
-  YUV2 = RGBtoYUV[w2];
-  return ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) ||
-          ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) ||
-          ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) );
-}
-
-void hq2x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int BpL )
-{
-  int  i, j, k;
-  int  prevline, nextline;
-  int  w[10];
-  int  c[10];
-
-  //   +----+----+----+
-  //   |    |    |    |
-  //   | w1 | w2 | w3 |
-  //   +----+----+----+
-  //   |    |    |    |
-  //   | w4 | w5 | w6 |
-  //   +----+----+----+
-  //   |    |    |    |
-  //   | w7 | w8 | w9 |
-  //   +----+----+----+
-
-  for (j=0; j<Yres; j++)
-  {
-    if (j>0)      prevline = -Xres*2; else prevline = 0;
-    if (j<Yres-1) nextline =  Xres*2; else nextline = 0;
-
-    for (i=0; i<Xres; i++)
-    {
-      w[2] = *((unsigned short*)(pIn + prevline));
-      w[5] = *((unsigned short*)pIn);
-      w[8] = *((unsigned short*)(pIn + nextline));
-
-      if (i>0)
-      {
-       w[1] = *((unsigned short*)(pIn + prevline - 2));
-       w[4] = *((unsigned short*)(pIn - 2));
-       w[7] = *((unsigned short*)(pIn + nextline - 2));
-      }
-      else
-      {
-       w[1] = w[2];
-       w[4] = w[5];
-       w[7] = w[8];
-      }
-
-      if (i<Xres-1)
-      {
-       w[3] = *((unsigned short*)(pIn + prevline + 2));
-       w[6] = *((unsigned short*)(pIn + 2));
-       w[9] = *((unsigned short*)(pIn + nextline + 2));
-      }
-      else
-      {
-       w[3] = w[2];
-       w[6] = w[5];
-       w[9] = w[8];
-      }
-
-      int pattern = 0;
-      int flag = 1;
-
-      YUV1 = RGBtoYUV[w[5]];
-
-      for (k=1; k<=9; k++)
-      {
-       if (k==5) continue;
-
-       if ( w[k] != w[5] )
-       {
-         YUV2 = RGBtoYUV[w[k]];
-         if ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) ||
-              ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) ||
-              ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) )
-           pattern |= flag;
-       }
-       flag <<= 1;
-      }
-
-      for (k=1; k<=9; k++)
-       c[k] = LUT16to32[w[k]];
-
-      switch (pattern)
-      {
-       case 0:
-       case 1:
-       case 4:
-       case 32:
-       case 128:
-       case 5:
-       case 132:
-       case 160:
-       case 33:
-       case 129:
-       case 36:
-       case 133:
-       case 164:
-       case 161:
-       case 37:
-       case 165:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 2:
-       case 34:
-       case 130:
-       case 162:
-       {
-         PIXEL00_22
-         PIXEL01_21
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 16:
-       case 17:
-       case 48:
-       case 49:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 64:
-       case 65:
-       case 68:
-       case 69:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_21
-         PIXEL11_22
-         break;
-       }
-       case 8:
-       case 12:
-       case 136:
-       case 140:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 3:
-       case 35:
-       case 131:
-       case 163:
-       {
-         PIXEL00_11
-         PIXEL01_21
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 6:
-       case 38:
-       case 134:
-       case 166:
-       {
-         PIXEL00_22
-         PIXEL01_12
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 20:
-       case 21:
-       case 52:
-       case 53:
-       {
-         PIXEL00_20
-         PIXEL01_11
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 144:
-       case 145:
-       case 176:
-       case 177:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         PIXEL10_20
-         PIXEL11_12
-         break;
-       }
-       case 192:
-       case 193:
-       case 196:
-       case 197:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_21
-         PIXEL11_11
-         break;
-       }
-       case 96:
-       case 97:
-       case 100:
-       case 101:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_12
-         PIXEL11_22
-         break;
-       }
-       case 40:
-       case 44:
-       case 168:
-       case 172:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         PIXEL10_11
-         PIXEL11_20
-         break;
-       }
-       case 9:
-       case 13:
-       case 137:
-       case 141:
-       {
-         PIXEL00_12
-         PIXEL01_20
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 18:
-       case 50:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 80:
-       case 81:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 72:
-       case 76:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 10:
-       case 138:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 66:
-       {
-         PIXEL00_22
-         PIXEL01_21
-         PIXEL10_21
-         PIXEL11_22
-         break;
-       }
-       case 24:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 7:
-       case 39:
-       case 135:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 148:
-       case 149:
-       case 180:
-       {
-         PIXEL00_20
-         PIXEL01_11
-         PIXEL10_20
-         PIXEL11_12
-         break;
-       }
-       case 224:
-       case 228:
-       case 225:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 41:
-       case 169:
-       case 45:
-       {
-         PIXEL00_12
-         PIXEL01_20
-         PIXEL10_11
-         PIXEL11_20
-         break;
-       }
-       case 22:
-       case 54:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 208:
-       case 209:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 104:
-       case 108:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 11:
-       case 139:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 19:
-       case 51:
-       {
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL00_11
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL00_60
-           PIXEL01_90
-         }
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 146:
-       case 178:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-           PIXEL11_12
-         }
-         else
-         {
-           PIXEL01_90
-           PIXEL11_61
-         }
-         PIXEL10_20
-         break;
-       }
-       case 84:
-       case 85:
-       {
-         PIXEL00_20
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL01_11
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL01_60
-           PIXEL11_90
-         }
-         PIXEL10_21
-         break;
-       }
-       case 112:
-       case 113:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL10_12
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL10_61
-           PIXEL11_90
-         }
-         break;
-       }
-       case 200:
-       case 204:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-           PIXEL11_11
-         }
-         else
-         {
-           PIXEL10_90
-           PIXEL11_60
-         }
-         break;
-       }
-       case 73:
-       case 77:
-       {
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL00_12
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL00_61
-           PIXEL10_90
-         }
-         PIXEL01_20
-         PIXEL11_22
-         break;
-       }
-       case 42:
-       case 170:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-           PIXEL10_11
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL10_60
-         }
-         PIXEL01_21
-         PIXEL11_20
-         break;
-       }
-       case 14:
-       case 142:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-           PIXEL01_12
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL01_61
-         }
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 67:
-       {
-         PIXEL00_11
-         PIXEL01_21
-         PIXEL10_21
-         PIXEL11_22
-         break;
-       }
-       case 70:
-       {
-         PIXEL00_22
-         PIXEL01_12
-         PIXEL10_21
-         PIXEL11_22
-         break;
-       }
-       case 28:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 152:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 194:
-       {
-         PIXEL00_22
-         PIXEL01_21
-         PIXEL10_21
-         PIXEL11_11
-         break;
-       }
-       case 98:
-       {
-         PIXEL00_22
-         PIXEL01_21
-         PIXEL10_12
-         PIXEL11_22
-         break;
-       }
-       case 56:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 25:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 26:
-       case 31:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 82:
-       case 214:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 88:
-       case 248:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 74:
-       case 107:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 27:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_10
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 86:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_21
-         PIXEL11_10
-         break;
-       }
-       case 216:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         PIXEL10_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 106:
-       {
-         PIXEL00_10
-         PIXEL01_21
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 30:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 210:
-       {
-         PIXEL00_22
-         PIXEL01_10
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 120:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_10
-         break;
-       }
-       case 75:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         PIXEL10_10
-         PIXEL11_22
-         break;
-       }
-       case 29:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         PIXEL10_22
-         PIXEL11_21
-         break;
-       }
-       case 198:
-       {
-         PIXEL00_22
-         PIXEL01_12
-         PIXEL10_21
-         PIXEL11_11
-         break;
-       }
-       case 184:
-       {
-         PIXEL00_21
-         PIXEL01_22
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 99:
-       {
-         PIXEL00_11
-         PIXEL01_21
-         PIXEL10_12
-         PIXEL11_22
-         break;
-       }
-       case 57:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 71:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_21
-         PIXEL11_22
-         break;
-       }
-       case 156:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 226:
-       {
-         PIXEL00_22
-         PIXEL01_21
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 60:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 195:
-       {
-         PIXEL00_11
-         PIXEL01_21
-         PIXEL10_21
-         PIXEL11_11
-         break;
-       }
-       case 102:
-       {
-         PIXEL00_22
-         PIXEL01_12
-         PIXEL10_12
-         PIXEL11_22
-         break;
-       }
-       case 153:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 58:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 83:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 92:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 202:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         PIXEL01_21
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         PIXEL11_11
-         break;
-       }
-       case 78:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         PIXEL11_22
-         break;
-       }
-       case 154:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 114:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 89:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 90:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 55:
-       case 23:
-       {
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL00_11
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL00_60
-           PIXEL01_90
-         }
-         PIXEL10_20
-         PIXEL11_21
-         break;
-       }
-       case 182:
-       case 150:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-           PIXEL11_12
-         }
-         else
-         {
-           PIXEL01_90
-           PIXEL11_61
-         }
-         PIXEL10_20
-         break;
-       }
-       case 213:
-       case 212:
-       {
-         PIXEL00_20
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL01_11
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL01_60
-           PIXEL11_90
-         }
-         PIXEL10_21
-         break;
-       }
-       case 241:
-       case 240:
-       {
-         PIXEL00_20
-         PIXEL01_22
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL10_12
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL10_61
-           PIXEL11_90
-         }
-         break;
-       }
-       case 236:
-       case 232:
-       {
-         PIXEL00_21
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-           PIXEL11_11
-         }
-         else
-         {
-           PIXEL10_90
-           PIXEL11_60
-         }
-         break;
-       }
-       case 109:
-       case 105:
-       {
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL00_12
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL00_61
-           PIXEL10_90
-         }
-         PIXEL01_20
-         PIXEL11_22
-         break;
-       }
-       case 171:
-       case 43:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-           PIXEL10_11
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL10_60
-         }
-         PIXEL01_21
-         PIXEL11_20
-         break;
-       }
-       case 143:
-       case 15:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-           PIXEL01_12
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL01_61
-         }
-         PIXEL10_22
-         PIXEL11_20
-         break;
-       }
-       case 124:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_10
-         break;
-       }
-       case 203:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         PIXEL10_10
-         PIXEL11_11
-         break;
-       }
-       case 62:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 211:
-       {
-         PIXEL00_11
-         PIXEL01_10
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 118:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_12
-         PIXEL11_10
-         break;
-       }
-       case 217:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         PIXEL10_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 110:
-       {
-         PIXEL00_10
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 155:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_10
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 188:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 185:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 61:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 157:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 103:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_12
-         PIXEL11_22
-         break;
-       }
-       case 227:
-       {
-         PIXEL00_11
-         PIXEL01_21
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 230:
-       {
-         PIXEL00_22
-         PIXEL01_12
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 199:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_21
-         PIXEL11_11
-         break;
-       }
-       case 220:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 158:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 234:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         PIXEL01_21
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_11
-         break;
-       }
-       case 242:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 59:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 121:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 87:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 79:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         PIXEL11_22
-         break;
-       }
-       case 122:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 94:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 218:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 91:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 229:
-       {
-         PIXEL00_20
-         PIXEL01_20
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 167:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_20
-         PIXEL11_20
-         break;
-       }
-       case 173:
-       {
-         PIXEL00_12
-         PIXEL01_20
-         PIXEL10_11
-         PIXEL11_20
-         break;
-       }
-       case 181:
-       {
-         PIXEL00_20
-         PIXEL01_11
-         PIXEL10_20
-         PIXEL11_12
-         break;
-       }
-       case 186:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 115:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 93:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 206:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         PIXEL11_11
-         break;
-       }
-       case 205:
-       case 201:
-       {
-         PIXEL00_12
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_10
-         }
-         else
-         {
-           PIXEL10_70
-         }
-         PIXEL11_11
-         break;
-       }
-       case 174:
-       case 46:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_10
-         }
-         else
-         {
-           PIXEL00_70
-         }
-         PIXEL01_12
-         PIXEL10_11
-         PIXEL11_20
-         break;
-       }
-       case 179:
-       case 147:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_10
-         }
-         else
-         {
-           PIXEL01_70
-         }
-         PIXEL10_20
-         PIXEL11_12
-         break;
-       }
-       case 117:
-       case 116:
-       {
-         PIXEL00_20
-         PIXEL01_11
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_10
-         }
-         else
-         {
-           PIXEL11_70
-         }
-         break;
-       }
-       case 189:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 231:
-       {
-         PIXEL00_11
-         PIXEL01_12
-         PIXEL10_12
-         PIXEL11_11
-         break;
-       }
-       case 126:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_10
-         break;
-       }
-       case 219:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_10
-         PIXEL10_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 125:
-       {
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL00_12
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL00_61
-           PIXEL10_90
-         }
-         PIXEL01_11
-         PIXEL11_10
-         break;
-       }
-       case 221:
-       {
-         PIXEL00_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL01_11
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL01_60
-           PIXEL11_90
-         }
-         PIXEL10_10
-         break;
-       }
-       case 207:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-           PIXEL01_12
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL01_61
-         }
-         PIXEL10_10
-         PIXEL11_11
-         break;
-       }
-       case 238:
-       {
-         PIXEL00_10
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-           PIXEL11_11
-         }
-         else
-         {
-           PIXEL10_90
-           PIXEL11_60
-         }
-         break;
-       }
-       case 190:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-           PIXEL11_12
-         }
-         else
-         {
-           PIXEL01_90
-           PIXEL11_61
-         }
-         PIXEL10_11
-         break;
-       }
-       case 187:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-           PIXEL10_11
-         }
-         else
-         {
-           PIXEL00_90
-           PIXEL10_60
-         }
-         PIXEL01_10
-         PIXEL11_12
-         break;
-       }
-       case 243:
-       {
-         PIXEL00_11
-         PIXEL01_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL10_12
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL10_61
-           PIXEL11_90
-         }
-         break;
-       }
-       case 119:
-       {
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL00_11
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL00_60
-           PIXEL01_90
-         }
-         PIXEL10_12
-         PIXEL11_10
-         break;
-       }
-       case 237:
-       case 233:
-       {
-         PIXEL00_12
-         PIXEL01_20
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         PIXEL11_11
-         break;
-       }
-       case 175:
-       case 47:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         PIXEL01_12
-         PIXEL10_11
-         PIXEL11_20
-         break;
-       }
-       case 183:
-       case 151:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_20
-         PIXEL11_12
-         break;
-       }
-       case 245:
-       case 244:
-       {
-         PIXEL00_20
-         PIXEL01_11
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 250:
-       {
-         PIXEL00_10
-         PIXEL01_10
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 123:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_10
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_10
-         break;
-       }
-       case 95:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_10
-         PIXEL11_10
-         break;
-       }
-       case 222:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 252:
-       {
-         PIXEL00_21
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 249:
-       {
-         PIXEL00_12
-         PIXEL01_22
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 235:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_21
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         PIXEL11_11
-         break;
-       }
-       case 111:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_22
-         break;
-       }
-       case 63:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_11
-         PIXEL11_21
-         break;
-       }
-       case 159:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_22
-         PIXEL11_12
-         break;
-       }
-       case 215:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_21
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 246:
-       {
-         PIXEL00_22
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 254:
-       {
-         PIXEL00_10
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 253:
-       {
-         PIXEL00_12
-         PIXEL01_11
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 251:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         PIXEL01_10
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 239:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         PIXEL01_12
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         PIXEL11_11
-         break;
-       }
-       case 127:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_20
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_20
-         }
-         PIXEL11_10
-         break;
-       }
-       case 191:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_11
-         PIXEL11_12
-         break;
-       }
-       case 223:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_20
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_10
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_20
-         }
-         break;
-       }
-       case 247:
-       {
-         PIXEL00_11
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         PIXEL10_12
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-       case 255:
-       {
-         if (Diff(w[4], w[2]))
-         {
-           PIXEL00_0
-         }
-         else
-         {
-           PIXEL00_100
-         }
-         if (Diff(w[2], w[6]))
-         {
-           PIXEL01_0
-         }
-         else
-         {
-           PIXEL01_100
-         }
-         if (Diff(w[8], w[4]))
-         {
-           PIXEL10_0
-         }
-         else
-         {
-           PIXEL10_100
-         }
-         if (Diff(w[6], w[8]))
-         {
-           PIXEL11_0
-         }
-         else
-         {
-           PIXEL11_100
-         }
-         break;
-       }
-      }
-      pIn+=2;
-      pOut+=8;
-    }
-    pOut+=BpL;
-  }
-}
-
-void HQ2X_Init(void)
-{
-  int i, j, k, r, g, b, Y, u, v;
-
-  for (i=0; i<65536; i++)
-    LUT16to32[i] = ((i & 0xF800) << 8) + ((i & 0x07E0) << 5) + ((i & 0x001F) << 3);
-
-  for (i=0; i<32; i++)
-  for (j=0; j<64; j++)
-  for (k=0; k<32; k++)
-  {
-    r = i << 3;
-    g = j << 2;
-    b = k << 3;
-    Y = (r + g + b) >> 2;
-    u = 128 + ((r - b) >> 2);
-    v = 128 + ((-r + 2*g -b)>>3);
-    RGBtoYUV[ (i << 11) + (j << 5) + k ] = (Y<<16) + (u<<8) + v;
-  }
-}
diff --git a/od-win32/hq2x16.asm b/od-win32/hq2x16.asm
new file mode 100755 (executable)
index 0000000..e607c13
--- /dev/null
@@ -0,0 +1,1931 @@
+;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
+
+EXTERN _LUT16to32
+EXTERN _RGBtoYUV
+
+SECTION .bss
+linesleft resd 1
+xcounter  resd 1
+cross     resd 1
+nextline  resd 1
+prevline  resd 1
+w1        resd 1
+w2        resd 1
+w3        resd 1
+w4        resd 1
+w5        resd 1
+w6        resd 1
+w7        resd 1
+w8        resd 1
+w9        resd 1
+
+SECTION .data
+
+reg_blank    dd  0,0
+const3       dd  0x00030003,0x00000003
+const5       dd  0x00050005,0x00000005
+const6       dd  0x00060006,0x00000006
+const14      dd  0x000E000E,0x0000000E
+threshold    dd  0x00300706,0x00000000
+zerolowbits  dd  0xF7DEF7DE
+
+SECTION .text
+
+%macro TestDiff 2
+    xor     ecx,ecx
+    mov     edx,[%1]
+    cmp     edx,[%2]
+    je      %%fin
+    mov     ecx,_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,[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,[zerolowbits]
+    and ecx,[zerolowbits]
+    add ecx,edx
+    shr ecx,1
+    add ecx,0x0821
+    and ecx,[zerolowbits]
+    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,[zerolowbits]
+    and ecx,[zerolowbits]
+    add ecx,edx
+    shr ecx,1
+    add ecx,0x0821
+%%fin1
+    mov edx,%2
+    cmp edx,ecx
+    je  %%fin2
+    and ecx,[zerolowbits]
+    and edx,[zerolowbits]
+    add edx,ecx
+    shr edx,1
+%%fin2
+    mov %1,dx
+%endmacro
+
+%macro Interp5 3
+    mov edx,%2
+    mov ecx,%3
+    cmp edx,ecx
+    je  %%fin
+    and edx,[zerolowbits]
+    and ecx,[zerolowbits]
+    add edx,ecx
+    shr edx,1
+%%fin
+    mov %1,dx
+%endmacro
+
+%macro Interp6 3
+    mov        ecx, _LUT16to32
+    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]
+    pmullw     mm1, [const5]
+    psllw      mm2, 1
+    paddw      mm1, mm3
+    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 Interp7 3
+    mov        ecx, _LUT16to32
+    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]
+    pmullw     mm1, [const6]
+    paddw      mm2, mm3
+    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 Interp9 3
+    mov        ecx, _LUT16to32
+    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, [const3]
+    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 Interp10 3
+    mov        ecx, _LUT16to32
+    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]
+    pmullw     mm1, [const14]
+    paddw      mm2, mm3
+    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 PIXEL00_0 0
+    mov [edi],ax
+%endmacro
+
+%macro PIXEL00_10 0
+    Interp1 [edi],eax,[w1]
+%endmacro
+
+%macro PIXEL00_11 0
+    Interp1 [edi],eax,[w4]
+%endmacro
+
+%macro PIXEL00_12 0
+    Interp1 [edi],eax,[w2]
+%endmacro
+
+%macro PIXEL00_20 0
+    Interp2 [edi],eax,[w4],[w2]
+%endmacro
+
+%macro PIXEL00_21 0
+    Interp2 [edi],eax,[w1],[w2]
+%endmacro
+
+%macro PIXEL00_22 0
+    Interp2 [edi],eax,[w1],[w4]
+%endmacro
+
+%macro PIXEL00_60 0
+    Interp6 [edi],[w2],[w4]
+%endmacro
+
+%macro PIXEL00_61 0
+    Interp6 [edi],[w4],[w2]
+%endmacro
+
+%macro PIXEL00_70 0
+    Interp7 [edi],[w4],[w2]
+%endmacro
+
+%macro PIXEL00_90 0
+    Interp9 [edi],[w4],[w2]
+%endmacro
+
+%macro PIXEL00_100 0
+    Interp10 [edi],[w4],[w2]
+%endmacro
+
+%macro PIXEL01_0 0
+    mov [edi+2],ax
+%endmacro
+
+%macro PIXEL01_10 0
+    Interp1 [edi+2],eax,[w3]
+%endmacro
+
+%macro PIXEL01_11 0
+    Interp1 [edi+2],eax,[w2]
+%endmacro
+
+%macro PIXEL01_12 0
+    Interp1 [edi+2],eax,[w6]
+%endmacro
+
+%macro PIXEL01_20 0
+    Interp2 [edi+2],eax,[w2],[w6]
+%endmacro
+
+%macro PIXEL01_21 0
+    Interp2 [edi+2],eax,[w3],[w6]
+%endmacro
+
+%macro PIXEL01_22 0
+    Interp2 [edi+2],eax,[w3],[w2]
+%endmacro
+
+%macro PIXEL01_60 0
+    Interp6 [edi+2],[w6],[w2]
+%endmacro
+
+%macro PIXEL01_61 0
+    Interp6 [edi+2],[w2],[w6]
+%endmacro
+
+%macro PIXEL01_70 0
+    Interp7 [edi+2],[w2],[w6]
+%endmacro
+
+%macro PIXEL01_90 0
+    Interp9 [edi+2],[w2],[w6]
+%endmacro
+
+%macro PIXEL01_100 0
+    Interp10 [edi+2],[w2],[w6]
+%endmacro
+
+%macro PIXEL10_0 0
+    mov [edi+ebx],ax
+%endmacro
+
+%macro PIXEL10_10 0
+    Interp1 [edi+ebx],eax,[w7]
+%endmacro
+
+%macro PIXEL10_11 0
+    Interp1 [edi+ebx],eax,[w8]
+%endmacro
+
+%macro PIXEL10_12 0
+    Interp1 [edi+ebx],eax,[w4]
+%endmacro
+
+%macro PIXEL10_20 0
+    Interp2 [edi+ebx],eax,[w8],[w4]
+%endmacro
+
+%macro PIXEL10_21 0
+    Interp2 [edi+ebx],eax,[w7],[w4]
+%endmacro
+
+%macro PIXEL10_22 0
+    Interp2 [edi+ebx],eax,[w7],[w8]
+%endmacro
+
+%macro PIXEL10_60 0
+    Interp6 [edi+ebx],[w4],[w8]
+%endmacro
+
+%macro PIXEL10_61 0
+    Interp6 [edi+ebx],[w8],[w4]
+%endmacro
+
+%macro PIXEL10_70 0
+    Interp7 [edi+ebx],[w8],[w4]
+%endmacro
+
+%macro PIXEL10_90 0
+    Interp9 [edi+ebx],[w8],[w4]
+%endmacro
+
+%macro PIXEL10_100 0
+    Interp10 [edi+ebx],[w8],[w4]
+%endmacro
+
+%macro PIXEL11_0 0
+    mov [edi+ebx+2],ax
+%endmacro
+
+%macro PIXEL11_10 0
+    Interp1 [edi+ebx+2],eax,[w9]
+%endmacro
+
+%macro PIXEL11_11 0
+    Interp1 [edi+ebx+2],eax,[w6]
+%endmacro
+
+%macro PIXEL11_12 0
+    Interp1 [edi+ebx+2],eax,[w8]
+%endmacro
+
+%macro PIXEL11_20 0
+    Interp2 [edi+ebx+2],eax,[w6],[w8]
+%endmacro
+
+%macro PIXEL11_21 0
+    Interp2 [edi+ebx+2],eax,[w9],[w8]
+%endmacro
+
+%macro PIXEL11_22 0
+    Interp2 [edi+ebx+2],eax,[w9],[w6]
+%endmacro
+
+%macro PIXEL11_60 0
+    Interp6 [edi+ebx+2],[w8],[w6]
+%endmacro
+
+%macro PIXEL11_61 0
+    Interp6 [edi+ebx+2],[w6],[w8]
+%endmacro
+
+%macro PIXEL11_70 0
+    Interp7 [edi+ebx+2],[w6],[w8]
+%endmacro
+
+%macro PIXEL11_90 0
+    Interp9 [edi+ebx+2],[w6],[w8]
+%endmacro
+
+%macro PIXEL11_100 0
+    Interp10 [edi+ebx+2],[w6],[w8]
+%endmacro
+
+inbuffer     equ 8
+outbuffer    equ 12
+Xres         equ 16
+Yres         equ 20
+pitch        equ 24
+
+_hq2x_16:
+    push ebp
+    mov ebp,esp
+    pushad
+
+    mov     esi,[ebp+inbuffer]
+    mov     edi,[ebp+outbuffer]
+    mov     edx,[ebp+Yres]
+    mov     [linesleft],edx
+    mov     ebx,[ebp+Xres]
+    shl     ebx,1
+    mov     dword[prevline],0
+    mov     dword[nextline],ebx
+.loopy
+    mov     ecx,[ebp+Xres]
+    sub     ecx,2                 ; x={Xres-2, Xres-1} are special cases.
+    mov     dword[xcounter],ecx
+    ; x=0 - special case
+    mov     ebx,[prevline]
+    movq    mm5,[esi+ebx]
+    movq    mm6,[esi]
+    mov     ebx,[nextline]
+    movq    mm7,[esi+ebx]
+    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     ebx,[prevline]
+    movq    mm5,[esi+ebx-2]
+    movq    mm6,[esi-2]
+    mov     ebx,[nextline]
+    movq    mm7,[esi+ebx-2]
+    movd    eax,mm5
+    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,_RGBtoYUV
+    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,[ebp+pitch]
+    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,[ebp+pitch]
+    jmp  [FuncTable+ecx*4]
+
+..@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 w2,w6,PIXEL01_10,PIXEL01_20
+    PIXEL10_20
+    PIXEL11_21
+    jmp .loopx_end
+..@flag80
+..@flag81
+    PIXEL00_20
+    PIXEL01_22
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_20
+    jmp .loopx_end
+..@flag72
+..@flag76
+    PIXEL00_21
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag10
+..@flag138
+    DiffOrNot w4,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 w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_20
+    PIXEL11_21
+    jmp .loopx_end
+..@flag208
+..@flag209
+    PIXEL00_20
+    PIXEL01_22
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag104
+..@flag108
+    PIXEL00_21
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag11
+..@flag139
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_21
+    PIXEL10_22
+    PIXEL11_20
+    jmp .loopx_end
+..@flag19
+..@flag51
+    DiffOrNot w2,w6,PIXEL00_11,PIXEL01_10,PIXEL00_60,PIXEL01_90
+    PIXEL10_20
+    PIXEL11_21
+    jmp .loopx_end
+..@flag146
+..@flag178
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL11_12,PIXEL01_90,PIXEL11_61
+    PIXEL10_20
+    jmp .loopx_end
+..@flag84
+..@flag85
+    PIXEL00_20
+    DiffOrNot w6,w8,PIXEL01_11,PIXEL11_10,PIXEL01_60,PIXEL11_90
+    PIXEL10_21
+    jmp .loopx_end
+..@flag112
+..@flag113
+    PIXEL00_20
+    PIXEL01_22
+    DiffOrNot w6,w8,PIXEL10_12,PIXEL11_10,PIXEL10_61,PIXEL11_90
+    jmp .loopx_end
+..@flag200
+..@flag204
+    PIXEL00_21
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL11_11,PIXEL10_90,PIXEL11_60
+    jmp .loopx_end
+..@flag73
+..@flag77
+    DiffOrNot w8,w4,PIXEL00_12,PIXEL10_10,PIXEL00_61,PIXEL10_90
+    PIXEL01_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag42
+..@flag170
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL10_11,PIXEL00_90,PIXEL10_60
+    PIXEL01_21
+    PIXEL11_20
+    jmp .loopx_end
+..@flag14
+..@flag142
+    DiffOrNot w4,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 w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_22
+    PIXEL11_21
+    jmp .loopx_end
+..@flag82
+..@flag214
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag88
+..@flag248
+    PIXEL00_21
+    PIXEL01_22
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag74
+..@flag107
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_21
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag27
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_10
+    PIXEL10_22
+    PIXEL11_21
+    jmp .loopx_end
+..@flag86
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_21
+    PIXEL11_10
+    jmp .loopx_end
+..@flag216
+    PIXEL00_21
+    PIXEL01_22
+    PIXEL10_10
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag106
+    PIXEL00_10
+    PIXEL01_21
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag30
+    PIXEL00_10
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_22
+    PIXEL11_21
+    jmp .loopx_end
+..@flag210
+    PIXEL00_22
+    PIXEL01_10
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag120
+    PIXEL00_21
+    PIXEL01_22
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_10
+    jmp .loopx_end
+..@flag75
+    DiffOrNot w4,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 w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_11
+    PIXEL11_21
+    jmp .loopx_end
+..@flag83
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag92
+    PIXEL00_21
+    PIXEL01_11
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag202
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    PIXEL01_21
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    PIXEL11_11
+    jmp .loopx_end
+..@flag78
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    PIXEL11_22
+    jmp .loopx_end
+..@flag154
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_22
+    PIXEL11_12
+    jmp .loopx_end
+..@flag114
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag89
+    PIXEL00_12
+    PIXEL01_22
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag90
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag55
+..@flag23
+    DiffOrNot w2,w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90
+    PIXEL10_20
+    PIXEL11_21
+    jmp .loopx_end
+..@flag182
+..@flag150
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61
+    PIXEL10_20
+    jmp .loopx_end
+..@flag213
+..@flag212
+    PIXEL00_20
+    DiffOrNot w6,w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90
+    PIXEL10_21
+    jmp .loopx_end
+..@flag241
+..@flag240
+    PIXEL00_20
+    PIXEL01_22
+    DiffOrNot w6,w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90
+    jmp .loopx_end
+..@flag236
+..@flag232
+    PIXEL00_21
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60
+    jmp .loopx_end
+..@flag109
+..@flag105
+    DiffOrNot w8,w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90
+    PIXEL01_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag171
+..@flag43
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60
+    PIXEL01_21
+    PIXEL11_20
+    jmp .loopx_end
+..@flag143
+..@flag15
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61
+    PIXEL10_22
+    PIXEL11_20
+    jmp .loopx_end
+..@flag124
+    PIXEL00_21
+    PIXEL01_11
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_10
+    jmp .loopx_end
+..@flag203
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_21
+    PIXEL10_10
+    PIXEL11_11
+    jmp .loopx_end
+..@flag62
+    PIXEL00_10
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_11
+    PIXEL11_21
+    jmp .loopx_end
+..@flag211
+    PIXEL00_11
+    PIXEL01_10
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag118
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_12
+    PIXEL11_10
+    jmp .loopx_end
+..@flag217
+    PIXEL00_12
+    PIXEL01_22
+    PIXEL10_10
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag110
+    PIXEL00_10
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag155
+    DiffOrNot w4,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 w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag158
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_22
+    PIXEL11_12
+    jmp .loopx_end
+..@flag234
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    PIXEL01_21
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_11
+    jmp .loopx_end
+..@flag242
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag59
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_11
+    PIXEL11_21
+    jmp .loopx_end
+..@flag121
+    PIXEL00_12
+    PIXEL01_22
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag87
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag79
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    PIXEL11_22
+    jmp .loopx_end
+..@flag122
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag94
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag218
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag91
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,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 w4,w2,PIXEL00_10,PIXEL00_70
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_11
+    PIXEL11_12
+    jmp .loopx_end
+..@flag115
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag93
+    PIXEL00_12
+    PIXEL01_11
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    DiffOrNot w6,w8,PIXEL11_10,PIXEL11_70
+    jmp .loopx_end
+..@flag206
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    PIXEL11_11
+    jmp .loopx_end
+..@flag205
+..@flag201
+    PIXEL00_12
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_10,PIXEL10_70
+    PIXEL11_11
+    jmp .loopx_end
+..@flag174
+..@flag46
+    DiffOrNot w4,w2,PIXEL00_10,PIXEL00_70
+    PIXEL01_12
+    PIXEL10_11
+    PIXEL11_20
+    jmp .loopx_end
+..@flag179
+..@flag147
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_10,PIXEL01_70
+    PIXEL10_20
+    PIXEL11_12
+    jmp .loopx_end
+..@flag117
+..@flag116
+    PIXEL00_20
+    PIXEL01_11
+    PIXEL10_12
+    DiffOrNot w6,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 w2,w6,PIXEL01_0,PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_10
+    jmp .loopx_end
+..@flag219
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_10
+    PIXEL10_10
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag125
+    DiffOrNot w8,w4,PIXEL00_12,PIXEL10_0,PIXEL00_61,PIXEL10_90
+    PIXEL01_11
+    PIXEL11_10
+    jmp .loopx_end
+..@flag221
+    PIXEL00_12
+    DiffOrNot w6,w8,PIXEL01_11,PIXEL11_0,PIXEL01_60,PIXEL11_90
+    PIXEL10_10
+    jmp .loopx_end
+..@flag207
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_12,PIXEL00_90,PIXEL01_61
+    PIXEL10_10
+    PIXEL11_11
+    jmp .loopx_end
+..@flag238
+    PIXEL00_10
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL11_11,PIXEL10_90,PIXEL11_60
+    jmp .loopx_end
+..@flag190
+    PIXEL00_10
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL11_12,PIXEL01_90,PIXEL11_61
+    PIXEL10_11
+    jmp .loopx_end
+..@flag187
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL10_11,PIXEL00_90,PIXEL10_60
+    PIXEL01_10
+    PIXEL11_12
+    jmp .loopx_end
+..@flag243
+    PIXEL00_11
+    PIXEL01_10
+    DiffOrNot w6,w8,PIXEL10_12,PIXEL11_0,PIXEL10_61,PIXEL11_90
+    jmp .loopx_end
+..@flag119
+    DiffOrNot w2,w6,PIXEL00_11,PIXEL01_0,PIXEL00_60,PIXEL01_90
+    PIXEL10_12
+    PIXEL11_10
+    jmp .loopx_end
+..@flag237
+..@flag233
+    PIXEL00_12
+    PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    PIXEL11_11
+    jmp .loopx_end
+..@flag175
+..@flag47
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    PIXEL01_12
+    PIXEL10_11
+    PIXEL11_20
+    jmp .loopx_end
+..@flag183
+..@flag151
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_20
+    PIXEL11_12
+    jmp .loopx_end
+..@flag245
+..@flag244
+    PIXEL00_20
+    PIXEL01_11
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag250
+    PIXEL00_10
+    PIXEL01_10
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag123
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_10
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_10
+    jmp .loopx_end
+..@flag95
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_10
+    PIXEL11_10
+    jmp .loopx_end
+..@flag222
+    PIXEL00_10
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_10
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag252
+    PIXEL00_21
+    PIXEL01_11
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag249
+    PIXEL00_12
+    PIXEL01_22
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag235
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_21
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    PIXEL11_11
+    jmp .loopx_end
+..@flag111
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_22
+    jmp .loopx_end
+..@flag63
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_11
+    PIXEL11_21
+    jmp .loopx_end
+..@flag159
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_22
+    PIXEL11_12
+    jmp .loopx_end
+..@flag215
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_21
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag246
+    PIXEL00_22
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag254
+    PIXEL00_10
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag253
+    PIXEL00_12
+    PIXEL01_11
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag251
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    PIXEL01_10
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag239
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    PIXEL01_12
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    PIXEL11_11
+    jmp .loopx_end
+..@flag127
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_20
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_20
+    PIXEL11_10
+    jmp .loopx_end
+..@flag191
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_11
+    PIXEL11_12
+    jmp .loopx_end
+..@flag223
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_10
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_20
+    jmp .loopx_end
+..@flag247
+    PIXEL00_11
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    PIXEL10_12
+    DiffOrNot w6,w8,PIXEL11_0,PIXEL11_100
+    jmp .loopx_end
+..@flag255
+    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_100
+    DiffOrNot w2,w6,PIXEL01_0,PIXEL01_100
+    DiffOrNot w8,w4,PIXEL10_0,PIXEL10_100
+    DiffOrNot w6,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,[w2]
+    and     edx,[zerolowbits]
+    and     ecx,[zerolowbits]
+    add     ecx,edx
+    shr     ecx,1
+    add     ecx,0x0821
+    and     ecx,[zerolowbits]
+    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,[w4]
+    and     edx,[zerolowbits]
+    and     ecx,[zerolowbits]
+    add     ecx,edx
+    shr     ecx,1
+    add     ecx,0x0821
+    and     ecx,[zerolowbits]
+    add     edx,ecx
+    shr     edx,1
+    or      eax,edx
+    mov     [edi],eax
+    mov     [edi+ebx],eax
+    jmp     .loopx_end
+..@cross4
+    mov     ecx,[w6]
+    and     edx,[zerolowbits]
+    and     ecx,[zerolowbits]
+    add     ecx,edx
+    shr     ecx,1
+    add     ecx,0x0821
+    and     ecx,[zerolowbits]
+    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,[w8]
+    and     edx,[zerolowbits]
+    and     ecx,[zerolowbits]
+    add     ecx,edx
+    shr     ecx,1
+    add     ecx,0x0821
+    and     ecx,[zerolowbits]
+    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[xcounter]
+    jle     .xres_2
+    jmp     .loopx
+.xres_2
+    ; x=Xres-2 - special case
+    jl      .xres_1
+    mov     ebx,[prevline]
+    movq    mm5,[esi+ebx-4]
+    movq    mm6,[esi-4]
+    mov     ebx,[nextline]
+    movq    mm7,[esi+ebx-4]
+    psrlq   mm5,16
+    psrlq   mm6,16
+    psrlq   mm7,16
+    movd    eax,mm5
+    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      .nexty
+    ; x=Xres-1 - special case
+    mov     ebx,[prevline]
+    movq    mm5,[esi+ebx-6]
+    movq    mm6,[esi-6]
+    mov     ebx,[nextline]
+    movq    mm7,[esi+ebx-6]
+    psrlq   mm5,32
+    psrlq   mm6,32
+    psrlq   mm7,32
+    movd    eax,mm5
+    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
+.nexty
+    add     edi,ebx
+    dec     dword[linesleft]
+    jz      .fin
+    mov     ebx,[ebp+Xres]
+    shl     ebx,1
+    cmp     dword[linesleft],1
+    je      .lastline
+    mov     dword[nextline],ebx
+    neg     ebx
+    mov     dword[prevline],ebx
+    jmp     .loopy
+.lastline
+    mov     dword[nextline],0
+    neg     ebx
+    mov     dword[prevline],ebx
+    jmp     .loopy
+.fin
+    emms
+    popad
+    mov esp,ebp
+    pop ebp
+    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
+
index 28b769d5999440ccb283072decc42d169e37a745..ad0acc6f170dd44b5eb9cce1917fe8b70ced1679 100755 (executable)
@@ -1,4 +1,5 @@
 ;hq2x filter
+;32bpp output
 ;----------------------------------------------------------
 ;Copyright (C) 2003 MaxSt ( maxst@hiend3d.com )
 ;
@@ -415,8 +416,7 @@ inbuffer     equ 8
 outbuffer    equ 12
 Xres         equ 16
 Yres         equ 20
-dstpitch     equ 24
-srcpitch     equ 28
+pitch        equ 24
 
 _hq2x_32:
     push ebp
@@ -652,7 +652,7 @@ _hq2x_32:
     mov  edx,[ebx+edx*4]
     mov  [c9],edx
 .switch
-    mov  ebx,[ebp+dstpitch]
+    mov  ebx,[ebp+pitch]
     jmp  [FuncTable+ecx*4]
 
 ..@flag0
@@ -1716,7 +1716,7 @@ _hq2x_32:
 
 
 ..@cross0
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     mov     [edi],eax
     mov     [edi+4],eax
     mov     [edi+ebx],eax
@@ -1729,7 +1729,7 @@ _hq2x_32:
     add     edx,[ebx+ecx*4]
     sub     edx,eax
     shr     edx,2
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     mov     [edi],edx
     mov     [edi+4],edx
     mov     [edi+ebx],eax
@@ -1742,7 +1742,7 @@ _hq2x_32:
     add     edx,[ebx+ecx*4]
     sub     edx,eax
     shr     edx,2
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     mov     [edi],edx
     mov     [edi+4],eax
     mov     [edi+ebx],edx
@@ -1755,7 +1755,7 @@ _hq2x_32:
     add     edx,[ebx+ecx*4]
     sub     edx,eax
     shr     edx,2
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     mov     [edi],eax
     mov     [edi+4],edx
     mov     [edi+ebx],eax
@@ -1768,7 +1768,7 @@ _hq2x_32:
     add     edx,[ebx+ecx*4]
     sub     edx,eax
     shr     edx,2
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     mov     [edi],eax
     mov     [edi+4],eax
     mov     [edi+ebx],edx
@@ -1787,7 +1787,7 @@ _hq2x_32:
     mov     edx,[w8]
     mov     ecx,[ebx+edx*4]
     mov     [c8],ecx
-    mov     ebx,[ebp+dstpitch]
+    mov     ebx,[ebp+pitch]
     jmp     ..@flag0
 
 .loopx_end
@@ -1865,9 +1865,6 @@ _hq2x_32:
     jmp     .flags
 .nexty
     add     edi,ebx
-    add     esi,[ebp+srcpitch]
-    sub     esi,[ebp+Xres]
-    sub     esi,[ebp+Xres]
     dec     dword[linesleft]
     jz      .fin
     mov     ebx,[ebp+Xres]
diff --git a/od-win32/hq3x16.asm b/od-win32/hq3x16.asm
deleted file mode 100755 (executable)
index 1596d78..0000000
+++ /dev/null
@@ -1,2430 +0,0 @@
-;hq3x 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 _hq3x_16
-
-EXTERN _LUT16to32
-EXTERN _RGBtoYUV
-
-SECTION .bss
-firstline resd 1
-linesleft resd 1
-xcounter  resd 1
-cross     resd 1
-nextline  resd 1
-prevline  resd 1
-w1        resd 1    
-w2        resd 1
-w3        resd 1
-w4        resd 1
-w5        resd 1
-w6        resd 1
-w7        resd 1
-w8        resd 1
-w9        resd 1
-
-SECTION .data
-
-reg_blank    dd  0,0
-const7       dd  0x00070007,0x00000007
-threshold    dd  0x00300706,0x00000000
-zerolowbits  dd  0xF7DEF7DE
-
-SECTION .text
-
-%macro TestDiff 2
-    xor     ecx,ecx
-    mov     edx,[%1]
-    cmp     edx,[%2]
-    je      %%fin
-    mov     ecx,_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,[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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-    and ecx,[zerolowbits]
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-%%fin1
-    mov edx,%2
-    cmp edx,ecx
-    je  %%fin2
-    and ecx,[zerolowbits]
-    and edx,[zerolowbits]
-    add edx,ecx
-    shr edx,1
-%%fin2
-    mov %1,dx
-%endmacro
-
-%macro Interp3 2
-    mov        ecx, _LUT16to32
-    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, _LUT16to32
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    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
-
-inbuffer     equ 8
-outbuffer    equ 12
-Xres         equ 16
-Yres         equ 20
-srcpitch     equ 24
-dstpitch     equ 28
-
-_hq3x_16:
-    push ebp
-    mov ebp,esp
-    pushad
-
-    mov esi,[ebp+inbuffer]
-    mov edi,[ebp+outbuffer]
-    mov edx,[ebp+Yres]
-    mov [linesleft],edx
-    mov dword[firstline],1
-.loopy
-    mov ebx,[ebp+Xres]
-    shl ebx,1
-    movzx eax,word[esi]
-    mov [w5],eax
-    mov [w6],eax
-    mov edx,eax
-    xor ecx,ecx
-    cmp dword[firstline],1
-    je  .firstline
-    sub ecx,ebx
-    movzx eax,word[esi+ecx]
-.firstline
-    mov [prevline],ecx
-    mov [w2],eax
-    mov [w3],eax
-    xor ecx,ecx
-    cmp dword[linesleft],1
-    je  .lastline
-    add ecx,ebx
-    movzx edx,word[esi+ecx]
-.lastline
-    mov [nextline],ecx
-    mov [w8],edx
-    mov [w9],edx
-    mov ecx,[ebp+Xres]
-    mov dword[xcounter],ecx
-.loopx
-    mov eax,[w2]
-    mov ebx,[w5]
-    mov edx,[w8]
-    mov [w1],eax
-    mov [w4],ebx
-    mov [w7],edx
-    mov eax,[w3]
-    mov ebx,[w6]
-    mov edx,[w9]
-    mov [w2],eax
-    mov [w5],ebx
-    mov [w8],edx
-    cmp dword[xcounter],1
-    je .flags
-    movzx eax,word[esi+2]
-    mov [w6],eax
-    mov ebx,[prevline]
-    movzx edx,word[esi+ebx+2]
-    mov [w3],edx
-    mov ebx,[nextline]
-    movzx eax,word[esi+ebx+2]
-    mov [w9],eax
-.flags
-    mov     ebx,_RGBtoYUV
-    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,[ebp+dstpitch]
-    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,[ebp+dstpitch]
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-    and ecx,[zerolowbits]
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-    and ecx,[zerolowbits]
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-    and ecx,[zerolowbits]
-    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,[zerolowbits]
-    and ecx,[zerolowbits]
-    add ecx,edx
-    shr ecx,1
-    add ecx,0x0821
-    and ecx,[zerolowbits]
-    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 edi,6
-    dec dword[xcounter]
-    jz  .nexty
-    jmp .loopx
-.nexty
-    mov dword[firstline],0
-    add edi,ebx
-    add edi,ebx
-    add esi,[ebp+srcpitch]
-    dec dword[linesleft]
-    jz  .fin
-    jmp .loopy
-.fin
-    emms
-    popad
-    mov esp,ebp
-    pop ebp
-    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
-
diff --git a/od-win32/hq3x32.asm b/od-win32/hq3x32.asm
deleted file mode 100755 (executable)
index 6c7e7c8..0000000
+++ /dev/null
@@ -1,2472 +0,0 @@
-;hq3x filter
-;----------------------------------------------------------
-;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 _hq3x_32
-
-EXTERN _LUT16to32
-EXTERN _RGBtoYUV
-
-SECTION .bss
-firstline resd 1
-linesleft resd 1
-xcounter  resd 1
-cross     resd 1
-nextline  resd 1
-prevline  resd 1
-w1        resd 1
-w2        resd 1
-w3        resd 1
-w4        resd 1
-w5        resd 1
-w6        resd 1
-w7        resd 1
-w8        resd 1
-w9        resd 1
-c1        resd 1
-c2        resd 1
-c3        resd 1
-c4        resd 1
-c5        resd 1
-c6        resd 1
-c7        resd 1
-c8        resd 1
-c9        resd 1
-
-SECTION .data
-
-reg_blank    dd  0,0
-const7       dd  0x00070007,0x00000007
-threshold    dd  0x00300706,0x00000000
-
-SECTION .text
-
-%macro TestDiff 2
-    xor     ecx,ecx
-    mov     edx,[%1]
-    cmp     edx,[%2]
-    je      %%fin
-    mov     ecx,_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,[threshold]
-    movd    ecx,mm1
-%%fin:
-%endmacro
-
-%macro DiffOrNot 4
-   TestDiff %1,%2
-   test ecx,ecx
-   jz   %%same
-   %3
-   jmp %%fin
-%%same:
-   %4
-%%fin
-%endmacro
-
-%macro DiffOrNot 6
-   TestDiff %1,%2
-   test ecx,ecx
-   jz   %%same
-   %3
-   %4
-   jmp %%fin
-%%same:
-   %5
-   %6
-%%fin
-%endmacro
-
-%macro DiffOrNot 8
-   TestDiff %1,%2
-   test ecx,ecx
-   jz   %%same
-   %3
-   %4
-   %5
-   jmp %%fin
-%%same:
-   %6
-   %7
-   %8
-%%fin
-%endmacro
-
-%macro DiffOrNot 10
-   TestDiff %1,%2
-   test ecx,ecx
-   jz %%same
-   %3
-   %4
-   %5
-   %6
-   jmp %%fin
-%%same:
-   %7
-   %8
-   %9
-   %10
-%%fin
-%endmacro
-
-%macro Interp1 3
-    mov edx,%2
-    shl edx,2
-    add edx,%3
-    sub edx,%2
-    shr edx,2
-    mov %1,edx
-%endmacro
-
-%macro Interp2 4
-    mov edx,%2
-    shl edx,1
-    add edx,%3
-    add edx,%4
-    shr edx,2
-    mov %1,edx
-%endmacro
-
-%macro Interp3 2
-    movd       mm1, eax
-    movd       mm2, %2
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    pmullw     mm1, [const7]
-    paddw      mm1, mm2
-    psrlw      mm1, 3
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro Interp4 3
-    movd       mm1, eax
-    movd       mm2, %2
-    movd       mm3, %3
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    punpcklbw  mm3, [reg_blank]
-    psllw      mm1, 1
-    paddw      mm2, mm3
-    pmullw     mm2, [const7]
-    paddw      mm1, mm2
-    psrlw      mm1, 4
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro Interp5 3
-    mov edx,%2
-    add edx,%3
-    shr edx,1
-    mov %1,edx
-%endmacro
-
-%macro PIXEL00_1M 0
-    Interp1 [edi],eax,[c1]
-%endmacro
-
-%macro PIXEL00_1U 0
-    Interp1 [edi],eax,[c2]
-%endmacro
-
-%macro PIXEL00_1L 0
-    Interp1 [edi],eax,[c4]
-%endmacro
-
-%macro PIXEL00_2 0
-    Interp2 [edi],eax,[c4],[c2]
-%endmacro
-
-%macro PIXEL00_4 0
-    Interp4 [edi],[c4],[c2]
-%endmacro
-
-%macro PIXEL00_5 0
-    Interp5 [edi],[c4],[c2]
-%endmacro
-
-%macro PIXEL00_C 0
-    mov [edi],eax
-%endmacro
-
-%macro PIXEL01_1 0
-    Interp1 [edi+4],eax,[c2]
-%endmacro
-
-%macro PIXEL01_3 0
-    Interp3 [edi+4],[c2]
-%endmacro
-
-%macro PIXEL01_6 0
-    Interp1 [edi+4],[c2],eax
-%endmacro
-
-%macro PIXEL01_C 0
-    mov [edi+4],eax
-%endmacro
-
-%macro PIXEL02_1M 0
-    Interp1 [edi+8],eax,[c3]
-%endmacro
-
-%macro PIXEL02_1U 0
-    Interp1 [edi+8],eax,[c2]
-%endmacro
-
-%macro PIXEL02_1R 0
-    Interp1 [edi+8],eax,[c6]
-%endmacro
-
-%macro PIXEL02_2 0
-    Interp2 [edi+8],eax,[c2],[c6]
-%endmacro
-
-%macro PIXEL02_4 0
-    Interp4 [edi+8],[c2],[c6]
-%endmacro
-
-%macro PIXEL02_5 0
-    Interp5 [edi+8],[c2],[c6]
-%endmacro
-
-%macro PIXEL02_C 0
-    mov [edi+8],eax
-%endmacro
-
-%macro PIXEL10_1 0
-    Interp1 [edi+ebx],eax,[c4]
-%endmacro
-
-%macro PIXEL10_3 0
-    Interp3 [edi+ebx],[c4]
-%endmacro
-
-%macro PIXEL10_6 0
-    Interp1 [edi+ebx],[c4],eax
-%endmacro
-
-%macro PIXEL10_C 0
-    mov [edi+ebx],eax
-%endmacro
-
-%macro PIXEL11 0
-    mov [edi+ebx+4],eax
-%endmacro
-
-%macro PIXEL12_1 0
-    Interp1 [edi+ebx+8],eax,[c6]
-%endmacro
-
-%macro PIXEL12_3 0
-    Interp3 [edi+ebx+8],[c6]
-%endmacro
-
-%macro PIXEL12_6 0
-    Interp1 [edi+ebx+8],[c6],eax
-%endmacro
-
-%macro PIXEL12_C 0
-    mov [edi+ebx+8],eax
-%endmacro
-
-%macro PIXEL20_1M 0
-    Interp1 [edi+ebx*2],eax,[c7]
-%endmacro
-
-%macro PIXEL20_1D 0
-    Interp1 [edi+ebx*2],eax,[c8]
-%endmacro
-
-%macro PIXEL20_1L 0
-    Interp1 [edi+ebx*2],eax,[c4]
-%endmacro
-
-%macro PIXEL20_2 0
-    Interp2 [edi+ebx*2],eax,[c8],[c4]
-%endmacro
-
-%macro PIXEL20_4 0
-    Interp4 [edi+ebx*2],[c8],[c4]
-%endmacro
-
-%macro PIXEL20_5 0
-    Interp5 [edi+ebx*2],[c8],[c4]
-%endmacro
-
-%macro PIXEL20_C 0
-    mov [edi+ebx*2],eax
-%endmacro
-
-%macro PIXEL21_1 0
-    Interp1 [edi+ebx*2+4],eax,[c8]
-%endmacro
-
-%macro PIXEL21_3 0
-    Interp3 [edi+ebx*2+4],[c8]
-%endmacro
-
-%macro PIXEL21_6 0
-    Interp1 [edi+ebx*2+4],[c8],eax
-%endmacro
-
-%macro PIXEL21_C 0
-    mov [edi+ebx*2+4],eax
-%endmacro
-
-%macro PIXEL22_1M 0
-    Interp1 [edi+ebx*2+8],eax,[c9]
-%endmacro
-
-%macro PIXEL22_1D 0
-    Interp1 [edi+ebx*2+8],eax,[c8]
-%endmacro
-
-%macro PIXEL22_1R 0
-    Interp1 [edi+ebx*2+8],eax,[c6]
-%endmacro
-
-%macro PIXEL22_2 0
-    Interp2 [edi+ebx*2+8],eax,[c6],[c8]
-%endmacro
-
-%macro PIXEL22_4 0
-    Interp4 [edi+ebx*2+8],[c6],[c8]
-%endmacro
-
-%macro PIXEL22_5 0
-    Interp5 [edi+ebx*2+8],[c6],[c8]
-%endmacro
-
-%macro PIXEL22_C 0
-    mov [edi+ebx*2+8],eax
-%endmacro
-
-inbuffer     equ 8
-outbuffer    equ 12
-Xres         equ 16
-Yres         equ 20
-dstpitch     equ 24
-srcpitch     equ 28
-dstpitch2    equ 32
-
-_hq3x_32:
-    push ebp
-    mov ebp,esp
-    pushad
-
-    mov esi,[ebp+inbuffer]
-    mov edi,[ebp+outbuffer]
-    mov edx,[ebp+Yres]
-    mov [linesleft],edx
-    mov dword[firstline],1
-.loopy
-    mov ebx,[ebp+Xres]
-    shl ebx,1
-    movzx eax,word[esi]
-    mov [w5],eax
-    mov [w6],eax
-    mov edx,eax
-    xor ecx,ecx
-    cmp dword[firstline],1
-    je  .firstline
-    sub ecx,ebx
-    movzx eax,word[esi+ecx]
-.firstline
-    mov [prevline],ecx
-    mov [w2],eax
-    mov [w3],eax
-    xor ecx,ecx
-    cmp dword[linesleft],1
-    je  .lastline
-    add ecx,ebx
-    movzx edx,word[esi+ecx]
-.lastline
-    mov [nextline],ecx
-    mov [w8],edx
-    mov [w9],edx
-    mov ecx,[ebp+Xres]
-    mov dword[xcounter],ecx
-.loopx
-    mov eax,[w2]
-    mov ebx,[w5]
-    mov edx,[w8]
-    mov [w1],eax
-    mov [w4],ebx
-    mov [w7],edx
-    mov eax,[w3]
-    mov ebx,[w6]
-    mov edx,[w9]
-    mov [w2],eax
-    mov [w5],ebx
-    mov [w8],edx
-    cmp dword[xcounter],1
-    je .flags
-    movzx eax,word[esi+2]
-    mov [w6],eax
-    mov ebx,[prevline]
-    movzx edx,word[esi+ebx+2]
-    mov [w3],edx
-    mov ebx,[nextline]
-    movzx eax,word[esi+ebx+2]
-    mov [w9],eax
-.flags
-    mov     ebx,_RGBtoYUV
-    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,_LUT16to32
-    mov     eax,[ebx+eax*4]
-    jmp     [FuncTable2+ecx*4]
-.testflag1
-    mov     edx,[w1]
-    cmp     eax,edx
-    je      .noflag1
-    movq    mm1,mm5
-    movd    mm2,[ebx+edx*4]
-    psubusb mm1,mm2
-    psubusb mm2,mm5
-    por     mm1,mm2
-    psubusb mm1,[threshold]
-    movd    edx,mm1
-    test    edx,edx
-    jz      .noflag1
-    or      ecx,1
-.noflag1
-    mov     edx,[w3]
-    cmp     eax,edx
-    je      .noflag3
-    movq    mm1,mm5
-    movd    mm2,[ebx+edx*4]
-    psubusb mm1,mm2
-    psubusb mm2,mm5
-    por     mm1,mm2
-    psubusb mm1,[threshold]
-    movd    edx,mm1
-    test    edx,edx
-    jz      .noflag3
-    or      ecx,4
-.noflag3
-    mov     edx,[w7]
-    cmp     eax,edx
-    je      .noflag7
-    movq    mm1,mm5
-    movd    mm2,[ebx+edx*4]
-    psubusb mm1,mm2
-    psubusb mm2,mm5
-    por     mm1,mm2
-    psubusb mm1,[threshold]
-    movd    edx,mm1
-    test    edx,edx
-    jz      .noflag7
-    or      ecx,32
-.noflag7
-    mov     edx,[w9]
-    cmp     eax,edx
-    je      .noflag9
-    movq    mm1,mm5
-    movd    mm2,[ebx+edx*4]
-    psubusb mm1,mm2
-    psubusb mm2,mm5
-    por     mm1,mm2
-    psubusb mm1,[threshold]
-    movd    edx,mm1
-    test    edx,edx
-    jz      .noflag9
-    or      ecx,128
-.noflag9
-    mov ebx,_LUT16to32
-    mov eax,[ebx+eax*4]
-    mov edx,[w2]
-    mov edx,[ebx+edx*4]
-    mov [c2],edx
-    mov edx,[w4]
-    mov edx,[ebx+edx*4]
-    mov [c4],edx
-    mov edx,[w6]
-    mov edx,[ebx+edx*4]
-    mov [c6],edx
-    mov edx,[w8]
-    mov edx,[ebx+edx*4]
-    mov [c8],edx
-    test ecx,0x005A
-    jz  .switch
-    mov edx,[w1]
-    mov edx,[ebx+edx*4]
-    mov [c1],edx
-    mov edx,[w3]
-    mov edx,[ebx+edx*4]
-    mov [c3],edx
-    mov edx,[w7]
-    mov edx,[ebx+edx*4]
-    mov [c7],edx
-    mov edx,[w9]
-    mov edx,[ebx+edx*4]
-    mov [c9],edx
-.switch
-    mov ebx,[ebp+dstpitch]
-    jmp [FuncTable+ecx*4]
-
-..@flag0
-..@flag1
-..@flag4
-..@flag32
-..@flag128
-..@flag5
-..@flag132
-..@flag160
-..@flag33
-..@flag129
-..@flag36
-..@flag133
-..@flag164
-..@flag161
-..@flag37
-..@flag165
-;    PIXEL00_2
-;    PIXEL01_1
-;    PIXEL02_2
-;    PIXEL10_1
-;    PIXEL11
-;    PIXEL12_1
-;    PIXEL20_2
-;    PIXEL21_1
-;    PIXEL22_2
-
-;   the same, only optimized
-    mov ecx,eax
-    shl ecx,1
-    add ecx,[c2]
-    mov edx,ecx
-    add edx,[c4]
-    shr edx,2
-    mov [edi],edx
-    mov edx,ecx
-    add edx,eax
-    shr edx,2
-    mov [edi+4],edx
-    add ecx,[c6]
-    shr ecx,2
-    mov [edi+8],ecx
-    mov ecx,eax
-    shl ecx,2
-    sub ecx,eax
-    mov edx,ecx
-    add edx,[c4]
-    shr edx,2
-    mov [edi+ebx],edx
-    mov [edi+ebx+4],eax
-    add ecx,[c6]
-    shr ecx,2
-    mov [edi+ebx+8],ecx
-    mov ecx,eax
-    shl ecx,1
-    add ecx,[c8]
-    mov edx,ecx
-    add edx,[c4]
-    shr edx,2
-    mov [edi+ebx*2],edx
-    mov edx,ecx
-    add edx,eax
-    shr edx,2
-    mov [edi+ebx*2+4],edx
-    add ecx,[c6]
-    shr ecx,2
-    mov [edi+ebx*2+8],ecx
-    jmp .loopx_end
-..@flag2
-..@flag34
-..@flag130
-..@flag162
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag16
-..@flag17
-..@flag48
-..@flag49
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag64
-..@flag65
-..@flag68
-..@flag69
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag8
-..@flag12
-..@flag136
-..@flag140
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag3
-..@flag35
-..@flag131
-..@flag163
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag6
-..@flag38
-..@flag134
-..@flag166
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag20
-..@flag21
-..@flag52
-..@flag53
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag144
-..@flag145
-..@flag176
-..@flag177
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag192
-..@flag193
-..@flag196
-..@flag197
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag96
-..@flag97
-..@flag100
-..@flag101
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag40
-..@flag44
-..@flag168
-..@flag172
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag9
-..@flag13
-..@flag137
-..@flag141
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag18
-..@flag50
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag80
-..@flag81
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag72
-..@flag76
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag10
-..@flag138
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag66
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag24
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag7
-..@flag39
-..@flag135
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag148
-..@flag149
-..@flag180
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag224
-..@flag228
-..@flag225
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag41
-..@flag169
-..@flag45
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag22
-..@flag54
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag208
-..@flag209
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag104
-..@flag108
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag11
-..@flag139
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag19
-..@flag51
-    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag146
-..@flag178
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_1M,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    jmp .loopx_end
-..@flag84
-..@flag85
-    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_1M,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    jmp .loopx_end
-..@flag112
-..@flag113
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_1M,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    jmp .loopx_end
-..@flag200
-..@flag204
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    jmp .loopx_end
-..@flag73
-..@flag77
-    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_1M,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag42
-..@flag170
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag14
-..@flag142
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag67
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag70
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag28
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag152
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag194
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag98
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag56
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag25
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag26
-..@flag31
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag82
-..@flag214
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag88
-..@flag248
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
-    jmp .loopx_end
-..@flag74
-..@flag107
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag27
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag86
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag216
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag106
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag30
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag210
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag120
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag75
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag29
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag198
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag184
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag99
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag57
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag71
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag156
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag226
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag60
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag195
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag102
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag153
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag58
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag83
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag92
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag202
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag78
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag154
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag114
-    PIXEL00_1M
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag89
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag90
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag55
-..@flag23
-    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag182
-..@flag150
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_2
-    PIXEL21_1
-    jmp .loopx_end
-..@flag213
-..@flag212
-    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    jmp .loopx_end
-..@flag241
-..@flag240
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    jmp .loopx_end
-..@flag236
-..@flag232
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    jmp .loopx_end
-..@flag109
-..@flag105
-    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL11
-    PIXEL12_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag171
-..@flag43
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag143
-..@flag15
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag124
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag203
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag62
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag211
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag118
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag217
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag110
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag155
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag188
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag185
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag61
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag157
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag103
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag227
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag230
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag199
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag220
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag158
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag234
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag242
-    PIXEL00_1M
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1L
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag59
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag121
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag87
-    PIXEL00_1L
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag79
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1R
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag122
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag94
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL10_C
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag218
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag91
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag229
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag167
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag173
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag181
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag186
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag115
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag93
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag206
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag205
-..@flag201
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_1M,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag174
-..@flag46
-    DiffOrNot w4,w2,PIXEL00_1M,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag179
-..@flag147
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_1M,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag117
-..@flag116
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_1M,PIXEL22_2
-    jmp .loopx_end
-..@flag189
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag231
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag126
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_4,PIXEL12_3
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag219
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_4,PIXEL01_3,PIXEL10_3
-    PIXEL02_1M
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag125
-    DiffOrNot w8,w4,PIXEL00_1U,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL00_2,PIXEL10_6,PIXEL20_5,PIXEL21_1
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL11
-    PIXEL12_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag221
-    DiffOrNot w6,w8,PIXEL02_1U,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL02_2,PIXEL12_6,PIXEL21_1,PIXEL22_5
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1M
-    jmp .loopx_end
-..@flag207
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL02_1R,PIXEL10_C,PIXEL00_5,PIXEL01_6,PIXEL02_2,PIXEL10_1
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag238
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL22_1R,PIXEL10_1,PIXEL20_5,PIXEL21_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL11
-    PIXEL12_1
-    jmp .loopx_end
-..@flag190
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL22_1D,PIXEL01_1,PIXEL02_5,PIXEL12_6,PIXEL22_2
-    PIXEL00_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1D
-    PIXEL21_1
-    jmp .loopx_end
-..@flag187
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL20_1D,PIXEL00_5,PIXEL01_1,PIXEL10_6,PIXEL20_2
-    PIXEL02_1M
-    PIXEL11
-    PIXEL12_C
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag243
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL20_1L,PIXEL21_C,PIXEL22_C,PIXEL12_1,PIXEL20_2,PIXEL21_6,PIXEL22_5
-    PIXEL00_1L
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL10_1
-    PIXEL11
-    jmp .loopx_end
-..@flag119
-    DiffOrNot w2,w6,PIXEL00_1L,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL00_2,PIXEL01_6,PIXEL02_5,PIXEL12_1
-    PIXEL10_1
-    PIXEL11
-    PIXEL20_1L
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag237
-..@flag233
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag175
-..@flag47
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_2
-    jmp .loopx_end
-..@flag183
-..@flag151
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_2
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag245
-..@flag244
-    PIXEL00_2
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-..@flag250
-    PIXEL00_1M
-    PIXEL01_C
-    PIXEL02_1M
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
-    jmp .loopx_end
-..@flag123
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag95
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
-    PIXEL11
-    PIXEL20_1M
-    PIXEL21_C
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag222
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag252
-    PIXEL00_1M
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-..@flag249
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
-    jmp .loopx_end
-..@flag235
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
-    PIXEL02_1M
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag111
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag63
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
-    PIXEL10_C
-    PIXEL11
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag159
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag215
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag246
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-..@flag254
-    PIXEL00_1M
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL01_3,PIXEL02_4
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL10_3,PIXEL20_4
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL21_C,PIXEL22_C,PIXEL12_3,PIXEL21_3,PIXEL22_2
-    jmp .loopx_end
-..@flag253
-    PIXEL00_1U
-    PIXEL01_1
-    PIXEL02_1U
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-..@flag251
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL00_4,PIXEL01_3
-    PIXEL02_1M
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL10_C,PIXEL20_C,PIXEL21_C,PIXEL10_3,PIXEL20_2,PIXEL21_3
-    DiffOrNot w6,w8,PIXEL12_C,PIXEL22_C,PIXEL12_3,PIXEL22_4
-    jmp .loopx_end
-..@flag239
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    PIXEL02_1R
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_1
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    PIXEL22_1R
-    jmp .loopx_end
-..@flag127
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL01_C,PIXEL10_C,PIXEL00_2,PIXEL01_3,PIXEL10_3
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL12_C,PIXEL02_4,PIXEL12_3
-    PIXEL11
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL21_C,PIXEL20_4,PIXEL21_3
-    PIXEL22_1M
-    jmp .loopx_end
-..@flag191
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1D
-    PIXEL21_1
-    PIXEL22_1D
-    jmp .loopx_end
-..@flag223
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL10_C,PIXEL00_4,PIXEL10_3
-    DiffOrNot w2,w6,PIXEL01_C,PIXEL02_C,PIXEL12_C,PIXEL01_3,PIXEL02_2,PIXEL12_3
-    PIXEL11
-    PIXEL20_1M
-    DiffOrNot w6,w8,PIXEL21_C,PIXEL22_C,PIXEL21_3,PIXEL22_4
-    jmp .loopx_end
-..@flag247
-    PIXEL00_1L
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL10_1
-    PIXEL11
-    PIXEL12_C
-    PIXEL20_1L
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-..@flag255
-    DiffOrNot w4,w2,PIXEL00_C,PIXEL00_2
-    PIXEL01_C
-    DiffOrNot w2,w6,PIXEL02_C,PIXEL02_2
-    PIXEL10_C
-    PIXEL11
-    PIXEL12_C
-    DiffOrNot w8,w4,PIXEL20_C,PIXEL20_2
-    PIXEL21_C
-    DiffOrNot w6,w8,PIXEL22_C,PIXEL22_2
-    jmp .loopx_end
-
-..@cross0
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+8],eax
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx*2],eax
-    mov     [edi+ebx*2+4],eax
-    mov     [edi+ebx*2+8],eax
-    jmp     .loopx_end
-..@cross1
-    mov     ecx,[w2] 
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],edx
-    mov     [edi+4],edx
-    mov     [edi+8],edx
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx*2],eax
-    mov     [edi+ebx*2+4],eax
-    mov     [edi+ebx*2+8],eax
-    jmp     .loopx_end
-..@cross2
-    mov     ecx,[w4]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],edx
-    mov     [edi+4],eax
-    mov     [edi+8],eax
-    mov     [edi+ebx],edx
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx*2],edx
-    mov     [edi+ebx*2+4],eax
-    mov     [edi+ebx*2+8],eax
-    jmp     .loopx_end
-..@cross4
-    mov     ecx,[w6]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+8],edx
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],edx
-    mov     [edi+ebx*2],eax
-    mov     [edi+ebx*2+4],eax
-    mov     [edi+ebx*2+8],edx
-    jmp     .loopx_end
-..@cross8
-    mov     ecx,[w8]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+8],eax
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx*2],edx
-    mov     [edi+ebx*2+4],edx
-    mov     [edi+ebx*2+8],edx
-    jmp     .loopx_end
-..@crossN
-    mov     edx,[w2]
-    mov     ecx,[ebx+edx*4]
-    mov     [c2],ecx
-    mov     edx,[w4]
-    mov     ecx,[ebx+edx*4]
-    mov     [c4],ecx
-    mov     edx,[w6]
-    mov     ecx,[ebx+edx*4]
-    mov     [c6],ecx
-    mov     edx,[w8]
-    mov     ecx,[ebx+edx*4]
-    mov     [c8],ecx
-    mov     ebx,[ebp+dstpitch]
-    jmp     ..@flag0
-
-.loopx_end
-    add esi,2
-    add edi,12
-    dec dword[xcounter]
-    jz  .nexty
-    jmp .loopx
-.nexty
-    mov dword[firstline],0
-    add esi,[ebp+srcpitch]
-       add edi,[ebp+dstpitch2]
-    dec dword[linesleft]
-    jz  .fin
-    jmp .loopy
-.fin
-    emms
-    popad
-    mov esp,ebp
-    pop ebp
-    ret
-
-SECTION .data
-FuncTable
-    dd ..@flag0, ..@flag1, ..@flag2, ..@flag3, ..@flag4, ..@flag5, ..@flag6, ..@flag7
-    dd ..@flag8, ..@flag9, ..@flag10, ..@flag11, ..@flag12, ..@flag13, ..@flag14, ..@flag15
-    dd ..@flag16, ..@flag17, ..@flag18, ..@flag19, ..@flag20, ..@flag21, ..@flag22, ..@flag23
-    dd ..@flag24, ..@flag25, ..@flag26, ..@flag27, ..@flag28, ..@flag29, ..@flag30, ..@flag31
-    dd ..@flag32, ..@flag33, ..@flag34, ..@flag35, ..@flag36, ..@flag37, ..@flag38, ..@flag39
-    dd ..@flag40, ..@flag41, ..@flag42, ..@flag43, ..@flag44, ..@flag45, ..@flag46, ..@flag47
-    dd ..@flag48, ..@flag49, ..@flag50, ..@flag51, ..@flag52, ..@flag53, ..@flag54, ..@flag55
-    dd ..@flag56, ..@flag57, ..@flag58, ..@flag59, ..@flag60, ..@flag61, ..@flag62, ..@flag63
-    dd ..@flag64, ..@flag65, ..@flag66, ..@flag67, ..@flag68, ..@flag69, ..@flag70, ..@flag71
-    dd ..@flag72, ..@flag73, ..@flag74, ..@flag75, ..@flag76, ..@flag77, ..@flag78, ..@flag79
-    dd ..@flag80, ..@flag81, ..@flag82, ..@flag83, ..@flag84, ..@flag85, ..@flag86, ..@flag87
-    dd ..@flag88, ..@flag89, ..@flag90, ..@flag91, ..@flag92, ..@flag93, ..@flag94, ..@flag95
-    dd ..@flag96, ..@flag97, ..@flag98, ..@flag99, ..@flag100, ..@flag101, ..@flag102, ..@flag103
-    dd ..@flag104, ..@flag105, ..@flag106, ..@flag107, ..@flag108, ..@flag109, ..@flag110, ..@flag111
-    dd ..@flag112, ..@flag113, ..@flag114, ..@flag115, ..@flag116, ..@flag117, ..@flag118, ..@flag119
-    dd ..@flag120, ..@flag121, ..@flag122, ..@flag123, ..@flag124, ..@flag125, ..@flag126, ..@flag127
-    dd ..@flag128, ..@flag129, ..@flag130, ..@flag131, ..@flag132, ..@flag133, ..@flag134, ..@flag135
-    dd ..@flag136, ..@flag137, ..@flag138, ..@flag139, ..@flag140, ..@flag141, ..@flag142, ..@flag143
-    dd ..@flag144, ..@flag145, ..@flag146, ..@flag147, ..@flag148, ..@flag149, ..@flag150, ..@flag151
-    dd ..@flag152, ..@flag153, ..@flag154, ..@flag155, ..@flag156, ..@flag157, ..@flag158, ..@flag159
-    dd ..@flag160, ..@flag161, ..@flag162, ..@flag163, ..@flag164, ..@flag165, ..@flag166, ..@flag167
-    dd ..@flag168, ..@flag169, ..@flag170, ..@flag171, ..@flag172, ..@flag173, ..@flag174, ..@flag175
-    dd ..@flag176, ..@flag177, ..@flag178, ..@flag179, ..@flag180, ..@flag181, ..@flag182, ..@flag183
-    dd ..@flag184, ..@flag185, ..@flag186, ..@flag187, ..@flag188, ..@flag189, ..@flag190, ..@flag191
-    dd ..@flag192, ..@flag193, ..@flag194, ..@flag195, ..@flag196, ..@flag197, ..@flag198, ..@flag199
-    dd ..@flag200, ..@flag201, ..@flag202, ..@flag203, ..@flag204, ..@flag205, ..@flag206, ..@flag207
-    dd ..@flag208, ..@flag209, ..@flag210, ..@flag211, ..@flag212, ..@flag213, ..@flag214, ..@flag215
-    dd ..@flag216, ..@flag217, ..@flag218, ..@flag219, ..@flag220, ..@flag221, ..@flag222, ..@flag223
-    dd ..@flag224, ..@flag225, ..@flag226, ..@flag227, ..@flag228, ..@flag229, ..@flag230, ..@flag231
-    dd ..@flag232, ..@flag233, ..@flag234, ..@flag235, ..@flag236, ..@flag237, ..@flag238, ..@flag239
-    dd ..@flag240, ..@flag241, ..@flag242, ..@flag243, ..@flag244, ..@flag245, ..@flag246, ..@flag247
-    dd ..@flag248, ..@flag249, ..@flag250, ..@flag251, ..@flag252, ..@flag253, ..@flag254, ..@flag255
-
-FuncTable2
-    dd ..@cross0, ..@cross1, ..@cross2, ..@crossN,
-    dd ..@cross4, ..@crossN, ..@crossN, ..@crossN,
-    dd ..@cross8, ..@crossN, ..@crossN, ..@crossN,
-    dd ..@crossN, ..@crossN, ..@crossN, ..@crossN
-
diff --git a/od-win32/hq4x32.asm b/od-win32/hq4x32.asm
deleted file mode 100755 (executable)
index 97b7fb7..0000000
+++ /dev/null
@@ -1,4014 +0,0 @@
-;hq4x filter
-;----------------------------------------------------------
-;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 _hq4x_32
-
-EXTERN _LUT16to32
-EXTERN _RGBtoYUV
-
-SECTION .bss
-linesleft resd 1
-xcounter  resd 1
-cross     resd 1
-nextline  resd 1
-prevline  resd 1
-w1        resd 1
-w2        resd 1
-w3        resd 1
-w4        resd 1
-w5        resd 1
-w6        resd 1
-w7        resd 1
-w8        resd 1
-w9        resd 1
-c1        resd 1
-c2        resd 1
-c3        resd 1
-c4        resd 1
-c5        resd 1
-c6        resd 1
-c7        resd 1
-c8        resd 1
-c9        resd 1
-
-SECTION .data
-
-reg_blank    dd  0,0
-const3       dd  0x00030003,0x00000003
-const5       dd  0x00050005,0x00000005
-const6       dd  0x00060006,0x00000006
-const7       dd  0x00070007,0x00000007
-threshold    dd  0x00300706,0x00000000
-
-SECTION .text
-
-%macro AUXADDRESS 0
-    mov     ecx, edi
-    add     ecx, ebx
-    add     ecx, ebx
-%endmacro
-
-%macro TestDiff 2
-    mov     edx,[%1]
-    sub     edx,[%2]
-    jz      %%fin
-    mov     edx,[%1]
-    shl     edx,2
-    add     edx,_RGBtoYUV
-    movd    mm1,[edx]
-    movq    mm5,mm1
-    mov     edx,[%2]
-    shl     edx,2
-    add     edx,_RGBtoYUV
-    movd    mm2,[edx]
-    psubusb mm1,mm2
-    psubusb mm2,mm5
-    por     mm1,mm2
-    psubusb mm1,[threshold]
-    movd    edx,mm1
-%%fin:
-%endmacro
-
-%macro DiffOrNot 4
-   TestDiff %1,%2
-   test edx,edx
-   jz   %%same
-   %3
-   jmp %%fin
-%%same:
-   %4
-%%fin
-%endmacro
-
-%macro DiffOrNot 8
-   TestDiff %1,%2
-   test edx,edx
-   jz   %%same
-   %3
-   %4
-   %5
-   jmp %%fin
-%%same:
-   %6
-   %7
-   %8
-%%fin
-%endmacro
-
-%macro DiffOrNot 10
-   TestDiff %1,%2
-   test edx,edx
-   jz %%same
-   %3
-   %4
-   %5
-   %6
-   jmp %%fin
-%%same:
-   %7
-   %8
-   %9
-   %10
-%%fin
-%endmacro
-
-%macro DiffOrNot 14
-   TestDiff %1,%2
-   test edx,edx
-   jz %%same
-   %3
-   %4
-   %5
-   %6
-   %7
-   %8
-   jmp %%fin
-%%same:
-   %9
-   %10
-   %11
-   %12
-   %13
-   %14
-%%fin
-%endmacro
-
-%macro Interp1 3
-    mov edx,%2
-    shl edx,2
-    add edx,%3
-    sub edx,%2
-    shr edx,2
-    mov %1,edx
-%endmacro
-
-%macro Interp2 4
-    mov edx,%2
-    shl edx,1
-    add edx,%3
-    add edx,%4
-    shr edx,2
-    mov %1,edx
-%endmacro
-
-%macro Interp3 2
-    movd       mm1, eax
-    movd       mm2, %2
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    pmullw     mm1, [const7]
-    paddw      mm1, mm2
-    psrlw      mm1, 3
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro Interp5 3
-    mov edx,%2
-    add edx,%3
-    shr edx,1
-    mov %1,edx
-%endmacro
-
-%macro Interp6 3
-    movd       mm1, eax
-    movd       mm2, %2
-    movd       mm3, %3
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    punpcklbw  mm3, [reg_blank]
-    pmullw     mm1, [const5]
-    psllw      mm2, 1
-    paddw      mm1, mm3
-    paddw      mm1, mm2
-    psrlw      mm1, 3
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro Interp7 3
-    movd       mm1, eax
-    movd       mm2, %2
-    movd       mm3, %3
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    punpcklbw  mm3, [reg_blank]
-    pmullw     mm1, [const6]
-    paddw      mm2, mm3
-    paddw      mm1, mm2
-    psrlw      mm1, 3
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro Interp8 3
-    movd       mm1, %2
-    movd       mm2, %3
-    punpcklbw  mm1, [reg_blank]
-    punpcklbw  mm2, [reg_blank]
-    pmullw     mm1, [const5]
-    pmullw     mm2, [const3]
-    paddw      mm1, mm2
-    psrlw      mm1, 3
-    packuswb   mm1, [reg_blank]
-    movd       %1, mm1
-%endmacro
-
-%macro PIXEL00_0 0
-    mov [edi],eax
-%endmacro
-
-%macro PIXEL00_11 0
-    Interp1 [edi],eax,[c4]
-%endmacro
-
-%macro PIXEL00_12 0
-    Interp1 [edi],eax,[c2]
-%endmacro
-
-%macro PIXEL00_20 0
-    Interp2 [edi],eax,[c2],[c4]
-%endmacro
-
-%macro PIXEL00_50 0
-    Interp5 [edi],[c2],[c4]
-%endmacro
-
-%macro PIXEL00_80 0
-    Interp8 [edi],eax,[c1]
-%endmacro
-
-%macro PIXEL00_81 0
-    Interp8 [edi],eax,[c4]
-%endmacro
-
-%macro PIXEL00_82 0
-    Interp8 [edi],eax,[c2]
-%endmacro
-
-%macro PIXEL01_0 0
-    mov [edi+4],eax
-%endmacro
-
-%macro PIXEL01_10 0
-    Interp1 [edi+4],eax,[c1]
-%endmacro
-
-%macro PIXEL01_12 0
-    Interp1 [edi+4],eax,[c2]
-%endmacro
-
-%macro PIXEL01_14 0
-    Interp1 [edi+4],[c2],eax
-%endmacro
-
-%macro PIXEL01_21 0
-    Interp2 [edi+4],[c2],eax,[c4]
-%endmacro
-
-%macro PIXEL01_31 0
-    Interp3 [edi+4],[c4]
-%endmacro
-
-%macro PIXEL01_50 0
-    Interp5 [edi+4],[c2],eax
-%endmacro
-
-%macro PIXEL01_60 0
-    Interp6 [edi+4],[c2],[c4]
-%endmacro
-
-%macro PIXEL01_61 0
-    Interp6 [edi+4],[c2],[c1]
-%endmacro
-
-%macro PIXEL01_82 0
-    Interp8 [edi+4],eax,[c2]
-%endmacro
-
-%macro PIXEL01_83 0
-    Interp8 [edi+4],[c2],[c4]
-%endmacro
-
-%macro PIXEL02_0 0
-    mov [edi+8],eax
-%endmacro
-
-%macro PIXEL02_10 0
-    Interp1 [edi+8],eax,[c3]
-%endmacro
-
-%macro PIXEL02_11 0
-    Interp1 [edi+8],eax,[c2]
-%endmacro
-
-%macro PIXEL02_13 0
-    Interp1 [edi+8],[c2],eax
-%endmacro
-
-%macro PIXEL02_21 0
-    Interp2 [edi+8],[c2],eax,[c6]
-%endmacro
-
-%macro PIXEL02_32 0
-    Interp3 [edi+8],[c6]
-%endmacro
-
-%macro PIXEL02_50 0
-    Interp5 [edi+8],[c2],eax
-%endmacro
-
-%macro PIXEL02_60 0
-    Interp6 [edi+8],[c2],[c6]
-%endmacro
-
-%macro PIXEL02_61 0
-    Interp6 [edi+8],[c2],[c3]
-%endmacro
-
-%macro PIXEL02_81 0
-    Interp8 [edi+8],eax,[c2]
-%endmacro
-
-%macro PIXEL02_83 0
-    Interp8 [edi+8],[c2],[c6]
-%endmacro
-
-%macro PIXEL03_0 0
-    mov [edi+12],eax
-%endmacro
-
-%macro PIXEL03_11 0
-    Interp1 [edi+12],eax,[c2]
-%endmacro
-
-%macro PIXEL03_12 0
-    Interp1 [edi+12],eax,[c6]
-%endmacro
-
-%macro PIXEL03_20 0
-    Interp2 [edi+12],eax,[c2],[c6]
-%endmacro
-
-%macro PIXEL03_50 0
-    Interp5 [edi+12],[c2],[c6]
-%endmacro
-
-%macro PIXEL03_80 0
-    Interp8 [edi+12],eax,[c3]
-%endmacro
-
-%macro PIXEL03_81 0
-    Interp8 [edi+12],eax,[c2]
-%endmacro
-
-%macro PIXEL03_82 0
-    Interp8 [edi+12],eax,[c6]
-%endmacro
-
-%macro PIXEL10_0 0
-    mov [edi+ebx],eax
-%endmacro
-
-%macro PIXEL10_10 0
-    Interp1 [edi+ebx],eax,[c1]
-%endmacro
-
-%macro PIXEL10_11 0
-    Interp1 [edi+ebx],eax,[c4]
-%endmacro
-
-%macro PIXEL10_13 0
-    Interp1 [edi+ebx],[c4],eax
-%endmacro
-
-%macro PIXEL10_21 0
-    Interp2 [edi+ebx],[c4],eax,[c2]
-%endmacro
-
-%macro PIXEL10_32 0
-    Interp3 [edi+ebx],[c2]
-%endmacro
-
-%macro PIXEL10_50 0
-    Interp5 [edi+ebx],[c4],eax
-%endmacro
-
-%macro PIXEL10_60 0
-    Interp6 [edi+ebx],[c4],[c2]
-%endmacro
-
-%macro PIXEL10_61 0
-    Interp6 [edi+ebx],[c4],[c1]
-%endmacro
-
-%macro PIXEL10_81 0
-    Interp8 [edi+ebx],eax,[c4]
-%endmacro
-
-%macro PIXEL10_83 0
-    Interp8 [edi+ebx],[c4],[c2]
-%endmacro
-
-%macro PIXEL11_0 0
-    mov [edi+ebx+4],eax
-%endmacro
-
-%macro PIXEL11_30 0
-    Interp3 [edi+ebx+4],[c1]
-%endmacro
-
-%macro PIXEL11_31 0
-    Interp3 [edi+ebx+4],[c4]
-%endmacro
-
-%macro PIXEL11_32 0
-    Interp3 [edi+ebx+4],[c2]
-%endmacro
-
-%macro PIXEL11_70 0
-    Interp7 [edi+ebx+4],[c4],[c2]
-%endmacro
-
-%macro PIXEL12_0 0
-    mov [edi+ebx+8],eax
-%endmacro
-
-%macro PIXEL12_30 0
-    Interp3 [edi+ebx+8],[c3]
-%endmacro
-
-%macro PIXEL12_31 0
-    Interp3 [edi+ebx+8],[c2]
-%endmacro
-
-%macro PIXEL12_32 0
-    Interp3 [edi+ebx+8],[c6]
-%endmacro
-
-%macro PIXEL12_70 0
-    Interp7 [edi+ebx+8],[c6],[c2]
-%endmacro
-
-%macro PIXEL13_0 0
-    mov [edi+ebx+12],eax
-%endmacro
-
-%macro PIXEL13_10 0
-    Interp1 [edi+ebx+12],eax,[c3]
-%endmacro
-
-%macro PIXEL13_12 0
-    Interp1 [edi+ebx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL13_14 0
-    Interp1 [edi+ebx+12],[c6],eax
-%endmacro
-
-%macro PIXEL13_21 0
-    Interp2 [edi+ebx+12],[c6],eax,[c2]
-%endmacro
-
-%macro PIXEL13_31 0
-    Interp3 [edi+ebx+12],[c2]
-%endmacro
-
-%macro PIXEL13_50 0
-    Interp5 [edi+ebx+12],[c6],eax
-%endmacro
-
-%macro PIXEL13_60 0
-    Interp6 [edi+ebx+12],[c6],[c2]
-%endmacro
-
-%macro PIXEL13_61 0
-    Interp6 [edi+ebx+12],[c6],[c3]
-%endmacro
-
-%macro PIXEL13_82 0
-    Interp8 [edi+ebx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL13_83 0
-    Interp8 [edi+ebx+12],[c6],[c2]
-%endmacro
-
-%macro PIXEL20_0 0
-    mov [ecx],eax
-%endmacro
-
-%macro PIXEL20_10 0
-    Interp1 [ecx],eax,[c7]
-%endmacro
-
-%macro PIXEL20_12 0
-    Interp1 [ecx],eax,[c4]
-%endmacro
-
-%macro PIXEL20_14 0
-    Interp1 [ecx],[c4],eax
-%endmacro
-
-%macro PIXEL20_21 0
-    Interp2 [ecx],[c4],eax,[c8]
-%endmacro
-
-%macro PIXEL20_31 0
-    Interp3 [ecx],[c8]
-%endmacro
-
-%macro PIXEL20_50 0
-    Interp5 [ecx],[c4],eax
-%endmacro
-
-%macro PIXEL20_60 0
-    Interp6 [ecx],[c4],[c8]
-%endmacro
-
-%macro PIXEL20_61 0
-    Interp6 [ecx],[c4],[c7]
-%endmacro
-
-%macro PIXEL20_82 0
-    Interp8 [ecx],eax,[c4]
-%endmacro
-
-%macro PIXEL20_83 0
-    Interp8 [ecx],[c4],[c8]
-%endmacro
-
-%macro PIXEL21_0 0
-    mov [ecx+4],eax
-%endmacro
-
-%macro PIXEL21_30 0
-    Interp3 [ecx+4],[c7]
-%endmacro
-
-%macro PIXEL21_31 0
-    Interp3 [ecx+4],[c8]
-%endmacro
-
-%macro PIXEL21_32 0
-    Interp3 [ecx+4],[c4]
-%endmacro
-
-%macro PIXEL21_70 0
-    Interp7 [ecx+4],[c4],[c8]
-%endmacro
-
-%macro PIXEL22_0 0
-    mov [ecx+8],eax
-%endmacro
-
-%macro PIXEL22_30 0
-    Interp3 [ecx+8],[c9]
-%endmacro
-
-%macro PIXEL22_31 0
-    Interp3 [ecx+8],[c6]
-%endmacro
-
-%macro PIXEL22_32 0
-    Interp3 [ecx+8],[c8]
-%endmacro
-
-%macro PIXEL22_70 0
-    Interp7 [ecx+8],[c6],[c8]
-%endmacro
-
-%macro PIXEL23_0 0
-    mov [ecx+12],eax
-%endmacro
-
-%macro PIXEL23_10 0
-    Interp1 [ecx+12],eax,[c9]
-%endmacro
-
-%macro PIXEL23_11 0
-    Interp1 [ecx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL23_13 0
-    Interp1 [ecx+12],[c6],eax
-%endmacro
-
-%macro PIXEL23_21 0
-    Interp2 [ecx+12],[c6],eax,[c8]
-%endmacro
-
-%macro PIXEL23_32 0
-    Interp3 [ecx+12],[c8]
-%endmacro
-
-%macro PIXEL23_50 0
-    Interp5 [ecx+12],[c6],eax
-%endmacro
-
-%macro PIXEL23_60 0
-    Interp6 [ecx+12],[c6],[c8]
-%endmacro
-
-%macro PIXEL23_61 0
-    Interp6 [ecx+12],[c6],[c9]
-%endmacro
-
-%macro PIXEL23_81 0
-    Interp8 [ecx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL23_83 0
-    Interp8 [ecx+12],[c6],[c8]
-%endmacro
-
-%macro PIXEL30_0 0
-    mov [ecx+ebx],eax
-%endmacro
-
-%macro PIXEL30_11 0
-    Interp1 [ecx+ebx],eax,[c8]
-%endmacro
-
-%macro PIXEL30_12 0
-    Interp1 [ecx+ebx],eax,[c4]
-%endmacro
-
-%macro PIXEL30_20 0
-    Interp2 [ecx+ebx],eax,[c8],[c4]
-%endmacro
-
-%macro PIXEL30_50 0
-    Interp5 [ecx+ebx],[c8],[c4]
-%endmacro
-
-%macro PIXEL30_80 0
-    Interp8 [ecx+ebx],eax,[c7]
-%endmacro
-
-%macro PIXEL30_81 0
-    Interp8 [ecx+ebx],eax,[c8]
-%endmacro
-
-%macro PIXEL30_82 0
-    Interp8 [ecx+ebx],eax,[c4]
-%endmacro
-
-%macro PIXEL31_0 0
-    mov [ecx+ebx+4],eax
-%endmacro
-
-%macro PIXEL31_10 0
-    Interp1 [ecx+ebx+4],eax,[c7]
-%endmacro
-
-%macro PIXEL31_11 0
-    Interp1 [ecx+ebx+4],eax,[c8]
-%endmacro
-
-%macro PIXEL31_13 0
-    Interp1 [ecx+ebx+4],[c8],eax
-%endmacro
-
-%macro PIXEL31_21 0
-    Interp2 [ecx+ebx+4],[c8],eax,[c4]
-%endmacro
-
-%macro PIXEL31_32 0
-    Interp3 [ecx+ebx+4],[c4]
-%endmacro
-
-%macro PIXEL31_50 0
-    Interp5 [ecx+ebx+4],[c8],eax
-%endmacro
-
-%macro PIXEL31_60 0
-    Interp6 [ecx+ebx+4],[c8],[c4]
-%endmacro
-
-%macro PIXEL31_61 0
-    Interp6 [ecx+ebx+4],[c8],[c7]
-%endmacro
-
-%macro PIXEL31_81 0
-    Interp8 [ecx+ebx+4],eax,[c8]
-%endmacro
-
-%macro PIXEL31_83 0
-    Interp8 [ecx+ebx+4],[c8],[c4]
-%endmacro
-
-%macro PIXEL32_0 0
-    mov [ecx+ebx+8],eax
-%endmacro
-
-%macro PIXEL32_10 0
-    Interp1 [ecx+ebx+8],eax,[c9]
-%endmacro
-
-%macro PIXEL32_12 0
-    Interp1 [ecx+ebx+8],eax,[c8]
-%endmacro
-
-%macro PIXEL32_14 0
-    Interp1 [ecx+ebx+8],[c8],eax
-%endmacro
-
-%macro PIXEL32_21 0
-    Interp2 [ecx+ebx+8],[c8],eax,[c6]
-%endmacro
-
-%macro PIXEL32_31 0
-    Interp3 [ecx+ebx+8],[c6]
-%endmacro
-
-%macro PIXEL32_50 0
-    Interp5 [ecx+ebx+8],[c8],eax
-%endmacro
-
-%macro PIXEL32_60 0
-    Interp6 [ecx+ebx+8],[c8],[c6]
-%endmacro
-
-%macro PIXEL32_61 0
-    Interp6 [ecx+ebx+8],[c8],[c9]
-%endmacro
-
-%macro PIXEL32_82 0
-    Interp8 [ecx+ebx+8],eax,[c8]
-%endmacro
-
-%macro PIXEL32_83 0
-    Interp8 [ecx+ebx+8],[c8],[c6]
-%endmacro
-
-%macro PIXEL33_0 0
-    mov [ecx+ebx+12],eax
-%endmacro
-
-%macro PIXEL33_11 0
-    Interp1 [ecx+ebx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL33_12 0
-    Interp1 [ecx+ebx+12],eax,[c8]
-%endmacro
-
-%macro PIXEL33_20 0
-    Interp2 [ecx+ebx+12],eax,[c8],[c6]
-%endmacro
-
-%macro PIXEL33_50 0
-    Interp5 [ecx+ebx+12],[c8],[c6]
-%endmacro
-
-%macro PIXEL33_80 0
-    Interp8 [ecx+ebx+12],eax,[c9]
-%endmacro
-
-%macro PIXEL33_81 0
-    Interp8 [ecx+ebx+12],eax,[c6]
-%endmacro
-
-%macro PIXEL33_82 0
-    Interp8 [ecx+ebx+12],eax,[c8]
-%endmacro
-
-inbuffer     equ 8
-outbuffer    equ 12
-Xres         equ 16
-Yres         equ 20
-dstpitch     equ 24
-srcpitch     equ 28
-
-_hq4x_32:
-    push ebp
-    mov ebp,esp
-    pushad
-
-    mov     esi,[ebp+inbuffer]
-    mov     edi,[ebp+outbuffer]
-    mov     edx,[ebp+Yres]
-    mov     [linesleft],edx
-    mov     ebx,[ebp+Xres]
-    shl     ebx,1
-    mov     dword[prevline],0
-    mov     dword[nextline],ebx
-.loopy
-    mov     ecx,[ebp+Xres]
-    sub     ecx,2                 ; x={Xres-2, Xres-1} are special cases.
-    mov     dword[xcounter],ecx
-    ; x=0 - special case
-    mov     ebx,[prevline]
-    movq    mm5,[esi+ebx]
-    movq    mm6,[esi]
-    mov     ebx,[nextline]
-    movq    mm7,[esi+ebx]
-    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     ebx,[prevline]
-    movq    mm5,[esi+ebx-2]
-    movq    mm6,[esi-2]
-    mov     ebx,[nextline]
-    movq    mm7,[esi+ebx-2]
-    movd    eax,mm5
-    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,_RGBtoYUV
-    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
-    cmp     dword[cross],0
-    jnz     .testflag1
-    mov     ebx,_LUT16to32
-    mov     eax,[ebx+eax*4]
-    mov     ebx,[ebp+dstpitch]
-    AUXADDRESS
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+8],eax
-    mov     [edi+12],eax
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx+12],eax
-    mov     [ecx],eax
-    mov     [ecx+4],eax
-    mov     [ecx+8],eax
-    mov     [ecx+12],eax
-    mov     [ecx+ebx],eax
-    mov     [ecx+ebx+4],eax
-    mov     [ecx+ebx+8],eax
-    mov     [ecx+ebx+12],eax
-    jmp     .loopx_end
-.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,_LUT16to32
-    mov  eax,[ebx+eax*4]
-    mov  edx,[w2]
-    mov  edx,[ebx+edx*4]
-    mov  [c2],edx
-    mov  edx,[w4]
-    mov  edx,[ebx+edx*4]
-    mov  [c4],edx
-    mov  edx,[w6]
-    mov  edx,[ebx+edx*4]
-    mov  [c6],edx
-    mov  edx,[w8]
-    mov  edx,[ebx+edx*4]
-    mov  [c8],edx
-    test ecx,0x005A
-    jz  .switch
-    mov  edx,[w1]
-    mov  edx,[ebx+edx*4]
-    mov  [c1],edx
-    mov  edx,[w3]
-    mov  edx,[ebx+edx*4]
-    mov  [c3],edx
-    mov  edx,[w7]
-    mov  edx,[ebx+edx*4]
-    mov  [c7],edx
-    mov  edx,[w9]
-    mov  edx,[ebx+edx*4]
-    mov  [c9],edx
-.switch
-    mov  ebx,[ebp+dstpitch]
-    jmp  [FuncTable+ecx*4]
-
-..@flag0
-..@flag1
-..@flag4
-..@flag32
-..@flag128
-..@flag5
-..@flag132
-..@flag160
-..@flag33
-..@flag129
-..@flag36
-..@flag133
-..@flag164
-..@flag161
-..@flag37
-..@flag165
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag2
-..@flag34
-..@flag130
-..@flag162
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag16
-..@flag17
-..@flag48
-..@flag49
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag64
-..@flag65
-..@flag68
-..@flag69
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag8
-..@flag12
-..@flag136
-..@flag140
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag3
-..@flag35
-..@flag131
-..@flag163
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag6
-..@flag38
-..@flag134
-..@flag166
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag20
-..@flag21
-..@flag52
-..@flag53
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag144
-..@flag145
-..@flag176
-..@flag177
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag192
-..@flag193
-..@flag196
-..@flag197
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag96
-..@flag97
-..@flag100
-..@flag101
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag40
-..@flag44
-..@flag168
-..@flag172
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag9
-..@flag13
-..@flag137
-..@flag141
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag18
-..@flag50
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_50,PIXEL03_50,PIXEL12_0,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag80
-..@flag81
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_61
-    PIXEL21_30
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag72
-..@flag76
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_50,PIXEL21_0,PIXEL30_50,PIXEL31_50
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag10
-..@flag138
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_50,PIXEL01_50,PIXEL10_50,PIXEL11_0
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag66
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag24
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag7
-..@flag39
-..@flag135
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag148
-..@flag149
-..@flag180
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag224
-..@flag228
-..@flag225
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag41
-..@flag169
-..@flag45
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag22
-..@flag54
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag208
-..@flag209
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag104
-..@flag108
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag11
-..@flag139
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag19
-..@flag51
-    AUXADDRESS
-    DiffOrNot w2,w6,PIXEL00_81,PIXEL01_31,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL00_12,PIXEL01_14,PIXEL02_83,PIXEL03_50,PIXEL12_70,PIXEL13_21
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag146
-..@flag178
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL23_32,PIXEL33_82,PIXEL02_21,PIXEL03_50,PIXEL12_70,PIXEL13_83,PIXEL23_13,PIXEL33_11
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    jmp .loopx_end
-..@flag84
-..@flag85
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    DiffOrNot w6,w8,PIXEL03_81,PIXEL13_31,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL03_12,PIXEL13_14,PIXEL22_70,PIXEL23_83,PIXEL32_21,PIXEL33_50
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag112
-..@flag113
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL30_82,PIXEL31_32,PIXEL32_10,PIXEL33_80,PIXEL22_70,PIXEL23_21,PIXEL30_11,PIXEL31_13,PIXEL32_83,PIXEL33_50
-    jmp .loopx_end
-..@flag200
-..@flag204
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL32_31,PIXEL33_81,PIXEL20_21,PIXEL21_70,PIXEL30_50,PIXEL31_83,PIXEL32_14,PIXEL33_12
-    PIXEL22_31
-    PIXEL23_81
-    jmp .loopx_end
-..@flag73
-..@flag77
-    AUXADDRESS
-    DiffOrNot w8,w4,PIXEL00_82,PIXEL10_32,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL00_11,PIXEL10_13,PIXEL20_83,PIXEL21_70,PIXEL30_50,PIXEL31_21
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag42
-..@flag170
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL20_31,PIXEL30_81,PIXEL00_50,PIXEL01_21,PIXEL10_83,PIXEL11_70,PIXEL20_14,PIXEL30_12
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag14
-..@flag142
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL02_32,PIXEL03_82,PIXEL10_10,PIXEL11_30,PIXEL00_50,PIXEL01_83,PIXEL02_13,PIXEL03_11,PIXEL10_21,PIXEL11_70
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag67
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag70
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag28
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag152
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag194
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag98
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag56
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag25
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag26
-..@flag31
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag82
-..@flag214
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag88
-..@flag248
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    jmp .loopx_end
-..@flag74
-..@flag107
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_61
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag27
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag86
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag216
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag106
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag30
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag210
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag120
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag75
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag29
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag198
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag184
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag99
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag57
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag71
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag156
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag226
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag60
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag195
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag102
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag153
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag58
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag83
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_61
-    PIXEL21_30
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag92
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag202
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_61
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag78
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag154
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag114
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    PIXEL30_82
-    PIXEL31_32
-    jmp .loopx_end
-..@flag89
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag90
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag55
-..@flag23
-    AUXADDRESS
-    DiffOrNot w2,w6,PIXEL00_81,PIXEL01_31,PIXEL02_0,PIXEL03_0,PIXEL12_0,PIXEL13_0,PIXEL00_12,PIXEL01_14,PIXEL02_83,PIXEL03_50,PIXEL12_70,PIXEL13_21
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag182
-..@flag150
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL12_0,PIXEL13_0,PIXEL23_32,PIXEL33_82,PIXEL02_21,PIXEL03_50,PIXEL12_70,PIXEL13_83,PIXEL23_13,PIXEL33_11
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    jmp .loopx_end
-..@flag213
-..@flag212
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    DiffOrNot w6,w8,PIXEL03_81,PIXEL13_31,PIXEL22_0,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL03_12,PIXEL13_14,PIXEL22_70,PIXEL23_83,PIXEL32_21,PIXEL33_50
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag241
-..@flag240
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_0,PIXEL23_0,PIXEL30_82,PIXEL31_32,PIXEL32_0,PIXEL33_0,PIXEL22_70,PIXEL23_21,PIXEL30_11,PIXEL31_13,PIXEL32_83,PIXEL33_50
-    jmp .loopx_end
-..@flag236
-..@flag232
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_70
-    PIXEL13_60
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL21_0,PIXEL30_0,PIXEL31_0,PIXEL32_31,PIXEL33_81,PIXEL20_21,PIXEL21_70,PIXEL30_50,PIXEL31_83,PIXEL32_14,PIXEL33_12
-    PIXEL22_31
-    PIXEL23_81
-    jmp .loopx_end
-..@flag109
-..@flag105
-    AUXADDRESS
-    DiffOrNot w8,w4,PIXEL00_82,PIXEL10_32,PIXEL20_0,PIXEL21_0,PIXEL30_0,PIXEL31_0,PIXEL00_11,PIXEL10_13,PIXEL20_83,PIXEL21_70,PIXEL30_50,PIXEL31_21
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag171
-..@flag43
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL11_0,PIXEL20_31,PIXEL30_81,PIXEL00_50,PIXEL01_21,PIXEL10_83,PIXEL11_70,PIXEL20_14,PIXEL30_12
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag143
-..@flag15
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL02_32,PIXEL03_82,PIXEL10_0,PIXEL11_0,PIXEL00_50,PIXEL01_83,PIXEL02_13,PIXEL03_11,PIXEL10_21,PIXEL11_70
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag124
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag203
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag62
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag211
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag118
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag217
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag110
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag155
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag188
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag185
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag61
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag157
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag103
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag227
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag230
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag199
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag220
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    jmp .loopx_end
-..@flag158
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL12_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag234
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_61
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag242
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_82
-    PIXEL31_32
-    jmp .loopx_end
-..@flag59
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL11_0
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag121
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag87
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_0
-    PIXEL20_61
-    PIXEL21_30
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag79
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL11_0
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag122
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag94
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL12_0
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag218
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    jmp .loopx_end
-..@flag91
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL11_0
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag229
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag167
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag173
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag181
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag186
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag115
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    PIXEL30_82
-    PIXEL31_32
-    jmp .loopx_end
-..@flag93
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    jmp .loopx_end
-..@flag206
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag205
-..@flag201
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    DiffOrNot w8,w4,PIXEL20_10,PIXEL21_30,PIXEL30_80,PIXEL31_10,PIXEL20_12,PIXEL21_0,PIXEL30_20,PIXEL31_11
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag174
-..@flag46
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_80,PIXEL01_10,PIXEL10_10,PIXEL11_30,PIXEL00_20,PIXEL01_12,PIXEL10_11,PIXEL11_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag179
-..@flag147
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    DiffOrNot w2,w6,PIXEL02_10,PIXEL03_80,PIXEL12_30,PIXEL13_10,PIXEL02_11,PIXEL03_20,PIXEL12_0,PIXEL13_12
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag117
-..@flag116
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_30,PIXEL23_10,PIXEL32_10,PIXEL33_80,PIXEL22_0,PIXEL23_11,PIXEL32_12,PIXEL33_20
-    PIXEL30_82
-    PIXEL31_32
-    jmp .loopx_end
-..@flag189
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag231
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag126
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_0
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag219
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag125
-    AUXADDRESS
-    DiffOrNot w8,w4,PIXEL00_82,PIXEL10_32,PIXEL20_0,PIXEL21_0,PIXEL30_0,PIXEL31_0,PIXEL00_11,PIXEL10_13,PIXEL20_83,PIXEL21_70,PIXEL30_50,PIXEL31_21
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag221
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    DiffOrNot w6,w8,PIXEL03_81,PIXEL13_31,PIXEL22_0,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL03_12,PIXEL13_14,PIXEL22_70,PIXEL23_83,PIXEL32_21,PIXEL33_50
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag207
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL02_32,PIXEL03_82,PIXEL10_0,PIXEL11_0,PIXEL00_50,PIXEL01_83,PIXEL02_13,PIXEL03_11,PIXEL10_21,PIXEL11_70
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_31
-    PIXEL23_81
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag238
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL21_0,PIXEL30_0,PIXEL31_0,PIXEL32_31,PIXEL33_81,PIXEL20_21,PIXEL21_70,PIXEL30_50,PIXEL31_83,PIXEL32_14,PIXEL33_12
-    PIXEL22_31
-    PIXEL23_81
-    jmp .loopx_end
-..@flag190
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL12_0,PIXEL13_0,PIXEL23_32,PIXEL33_82,PIXEL02_21,PIXEL03_50,PIXEL12_70,PIXEL13_83,PIXEL23_13,PIXEL33_11
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    jmp .loopx_end
-..@flag187
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL11_0,PIXEL20_31,PIXEL30_81,PIXEL00_50,PIXEL01_21,PIXEL10_83,PIXEL11_70,PIXEL20_14,PIXEL30_12
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag243
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_82
-    PIXEL21_32
-    DiffOrNot w6,w8,PIXEL22_0,PIXEL23_0,PIXEL30_82,PIXEL31_32,PIXEL32_0,PIXEL33_0,PIXEL22_70,PIXEL23_21,PIXEL30_11,PIXEL31_13,PIXEL32_83,PIXEL33_50
-    jmp .loopx_end
-..@flag119
-    AUXADDRESS
-    DiffOrNot w2,w6,PIXEL00_81,PIXEL01_31,PIXEL02_0,PIXEL03_0,PIXEL12_0,PIXEL13_0,PIXEL00_12,PIXEL01_14,PIXEL02_83,PIXEL03_50,PIXEL12_70,PIXEL13_21
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag237
-..@flag233
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_60
-    PIXEL03_20
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_70
-    PIXEL13_60
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_31
-    PIXEL23_81
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag175
-..@flag47
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_70
-    PIXEL23_60
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_60
-    PIXEL33_20
-    jmp .loopx_end
-..@flag183
-..@flag151
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_60
-    PIXEL21_70
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_20
-    PIXEL31_60
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag245
-..@flag244
-    AUXADDRESS
-    PIXEL00_20
-    PIXEL01_60
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_60
-    PIXEL11_70
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_0
-    PIXEL23_0
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag250
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    jmp .loopx_end
-..@flag123
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_10
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag95
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_80
-    PIXEL31_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag222
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag252
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_61
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_31
-    PIXEL13_31
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_0
-    PIXEL23_0
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag249
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_61
-    PIXEL03_80
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    jmp .loopx_end
-..@flag235
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_61
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_31
-    PIXEL23_81
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag111
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_32
-    PIXEL13_82
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_61
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag63
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_61
-    PIXEL33_80
-    jmp .loopx_end
-..@flag159
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_80
-    PIXEL31_61
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag215
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_61
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag246
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_61
-    PIXEL11_30
-    PIXEL12_0
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_0
-    PIXEL23_0
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag254
-    AUXADDRESS
-    PIXEL00_80
-    PIXEL01_10
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_10
-    PIXEL11_30
-    PIXEL12_0
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_0
-    PIXEL23_0
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag253
-    AUXADDRESS
-    PIXEL00_82
-    PIXEL01_82
-    PIXEL02_81
-    PIXEL03_81
-    PIXEL10_32
-    PIXEL11_32
-    PIXEL12_31
-    PIXEL13_31
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_0
-    PIXEL23_0
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag251
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_10
-    PIXEL03_80
-    PIXEL11_0
-    PIXEL12_30
-    PIXEL13_10
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    jmp .loopx_end
-..@flag239
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    PIXEL02_32
-    PIXEL03_82
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_32
-    PIXEL13_82
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_31
-    PIXEL23_81
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    PIXEL32_31
-    PIXEL33_81
-    jmp .loopx_end
-..@flag127
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    DiffOrNot w2,w6,PIXEL02_0,PIXEL03_0,PIXEL13_0,PIXEL02_50,PIXEL03_50,PIXEL13_50
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_0
-    DiffOrNot w8,w4,PIXEL20_0,PIXEL30_0,PIXEL31_0,PIXEL20_50,PIXEL30_50,PIXEL31_50
-    PIXEL21_0
-    PIXEL22_30
-    PIXEL23_10
-    PIXEL32_10
-    PIXEL33_80
-    jmp .loopx_end
-..@flag191
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_31
-    PIXEL21_31
-    PIXEL22_32
-    PIXEL23_32
-    PIXEL30_81
-    PIXEL31_81
-    PIXEL32_82
-    PIXEL33_82
-    jmp .loopx_end
-..@flag223
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL01_0,PIXEL10_0,PIXEL00_50,PIXEL01_50,PIXEL10_50
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_10
-    PIXEL21_30
-    PIXEL22_0
-    DiffOrNot w6,w8,PIXEL23_0,PIXEL32_0,PIXEL33_0,PIXEL23_50,PIXEL32_50,PIXEL33_50
-    PIXEL30_80
-    PIXEL31_10
-    jmp .loopx_end
-..@flag247
-    AUXADDRESS
-    PIXEL00_81
-    PIXEL01_31
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL10_81
-    PIXEL11_31
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_82
-    PIXEL21_32
-    PIXEL22_0
-    PIXEL23_0
-    PIXEL30_82
-    PIXEL31_32
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-..@flag255
-    AUXADDRESS
-    DiffOrNot w4,w2,PIXEL00_0,PIXEL00_20
-    PIXEL01_0
-    PIXEL02_0
-    DiffOrNot w2,w6,PIXEL03_0,PIXEL03_20
-    PIXEL10_0
-    PIXEL11_0
-    PIXEL12_0
-    PIXEL13_0
-    PIXEL20_0
-    PIXEL21_0
-    PIXEL22_0
-    PIXEL23_0
-    DiffOrNot w8,w4,PIXEL30_0,PIXEL30_20
-    PIXEL31_0
-    PIXEL32_0
-    DiffOrNot w6,w8,PIXEL33_0,PIXEL33_20
-    jmp .loopx_end
-
-
-..@cross0
-    mov     ebx,[ebp+dstpitch]
-    AUXADDRESS
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+8],eax
-    mov     [edi+12],eax
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    mov     [edi+ebx+8],eax
-    mov     [edi+ebx+12],eax
-    mov     [ecx],eax
-    mov     [ecx+4],eax
-    mov     [ecx+8],eax
-    mov     [ecx+12],eax
-    mov     [ecx+ebx],eax
-    mov     [ecx+ebx+4],eax
-    mov     [ecx+ebx+8],eax
-    mov     [ecx+ebx+12],eax
-    jmp     .loopx_end
-..@cross1
-    mov     ecx,[w2] 
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     [edi],edx
-    mov     [edi+4],edx
-    mov     [edi+8],edx
-    mov     [edi+12],edx
-    mov     ebx,[ebp+dstpitch]
-    AUXADDRESS
-    mov     [edi],edx
-    mov     [edi+4],edx
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],eax
-    jmp     .loopx_end
-..@cross2
-    mov     ecx,[w4]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],edx
-    mov     [edi+4],eax
-    mov     [edi+ebx],edx
-    mov     [edi+ebx+4],eax
-    jmp     .loopx_end
-..@cross4
-    mov     ecx,[w6]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],eax
-    mov     [edi+4],edx
-    mov     [edi+ebx],eax
-    mov     [edi+ebx+4],edx
-    jmp     .loopx_end
-..@cross8
-    mov     ecx,[w8]
-    mov     edx,eax
-    shl     edx,2
-    add     edx,[ebx+ecx*4]
-    sub     edx,eax
-    shr     edx,2
-    mov     ebx,[ebp+dstpitch]
-    mov     [edi],eax
-    mov     [edi+4],eax
-    mov     [edi+ebx],edx
-    mov     [edi+ebx+4],edx
-    jmp     .loopx_end
-..@crossN
-    mov     edx,[w2]
-    mov     ecx,[ebx+edx*4]
-    mov     [c2],ecx
-    mov     edx,[w4]
-    mov     ecx,[ebx+edx*4]
-    mov     [c4],ecx
-    mov     edx,[w6]
-    mov     ecx,[ebx+edx*4]
-    mov     [c6],ecx
-    mov     edx,[w8]
-    mov     ecx,[ebx+edx*4]
-    mov     [c8],ecx
-    mov     ebx,[ebp+dstpitch]
-    jmp     ..@flag0
-
-.loopx_end
-    add     esi,2
-    add     edi,16
-    dec     dword[xcounter]
-    jle     .xres_2
-    jmp     .loopx
-.xres_2
-    ; x=Xres-2 - special case
-    jl      .xres_1
-    mov     ebx,[prevline]
-    movq    mm5,[esi+ebx-4]
-    movq    mm6,[esi-4]
-    mov     ebx,[nextline]
-    movq    mm7,[esi+ebx-4]
-    psrlq   mm5,16
-    psrlq   mm6,16
-    psrlq   mm7,16
-    movd    eax,mm5
-    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      .nexty
-    ; x=Xres-1 - special case
-    mov     ebx,[prevline]
-    movq    mm5,[esi+ebx-6]
-    movq    mm6,[esi-6]
-    mov     ebx,[nextline]
-    movq    mm7,[esi+ebx-6]
-    psrlq   mm5,32
-    psrlq   mm6,32
-    psrlq   mm7,32
-    movd    eax,mm5
-    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
-.nexty
-    add     edi,ebx
-    add     edi,ebx
-    add     edi,ebx
-    add     esi,[ebp+srcpitch]
-    dec     dword[linesleft]
-    jz      .fin
-    mov     ebx,[ebp+Xres]
-    shl     ebx,1
-    cmp     dword[linesleft],1
-    je      .lastline
-    mov     dword[nextline],ebx
-    neg     ebx
-    mov     dword[prevline],ebx
-    jmp     .loopy
-.lastline
-    mov     dword[nextline],0
-    neg     ebx
-    mov     dword[prevline],ebx
-    jmp     .loopy
-.fin
-    emms
-    popad
-    mov esp,ebp
-    pop ebp
-    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
-
-
index 10e69b61995be440a402866741af254cc39439ee..79b1775ceeac9bac1d096db400958de6d4bfb739 100755 (executable)
 #define IDC_MAPDRIVES                   1507
 #define IDC_CPUTEXT                     1508
 #define IDC_MAPDRIVES_NET               1508
+#define IDC_RESTARTEMU                  1508
 #define IDC_SWAP                        1509
 #define IDC_CACHETEXT                   1509
 #define IDC_MAPDRIVES_CD                1509
index 10e69b61995be440a402866741af254cc39439ee..79b1775ceeac9bac1d096db400958de6d4bfb739 100755 (executable)
 #define IDC_MAPDRIVES                   1507
 #define IDC_CPUTEXT                     1508
 #define IDC_MAPDRIVES_NET               1508
+#define IDC_RESTARTEMU                  1508
 #define IDC_SWAP                        1509
 #define IDC_CACHETEXT                   1509
 #define IDC_MAPDRIVES_CD                1509
index 8cc71b975ccbc6ca3b0f69b3b0866c13c90aed96..d98e6202de0b775b5a93ca44f39625fd52f0eee0 100755 (executable)
@@ -725,13 +725,14 @@ CAPTION "WinUAE Properties"
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
     GROUPBOX        "",IDC_PANEL_FRAME,112,4,303,247,NOT WS_VISIBLE\r
-    CONTROL         "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_NOSCROLL | WS_BORDER | WS_TABSTOP,5,5,101,248,WS_EX_CLIENTEDGE\r
+    CONTROL         "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_NOSCROLL | WS_BORDER | WS_HSCROLL | WS_TABSTOP,5,5,101,248,WS_EX_CLIENTEDGE\r
     GROUPBOX        "",IDC_PANEL_FRAME_OUTER,110,2,307,251\r
     PUSHBUTTON      "Reset",IDC_RESETAMIGA,6,259,47,14\r
     PUSHBUTTON      "Quit",IDC_QUITEMU,57,259,47,14\r
     DEFPUSHBUTTON   "OK",IDOK,260,259,50,14\r
     PUSHBUTTON      "Cancel",IDCANCEL,313,259,50,14\r
     PUSHBUTTON      "Help",IDHELP,366,259,50,14,WS_DISABLED\r
+    PUSHBUTTON      "Restart",IDC_RESTARTEMU,109,259,47,14,NOT WS_VISIBLE\r
 END\r
 \r
 IDD_PATHS DIALOGEX 0, 0, 300, 237\r
index ce4dd69a090c310b2de1a8c54b09160e0caaff88..7cf6ce51bcd716cd63354f60818b26880305a885 100755 (executable)
 
 /* Scaler (except Scale2x) code borrowed from ScummVM project */
 
-#include "filter.h"
+#include "sysconfig.h"
+#include "sysdeps.h"
+
+#include "gfxfilter.h"
 
 static uint32 colorMask;
 static uint32 lowPixelMask;
@@ -1498,6 +1501,8 @@ void AdMame2x32(u8 *srcPtr, u32 srcPitch, /* u8 deltaPtr, */
 unsigned int LUT16to32[65536];
 unsigned int RGBtoYUV[65536];
 
+#define swap16(x) (((x >> 24) & 0x000000ff) | ((x >> 8) & 0x0000ff00) | ((x << 8) & 0x00ff0000) | ((x << 16) & 0xff000000))
+
 void hq_init (int rb, int gb, int bb, int rs, int gs, int bs)
 {
     int i, j, k, r, g, b, Y, u, v;
index e10c8df5cf92f664c815b7fe8ff9351f5f25f120..ca63b0cee723a9c8a98b40d4ea0ccaad8477c105 100755 (executable)
@@ -611,7 +611,7 @@ static void winuae_active (HWND hWnd, int minimized)
     inputdevice_acquire ();
     wait_keyrelease ();
     inputdevice_acquire ();
-    if (isfullscreen() > 0)
+    if (isfullscreen() > 0 && !gui_active)
        setmouseactive (1);
     manual_palette_refresh_needed = 1;
 
@@ -1005,8 +1005,10 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
            if(SHGetPathFromIDList((struct _ITEMIDLIST *)(shns->dwItem1), path)) {
                int inserted = lParam == SHCNE_MEDIAINSERTED ? 1 : 0;
                write_log("Shell Notification %d '%s'\n", inserted, path);
-               if ((inserted && CheckRM (path)) || !inserted)
-                   filesys_media_change (path, inserted);
+               if (!win32_hardfile_media_change ()) {  
+                   if ((inserted && CheckRM (path)) || !inserted)
+                       filesys_media_change (path, inserted);
+               }
            }
        }
     }
@@ -1042,9 +1044,11 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
     #endif
                                win32_aspi_media_change (drive, inserted);
                            }
-                           if (currprefs.win32_automount_removable && (type == DRIVE_REMOVABLE || type == DRIVE_CDROM || !inserted)) {
-                               if ((inserted && CheckRM (drvname)) || !inserted)
-                                   filesys_media_change (drvname, inserted);
+                           if (type == DRIVE_REMOVABLE || type == DRIVE_CDROM || !inserted) {
+                               if (!win32_hardfile_media_change ()) {
+                                   if ((inserted && CheckRM (drvname)) || !inserted)
+                                       filesys_media_change (drvname, inserted);
+                               }
                            }
                        }
                    }
@@ -3291,7 +3295,7 @@ void addnotifications (HWND hwnd, int remove)
        if (ret > 0 && pSHChangeNotifyDeregister)
            pSHChangeNotifyDeregister (ret);
     } else {
-       if(currprefs.win32_automount_removable && pSHChangeNotifyRegister && SHGetSpecialFolderLocation(hwnd, CSIDL_DESKTOP, &ppidl) == NOERROR) {
+       if(pSHChangeNotifyRegister && SHGetSpecialFolderLocation(hwnd, CSIDL_DESKTOP, &ppidl) == NOERROR) {
            SHChangeNotifyEntry shCNE;
            shCNE.pidl = ppidl;
            shCNE.fRecursive = TRUE;
index 8fac52085d50c769ccc2678e285acf62bfb060d1..62d55b558e5bcbc7271b3914ec48ca054740c940 100755 (executable)
@@ -15,9 +15,9 @@
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEBETA 5
+#define WINUAEBETA 6
 #define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2007, 9, 8)
+#define WINUAEDATE MAKEBD(2007, 9, 12)
 #define WINUAEEXTRA ""
 #define WINUAEREV ""
 
@@ -108,6 +108,7 @@ extern int dinput_winmouse (void);
 extern int dinput_winmousemode (void);
 
 void addnotifications (HWND hwnd, int remove);
+int win32_hardfile_media_change (void);
 extern int CheckRM(char *DriveName);
 void systray (HWND hwnd, int remove);
 void systraymenu (HWND hwnd);
index 3e81509115efc64fd06a3f7e07dcc69cede1d92a..3ba0eb248632126b4b40f9f84ca03a1afa771e36 100755 (executable)
@@ -23,7 +23,7 @@ struct uae_filter uaefilters[] =
 
     { UAE_FILTER_SCALE2X, 0, "Scale2X", "scale2x", 0, 0, UAE_FILTER_MODE_16_16 | UAE_FILTER_MODE_32_32, 0, 0 },
 
-//    { UAE_FILTER_HQ, 0, "hq", "hq", 0, 0, UAE_FILTER_MODE_16_32, UAE_FILTER_MODE_16_32, UAE_FILTER_MODE_16_32 },
+    { UAE_FILTER_HQ, 0, "hq2x", "hqx", 0, 0, UAE_FILTER_MODE_16_16 | UAE_FILTER_MODE_16_32, 0, 0 },
 
     { UAE_FILTER_SUPEREAGLE, 0, "SuperEagle", "supereagle", 0, 0, UAE_FILTER_MODE_16_16, 0, 0 },
 
@@ -33,7 +33,6 @@ struct uae_filter uaefilters[] =
 
     { UAE_FILTER_PAL, 1, "PAL", "pal", 0, UAE_FILTER_MODE_16_16 | UAE_FILTER_MODE_32_32, 0, 0, 0 },
 
-
     { 0 }
 };
 
@@ -42,6 +41,7 @@ static int dst_width, dst_height, amiga_width, amiga_height, amiga_depth, dst_de
 uae_u8 *bufmem_ptr;
 int bufmem_width, bufmem_height;
 static int tempsurf;
+static uae_u8 *tempsurf2, *tempsurf3;
 
 void S2X_configure (int rb, int gb, int bb, int rs, int gs, int bs)
 {
@@ -99,6 +99,11 @@ void S2X_init (int dw, int dh, int aw, int ah, int mult, int ad, int dd)
        write_log ("DDRAW: failed to create temp surface\n%s\n", DXError (ddrval));
        tempsurf = 0;
     }
+
+    if (usedfilter->type == UAE_FILTER_HQ) {
+       tempsurf2 = xmalloc (amiga_width * amiga_height * (amiga_depth / 8));
+       tempsurf3 = xmalloc (amiga_width * amiga_height * (dst_depth / 8) * 4);
+    }
 }
 
 void S2X_render (void)
@@ -112,10 +117,10 @@ void S2X_render (void)
     DDSURFACEDESC2 desc;
 
     sptr = gfxvidinfo.bufmem;
-    v = (dst_width - amiga_width) / 2;
+    v = (dst_width - amiga_width * scale) / 2;
     aw += v;
     sptr -= v * (amiga_depth / 8);
-    v = (dst_height - amiga_height) / 2;
+    v = (dst_height - amiga_height * scale) / 2;
     ah += v;
     sptr -= v * gfxvidinfo.rowbytes;
 
@@ -221,17 +226,36 @@ void S2X_render (void)
            ok = 1;
        }
 
-#if 0
     } else if (usedfilter->type == UAE_FILTER_HQ) { /* 32/2X+3X+4X */
 
-       int hqsrcpitch = gfxvidinfo.rowbytes - aw * amiga_depth / 8;
-       int hqdstpitch = pitch - aw * scale * dst_depth / 8;
-       int hqdstpitch2 = pitch * scale - aw * scale * dst_depth / 8;
-       if (scale == 2) {
-           if (amiga_depth == 16 && dst_depth == 32) {
-               hq2x_32 (sptr, dptr, aw, ah, hqdstpitch, hqsrcpitch, hqdstpitch2);
-               ok = 1;
+       if (tempsurf2) {
+           /* Aaaaaaaarghhhghgh.. */
+           uae_u8 *sptr2 = tempsurf3;
+           uae_u8 *dptr2 = tempsurf2;
+           int i;
+           for (i = 0; i < ah; i++) {
+               int w = aw * (amiga_depth / 8);
+               memcpy (dptr2, sptr, w);
+               dptr2 += w;
+               sptr += gfxvidinfo.rowbytes;
            }
+           if (scale == 2) {
+               if (amiga_depth == 16 && dst_depth == 32) {
+                   hq2x_32 (tempsurf2, tempsurf3, aw, ah, aw * scale * 4);
+                   ok = 1;
+               } else if (amiga_depth == 16 && dst_depth == 16) {
+                   hq2x_16 (tempsurf2, tempsurf3, aw, ah, aw * scale * 2);
+                   ok = 1;
+               }
+           }
+           for (i = 0; i < ah * scale; i++) {
+               int w = aw * scale * (dst_depth / 8);
+               memcpy (dptr, sptr2, w);
+               sptr2 += w;
+               dptr += pitch;
+           }
+       }
+#if 0
        } else if (scale == 3) {
            if (amiga_depth == 16 && dst_depth == 16) {
                hq3x_16 (sptr, dptr, aw, ah, hqdstpitch, hqsrcpitch, hqdstpitch2);
@@ -245,8 +269,8 @@ void S2X_render (void)
                hq4x_32 (sptr, dptr, aw, ah, hqdstpitch, hqsrcpitch, hqdstpitch2);
                ok = 1;
            }
-       }
 #endif
+
     } else if (usedfilter->type == UAE_FILTER_SUPEREAGLE) { /* 16/2X */
 
        if (scale == 2 && amiga_depth == 16 && dst_depth == 16) {
index 18a515a929bc0436e4c94d45834c54e2584531d8..c95a258190c943d3220aa30b93b3c178eac1723b 100755 (executable)
@@ -552,13 +552,15 @@ BOOL CALLBACK displaysCallback (GUID *guid, LPSTR desc, LPSTR name, LPVOID ctx,
 {
     struct MultiDisplay *md = Displays;
     MONITORINFOEX lpmi;
+    char tmp[200];
 
     while (md->name) {
        if (md - Displays >= MAX_DISPLAYS)
            return 0;
        md++;
     }
-    md->name = my_strdup (desc);
+    sprintf (tmp, "%d: %s", md - Displays, desc);
+    md->name = my_strdup (tmp);
     if (guid == 0) {
        POINT pt = { 0, 0 };
        md->primary = 1;
@@ -612,6 +614,7 @@ void sortdisplays (void)
     struct MultiDisplay *md1, *md2, tmp;
     int i;
 
+#if 0
     md1 = Displays;
     while (md1->name) {
        md2 = md1 + 1;
@@ -625,6 +628,7 @@ void sortdisplays (void)
        }
        md1++;
     }
+#endif
     md1 = Displays;
     while (md1->name) {
        DisplayModes = md1->DisplayModes = xmalloc (sizeof (struct PicassoResolution) * MAX_PICASSO_MODES);
@@ -1352,7 +1356,7 @@ void init_colors (void)
        }
     }
     if (currentmode->current_depth > 8) {
-       if (!(currentmode->flags & DM_OPENGL|DM_D3D)) {
+       if (!(currentmode->flags & (DM_OPENGL|DM_D3D))) {
            if (currentmode->current_depth != currentmode->native_depth) {
                if (currentmode->current_depth == 16) {
                    red_bits = 5; green_bits = 6; blue_bits = 5;
index 20296667ed79d4a0c96ea197218421641d0fb4cf..932dcadbc40e1cd61230c77d96a836d2eab056e4 100755 (executable)
@@ -2064,10 +2064,14 @@ void InitializeListView (HWND hDlg)
                strcpy (size_str, "n/a");
                sprintf (bootpri_str, "%d", uci->bootpri);
            }
+           if (!mi.ismedia) {
+               strcpy (blocksize_str, "n/a");
+               strcpy (size_str, "n/a");
+           }
            WIN32GUI_LoadUIString (uci->readonly ? IDS_NO : IDS_YES, readwrite_str, sizeof (readwrite_str));
 
            lvstruct.mask     = LVIF_TEXT | LVIF_PARAM;
-           lvstruct.pszText  = nosize ? "X" : (mi.ismounted ? "*" : " ");
+           lvstruct.pszText  = mi.ismedia == 0 ? "E" : (nosize ? "X" : (mi.ismounted ? "*" : " "));
            if (uci->controller)
                lvstruct.pszText = " ";
            lvstruct.lParam   = 0;
@@ -9762,6 +9766,7 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP
                WIN32GUI_LoadUIString (IDS_STARTEMULATION, tmp, sizeof (tmp));
                SetWindowText (GetDlgItem (guiDlg, IDOK), tmp);
            }
+           ShowWindow (GetDlgItem(guiDlg, IDC_RESTARTEMU), full_property_sheet ? SW_HIDE : SW_SHOW);
            centerWindow (hDlg);
            createTreeView (hDlg, currentpage);
            updatePanel (hDlg, currentpage);
@@ -9806,6 +9811,10 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP
                    uae_quit ();
                    SendMessage (hDlg, WM_COMMAND, IDCANCEL, 0);
                    return TRUE;
+               case IDC_RESTARTEMU:
+                   uae_restart (-1, NULL);
+                   exit_gui(1);
+                   return TRUE;
                case IDHELP:
                    if (pHtmlHelp && ppage[currentpage].help)
                        HtmlHelp (NULL, help_file, HH_DISPLAY_TOPIC, ppage[currentpage].help);
index c1b3f3513d91c27a323cf34844c358d3252d726b..ca425e2d5fee4fe0a86ca2dbdc5b32e5d6d49add 100755 (executable)
                        RelativePath="..\resources\drive_startup.wav"
                        >
                </File>
+               <File
+                       RelativePath="..\hq2x16.obj"
+                       >
+               </File>
+               <File
+                       RelativePath="..\hq2x32.obj"
+                       >
+               </File>
                <File
                        RelativePath="..\resources\resource"
                        >
index fcb5712ca7f8f58d162a11dc361df15bbb3e6dd4..27bd0fea4489bdc3e58566ab26b93a97347f6882 100755 (executable)
                        >
                </File>
                <File
-                       RelativePath="..\resources\resource"
+                       RelativePath="..\hq2x16.obj"
+                       >
+               </File>
+               <File
+                       RelativePath="..\hq2x32.obj"
                        >
                </File>
                <File
index b6744129f6c82d8bddd33d956386788d7d377f50..5421d9b3e2be4a364928aa02f39064c12349b02b 100755 (executable)
@@ -1,4 +1,38 @@
 
+Beta 6: (DO NOT USE OLDER BETAS, they are too broken)
+
+- real harddrive support improvements:
+  - empty drives are now listed in "Add Harddrive" GUI
+  - uaehf.device media change command support (CMD_ADDCHANGEINT,
+    CMD_REMCHANGEINT and CMD_CHANGESTATE are not no-ops anymore)
+  - drive parameters (includes size) is re-detected every time new
+    media is inserted
+  - automount on the fly but only if configured using "Add Harddrive"
+    (drive was empty or missing when emulation was started)
+    No RDB parsing.
+  - do not automount as a directory filesystem on the fly if drive is
+    in "Add Harddrive" list (for example: FATxx formatted zip disk/HD
+    mounted using Amiga-side fat filesystem driver)
+- configured directory drives always support automount (even if
+  "automount removable drives" is not checked). Also keep original
+  configured volume name. (do not replace with real volume label)
+- harddrive safety check slightly relaxed, do not complain if drive
+  is inserted on the fly and only complain once.
+- 'E' in harddrive panel means drive is mounted but empty
+- KS 1.3 directory filesystem WB HD icons appear again (instead of
+  hiding somewhere and corrupting memory)
+- KS 1.3 directory filesystem automount support
+- added "Restart" (better names?) button that closes running emulation
+  and returns back to GUI without changing current configuration
+- do not hide mouse pointer when GUI is active in fullscreen mode
+- ACTION_EXAMINE_ALL 2xbug fix. If last directory entry was filtered
+  with eac_MatchString/eac_MatchFunc, previous eac_Next was not
+  cleared (broke monitor driver loading if last dir entry was *.info
+  or vgaonly). eac_MatchString/eac_MatchFunc filtering didn't work
+  correctly, calculated number of bytes to copy in register D0, used
+  D1 in main copy loop... DO NOT USE OLDER BETAS.
+- hq2x filter support. I hope someone is happy now.
+- [still nothing done with bsdsocket problem, FS problems first]
 
 Beta 5:
 
@@ -20,6 +54,8 @@ Beta 5:
 - better CD32 audio end detection accuracy, last 1s was cut previously
 - ["bsdsocket breaks after reset if it was initialized before reset"
   will be fixed soon]
+- [uaehf.device media changes may be implemented before next official
+  release but full support will be done later]
 
 Beta 4: