amd/addrlib: add gfx10 support
authorMarek Olšák <marek.olsak@amd.com>
Thu, 20 Jun 2019 00:42:18 +0000 (20:42 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 3 Jul 2019 19:51:12 +0000 (15:51 -0400)
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
19 files changed:
src/amd/Makefile.sources
src/amd/addrlib/inc/addrinterface.h
src/amd/addrlib/meson.build
src/amd/addrlib/src/addrinterface.cpp
src/amd/addrlib/src/amdgpu_asic_addr.h
src/amd/addrlib/src/chip/gfx10/gfx10_gb_reg.h [new file with mode: 0644]
src/amd/addrlib/src/chip/gfx9/gfx9_gb_reg.h
src/amd/addrlib/src/chip/r800/si_gb_reg.h
src/amd/addrlib/src/core/addrcommon.h
src/amd/addrlib/src/core/addrlib.cpp
src/amd/addrlib/src/core/addrlib.h
src/amd/addrlib/src/core/addrlib2.h
src/amd/addrlib/src/core/coord.cpp
src/amd/addrlib/src/gfx10/gfx10SwizzlePattern.h [new file with mode: 0644]
src/amd/addrlib/src/gfx10/gfx10addrlib.cpp [new file with mode: 0644]
src/amd/addrlib/src/gfx10/gfx10addrlib.h [new file with mode: 0644]
src/amd/addrlib/src/gfx9/gfx9addrlib.h
src/amd/addrlib/src/r800/egbaddrlib.cpp
src/amd/common/ac_surface.c

index 3eba6be73ea4b75c47afd651b7a1a3cc178c2bfd..8ebcd8803d693038ba9e3e505b742b8cdd4fa184 100644 (file)
@@ -23,6 +23,10 @@ ADDRLIB_FILES = \
        addrlib/src/core/coord.h \
        addrlib/src/gfx9/gfx9addrlib.cpp \
        addrlib/src/gfx9/gfx9addrlib.h \
+       addrlib/src/gfx10/gfx10addrlib.cpp \
+       addrlib/src/gfx10/gfx10addrlib.h \
+       addrlib/src/gfx10/gfx10SwizzlePattern.h \
+       addrlib/src/chip/gfx10/gfx10_gb_reg.h \
        addrlib/src/chip/gfx9/gfx9_gb_reg.h \
        addrlib/src/chip/r800/si_gb_reg.h \
        addrlib/src/r800/ciaddrlib.cpp \
index 8e8f36378b3212e3a0cbbbaba9d8fa9372e66a5d..a8e0b93209e307183fca611a499c2521682d3ae8 100644 (file)
@@ -2266,17 +2266,17 @@ ADDR_E_RETURNCODE ADDR_API AddrComputeDccInfo(
 
 /**
 ****************************************************************************************************
-*   ADDR_GET_MAX_ALINGMENTS_OUTPUT
+*   ADDR_GET_MAX_ALIGNMENTS_OUTPUT
 *
 *   @brief
 *       Output structure of AddrGetMaxAlignments
 ****************************************************************************************************
 */
-typedef struct _ADDR_GET_MAX_ALINGMENTS_OUTPUT
+typedef struct _ADDR_GET_MAX_ALIGNMENTS_OUTPUT
 {
     UINT_32 size;                   ///< Size of this structure in bytes
     UINT_32 baseAlign;              ///< Maximum base alignment in bytes
-} ADDR_GET_MAX_ALINGMENTS_OUTPUT;
+} ADDR_GET_MAX_ALIGNMENTS_OUTPUT;
 
 /**
 ****************************************************************************************************
@@ -2288,7 +2288,7 @@ typedef struct _ADDR_GET_MAX_ALINGMENTS_OUTPUT
 */
 ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments(
     ADDR_HANDLE                     hLib,
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut);
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut);
 
 /**
 ****************************************************************************************************
@@ -2300,7 +2300,7 @@ ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments(
 */
 ADDR_E_RETURNCODE ADDR_API AddrGetMaxMetaAlignments(
     ADDR_HANDLE                     hLib,
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut);
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut);
 
 /**
 ****************************************************************************************************
index edf190d12dc464cfbcb50b9ba7062979adff3b73..2083f60f7a9e81356e9b41abff0628dd9c43132a 100644 (file)
@@ -37,7 +37,11 @@ files_addrlib = files(
   'src/core/coord.h',
   'src/gfx9/gfx9addrlib.cpp',
   'src/gfx9/gfx9addrlib.h',
+  'src/gfx10/gfx10addrlib.cpp',
+  'src/gfx10/gfx10addrlib.h',
+  'src/gfx10/gfx10SwizzlePattern.h',
   'src/amdgpu_asic_addr.h',
+  'src/chip/gfx10/gfx10_gb_reg.h',
   'src/chip/gfx9/gfx9_gb_reg.h',
   'src/chip/r800/si_gb_reg.h',
   'src/r800/ciaddrlib.cpp',
@@ -54,8 +58,9 @@ libamdgpu_addrlib = static_library(
   include_directories : [
     include_directories(
       'inc', 'src', 'src/core', 'src/chip/gfx9', 'src/chip/r800',
+      'src/chip/gfx10',
     ),
     inc_amd_common, inc_common, inc_src,
   ],
-  cpp_args : cpp_vis_args,
+  cpp_args : [cpp_vis_args, '-Wno-unused-variable'],
 )
index 921eed370f2b026e7d8be1450dfb562099ac0f5a..81857b213f6a7e6457764e5f813f154927cf65cb 100644 (file)
@@ -1070,7 +1070,7 @@ ADDR_E_RETURNCODE ADDR_API AddrComputePrtInfo(
 */
 ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments(
     ADDR_HANDLE                     hLib, ///< address lib handle
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) ///< [out] output structure
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) ///< [out] output structure
 {
     Addr::Lib* pLib = Lib::GetLib(hLib);
 
@@ -1101,7 +1101,7 @@ ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments(
 */
 ADDR_E_RETURNCODE ADDR_API AddrGetMaxMetaAlignments(
     ADDR_HANDLE                     hLib, ///< address lib handle
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) ///< [out] output structure
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) ///< [out] output structure
 {
     Addr::Lib* pLib = Lib::GetLib(hLib);
 
index 11fe4a0ecc5fbee1f85b55880f709bb518a42805..3264e8ec98e01b65b81be5b57ca91efb9ba68230 100644 (file)
@@ -43,6 +43,7 @@
 #define FAMILY_CZ      0x87
 #define FAMILY_AI      0x8D
 #define FAMILY_RV      0x8E
+#define FAMILY_NV      0x8F
 
 // AMDGPU_FAMILY_IS(familyId, familyName)
 #define FAMILY_IS(f, fn)     (f == FAMILY_##fn)
@@ -55,6 +56,7 @@
 #define FAMILY_IS_CZ(f)      FAMILY_IS(f, CZ)
 #define FAMILY_IS_AI(f)      FAMILY_IS(f, AI)
 #define FAMILY_IS_RV(f)      FAMILY_IS(f, RV)
+#define FAMILY_IS_NV(f)      FAMILY_IS(f, NV)
 
 #define AMDGPU_UNKNOWN          0xFF
 
@@ -92,6 +94,8 @@
 #define AMDGPU_RAVEN_RANGE      0x01, 0x81
 #define AMDGPU_RAVEN2_RANGE     0x81, 0xFF
 
+#define AMDGPU_NAVI10_RANGE     0x01, 0xFF
+
 #define AMDGPU_EXPAND_FIX(x) x
 #define AMDGPU_RANGE_HELPER(val, min, max) ((val >= min) && (val < max))
 #define AMDGPU_IN_RANGE(val, ...)   AMDGPU_EXPAND_FIX(AMDGPU_RANGE_HELPER(val, __VA_ARGS__))
 #define ASICREV_IS_RAVEN(r)            ASICREV_IS(r, RAVEN)
 #define ASICREV_IS_RAVEN2(r)           ASICREV_IS(r, RAVEN2)
 
+#define ASICREV_IS_NAVI10_P(r)         ASICREV_IS(r, NAVI10)
+
 #endif // _AMDGPU_ASIC_ADDR_H
diff --git a/src/amd/addrlib/src/chip/gfx10/gfx10_gb_reg.h b/src/amd/addrlib/src/chip/gfx10/gfx10_gb_reg.h
new file mode 100644 (file)
index 0000000..1038877
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright © 2007-2019 Advanced Micro Devices, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
+ * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ */
+
+#if !defined (__GFX10_GB_REG_H__)
+#define __GFX10_GB_REG_H__
+
+/*
+*    gfx10_gb_reg.h
+*
+*    Register Spec Release:  1.0
+*
+*/
+
+//
+// Make sure the necessary endian defines are there.
+//
+#include "util/u_endian.h"
+
+#if defined(PIPE_ARCH_LITTLE_ENDIAN)
+#define LITTLEENDIAN_CPU
+#elif defined(PIPE_ARCH_BIG_ENDIAN)
+#define BIGENDIAN_CPU
+#endif
+
+union GB_ADDR_CONFIG
+{
+    struct
+    {
+#if defined(LITTLEENDIAN_CPU)
+        unsigned int                       NUM_PIPES : 3;
+        unsigned int            PIPE_INTERLEAVE_SIZE : 3;
+        unsigned int            MAX_COMPRESSED_FRAGS : 2;
+        unsigned int                       NUM_PKRS  : 3;
+        unsigned int                                 : 21;
+#elif defined(BIGENDIAN_CPU)
+        unsigned int                                 : 21;
+        unsigned int                       NUM_PKRS  : 3;
+        unsigned int            MAX_COMPRESSED_FRAGS : 2;
+        unsigned int            PIPE_INTERLEAVE_SIZE : 3;
+        unsigned int                       NUM_PIPES : 3;
+#endif
+    } bitfields, bits;
+    unsigned int    u32All;
+    int             i32All;
+    float           f32All;
+};
+
+#endif
+
index 3a097964f0ee5f2f77b13dc6157c294f4e46de11..ff4934745c9b62586e476484861d44315dbb7df4 100644 (file)
@@ -1,6 +1,3 @@
-#if !defined (__GFX9_GB_REG_H__)
-#define __GFX9_GB_REG_H__
-
 /*
  * Copyright © 2007-2019 Advanced Micro Devices, Inc.
  * All Rights Reserved.
  * of the Software.
  */
 
+#if !defined (__GFX9_GB_REG_H__)
+#define __GFX9_GB_REG_H__
+
+/*
+*    gfx9_gb_reg.h
+*
+*    Register Spec Release:  1.0
+*
+*/
+
+//
+// Make sure the necessary endian defines are there.
+//
 #include "util/u_endian.h"
 
 #if defined(PIPE_ARCH_LITTLE_ENDIAN)
 #define BIGENDIAN_CPU
 #endif
 
-//
-// Make sure the necessary endian defines are there.
-//
-#if defined(LITTLEENDIAN_CPU)
-#elif defined(BIGENDIAN_CPU)
-#else
-#error "BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined"
-#endif
-
 union GB_ADDR_CONFIG {
     struct {
 #if        defined(LITTLEENDIAN_CPU)
index aa6c3fb8631b8d682885023a0fc017c4d2f0aaa0..be6c18736055e652615993d97d09277fefbe7d05 100644 (file)
@@ -1,6 +1,3 @@
-#if !defined (__SI_GB_REG_H__)
-#define __SI_GB_REG_H__
-
 /*
  * Copyright © 2007-2019 Advanced Micro Devices, Inc.
  * All Rights Reserved.
  * of the Software.
  */
 
+#if !defined (__SI_GB_REG_H__)
+#define __SI_GB_REG_H__
+
+/*****************************************************************************************************************
+ *
+ *  si_gb_reg.h
+ *
+ *  Register Spec Release:  Chip Spec 0.28
+ *
+ *****************************************************************************************************************/
+
+//
+// Make sure the necessary endian defines are there.
+//
 #include "util/u_endian.h"
 
 #if defined(PIPE_ARCH_LITTLE_ENDIAN)
 #define BIGENDIAN_CPU
 #endif
 
-//
-// Make sure the necessary endian defines are there.
-//
-#if defined(LITTLEENDIAN_CPU)
-#elif defined(BIGENDIAN_CPU)
-#else
-#error "BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined"
-#endif
-
 /*
  * GB_ADDR_CONFIG struct
  */
index ced842a1e58e68abcd7ce3e22b6a4407dcad5b83..61eb90831464c79075c106dc3b748252bfde52a9 100644 (file)
@@ -241,6 +241,7 @@ enum ChipFamily
     ADDR_CHIP_FAMILY_CI,
     ADDR_CHIP_FAMILY_VI,
     ADDR_CHIP_FAMILY_AI,
+    ADDR_CHIP_FAMILY_NAVI,
 };
 
 /**
index ceb5ef826a5c21d588e1a98a50daccdb7e2bdc2c..6fdce2f2dd7c3dbb36810296a271a2c98c579c94 100644 (file)
@@ -223,6 +223,9 @@ ADDR_E_RETURNCODE Lib::Create(
                     case FAMILY_RV:
                         pLib = Gfx9HwlInit(&client);
                         break;
+                    case FAMILY_NV:
+                        pLib = Gfx10HwlInit(&client);
+                        break;
                     default:
                         ADDR_ASSERT_ALWAYS();
                         break;
@@ -384,14 +387,14 @@ Lib* Lib::GetLib(
 ****************************************************************************************************
 */
 ADDR_E_RETURNCODE Lib::GetMaxAlignments(
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut    ///< [out] output structure
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure
     ) const
 {
     ADDR_E_RETURNCODE returnCode = ADDR_OK;
 
     if (GetFillSizeFieldsFlags() == TRUE)
     {
-        if (pOut->size != sizeof(ADDR_GET_MAX_ALINGMENTS_OUTPUT))
+        if (pOut->size != sizeof(ADDR_GET_MAX_ALIGNMENTS_OUTPUT))
         {
             returnCode = ADDR_PARAMSIZEMISMATCH;
         }
@@ -424,14 +427,14 @@ ADDR_E_RETURNCODE Lib::GetMaxAlignments(
 ****************************************************************************************************
 */
 ADDR_E_RETURNCODE Lib::GetMaxMetaAlignments(
-    ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut    ///< [out] output structure
+    ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut    ///< [out] output structure
     ) const
 {
     ADDR_E_RETURNCODE returnCode = ADDR_OK;
 
     if (GetFillSizeFieldsFlags() == TRUE)
     {
-        if (pOut->size != sizeof(ADDR_GET_MAX_ALINGMENTS_OUTPUT))
+        if (pOut->size != sizeof(ADDR_GET_MAX_ALIGNMENTS_OUTPUT))
         {
             returnCode = ADDR_PARAMSIZEMISMATCH;
         }
index d0a135b31fc0ec047844ff455002360cfec40590..c1510d6b5acc2253638aa6524e74d76a9480ca81 100644 (file)
@@ -282,9 +282,9 @@ public:
 
     BOOL_32 GetExportNorm(const ELEM_GETEXPORTNORM_INPUT* pIn) const;
 
-    ADDR_E_RETURNCODE GetMaxAlignments(ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) const;
+    ADDR_E_RETURNCODE GetMaxAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const;
 
-    ADDR_E_RETURNCODE GetMaxMetaAlignments(ADDR_GET_MAX_ALINGMENTS_OUTPUT* pOut) const;
+    ADDR_E_RETURNCODE GetMaxMetaAlignments(ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut) const;
 
     UINT_32 GetBpe(AddrFormat format) const;
 
@@ -409,6 +409,7 @@ private:
 Lib* SiHwlInit   (const Client* pClient);
 Lib* CiHwlInit   (const Client* pClient);
 Lib* Gfx9HwlInit (const Client* pClient);
+Lib* Gfx10HwlInit(const Client* pClient);
 } // Addr
 
 #endif
index 258607b8d77c202fab4ae1858387e47eeaa56153..fd433403d8260bb5b09542bb243061e87ef48fe8 100644 (file)
@@ -104,6 +104,8 @@ enum AddrBlockSet
     AddrBlockSetLinear    = 1 << AddrBlockLinear,
 
     AddrBlockSetMacro   = AddrBlockSetMacro4KB | AddrBlockSetMacro64KB,
+    AddrBlockSet2dGfx10 = AddrBlockSetMicro    | AddrBlockSetMacro,
+    AddrBlockSet3dGfx10 = AddrBlockSetMacro,
 };
 
 enum AddrSwSet
@@ -114,6 +116,8 @@ enum AddrSwSet
     AddrSwSetR = 1 << ADDR_SW_R,
 
     AddrSwSetAll         = AddrSwSetZ | AddrSwSetS | AddrSwSetD | AddrSwSetR,
+    AddrSwSet3dThinGfx10 = AddrSwSetZ | AddrSwSetR,
+    AddrSwSetColorGfx10  = AddrSwSetS | AddrSwSetD | AddrSwSetR,
 };
 
 /**
index 9ed0f9db50ba8170ed9a8f7815db3c6f4070523c..5aa3795798ff1aa9247e65273a5cacdfa713fce8 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright © 2007-2019 Advanced Micro Devices, Inc.
  * All Rights Reserved.
diff --git a/src/amd/addrlib/src/gfx10/gfx10SwizzlePattern.h b/src/amd/addrlib/src/gfx10/gfx10SwizzlePattern.h
new file mode 100644 (file)
index 0000000..334b685
--- /dev/null
@@ -0,0 +1,7429 @@
+/*
+ * Copyright © 2007-2019 Advanced Micro Devices, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
+ * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ */
+
+/**
+************************************************************************************************************************
+* @file  gfx10SwizzlePattern.h
+* @brief swizzle pattern for gfx10.
+************************************************************************************************************************
+*/
+
+#ifndef __GFX10_SWIZZLE_PATTERN_H__
+#define __GFX10_SWIZZLE_PATTERN_H__
+
+namespace Addr
+{
+namespace V2
+{
+/**
+************************************************************************************************************************
+* @brief Bit setting for swizzle pattern
+************************************************************************************************************************
+*/
+union ADDR_BIT_SETTING
+{
+    struct
+    {
+        UINT_16 x;
+        UINT_16 y;
+        UINT_16 z;
+        UINT_16 s;
+    };
+    UINT_64 value;
+};
+
+/**
+************************************************************************************************************************
+*   InitBit
+*
+*   @brief
+*       Initialize bit setting value via a return value
+************************************************************************************************************************
+*/
+#define InitBit(c, index) (1ull << ((c << 4) + index))
+
+const UINT_64 X0  = InitBit(0,  0);
+const UINT_64 X1  = InitBit(0,  1);
+const UINT_64 X2  = InitBit(0,  2);
+const UINT_64 X3  = InitBit(0,  3);
+const UINT_64 X4  = InitBit(0,  4);
+const UINT_64 X5  = InitBit(0,  5);
+const UINT_64 X6  = InitBit(0,  6);
+const UINT_64 X7  = InitBit(0,  7);
+const UINT_64 X8  = InitBit(0,  8);
+const UINT_64 X9  = InitBit(0,  9);
+const UINT_64 X10 = InitBit(0, 10);
+const UINT_64 X11 = InitBit(0, 11);
+
+const UINT_64 Y0  = InitBit(1,  0);
+const UINT_64 Y1  = InitBit(1,  1);
+const UINT_64 Y2  = InitBit(1,  2);
+const UINT_64 Y3  = InitBit(1,  3);
+const UINT_64 Y4  = InitBit(1,  4);
+const UINT_64 Y5  = InitBit(1,  5);
+const UINT_64 Y6  = InitBit(1,  6);
+const UINT_64 Y7  = InitBit(1,  7);
+const UINT_64 Y8  = InitBit(1,  8);
+const UINT_64 Y9  = InitBit(1,  9);
+const UINT_64 Y10 = InitBit(1, 10);
+const UINT_64 Y11 = InitBit(1, 11);
+
+const UINT_64 Z0  = InitBit(2,  0);
+const UINT_64 Z1  = InitBit(2,  1);
+const UINT_64 Z2  = InitBit(2,  2);
+const UINT_64 Z3  = InitBit(2,  3);
+const UINT_64 Z4  = InitBit(2,  4);
+const UINT_64 Z5  = InitBit(2,  5);
+const UINT_64 Z6  = InitBit(2,  6);
+const UINT_64 Z7  = InitBit(2,  7);
+const UINT_64 Z8  = InitBit(2,  8);
+
+const UINT_64 S0  = InitBit(3,  0);
+const UINT_64 S1  = InitBit(3,  1);
+const UINT_64 S2  = InitBit(3,  2);
+
+// Color data swizzle pattern
+const UINT_64 SW_256_S[][8]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1              },
+};
+
+const UINT_64 SW_256_D[][8]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1              },
+};
+
+const UINT_64 SW_4K_S[][12]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3              },
+};
+
+const UINT_64 SW_4K_D[][12]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3              },
+};
+
+const UINT_64 SW_4K_S_X[][12]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Z0 ^ Y2 ^ X3,   X3,             Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Z0 ^ X2 ^ Y2,   X2,             Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Z1 ^ Y2 ^ X4,   Z0 ^ X3 ^ Y3,   Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Z1 ^ Y2 ^ X3,   Z0 ^ X2 ^ Y3,   Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z2 ^ X5,   Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z2 ^ X4,   Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z0 ^ X3 ^ Y4,   Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z0 ^ X3 ^ Y3,   Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             Z0 ^ X2 ^ Y3,   Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+};
+
+const UINT_64 SW_4K_D_X[][12]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z0 ^ Y2 ^ X3,   X3,             Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z0 ^ X2 ^ Y2,   X2,             Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z1 ^ Y2 ^ X4,   Z0 ^ X3 ^ Y3,   Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z1 ^ Y2 ^ X3,   Z0 ^ X2 ^ Y3,   Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z2 ^ X5,   Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z2 ^ X4,   Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z0 ^ X3 ^ Y4,   Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z0 ^ X3 ^ Y3,   Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             Z0 ^ X2 ^ Y3,   Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z0 ^ X5 ^ Y5,   X5              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z0 ^ Y4 ^ X5,   X5              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z0 ^ X4 ^ Y4,   X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4    },
+};
+
+const UINT_64 SW_64K_S[][16]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+};
+
+const UINT_64 SW_64K_D[][16]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+};
+
+const UINT_64 SW_64K_S_T[][16]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ X3,        X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             X2 ^ Y2,        X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ X4,        X3 ^ Y3,        Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ X3,        X2 ^ Y3,        Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ X5,        X3 ^ Y4,        Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ X4,        X2 ^ Y4,        X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4 ^ X7,        X4 ^ Y7,        Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X7,        X4 ^ Y6,        Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X6,        X3 ^ Y6,        Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ X6,        X3 ^ Y5,        Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ X5,        X2 ^ Y5,        Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4 ^ Y5,        Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y4,        Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y4,        Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Y3,        Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Y3,        Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Y4,        Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Y4,        X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4 ^ Y7,        Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y6,        Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y6,        Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Y5,        Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Y5,        Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             X7 ^ Y7,        X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6 ^ X7,        X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             X6 ^ Y6,        X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X6,        X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             X5 ^ Y5,        X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             X7 ^ Y7,        X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6 ^ X7,        X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             X6 ^ Y6,        X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X6,        X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             X5 ^ Y5,        X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+};
+
+const UINT_64 SW_64K_D_T[][16]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ X3,        X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2 ^ Y2,        X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ X4,        X3 ^ Y3,        Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ X3,        X2 ^ Y3,        Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ X5,        X3 ^ Y4,        Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ X4,        X2 ^ Y4,        X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4 ^ X7,        X4 ^ Y7,        Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ X7,        X4 ^ Y6,        Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ X6,        X3 ^ Y6,        Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ X6,        X3 ^ Y5,        Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ X5,        X2 ^ Y5,        Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4 ^ Y5,        Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y4,        Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y4,        Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Y3,        Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Y3,        Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Y4,        Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Y4,        X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4 ^ Y7,        Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Y6,        Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y6,        Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Y5,        Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Y5,        Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             X7 ^ Y7,        X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6 ^ X7,        X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             X6 ^ Y6,        X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X6,        X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             X5 ^ Y5,        X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             X5 ^ Y5,        X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X5,        X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             X4 ^ Y4,        X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ X4,        X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             X3 ^ Y3,        X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ X5,        X4 ^ Y4,        Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ X4,        X3 ^ Y4,        Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5 ^ X7,        X5 ^ Y7,        X6 ^ Y6,        X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X7,        X5 ^ Y6,        Y5 ^ X6,        X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X6,        X4 ^ Y6,        X5 ^ Y5,        X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ X6,        X4 ^ Y5,        Y4 ^ X5,        X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ X5,        X3 ^ Y5,        X4 ^ Y4,        X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6 ^ X7,        X6 ^ Y7,        Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X7,        X6 ^ Y6,        Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5 ^ X6,        X5 ^ Y6,        Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ X6,        X5 ^ Y5,        Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ X5,        X4 ^ Y5,        Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             X7 ^ Y7,        X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6 ^ X7,        X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             X6 ^ Y6,        X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5 ^ X6,        X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             X5 ^ Y5,        X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+};
+
+const UINT_64 SW_64K_S_X[][16]=
+{
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Z0 ^ Y2 ^ X3,   X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Z0 ^ X2 ^ Y2,   X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Z1 ^ Y2 ^ X4,   Z0 ^ X3 ^ Y3,   Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Z1 ^ Y2 ^ X3,   Z0 ^ X2 ^ Y3,   Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z2 ^ X5,   Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z2 ^ X4,   Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z4 ^ X6,   X2 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2 ^ Z5 ^ X7,   X2 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z0 ^ X3 ^ Y3,   Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             Z0 ^ X2 ^ Y3,   Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4 ^ Z5 ^Y10,   Z4 ^ Y5 ^ X9,   Z3 ^ X5 ^ Y9,   Z2 ^ Y6 ^ X8,   Z1 ^ X6 ^ Y8,   Z0 ^ X7 ^ Y7,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Z5 ^ Y9,   Y4 ^ Z4 ^ X9,   Z3 ^ X5 ^ Y8,   Z2 ^ Y5 ^ X8,   Z1 ^ X6 ^ Y7,   Z0 ^ Y6 ^ X7,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z5 ^ Y9,   Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3 ^ Z5 ^ Y8,   Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2 ^ Z5 ^ Y8,   Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Z4 ^ Y5 ^ X9,   Z3 ^ X5 ^ Y9,   Z2 ^ Y6 ^ X8,   Z1 ^ X6 ^ Y8,   Z0 ^ X7 ^ Y7,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ Z4 ^ X9,   Z3 ^ X5 ^ Y8,   Z2 ^ Y5 ^ X8,   Z1 ^ X6 ^ Y7,   Z0 ^ Y6 ^ X7,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6              },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6              },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {X0,             X1,             X2,             X3,             Y0,             Y1,             Y2,             Y3,             Y4,             X4,             Y5 ^ Z5 ^X10,   Z4 ^ X5 ^Y10,   Z3 ^ Y6 ^ X9,   Z2 ^ X6 ^ Y9,   Z1 ^ Y7 ^ X8,   Z0 ^ X7 ^ Y8    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ Z5 ^X10,   Z4 ^ X5 ^ Y9,   Z3 ^ Y5 ^ X9,   Z2 ^ X6 ^ Y8,   Z1 ^ Y6 ^ X8,   Z0 ^ X7 ^ Y7    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              0,              0,              X0,             Y0,             Y1,             X1,             X2,             Y2,             X3,             Y3 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6    },
+    {0,              0,              0,              0,              Y0,             Y1,             X0,             X1,             Y2,             X2,             Y3 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+};
+
+const UINT_64 SW_64K_D_X[][16]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z0 ^ Y2 ^ X3,   X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z0 ^ X2 ^ Y2,   X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z1 ^ Y2 ^ X4,   Z0 ^ X3 ^ Y3,   Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z1 ^ Y2 ^ X3,   Z0 ^ X2 ^ Y3,   Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z2 ^ X5,   Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z2 ^ X4,   Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z3 ^ X5,   X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z4 ^ X6,   X2 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2 ^ Z5 ^ X7,   X2 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z0 ^ X3 ^ Y3,   Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             Z0 ^ X2 ^ Y3,   Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z1 ^ X3 ^ Y4,   Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             Z1 ^ X2 ^ Y4,   Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z2 ^ X3 ^ Y5,   Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z2 ^ Y5,   Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z3 ^ Y6,   Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z4 ^ Y7,   Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4 ^ Z5 ^Y10,   Z4 ^ Y5 ^ X9,   Z3 ^ X5 ^ Y9,   Z2 ^ Y6 ^ X8,   Z1 ^ X6 ^ Y8,   Z0 ^ X7 ^ Y7,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4 ^ Z5 ^ Y9,   Y4 ^ Z4 ^ X9,   Z3 ^ X5 ^ Y8,   Z2 ^ Y5 ^ X8,   Z1 ^ X6 ^ Y7,   Z0 ^ Y6 ^ X7,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Z5 ^ Y9,   Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Z5 ^ Y8,   Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2 ^ Z5 ^ Y8,   Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z0 ^ Y4 ^ X5,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z0 ^ Y3 ^ X4,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ Y3 ^ X5,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ Y3 ^ X4,   Z0 ^ X3 ^ Y4,   Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z2 ^ Y3 ^ X6,   Z1 ^ X4 ^ Y5,   Z0 ^ Y4 ^ X5,   X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z2 ^ Y3 ^ X5,   Z1 ^ X3 ^ Y5,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ Z3 ^ X7,   Z2 ^ X4 ^ Y6,   Z1 ^ Y4 ^ X6,   Z0 ^ X5 ^ Y5,   Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ Z3 ^ X6,   Z2 ^ X3 ^ Y6,   Z1 ^ Y4 ^ X5,   Z0 ^ X4 ^ Y5,   Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Z4 ^ Y5 ^ X9,   Z3 ^ X5 ^ Y9,   Z2 ^ Y6 ^ X8,   Z1 ^ X6 ^ Y8,   Z0 ^ X7 ^ Y7,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ Z4 ^ X9,   Z3 ^ X5 ^ Y8,   Z2 ^ Y5 ^ X8,   Z1 ^ X6 ^ Y7,   Z0 ^ Y6 ^ X7,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y8,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ Z4 ^ X8,   Z3 ^ X4 ^ Y7,   Z2 ^ Y4 ^ X7,   Z1 ^ X5 ^ Y6,   Z0 ^ Y5 ^ X6,   X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ Z4 ^ X7,   X3 ^ Z3 ^ Y7,   Z2 ^ Y4 ^ X6,   Z1 ^ X4 ^ Y6,   Z0 ^ X5 ^ Y5,   X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5 ^ Z5 ^X10,   Z4 ^ X5 ^Y10,   Z3 ^ Y6 ^ X9,   Z2 ^ X6 ^ Y9,   Z1 ^ Y7 ^ X8,   Z0 ^ X7 ^ Y8    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4 ^ Z5 ^X10,   Z4 ^ X5 ^ Y9,   Z3 ^ Y5 ^ X9,   Z2 ^ X6 ^ Y8,   Z1 ^ Y6 ^ X8,   Z0 ^ X7 ^ Y7    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y9,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3 ^ Z5 ^ X9,   X4 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X8,   Z2 ^ X5 ^ Y7,   Z1 ^ Y5 ^ X7,   Z0 ^ X6 ^ Y6    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3 ^ Z5 ^ X8,   X3 ^ Z4 ^ Y8,   Z3 ^ Y4 ^ X7,   Z2 ^ X4 ^ Y7,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6    },
+};
+
+const UINT_64 SW_64K_R_X_1xaa[][16]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z0 ^ X3 ^ Y3,   X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ X3 ^ Y3,   X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z0 ^ X3 ^ Y3,   X3,             Y2,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z0 ^ X3 ^ Y3,   X2,             Y2,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y3,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y2,             X3,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y2,             X2,             Y3,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X4,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X3,             Y4,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X3,             Y2,             X4,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X2,             Y2,             X3,             Y4,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y4,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y3,             X4,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y2,             X3,             Y4,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y2,             X2,             Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X4,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X3,             Y4,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   Y2,             X3,             Y4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X7,   Z0 ^ X5 ^ Y7,   Y2 ^ X6 ^ Y6,   X2,             Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y4,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y3,             X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X8,   Z1 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   Y3,             X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X8,   Z0 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   X2 ^ X6 ^ Y7,   Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X4,             Z0 ^ X3 ^ Y3,   Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             Z0 ^ X3 ^ Y3,   Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             Z0 ^ X3 ^ Y3,   Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3,             Z0 ^ X3 ^ Y3,   Y2,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             Z0 ^ X3 ^ Y3,   Y2,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y5,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   X3,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   X2,             Y3,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X5,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   Y4,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   Y2,             X4,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   Y2,             X3,             Y4,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y6,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   X4,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   X3,             Y4,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   X2,             Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X6,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   Y4,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X3,             Y4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X7,   Z0 ^ X5 ^ Y7,   Y2 ^ X6 ^ Y6,   Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y7,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   X4              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y3,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X8,   Z1 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7,   X4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X8,   Z0 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   X2 ^ X6 ^ Y7,   X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X4,             Y5,             Z0 ^ X3 ^ Y3,   X5,             Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             Y4,             Z0 ^ X3 ^ Y3,   X5,             Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             Y4,             Z0 ^ X3 ^ Y3,   X4,             Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3,             Y2,             Z0 ^ X3 ^ Y3,   X4,             Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             Y2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y5,             X5,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y6,             X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             X5,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y5,             X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X4,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y5,             X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y3,             X4,             Y5,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X5,             Y6,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X6,             Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             Y5,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X6,             Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             Y4,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3,             Y2,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X4,             Y5,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             Y2,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X3,             Y4,             X5              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y6,             X6,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y7,             X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             X6,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X4,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y4,             X6              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X6,             Y7,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X7              },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X4,             Y6,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X7              },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3,             Y4,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6              },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   Y4              },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             X2,             Y3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X7,   Z0 ^ X5 ^ Y7,   Y2 ^ X6 ^ Y6,   X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Y7,             X7,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y4,             X7,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X4,             X3 ^ Y3 ^ Z5,   X4 ^ Y4 ^ Z4,   Z3 ^ Y5 ^ X8,   Z2 ^ X5 ^ Y8,   Z1 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y3,             X4,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X8,   Z1 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   Z0 ^ X6 ^ Y7    },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y3,             X4,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X8,   Z0 ^ X5 ^ Y8,   Y2 ^ Y6 ^ X7,   X2 ^ X6 ^ Y7    },
+};
+
+const UINT_64 SW_64K_R_X_2xaa[][16]=
+{
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y3,             Y4,             X4,             Y5,             X5,             Y6,             X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             X6,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             X5,             Y6,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Y2,             X3,             Y3,             X4,             Y4,             X5,             Y5,             S0 ^ Y6         },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Y2,             X2,             Y3,             X3,             Y4,             X4,             Y5,             S0 ^ Y6         },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z0 ^ X3 ^ Y3,   X4,             Y5,             X5,             Y6,             X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z0 ^ X3 ^ Y3,   X4,             Y4,             X5,             Y5,             X6,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z0 ^ X3 ^ Y3,   X3,             Y4,             X4,             Y5,             X5,             Y6,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z0 ^ X3 ^ Y3,   X3,             Y2,             X4,             Y4,             X5,             Y5,             S0 ^ Y6         },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z0 ^ X3 ^ Y3,   X2,             Y2,             X3,             Y4,             X4,             Y5,             S0 ^ Y6         },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y5,             X5,             Y6,             X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y4,             X5,             Y5,             X6,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y3,             X4,             Y5,             X5,             Y6,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y2,             X3,             Y4,             X5,             Y5,             S0 ^ Y6         },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z1 ^ X3 ^ Y3,   Z0 ^ X4 ^ Y4,   Y2,             X2,             Y3,             X4,             Y5,             S0 ^ Y6         },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X5,             Y6,             X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X4,             Y5,             X6,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X3,             Y4,             X5,             Y6,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X3,             Y2,             X4,             Y5,             S0 ^ Y6         },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ X5 ^ Y5,   X2,             Y2,             X3,             Y4,             S0 ^ Y6         },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y6,             X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y4,             X6,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y3,             X4,             Y6,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X6,   Z0 ^ X5 ^ Y6,   Y2,             X3,             Y4,             S0 ^ Y6         },
+    {0,              0,              0,              0,              X0,             Y0,             X1,             Y1,             Z2 ^ X3 ^ Y3,   Z1 ^ X4 ^ Y4,   Z0 ^ Y5 ^ X6,   S0 ^ X5 ^ Y6,   Y2,             X2,             Y3,             X4              },
+    {X0,             X1,             X2,             Y1,             Y0,             Y2,             X3,             Y4,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X6,             Y7,             S0 ^ Y8         },
+    {0,              X0,             X1,             X2,             Y0,             Y1,             Y2,             X3,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X4,             Y6,             S0 ^ Y7         },
+    {0,              0,              X0,             X1,             Y0,             Y1,             Y2,             X2,             X3 ^ Y3 ^ Z4,   Z3 ^ X4 ^ Y4,   Z2 ^ Y5 ^ X7,   Z1 ^ X5 ^ Y7,   Z0 ^ X6 ^ Y6,   X3,             Y4,             S0 ^ Y7         },
+    {0,              0,              0,              X0,             Y0,             X1,             X2,             Y1,             X3 ^ Y3 ^ Z3,   Z2 ^ X4 ^ Y4,   Z1 ^ Y5 ^ X7,   Z0 ^ X5 ^ Y7,   S0 ^ X6 ^ Y6,   Y2,             X3,             Y4              },
+    {0,             &