]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add SSE4.1 MPSADBW for x86 32-bit
authorAlexandra Hájková <ahajkova@redhat.com>
Wed, 15 Apr 2026 15:42:38 +0000 (11:42 -0400)
committerMark Wielaard <mark@klomp.org>
Fri, 17 Apr 2026 19:36:55 +0000 (21:36 +0200)
Move the MPSADBW computation helper and IR builder from
guest_amd64_helpers.c and guest_amd64_toIR.c into a new
header guest_generic_helpers.h and guest_generic_sse.h,
so the helpers could be shared between x86 and amd64
implementaions.

Move MPSADBW tests into the shared sse4-common.h so they are
also exercised on x86.

BZ: https://bugs.kde.org/show_bug.cgi?id=518216

13 files changed:
Makefile.vex.am
NEWS
VEX/priv/guest_amd64_defs.h
VEX/priv/guest_amd64_helpers.c
VEX/priv/guest_amd64_toIR.c
VEX/priv/guest_generic_helpers.h [new file with mode: 0644]
VEX/priv/guest_generic_sse.h
VEX/priv/guest_x86_helpers.c
VEX/priv/guest_x86_toIR.c
none/tests/amd64/sse4-64.c
none/tests/sse4-common.h
none/tests/x86/sse4-x86.c
none/tests/x86/sse4-x86.stdout.exp

index fc496d22e2d6b9bbf152553430728b5f7b446d7b..ca50e0df2e47478a69b1551fc91fec90b134395a 100644 (file)
@@ -42,6 +42,7 @@ noinst_HEADERS = \
        priv/guest_generic_bb_to_IR.h \
        priv/guest_generic_x87.h \
        priv/guest_generic_sse.h \
+       priv/guest_generic_helpers.h \
        priv/guest_x86_defs.h \
        priv/guest_amd64_defs.h \
        priv/guest_ppc_defs.h \
diff --git a/NEWS b/NEWS
index 26454708ae9b1d00959493062ddaac8fb1f23240..f6dfb5d7b00b7db6b2a85c5e21640ec2b3859410 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -133,6 +133,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 517697  Implement CLRSSONSTACK and SETUJMPBUF handling on Solaris.
 517748  Add ability to redirect global functions to Darwin
 517840  Add PTEST SSE4.1 support for x86
+518216  Add SSE4.1 MPSADBW instruction support for x86 32 bit
 518076  FreeBSD: add syscall wrapper for renameat2
 518078  Configure should accept names for GDB other than "gdb"
 518159  pth_once issues on Darwin
index 35c74dcb83b70251236843950e58e7ec014426ed..0937a8607f838f506a5738645075145a1d774cd4 100644 (file)
@@ -146,10 +146,6 @@ extern ULong amd64g_calc_crc32w ( ULong crcIn, ULong w );
 extern ULong amd64g_calc_crc32l ( ULong crcIn, ULong l );
 extern ULong amd64g_calc_crc32q ( ULong crcIn, ULong q );
 
-extern ULong amd64g_calc_mpsadbw ( ULong sHi, ULong sLo,
-                                   ULong dHi, ULong dLo,
-                                   ULong imm_and_return_control_bit );
-
 extern ULong amd64g_calculate_pext  ( ULong, ULong );
 extern ULong amd64g_calculate_pdep  ( ULong, ULong );
 
index a5f5420b7c7dac7fee7d2d28b3938be5af24a5d6..69446a4130ca5ec7d6dc6fdc26847a357e5d94fc 100644 (file)
@@ -42,6 +42,7 @@
 #include "guest_generic_bb_to_IR.h"
 #include "guest_amd64_defs.h"
 #include "guest_generic_x87.h"
+#include "guest_generic_helpers.h"
 
 
 /* This file contains helper functions for amd64 guest code.
@@ -4036,10 +4037,6 @@ ULong amd64g_dirtyhelper_RDSEED ( void ) {
 /*--- Helpers for MMX/SSE/SSE2.                               ---*/
 /*---------------------------------------------------------------*/
 
-static inline UChar abdU8 ( UChar xx, UChar yy ) {
-   return toUChar(xx>yy ? xx-yy : yy-xx);
-}
-
 static inline ULong mk32x2 ( UInt w1, UInt w0 ) {
    return (((ULong)w1) << 32) | ((ULong)w0);
 }
@@ -4061,39 +4058,6 @@ static inline UShort sel16x4_0 ( ULong w64 ) {
    return toUShort(lo32);
 }
 
-static inline UChar sel8x8_7 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 24);
-}
-static inline UChar sel8x8_6 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 16);
-}
-static inline UChar sel8x8_5 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 8);
-}
-static inline UChar sel8x8_4 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 0);
-}
-static inline UChar sel8x8_3 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 24);
-}
-static inline UChar sel8x8_2 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 16);
-}
-static inline UChar sel8x8_1 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 8);
-}
-static inline UChar sel8x8_0 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 0);
-}
-
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 ULong amd64g_calculate_mmx_pmaddwd ( ULong xx, ULong yy )
 {
@@ -4175,60 +4139,6 @@ ULong amd64g_calc_crc32q ( ULong crcIn, ULong q )
    return amd64g_calc_crc32l(crc, q >> 32);
 }
 
-
-/* .. helper for next fn .. */
-static inline ULong sad_8x4 ( ULong xx, ULong yy )
-{
-   UInt t = 0;
-   t += (UInt)abdU8( sel8x8_3(xx), sel8x8_3(yy) );
-   t += (UInt)abdU8( sel8x8_2(xx), sel8x8_2(yy) );
-   t += (UInt)abdU8( sel8x8_1(xx), sel8x8_1(yy) );
-   t += (UInt)abdU8( sel8x8_0(xx), sel8x8_0(yy) );
-   return (ULong)t;
-}
-
-/* CALLED FROM GENERATED CODE: CLEAN HELPER */
-ULong amd64g_calc_mpsadbw ( ULong sHi, ULong sLo,
-                            ULong dHi, ULong dLo,
-                            ULong imm_and_return_control_bit )
-{
-   UInt imm8     = imm_and_return_control_bit & 7;
-   Bool calcHi   = (imm_and_return_control_bit >> 7) & 1;
-   UInt srcOffsL = imm8 & 3; /* src offs in 32-bit (L) chunks */
-   UInt dstOffsL = (imm8 >> 2) & 1; /* dst offs in ditto chunks */
-   /* For src we only need 32 bits, so get them into the
-      lower half of a 64 bit word. */
-   ULong src = ((srcOffsL & 2) ? sHi : sLo) >> (32 * (srcOffsL & 1));
-   /* For dst we need to get hold of 56 bits (7 bytes) from a total of
-      11 bytes.  If calculating the low part of the result, need bytes
-      dstOffsL * 4 + (0 .. 6); if calculating the high part,
-      dstOffsL * 4 + (4 .. 10). */
-   ULong dst;
-   /* dstOffL = 0, Lo  ->  0 .. 6
-      dstOffL = 1, Lo  ->  4 .. 10
-      dstOffL = 0, Hi  ->  4 .. 10
-      dstOffL = 1, Hi  ->  8 .. 14
-   */
-   if (calcHi && dstOffsL) {
-      /* 8 .. 14 */
-      dst = dHi & 0x00FFFFFFFFFFFFFFULL;
-   }
-   else if (!calcHi && !dstOffsL) {
-      /* 0 .. 6 */
-      dst = dLo & 0x00FFFFFFFFFFFFFFULL;
-   } 
-   else {
-      /* 4 .. 10 */
-      dst = (dLo >> 32) | ((dHi & 0x00FFFFFFULL) << 32);
-   }
-   ULong r0  = sad_8x4( dst >>  0, src );
-   ULong r1  = sad_8x4( dst >>  8, src );
-   ULong r2  = sad_8x4( dst >> 16, src );
-   ULong r3  = sad_8x4( dst >> 24, src );
-   ULong res = (r3 << 48) | (r2 << 32) | (r1 << 16) | r0;
-   return res;
-}
-
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 ULong amd64g_calculate_pext ( ULong src_masked, ULong mask )
 {
index ff31ad4ee387c896027fb33517206d1b3ed2eb34..c30bd173d3124fa68484e7d311ea9e11d26cc78e 100644 (file)
@@ -19027,60 +19027,6 @@ static IRTemp math_DPPS_128 ( IRTemp src_vec, IRTemp dst_vec, UInt imm8 )
    return res;
 }
 
-
-static IRTemp math_MPSADBW_128 ( IRTemp dst_vec, IRTemp src_vec, UInt imm8 )
-{
-   /* Mask out bits of the operands we don't need.  This isn't
-      strictly necessary, but it does ensure Memcheck doesn't
-      give us any false uninitialised value errors as a
-      result. */
-   UShort src_mask[4] = { 0x000F, 0x00F0, 0x0F00, 0xF000 };
-   UShort dst_mask[2] = { 0x07FF, 0x7FF0 };
-
-   IRTemp src_maskV = newTemp(Ity_V128);
-   IRTemp dst_maskV = newTemp(Ity_V128);
-   assign(src_maskV, mkV128( src_mask[ imm8 & 3 ] ));
-   assign(dst_maskV, mkV128( dst_mask[ (imm8 >> 2) & 1 ] ));
-
-   IRTemp src_masked = newTemp(Ity_V128);
-   IRTemp dst_masked = newTemp(Ity_V128);
-   assign(src_masked, binop(Iop_AndV128, mkexpr(src_vec), mkexpr(src_maskV)));
-   assign(dst_masked, binop(Iop_AndV128, mkexpr(dst_vec), mkexpr(dst_maskV)));
-
-   /* Generate 4 64 bit values that we can hand to a clean helper */
-   IRTemp sHi = newTemp(Ity_I64);
-   IRTemp sLo = newTemp(Ity_I64);
-   assign( sHi, unop(Iop_V128HIto64, mkexpr(src_masked)) );
-   assign( sLo, unop(Iop_V128to64,   mkexpr(src_masked)) );
-
-   IRTemp dHi = newTemp(Ity_I64);
-   IRTemp dLo = newTemp(Ity_I64);
-   assign( dHi, unop(Iop_V128HIto64, mkexpr(dst_masked)) );
-   assign( dLo, unop(Iop_V128to64,   mkexpr(dst_masked)) );
-
-   /* Compute halves of the result separately */
-   IRTemp resHi = newTemp(Ity_I64);
-   IRTemp resLo = newTemp(Ity_I64);
-
-   IRExpr** argsHi
-      = mkIRExprVec_5( mkexpr(sHi), mkexpr(sLo), mkexpr(dHi), mkexpr(dLo),
-                       mkU64( 0x80 | (imm8 & 7) ));
-   IRExpr** argsLo
-      = mkIRExprVec_5( mkexpr(sHi), mkexpr(sLo), mkexpr(dHi), mkexpr(dLo),
-                       mkU64( 0x00 | (imm8 & 7) ));
-
-   assign(resHi, mkIRExprCCall( Ity_I64, 0/*regparm*/,
-                                "amd64g_calc_mpsadbw",
-                                &amd64g_calc_mpsadbw, argsHi ));
-   assign(resLo, mkIRExprCCall( Ity_I64, 0/*regparm*/,
-                                "amd64g_calc_mpsadbw",
-                                &amd64g_calc_mpsadbw, argsLo ));
-
-   IRTemp res = newTemp(Ity_V128);
-   assign(res, binop(Iop_64HLtoV128, mkexpr(resHi), mkexpr(resLo)));
-   return res;
-}
-
 static Long dis_EXTRACTPS ( const VexAbiInfo* vbi, Prefix pfx,
                             Long delta, Bool isAvx )
 {
diff --git a/VEX/priv/guest_generic_helpers.h b/VEX/priv/guest_generic_helpers.h
new file mode 100644 (file)
index 0000000..76d04c2
--- /dev/null
@@ -0,0 +1,132 @@
+/*---------------------------------------------------------------*/
+/*--- begin                           guest_generic_helpers.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+     This file is part of Valgrind, a dynamic binary instrumentation
+     framework.
+
+     Copyright (C) 2026 Alexandra Hájková <ahajkova@redhat.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 3 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, see <http://www.gnu.org/licenses/>.
+
+     The GNU General Public License is contained in the file COPYING.
+*/
+
+/*   This file contains small helper functions shared between the x86
+     and amd64 guest front ends and their corresponding helper files.
+     These are pure C utilities (no VEX IR dependencies) used by both
+     IR-building code (via guest_generic_sse.h) and runtime clean
+     helpers (via guest_{amd64,x86}_helpers.c).
+*/
+
+#ifndef __VEX_GUEST_GENERIC_HELPERS_H
+#define __VEX_GUEST_GENERIC_HELPERS_H
+
+#include "libvex_basictypes.h"
+
+static inline UChar abdU8 ( UChar xx, UChar yy ) {
+   return toUChar(xx>yy ? xx-yy : yy-xx);
+}
+
+static inline UChar sel8x8_7 ( ULong w64 ) {
+   UInt hi32 = toUInt(w64 >> 32);
+   return toUChar(hi32 >> 24);
+}
+static inline UChar sel8x8_6 ( ULong w64 ) {
+   UInt hi32 = toUInt(w64 >> 32);
+   return toUChar(hi32 >> 16);
+}
+static inline UChar sel8x8_5 ( ULong w64 ) {
+   UInt hi32 = toUInt(w64 >> 32);
+   return toUChar(hi32 >> 8);
+}
+static inline UChar sel8x8_4 ( ULong w64 ) {
+   UInt hi32 = toUInt(w64 >> 32);
+   return toUChar(hi32 >> 0);
+}
+static inline UChar sel8x8_3 ( ULong w64 ) {
+   UInt lo32 = toUInt(w64);
+   return toUChar(lo32 >> 24);
+}
+static inline UChar sel8x8_2 ( ULong w64 ) {
+   UInt lo32 = toUInt(w64);
+   return toUChar(lo32 >> 16);
+}
+static inline UChar sel8x8_1 ( ULong w64 ) {
+   UInt lo32 = toUInt(w64);
+   return toUChar(lo32 >> 8);
+}
+static inline UChar sel8x8_0 ( ULong w64 ) {
+   UInt lo32 = toUInt(w64);
+   return toUChar(lo32 >> 0);
+}
+
+static inline ULong sad_8x4 ( ULong xx, ULong yy )
+{
+   UInt t = 0;
+   t += (UInt)abdU8( sel8x8_3(xx), sel8x8_3(yy) );
+   t += (UInt)abdU8( sel8x8_2(xx), sel8x8_2(yy) );
+   t += (UInt)abdU8( sel8x8_1(xx), sel8x8_1(yy) );
+   t += (UInt)abdU8( sel8x8_0(xx), sel8x8_0(yy) );
+   return (ULong)t;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+static inline ULong g_calc_mpsadbw ( ULong sHi, ULong sLo,
+                               ULong dHi, ULong dLo,
+                               ULong imm_and_return_control_bit )
+{
+   UInt imm8     = imm_and_return_control_bit & 7;
+   Bool calcHi   = (imm_and_return_control_bit >> 7) & 1;
+   UInt srcOffsL = imm8 & 3; /* src offs in 32-bit (L) chunks */
+   UInt dstOffsL = (imm8 >> 2) & 1; /* dst offs in ditto chunks */
+   /* For src we only need 32 bits, so get them into the
+      lower half of a 64 bit word. */
+   ULong src = ((srcOffsL & 2) ? sHi : sLo) >> (32 * (srcOffsL & 1));
+   /* For dst we need to get hold of 56 bits (7 bytes) from a total of
+      11 bytes.  If calculating the low part of the result, need bytes
+      dstOffsL * 4 + (0 .. 6); if calculating the high part,
+      dstOffsL * 4 + (4 .. 10). */
+   ULong dst;
+   /* dstOffL = 0, Lo  ->  0 .. 6
+      dstOffL = 1, Lo  ->  4 .. 10
+      dstOffL = 0, Hi  ->  4 .. 10
+      dstOffL = 1, Hi  ->  8 .. 14
+   */
+   if (calcHi && dstOffsL) {
+      /* 8 .. 14 */
+      dst = dHi & 0x00FFFFFFFFFFFFFFULL;
+   }
+   else if (!calcHi && !dstOffsL) {
+      /* 0 .. 6 */
+      dst = dLo & 0x00FFFFFFFFFFFFFFULL;
+   }
+   else {
+      /* 4 .. 10 */
+      dst = (dLo >> 32) | ((dHi & 0x00FFFFFFULL) << 32);
+   }
+   ULong r0  = sad_8x4( dst >>  0, src );
+   ULong r1  = sad_8x4( dst >>  8, src );
+   ULong r2  = sad_8x4( dst >> 16, src );
+   ULong r3  = sad_8x4( dst >> 24, src );
+   ULong res = (r3 << 48) | (r2 << 32) | (r1 << 16) | r0;
+   return res;
+}
+
+#endif /* ndef __VEX_GUEST_GENERIC_HELPERS_H */
+
+/*---------------------------------------------------------------*/
+/*--- end                             guest_generic_helpers.h ---*/
+/*---------------------------------------------------------------*/
index 6f000028502a0937f5eec481266677e65ba99802..a7e7d563e78c3c15b111e4730f6c67cfbaa4c0cc 100644 (file)
@@ -57,6 +57,7 @@
 #include "libvex_basictypes.h"
 #include "libvex_ir.h"
 #include "libvex.h"
+#include "guest_generic_helpers.h"
 
 
 /* BLENDPD 128-bit */
@@ -152,6 +153,59 @@ static inline IRTemp math_PBLENDW_128 ( IRTemp sV, IRTemp dV, UInt imm8 )
    return res;
 }
 
+static IRTemp math_MPSADBW_128 ( IRTemp dst_vec, IRTemp src_vec, UInt imm8 )
+{
+   /* Mask out bits of the operands we don't need.  This isn't
+      strictly necessary, but it does ensure Memcheck doesn't
+      give us any false uninitialised value errors as a
+      result. */
+   UShort src_mask[4] = { 0x000F, 0x00F0, 0x0F00, 0xF000 };
+   UShort dst_mask[2] = { 0x07FF, 0x7FF0 };
+
+   IRTemp src_maskV = newTemp(Ity_V128);
+   IRTemp dst_maskV = newTemp(Ity_V128);
+   assign(src_maskV, mkV128( src_mask[ imm8 & 3 ] ));
+   assign(dst_maskV, mkV128( dst_mask[ (imm8 >> 2) & 1 ] ));
+
+   IRTemp src_masked = newTemp(Ity_V128);
+   IRTemp dst_masked = newTemp(Ity_V128);
+   assign(src_masked, binop(Iop_AndV128, mkexpr(src_vec), mkexpr(src_maskV)));
+   assign(dst_masked, binop(Iop_AndV128, mkexpr(dst_vec), mkexpr(dst_maskV)));
+
+   /* Generate 4 64 bit values that we can hand to a clean helper */
+   IRTemp sHi = newTemp(Ity_I64);
+   IRTemp sLo = newTemp(Ity_I64);
+   assign( sHi, unop(Iop_V128HIto64, mkexpr(src_masked)) );
+   assign( sLo, unop(Iop_V128to64,   mkexpr(src_masked)) );
+
+   IRTemp dHi = newTemp(Ity_I64);
+   IRTemp dLo = newTemp(Ity_I64);
+   assign( dHi, unop(Iop_V128HIto64, mkexpr(dst_masked)) );
+   assign( dLo, unop(Iop_V128to64,   mkexpr(dst_masked)) );
+
+   /* Compute halves of the result separately */
+   IRTemp resHi = newTemp(Ity_I64);
+   IRTemp resLo = newTemp(Ity_I64);
+
+   IRExpr** argsHi
+      = mkIRExprVec_5( mkexpr(sHi), mkexpr(sLo), mkexpr(dHi), mkexpr(dLo),
+                       mkU64( 0x80 | (imm8 & 7) ));
+   IRExpr** argsLo
+      = mkIRExprVec_5( mkexpr(sHi), mkexpr(sLo), mkexpr(dHi), mkexpr(dLo),
+                       mkU64( 0x00 | (imm8 & 7) ));
+
+   assign(resHi, mkIRExprCCall( Ity_I64, 0/*regparm*/,
+         "g_calc_mpsadbw",
+         &g_calc_mpsadbw, argsHi ));
+   assign(resLo, mkIRExprCCall( Ity_I64, 0/*regparm*/,
+         "g_calc_mpsadbw",
+         &g_calc_mpsadbw, argsLo ));
+
+   IRTemp res = newTemp(Ity_V128);
+   assign(res, binop(Iop_64HLtoV128, mkexpr(resHi), mkexpr(resLo)));
+   return res;
+}
+
 #endif /* ndef __VEX_GUEST_GENERIC_SSE_H */
 
 /*---------------------------------------------------------------*/
index c51104be7e0d2297232ae526cd88d2675268f233..b511490837382c01589abb02fbad4e8efb81aa73 100644 (file)
@@ -42,6 +42,7 @@
 #include "guest_generic_bb_to_IR.h"
 #include "guest_x86_defs.h"
 #include "guest_generic_x87.h"
+#include "guest_generic_helpers.h"
 
 
 /* This file contains helper functions for x86 guest code.
@@ -2651,10 +2652,6 @@ void x86g_dirtyhelper_SxDT ( void *address, UInt op ) {
 /*--- Helpers for MMX/SSE/SSE2.                               ---*/
 /*---------------------------------------------------------------*/
 
-static inline UChar abdU8 ( UChar xx, UChar yy ) {
-   return toUChar(xx>yy ? xx-yy : yy-xx);
-}
-
 static inline ULong mk32x2 ( UInt w1, UInt w0 ) {
    return (((ULong)w1) << 32) | ((ULong)w0);
 }
@@ -2676,39 +2673,6 @@ static inline UShort sel16x4_0 ( ULong w64 ) {
    return toUShort(lo32);
 }
 
-static inline UChar sel8x8_7 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 24);
-}
-static inline UChar sel8x8_6 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 16);
-}
-static inline UChar sel8x8_5 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 8);
-}
-static inline UChar sel8x8_4 ( ULong w64 ) {
-   UInt hi32 = toUInt(w64 >> 32);
-   return toUChar(hi32 >> 0);
-}
-static inline UChar sel8x8_3 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 24);
-}
-static inline UChar sel8x8_2 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 16);
-}
-static inline UChar sel8x8_1 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 8);
-}
-static inline UChar sel8x8_0 ( ULong w64 ) {
-   UInt lo32 = toUInt(w64);
-   return toUChar(lo32 >> 0);
-}
-
 /* CALLED FROM GENERATED CODE: CLEAN HELPER */
 ULong x86g_calculate_mmx_pmaddwd ( ULong xx, ULong yy )
 {
index 072bbd94adeaa09bae070426a2a44e88c8fbe8cd..27305c2bd26213cfa41931e09e2652bc0ab8c951 100644 (file)
@@ -13206,6 +13206,40 @@ DisResult disInstr_X86_WRK (
       goto decode_success;
    }
 
+   /* 66 0F 3A 42 /r ib MPSADBW xmm1, xmm2/m128, imm8
+      Multiple Packed Sums of Absolute Difference */
+   if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x42) {
+       Int    imm8;
+       IRTemp src_vec = newTemp(Ity_V128);
+       IRTemp dst_vec = newTemp(Ity_V128);
+       modrm          = insn[3];
+       UInt   rG      = gregOfRM(modrm);
+
+       assign( dst_vec, getXMMReg(rG) );
+
+       /* in a case of delta + 3, +3 skips the three opcode bytes (0F 3A 42)
+          that insn[] already matched */
+       if ( epartIsReg( modrm ) ) {
+         UInt rE = eregOfRM(modrm);
+
+         imm8 = (Int)(insn[3+1]);
+         assign( src_vec, getXMMReg(rE) );
+         delta += 3+1+1;
+         DIP( "mpsadbw $%d, %s,%s\n", imm8,
+             nameXMMReg(rE), nameXMMReg(rG) );
+       } else {
+         addr = disAMode( &alen, sorb, delta + 3, dis_buf);
+         gen_SEGV_if_not_16_aligned( addr );
+         assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
+         imm8 = (Int)(insn[3+alen]);
+         delta += 3+alen+1;
+         DIP( "mpsadbw $%d, %s,%s\n", imm8, dis_buf, nameXMMReg(rG) );
+       }
+
+       putXMMReg( rG, mkexpr( math_MPSADBW_128(dst_vec, src_vec, imm8) ) );
+       goto decode_success;
+     }
+
    /* 66 0F 3A 0D /r ib = BLENDPD */
    if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x0D) {
      decode_sse4_blend_imm(&delta, insn, "blendpd", math_BLENDPD_128, sorb);
index baf3a77bd4a525632797a00931043d6dbde1d030..c341c282ebda4cca7889962ddb59ae01c7d7b9c3 100644 (file)
@@ -962,24 +962,6 @@ void test_INSERTPS ( void )
    }
 }
 
-void test_MPSADBW ( void )
-{
-   V128 src, dst;
-   Int i;
-   for (i = 0; i < 50; i++) {
-      randV128(&src);
-      randV128(&dst);
-      DO_imm_mandr_r("mpsadbw", 0, src, dst);
-      DO_imm_mandr_r("mpsadbw", 1, src, dst);
-      DO_imm_mandr_r("mpsadbw", 2, src, dst);
-      DO_imm_mandr_r("mpsadbw", 3, src, dst);
-      DO_imm_mandr_r("mpsadbw", 4, src, dst);
-      DO_imm_mandr_r("mpsadbw", 5, src, dst);
-      DO_imm_mandr_r("mpsadbw", 6, src, dst);
-      DO_imm_mandr_r("mpsadbw", 7, src, dst);
-   }
-}
-
 void test_PACKUSDW ( void )
 {
    V128 src, dst;
index c3848e410e6f2ac39ccf2635f16ed38d0fb80f4a..5727b65b4d409fa47e3b911d08385febc7fe9e11 100644 (file)
@@ -876,4 +876,23 @@ static inline void test_PCMPEQQ ( void )
    }
 }
 
+/* ------------ MPSADBW ------------ */
+static inline void test_MPSADBW ( void )
+{
+   V128 src, dst;
+   Int i;
+   for (i = 0; i < 50; i++) {
+      randV128(&src);
+      randV128(&dst);
+      DO_imm_mandr_r("mpsadbw", 0, src, dst);
+      DO_imm_mandr_r("mpsadbw", 1, src, dst);
+      DO_imm_mandr_r("mpsadbw", 2, src, dst);
+      DO_imm_mandr_r("mpsadbw", 3, src, dst);
+      DO_imm_mandr_r("mpsadbw", 4, src, dst);
+      DO_imm_mandr_r("mpsadbw", 5, src, dst);
+      DO_imm_mandr_r("mpsadbw", 6, src, dst);
+      DO_imm_mandr_r("mpsadbw", 7, src, dst);
+   }
+}
+
 #endif /* __SSE4_COMMON_H */
index 414d0cec1dc8aedd849411da907e78680e14a456..1ce441339386eafb3f01c68f2111c66c37e9a503 100644 (file)
@@ -164,6 +164,7 @@ int main(void)
    test_BLENDVPS();
    test_PTEST();
    test_PCMPEQQ();
+   test_MPSADBW();
 
    return 0;
 }
index a26fc429f323a0d20c687843ad110fb5535703b4..3c64dc93f589422d7762a2c3f7e5da43185c88f7 100644 (file)
@@ -1242,3 +1242,803 @@ r    pcmpeqq 913db0cc02f1b3c72ff97f68cd517cb9 263641f8552cb7a768bca55e8030eb32 0
 m    pcmpeqq 913db0cc02f1b3c72ff97f68cd517cb9 263641f8552cb7a768bca55e8030eb32 00000000000000000000000000000000
 r    pcmpeqq 850ae0642ddae0466041d5d9cb7738db 2af3bd4b509e6608a513cfe482162be8 00000000000000000000000000000000
 m    pcmpeqq 850ae0642ddae0466041d5d9cb7738db 2af3bd4b509e6608a513cfe482162be8 00000000000000000000000000000000
+r    mpsadbw $0 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 0132010300fb00c600d201f301ca00fe
+m    mpsadbw $0 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 0132010300fb00c600d201f301ca00fe
+r    mpsadbw $1 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 01660137019100fe01080267019000a6
+m    mpsadbw $1 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 01660137019100fe01080267019000a6
+r    mpsadbw $2 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00df00c400a8009700db01a00163014b
+m    mpsadbw $2 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00df00c400a8009700db01a00163014b
+r    mpsadbw $3 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 0162010d008f012400f0009b01c20200
+m    mpsadbw $3 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 0162010d008f012400f0009b01c20200
+r    mpsadbw $4 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 009700aa011901d10132010300fb00c6
+m    mpsadbw $4 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 009700aa011901d10132010300fb00c6
+r    mpsadbw $5 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00a1016c01c3020501660137019100fe
+m    mpsadbw $5 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00a1016c01c3020501660137019100fe
+r    mpsadbw $6 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00c400bb00ea017e00df00c400a80097
+m    mpsadbw $6 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 00c400bb00ea017e00df00c400a80097
+r    mpsadbw $7 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 01a900cc00f300f50162010d008f0124
+m    mpsadbw $7 6f8ae74d5f7960b4a01933ef595f6af1 91c94f65dfccc66f9e9f80c6e2047dea 01a900cc00f300f50162010d008f0124
+r    mpsadbw $0 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 00a1018f00cf01db0139016e024000a0
+m    mpsadbw $0 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 00a1018f00cf01db0139016e024000a0
+r    mpsadbw $1 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 019c017800de013001b8027500a90117
+m    mpsadbw $1 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 019c017800de013001b8027500a90117
+r    mpsadbw $2 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 00f7011d014b009f00b1019c01aa0166
+m    mpsadbw $2 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 00f7011d014b009f00b1019c01aa0166
+r    mpsadbw $3 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 0172026c01a20130010e0255020900c9
+m    mpsadbw $3 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 0172026c01a20130010e0255020900c9
+r    mpsadbw $4 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 01fb01410148014f00a1018f00cf01db
+m    mpsadbw $4 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 01fb01410148014f00a1018f00cf01db
+r    mpsadbw $5 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 0210016c011b004a019c017800de0130
+m    mpsadbw $5 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 0210016c011b004a019c017800de0130
+r    mpsadbw $6 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 012901c3019e011700f7011d014b009f
+m    mpsadbw $6 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 012901c3019e011700f7011d014b009f
+r    mpsadbw $7 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 01f401c401fd015e0172026c01a20130
+m    mpsadbw $7 ab09c2f3335970becb4d15989216cc28 b903f1b29f411487312d32f1bb069e61 01f401c401fd015e0172026c01a20130
+r    mpsadbw $0 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 0178009d0190011c0103011901300145
+m    mpsadbw $0 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 0178009d0190011c0103011901300145
+r    mpsadbw $1 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 00dc0179017a01a801b7021702300203
+m    mpsadbw $1 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 00dc0179017a01a801b7021702300203
+r    mpsadbw $2 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01a401c7017a00e600bd009f008800ab
+m    mpsadbw $2 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01a401c7017a00e600bd009f008800ab
+r    mpsadbw $3 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 016b00a0017d01210130019001a9017c
+m    mpsadbw $3 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 016b00a0017d01210130019001a9017c
+r    mpsadbw $4 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 0167004a011701450178009d0190011c
+m    mpsadbw $4 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 0167004a011701450178009d0190011c
+r    mpsadbw $5 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01250126013b015900dc0179017a01a8
+m    mpsadbw $5 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01250126013b015900dc0179017a01a8
+r    mpsadbw $6 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01b3018c013901cb01a401c7017a00e6
+m    mpsadbw $6 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 01b3018c013901cb01a401c7017a00e6
+r    mpsadbw $7 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 015400b70104010c016b00a0017d0121
+m    mpsadbw $7 95d26cc246074b10bda9f7bf92a71bac fcefa19f2c8a8cfd3989634f2a294a7c 015400b70104010c016b00a0017d0121
+r    mpsadbw $0 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 011001130101011d0191012e015300f3
+m    mpsadbw $0 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 011001130101011d0191012e015300f3
+r    mpsadbw $1 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 011800ff00f9016f0113009c015d00b7
+m    mpsadbw $1 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 011800ff00f9016f0113009c015d00b7
+r    mpsadbw $2 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 00ea0135015901a90177015a013900a1
+m    mpsadbw $2 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 00ea0135015901a90177015a013900a1
+r    mpsadbw $3 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 015e01110135014f009d018800db0167
+m    mpsadbw $3 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 015e01110135014f009d018800db0167
+r    mpsadbw $4 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 01a80117007f00ec011001130101011d
+m    mpsadbw $4 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 01a80117007f00ec011001130101011d
+r    mpsadbw $5 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 019200bd015b013a011800ff00f9016f
+m    mpsadbw $5 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 019200bd015b013a011800ff00f9016f
+r    mpsadbw $6 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 018e00e1008f009c00ea0135015901a9
+m    mpsadbw $6 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 018e00e1008f009c00ea0135015901a9
+r    mpsadbw $7 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 00c6015f01110136015e01110135014f
+m    mpsadbw $7 8932e026330d2e5552f8564f761e13a8 b8d75a9620326a7d927f8ecd4a783d65 00c6015f01110136015e01110135014f
+r    mpsadbw $0 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 013f01a3014c00e40100014800f800d6
+m    mpsadbw $0 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 013f01a3014c00e40100014800f800d6
+r    mpsadbw $1 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01650267009201be00f401c2009401b0
+m    mpsadbw $1 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01650267009201be00f401c2009401b0
+r    mpsadbw $2 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 00be0178018d00e1011301eb01b30095
+m    mpsadbw $2 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 00be0178018d00e1011301eb01b30095
+r    mpsadbw $3 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 0199009701a8017600dc01600204018c
+m    mpsadbw $3 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 0199009701a8017600dc01600204018c
+r    mpsadbw $4 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 015b019801bb0161013f01a3014c00e4
+m    mpsadbw $4 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 015b019801bb0161013f01a3014c00e4
+r    mpsadbw $5 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01310172013f01c101650267009201be
+m    mpsadbw $5 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01310172013f01c101650267009201be
+r    mpsadbw $6 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01e2023b029201be00be0178018d00e1
+m    mpsadbw $6 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01e2023b029201be00be0178018d00e1
+r    mpsadbw $7 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01c3017a0241020b0199009701a80176
+m    mpsadbw $7 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 01c3017a0241020b0199009701a80176
+r    mpsadbw $0 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 01da015200e7011f00fa016f01b000dc
+m    mpsadbw $0 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 01da015200e7011f00fa016f01b000dc
+r    mpsadbw $1 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00d7012101020130013f011c01750169
+m    mpsadbw $1 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00d7012101020130013f011c01750169
+r    mpsadbw $2 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 01c400a0017701530144028701c200a4
+m    mpsadbw $2 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 01c400a0017701530144028701c200a4
+r    mpsadbw $3 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 014501ed01aa01fc01c900c4023501e3
+m    mpsadbw $3 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 014501ed01aa01fc01c900c4023501e3
+r    mpsadbw $4 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 012a016800ce019401da015200e7011f
+m    mpsadbw $4 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 012a016800ce019401da015200e7011f
+r    mpsadbw $5 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00b100ff0101009500d7012101020130
+m    mpsadbw $5 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00b100ff0101009500d7012101020130
+r    mpsadbw $6 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 0232017a00f601f801c400a001770153
+m    mpsadbw $6 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 0232017a00f601f801c400a001770153
+r    mpsadbw $7 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00d101c301a900a3014501ed01aa01fc
+m    mpsadbw $7 ffe81c5e0d57fc6ad4a3775f58f0ecba 06ced856b4d04648a668c3da0fcbe652 00d101c301a900a3014501ed01aa01fc
+r    mpsadbw $0 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 015f01b101f1019f019001bb018b0199
+m    mpsadbw $0 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 015f01b101f1019f019001bb018b0199
+r    mpsadbw $1 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 01e200f001c001c600ed018a01e400e6
+m    mpsadbw $1 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 01e200f001c001c600ed018a01e400e6
+r    mpsadbw $2 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 01bf016d021d0111014c01e7014f0155
+m    mpsadbw $2 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 01bf016d021d0111014c01e7014f0155
+r    mpsadbw $3 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 00df02490243008d0246020d00370231
+m    mpsadbw $3 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 00df02490243008d0246020d00370231
+r    mpsadbw $4 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 015e019301bc01bd015f01b101f1019f
+m    mpsadbw $4 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 015e019301bc01bd015f01b101f1019f
+r    mpsadbw $5 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 00f700fa013b011a01e200f001c001c6
+m    mpsadbw $5 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 00f700fa013b011a01e200f001c001c6
+r    mpsadbw $6 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 0102011f0198013f01bf016d021d0111
+m    mpsadbw $6 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 0102011f0198013f01bf016d021d0111
+r    mpsadbw $7 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 011801a301be015d00df02490243008d
+m    mpsadbw $7 39d4db0931b25e927a9632b68f624628 527594f68adebded1af4c541ebe715af 011801a301be015d00df02490243008d
+r    mpsadbw $0 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 0145019d00eb019700d5021b00cc01d2
+m    mpsadbw $0 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 0145019d00eb019700d5021b00cc01d2
+r    mpsadbw $1 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00a400e60110012800fa017a00d90187
+m    mpsadbw $1 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00a400e60110012800fa017a00d90187
+r    mpsadbw $2 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00af00e1015f00bf013d006100f000ea
+m    mpsadbw $2 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 00af00e1015f00bf013d006100f000ea
+r    mpsadbw $3 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 01280158013001bc0102017c016100c3
+m    mpsadbw $3 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 01280158013001bc0102017c016100c3
+r    mpsadbw $4 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 016f010e016301550145019d00eb0197
+m    mpsadbw $4 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 016f010e016301550145019d00eb0197
+r    mpsadbw $5 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 009200e70116008a00a400e601100128
+m    mpsadbw $5 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 009200e70116008a00a400e601100128
+r    mpsadbw $6 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 012f0136011300c500af00e1015f00bf
+m    mpsadbw $6 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 012f0136011300c500af00e1015f00bf
+r    mpsadbw $7 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 01a60173018201a601280158013001bc
+m    mpsadbw $7 ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 01a60173018201a601280158013001bc
+r    mpsadbw $0 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 016e0232016c012b014e00fe01330154
+m    mpsadbw $0 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 016e0232016c012b014e00fe01330154
+r    mpsadbw $1 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01b40166023001d301d201c201590220
+m    mpsadbw $1 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01b40166023001d301d201c201590220
+r    mpsadbw $2 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01ab00fb01df018201c7017101540215
+m    mpsadbw $2 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01ab00fb01df018201c7017101540215
+r    mpsadbw $3 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01cd017f01810124011f014b00b00139
+m    mpsadbw $3 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 01cd017f01810124011f014b00b00139
+r    mpsadbw $4 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 018401bb018701ae016e0232016c012b
+m    mpsadbw $4 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 018401bb018701ae016e0232016c012b
+r    mpsadbw $5 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 013600b500d9020c01b40166023001d3
+m    mpsadbw $5 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 013600b500d9020c01b40166023001d3
+r    mpsadbw $6 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 017300a200d4020101ab00fb01df0182
+m    mpsadbw $6 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 017300a200d4020101ab00fb01df0182
+r    mpsadbw $7 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 015501960108012501cd017f01810124
+m    mpsadbw $7 764f859cf68f4679dab3699f129680a9 fc95f5d55c34e70e2034036b2540d210 015501960108012501cd017f01810124
+r    mpsadbw $0 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 00bf01d000ca00ee01c5016701e300a3
+m    mpsadbw $0 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 00bf01d000ca00ee01c5016701e300a3
+r    mpsadbw $1 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 01130192012c00d201fd013701a500f5
+m    mpsadbw $1 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 01130192012c00d201fd013701a500f5
+r    mpsadbw $2 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 011401a900eb015100c4013801f40136
+m    mpsadbw $2 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 011401a900eb015100c4013801f40136
+r    mpsadbw $3 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 014d00b600f400ce015100ff011d012b
+m    mpsadbw $3 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 014d00b600f400ce015100ff011d012b
+r    mpsadbw $4 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 00c0014600bb01be00bf01d000ca00ee
+m    mpsadbw $4 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 00c0014600bb01be00bf01d000ca00ee
+r    mpsadbw $5 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 010a0192010b020601130192012c00d2
+m    mpsadbw $5 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 010a0192010b020601130192012c00d2
+r    mpsadbw $6 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 0137014d014e012d011401a900eb0151
+m    mpsadbw $6 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 0137014d014e012d011401a900eb0151
+r    mpsadbw $7 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 014801360145015e014d00b600f400ce
+m    mpsadbw $7 32746a5ace2a448f4d76dd08966fd815 13a692ea909413e36b813705ba95d96d 014801360145015e014d00b600f400ce
+r    mpsadbw $0 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 018002490164016c01e000cc0180016c
+m    mpsadbw $0 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 018002490164016c01e000cc0180016c
+r    mpsadbw $1 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 0141013a020b014d0117019d00750149
+m    mpsadbw $1 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 0141013a020b014d0117019d00750149
+r    mpsadbw $2 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 0202028901c201000190010a014601aa
+m    mpsadbw $2 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 0202028901c201000190010a014601aa
+r    mpsadbw $3 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 017901b2006901cb01f100cf01b3014b
+m    mpsadbw $3 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 017901b2006901cb01f100cf01b3014b
+r    mpsadbw $4 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 00b201b7014101ac018002490164016c
+m    mpsadbw $4 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 00b201b7014101ac018002490164016c
+r    mpsadbw $5 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 01f500f200fa00e10141013a020b014d
+m    mpsadbw $5 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 01f500f200fa00e10141013a020b014d
+r    mpsadbw $6 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 01100159018901ec0202028901c20100
+m    mpsadbw $6 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 01100159018901ec0202028901c20100
+r    mpsadbw $7 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 00a9022401de0109017901b2006901cb
+m    mpsadbw $7 7c44fda2c4f3ed4e66c03150c383fd2d 27c81bff702749760afcca34c46a4acc 00a9022401de0109017901b2006901cb
+r    mpsadbw $0 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 01460101009401ce0163017a019600d8
+m    mpsadbw $0 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 01460101009401ce0163017a019600d8
+r    mpsadbw $1 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 01c600eb01860218009901a6017a00d4
+m    mpsadbw $1 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 01c600eb01860218009901a6017a00d4
+r    mpsadbw $2 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 00dc00bf00a0013400a70138015400d8
+m    mpsadbw $2 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 00dc00bf00a0013400a70138015400d8
+r    mpsadbw $3 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 0129018801eb009b01920189011d023d
+m    mpsadbw $3 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 0129018801eb009b01920189011d023d
+r    mpsadbw $4 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 015f00f0014e00eb01460101009401ce
+m    mpsadbw $4 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 015f00f0014e00eb01460101009401ce
+r    mpsadbw $5 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 010d010e018000df01c600eb01860218
+m    mpsadbw $5 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 010d010e018000df01c600eb01860218
+r    mpsadbw $6 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 008100580096008100dc00bf00a00134
+m    mpsadbw $6 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 008100580096008100dc00bf00a00134
+r    mpsadbw $7 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 017601570117017c0129018801eb009b
+m    mpsadbw $7 b00b3cdf75747e60035ee161b2ddaa1e 92478e7f987ac472db7137e460cce35a 017601570117017c0129018801eb009b
+r    mpsadbw $0 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 015e00f9012801a3019301ae011200d1
+m    mpsadbw $0 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 015e00f9012801a3019301ae011200d1
+r    mpsadbw $1 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 023501760229023a024601c3011f0124
+m    mpsadbw $1 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 023501760229023a024601c3011f0124
+r    mpsadbw $2 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 0184014d0186020101f1020c01960111
+m    mpsadbw $2 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 0184014d0186020101f1020c01960111
+r    mpsadbw $3 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 015b01cc020502800270028b022d01a8
+m    mpsadbw $3 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 015b01cc020502800270028b022d01a8
+r    mpsadbw $4 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 013a00bf01a2012a015e00f9012801a3
+m    mpsadbw $4 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 013a00bf01a2012a015e00f9012801a3
+r    mpsadbw $5 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 0241011e019b010f023501760229023a
+m    mpsadbw $5 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 0241011e019b010f023501760229023a
+r    mpsadbw $6 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 019001cf012e00ec0184014d01860201
+m    mpsadbw $6 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 019001cf012e00ec0184014d01860201
+r    mpsadbw $7 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 01f30266018b0125015b01cc02050280
+m    mpsadbw $7 2915227d7d3b3371fe1c6a2981899c14 b16fe6d6a518c184b9abfaffa9c65e42 01f30266018b0125015b01cc02050280
+r    mpsadbw $0 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00d700ba008d008800cf00bd00b5012e
+m    mpsadbw $0 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00d700ba008d008800cf00bd00b5012e
+r    mpsadbw $1 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00c7010a009d010200cd015100810136
+m    mpsadbw $1 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00c7010a009d010200cd015100810136
+r    mpsadbw $2 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00d00103010400f100fe012600820167
+m    mpsadbw $2 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00d00103010400f100fe012600820167
+r    mpsadbw $3 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 0138012b00ce010300b6011a00f2012b
+m    mpsadbw $3 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 0138012b00ce010300b6011a00f2012b
+r    mpsadbw $4 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00da010000c9004f00d700ba008d0088
+m    mpsadbw $4 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00da010000c9004f00d700ba008d0088
+r    mpsadbw $5 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 01880084012d00ab00c7010a009d0102
+m    mpsadbw $5 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 01880084012d00ab00c7010a009d0102
+r    mpsadbw $6 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00f9012d013a00e600d00103010400f1
+m    mpsadbw $6 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 00f9012d013a00e600d00103010400f1
+r    mpsadbw $7 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 01c50135013000f20138012b00ce0103
+m    mpsadbw $7 45aeabe876d3472e35c647934c948f3a e08c1f71338e7c577f778f72bc6577b1 01c50135013000f20138012b00ce0103
+r    mpsadbw $0 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 016a00e00117018400fb00e4015501f4
+m    mpsadbw $0 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 016a00e00117018400fb00e4015501f4
+r    mpsadbw $1 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 010001c2009d01d4015f00760187010c
+m    mpsadbw $1 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 010001c2009d01d4015f00760187010c
+r    mpsadbw $2 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 01ca024c01ab01ba01f301de01d700fa
+m    mpsadbw $2 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 01ca024c01ab01ba01f301de01d700fa
+r    mpsadbw $3 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 00d50183009c01990168006101480147
+m    mpsadbw $3 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 00d50183009c01990168006101480147
+r    mpsadbw $4 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 018401ad0213013f016a00e001170184
+m    mpsadbw $4 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 018401ad0213013f016a00e001170184
+r    mpsadbw $5 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 0100011901d50169010001c2009d01d4
+m    mpsadbw $5 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 0100011901d50169010001c2009d01d4
+r    mpsadbw $6 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 0180011500fd01a101ca024c01ab01ba
+m    mpsadbw $6 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 0180011500fd01a101ca024c01ab01ba
+r    mpsadbw $7 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 010900f201e2017200d50183009c0199
+m    mpsadbw $7 5e21d38dffc9f7438228f38b2e093fbc 7be936badd6630980aa27329b5b3ecd2 010900f201e2017200d50183009c0199
+r    mpsadbw $0 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 020c008802a5010b01f80157012200bb
+m    mpsadbw $0 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 020c008802a5010b01f80157012200bb
+r    mpsadbw $1 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 016d0249013e032c016f012202050166
+m    mpsadbw $1 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 016d0249013e032c016f012202050166
+r    mpsadbw $2 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01a801c401650171018e01bb01020099
+m    mpsadbw $2 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01a801c401650171018e01bb01020099
+r    mpsadbw $3 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 0241016d01bc0210016d018c0157004a
+m    mpsadbw $3 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 0241016d01bc0210016d018c0157004a
+r    mpsadbw $4 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 023201b701c10142020c008802a5010b
+m    mpsadbw $4 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 023201b701c10142020c008802a5010b
+r    mpsadbw $5 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01b3022a0276017f016d0249013e032c
+m    mpsadbw $5 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01b3022a0276017f016d0249013e032c
+r    mpsadbw $6 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01220183018d01e801a801c401650171
+m    mpsadbw $6 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01220183018d01e801a801c401650171
+r    mpsadbw $7 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01a7024a025401b90241016d01bc0210
+m    mpsadbw $7 d2bc96d6b1a87f5bc30eedfc43f567c8 ded3251e3f2e1bf337f62011aebf77d2 01a7024a025401b90241016d01bc0210
+r    mpsadbw $0 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 015400e4020b017d01a300ed017600b4
+m    mpsadbw $0 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 015400e4020b017d01a300ed017600b4
+r    mpsadbw $1 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 013b0151028a016a01680146015d008b
+m    mpsadbw $1 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 013b0151028a016a01680146015d008b
+r    mpsadbw $2 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 019102170068018601a6021801750279
+m    mpsadbw $2 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 019102170068018601a6021801750279
+r    mpsadbw $3 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 0269015b01cc019c02e2022801ed0135
+m    mpsadbw $3 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 0269015b01cc019c02e2022801ed0135
+r    mpsadbw $4 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 01c100e201950120015400e4020b017d
+m    mpsadbw $4 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 01c100e201950120015400e4020b017d
+r    mpsadbw $5 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 01a800fb0214014b013b0151028a016a
+m    mpsadbw $5 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 01a800fb0214014b013b0151028a016a
+r    mpsadbw $6 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 016202db00d201c10191021700680186
+m    mpsadbw $6 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 016202db00d201c10191021700680186
+r    mpsadbw $7 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 0232011701e400f30269015b01cc019c
+m    mpsadbw $7 fbc9f1302bfc1b23d243aed4a862c488 6597ea0af6727713e0401415c692d5dd 0232011701e400f30269015b01cc019c
+r    mpsadbw $0 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01b30141018b013e00b900a601640142
+m    mpsadbw $0 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01b30141018b013e00b900a601640142
+r    mpsadbw $1 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 006e01020104019501f4021301a101c1
+m    mpsadbw $1 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 006e01020104019501f4021301a101c1
+r    mpsadbw $2 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 022001ae01f801cf010801130105010d
+m    mpsadbw $2 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 022001ae01f801cf010801130105010d
+r    mpsadbw $3 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01b000a0021201230116020301f500af
+m    mpsadbw $3 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01b000a0021201230116020301f500af
+r    mpsadbw $4 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 017301b101b1016e01b30141018b013e
+m    mpsadbw $4 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 017301b101b1016e01b30141018b013e
+r    mpsadbw $5 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00b800b800ee00c7006e010201040195
+m    mpsadbw $5 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00b800b800ee00c7006e010201040195
+r    mpsadbw $6 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01e0021e021e01db022001ae01f801cf
+m    mpsadbw $6 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 01e0021e021e01db022001ae01f801cf
+r    mpsadbw $7 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00fc01920154018b01b000a002120123
+m    mpsadbw $7 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 00fc01920154018b01b000a002120123
+r    mpsadbw $0 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 01ba011c0247022f007701aa01c40148
+m    mpsadbw $0 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 01ba011c0247022f007701aa01c40148
+r    mpsadbw $1 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00ff01b101f2015800d4015b019b00f9
+m    mpsadbw $1 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00ff01b101f2015800d4015b019b00f9
+r    mpsadbw $2 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 01060162015d020b013500c60214017e
+m    mpsadbw $2 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 01060162015d020b013500c60214017e
+r    mpsadbw $3 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 010300e30170024a00a000d301a7011d
+m    mpsadbw $3 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 010300e30170024a00a000d301a7011d
+r    mpsadbw $4 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 003501e101be014401ba011c0247022f
+m    mpsadbw $4 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 003501e101be014401ba011c0247022f
+r    mpsadbw $5 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00dc014a00db004f00ff01b101f20158
+m    mpsadbw $5 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00dc014a00db004f00ff01b101f20158
+r    mpsadbw $6 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 016f008f0178009c01060162015d020b
+m    mpsadbw $6 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 016f008f0178009c01060162015d020b
+r    mpsadbw $7 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00c000ec01b300c9010300e30170024a
+m    mpsadbw $7 e06c5cc8e1357d72cece7967d1f50cd5 4fd7e326d29b74541ae5bf20bcc2f9c2 00c000ec01b300c9010300e30170024a
+r    mpsadbw $0 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0146010400e801cd00cf017a022a007f
+m    mpsadbw $0 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0146010400e801cd00cf017a022a007f
+r    mpsadbw $1 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 013d0067019d0134015401db0191012e
+m    mpsadbw $1 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 013d0067019d0134015401db0191012e
+r    mpsadbw $2 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 00c201b600e2015301ff007a019601af
+m    mpsadbw $2 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 00c201b600e2015301ff007a019601af
+r    mpsadbw $3 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0135007501950132012001c901630128
+m    mpsadbw $3 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0135007501950132012001c901630128
+r    mpsadbw $4 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0110012300f801340146010400e801cd
+m    mpsadbw $4 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0110012300f801340146010400e801cd
+r    mpsadbw $5 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 023d019c015900a5013d0067019d0134
+m    mpsadbw $5 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 023d019c015900a5013d0067019d0134
+r    mpsadbw $6 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0168011d008a013a00c201b600e20153
+m    mpsadbw $6 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0168011d008a013a00c201b600e20153
+r    mpsadbw $7 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0209012c011500610135007501950132
+m    mpsadbw $7 549a65de5531bc5072bb7bf9cc326fbb 6aed102f2e988dcd62d86d00d43737f5 0209012c011500610135007501950132
+r    mpsadbw $0 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 012d026500fd022c015a01dc0104022c
+m    mpsadbw $0 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 012d026500fd022c015a01dc0104022c
+r    mpsadbw $1 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00c4019201e20133016700cd018100e3
+m    mpsadbw $1 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00c4019201e20133016700cd018100e3
+r    mpsadbw $2 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 015600e80140017f01d9011101b701c1
+m    mpsadbw $2 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 015600e80140017f01d9011101b701c1
+r    mpsadbw $3 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 016601ce00c4018700a10169011d0195
+m    mpsadbw $3 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 016601ce00c4018700a10169011d0195
+r    mpsadbw $4 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 016c01b700ff01fd012d026500fd022c
+m    mpsadbw $4 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 016c01b700ff01fd012d026500fd022c
+r    mpsadbw $5 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00fb011600e8006600c4019201e20133
+m    mpsadbw $5 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 00fb011600e8006600c4019201e20133
+r    mpsadbw $6 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 01ab016202360202015600e80140017f
+m    mpsadbw $6 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 01ab016202360202015600e80140017f
+r    mpsadbw $7 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 0235020801fa01ba016601ce00c40187
+m    mpsadbw $7 ed6bf4b500d2fe8f552735a28721f705 190c026f4f4108bb97f152ac79a338e2 0235020801fa01ba016601ce00c40187
+r    mpsadbw $0 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 01690058018d01ff016102be008801e7
+m    mpsadbw $0 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 01690058018d01ff016102be008801e7
+r    mpsadbw $1 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 01e5016a0237015f0141024000d6023b
+m    mpsadbw $1 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 01e5016a0237015f0141024000d6023b
+r    mpsadbw $2 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 017100be00e901a10143020c011e0135
+m    mpsadbw $2 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 017100be00e901a10143020c011e0135
+r    mpsadbw $3 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 010b018c025502eb01cb026000b60189
+m    mpsadbw $3 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 010b018c025502eb01cb026000b60189
+r    mpsadbw $4 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 009a0244013501b501690058018d01ff
+m    mpsadbw $4 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 009a0244013501b501690058018d01ff
+r    mpsadbw $5 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 010801c6004101bf01e5016a0237015f
+m    mpsadbw $5 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 010801c6004101bf01e5016a0237015f
+r    mpsadbw $6 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 00480192016f0143017100be00e901a1
+m    mpsadbw $6 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 00480192016f0143017100be00e901a1
+r    mpsadbw $7 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 0164023601a300fd010b018c025502eb
+m    mpsadbw $7 082a07b97ea580d954e0244c1dcf60e0 b87fb552d02120cc96fce910c815b7b5 0164023601a300fd010b018c025502eb
+r    mpsadbw $0 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 00d1017500a80199013400c9015f00b0
+m    mpsadbw $0 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 00d1017500a80199013400c9015f00b0
+r    mpsadbw $1 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01df00e7011001050130016700fd0148
+m    mpsadbw $1 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01df00e7011001050130016700fd0148
+r    mpsadbw $2 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 014b012500b401b3013c01050179011e
+m    mpsadbw $2 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 014b012500b401b3013c01050179011e
+r    mpsadbw $3 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 010201640141012c0255013c00ec01b9
+m    mpsadbw $3 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 010201640141012c0255013c00ec01b9
+r    mpsadbw $4 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 008400ee0133016000d1017500a80199
+m    mpsadbw $4 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 008400ee0133016000d1017500a80199
+r    mpsadbw $5 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01ea0124013d010601df00e701100105
+m    mpsadbw $5 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01ea0124013d010601df00e701100105
+r    mpsadbw $6 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01000098014d0148014b012500b401b3
+m    mpsadbw $6 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 01000098014d0148014b012500b401b3
+r    mpsadbw $7 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 00ef00fd00dc01c7010201640141012c
+m    mpsadbw $7 022499566a367eda49b0c2e5ab476577 a29325444ec512a939c5af18dc96719b 00ef00fd00dc01c7010201640141012c
+r    mpsadbw $0 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 0242020c0208017900e5011b020301bd
+m    mpsadbw $0 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 0242020c0208017900e5011b020301bd
+r    mpsadbw $1 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 018400dc00c6016100eb00bf019901c5
+m    mpsadbw $1 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 018400dc00c6016100eb00bf019901c5
+r    mpsadbw $2 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00b400a400ea00930165018b012f0129
+m    mpsadbw $2 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00b400a400ea00930165018b012f0129
+r    mpsadbw $3 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 025001ea01e6018700d5010f01ef01cb
+m    mpsadbw $3 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 025001ea01e6018700d5010f01ef01cb
+r    mpsadbw $4 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 013400bb017d01d90242020c02080179
+m    mpsadbw $4 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 013400bb017d01d90242020c02080179
+r    mpsadbw $5 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00cc01130109016f018400dc00c60161
+m    mpsadbw $5 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 00cc01130109016f018400dc00c60161
+r    mpsadbw $6 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 0116015d014f010500b400a400ea0093
+m    mpsadbw $6 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 0116015d014f010500b400a400ea0093
+r    mpsadbw $7 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 015600a701ad01c5025001ea01e60187
+m    mpsadbw $7 35a6a7f8600f343f11658d574d95c3f7 35954eb164b81a015d181eb0d13422c0 015600a701ad01c5025001ea01e60187
+r    mpsadbw $0 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0154017b012d017c017c019301730168
+m    mpsadbw $0 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0154017b012d017c017c019301730168
+r    mpsadbw $1 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0123016e010401470147015e01460133
+m    mpsadbw $1 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0123016e010401470147015e01460133
+r    mpsadbw $2 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 014a00d700bb005c006e00af00890130
+m    mpsadbw $2 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 014a00d700bb005c006e00af00890130
+r    mpsadbw $3 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0224026f01db019c01d6020701b900da
+m    mpsadbw $3 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 0224026f01db019c01d6020701b900da
+r    mpsadbw $4 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 019e014f0096011d0154017b012d017c
+m    mpsadbw $4 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 019e014f0096011d0154017b012d017c
+r    mpsadbw $5 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 010701d8013f00f00123016e01040147
+m    mpsadbw $5 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 010701d8013f00f00123016e01040147
+r    mpsadbw $6 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 019c01e5019e0125014a00d700bb005c
+m    mpsadbw $6 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 019c01e5019e0125014a00d700bb005c
+r    mpsadbw $7 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 01c602c50208017f0224026f01db019c
+m    mpsadbw $7 fefa2b0bfdbeddb488c900901dc5368c cccf2d05af86747edec1b4c5c4fa8650 01c602c50208017f0224026f01db019c
+r    mpsadbw $0 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 01950083017c014b0102024200a000df
+m    mpsadbw $0 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 01950083017c014b0102024200a000df
+r    mpsadbw $1 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 00d0006200d100ba00f1017d00f100d8
+m    mpsadbw $1 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 00d0006200d100ba00f1017d00f100d8
+r    mpsadbw $2 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 00f800fc007b016200f700c9016900fe
+m    mpsadbw $2 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 00f800fc007b016200f700c9016900fe
+r    mpsadbw $3 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 011f01a300b401c300f6011202520159
+m    mpsadbw $3 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 011f01a300b401c300f6011202520159
+r    mpsadbw $4 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0117016700d5014301950083017c014b
+m    mpsadbw $4 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0117016700d5014301950083017c014b
+r    mpsadbw $5 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 007a00a8008600e000d0006200d100ba
+m    mpsadbw $5 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 007a00a8008600e000d0006200d100ba
+r    mpsadbw $6 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0086008000c4009a00f800fc007b0162
+m    mpsadbw $6 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0086008000c4009a00f800fc007b0162
+r    mpsadbw $7 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0137012901a300c5011f01a300b401c3
+m    mpsadbw $7 ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 0137012901a300c5011f01a300b401c3
+r    mpsadbw $0 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01a20192012201a901fd021101fe01c7
+m    mpsadbw $0 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01a20192012201a901fd021101fe01c7
+r    mpsadbw $1 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 016e01c8018e01b3020b025902900255
+m    mpsadbw $1 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 016e01c8018e01b3020b025902900255
+r    mpsadbw $2 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01820190015a01e102350249023601e9
+m    mpsadbw $2 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01820190015a01e102350249023601e9
+r    mpsadbw $3 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 009f0137009b00ce0122013601630128
+m    mpsadbw $3 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 009f0137009b00ce0122013601630128
+r    mpsadbw $4 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 012b0170028600cd01a20192012201a9
+m    mpsadbw $4 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 012b0170028600cd01a20192012201a9
+r    mpsadbw $5 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 02090222017c020b016e01c8018e01b3
+m    mpsadbw $5 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 02090222017c020b016e01c8018e01b3
+r    mpsadbw $6 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01bd022a018a016b01820190015a01e1
+m    mpsadbw $6 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01bd022a018a016b01820190015a01e1
+r    mpsadbw $7 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01ea0155013b01ec009f0137009b00ce
+m    mpsadbw $7 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 751dfa1352e40c98674442111330555e 01ea0155013b01ec009f0137009b00ce
+r    mpsadbw $0 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 015f00e700de01c2008d011401c3012a
+m    mpsadbw $0 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 015f00e700de01c2008d011401c3012a
+r    mpsadbw $1 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 0144014800d9013b00cc01a501cc00e5
+m    mpsadbw $1 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 0144014800d9013b00cc01a501cc00e5
+r    mpsadbw $2 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 011f01a9009e01d8017301940155015c
+m    mpsadbw $2 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 011f01a9009e01d8017301940155015c
+r    mpsadbw $3 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 00680166013900a301aa01df00fe008d
+m    mpsadbw $3 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 00680166013900a301aa01df00fe008d
+r    mpsadbw $4 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 016e0131015400fe015f00e700de01c2
+m    mpsadbw $4 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 016e0131015400fe015f00e700de01c2
+r    mpsadbw $5 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 0249020c01ef01d90144014800d9013b
+m    mpsadbw $5 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 0249020c01ef01d90144014800d9013b
+r    mpsadbw $6 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 01a400d701c400e2011f01a9009e01d8
+m    mpsadbw $6 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 01a400d701c400e2011f01a9009e01d8
+r    mpsadbw $7 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 015b01940101019100680166013900a3
+m    mpsadbw $7 76df5c23d344e7279f0d2317c41d637d 40c9e0a4e28cc38e27b63222a6b73935 015b01940101019100680166013900a3
+r    mpsadbw $0 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 0157012100c20132010500e4011f00cf
+m    mpsadbw $0 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 0157012100c20132010500e4011f00cf
+r    mpsadbw $1 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 011c013601a3013b00ac0109013201d6
+m    mpsadbw $1 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 011c013601a3013b00ac0109013201d6
+r    mpsadbw $2 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00a3012100a601560181008e00a50121
+m    mpsadbw $2 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00a3012100a601560181008e00a50121
+r    mpsadbw $3 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01140144008701450166009700f000d0
+m    mpsadbw $3 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01140144008701450166009700f000d0
+r    mpsadbw $4 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00e2010b017a00dc0157012100c20132
+m    mpsadbw $4 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 00e2010b017a00dc0157012100c20132
+r    mpsadbw $5 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01ff010e00c1015f011c013601a3013b
+m    mpsadbw $5 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01ff010e00c1015f011c013601a3013b
+r    mpsadbw $6 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01a2014901f600c800a3012100a60156
+m    mpsadbw $6 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 01a2014901f600c800a3012100a60156
+r    mpsadbw $7 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 010f011e01db009b0114014400870145
+m    mpsadbw $7 2f76953322c0b8926a280fa06b4f801c 7fdf6bcd1740bc59b4ae395fa797c027 010f011e01db009b0114014400870145
+r    mpsadbw $0 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01340179013000f0012d007501090169
+m    mpsadbw $0 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01340179013000f0012d007501090169
+r    mpsadbw $1 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 020f019401ab01ad01e6014e022800d8
+m    mpsadbw $1 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 020f019401ab01ad01e6014e022800d8
+r    mpsadbw $2 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 0187010801570165011c01b0019c0026
+m    mpsadbw $2 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 0187010801570165011c01b0019c0026
+r    mpsadbw $3 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 00fa014301b201f6024300eb01670179
+m    mpsadbw $3 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 00fa014301b201f6024300eb01670179
+r    mpsadbw $4 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 00e400dc00e4008801340179013000f0
+m    mpsadbw $4 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 00e400dc00e4008801340179013000f0
+r    mpsadbw $5 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01bb00ed020100ff020f019401ab01ad
+m    mpsadbw $5 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01bb00ed020100ff020f019401ab01ad
+r    mpsadbw $6 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 012f00dd016b015f0187010801570165
+m    mpsadbw $6 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 012f00dd016b015f0187010801570165
+r    mpsadbw $7 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01a4018801d4009a00fa014301b201f6
+m    mpsadbw $7 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 01a4018801d4009a00fa014301b201f6
+r    mpsadbw $0 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 0220007e01200170016c010e00c50131
+m    mpsadbw $0 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 0220007e01200170016c010e00c50131
+r    mpsadbw $1 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 00fd00e501af013701ad00eb0122018c
+m    mpsadbw $1 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 00fd00e501af013701ad00eb0122018c
+r    mpsadbw $2 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 023d013f015b0191018501bb01b00116
+m    mpsadbw $2 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 023d013f015b0191018501bb01b00116
+r    mpsadbw $3 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 019f0179007f01a300c701830134015e
+m    mpsadbw $3 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 019f0179007f01a300c701830134015e
+r    mpsadbw $4 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 01610198019802440220007e01200170
+m    mpsadbw $4 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 01610198019802440220007e01200170
+r    mpsadbw $5 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 00b0014101a501bb00fd00e501af0137
+m    mpsadbw $5 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 00b0014101a501bb00fd00e501af0137
+r    mpsadbw $6 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 017e012f004d0131023d013f015b0191
+m    mpsadbw $6 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 017e012f004d0131023d013f015b0191
+r    mpsadbw $7 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 01aa01cd013f014d019f0179007f01a3
+m    mpsadbw $7 23de2e6573f9f357cd2f9fc5071aba58 c8746293ddf96221a55f780d618fa50b 01aa01cd013f014d019f0179007f01a3
+r    mpsadbw $0 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00fc0182010c010c00ab0163013a005f
+m    mpsadbw $0 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00fc0182010c010c00ab0163013a005f
+r    mpsadbw $1 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00f201a6014e013000cf0187015e009d
+m    mpsadbw $1 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00f201a6014e013000cf0187015e009d
+r    mpsadbw $2 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 01f5013b010b00a900f201b6015d0110
+m    mpsadbw $2 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 01f5013b010b00a900f201b6015d0110
+r    mpsadbw $3 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00b5012f01510147013e013600a100cc
+m    mpsadbw $3 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00b5012f01510147013e013600a100cc
+r    mpsadbw $4 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00fc01e300c0018a00fc0182010c010c
+m    mpsadbw $4 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 00fc01e300c0018a00fc0182010c010c
+r    mpsadbw $5 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 012401dd009401ae00f201a6014e0130
+m    mpsadbw $5 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 012401dd009401ae00f201a6014e0130
+r    mpsadbw $6 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 0195011a0209017701f5013b010b00a9
+m    mpsadbw $6 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 0195011a0209017701f5013b010b00a9
+r    mpsadbw $7 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 01b90156010500d700b5012f01510147
+m    mpsadbw $7 16458560adcdd7091db23c3834cb4d4d 8a8cc509a7178875c1b1aa5552bf7b54 01b90156010500d700b5012f01510147
+r    mpsadbw $0 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 0145019d010f00a2015b01a7013500f2
+m    mpsadbw $0 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 0145019d010f00a2015b01a7013500f2
+r    mpsadbw $1 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 01f10087013f022c01ab00eb00cf01fc
+m    mpsadbw $1 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 01f10087013f022c01ab00eb00cf01fc
+r    mpsadbw $2 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 005a01fc01be01170070018a01940141
+m    mpsadbw $2 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 005a01fc01be01170070018a01940141
+r    mpsadbw $3 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 003d01970231018a008d012501c101b4
+m    mpsadbw $3 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 003d01970231018a008d012501c101b4
+r    mpsadbw $4 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 007400ec011d00d50145019d010f00a2
+m    mpsadbw $4 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 007400ec011d00d50145019d010f00a2
+r    mpsadbw $5 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 01ea0146009301a301f10087013f022c
+m    mpsadbw $5 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 01ea0146009301a301f10087013f022c
+r    mpsadbw $6 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 00df00af017c00f4005a01fc01be0117
+m    mpsadbw $6 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 00df00af017c00f4005a01fc01be0117
+r    mpsadbw $7 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 015200f001910145003d01970231018a
+m    mpsadbw $7 7fe0332c6ed78e2afc4561d270bed6b6 313cbec68670df4e1ab8e17b2178e568 015200f001910145003d01970231018a
+r    mpsadbw $0 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 016b018a0161017101b40185023301b2
+m    mpsadbw $0 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 016b018a0161017101b40185023301b2
+r    mpsadbw $1 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 009900f600a300df00ac014900b300d2
+m    mpsadbw $1 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 009900f600a300df00ac014900b300d2
+r    mpsadbw $2 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 006c00f9006600e400ad017801060111
+m    mpsadbw $2 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 006c00f9006600e400ad017801060111
+r    mpsadbw $3 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 00fc01190140018001bf01f6015c0109
+m    mpsadbw $3 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 00fc01190140018001bf01f6015c0109
+r    mpsadbw $4 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 011f00fd0154024e016b018a01610171
+m    mpsadbw $4 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 011f00fd0154024e016b018a01610171
+r    mpsadbw $5 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 01b5010700dc0092009900f600a300df
+m    mpsadbw $5 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 01b5010700dc0092009900f600a300df
+r    mpsadbw $6 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 014c00de012100ab006c00f9006600e4
+m    mpsadbw $6 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 014c00de012100ab006c00f9006600e4
+r    mpsadbw $7 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 00ec01b2023301a300fc011901400180
+m    mpsadbw $7 bafa353551a2546746b48a7dd8000fc0 17d247361590a45a8c419b68e9c69d73 00ec01b2023301a300fc011901400180
+r    mpsadbw $0 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 01db018a017c01e0019400f500e200b5
+m    mpsadbw $0 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 01db018a017c01e0019400f500e200b5
+r    mpsadbw $1 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 0267021a0104010c02000265018a00cd
+m    mpsadbw $1 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 0267021a0104010c02000265018a00cd
+r    mpsadbw $2 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 024202370151011901fb01f8014f006e
+m    mpsadbw $2 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 024202370151011901fb01f8014f006e
+r    mpsadbw $3 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 013901e8013602a60132017b00e6013b
+m    mpsadbw $3 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 013901e8013602a60132017b00e6013b
+r    mpsadbw $4 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 00b8012101c801f801db018a017c01e0
+m    mpsadbw $4 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 00b8012101c801f801db018a017c01e0
+r    mpsadbw $5 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 0206015f007c011c0267021a0104010c
+m    mpsadbw $5 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 0206015f007c011c0267021a0104010c
+r    mpsadbw $6 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 01990192012101370242023701510119
+m    mpsadbw $6 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 01990192012101370242023701510119
+r    mpsadbw $7 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 013e01a3020a02be013901e8013602a6
+m    mpsadbw $7 23de85e7f3ba676cd7ca3327879cb597 9a985ec5f0031343f3185309c7b360a0 013e01a3020a02be013901e8013602a6
+r    mpsadbw $0 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 00e7010001290122015400d40142013c
+m    mpsadbw $0 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 00e7010001290122015400d40142013c
+r    mpsadbw $1 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 00fd01e4015b0172015c0082017c0102
+m    mpsadbw $1 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 00fd01e4015b0172015c0082017c0102
+r    mpsadbw $2 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 024b0194012302860164023801200228
+m    mpsadbw $2 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 024b0194012302860164023801200228
+r    mpsadbw $3 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01ca0125019001ad00b30215009f02a7
+m    mpsadbw $3 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01ca0125019001ad00b30215009f02a7
+r    mpsadbw $4 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 014c00e6008c00cd00e7010001290122
+m    mpsadbw $4 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 014c00e6008c00cd00e7010001290122
+r    mpsadbw $5 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01080188018a00a100fd01e4015b0172
+m    mpsadbw $5 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01080188018a00a100fd01e4015b0172
+r    mpsadbw $6 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 0174018400e80127024b019401230286
+m    mpsadbw $6 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 0174018400e80127024b019401230286
+r    mpsadbw $7 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01af01d9016b017001ca0125019001ad
+m    mpsadbw $7 16da21aeefac01e48b55d9bb9a9e8466 14dcfee0b45668b52a09854ad64de91c 01af01d9016b017001ca0125019001ad
+r    mpsadbw $0 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 015401a9013001a3019400d001380197
+m    mpsadbw $0 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 015401a9013001a3019400d001380197
+r    mpsadbw $1 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0196028100ce0145021c01b6015e009f
+m    mpsadbw $1 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0196028100ce0145021c01b6015e009f
+r    mpsadbw $2 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0217011201430262013d009b01b3024c
+m    mpsadbw $2 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 0217011201430262013d009b01b3024c
+r    mpsadbw $3 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 02c1005801e10310015d00e7017b02fa
+m    mpsadbw $3 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 02c1005801e10310015d00e7017b02fa
+r    mpsadbw $4 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 022701f20253017b015401a9013001a3
+m    mpsadbw $4 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 022701f20253017b015401a9013001a3
+r    mpsadbw $5 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 018b0102032b01190196028100ce0145
+m    mpsadbw $5 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 018b0102032b01190196028100ce0145
+r    mpsadbw $6 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 013802b101b400ca0217011201430262
+m    mpsadbw $6 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 013802b101b400ca0217011201430262
+r    mpsadbw $7 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 010e035f00f001a402c1005801e10310
+m    mpsadbw $7 ef3804f7e2035f7c3d1ff6252d13375a e2e823f1fc15de5d0fe0ad1832a0f513 010e035f00f001a402c1005801e10310
+r    mpsadbw $0 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0198017b017c010a00d800f1017e01ab
+m    mpsadbw $0 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0198017b017c010a00d800f1017e01ab
+r    mpsadbw $1 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 014f00b400ff0125020d027201310104
+m    mpsadbw $1 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 014f00b400ff0125020d027201310104
+r    mpsadbw $2 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0155019c019d012b00810096015d01a8
+m    mpsadbw $2 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0155019c019d012b00810096015d01a8
+r    mpsadbw $3 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 023a01d9016e00e4016001ad01a601f9
+m    mpsadbw $3 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 023a01d9016e00e4016001ad01a601f9
+r    mpsadbw $4 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0175012000bc013e0198017b017c010a
+m    mpsadbw $4 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 0175012000bc013e0198017b017c010a
+r    mpsadbw $5 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 015e0167021901d1014f00b400ff0125
+m    mpsadbw $5 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 015e0167021901d1014f00b400ff0125
+r    mpsadbw $6 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 01ae00e9005500930155019c019d012b
+m    mpsadbw $6 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 01ae00e9005500930155019c019d012b
+r    mpsadbw $7 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 00f901b801a00222023a01d9016e00e4
+m    mpsadbw $7 0a452b2c674cbddfcbf508515b068b9e 6109ca6565cab2e77d69475df9b640b0 00f901b801a00222023a01d9016e00e4
+r    mpsadbw $0 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 017100bf0195011000cc0152010000a7
+m    mpsadbw $0 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 017100bf0195011000cc0152010000a7
+r    mpsadbw $1 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 012900e9020100de0128021400d60049
+m    mpsadbw $1 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 012900e9020100de0128021400d60049
+r    mpsadbw $2 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01370143015101c001d800f000c0017f
+m    mpsadbw $2 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01370143015101c001d800f000c0017f
+r    mpsadbw $3 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01c601e00074018901d700bd01070174
+m    mpsadbw $3 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01c601e00074018901d700bd01070174
+r    mpsadbw $4 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 014c017d00e80185017100bf01950110
+m    mpsadbw $4 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 014c017d00e80185017100bf01950110
+r    mpsadbw $5 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 0142010b01440257012900e9020100de
+m    mpsadbw $5 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 0142010b01440257012900e9020100de
+r    mpsadbw $6 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01ce025501f400f901370143015101c0
+m    mpsadbw $6 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01ce025501f400f901370143015101c0
+r    mpsadbw $7 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01230144017f013601c601e000740189
+m    mpsadbw $7 c34d90bb1a1256ba10a38a2b40833c5f eb8aeda98a0320fe506fd007449d8620 01230144017f013601c601e000740189
+r    mpsadbw $0 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 018f0144019c02420102015e01ff01b4
+m    mpsadbw $0 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 018f0144019c02420102015e01ff01b4
+r    mpsadbw $1 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 021401e10189018f01c1021f026001d3
+m    mpsadbw $1 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 021401e10189018f01c1021f026001d3
+r    mpsadbw $2 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 013800d10129016b013301990184012d
+m    mpsadbw $2 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 013800d10129016b013301990184012d
+r    mpsadbw $3 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 00d4014101a100d500c5013b0182014f
+m    mpsadbw $3 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 00d4014101a100d500c5013b0182014f
+r    mpsadbw $4 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 012f015c020b0212018f0144019c0242
+m    mpsadbw $4 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 012f015c020b0212018f0144019c0242
+r    mpsadbw $5 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 0202026f0296026f021401e10189018f
+m    mpsadbw $5 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 0202026f0296026f021401e10189018f
+r    mpsadbw $6 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 0168019301ba0193013800d10129016b
+m    mpsadbw $6 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 0168019301ba0193013800d10129016b
+r    mpsadbw $7 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 006400ef0150012f00d4014101a100d5
+m    mpsadbw $7 759b310e98e167b9e8f5f99ff99706c8 ddb98a28084c634f63bfc3013161828e 006400ef0150012f00d4014101a100d5
+r    mpsadbw $0 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 018a007e0177006d020d0059027b00e9
+m    mpsadbw $0 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 018a007e0177006d020d0059027b00e9
+r    mpsadbw $1 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0052016c0127018d00ff0187014901ed
+m    mpsadbw $1 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0052016c0127018d00ff0187014901ed
+r    mpsadbw $2 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 01280146007300f7010f0157016701bd
+m    mpsadbw $2 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 01280146007300f7010f0157016701bd
+r    mpsadbw $3 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0108013c0043015d00ef01bd01090223
+m    mpsadbw $3 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0108013c0043015d00ef01bd01090223
+r    mpsadbw $4 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0158005701a800d8018a007e0177006d
+m    mpsadbw $4 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 0158005701a800d8018a007e0177006d
+r    mpsadbw $5 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 016e0197011c00fe0052016c0127018d
+m    mpsadbw $5 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 016e0197011c00fe0052016c0127018d
+r    mpsadbw $6 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 00e800cd009a00a801280146007300f7
+m    mpsadbw $6 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 00e800cd009a00a801280146007300f7
+r    mpsadbw $7 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 00de0123008001100108013c0043015d
+m    mpsadbw $7 7e7d09937d452c872eb7cf99a14da407 94e09c4d7a2fb98594259c37dc0df227 00de0123008001100108013c0043015d
+r    mpsadbw $0 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 016f00a8010d01010097017b01020080
+m    mpsadbw $0 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 016f00a8010d01010097017b01020080
+r    mpsadbw $1 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 01d30166016b012700db0109012c007e
+m    mpsadbw $1 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 01d30166016b012700db0109012c007e
+r    mpsadbw $2 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 0141010e00a100fb00d3014f0112012e
+m    mpsadbw $2 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 0141010e00a100fb00d3014f0112012e
+r    mpsadbw $3 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 006001230110019801a6014a013d01af
+m    mpsadbw $3 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 006001230110019801a6014a013d01af
+r    mpsadbw $4 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 011e00c10114011f016f00a8010d0101
+m    mpsadbw $4 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 011e00c10114011f016f00a8010d0101
+r    mpsadbw $5 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 0182010f0116013301d30166016b0127
+m    mpsadbw $5 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 0182010f0116013301d30166016b0127
+r    mpsadbw $6 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 01700183018c01b30141010e00a100fb
+m    mpsadbw $6 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 01700183018c01b30141010e00a100fb
+r    mpsadbw $7 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 00db0146010d00f60060012301100198
+m    mpsadbw $7 393d14b564cbe1d0c0b48a0655b1d345 6a4d20867d3a5b4dbd6dd8955fad8f17 00db0146010d00f60060012301100198
+r    mpsadbw $0 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 01200190008b024500c4027800cd018b
+m    mpsadbw $0 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 01200190008b024500c4027800cd018b
+r    mpsadbw $1 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 011900fb008a01b000f301e301a001a2
+m    mpsadbw $1 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 011900fb008a01b000f301e301a001a2
+r    mpsadbw $2 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 016e013201e5013301e4012201a501b1
+m    mpsadbw $2 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 016e013201e5013301e4012201a501b1
+r    mpsadbw $3 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 017e019a010b026f0178022c017f0189
+m    mpsadbw $3 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 017e019a010b026f0178022c017f0189
+r    mpsadbw $4 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 00f001570105013c01200190008b0245
+m    mpsadbw $4 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 00f001570105013c01200190008b0245
+r    mpsadbw $5 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 0163011400e4010d011900fb008a01b0
+m    mpsadbw $5 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 0163011400e4010d011900fb008a01b0
+r    mpsadbw $6 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 027a0265017b008c016e013201e50133
+m    mpsadbw $6 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 027a0265017b008c016e013201e50133
+r    mpsadbw $7 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 00a4009b01c10240017e019a010b026f
+m    mpsadbw $7 02284fdfe9fec14278baa5d030d04fb1 bc4a103eacf98853bc63f107d94d1889 00a4009b01c10240017e019a010b026f
+r    mpsadbw $0 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 017d0165006400af013f014800d0011c
+m    mpsadbw $0 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 017d0165006400af013f014800d0011c
+r    mpsadbw $1 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 01af00d900ec011b0171009801700128
+m    mpsadbw $1 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 01af00d900ec011b0171009801700128
+r    mpsadbw $2 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00b101070154010f00c3012001680134
+m    mpsadbw $2 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00b101070154010f00c3012001680134
+r    mpsadbw $3 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 0158012a006500d6011a010d00e90137
+m    mpsadbw $3 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 0158012a006500d6011a010d00e90137
+r    mpsadbw $4 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00b300fa00ce0123017d0165006400af
+m    mpsadbw $4 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00b300fa00ce0123017d0165006400af
+r    mpsadbw $5 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00bf009e0184019901af00d900ec011b
+m    mpsadbw $5 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00bf009e0184019901af00d900ec011b
+r    mpsadbw $6 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 017b01c0016c014700b101070154010f
+m    mpsadbw $6 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 017b01c0016c014700b101070154010f
+r    mpsadbw $7 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00820115010f01540158012a006500d6
+m    mpsadbw $7 348ab47fa96b098734939ce54eb5d374 e6246ae1a4f77a426cd3657964fa47a9 00820115010f01540158012a006500d6
+r    mpsadbw $0 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 00cd017900ba00ec01e20089011b01d7
+m    mpsadbw $0 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 00cd017900ba00ec01e20089011b01d7
+r    mpsadbw $1 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 010e01b8018701870111024a00f001ee
+m    mpsadbw $1 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 010e01b8018701870111024a00f001ee
+r    mpsadbw $2 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 013a00e20163014f00a701f601dc00ba
+m    mpsadbw $2 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 013a00e20163014f00a701f601dc00ba
+r    mpsadbw $3 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 02010147019601e6010c018d0293015d
+m    mpsadbw $3 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 02010147019601e6010c018d0293015d
+r    mpsadbw $4 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 02650130016f017b00cd017900ba00ec
+m    mpsadbw $4 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 02650130016f017b00cd017900ba00ec
+r    mpsadbw $5 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 010402f100840298010e01b801870187
+m    mpsadbw $5 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 010402f100840298010e01b801870187
+r    mpsadbw $6 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 00f001bd01900164013a00e20163014f
+m    mpsadbw $6 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 00f001bd01900164013a00e20163014f
+r    mpsadbw $7 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 012701300249013102010147019601e6
+m    mpsadbw $7 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 012701300249013102010147019601e6
+r    mpsadbw $0 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 017901af018502090231015b013f01b9
+m    mpsadbw $0 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 017901af018502090231015b013f01b9
+r    mpsadbw $1 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01d9016b019d019701510127019500d5
+m    mpsadbw $1 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01d9016b019d019701510127019500d5
+r    mpsadbw $2 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 015e014c00f400d80104012600a40154
+m    mpsadbw $2 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 015e014c00f400d80104012600a40154
+r    mpsadbw $3 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01c001d001fe0200023401d4018e00f4
+m    mpsadbw $3 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01c001d001fe0200023401d4018e00f4
+r    mpsadbw $4 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 011701c700a401b7017901af01850209
+m    mpsadbw $4 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 011701c700a401b7017901af01850209
+r    mpsadbw $5 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01eb010f01de00e901d9016b019d0197
+m    mpsadbw $5 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01eb010f01de00e901d9016b019d0197
+r    mpsadbw $6 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 00c8018201110146015e014c00f400d8
+m    mpsadbw $6 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 00c8018201110146015e014c00f400d8
+r    mpsadbw $7 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01bc00f2011700aa01c001d001fe0200
+m    mpsadbw $7 48e3f1cf4820c03b24f10f9cc602e6b6 329e49985ce0a08d4e504c0d1ea88aa7 01bc00f2011700aa01c001d001fe0200
+r    mpsadbw $0 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01c3016a0092014d01be017700f40195
+m    mpsadbw $0 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01c3016a0092014d01be017700f40195
+r    mpsadbw $1 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01750198016c01510276015900c0025b
+m    mpsadbw $1 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01750198016c01510276015900c0025b
+r    mpsadbw $2 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 015401b5016900b001eb01b0008901d0
+m    mpsadbw $2 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 015401b5016900b001eb01b0008901d0
+r    mpsadbw $3 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 00c801ed016d01840141013c012d01dc
+m    mpsadbw $3 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 00c801ed016d01840141013c012d01dc
+r    mpsadbw $4 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 0164016300a4015001c3016a0092014d
+m    mpsadbw $4 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 0164016300a4015001c3016a0092014d
+r    mpsadbw $5 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01c002290152017c01750198016c0151
+m    mpsadbw $5 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 01c002290152017c01750198016c0151
+r    mpsadbw $6 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 0131019e00d70107015401b5016900b0
+m    mpsadbw $6 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 0131019e00d70107015401b5016900b0
+r    mpsadbw $7 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 009b012600a5018700c801ed016d0184
+m    mpsadbw $7 e072c1566081a703100e83175782ed8c 0cd7c78555e44c4138f5b60885c215db 009b012600a5018700c801ed016d0184
+r    mpsadbw $0 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0115014a016c01d70124014801a701c7
+m    mpsadbw $0 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0115014a016c01d70124014801a701c7
+r    mpsadbw $1 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0115016600d400c100980152018100c1
+m    mpsadbw $1 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0115016600d400c100980152018100c1
+r    mpsadbw $2 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 00fa017d013501080097015f0198014e
+m    mpsadbw $2 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 00fa017d013501080097015f0198014e
+r    mpsadbw $3 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0067011c0170016300be007601610189
+m    mpsadbw $3 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0067011c0170016300be007601610189
+r    mpsadbw $4 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 01d9016601da011b0115014a016c01d7
+m    mpsadbw $4 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 01d9016601da011b0115014a016c01d7
+r    mpsadbw $5 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 017f00c0014a00590115016600d400c1
+m    mpsadbw $5 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 017f00c0014a00590115016600d400c1
+r    mpsadbw $6 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 016a0123013f00ec00fa017d01350108
+m    mpsadbw $6 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 016a0123013f00ec00fa017d01350108
+r    mpsadbw $7 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0165015e016601130067011c01700163
+m    mpsadbw $7 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 0165015e016601130067011c01700163
+r    mpsadbw $0 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 013601c801b4018f01eb014b011100a4
+m    mpsadbw $0 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 013601c801b4018f01eb014b011100a4
+r    mpsadbw $1 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 018b00ff007500f00196027a02560229
+m    mpsadbw $1 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 018b00ff007500f00196027a02560229
+r    mpsadbw $2 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01b8016e01160081016901f901d701c0
+m    mpsadbw $2 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01b8016e01160081016901f901d701c0
+r    mpsadbw $3 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 019c024002a60267020900fd009d006c
+m    mpsadbw $3 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 019c024002a60267020900fd009d006c
+r    mpsadbw $4 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 0076009d00d20171013601c801b4018f
+m    mpsadbw $4 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 0076009d00d20171013601c801b4018f
+r    mpsadbw $5 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01ef018a024b0226018b00ff007500f0
+m    mpsadbw $5 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01ef018a024b0226018b00ff007500f0
+r    mpsadbw $6 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01a8015f01ca027d01b8016e01160081
+m    mpsadbw $6 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 01a8015f01ca027d01b8016e01160081
+r    mpsadbw $7 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 00a6010b00fa0143019c024002a60267
+m    mpsadbw $7 fbcfad402a0ab8c91e1f4ce7b072a07d f4bac99b8dc500224c09e6f9f4b7ac8c 00a6010b00fa0143019c024002a60267
+r    mpsadbw $0 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 016501f901d701b701b4011601b901f0
+m    mpsadbw $0 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 016501f901d701b701b4011601b901f0
+r    mpsadbw $1 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 008f00eb01e702250140016a00d5017a
+m    mpsadbw $1 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 008f00eb01e702250140016a00d5017a
+r    mpsadbw $2 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 01370109017f014300de01bc012700ea
+m    mpsadbw $2 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 01370109017f014300de01bc012700ea
+r    mpsadbw $3 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 013701bb0157009d00de01ba00f70120
+m    mpsadbw $3 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 013701bb0157009d00de01ba00f70120
+r    mpsadbw $4 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 021701bd01820177016501f901d701b7
+m    mpsadbw $4 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 021701bd01820177016501f901d701b7
+r    mpsadbw $5 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 007f01fd019401af008f00eb01e70225
+m    mpsadbw $5 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 007f01fd019401af008f00eb01e70225
+r    mpsadbw $6 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 014b01770190012f01370109017f0143
+m    mpsadbw $6 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 014b01770190012f01370109017f0143
+r    mpsadbw $7 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 0173017500a80125013701bb0157009d
+m    mpsadbw $7 3637c27a144a5b20f8ab9814aff9c5f0 bafd469c03bb81a72d0fa3c734a93060 0173017500a80125013701bb0157009d