diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc36e64a4..27b79d85e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,6 +10,7 @@ option(WITH_RANDOMX         "Enable RandomX algorithms family" ON)
 option(WITH_ARGON2          "Enable Argon2 algorithms family" ON)
 option(WITH_ASTROBWT        "Enable AstroBWT algorithms family" ON)
 option(WITH_KAWPOW          "Enable KawPow algorithms family" ON)
+option(WITH_GHOSTRIDER      "Enable GhostRider algorithm" ON)
 option(WITH_HTTP            "Enable HTTP protocol support (client/server)" ON)
 option(WITH_DEBUG_LOG       "Enable debug log output" OFF)
 option(WITH_TLS             "Enable OpenSSL support" ON)
@@ -128,6 +129,10 @@ set(SOURCES_CRYPTO
     src/crypto/common/VirtualMemory.cpp
    )
 
+if (CMAKE_C_COMPILER_ID MATCHES GNU)
+    set_source_files_properties(src/crypto/cn/CnHash.cpp PROPERTIES COMPILE_FLAGS "-Ofast -fno-tree-vectorize")
+endif()
+
 if (WITH_HWLOC)
     list(APPEND HEADERS_CRYPTO
         src/crypto/common/NUMAMemoryPool.h
@@ -186,6 +191,7 @@ include(cmake/randomx.cmake)
 include(cmake/argon2.cmake)
 include(cmake/astrobwt.cmake)
 include(cmake/kawpow.cmake)
+include(cmake/ghostrider.cmake)
 include(cmake/OpenSSL.cmake)
 include(cmake/asm.cmake)
 
@@ -221,7 +227,7 @@ if (WITH_DEBUG_LOG)
 endif()
 
 add_executable(${CMAKE_PROJECT_NAME} ${HEADERS} ${SOURCES} ${SOURCES_OS} ${HEADERS_CRYPTO} ${SOURCES_CRYPTO} ${SOURCES_SYSLOG} ${TLS_SOURCES} ${XMRIG_ASM_SOURCES})
-target_link_libraries(${CMAKE_PROJECT_NAME} ${XMRIG_ASM_LIBRARY} ${OPENSSL_LIBRARIES} ${UV_LIBRARIES} ${EXTRA_LIBS} ${CPUID_LIB} ${ARGON2_LIBRARY} ${ETHASH_LIBRARY})
+target_link_libraries(${CMAKE_PROJECT_NAME} ${XMRIG_ASM_LIBRARY} ${OPENSSL_LIBRARIES} ${UV_LIBRARIES} ${EXTRA_LIBS} ${CPUID_LIB} ${ARGON2_LIBRARY} ${ETHASH_LIBRARY} ${GHOSTRIDER_LIBRARY})
 
 if (WIN32)
     add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/bin/WinRing0/WinRing0x64.sys" $<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>)
diff --git a/cmake/ghostrider.cmake b/cmake/ghostrider.cmake
new file mode 100644
index 000000000..3bc935b14
--- /dev/null
+++ b/cmake/ghostrider.cmake
@@ -0,0 +1,8 @@
+if (WITH_GHOSTRIDER)
+    add_definitions(/DXMRIG_ALGO_GHOSTRIDER)
+    add_subdirectory(src/crypto/ghostrider)
+    set(GHOSTRIDER_LIBRARY ghostrider)
+else()
+    remove_definitions(/DXMRIG_ALGO_GHOSTRIDER)
+    set(GHOSTRIDER_LIBRARY "")
+endif()
diff --git a/src/backend/common/Workers.cpp b/src/backend/common/Workers.cpp
index 72d02e954..9e2b230b8 100644
--- a/src/backend/common/Workers.cpp
+++ b/src/backend/common/Workers.cpp
@@ -239,6 +239,9 @@ xmrig::IWorker *xmrig::Workers<CpuLaunchData>::create(Thread<CpuLaunchData> *han
 
     case 5:
         return new CpuWorker<5>(handle->id(), handle->config());
+
+    case 8:
+        return new CpuWorker<8>(handle->id(), handle->config());
     }
 
     return nullptr;
diff --git a/src/backend/cpu/CpuConfig.cpp b/src/backend/cpu/CpuConfig.cpp
index dc3330abb..e20c8e9af 100644
--- a/src/backend/cpu/CpuConfig.cpp
+++ b/src/backend/cpu/CpuConfig.cpp
@@ -122,8 +122,15 @@ std::vector<xmrig::CpuLaunchData> xmrig::CpuConfig::get(const Miner *miner, cons
     const size_t count = threads.count();
     out.reserve(count);
 
+    std::vector<int64_t> affinities;
+    affinities.reserve(count);
+
+    for (const auto& thread : threads.data()) {
+        affinities.emplace_back(thread.affinity());
+    }
+
     for (const auto &thread : threads.data()) {
-        out.emplace_back(miner, algorithm, *this, thread, count);
+        out.emplace_back(miner, algorithm, *this, thread, count, affinities);
     }
 
     return out;
@@ -200,6 +207,7 @@ void xmrig::CpuConfig::generate()
     count += xmrig::generate<Algorithm::RANDOM_X>(m_threads, m_limit);
     count += xmrig::generate<Algorithm::ARGON2>(m_threads, m_limit);
     count += xmrig::generate<Algorithm::ASTROBWT>(m_threads, m_limit);
+    count += xmrig::generate<Algorithm::GHOSTRIDER>(m_threads, m_limit);
 
     m_shouldSave |= count > 0;
 }
diff --git a/src/backend/cpu/CpuConfig_gen.h b/src/backend/cpu/CpuConfig_gen.h
index 89f5ac969..5ba107380 100644
--- a/src/backend/cpu/CpuConfig_gen.h
+++ b/src/backend/cpu/CpuConfig_gen.h
@@ -161,6 +161,15 @@ size_t inline generate<Algorithm::ASTROBWT>(Threads<CpuThreads>& threads, uint32
 }
 #endif
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+template<>
+size_t inline generate<Algorithm::GHOSTRIDER>(Threads<CpuThreads>& threads, uint32_t limit)
+{
+    return generate(Algorithm::kGHOSTRIDER, threads, Algorithm::GHOSTRIDER_RTM, limit);
+}
+#endif
+
+
 } /* namespace xmrig */
 
 
diff --git a/src/backend/cpu/CpuLaunchData.cpp b/src/backend/cpu/CpuLaunchData.cpp
index a5e0c99eb..648be815c 100644
--- a/src/backend/cpu/CpuLaunchData.cpp
+++ b/src/backend/cpu/CpuLaunchData.cpp
@@ -32,7 +32,7 @@
 #include <algorithm>
 
 
-xmrig::CpuLaunchData::CpuLaunchData(const Miner *miner, const Algorithm &algorithm, const CpuConfig &config, const CpuThread &thread, size_t threads) :
+xmrig::CpuLaunchData::CpuLaunchData(const Miner *miner, const Algorithm &algorithm, const CpuConfig &config, const CpuThread &thread, size_t threads, const std::vector<int64_t>& affinities) :
     algorithm(algorithm),
     assembly(config.assembly()),
     astrobwtAVX2(config.astrobwtAVX2()),
@@ -44,7 +44,8 @@ xmrig::CpuLaunchData::CpuLaunchData(const Miner *miner, const Algorithm &algorit
     affinity(thread.affinity()),
     miner(miner),
     threads(threads),
-    intensity(std::min<uint32_t>(thread.intensity(), algorithm.maxIntensity()))
+    intensity(std::min<uint32_t>(thread.intensity(), algorithm.maxIntensity())),
+    affinities(affinities)
 {
 }
 
diff --git a/src/backend/cpu/CpuLaunchData.h b/src/backend/cpu/CpuLaunchData.h
index 8801c005f..b44655027 100644
--- a/src/backend/cpu/CpuLaunchData.h
+++ b/src/backend/cpu/CpuLaunchData.h
@@ -44,7 +44,7 @@ class Miner;
 class CpuLaunchData
 {
 public:
-    CpuLaunchData(const Miner *miner, const Algorithm &algorithm, const CpuConfig &config, const CpuThread &thread, size_t threads);
+    CpuLaunchData(const Miner *miner, const Algorithm &algorithm, const CpuConfig &config, const CpuThread &thread, size_t threads, const std::vector<int64_t>& affinities);
 
     bool isEqual(const CpuLaunchData &other) const;
     CnHash::AlgoVariant av() const;
@@ -68,6 +68,7 @@ public:
     const Miner *miner;
     const size_t threads;
     const uint32_t intensity;
+    const std::vector<int64_t> affinities;
 };
 
 
diff --git a/src/backend/cpu/CpuThread.h b/src/backend/cpu/CpuThread.h
index b198c8001..e0c03b2ef 100644
--- a/src/backend/cpu/CpuThread.h
+++ b/src/backend/cpu/CpuThread.h
@@ -41,7 +41,7 @@ public:
     CpuThread(const rapidjson::Value &value);
 
     inline bool isEqual(const CpuThread &other) const       { return other.m_affinity == m_affinity && other.m_intensity == m_intensity; }
-    inline bool isValid() const                             { return m_intensity <= 5; }
+    inline bool isValid() const                             { return m_intensity <= 8; }
     inline int64_t affinity() const                         { return m_affinity; }
     inline uint32_t intensity() const                       { return m_intensity == 0 ? 1 : m_intensity; }
 
diff --git a/src/backend/cpu/CpuWorker.cpp b/src/backend/cpu/CpuWorker.cpp
index 1b92faa48..9d3fa093b 100644
--- a/src/backend/cpu/CpuWorker.cpp
+++ b/src/backend/cpu/CpuWorker.cpp
@@ -34,6 +34,7 @@
 #include "crypto/rx/Rx.h"
 #include "crypto/rx/RxDataset.h"
 #include "crypto/rx/RxVm.h"
+#include "crypto/ghostrider/ghostrider.h"
 #include "net/JobResults.h"
 
 
@@ -97,6 +98,10 @@ xmrig::CpuWorker<N>::CpuWorker(size_t id, const CpuLaunchData &data) :
     {
         m_memory = new VirtualMemory(m_algorithm.l3() * N, data.hugePages, false, true, node());
     }
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    m_ghHelper = ghostrider::create_helper_thread(affinity(), data.affinities);
+#   endif
 }
 
 
@@ -115,6 +120,10 @@ xmrig::CpuWorker<N>::~CpuWorker()
     {
         delete m_memory;
     }
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    ghostrider::destroy_helper_thread(m_ghHelper);
+#   endif
 }
 
 
@@ -152,6 +161,12 @@ bool xmrig::CpuWorker<N>::selfTest()
     }
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (m_algorithm.family() == Algorithm::GHOSTRIDER) {
+        return N == 8;
+    }
+#   endif
+
     allocateCnCtx();
 
     if (m_algorithm.family() == Algorithm::CN) {
@@ -300,16 +315,30 @@ void xmrig::CpuWorker<N>::start()
             else
 #           endif
             {
+                switch (job.algorithm().family()) {
+
 #               ifdef XMRIG_ALGO_ASTROBWT
-                if (job.algorithm().family() == Algorithm::ASTROBWT) {
+                case Algorithm::ASTROBWT:
                     if (!astrobwt::astrobwt_dero(m_job.blob(), job.size(), m_ctx[0]->memory, m_hash, m_astrobwtMaxSize, m_astrobwtAVX2)) {
                         valid = false;
                     }
-                }
-                else
+                    break;
 #               endif
-                {
+
+#               ifdef XMRIG_ALGO_GHOSTRIDER
+                case Algorithm::GHOSTRIDER:
+                    if (N == 8) {
+                        ghostrider::hash_octa(m_job.blob(), job.size(), m_hash, m_ctx, m_ghHelper);
+                    }
+                    else {
+                        valid = false;
+                    }
+                    break;
+#               endif
+
+                default:
                     fn(job.algorithm())(m_job.blob(), job.size(), m_hash, m_ctx, job.height());
+                    break;
                 }
 
                 if (!nextRound()) {
@@ -484,6 +513,7 @@ template class CpuWorker<2>;
 template class CpuWorker<3>;
 template class CpuWorker<4>;
 template class CpuWorker<5>;
+template class CpuWorker<8>;
 
 } // namespace xmrig
 
diff --git a/src/backend/cpu/CpuWorker.h b/src/backend/cpu/CpuWorker.h
index 487b20cc0..c3ed18296 100644
--- a/src/backend/cpu/CpuWorker.h
+++ b/src/backend/cpu/CpuWorker.h
@@ -38,6 +38,11 @@ namespace xmrig {
 class RxVm;
 
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+namespace ghostrider { struct HelperThread; }
+#endif
+
+
 template<size_t N>
 class CpuWorker : public Worker
 {
@@ -87,6 +92,10 @@ private:
     randomx_vm *m_vm        = nullptr;
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    ghostrider::HelperThread* m_ghHelper = nullptr;
+#   endif
+
 #   ifdef XMRIG_FEATURE_BENCHMARK
     uint32_t m_benchSize    = 0;
 #   endif
@@ -102,6 +111,7 @@ extern template class CpuWorker<2>;
 extern template class CpuWorker<3>;
 extern template class CpuWorker<4>;
 extern template class CpuWorker<5>;
+extern template class CpuWorker<8>;
 
 
 } // namespace xmrig
diff --git a/src/backend/cpu/platform/BasicCpuInfo.cpp b/src/backend/cpu/platform/BasicCpuInfo.cpp
index 93b128092..0a5c17db5 100644
--- a/src/backend/cpu/platform/BasicCpuInfo.cpp
+++ b/src/backend/cpu/platform/BasicCpuInfo.cpp
@@ -361,6 +361,12 @@ xmrig::CpuThreads xmrig::BasicCpuInfo::threads(const Algorithm &algorithm, uint3
     }
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (f == Algorithm::GHOSTRIDER) {
+        return CpuThreads(std::max<size_t>(count / 2, 1), 8);
+    }
+#   endif
+
     return CpuThreads(std::max<size_t>(count / 2, 1), 1);
 }
 
diff --git a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp
index b90138d83..3db7670b5 100644
--- a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp
+++ b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp
@@ -99,8 +99,14 @@ const char *xmrig::BasicCpuInfo::backend() const
 }
 
 
-xmrig::CpuThreads xmrig::BasicCpuInfo::threads(const Algorithm &, uint32_t) const
+xmrig::CpuThreads xmrig::BasicCpuInfo::threads(const Algorithm &algorithm, uint32_t) const
 {
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (algorithm.family() == Algorithm::GHOSTRIDER) {
+        return CpuThreads(threads(), 8);
+    }
+#   endif
+
     return CpuThreads(threads());
 }
 
diff --git a/src/backend/cpu/platform/HwlocCpuInfo.cpp b/src/backend/cpu/platform/HwlocCpuInfo.cpp
index 1c38f4c77..9a195db24 100644
--- a/src/backend/cpu/platform/HwlocCpuInfo.cpp
+++ b/src/backend/cpu/platform/HwlocCpuInfo.cpp
@@ -269,8 +269,10 @@ xmrig::CpuThreads xmrig::HwlocCpuInfo::allThreads(const Algorithm &algorithm, ui
     CpuThreads threads;
     threads.reserve(m_threads);
 
+    const uint32_t intensity = (algorithm.family() == Algorithm::GHOSTRIDER) ? 8 : 0;
+
     for (const int32_t pu : m_units) {
-        threads.add(pu, 0);
+        threads.add(pu, intensity);
     }
 
     if (threads.isEmpty()) {
@@ -296,6 +298,18 @@ void xmrig::HwlocCpuInfo::processTopLevelCache(hwloc_obj_t cache, const Algorith
     cores.reserve(m_cores);
     findByType(cache, HWLOC_OBJ_CORE, [&cores](hwloc_obj_t found) { cores.emplace_back(found); });
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if ((algorithm == Algorithm::GHOSTRIDER_RTM) && (PUs > cores.size()) && (PUs < cores.size() * 2)) {
+        // Don't use E-cores on Alder Lake
+        cores.erase(std::remove_if(cores.begin(), cores.end(), [](hwloc_obj_t c) { return hwloc_bitmap_weight(c->cpuset) == 1; }), cores.end());
+
+        // This shouldn't happen, but check it anyway
+        if (cores.empty()) {
+            findByType(cache, HWLOC_OBJ_CORE, [&cores](hwloc_obj_t found) { cores.emplace_back(found); });
+        }
+    }
+#   endif
+
     size_t L3               = cache->attr->cache.size;
     const bool L3_exclusive = isCacheExclusive(cache);
     size_t L2               = 0;
@@ -351,6 +365,15 @@ void xmrig::HwlocCpuInfo::processTopLevelCache(hwloc_obj_t cache, const Algorith
         cacheHashes = std::min(cacheHashes, limit);
     }
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (algorithm == Algorithm::GHOSTRIDER_RTM) {
+        // GhostRider implementation runs 8 hashes at a time
+        intensity = 8;
+        // Always 1 thread per core (it uses additional helper thread when possible)
+        cacheHashes = std::min(cacheHashes, cores.size());
+    }
+#   endif
+
     if (cacheHashes >= PUs) {
         for (hwloc_obj_t core : cores) {
             const std::vector<hwloc_obj_t> units = findByType(core, HWLOC_OBJ_PU);
diff --git a/src/base/crypto/Algorithm.cpp b/src/base/crypto/Algorithm.cpp
index 8c3a1ad36..636a638cd 100644
--- a/src/base/crypto/Algorithm.cpp
+++ b/src/base/crypto/Algorithm.cpp
@@ -101,6 +101,11 @@ const char *Algorithm::kKAWPOW          = "kawpow";
 const char *Algorithm::kKAWPOW_RVN      = "kawpow";
 #endif
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+const char* Algorithm::kGHOSTRIDER      = "ghostrider";
+const char* Algorithm::kGHOSTRIDER_RTM  = "ghostrider";
+#endif
+
 
 #define ALGO_NAME(ALGO)         { Algorithm::ALGO, Algorithm::k##ALGO }
 #define ALGO_ALIAS(ALGO, NAME)  { NAME, Algorithm::ALGO }
@@ -163,6 +168,10 @@ static const std::map<uint32_t, const char *> kAlgorithmNames = {
 #   ifdef XMRIG_ALGO_KAWPOW
     ALGO_NAME(KAWPOW_RVN),
 #   endif
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    ALGO_NAME(GHOSTRIDER_RTM),
+#   endif
 };
 
 
@@ -278,6 +287,11 @@ static const std::map<const char *, Algorithm::Id, aliasCompare> kAlgorithmAlias
 #   ifdef XMRIG_ALGO_KAWPOW
     ALGO_ALIAS_AUTO(KAWPOW_RVN),    ALGO_ALIAS(KAWPOW_RVN,      "kawpow/rvn"),
 #   endif
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    ALGO_ALIAS_AUTO(GHOSTRIDER_RTM), ALGO_ALIAS(GHOSTRIDER_RTM, "ghostrider/rtm"),
+                                     ALGO_ALIAS(GHOSTRIDER_RTM, "gr"),
+#   endif
 };
 
 
@@ -352,7 +366,8 @@ std::vector<xmrig::Algorithm> xmrig::Algorithm::all(const std::function<bool(con
         RX_0, RX_WOW, RX_ARQ, RX_GRAFT, RX_SFX, RX_KEVA,
         AR2_CHUKWA, AR2_CHUKWA_V2, AR2_WRKZ,
         ASTROBWT_DERO,
-        KAWPOW_RVN
+        KAWPOW_RVN,
+        GHOSTRIDER_RTM
     };
 
     Algorithms out;
diff --git a/src/base/crypto/Algorithm.h b/src/base/crypto/Algorithm.h
index ca1588979..38d804247 100644
--- a/src/base/crypto/Algorithm.h
+++ b/src/base/crypto/Algorithm.h
@@ -65,6 +65,13 @@ public:
         CN_PICO_0       = 0x63120200,   // "cn-pico"          CryptoNight-Pico
         CN_PICO_TLO     = 0x63120274,   // "cn-pico/tlo"      CryptoNight-Pico (TLO)
         CN_UPX2         = 0x63110200,   // "cn/upx2"          Uplexa (UPX2)
+        CN_GR_0         = 0x63130100,   // "cn/dark"          GhostRider
+        CN_GR_1         = 0x63130101,   // "cn/dark-lite"     GhostRider
+        CN_GR_2         = 0x63150102,   // "cn/fast"          GhostRider
+        CN_GR_3         = 0x63140103,   // "cn/lite"          GhostRider
+        CN_GR_4         = 0x63120104,   // "cn/turtle"        GhostRider
+        CN_GR_5         = 0x63120105,   // "cn/turtle-lite"   GhostRider
+        GHOSTRIDER_RTM  = 0x6c150000,   // "ghostrider"       GhostRider
         RX_0            = 0x72151200,   // "rx/0"             RandomX (reference configuration).
         RX_WOW          = 0x72141177,   // "rx/wow"           RandomWOW (Wownero).
         RX_ARQ          = 0x72121061,   // "rx/arq"           RandomARQ (Arqma).
@@ -89,7 +96,8 @@ public:
         RANDOM_X        = 0x72000000,
         ARGON2          = 0x61000000,
         ASTROBWT        = 0x41000000,
-        KAWPOW          = 0x6b000000
+        KAWPOW          = 0x6b000000,
+        GHOSTRIDER      = 0x6c000000
     };
 
     static const char *kINVALID;
@@ -157,6 +165,11 @@ public:
     static const char *kKAWPOW_RVN;
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    static const char* kGHOSTRIDER;
+    static const char* kGHOSTRIDER_RTM;
+#   endif
+
     inline Algorithm() = default;
     inline Algorithm(const char *algo) : m_id(parse(algo))  {}
     inline Algorithm(Id id) : m_id(id)                      {}
@@ -176,7 +189,7 @@ public:
     inline Id id() const                                    { return m_id; }
     inline size_t l2() const                                { return l2(m_id); }
     inline uint32_t family() const                          { return family(m_id); }
-    inline uint32_t maxIntensity() const                    { return isCN() ? 5 : 1; };
+    inline uint32_t maxIntensity() const                    { return isCN() ? 5 : ((m_id == GHOSTRIDER_RTM) ? 8 : 1); };
 
     inline size_t l3() const
     {
diff --git a/src/base/net/stratum/EthStratumClient.cpp b/src/base/net/stratum/EthStratumClient.cpp
index 94d856351..830d52775 100644
--- a/src/base/net/stratum/EthStratumClient.cpp
+++ b/src/base/net/stratum/EthStratumClient.cpp
@@ -34,6 +34,16 @@
 #include "base/kernel/interfaces/IClientListener.h"
 #include "net/JobResult.h"
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+#include <cmath>
+
+extern "C" {
+#include "crypto/ghostrider/sph_sha2.h"
+}
+
+#include "base/tools/Cvt.h"
+#endif
+
 
 
 xmrig::EthStratumClient::EthStratumClient(int id, const char *agent, IClientListener *listener) :
@@ -66,29 +76,53 @@ int64_t xmrig::EthStratumClient::submit(const JobResult& result)
     params.PushBack(m_pool.user().toJSON(), allocator);
     params.PushBack(result.jobId.toJSON(), allocator);
 
-    std::stringstream s;
-    s << "0x" << std::hex << std::setw(16) << std::setfill('0') << result.nonce;
-    params.PushBack(Value(s.str().c_str(), allocator), allocator);
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (m_pool.algorithm().id() == Algorithm::GHOSTRIDER_RTM) {
+        params.PushBack(Value("00000000000000000000000000000000", static_cast<uint32_t>(m_extraNonce2Size * 2)), allocator);
+        params.PushBack(Value(m_ntime.data(), allocator), allocator);
 
-    s.str(std::string());
-    s << "0x";
-    for (size_t i = 0; i < 32; ++i) {
-        const uint32_t k = result.headerHash()[i];
-        s << std::hex << std::setw(2) << std::setfill('0') << k;
+        std::stringstream s;
+        s << std::hex << std::setw(8) << std::setfill('0') << result.nonce;
+        params.PushBack(Value(s.str().c_str(), allocator), allocator);
     }
-    params.PushBack(Value(s.str().c_str(), allocator), allocator);
+    else
+#   endif
+    {
+        std::stringstream s;
+        s << "0x" << std::hex << std::setw(16) << std::setfill('0') << result.nonce;
+        params.PushBack(Value(s.str().c_str(), allocator), allocator);
 
-    s.str(std::string());
-    s << "0x";
-    for (size_t i = 0; i < 32; ++i) {
-        const uint32_t k = result.mixHash()[i];
-        s << std::hex << std::setw(2) << std::setfill('0') << k;
+        s.str(std::string());
+        s << "0x";
+        for (size_t i = 0; i < 32; ++i) {
+            const uint32_t k = result.headerHash()[i];
+            s << std::hex << std::setw(2) << std::setfill('0') << k;
+        }
+        params.PushBack(Value(s.str().c_str(), allocator), allocator);
+
+        s.str(std::string());
+        s << "0x";
+        for (size_t i = 0; i < 32; ++i) {
+            const uint32_t k = result.mixHash()[i];
+            s << std::hex << std::setw(2) << std::setfill('0') << k;
+        }
+        params.PushBack(Value(s.str().c_str(), allocator), allocator);
     }
-    params.PushBack(Value(s.str().c_str(), allocator), allocator);
 
     JsonRequest::create(doc, m_sequence, "mining.submit", params);
 
-    uint64_t actual_diff = ethash_swap_u64(*((uint64_t*)result.result()));
+    uint64_t actual_diff;
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (result.algorithm == Algorithm::GHOSTRIDER_RTM) {
+        actual_diff = reinterpret_cast<const uint64_t*>(result.result())[3];
+    }
+    else
+#   endif
+    {
+        actual_diff = ethash_swap_u64(*((uint64_t*)result.result()));
+    }
+
     actual_diff = actual_diff ? (uint64_t(-1) / actual_diff) : 0;
 
 #   ifdef XMRIG_PROXY_PROJECT
@@ -161,6 +195,33 @@ void xmrig::EthStratumClient::parseNotification(const char *method, const rapidj
         setExtraNonce(arr[0]);
     }
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (strcmp(method, "mining.set_difficulty") == 0) {
+        if (!params.IsArray()) {
+            LOG_ERR("%s " RED("invalid mining.set_difficulty notification: params is not an array"), tag());
+            return;
+        }
+
+        if (m_pool.algorithm().id() != Algorithm::GHOSTRIDER_RTM) {
+            return;
+        }
+
+        auto arr = params.GetArray();
+
+        if (arr.Empty()) {
+            LOG_ERR("%s " RED("invalid mining.set_difficulty notification: params array is empty"), tag());
+            return;
+        }
+
+        if (!arr[0].IsDouble()) {
+            LOG_ERR("%s " RED("invalid mining.set_difficulty notification: difficulty is not a number"), tag());
+            return;
+        }
+
+        m_nextDifficulty = static_cast<uint64_t>(ceil(arr[0].GetDouble() * 65536.0));
+    }
+#   endif
+
     if (strcmp(method, "mining.notify") == 0) {
         if (!params.IsArray()) {
             LOG_ERR("%s " RED("invalid mining.notify notification: params is not an array"), tag());
@@ -169,44 +230,152 @@ void xmrig::EthStratumClient::parseNotification(const char *method, const rapidj
 
         auto arr = params.GetArray();
 
-        if (arr.Size() < 6) {
+        auto algo = m_pool.algorithm();
+        if (!algo.isValid()) {
+            algo = m_pool.coin().algorithm();
+        }
+
+        const size_t min_arr_size = (algo.id() == Algorithm::GHOSTRIDER_RTM) ? 8 : 6;
+
+        if (arr.Size() < min_arr_size) {
             LOG_ERR("%s " RED("invalid mining.notify notification: params array has wrong size"), tag());
             return;
         }
 
+        if (!arr[0].IsString()) {
+            LOG_ERR("%s " RED("invalid mining.notify notification: invalid job id"), tag());
+            return;
+        }
+
         Job job;
         job.setId(arr[0].GetString());
 
-        auto algo = m_pool.algorithm();
-        if (!algo.isValid()) {
-            algo = m_pool.coin().algorithm();
-        }
-
         job.setAlgorithm(algo);
         job.setExtraNonce(m_extraNonce.second);
 
         std::stringstream s;
 
-        // header hash (32 bytes)
-        s << arr[1].GetString();
+#       ifdef XMRIG_ALGO_GHOSTRIDER
+        if (algo.id() == Algorithm::GHOSTRIDER_RTM) {
+            // Raptoreum uses Bitcoin's Stratum protocol
+            // https://en.bitcoinwiki.org/wiki/Stratum_mining_protocol#mining.notify
 
-        // nonce template (8 bytes)
-        for (uint64_t i = 0, k = m_extraNonce.first; i < sizeof(m_extraNonce.first); ++i, k >>= 8) {
-            s << std::hex << std::setw(2) << std::setfill('0') << (k & 0xFF);
+            if (!arr[1].IsString() || !arr[2].IsString() || !arr[3].IsString() || !arr[4].IsArray() || !arr[5].IsString() || !arr[6].IsString() || !arr[7].IsString()) {
+                LOG_ERR("%s " RED("invalid mining.notify notification: invalid param array"), tag());
+                return;
+            }
+
+            // Version
+            s << arr[5].GetString();
+
+            // Previous block hash
+            s << arr[1].GetString();
+
+            // Merkle tree root
+            std::string blob = arr[2].GetString();
+            blob += m_extraNonce.second;
+            blob.append(m_extraNonce2Size * 2, '0');
+            blob += arr[3].GetString();
+
+            uint8_t merkle_root[64];
+
+            Buffer buf = Cvt::fromHex(blob.c_str(), blob.length());
+
+            // Get height from coinbase
+            {
+                uint8_t* p = buf.data() + 32;
+                uint8_t* m = p + 128;
+
+                while ((p < m) && (*p != 0xff)) ++p;
+                while ((p < m) && (*p == 0xff)) ++p;
+
+                if ((p < m) && (*(p - 1) == 0xff) && (*(p - 2) == 0xff)) {
+                    uint32_t height = *reinterpret_cast<uint16_t*>(p + 2);
+                    switch (*(p + 1)) {
+                    case 4:
+                        height += *reinterpret_cast<uint16_t*>(p + 4) * 0x10000UL;
+                        break;
+                    case 3:
+                        height += *(p + 4) * 0x10000UL;
+                        break;
+                    }
+                    job.setHeight(height);
+                }
+                else {
+                    job.setHeight(0);
+                }
+            }
+
+            sha256d(merkle_root, buf.data(), static_cast<int>(buf.size()));
+
+            auto merkle_branches = arr[4].GetArray();
+            for (int i = 0, n = merkle_branches.Size(); i < n; ++i) {
+                auto& b = merkle_branches[i];
+                buf = b.IsString() ? Cvt::fromHex(b.GetString(), b.GetStringLength()) : Buffer();
+                if (buf.size() != 32) {
+                    LOG_ERR("%s " RED("invalid mining.notify notification: param 4 is invalid"), tag());
+                    return;
+                }
+                memcpy(merkle_root + 32, buf.data(), 32);
+                sha256d(merkle_root, merkle_root, 64);
+            }
+
+            s << Cvt::toHex(merkle_root, 32);
+
+            // ntime
+            m_ntime = arr[7].GetString();
+            s << m_ntime;
+
+            // nbits
+            s << arr[6].GetString();
+
+            blob = s.str();
+
+            if (blob.size() != 76 * 2) {
+                LOG_ERR("%s " RED("invalid mining.notify notification: invalid blob size"), tag());
+                return;
+            }
+
+            // zeros up to 80 bytes
+            blob.resize(80 * 2, '0');
+
+            // Invert byte order (no idea why, but it's done in Bitcoin's Stratum)
+            buf = Cvt::fromHex(blob.c_str(), blob.length());
+            for (size_t i = 0; i < 80; i += sizeof(uint32_t)) {
+                uint32_t& k = *reinterpret_cast<uint32_t*>(buf.data() + i);
+                if ((i < 36) || (i >= 68)) {
+                    k = ethash_swap_u32(k);
+                }
+            }
+            blob = Cvt::toHex(buf.data(), buf.size());
+
+            job.setBlob(blob.c_str());
+            job.setDiff(m_nextDifficulty);
         }
+        else
+#       endif
+        {
+            // header hash (32 bytes)
+            s << arr[1].GetString();
 
-        std::string blob = s.str();
+            // nonce template (8 bytes)
+            for (uint64_t i = 0, k = m_extraNonce.first; i < sizeof(m_extraNonce.first); ++i, k >>= 8) {
+                s << std::hex << std::setw(2) << std::setfill('0') << (k & 0xFF);
+            }
 
-        // zeros up to 76 bytes
-        blob.resize(76 * 2, '0');
-        job.setBlob(blob.c_str());
+            std::string blob = s.str();
 
-        std::string target_str = arr[3].GetString();
-        target_str.resize(16, '0');
-        const uint64_t target = strtoull(target_str.c_str(), nullptr, 16);
-        job.setDiff(Job::toDiff(target));
+            // zeros up to 76 bytes
+            blob.resize(76 * 2, '0');
+            job.setBlob(blob.c_str());
 
-        job.setHeight(arr[5].GetUint64());
+            std::string target_str = arr[3].GetString();
+            target_str.resize(16, '0');
+            const uint64_t target = strtoull(target_str.c_str(), nullptr, 16);
+            job.setDiff(Job::toDiff(target));
+
+            job.setHeight(arr[5].GetUint64());
+        }
 
         bool ok = true;
         m_listener->onVerifyAlgorithm(this, algo, &ok);
@@ -356,11 +525,19 @@ void xmrig::EthStratumClient::onSubscribeResponse(const rapidjson::Value &result
             throw std::runtime_error("invalid mining.subscribe response: result is not an array");
         }
 
-        if (result.GetArray().Size() <= 1) {
+        auto arr = result.GetArray();
+
+        if (arr.Size() <= 1) {
             throw std::runtime_error("invalid mining.subscribe response: result array is too short");
         }
 
-        setExtraNonce(result.GetArray()[1]);
+        setExtraNonce(arr[1]);
+
+#       ifdef XMRIG_ALGO_GHOSTRIDER
+        if ((arr.Size() > 2) && (arr[2].IsUint())) {
+            m_extraNonce2Size = arr[2].GetUint();
+        }
+#       endif
 
         if (m_pool.isNicehash()) {
             using namespace rapidjson;
diff --git a/src/base/net/stratum/EthStratumClient.h b/src/base/net/stratum/EthStratumClient.h
index 7f3c59e03..c1fde9b62 100644
--- a/src/base/net/stratum/EthStratumClient.h
+++ b/src/base/net/stratum/EthStratumClient.h
@@ -57,6 +57,12 @@ private:
 
     bool m_authorized   = false;
     std::pair<uint64_t, String> m_extraNonce{};
+
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    uint64_t m_extraNonce2Size = 0;
+    uint64_t m_nextDifficulty = 0;
+    String m_ntime;
+#   endif
 };
 
 
diff --git a/src/base/net/stratum/Job.h b/src/base/net/stratum/Job.h
index 414da8fea..3bad33d53 100644
--- a/src/base/net/stratum/Job.h
+++ b/src/base/net/stratum/Job.h
@@ -76,7 +76,7 @@ public:
     inline const String &poolWallet() const             { return m_poolWallet; }
     inline const uint32_t *nonce() const                { return reinterpret_cast<const uint32_t*>(m_blob + nonceOffset()); }
     inline const uint8_t *blob() const                  { return m_blob; }
-    inline int32_t nonceOffset() const                  { return (algorithm().family() == Algorithm::KAWPOW) ? 32 : 39; }
+    inline int32_t nonceOffset() const                  { auto f = algorithm().family(); return (f == Algorithm::KAWPOW) ? 32 : ((f == Algorithm::GHOSTRIDER) ? 76 : 39); }
     inline size_t nonceSize() const                     { return (algorithm().family() == Algorithm::KAWPOW) ?  8 :  4; }
     inline size_t size() const                          { return m_size; }
     inline uint32_t *nonce()                            { return reinterpret_cast<uint32_t*>(m_blob + nonceOffset()); }
diff --git a/src/base/net/stratum/Pool.cpp b/src/base/net/stratum/Pool.cpp
index 9a27d7c0a..ef644a54b 100644
--- a/src/base/net/stratum/Pool.cpp
+++ b/src/base/net/stratum/Pool.cpp
@@ -219,7 +219,8 @@ xmrig::IClient *xmrig::Pool::createClient(int id, IClientListener *listener) con
 
     if (m_mode == MODE_POOL) {
 #       ifdef XMRIG_ALGO_KAWPOW
-        if ((m_algorithm.family() == Algorithm::KAWPOW) || (m_coin == Coin::RAVEN)) {
+        const uint32_t f = m_algorithm.family();
+        if ((f == Algorithm::KAWPOW) || (f == Algorithm::GHOSTRIDER) || (m_coin == Coin::RAVEN)) {
             client = new EthStratumClient(id, Platform::userAgent(), listener);
         }
         else
diff --git a/src/core/Miner.cpp b/src/core/Miner.cpp
index 8ffdc63b3..54323c35d 100644
--- a/src/core/Miner.cpp
+++ b/src/core/Miner.cpp
@@ -67,6 +67,11 @@
 #endif
 
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+#   include "crypto/ghostrider/ghostrider.h"
+#endif
+
+
 namespace xmrig {
 
 
@@ -334,6 +339,11 @@ public:
 #   endif
 
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    inline void initGhostRider() const { ghostrider::benchmark(); }
+#   endif
+
+
     Algorithm algorithm;
     Algorithms algorithms;
     bool active         = false;
@@ -553,6 +563,10 @@ void xmrig::Miner::setJob(const Job &job, bool donate)
     constexpr const bool ready = true;
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    d_ptr->initGhostRider();
+#   endif
+
     mutex.unlock();
 
     d_ptr->active = true;
diff --git a/src/crypto/cn/CnAlgo.h b/src/crypto/cn/CnAlgo.h
index a1e35e746..96d4d29c0 100644
--- a/src/crypto/cn/CnAlgo.h
+++ b/src/crypto/cn/CnAlgo.h
@@ -43,6 +43,7 @@ public:
     constexpr inline size_t memory() const       { static_assert(Algorithm::isCN(ALGO), "invalid CRYPTONIGHT algorithm"); return Algorithm::l3(ALGO); }
     constexpr inline uint32_t iterations() const { static_assert(Algorithm::isCN(ALGO), "invalid CRYPTONIGHT algorithm"); return CN_ITER; }
     constexpr inline uint32_t mask() const       { return static_cast<uint32_t>(((memory() - 1) / 16) * 16); }
+    constexpr inline uint32_t half_mem() const   { return mask() < memory() / 2; }
 
     inline static uint32_t iterations(Algorithm::Id algo)
     {
@@ -108,6 +109,16 @@ public:
         }
 #       endif
 
+#       ifdef XMRIG_ALGO_GHOSTRIDER
+        if (algo == Algorithm::CN_GR_1) {
+            return 0x3FFF0;
+        }
+
+        if (algo == Algorithm::CN_GR_5) {
+            return 0x1FFF0;
+        }
+#       endif
+
         return ((Algorithm::l3(algo) - 1) / 16) * 16;
     }
 
@@ -136,6 +147,18 @@ template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_UPX2>::iterations() co
 template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_PICO_0>::mask() const             { return 0x1FFF0; }
 template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_UPX2>::mask() const               { return 0x1FFF0; }
 
+#ifdef XMRIG_ALGO_GHOSTRIDER
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_0>::iterations() const         { return CN_ITER / 4; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_1>::iterations() const         { return CN_ITER / 4; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_2>::iterations() const         { return CN_ITER / 2; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_3>::iterations() const         { return CN_ITER / 2; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_4>::iterations() const         { return CN_ITER / 8; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_5>::iterations() const         { return CN_ITER / 8; }
+
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_1>::mask() const               { return 0x3FFF0; }
+template<> constexpr inline uint32_t CnAlgo<Algorithm::CN_GR_5>::mask() const               { return 0x1FFF0; }
+#endif
+
 
 } /* namespace xmrig */
 
diff --git a/src/crypto/cn/CnHash.cpp b/src/crypto/cn/CnHash.cpp
index ab2722251..2f57e44d5 100644
--- a/src/crypto/cn/CnHash.cpp
+++ b/src/crypto/cn/CnHash.cpp
@@ -310,6 +310,15 @@ xmrig::CnHash::CnHash()
     m_map[Algorithm::ASTROBWT_DERO]->data[AV_SINGLE_SOFT][Assembly::NONE] = astrobwt::single_hash<Algorithm::ASTROBWT_DERO>;
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    ADD_FN(Algorithm::CN_GR_0);
+    ADD_FN(Algorithm::CN_GR_1);
+    ADD_FN(Algorithm::CN_GR_2);
+    ADD_FN(Algorithm::CN_GR_3);
+    ADD_FN(Algorithm::CN_GR_4);
+    ADD_FN(Algorithm::CN_GR_5);
+#   endif
+
 #   ifdef XMRIG_FEATURE_ASM
     patchAsmVariants();
 #   endif
diff --git a/src/crypto/cn/CryptoNight.h b/src/crypto/cn/CryptoNight.h
index 434c34f82..fc8d67870 100644
--- a/src/crypto/cn/CryptoNight.h
+++ b/src/crypto/cn/CryptoNight.h
@@ -58,6 +58,9 @@ struct cryptonight_ctx {
 
     cn_mainloop_fun_ms_abi generated_code;
     cryptonight_r_data generated_code_data;
+
+    alignas(16) uint8_t save_state[128];
+    bool first_half;
 };
 
 
diff --git a/src/crypto/cn/CryptoNight_arm.h b/src/crypto/cn/CryptoNight_arm.h
index 443f06ec9..7b47e97da 100644
--- a/src/crypto/cn/CryptoNight_arm.h
+++ b/src/crypto/cn/CryptoNight_arm.h
@@ -349,6 +349,9 @@ static inline __m128i aes_round_tweak_div(const __m128i &in, const __m128i &key)
 }
 
 
+alignas(64) static const uint32_t tweak1_table[256] = { 268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456 };
+
+
 namespace xmrig {
 
 
@@ -368,12 +371,7 @@ static inline void cryptonight_monero_tweak(const uint8_t* l, uint64_t idx, __m1
 
         uint64_t vh = vgetq_lane_u64(tmp, 1);
 
-        uint8_t x = vh >> 24;
-        static const uint16_t table = 0x7531;
-        const uint8_t index = (((x >> (3)) & 6) | (x & 1)) << 1;
-        vh ^= ((table >> index) & 0x3) << 28;
-
-        mem_out[1] = vh;
+        mem_out[1] = vh ^ tweak1_table[static_cast<uint8_t>(vh >> 24)];
     }
 }
 
diff --git a/src/crypto/cn/CryptoNight_test.h b/src/crypto/cn/CryptoNight_test.h
index 0be04998c..41adab676 100644
--- a/src/crypto/cn/CryptoNight_test.h
+++ b/src/crypto/cn/CryptoNight_test.h
@@ -100,7 +100,7 @@ const static uint8_t test_output_r[] = {
 
 
 // "cn/0"
-const static uint8_t test_output_v0[160] = {
+const static uint8_t test_output_v0[256] = {
     0x1A, 0x3F, 0xFB, 0xEE, 0x90, 0x9B, 0x42, 0x0D, 0x91, 0xF7, 0xBE, 0x6E, 0x5F, 0xB5, 0x6D, 0xB7,
     0x1B, 0x31, 0x10, 0xD8, 0x86, 0x01, 0x1E, 0x87, 0x7E, 0xE5, 0x78, 0x6A, 0xFD, 0x08, 0x01, 0x00,
     0x1B, 0x60, 0x6A, 0x3F, 0x4A, 0x07, 0xD6, 0x48, 0x9A, 0x1B, 0xCD, 0x07, 0x69, 0x7B, 0xD1, 0x66,
@@ -115,7 +115,7 @@ const static uint8_t test_output_v0[160] = {
 
 
 // "cn/1" Cryptonight variant 1 (Monero v7)
-const static uint8_t test_output_v1[160] = {
+const static uint8_t test_output_v1[256] = {
     0xF2, 0x2D, 0x3D, 0x62, 0x03, 0xD2, 0xA0, 0x8B, 0x41, 0xD9, 0x02, 0x72, 0x78, 0xD8, 0xBC, 0xC9,
     0x83, 0xAC, 0xAD, 0xA9, 0xB6, 0x8E, 0x52, 0xE3, 0xC6, 0x89, 0x69, 0x2A, 0x50, 0xE9, 0x21, 0xD9,
     0xC9, 0xFA, 0xE8, 0x42, 0x5D, 0x86, 0x88, 0xDC, 0x23, 0x6B, 0xCD, 0xBC, 0x42, 0xFD, 0xB4, 0x2D,
@@ -130,7 +130,7 @@ const static uint8_t test_output_v1[160] = {
 
 
 // "cn/2" Cryptonight variant 2 (Monero v8)
-const static uint8_t test_output_v2[160] = {
+const static uint8_t test_output_v2[256] = {
     0x97, 0x37, 0x82, 0x82, 0xCF, 0x10, 0xE7, 0xAD, 0x03, 0x3F, 0x7B, 0x80, 0x74, 0xC4, 0x0E, 0x14,
     0xD0, 0x6E, 0x7F, 0x60, 0x9D, 0xDD, 0xDA, 0x78, 0x76, 0x80, 0xB5, 0x8C, 0x05, 0xF4, 0x3D, 0x21,
     0x87, 0x1F, 0xCD, 0x68, 0x23, 0xF6, 0xA8, 0x79, 0xBB, 0x3F, 0x33, 0x95, 0x1C, 0x8E, 0x8E, 0x89,
@@ -145,7 +145,7 @@ const static uint8_t test_output_v2[160] = {
 
 
 // "cn/half"
-const static uint8_t test_output_half[160] = {
+const static uint8_t test_output_half[256] = {
     0x5D, 0x4F, 0xBC, 0x35, 0x60, 0x97, 0xEA, 0x64, 0x40, 0xB0, 0x88, 0x8E, 0xDE, 0xB6, 0x35, 0xDD,
     0xC8, 0x4A, 0x0E, 0x39, 0x7C, 0x86, 0x84, 0x56, 0x89, 0x5C, 0x3F, 0x29, 0xBE, 0x73, 0x12, 0xA7,
     0x02, 0xE6, 0x1D, 0x2B, 0xBC, 0x84, 0xB6, 0x71, 0x96, 0x71, 0xD5, 0x0C, 0xAC, 0x76, 0x0E, 0x6B,
@@ -160,7 +160,7 @@ const static uint8_t test_output_half[160] = {
 
 
 // "cn/msr" Masari (MSR)
-const static uint8_t test_output_msr[160] = {
+const static uint8_t test_output_msr[256] = {
     0x3C, 0x7A, 0x61, 0x08, 0x4C, 0x5E, 0xB8, 0x65, 0xB4, 0x98, 0xAB, 0x2F, 0x5A, 0x1A, 0xC5, 0x2C,
     0x49, 0xC1, 0x77, 0xC2, 0xD0, 0x13, 0x34, 0x42, 0xD6, 0x5E, 0xD5, 0x14, 0x33, 0x5C, 0x82, 0xC5,
     0x69, 0xDF, 0x38, 0x51, 0x1B, 0xB3, 0xEB, 0x7D, 0xE7, 0x6B, 0x08, 0x8E, 0xB6, 0x7E, 0xB7, 0x1C,
@@ -175,7 +175,7 @@ const static uint8_t test_output_msr[160] = {
 
 
 // "cn/xao" Alloy (XAO)
-const static uint8_t test_output_xao[160] = {
+const static uint8_t test_output_xao[256] = {
     0x9A, 0x29, 0xD0, 0xC4, 0xAF, 0xDC, 0x63, 0x9B, 0x65, 0x53, 0xB1, 0xC8, 0x37, 0x35, 0x11, 0x4C,
     0x5D, 0x77, 0x16, 0x21, 0x42, 0x97, 0x5C, 0xB8, 0x50, 0xC0, 0xA5, 0x1F, 0x64, 0x07, 0xBD, 0x33,
     0xF1, 0xC9, 0x98, 0x40, 0x42, 0xDE, 0x39, 0xD1, 0xBA, 0x2D, 0xAD, 0xEC, 0xFE, 0xEA, 0xD8, 0x46,
@@ -190,7 +190,7 @@ const static uint8_t test_output_xao[160] = {
 
 
 // "cn/rto" Arto (RTO)
-const static uint8_t test_output_rto[160] = {
+const static uint8_t test_output_rto[256] = {
     0x82, 0x66, 0x1E, 0x1C, 0x6E, 0x64, 0x36, 0x66, 0x84, 0x06, 0x32, 0x7A, 0x9B, 0xB1, 0x13, 0x19,
     0xA5, 0x56, 0x16, 0x15, 0xDF, 0xEC, 0x1C, 0x9E, 0xE3, 0x88, 0x4A, 0x6C, 0x1C, 0xEB, 0x76, 0xA5,
     0xB3, 0xFB, 0xF4, 0x3F, 0x2B, 0x6A, 0x3A, 0x39, 0xA3, 0x6E, 0x08, 0x33, 0x67, 0x90, 0x31, 0xB9,
@@ -204,7 +204,7 @@ const static uint8_t test_output_rto[160] = {
 };
 
 // "cn/rwz"
-const static uint8_t test_output_rwz[160] = {
+const static uint8_t test_output_rwz[256] = {
     0x5f, 0x56, 0xc6, 0xb0, 0x99, 0x6b, 0xa2, 0x3e, 0x0b, 0xba, 0x07, 0x29, 0xc9, 0x90, 0x74, 0x85,
     0x5a, 0x10, 0xe3, 0x08, 0x7f, 0xdb, 0xfe, 0x94, 0x75, 0x33, 0x54, 0x73, 0x76, 0xf0, 0x75, 0xb8,
     0x8b, 0x70, 0x43, 0x9a, 0xfc, 0xf5, 0xeb, 0x15, 0xbb, 0xf9, 0xad, 0x9d, 0x2a, 0xbd, 0x72, 0x52,
@@ -218,7 +218,7 @@ const static uint8_t test_output_rwz[160] = {
 };
 
 // "cn/zls"
-const static uint8_t test_output_zls[160] = {
+const static uint8_t test_output_zls[256] = {
     0x51, 0x6E, 0x33, 0xC6, 0xE4, 0x46, 0xAB, 0xBC, 0xCD, 0xAD, 0x18, 0xC0, 0x4C, 0xD9, 0xA2, 0x5E,
     0x64, 0x10, 0x28, 0x53, 0xB2, 0x0A, 0x42, 0xDF, 0xDE, 0xAA, 0x8B, 0x59, 0x9E, 0xCF, 0x40, 0xE2,
     0x0D, 0x62, 0x5B, 0x42, 0x18, 0xE2, 0x76, 0xAD, 0xD0, 0x74, 0x90, 0x60, 0x8D, 0xC4, 0xC7, 0x80,
@@ -232,7 +232,7 @@ const static uint8_t test_output_zls[160] = {
 };
 
 // "cn/ccx"
-const static uint8_t test_output_ccx[160] = {
+const static uint8_t test_output_ccx[256] = {
     0xB3, 0xA1, 0x67, 0x86, 0xD2, 0xC9, 0x85, 0xEC, 0xAD, 0xC4, 0x5F, 0x91, 0x05, 0x27, 0xC7, 0xA1,
     0x96, 0xF0, 0xE1, 0xE9, 0x7C, 0x87, 0x09, 0x38, 0x1D, 0x7D, 0x41, 0x93, 0x35, 0xF8, 0x16, 0x72,
     0xC3, 0xBD, 0x8D, 0xE8, 0xD5, 0xAE, 0xB8, 0x59, 0x0A, 0x6C, 0xCB, 0x7B, 0x41, 0x30, 0xF7, 0x04,
@@ -246,7 +246,7 @@ const static uint8_t test_output_ccx[160] = {
 };
 
 // "cn/double"
-const static uint8_t test_output_double[160] = {
+const static uint8_t test_output_double[256] = {
     0xAE, 0xFB, 0xB3, 0xF0, 0xCC, 0x88, 0x04, 0x6D, 0x11, 0x9F, 0x6C, 0x54, 0xB9, 0x6D, 0x90, 0xC9,
     0xE8, 0x84, 0xEA, 0x3B, 0x59, 0x83, 0xA6, 0x0D, 0x50, 0xA4, 0x2D, 0x7D, 0x3E, 0xBE, 0x48, 0x21,
     0x49, 0xCE, 0x8E, 0xF3, 0xBC, 0x8A, 0x36, 0xBF, 0x86, 0x37, 0x89, 0x55, 0x09, 0xBA, 0x22, 0xF8,
@@ -261,7 +261,7 @@ const static uint8_t test_output_double[160] = {
 
 #ifdef XMRIG_ALGO_CN_LITE
 // "cn-lite/0"
-const static uint8_t test_output_v0_lite[160] = {
+const static uint8_t test_output_v0_lite[256] = {
     0x36, 0x95, 0xB4, 0xB5, 0x3B, 0xB0, 0x03, 0x58, 0xB0, 0xAD, 0x38, 0xDC, 0x16, 0x0F, 0xEB, 0x9E,
     0x00, 0x4E, 0xEC, 0xE0, 0x9B, 0x83, 0xA7, 0x2E, 0xF6, 0xBA, 0x98, 0x64, 0xD3, 0x51, 0x0C, 0x88,
     0x28, 0xA2, 0x2B, 0xAD, 0x3F, 0x93, 0xD1, 0x40, 0x8F, 0xCA, 0x47, 0x2E, 0xB5, 0xAD, 0x1C, 0xBE,
@@ -276,7 +276,7 @@ const static uint8_t test_output_v0_lite[160] = {
 
 
 // "cn-lite/1" AEON v7
-const static uint8_t test_output_v1_lite[160] = {
+const static uint8_t test_output_v1_lite[256] = {
     0x6D, 0x8C, 0xDC, 0x44, 0x4E, 0x9B, 0xBB, 0xFD, 0x68, 0xFC, 0x43, 0xFC, 0xD4, 0x85, 0x5B, 0x22,
     0x8C, 0x8A, 0x1B, 0xD9, 0x1D, 0x9D, 0x00, 0x28, 0x5B, 0xEC, 0x02, 0xB7, 0xCA, 0x2D, 0x67, 0x41,
     0x87, 0xC4, 0xE5, 0x70, 0x65, 0x3E, 0xB4, 0xC2, 0xB4, 0x2B, 0x7A, 0x0D, 0x54, 0x65, 0x59, 0x45,
@@ -293,7 +293,7 @@ const static uint8_t test_output_v1_lite[160] = {
 
 #ifdef XMRIG_ALGO_CN_HEAVY
 // "cn-heavy/0"
-const static uint8_t test_output_v0_heavy[160] = {
+const static uint8_t test_output_v0_heavy[256] = {
     0x99, 0x83, 0xF2, 0x1B, 0xDF, 0x20, 0x10, 0xA8, 0xD7, 0x07, 0xBB, 0x2F, 0x14, 0xD7, 0x86, 0x64,
     0xBB, 0xE1, 0x18, 0x7F, 0x55, 0x01, 0x4B, 0x39, 0xE5, 0xF3, 0xD6, 0x93, 0x28, 0xE4, 0x8F, 0xC2,
     0x4D, 0x94, 0x7D, 0xD6, 0xDB, 0x6E, 0x07, 0x48, 0x26, 0x4A, 0x51, 0x2E, 0xAC, 0xF3, 0x25, 0x4A,
@@ -308,7 +308,7 @@ const static uint8_t test_output_v0_heavy[160] = {
 
 
 // "cn-heavy/xhv"
-const static uint8_t test_output_xhv_heavy[160] = {
+const static uint8_t test_output_xhv_heavy[256] = {
     0x5A, 0xC3, 0xF7, 0x85, 0xC4, 0x90, 0xC5, 0x85, 0x50, 0xEC, 0x95, 0xD2, 0x72, 0x65, 0x63, 0x57,
     0x7E, 0x7C, 0x1C, 0x21, 0x2D, 0x0C, 0xDE, 0x59, 0x12, 0x73, 0x20, 0x1E, 0x44, 0xFD, 0xD5, 0xB6,
     0x1F, 0x4E, 0xB2, 0x0A, 0x36, 0x51, 0x4B, 0xF5, 0x4D, 0xC9, 0xE0, 0x90, 0x2C, 0x16, 0x47, 0x3F,
@@ -323,7 +323,7 @@ const static uint8_t test_output_xhv_heavy[160] = {
 
 
 // "cn-heavy/tube"
-const static uint8_t test_output_tube_heavy[160] = {
+const static uint8_t test_output_tube_heavy[256] = {
     0xFE, 0x53, 0x35, 0x20, 0x76, 0xEA, 0xE6, 0x89, 0xFA, 0x3B, 0x4F, 0xDA, 0x61, 0x46, 0x34, 0xCF,
     0xC3, 0x12, 0xEE, 0x0C, 0x38, 0x7D, 0xF2, 0xB8, 0xB7, 0x4D, 0xA2, 0xA1, 0x59, 0x74, 0x12, 0x35,
     0xCD, 0x3F, 0x29, 0xDF, 0x07, 0x4A, 0x14, 0xAD, 0x0B, 0x98, 0x99, 0x37, 0xCA, 0x14, 0x68, 0xA3,
@@ -340,7 +340,7 @@ const static uint8_t test_output_tube_heavy[160] = {
 
 #ifdef XMRIG_ALGO_CN_PICO
 // "cn-pico/trtl"
-const static uint8_t test_output_pico_trtl[160] = {
+const static uint8_t test_output_pico_trtl[256] = {
     0x08, 0xF4, 0x21, 0xD7, 0x83, 0x31, 0x17, 0x30, 0x0E, 0xDA, 0x66, 0xE9, 0x8F, 0x4A, 0x25, 0x69,
     0x09, 0x3D, 0xF3, 0x00, 0x50, 0x01, 0x73, 0x94, 0x4E, 0xFC, 0x40, 0x1E, 0x9A, 0x4A, 0x17, 0xAF,
     0xB2, 0x17, 0x2E, 0xC9, 0x46, 0x6E, 0x1A, 0xEE, 0x70, 0xEC, 0x85, 0x72, 0xA1, 0x4C, 0x23, 0x3E,
@@ -355,7 +355,7 @@ const static uint8_t test_output_pico_trtl[160] = {
 
 
 // "cn-pico/tlo"
-const static uint8_t test_output_pico_tlo[160] = {
+const static uint8_t test_output_pico_tlo[256] = {
     0x99, 0x75, 0xF2, 0xC1, 0xB3, 0xB4, 0x54, 0x34, 0xA4, 0x93, 0x86, 0x21, 0x30, 0x97, 0xF3, 0x1B,
     0xB4, 0xB9, 0xA6, 0x58, 0x6A, 0x7E, 0x81, 0xF4, 0x42, 0x9F, 0x6D, 0x5F, 0x65, 0xC3, 0x8D, 0x1A,
     0xFC, 0x67, 0xDF, 0xCC, 0xB5, 0xFC, 0x90, 0xD7, 0x85, 0x5A, 0xE9, 0x03, 0x36, 0x1E, 0xAB, 0xD7,
@@ -372,7 +372,7 @@ const static uint8_t test_output_pico_tlo[160] = {
 
 #ifdef XMRIG_ALGO_CN_FEMTO
 // "cn/upx2"
-const static uint8_t test_output_femto_upx2[160] = {
+const static uint8_t test_output_femto_upx2[256] = {
     0xAA, 0xBB, 0xB8, 0xED, 0x14, 0xA8, 0x35, 0xFA, 0x22, 0xCF, 0xB1, 0xB5, 0xDE, 0xA8, 0x72, 0xB0,
     0xA1, 0xD6, 0xCB, 0xD8, 0x46, 0xF4, 0x39, 0x1C, 0x0F, 0x01, 0xF3, 0x87, 0x5E, 0x3A, 0x37, 0x61,
     0x38, 0x59, 0x15, 0x72, 0xF8, 0x20, 0xD4, 0xDE, 0x25, 0x3C, 0xF5, 0x5A, 0x21, 0x92, 0xB6, 0x22,
@@ -389,7 +389,7 @@ const static uint8_t test_output_femto_upx2[160] = {
 
 #ifdef XMRIG_ALGO_ARGON2
 // "argon2/chukwa"
-const static uint8_t argon2_chukwa_test_out[160] = {
+const static uint8_t argon2_chukwa_test_out[256] = {
     0xC1, 0x58, 0xA1, 0x05, 0xAE, 0x75, 0xC7, 0x56, 0x1C, 0xFD, 0x02, 0x90, 0x83, 0xA4, 0x7A, 0x87,
     0x65, 0x3D, 0x51, 0xF9, 0x14, 0x12, 0x8E, 0x21, 0xC1, 0x97, 0x1D, 0x8B, 0x10, 0xC4, 0x90, 0x34,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -403,7 +403,7 @@ const static uint8_t argon2_chukwa_test_out[160] = {
 };
 
 // "argon2/chukwav2"
-const static uint8_t argon2_chukwa_v2_test_out[160] = {
+const static uint8_t argon2_chukwa_v2_test_out[256] = {
     0x77, 0xCF, 0x69, 0x58, 0xB3, 0x53, 0x6E, 0x1F, 0x9F, 0x0D, 0x1E, 0xA1, 0x65, 0xF2, 0x28, 0x11,
     0xCA, 0x7B, 0xC4, 0x87, 0xEA, 0x9F, 0x52, 0x03, 0x0B, 0x50, 0x50, 0xC1, 0x7F, 0xCD, 0xD8, 0xF5,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -417,7 +417,7 @@ const static uint8_t argon2_chukwa_v2_test_out[160] = {
 };
 
 // "argon2/wrkz"
-const static uint8_t argon2_wrkz_test_out[160] = {
+const static uint8_t argon2_wrkz_test_out[256] = {
     0x35, 0xE0, 0x83, 0xD4, 0xB9, 0xC6, 0x4C, 0x2A, 0x68, 0x82, 0x0A, 0x43, 0x1F, 0x61, 0x31, 0x19,
     0x98, 0xA8, 0xCD, 0x18, 0x64, 0xDB, 0xA4, 0x07, 0x7E, 0x25, 0xB7, 0xF1, 0x21, 0xD5, 0x4B, 0xD1,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -434,7 +434,7 @@ const static uint8_t argon2_wrkz_test_out[160] = {
 
 #ifdef XMRIG_ALGO_ASTROBWT
 // "astrobwt"
-const static uint8_t astrobwt_dero_test_out[160] = {
+const static uint8_t astrobwt_dero_test_out[256] = {
     0x7E, 0x88, 0x44, 0xF2, 0xD6, 0xB7, 0xA4, 0x34, 0x98, 0xFE, 0x6D, 0x22, 0x65, 0x27, 0x68, 0x90,
     0x23, 0xDA, 0x8A, 0x52, 0xF9, 0xFC, 0x4E, 0xC6, 0x9E, 0x5A, 0xAA, 0xA6, 0x3E, 0xDC, 0xE1, 0xC1,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff --git a/src/crypto/cn/CryptoNight_x86.h b/src/crypto/cn/CryptoNight_x86.h
index e5cfe4525..f718bd7a5 100644
--- a/src/crypto/cn/CryptoNight_x86.h
+++ b/src/crypto/cn/CryptoNight_x86.h
@@ -285,23 +285,41 @@ inline constexpr uint64_t interleaved_index<0>(uint64_t k)
 
 
 template<Algorithm::Id ALGO, bool SOFT_AES, int interleave>
-static inline void cn_explode_scratchpad(const __m128i *input, __m128i *output)
+static NOINLINE void cn_explode_scratchpad(cryptonight_ctx *ctx)
 {
     constexpr CnAlgo<ALGO> props;
 
+    constexpr size_t N = (props.memory() / sizeof(__m128i)) / (props.half_mem() ? 2 : 1);
+
     __m128i xin0, xin1, xin2, xin3, xin4, xin5, xin6, xin7;
     __m128i k0, k1, k2, k3, k4, k5, k6, k7, k8, k9;
 
+    const __m128i* input = reinterpret_cast<const __m128i*>(ctx->state);
+    __m128i* output = reinterpret_cast<__m128i*>(ctx->memory);
+
     aes_genkey<SOFT_AES>(input, &k0, &k1, &k2, &k3, &k4, &k5, &k6, &k7, &k8, &k9);
 
-    xin0 = _mm_load_si128(input + 4);
-    xin1 = _mm_load_si128(input + 5);
-    xin2 = _mm_load_si128(input + 6);
-    xin3 = _mm_load_si128(input + 7);
-    xin4 = _mm_load_si128(input + 8);
-    xin5 = _mm_load_si128(input + 9);
-    xin6 = _mm_load_si128(input + 10);
-    xin7 = _mm_load_si128(input + 11);
+    if (props.half_mem() && !ctx->first_half) {
+        const __m128i* p = reinterpret_cast<const __m128i*>(ctx->save_state);
+        xin0 = _mm_load_si128(p + 0);
+        xin1 = _mm_load_si128(p + 1);
+        xin2 = _mm_load_si128(p + 2);
+        xin3 = _mm_load_si128(p + 3);
+        xin4 = _mm_load_si128(p + 4);
+        xin5 = _mm_load_si128(p + 5);
+        xin6 = _mm_load_si128(p + 6);
+        xin7 = _mm_load_si128(p + 7);
+    }
+    else {
+        xin0 = _mm_load_si128(input + 4);
+        xin1 = _mm_load_si128(input + 5);
+        xin2 = _mm_load_si128(input + 6);
+        xin3 = _mm_load_si128(input + 7);
+        xin4 = _mm_load_si128(input + 8);
+        xin5 = _mm_load_si128(input + 9);
+        xin6 = _mm_load_si128(input + 10);
+        xin7 = _mm_load_si128(input + 11);
+    }
 
     if (props.isHeavy()) {
         for (size_t i = 0; i < 16; i++) {
@@ -320,50 +338,73 @@ static inline void cn_explode_scratchpad(const __m128i *input, __m128i *output)
         }
     }
 
-    for (size_t i = 0; i < props.memory() / sizeof(__m128i); i += 8) {
-        if (interleave > 0) {
-            _mm_prefetch((const char*)(output), _MM_HINT_T0);
-            _mm_prefetch((const char*)(output + (64 << interleave) / sizeof(__m128i)), _MM_HINT_T0);
-        }
+    constexpr int output_increment = (64 << interleave) / sizeof(__m128i);
+    constexpr int prefetch_dist = 2048 / sizeof(__m128i);
 
-        aes_round<SOFT_AES>(k0, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k1, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k2, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k3, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k4, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k5, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k6, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k7, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k8, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
-        aes_round<SOFT_AES>(k9, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+    __m128i* e = output + N - prefetch_dist;
+    __m128i* prefetch_ptr = output + prefetch_dist;
 
-        _mm_store_si128(output + 0, xin0);
-        _mm_store_si128(output + 1, xin1);
-        _mm_store_si128(output + 2, xin2);
-        _mm_store_si128(output + 3, xin3);
+    for (int i = 0; i < 2; ++i) {
+        do {
+            _mm_prefetch((const char*)(prefetch_ptr), _MM_HINT_T0);
+            _mm_prefetch((const char*)(prefetch_ptr + output_increment), _MM_HINT_T0);
 
-        constexpr int output_increment = (64 << interleave) / sizeof(__m128i);
+            aes_round<SOFT_AES>(k0, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k1, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k2, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k3, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k4, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k5, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k6, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k7, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k8, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
+            aes_round<SOFT_AES>(k9, &xin0, &xin1, &xin2, &xin3, &xin4, &xin5, &xin6, &xin7);
 
-        _mm_store_si128(output + output_increment + 0, xin4);
-        _mm_store_si128(output + output_increment + 1, xin5);
-        _mm_store_si128(output + output_increment + 2, xin6);
-        _mm_store_si128(output + output_increment + 3, xin7);
+            _mm_store_si128(output + 0, xin0);
+            _mm_store_si128(output + 1, xin1);
+            _mm_store_si128(output + 2, xin2);
+            _mm_store_si128(output + 3, xin3);
 
-        output += output_increment * 2;
+            _mm_store_si128(output + output_increment + 0, xin4);
+            _mm_store_si128(output + output_increment + 1, xin5);
+            _mm_store_si128(output + output_increment + 2, xin6);
+            _mm_store_si128(output + output_increment + 3, xin7);
+
+            output += output_increment * 2;
+            prefetch_ptr += output_increment * 2;
+        } while (output < e);
+        e += prefetch_dist;
+        prefetch_ptr = output;
+    }
+
+    if (props.half_mem() && ctx->first_half) {
+         __m128i* p = reinterpret_cast<__m128i*>(ctx->save_state);
+        _mm_store_si128(p + 0, xin0);
+        _mm_store_si128(p + 1, xin1);
+        _mm_store_si128(p + 2, xin2);
+        _mm_store_si128(p + 3, xin3);
+        _mm_store_si128(p + 4, xin4);
+        _mm_store_si128(p + 5, xin5);
+        _mm_store_si128(p + 6, xin6);
+        _mm_store_si128(p + 7, xin7);
     }
 }
 
 
 template<Algorithm::Id ALGO, bool SOFT_AES, int interleave>
-static inline void cn_implode_scratchpad(const __m128i *input, __m128i *output)
+static NOINLINE void cn_implode_scratchpad(cryptonight_ctx *ctx)
 {
     constexpr CnAlgo<ALGO> props;
 
     constexpr bool IS_HEAVY = props.isHeavy();
+    constexpr size_t N = (props.memory() / sizeof(__m128i)) / (props.half_mem() ? 2 : 1);
 
     __m128i xout0, xout1, xout2, xout3, xout4, xout5, xout6, xout7;
     __m128i k0, k1, k2, k3, k4, k5, k6, k7, k8, k9;
 
+    const __m128i *input = reinterpret_cast<const __m128i*>(ctx->memory);
+    __m128i *output = reinterpret_cast<__m128i*>(ctx->state);
+
     aes_genkey<SOFT_AES>(output + 2, &k0, &k1, &k2, &k3, &k4, &k5, &k6, &k7, &k8, &k9);
 
     xout0 = _mm_load_si128(output + 4);
@@ -376,46 +417,54 @@ static inline void cn_implode_scratchpad(const __m128i *input, __m128i *output)
     xout7 = _mm_load_si128(output + 11);
 
     const __m128i* input_begin = input;
-    for (size_t i = 0; i < props.memory() / sizeof(__m128i);) {
-        xout0 = _mm_xor_si128(_mm_load_si128(input + 0), xout0);
-        xout1 = _mm_xor_si128(_mm_load_si128(input + 1), xout1);
-        xout2 = _mm_xor_si128(_mm_load_si128(input + 2), xout2);
-        xout3 = _mm_xor_si128(_mm_load_si128(input + 3), xout3);
-
-        constexpr int input_increment = (64 << interleave) / sizeof(__m128i);
-
-        xout4 = _mm_xor_si128(_mm_load_si128(input + input_increment + 0), xout4);
-        xout5 = _mm_xor_si128(_mm_load_si128(input + input_increment + 1), xout5);
-        xout6 = _mm_xor_si128(_mm_load_si128(input + input_increment + 2), xout6);
-        xout7 = _mm_xor_si128(_mm_load_si128(input + input_increment + 3), xout7);
-
-        input += input_increment * 2;
-        i += 8;
-
-        if ((interleave > 0) && (i < props.memory() / sizeof(__m128i))) {
-            _mm_prefetch((const char*)(input), _MM_HINT_T0);
-            _mm_prefetch((const char*)(input + (64 << interleave) / sizeof(__m128i)), _MM_HINT_T0);
+    for (size_t part = 0; part < (props.half_mem() ? 2 : 1); ++part) {
+        if (props.half_mem() && (part == 1)) {
+            input = input_begin;
+            ctx->first_half = false;
+            cn_explode_scratchpad<ALGO, SOFT_AES, interleave>(ctx);
         }
 
-        aes_round<SOFT_AES>(k0, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k1, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k2, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k3, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k4, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k5, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k6, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k7, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k8, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
-        aes_round<SOFT_AES>(k9, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+        for (size_t i = 0; i < N;) {
+            xout0 = _mm_xor_si128(_mm_load_si128(input + 0), xout0);
+            xout1 = _mm_xor_si128(_mm_load_si128(input + 1), xout1);
+            xout2 = _mm_xor_si128(_mm_load_si128(input + 2), xout2);
+            xout3 = _mm_xor_si128(_mm_load_si128(input + 3), xout3);
 
-        if (IS_HEAVY) {
-            mix_and_propagate(xout0, xout1, xout2, xout3, xout4, xout5, xout6, xout7);
+            constexpr int input_increment = (64 << interleave) / sizeof(__m128i);
+
+            xout4 = _mm_xor_si128(_mm_load_si128(input + input_increment + 0), xout4);
+            xout5 = _mm_xor_si128(_mm_load_si128(input + input_increment + 1), xout5);
+            xout6 = _mm_xor_si128(_mm_load_si128(input + input_increment + 2), xout6);
+            xout7 = _mm_xor_si128(_mm_load_si128(input + input_increment + 3), xout7);
+
+            input += input_increment * 2;
+            i += 8;
+
+            if (i < N) {
+                _mm_prefetch((const char*)(input), _MM_HINT_T0);
+                _mm_prefetch((const char*)(input + input_increment), _MM_HINT_T0);
+            }
+
+            aes_round<SOFT_AES>(k0, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k1, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k2, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k3, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k4, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k5, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k6, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k7, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k8, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+            aes_round<SOFT_AES>(k9, &xout0, &xout1, &xout2, &xout3, &xout4, &xout5, &xout6, &xout7);
+
+            if (IS_HEAVY) {
+                mix_and_propagate(xout0, xout1, xout2, xout3, xout4, xout5, xout6, xout7);
+            }
         }
     }
 
     if (IS_HEAVY) {
         input = input_begin;
-        for (size_t i = 0; i < props.memory() / sizeof(__m128i);) {
+        for (size_t i = 0; i < N;) {
             xout0 = _mm_xor_si128(_mm_load_si128(input + 0), xout0);
             xout1 = _mm_xor_si128(_mm_load_si128(input + 1), xout1);
             xout2 = _mm_xor_si128(_mm_load_si128(input + 2), xout2);
@@ -523,6 +572,9 @@ static inline __m128i int_sqrt_v2(const uint64_t n0)
 void v4_soft_aes_compile_code(const V4_Instruction *code, int code_size, void *machine_code, xmrig::Assembly ASM);
 
 
+alignas(64) static const uint32_t tweak1_table[256] = { 268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,268435456,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,805306368,0,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456,805306368,268435456 };
+
+
 namespace xmrig {
 
 
@@ -541,12 +593,7 @@ static inline void cryptonight_monero_tweak(uint64_t *mem_out, const uint8_t *l,
         tmp = _mm_castps_si128(_mm_movehl_ps(_mm_castsi128_ps(tmp), _mm_castsi128_ps(tmp)));
         uint64_t vh = _mm_cvtsi128_si64(tmp);
 
-        uint8_t x = static_cast<uint8_t>(vh >> 24);
-        static const uint16_t table = 0x7531;
-        const uint8_t index = (((x >> (3)) & 6) | (x & 1)) << 1;
-        vh ^= ((table >> index) & 0x3) << 28;
-
-        mem_out[1] = vh;
+        mem_out[1] = vh ^ tweak1_table[static_cast<uint32_t>(vh) >> 24];
     }
 }
 
@@ -587,7 +634,11 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
     }
 
     keccak(input, size, ctx[0]->state);
-    cn_explode_scratchpad<ALGO, SOFT_AES, interleave>(reinterpret_cast<const __m128i *>(ctx[0]->state), reinterpret_cast<__m128i *>(ctx[0]->memory));
+
+    if (props.half_mem()) {
+        ctx[0]->first_half = true;
+    }
+    cn_explode_scratchpad<ALGO, SOFT_AES, interleave>(ctx[0]);
 
     uint64_t *h0 = reinterpret_cast<uint64_t*>(ctx[0]->state);
     uint8_t *l0   = ctx[0]->memory;
@@ -742,7 +793,7 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
     }
 #   endif
 
-    cn_implode_scratchpad<ALGO, SOFT_AES, interleave>(reinterpret_cast<const __m128i *>(ctx[0]->memory), reinterpret_cast<__m128i *>(ctx[0]->state));
+    cn_implode_scratchpad<ALGO, SOFT_AES, interleave>(ctx[0]);
     keccakf(h0, 24);
     extra_hashes[ctx[0]->state[0] & 3](ctx[0]->state, 200, output);
 }
@@ -833,7 +884,11 @@ inline void cryptonight_single_hash_asm(const uint8_t *__restrict__ input, size_
     }
 
     keccak(input, size, ctx[0]->state);
-    cn_explode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[0]->state), reinterpret_cast<__m128i*>(ctx[0]->memory));
+
+    if (props.half_mem()) {
+        ctx[0]->first_half = true;
+    }
+    cn_explode_scratchpad<ALGO, false, 0>(ctx[0]);
 
     if (ALGO == Algorithm::CN_2) {
         if (ASM == Assembly::INTEL) {
@@ -915,7 +970,7 @@ inline void cryptonight_single_hash_asm(const uint8_t *__restrict__ input, size_
         ctx[0]->generated_code(ctx);
     }
 
-    cn_implode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[0]->memory), reinterpret_cast<__m128i*>(ctx[0]->state));
+    cn_implode_scratchpad<ALGO, false, 0>(ctx[0]);
     keccakf(reinterpret_cast<uint64_t*>(ctx[0]->state), 24);
     extra_hashes[ctx[0]->state[0] & 3](ctx[0]->state, 200, output);
 }
@@ -937,8 +992,12 @@ inline void cryptonight_double_hash_asm(const uint8_t *__restrict__ input, size_
     keccak(input,        size, ctx[0]->state);
     keccak(input + size, size, ctx[1]->state);
 
-    cn_explode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[0]->state), reinterpret_cast<__m128i*>(ctx[0]->memory));
-    cn_explode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[1]->state), reinterpret_cast<__m128i*>(ctx[1]->memory));
+    if (props.half_mem()) {
+        ctx[0]->first_half = true;
+        ctx[1]->first_half = true;
+    }
+    cn_explode_scratchpad<ALGO, false, 0>(ctx[0]);
+    cn_explode_scratchpad<ALGO, false, 0>(ctx[1]);
 
     if (ALGO == Algorithm::CN_2) {
         cnv2_double_mainloop_sandybridge_asm(ctx);
@@ -977,8 +1036,8 @@ inline void cryptonight_double_hash_asm(const uint8_t *__restrict__ input, size_
         ctx[0]->generated_code(ctx);
     }
 
-    cn_implode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[0]->memory), reinterpret_cast<__m128i*>(ctx[0]->state));
-    cn_implode_scratchpad<ALGO, false, 0>(reinterpret_cast<const __m128i*>(ctx[1]->memory), reinterpret_cast<__m128i*>(ctx[1]->state));
+    cn_implode_scratchpad<ALGO, false, 0>(ctx[0]);
+    cn_implode_scratchpad<ALGO, false, 0>(ctx[1]);
 
     keccakf(reinterpret_cast<uint64_t*>(ctx[0]->state), 24);
     keccakf(reinterpret_cast<uint64_t*>(ctx[1]->state), 24);
@@ -1029,8 +1088,12 @@ inline void cryptonight_double_hash(const uint8_t *__restrict__ input, size_t si
     VARIANT4_RANDOM_MATH_INIT(0);
     VARIANT4_RANDOM_MATH_INIT(1);
 
-    cn_explode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i *>(h0), reinterpret_cast<__m128i *>(l0));
-    cn_explode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i *>(h1), reinterpret_cast<__m128i *>(l1));
+    if (props.half_mem()) {
+        ctx[0]->first_half = true;
+        ctx[1]->first_half = true;
+    }
+    cn_explode_scratchpad<ALGO, SOFT_AES, 0>(ctx[0]);
+    cn_explode_scratchpad<ALGO, SOFT_AES, 0>(ctx[1]);
 
     uint64_t al0 = h0[0] ^ h0[4];
     uint64_t al1 = h1[0] ^ h1[4];
@@ -1225,8 +1288,8 @@ inline void cryptonight_double_hash(const uint8_t *__restrict__ input, size_t si
         bx10 = cx1;
     }
 
-    cn_implode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i *>(l0), reinterpret_cast<__m128i *>(h0));
-    cn_implode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i *>(l1), reinterpret_cast<__m128i *>(h1));
+    cn_implode_scratchpad<ALGO, SOFT_AES, 0>(ctx[0]);
+    cn_implode_scratchpad<ALGO, SOFT_AES, 0>(ctx[1]);
 
     keccakf(h0, 24);
     keccakf(h1, 24);
@@ -1371,7 +1434,10 @@ inline void cryptonight_triple_hash(const uint8_t *__restrict__ input, size_t si
 
     for (size_t i = 0; i < 3; i++) {
         keccak(input + size * i, size, ctx[i]->state);
-        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->state), reinterpret_cast<__m128i*>(ctx[i]->memory));
+        if (props.half_mem()) {
+            ctx[i]->first_half = true;
+        }
+        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
     }
 
     uint8_t* l0  = ctx[0]->memory;
@@ -1416,7 +1482,7 @@ inline void cryptonight_triple_hash(const uint8_t *__restrict__ input, size_t si
     }
 
     for (size_t i = 0; i < 3; i++) {
-        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->memory), reinterpret_cast<__m128i*>(ctx[i]->state));
+        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
         keccakf(reinterpret_cast<uint64_t*>(ctx[i]->state), 24);
         extra_hashes[ctx[i]->state[0] & 3](ctx[i]->state, 200, output + 32 * i);
     }
@@ -1445,7 +1511,10 @@ inline void cryptonight_quad_hash(const uint8_t *__restrict__ input, size_t size
 
     for (size_t i = 0; i < 4; i++) {
         keccak(input + size * i, size, ctx[i]->state);
-        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->state), reinterpret_cast<__m128i*>(ctx[i]->memory));
+        if (props.half_mem()) {
+            ctx[i]->first_half = true;
+        }
+        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
     }
 
     uint8_t* l0  = ctx[0]->memory;
@@ -1498,7 +1567,7 @@ inline void cryptonight_quad_hash(const uint8_t *__restrict__ input, size_t size
     }
 
     for (size_t i = 0; i < 4; i++) {
-        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->memory), reinterpret_cast<__m128i*>(ctx[i]->state));
+        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
         keccakf(reinterpret_cast<uint64_t*>(ctx[i]->state), 24);
         extra_hashes[ctx[i]->state[0] & 3](ctx[i]->state, 200, output + 32 * i);
     }
@@ -1527,7 +1596,10 @@ inline void cryptonight_penta_hash(const uint8_t *__restrict__ input, size_t siz
 
     for (size_t i = 0; i < 5; i++) {
         keccak(input + size * i, size, ctx[i]->state);
-        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->state), reinterpret_cast<__m128i*>(ctx[i]->memory));
+        if (props.half_mem()) {
+            ctx[i]->first_half = true;
+        }
+        cn_explode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
     }
 
     uint8_t* l0  = ctx[0]->memory;
@@ -1588,7 +1660,7 @@ inline void cryptonight_penta_hash(const uint8_t *__restrict__ input, size_t siz
     }
 
     for (size_t i = 0; i < 5; i++) {
-        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(reinterpret_cast<const __m128i*>(ctx[i]->memory), reinterpret_cast<__m128i*>(ctx[i]->state));
+        cn_implode_scratchpad<ALGO, SOFT_AES, 0>(ctx[i]);
         keccakf(reinterpret_cast<uint64_t*>(ctx[i]->state), 24);
         extra_hashes[ctx[i]->state[0] & 3](ctx[i]->state, 200, output + 32 * i);
     }
diff --git a/src/crypto/ghostrider/CMakeLists.txt b/src/crypto/ghostrider/CMakeLists.txt
new file mode 100644
index 000000000..f76fe649e
--- /dev/null
+++ b/src/crypto/ghostrider/CMakeLists.txt
@@ -0,0 +1,59 @@
+cmake_minimum_required(VERSION 2.8.12)
+project(GhostRider)
+
+set(HEADERS
+    sph_types.h
+    sph_blake.h
+    sph_bmw.h
+    sph_cubehash.h
+    sph_echo.h
+    sph_fugue.h
+    sph_groestl.h
+    sph_hamsi.h
+    sph_jh.h
+    sph_keccak.h
+    sph_luffa.h
+    sph_sha2.h
+    sph_shabal.h
+    sph_shavite.h
+    sph_simd.h
+    sph_skein.h
+    sph_whirlpool.h
+    ghostrider.h
+)
+
+set(SOURCES
+    sph_blake.c
+    sph_bmw.c
+    sph_cubehash.c
+    sph_echo.c
+    sph_fugue.c
+    sph_groestl.c
+    sph_hamsi.c
+    sph_jh.c
+    sph_keccak.c
+    sph_luffa.c
+    sph_shabal.c
+    sph_shavite.c
+    sph_simd.c
+    sph_sha2.c
+    sph_skein.c
+    sph_whirlpool.c
+    ghostrider.cpp
+)
+
+if (CMAKE_C_COMPILER_ID MATCHES GNU)
+    # gcc 11.2.0 crashes with -ftree-vrp
+    set_source_files_properties(sph_jh.c PROPERTIES COMPILE_FLAGS "-Ofast -fno-tree-vrp")
+
+    # gcc 11.2.0 creates incorrect code with -O3
+    set_source_files_properties(sph_sha2.c PROPERTIES COMPILE_FLAGS "-O2")
+
+    set_source_files_properties(sph_luffa.c PROPERTIES COMPILE_FLAGS "-Ofast -Wno-unused-const-variable")
+endif()
+
+include_directories(.)
+include_directories(../..)
+include_directories(${UV_INCLUDE_DIR})
+
+add_library(ghostrider STATIC ${HEADERS} ${SOURCES})
diff --git a/src/crypto/ghostrider/aes_helper.c b/src/crypto/ghostrider/aes_helper.c
new file mode 100644
index 000000000..75b7cc69d
--- /dev/null
+++ b/src/crypto/ghostrider/aes_helper.c
@@ -0,0 +1,392 @@
+/* $Id: aes_helper.c 220 2010-06-09 09:21:50Z tp $ */
+/*
+ * AES tables. This file is not meant to be compiled by itself; it
+ * is included by some hash function implementations. It contains
+ * the precomputed tables and helper macros for evaluating an AES
+ * round, optionally with a final XOR with a subkey.
+ *
+ * By default, this file defines the tables and macros for little-endian
+ * processing (i.e. it is assumed that the input bytes have been read
+ * from memory and assembled with the little-endian convention). If
+ * the 'AES_BIG_ENDIAN' macro is defined (to a non-zero integer value)
+ * when this file is included, then the tables and macros for big-endian
+ * processing are defined instead. The big-endian tables and macros have
+ * names distinct from the little-endian tables and macros, hence it is
+ * possible to have both simultaneously, by including this file twice
+ * (with and without the AES_BIG_ENDIAN macro).
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include "sph_types.h"
+#ifdef __cplusplus
+extern "C"{
+#endif
+#if AES_BIG_ENDIAN
+
+#define AESx(x)   ( ((SPH_C32(x) >> 24) & SPH_C32(0x000000FF)) \
+                  | ((SPH_C32(x) >>  8) & SPH_C32(0x0000FF00)) \
+                  | ((SPH_C32(x) <<  8) & SPH_C32(0x00FF0000)) \
+                  | ((SPH_C32(x) << 24) & SPH_C32(0xFF000000)))
+
+#define AES0      AES0_BE
+#define AES1      AES1_BE
+#define AES2      AES2_BE
+#define AES3      AES3_BE
+
+#define AES_ROUND_BE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3)   do { \
+		(Y0) = AES0[((X0) >> 24) & 0xFF] \
+			^ AES1[((X1) >> 16) & 0xFF] \
+			^ AES2[((X2) >> 8) & 0xFF] \
+			^ AES3[(X3) & 0xFF] ^ (K0); \
+		(Y1) = AES0[((X1) >> 24) & 0xFF] \
+			^ AES1[((X2) >> 16) & 0xFF] \
+			^ AES2[((X3) >> 8) & 0xFF] \
+			^ AES3[(X0) & 0xFF] ^ (K1); \
+		(Y2) = AES0[((X2) >> 24) & 0xFF] \
+			^ AES1[((X3) >> 16) & 0xFF] \
+			^ AES2[((X0) >> 8) & 0xFF] \
+			^ AES3[(X1) & 0xFF] ^ (K2); \
+		(Y3) = AES0[((X3) >> 24) & 0xFF] \
+			^ AES1[((X0) >> 16) & 0xFF] \
+			^ AES2[((X1) >> 8) & 0xFF] \
+			^ AES3[(X2) & 0xFF] ^ (K3); \
+	} while (0)
+
+#define AES_ROUND_NOKEY_BE(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \
+	AES_ROUND_BE(X0, X1, X2, X3, 0, 0, 0, 0, Y0, Y1, Y2, Y3)
+
+#else
+
+#define AESx(x)   SPH_C32(x)
+#define AES0      AES0_LE
+#define AES1      AES1_LE
+#define AES2      AES2_LE
+#define AES3      AES3_LE
+
+#define AES_ROUND_LE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3)   do { \
+		(Y0) = AES0[(X0) & 0xFF] \
+			^ AES1[((X1) >> 8) & 0xFF] \
+			^ AES2[((X2) >> 16) & 0xFF] \
+			^ AES3[((X3) >> 24) & 0xFF] ^ (K0); \
+		(Y1) = AES0[(X1) & 0xFF] \
+			^ AES1[((X2) >> 8) & 0xFF] \
+			^ AES2[((X3) >> 16) & 0xFF] \
+			^ AES3[((X0) >> 24) & 0xFF] ^ (K1); \
+		(Y2) = AES0[(X2) & 0xFF] \
+			^ AES1[((X3) >> 8) & 0xFF] \
+			^ AES2[((X0) >> 16) & 0xFF] \
+			^ AES3[((X1) >> 24) & 0xFF] ^ (K2); \
+		(Y3) = AES0[(X3) & 0xFF] \
+			^ AES1[((X0) >> 8) & 0xFF] \
+			^ AES2[((X1) >> 16) & 0xFF] \
+			^ AES3[((X2) >> 24) & 0xFF] ^ (K3); \
+	} while (0)
+
+#define AES_ROUND_NOKEY_LE(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \
+	AES_ROUND_LE(X0, X1, X2, X3, 0, 0, 0, 0, Y0, Y1, Y2, Y3)
+
+#endif
+
+/*
+ * The AES*[] tables allow us to perform a fast evaluation of an AES
+ * round; table AESi[] combines SubBytes for a byte at row i, and
+ * MixColumns for the column where that byte goes after ShiftRows.
+ */
+
+static const sph_u32 AES0[256] = {
+	AESx(0xA56363C6), AESx(0x847C7CF8), AESx(0x997777EE), AESx(0x8D7B7BF6),
+	AESx(0x0DF2F2FF), AESx(0xBD6B6BD6), AESx(0xB16F6FDE), AESx(0x54C5C591),
+	AESx(0x50303060), AESx(0x03010102), AESx(0xA96767CE), AESx(0x7D2B2B56),
+	AESx(0x19FEFEE7), AESx(0x62D7D7B5), AESx(0xE6ABAB4D), AESx(0x9A7676EC),
+	AESx(0x45CACA8F), AESx(0x9D82821F), AESx(0x40C9C989), AESx(0x877D7DFA),
+	AESx(0x15FAFAEF), AESx(0xEB5959B2), AESx(0xC947478E), AESx(0x0BF0F0FB),
+	AESx(0xECADAD41), AESx(0x67D4D4B3), AESx(0xFDA2A25F), AESx(0xEAAFAF45),
+	AESx(0xBF9C9C23), AESx(0xF7A4A453), AESx(0x967272E4), AESx(0x5BC0C09B),
+	AESx(0xC2B7B775), AESx(0x1CFDFDE1), AESx(0xAE93933D), AESx(0x6A26264C),
+	AESx(0x5A36366C), AESx(0x413F3F7E), AESx(0x02F7F7F5), AESx(0x4FCCCC83),
+	AESx(0x5C343468), AESx(0xF4A5A551), AESx(0x34E5E5D1), AESx(0x08F1F1F9),
+	AESx(0x937171E2), AESx(0x73D8D8AB), AESx(0x53313162), AESx(0x3F15152A),
+	AESx(0x0C040408), AESx(0x52C7C795), AESx(0x65232346), AESx(0x5EC3C39D),
+	AESx(0x28181830), AESx(0xA1969637), AESx(0x0F05050A), AESx(0xB59A9A2F),
+	AESx(0x0907070E), AESx(0x36121224), AESx(0x9B80801B), AESx(0x3DE2E2DF),
+	AESx(0x26EBEBCD), AESx(0x6927274E), AESx(0xCDB2B27F), AESx(0x9F7575EA),
+	AESx(0x1B090912), AESx(0x9E83831D), AESx(0x742C2C58), AESx(0x2E1A1A34),
+	AESx(0x2D1B1B36), AESx(0xB26E6EDC), AESx(0xEE5A5AB4), AESx(0xFBA0A05B),
+	AESx(0xF65252A4), AESx(0x4D3B3B76), AESx(0x61D6D6B7), AESx(0xCEB3B37D),
+	AESx(0x7B292952), AESx(0x3EE3E3DD), AESx(0x712F2F5E), AESx(0x97848413),
+	AESx(0xF55353A6), AESx(0x68D1D1B9), AESx(0x00000000), AESx(0x2CEDEDC1),
+	AESx(0x60202040), AESx(0x1FFCFCE3), AESx(0xC8B1B179), AESx(0xED5B5BB6),
+	AESx(0xBE6A6AD4), AESx(0x46CBCB8D), AESx(0xD9BEBE67), AESx(0x4B393972),
+	AESx(0xDE4A4A94), AESx(0xD44C4C98), AESx(0xE85858B0), AESx(0x4ACFCF85),
+	AESx(0x6BD0D0BB), AESx(0x2AEFEFC5), AESx(0xE5AAAA4F), AESx(0x16FBFBED),
+	AESx(0xC5434386), AESx(0xD74D4D9A), AESx(0x55333366), AESx(0x94858511),
+	AESx(0xCF45458A), AESx(0x10F9F9E9), AESx(0x06020204), AESx(0x817F7FFE),
+	AESx(0xF05050A0), AESx(0x443C3C78), AESx(0xBA9F9F25), AESx(0xE3A8A84B),
+	AESx(0xF35151A2), AESx(0xFEA3A35D), AESx(0xC0404080), AESx(0x8A8F8F05),
+	AESx(0xAD92923F), AESx(0xBC9D9D21), AESx(0x48383870), AESx(0x04F5F5F1),
+	AESx(0xDFBCBC63), AESx(0xC1B6B677), AESx(0x75DADAAF), AESx(0x63212142),
+	AESx(0x30101020), AESx(0x1AFFFFE5), AESx(0x0EF3F3FD), AESx(0x6DD2D2BF),
+	AESx(0x4CCDCD81), AESx(0x140C0C18), AESx(0x35131326), AESx(0x2FECECC3),
+	AESx(0xE15F5FBE), AESx(0xA2979735), AESx(0xCC444488), AESx(0x3917172E),
+	AESx(0x57C4C493), AESx(0xF2A7A755), AESx(0x827E7EFC), AESx(0x473D3D7A),
+	AESx(0xAC6464C8), AESx(0xE75D5DBA), AESx(0x2B191932), AESx(0x957373E6),
+	AESx(0xA06060C0), AESx(0x98818119), AESx(0xD14F4F9E), AESx(0x7FDCDCA3),
+	AESx(0x66222244), AESx(0x7E2A2A54), AESx(0xAB90903B), AESx(0x8388880B),
+	AESx(0xCA46468C), AESx(0x29EEEEC7), AESx(0xD3B8B86B), AESx(0x3C141428),
+	AESx(0x79DEDEA7), AESx(0xE25E5EBC), AESx(0x1D0B0B16), AESx(0x76DBDBAD),
+	AESx(0x3BE0E0DB), AESx(0x56323264), AESx(0x4E3A3A74), AESx(0x1E0A0A14),
+	AESx(0xDB494992), AESx(0x0A06060C), AESx(0x6C242448), AESx(0xE45C5CB8),
+	AESx(0x5DC2C29F), AESx(0x6ED3D3BD), AESx(0xEFACAC43), AESx(0xA66262C4),
+	AESx(0xA8919139), AESx(0xA4959531), AESx(0x37E4E4D3), AESx(0x8B7979F2),
+	AESx(0x32E7E7D5), AESx(0x43C8C88B), AESx(0x5937376E), AESx(0xB76D6DDA),
+	AESx(0x8C8D8D01), AESx(0x64D5D5B1), AESx(0xD24E4E9C), AESx(0xE0A9A949),
+	AESx(0xB46C6CD8), AESx(0xFA5656AC), AESx(0x07F4F4F3), AESx(0x25EAEACF),
+	AESx(0xAF6565CA), AESx(0x8E7A7AF4), AESx(0xE9AEAE47), AESx(0x18080810),
+	AESx(0xD5BABA6F), AESx(0x887878F0), AESx(0x6F25254A), AESx(0x722E2E5C),
+	AESx(0x241C1C38), AESx(0xF1A6A657), AESx(0xC7B4B473), AESx(0x51C6C697),
+	AESx(0x23E8E8CB), AESx(0x7CDDDDA1), AESx(0x9C7474E8), AESx(0x211F1F3E),
+	AESx(0xDD4B4B96), AESx(0xDCBDBD61), AESx(0x868B8B0D), AESx(0x858A8A0F),
+	AESx(0x907070E0), AESx(0x423E3E7C), AESx(0xC4B5B571), AESx(0xAA6666CC),
+	AESx(0xD8484890), AESx(0x05030306), AESx(0x01F6F6F7), AESx(0x120E0E1C),
+	AESx(0xA36161C2), AESx(0x5F35356A), AESx(0xF95757AE), AESx(0xD0B9B969),
+	AESx(0x91868617), AESx(0x58C1C199), AESx(0x271D1D3A), AESx(0xB99E9E27),
+	AESx(0x38E1E1D9), AESx(0x13F8F8EB), AESx(0xB398982B), AESx(0x33111122),
+	AESx(0xBB6969D2), AESx(0x70D9D9A9), AESx(0x898E8E07), AESx(0xA7949433),
+	AESx(0xB69B9B2D), AESx(0x221E1E3C), AESx(0x92878715), AESx(0x20E9E9C9),
+	AESx(0x49CECE87), AESx(0xFF5555AA), AESx(0x78282850), AESx(0x7ADFDFA5),
+	AESx(0x8F8C8C03), AESx(0xF8A1A159), AESx(0x80898909), AESx(0x170D0D1A),
+	AESx(0xDABFBF65), AESx(0x31E6E6D7), AESx(0xC6424284), AESx(0xB86868D0),
+	AESx(0xC3414182), AESx(0xB0999929), AESx(0x772D2D5A), AESx(0x110F0F1E),
+	AESx(0xCBB0B07B), AESx(0xFC5454A8), AESx(0xD6BBBB6D), AESx(0x3A16162C)
+};
+
+static const sph_u32 AES1[256] = {
+	AESx(0x6363C6A5), AESx(0x7C7CF884), AESx(0x7777EE99), AESx(0x7B7BF68D),
+	AESx(0xF2F2FF0D), AESx(0x6B6BD6BD), AESx(0x6F6FDEB1), AESx(0xC5C59154),
+	AESx(0x30306050), AESx(0x01010203), AESx(0x6767CEA9), AESx(0x2B2B567D),
+	AESx(0xFEFEE719), AESx(0xD7D7B562), AESx(0xABAB4DE6), AESx(0x7676EC9A),
+	AESx(0xCACA8F45), AESx(0x82821F9D), AESx(0xC9C98940), AESx(0x7D7DFA87),
+	AESx(0xFAFAEF15), AESx(0x5959B2EB), AESx(0x47478EC9), AESx(0xF0F0FB0B),
+	AESx(0xADAD41EC), AESx(0xD4D4B367), AESx(0xA2A25FFD), AESx(0xAFAF45EA),
+	AESx(0x9C9C23BF), AESx(0xA4A453F7), AESx(0x7272E496), AESx(0xC0C09B5B),
+	AESx(0xB7B775C2), AESx(0xFDFDE11C), AESx(0x93933DAE), AESx(0x26264C6A),
+	AESx(0x36366C5A), AESx(0x3F3F7E41), AESx(0xF7F7F502), AESx(0xCCCC834F),
+	AESx(0x3434685C), AESx(0xA5A551F4), AESx(0xE5E5D134), AESx(0xF1F1F908),
+	AESx(0x7171E293), AESx(0xD8D8AB73), AESx(0x31316253), AESx(0x15152A3F),
+	AESx(0x0404080C), AESx(0xC7C79552), AESx(0x23234665), AESx(0xC3C39D5E),
+	AESx(0x18183028), AESx(0x969637A1), AESx(0x05050A0F), AESx(0x9A9A2FB5),
+	AESx(0x07070E09), AESx(0x12122436), AESx(0x80801B9B), AESx(0xE2E2DF3D),
+	AESx(0xEBEBCD26), AESx(0x27274E69), AESx(0xB2B27FCD), AESx(0x7575EA9F),
+	AESx(0x0909121B), AESx(0x83831D9E), AESx(0x2C2C5874), AESx(0x1A1A342E),
+	AESx(0x1B1B362D), AESx(0x6E6EDCB2), AESx(0x5A5AB4EE), AESx(0xA0A05BFB),
+	AESx(0x5252A4F6), AESx(0x3B3B764D), AESx(0xD6D6B761), AESx(0xB3B37DCE),
+	AESx(0x2929527B), AESx(0xE3E3DD3E), AESx(0x2F2F5E71), AESx(0x84841397),
+	AESx(0x5353A6F5), AESx(0xD1D1B968), AESx(0x00000000), AESx(0xEDEDC12C),
+	AESx(0x20204060), AESx(0xFCFCE31F), AESx(0xB1B179C8), AESx(0x5B5BB6ED),
+	AESx(0x6A6AD4BE), AESx(0xCBCB8D46), AESx(0xBEBE67D9), AESx(0x3939724B),
+	AESx(0x4A4A94DE), AESx(0x4C4C98D4), AESx(0x5858B0E8), AESx(0xCFCF854A),
+	AESx(0xD0D0BB6B), AESx(0xEFEFC52A), AESx(0xAAAA4FE5), AESx(0xFBFBED16),
+	AESx(0x434386C5), AESx(0x4D4D9AD7), AESx(0x33336655), AESx(0x85851194),
+	AESx(0x45458ACF), AESx(0xF9F9E910), AESx(0x02020406), AESx(0x7F7FFE81),
+	AESx(0x5050A0F0), AESx(0x3C3C7844), AESx(0x9F9F25BA), AESx(0xA8A84BE3),
+	AESx(0x5151A2F3), AESx(0xA3A35DFE), AESx(0x404080C0), AESx(0x8F8F058A),
+	AESx(0x92923FAD), AESx(0x9D9D21BC), AESx(0x38387048), AESx(0xF5F5F104),
+	AESx(0xBCBC63DF), AESx(0xB6B677C1), AESx(0xDADAAF75), AESx(0x21214263),
+	AESx(0x10102030), AESx(0xFFFFE51A), AESx(0xF3F3FD0E), AESx(0xD2D2BF6D),
+	AESx(0xCDCD814C), AESx(0x0C0C1814), AESx(0x13132635), AESx(0xECECC32F),
+	AESx(0x5F5FBEE1), AESx(0x979735A2), AESx(0x444488CC), AESx(0x17172E39),
+	AESx(0xC4C49357), AESx(0xA7A755F2), AESx(0x7E7EFC82), AESx(0x3D3D7A47),
+	AESx(0x6464C8AC), AESx(0x5D5DBAE7), AESx(0x1919322B), AESx(0x7373E695),
+	AESx(0x6060C0A0), AESx(0x81811998), AESx(0x4F4F9ED1), AESx(0xDCDCA37F),
+	AESx(0x22224466), AESx(0x2A2A547E), AESx(0x90903BAB), AESx(0x88880B83),
+	AESx(0x46468CCA), AESx(0xEEEEC729), AESx(0xB8B86BD3), AESx(0x1414283C),
+	AESx(0xDEDEA779), AESx(0x5E5EBCE2), AESx(0x0B0B161D), AESx(0xDBDBAD76),
+	AESx(0xE0E0DB3B), AESx(0x32326456), AESx(0x3A3A744E), AESx(0x0A0A141E),
+	AESx(0x494992DB), AESx(0x06060C0A), AESx(0x2424486C), AESx(0x5C5CB8E4),
+	AESx(0xC2C29F5D), AESx(0xD3D3BD6E), AESx(0xACAC43EF), AESx(0x6262C4A6),
+	AESx(0x919139A8), AESx(0x959531A4), AESx(0xE4E4D337), AESx(0x7979F28B),
+	AESx(0xE7E7D532), AESx(0xC8C88B43), AESx(0x37376E59), AESx(0x6D6DDAB7),
+	AESx(0x8D8D018C), AESx(0xD5D5B164), AESx(0x4E4E9CD2), AESx(0xA9A949E0),
+	AESx(0x6C6CD8B4), AESx(0x5656ACFA), AESx(0xF4F4F307), AESx(0xEAEACF25),
+	AESx(0x6565CAAF), AESx(0x7A7AF48E), AESx(0xAEAE47E9), AESx(0x08081018),
+	AESx(0xBABA6FD5), AESx(0x7878F088), AESx(0x25254A6F), AESx(0x2E2E5C72),
+	AESx(0x1C1C3824), AESx(0xA6A657F1), AESx(0xB4B473C7), AESx(0xC6C69751),
+	AESx(0xE8E8CB23), AESx(0xDDDDA17C), AESx(0x7474E89C), AESx(0x1F1F3E21),
+	AESx(0x4B4B96DD), AESx(0xBDBD61DC), AESx(0x8B8B0D86), AESx(0x8A8A0F85),
+	AESx(0x7070E090), AESx(0x3E3E7C42), AESx(0xB5B571C4), AESx(0x6666CCAA),
+	AESx(0x484890D8), AESx(0x03030605), AESx(0xF6F6F701), AESx(0x0E0E1C12),
+	AESx(0x6161C2A3), AESx(0x35356A5F), AESx(0x5757AEF9), AESx(0xB9B969D0),
+	AESx(0x86861791), AESx(0xC1C19958), AESx(0x1D1D3A27), AESx(0x9E9E27B9),
+	AESx(0xE1E1D938), AESx(0xF8F8EB13), AESx(0x98982BB3), AESx(0x11112233),
+	AESx(0x6969D2BB), AESx(0xD9D9A970), AESx(0x8E8E0789), AESx(0x949433A7),
+	AESx(0x9B9B2DB6), AESx(0x1E1E3C22), AESx(0x87871592), AESx(0xE9E9C920),
+	AESx(0xCECE8749), AESx(0x5555AAFF), AESx(0x28285078), AESx(0xDFDFA57A),
+	AESx(0x8C8C038F), AESx(0xA1A159F8), AESx(0x89890980), AESx(0x0D0D1A17),
+	AESx(0xBFBF65DA), AESx(0xE6E6D731), AESx(0x424284C6), AESx(0x6868D0B8),
+	AESx(0x414182C3), AESx(0x999929B0), AESx(0x2D2D5A77), AESx(0x0F0F1E11),
+	AESx(0xB0B07BCB), AESx(0x5454A8FC), AESx(0xBBBB6DD6), AESx(0x16162C3A)
+};
+
+static const sph_u32 AES2[256] = {
+	AESx(0x63C6A563), AESx(0x7CF8847C), AESx(0x77EE9977), AESx(0x7BF68D7B),
+	AESx(0xF2FF0DF2), AESx(0x6BD6BD6B), AESx(0x6FDEB16F), AESx(0xC59154C5),
+	AESx(0x30605030), AESx(0x01020301), AESx(0x67CEA967), AESx(0x2B567D2B),
+	AESx(0xFEE719FE), AESx(0xD7B562D7), AESx(0xAB4DE6AB), AESx(0x76EC9A76),
+	AESx(0xCA8F45CA), AESx(0x821F9D82), AESx(0xC98940C9), AESx(0x7DFA877D),
+	AESx(0xFAEF15FA), AESx(0x59B2EB59), AESx(0x478EC947), AESx(0xF0FB0BF0),
+	AESx(0xAD41ECAD), AESx(0xD4B367D4), AESx(0xA25FFDA2), AESx(0xAF45EAAF),
+	AESx(0x9C23BF9C), AESx(0xA453F7A4), AESx(0x72E49672), AESx(0xC09B5BC0),
+	AESx(0xB775C2B7), AESx(0xFDE11CFD), AESx(0x933DAE93), AESx(0x264C6A26),
+	AESx(0x366C5A36), AESx(0x3F7E413F), AESx(0xF7F502F7), AESx(0xCC834FCC),
+	AESx(0x34685C34), AESx(0xA551F4A5), AESx(0xE5D134E5), AESx(0xF1F908F1),
+	AESx(0x71E29371), AESx(0xD8AB73D8), AESx(0x31625331), AESx(0x152A3F15),
+	AESx(0x04080C04), AESx(0xC79552C7), AESx(0x23466523), AESx(0xC39D5EC3),
+	AESx(0x18302818), AESx(0x9637A196), AESx(0x050A0F05), AESx(0x9A2FB59A),
+	AESx(0x070E0907), AESx(0x12243612), AESx(0x801B9B80), AESx(0xE2DF3DE2),
+	AESx(0xEBCD26EB), AESx(0x274E6927), AESx(0xB27FCDB2), AESx(0x75EA9F75),
+	AESx(0x09121B09), AESx(0x831D9E83), AESx(0x2C58742C), AESx(0x1A342E1A),
+	AESx(0x1B362D1B), AESx(0x6EDCB26E), AESx(0x5AB4EE5A), AESx(0xA05BFBA0),
+	AESx(0x52A4F652), AESx(0x3B764D3B), AESx(0xD6B761D6), AESx(0xB37DCEB3),
+	AESx(0x29527B29), AESx(0xE3DD3EE3), AESx(0x2F5E712F), AESx(0x84139784),
+	AESx(0x53A6F553), AESx(0xD1B968D1), AESx(0x00000000), AESx(0xEDC12CED),
+	AESx(0x20406020), AESx(0xFCE31FFC), AESx(0xB179C8B1), AESx(0x5BB6ED5B),
+	AESx(0x6AD4BE6A), AESx(0xCB8D46CB), AESx(0xBE67D9BE), AESx(0x39724B39),
+	AESx(0x4A94DE4A), AESx(0x4C98D44C), AESx(0x58B0E858), AESx(0xCF854ACF),
+	AESx(0xD0BB6BD0), AESx(0xEFC52AEF), AESx(0xAA4FE5AA), AESx(0xFBED16FB),
+	AESx(0x4386C543), AESx(0x4D9AD74D), AESx(0x33665533), AESx(0x85119485),
+	AESx(0x458ACF45), AESx(0xF9E910F9), AESx(0x02040602), AESx(0x7FFE817F),
+	AESx(0x50A0F050), AESx(0x3C78443C), AESx(0x9F25BA9F), AESx(0xA84BE3A8),
+	AESx(0x51A2F351), AESx(0xA35DFEA3), AESx(0x4080C040), AESx(0x8F058A8F),
+	AESx(0x923FAD92), AESx(0x9D21BC9D), AESx(0x38704838), AESx(0xF5F104F5),
+	AESx(0xBC63DFBC), AESx(0xB677C1B6), AESx(0xDAAF75DA), AESx(0x21426321),
+	AESx(0x10203010), AESx(0xFFE51AFF), AESx(0xF3FD0EF3), AESx(0xD2BF6DD2),
+	AESx(0xCD814CCD), AESx(0x0C18140C), AESx(0x13263513), AESx(0xECC32FEC),
+	AESx(0x5FBEE15F), AESx(0x9735A297), AESx(0x4488CC44), AESx(0x172E3917),
+	AESx(0xC49357C4), AESx(0xA755F2A7), AESx(0x7EFC827E), AESx(0x3D7A473D),
+	AESx(0x64C8AC64), AESx(0x5DBAE75D), AESx(0x19322B19), AESx(0x73E69573),
+	AESx(0x60C0A060), AESx(0x81199881), AESx(0x4F9ED14F), AESx(0xDCA37FDC),
+	AESx(0x22446622), AESx(0x2A547E2A), AESx(0x903BAB90), AESx(0x880B8388),
+	AESx(0x468CCA46), AESx(0xEEC729EE), AESx(0xB86BD3B8), AESx(0x14283C14),
+	AESx(0xDEA779DE), AESx(0x5EBCE25E), AESx(0x0B161D0B), AESx(0xDBAD76DB),
+	AESx(0xE0DB3BE0), AESx(0x32645632), AESx(0x3A744E3A), AESx(0x0A141E0A),
+	AESx(0x4992DB49), AESx(0x060C0A06), AESx(0x24486C24), AESx(0x5CB8E45C),
+	AESx(0xC29F5DC2), AESx(0xD3BD6ED3), AESx(0xAC43EFAC), AESx(0x62C4A662),
+	AESx(0x9139A891), AESx(0x9531A495), AESx(0xE4D337E4), AESx(0x79F28B79),
+	AESx(0xE7D532E7), AESx(0xC88B43C8), AESx(0x376E5937), AESx(0x6DDAB76D),
+	AESx(0x8D018C8D), AESx(0xD5B164D5), AESx(0x4E9CD24E), AESx(0xA949E0A9),
+	AESx(0x6CD8B46C), AESx(0x56ACFA56), AESx(0xF4F307F4), AESx(0xEACF25EA),
+	AESx(0x65CAAF65), AESx(0x7AF48E7A), AESx(0xAE47E9AE), AESx(0x08101808),
+	AESx(0xBA6FD5BA), AESx(0x78F08878), AESx(0x254A6F25), AESx(0x2E5C722E),
+	AESx(0x1C38241C), AESx(0xA657F1A6), AESx(0xB473C7B4), AESx(0xC69751C6),
+	AESx(0xE8CB23E8), AESx(0xDDA17CDD), AESx(0x74E89C74), AESx(0x1F3E211F),
+	AESx(0x4B96DD4B), AESx(0xBD61DCBD), AESx(0x8B0D868B), AESx(0x8A0F858A),
+	AESx(0x70E09070), AESx(0x3E7C423E), AESx(0xB571C4B5), AESx(0x66CCAA66),
+	AESx(0x4890D848), AESx(0x03060503), AESx(0xF6F701F6), AESx(0x0E1C120E),
+	AESx(0x61C2A361), AESx(0x356A5F35), AESx(0x57AEF957), AESx(0xB969D0B9),
+	AESx(0x86179186), AESx(0xC19958C1), AESx(0x1D3A271D), AESx(0x9E27B99E),
+	AESx(0xE1D938E1), AESx(0xF8EB13F8), AESx(0x982BB398), AESx(0x11223311),
+	AESx(0x69D2BB69), AESx(0xD9A970D9), AESx(0x8E07898E), AESx(0x9433A794),
+	AESx(0x9B2DB69B), AESx(0x1E3C221E), AESx(0x87159287), AESx(0xE9C920E9),
+	AESx(0xCE8749CE), AESx(0x55AAFF55), AESx(0x28507828), AESx(0xDFA57ADF),
+	AESx(0x8C038F8C), AESx(0xA159F8A1), AESx(0x89098089), AESx(0x0D1A170D),
+	AESx(0xBF65DABF), AESx(0xE6D731E6), AESx(0x4284C642), AESx(0x68D0B868),
+	AESx(0x4182C341), AESx(0x9929B099), AESx(0x2D5A772D), AESx(0x0F1E110F),
+	AESx(0xB07BCBB0), AESx(0x54A8FC54), AESx(0xBB6DD6BB), AESx(0x162C3A16)
+};
+
+static const sph_u32 AES3[256] = {
+	AESx(0xC6A56363), AESx(0xF8847C7C), AESx(0xEE997777), AESx(0xF68D7B7B),
+	AESx(0xFF0DF2F2), AESx(0xD6BD6B6B), AESx(0xDEB16F6F), AESx(0x9154C5C5),
+	AESx(0x60503030), AESx(0x02030101), AESx(0xCEA96767), AESx(0x567D2B2B),
+	AESx(0xE719FEFE), AESx(0xB562D7D7), AESx(0x4DE6ABAB), AESx(0xEC9A7676),
+	AESx(0x8F45CACA), AESx(0x1F9D8282), AESx(0x8940C9C9), AESx(0xFA877D7D),
+	AESx(0xEF15FAFA), AESx(0xB2EB5959), AESx(0x8EC94747), AESx(0xFB0BF0F0),
+	AESx(0x41ECADAD), AESx(0xB367D4D4), AESx(0x5FFDA2A2), AESx(0x45EAAFAF),
+	AESx(0x23BF9C9C), AESx(0x53F7A4A4), AESx(0xE4967272), AESx(0x9B5BC0C0),
+	AESx(0x75C2B7B7), AESx(0xE11CFDFD), AESx(0x3DAE9393), AESx(0x4C6A2626),
+	AESx(0x6C5A3636), AESx(0x7E413F3F), AESx(0xF502F7F7), AESx(0x834FCCCC),
+	AESx(0x685C3434), AESx(0x51F4A5A5), AESx(0xD134E5E5), AESx(0xF908F1F1),
+	AESx(0xE2937171), AESx(0xAB73D8D8), AESx(0x62533131), AESx(0x2A3F1515),
+	AESx(0x080C0404), AESx(0x9552C7C7), AESx(0x46652323), AESx(0x9D5EC3C3),
+	AESx(0x30281818), AESx(0x37A19696), AESx(0x0A0F0505), AESx(0x2FB59A9A),
+	AESx(0x0E090707), AESx(0x24361212), AESx(0x1B9B8080), AESx(0xDF3DE2E2),
+	AESx(0xCD26EBEB), AESx(0x4E692727), AESx(0x7FCDB2B2), AESx(0xEA9F7575),
+	AESx(0x121B0909), AESx(0x1D9E8383), AESx(0x58742C2C), AESx(0x342E1A1A),
+	AESx(0x362D1B1B), AESx(0xDCB26E6E), AESx(0xB4EE5A5A), AESx(0x5BFBA0A0),
+	AESx(0xA4F65252), AESx(0x764D3B3B), AESx(0xB761D6D6), AESx(0x7DCEB3B3),
+	AESx(0x527B2929), AESx(0xDD3EE3E3), AESx(0x5E712F2F), AESx(0x13978484),
+	AESx(0xA6F55353), AESx(0xB968D1D1), AESx(0x00000000), AESx(0xC12CEDED),
+	AESx(0x40602020), AESx(0xE31FFCFC), AESx(0x79C8B1B1), AESx(0xB6ED5B5B),
+	AESx(0xD4BE6A6A), AESx(0x8D46CBCB), AESx(0x67D9BEBE), AESx(0x724B3939),
+	AESx(0x94DE4A4A), AESx(0x98D44C4C), AESx(0xB0E85858), AESx(0x854ACFCF),
+	AESx(0xBB6BD0D0), AESx(0xC52AEFEF), AESx(0x4FE5AAAA), AESx(0xED16FBFB),
+	AESx(0x86C54343), AESx(0x9AD74D4D), AESx(0x66553333), AESx(0x11948585),
+	AESx(0x8ACF4545), AESx(0xE910F9F9), AESx(0x04060202), AESx(0xFE817F7F),
+	AESx(0xA0F05050), AESx(0x78443C3C), AESx(0x25BA9F9F), AESx(0x4BE3A8A8),
+	AESx(0xA2F35151), AESx(0x5DFEA3A3), AESx(0x80C04040), AESx(0x058A8F8F),
+	AESx(0x3FAD9292), AESx(0x21BC9D9D), AESx(0x70483838), AESx(0xF104F5F5),
+	AESx(0x63DFBCBC), AESx(0x77C1B6B6), AESx(0xAF75DADA), AESx(0x42632121),
+	AESx(0x20301010), AESx(0xE51AFFFF), AESx(0xFD0EF3F3), AESx(0xBF6DD2D2),
+	AESx(0x814CCDCD), AESx(0x18140C0C), AESx(0x26351313), AESx(0xC32FECEC),
+	AESx(0xBEE15F5F), AESx(0x35A29797), AESx(0x88CC4444), AESx(0x2E391717),
+	AESx(0x9357C4C4), AESx(0x55F2A7A7), AESx(0xFC827E7E), AESx(0x7A473D3D),
+	AESx(0xC8AC6464), AESx(0xBAE75D5D), AESx(0x322B1919), AESx(0xE6957373),
+	AESx(0xC0A06060), AESx(0x19988181), AESx(0x9ED14F4F), AESx(0xA37FDCDC),
+	AESx(0x44662222), AESx(0x547E2A2A), AESx(0x3BAB9090), AESx(0x0B838888),
+	AESx(0x8CCA4646), AESx(0xC729EEEE), AESx(0x6BD3B8B8), AESx(0x283C1414),
+	AESx(0xA779DEDE), AESx(0xBCE25E5E), AESx(0x161D0B0B), AESx(0xAD76DBDB),
+	AESx(0xDB3BE0E0), AESx(0x64563232), AESx(0x744E3A3A), AESx(0x141E0A0A),
+	AESx(0x92DB4949), AESx(0x0C0A0606), AESx(0x486C2424), AESx(0xB8E45C5C),
+	AESx(0x9F5DC2C2), AESx(0xBD6ED3D3), AESx(0x43EFACAC), AESx(0xC4A66262),
+	AESx(0x39A89191), AESx(0x31A49595), AESx(0xD337E4E4), AESx(0xF28B7979),
+	AESx(0xD532E7E7), AESx(0x8B43C8C8), AESx(0x6E593737), AESx(0xDAB76D6D),
+	AESx(0x018C8D8D), AESx(0xB164D5D5), AESx(0x9CD24E4E), AESx(0x49E0A9A9),
+	AESx(0xD8B46C6C), AESx(0xACFA5656), AESx(0xF307F4F4), AESx(0xCF25EAEA),
+	AESx(0xCAAF6565), AESx(0xF48E7A7A), AESx(0x47E9AEAE), AESx(0x10180808),
+	AESx(0x6FD5BABA), AESx(0xF0887878), AESx(0x4A6F2525), AESx(0x5C722E2E),
+	AESx(0x38241C1C), AESx(0x57F1A6A6), AESx(0x73C7B4B4), AESx(0x9751C6C6),
+	AESx(0xCB23E8E8), AESx(0xA17CDDDD), AESx(0xE89C7474), AESx(0x3E211F1F),
+	AESx(0x96DD4B4B), AESx(0x61DCBDBD), AESx(0x0D868B8B), AESx(0x0F858A8A),
+	AESx(0xE0907070), AESx(0x7C423E3E), AESx(0x71C4B5B5), AESx(0xCCAA6666),
+	AESx(0x90D84848), AESx(0x06050303), AESx(0xF701F6F6), AESx(0x1C120E0E),
+	AESx(0xC2A36161), AESx(0x6A5F3535), AESx(0xAEF95757), AESx(0x69D0B9B9),
+	AESx(0x17918686), AESx(0x9958C1C1), AESx(0x3A271D1D), AESx(0x27B99E9E),
+	AESx(0xD938E1E1), AESx(0xEB13F8F8), AESx(0x2BB39898), AESx(0x22331111),
+	AESx(0xD2BB6969), AESx(0xA970D9D9), AESx(0x07898E8E), AESx(0x33A79494),
+	AESx(0x2DB69B9B), AESx(0x3C221E1E), AESx(0x15928787), AESx(0xC920E9E9),
+	AESx(0x8749CECE), AESx(0xAAFF5555), AESx(0x50782828), AESx(0xA57ADFDF),
+	AESx(0x038F8C8C), AESx(0x59F8A1A1), AESx(0x09808989), AESx(0x1A170D0D),
+	AESx(0x65DABFBF), AESx(0xD731E6E6), AESx(0x84C64242), AESx(0xD0B86868),
+	AESx(0x82C34141), AESx(0x29B09999), AESx(0x5A772D2D), AESx(0x1E110F0F),
+	AESx(0x7BCBB0B0), AESx(0xA8FC5454), AESx(0x6DD6BBBB), AESx(0x2C3A1616)
+};
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/ghostrider.cpp b/src/crypto/ghostrider/ghostrider.cpp
new file mode 100644
index 000000000..e11bce9d2
--- /dev/null
+++ b/src/crypto/ghostrider/ghostrider.cpp
@@ -0,0 +1,836 @@
+/* XMRig
+ * Copyright 2018-2021 SChernykh   <https://github.com/SChernykh>
+ * Copyright 2016-2021 XMRig       <https://github.com/xmrig>, <support@xmrig.com>
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "ghostrider.h"
+#include "sph_blake.h"
+#include "sph_bmw.h"
+#include "sph_groestl.h"
+#include "sph_jh.h"
+#include "sph_keccak.h"
+#include "sph_skein.h"
+#include "sph_luffa.h"
+#include "sph_cubehash.h"
+#include "sph_shavite.h"
+#include "sph_simd.h"
+#include "sph_echo.h"
+#include "sph_hamsi.h"
+#include "sph_fugue.h"
+#include "sph_shabal.h"
+#include "sph_whirlpool.h"
+
+#include "base/io/log/Log.h"
+#include "base/io/log/Tags.h"
+#include "backend/cpu/Cpu.h"
+#include "crypto/cn/CnHash.h"
+#include "crypto/cn/CnCtx.h"
+#include "crypto/cn/CryptoNight.h"
+#include "crypto/common/VirtualMemory.h"
+
+#include <thread>
+#include <atomic>
+#include <chrono>
+#include <uv.h>
+
+#ifdef XMRIG_FEATURE_HWLOC
+#include "base/kernel/Platform.h"
+#include "backend/cpu/platform/HwlocCpuInfo.h"
+#include <hwloc.h>
+#endif
+
+#ifdef XMRIG_ARM
+#   include "crypto/cn/sse2neon.h"
+#endif
+
+#define CORE_HASH(i, x) static void h##i(const uint8_t* data, size_t size, uint8_t* output) \
+{ \
+    sph_##x##_context ctx; \
+    sph_##x##_init(&ctx); \
+    sph_##x(&ctx, data, size); \
+    sph_##x##_close(&ctx, output); \
+}
+
+CORE_HASH( 0, blake512   );
+CORE_HASH( 1, bmw512     );
+CORE_HASH( 2, groestl512 );
+CORE_HASH( 3, jh512      );
+CORE_HASH( 4, keccak512  );
+CORE_HASH( 5, skein512   );
+CORE_HASH( 6, luffa512   );
+CORE_HASH( 7, cubehash512);
+CORE_HASH( 8, shavite512 );
+CORE_HASH( 9, simd512    );
+CORE_HASH(10, echo512    );
+CORE_HASH(11, hamsi512   );
+CORE_HASH(12, fugue512   );
+CORE_HASH(13, shabal512  );
+CORE_HASH(14, whirlpool  );
+
+#undef CORE_HASH
+
+typedef void (*core_hash_func)(const uint8_t* data, size_t size, uint8_t* output);
+static const core_hash_func core_hash[15] = { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, h14 };
+
+namespace xmrig
+{
+
+
+static constexpr Algorithm::Id cn_hash[6] = {
+    Algorithm::CN_GR_0,
+    Algorithm::CN_GR_1,
+    Algorithm::CN_GR_2,
+    Algorithm::CN_GR_3,
+    Algorithm::CN_GR_4,
+    Algorithm::CN_GR_5,
+};
+
+static constexpr const char* cn_names[6] = {
+    "cn/dark (512 KB)",
+    "cn/dark-lite (256 KB)",
+    "cn/fast (2 MB)",
+    "cn/lite (1 MB)",
+    "cn/turtle (256 KB)",
+    "cn/turtle-lite (128 KB)",
+};
+
+static constexpr size_t cn_sizes[6] = {
+    Algorithm::l3(Algorithm::CN_GR_0),     // 512 KB
+    Algorithm::l3(Algorithm::CN_GR_1) / 2, // 256 KB
+    Algorithm::l3(Algorithm::CN_GR_2),     // 2 MB
+    Algorithm::l3(Algorithm::CN_GR_3),     // 1 MB
+    Algorithm::l3(Algorithm::CN_GR_4),     // 256 KB
+    Algorithm::l3(Algorithm::CN_GR_5) / 2, // 128 KB
+};
+
+static constexpr CnHash::AlgoVariant av_hw_aes[5] = { CnHash::AV_SINGLE, CnHash::AV_SINGLE, CnHash::AV_DOUBLE, CnHash::AV_TRIPLE, CnHash::AV_QUAD };
+static constexpr CnHash::AlgoVariant av_soft_aes[5] = { CnHash::AV_SINGLE_SOFT, CnHash::AV_SINGLE_SOFT, CnHash::AV_DOUBLE_SOFT, CnHash::AV_TRIPLE_SOFT, CnHash::AV_QUAD_SOFT };
+
+template<size_t N>
+static inline void select_indices(uint32_t (&indices)[N], const uint8_t* seed)
+{
+    bool selected[N] = {};
+
+    uint32_t k = 0;
+    for (uint32_t i = 0; i < 64; ++i) {
+        const uint8_t index = ((seed[i / 2] >> ((i & 1) * 4)) & 0xF) % N;
+        if (!selected[index]) {
+            selected[index] = true;
+            indices[k++] = index;
+            if (k >= N) {
+                return;
+            }
+        }
+    }
+
+    for (uint32_t i = 0; i < N; ++i) {
+        if (!selected[i]) {
+            indices[k++] = i;
+        }
+    }
+}
+
+
+namespace ghostrider
+{
+
+
+#ifdef XMRIG_FEATURE_HWLOC
+
+
+static struct AlgoTune
+{
+    double hashrate = 0.0;
+    uint32_t step = 1;
+    uint32_t threads = 1;
+} tuneDefault[6], tune8MB[6];
+
+
+struct HelperThread
+{
+    HelperThread(hwloc_bitmap_t cpu_set, bool is8MB) : m_cpuSet(cpu_set), m_is8MB(is8MB)
+    {
+        uv_mutex_init(&m_mutex);
+        uv_cond_init(&m_cond);
+
+        m_thread = new std::thread(&HelperThread::run, this);
+        do {
+            std::this_thread::sleep_for(std::chrono::milliseconds(1));
+        } while (!m_ready);
+    }
+
+    ~HelperThread()
+    {
+        uv_mutex_lock(&m_mutex);
+        m_finished = true;
+        uv_cond_signal(&m_cond);
+        uv_mutex_unlock(&m_mutex);
+
+        m_thread->join();
+        delete m_thread;
+
+        uv_mutex_destroy(&m_mutex);
+        uv_cond_destroy(&m_cond);
+
+        hwloc_bitmap_free(m_cpuSet);
+    }
+
+    struct TaskBase
+    {
+        virtual ~TaskBase() {}
+        virtual void run() = 0;
+    };
+
+    template<typename T>
+    struct Task : TaskBase
+    {
+        inline Task(T&& task) : m_task(std::move(task))
+        {
+            static_assert(sizeof(Task) <= 128, "Task struct is too large");
+        }
+
+        void run() override
+        {
+            m_task();
+            this->~Task();
+        }
+
+        T m_task;
+    };
+
+    template<typename T>
+    inline void launch_task(T&& task)
+    {
+        uv_mutex_lock(&m_mutex);
+        new (&m_tasks[m_numTasks++]) Task<T>(std::move(task));
+        uv_cond_signal(&m_cond);
+        uv_mutex_unlock(&m_mutex);
+    }
+
+    inline void wait() const
+    {
+        while (m_numTasks) {
+            _mm_pause();
+        }
+    }
+
+    void run()
+    {
+        if (hwloc_bitmap_weight(m_cpuSet) > 0) {
+            hwloc_topology_t topology = reinterpret_cast<HwlocCpuInfo*>(Cpu::info())->topology();
+            if (hwloc_set_cpubind(topology, m_cpuSet, HWLOC_CPUBIND_THREAD | HWLOC_CPUBIND_STRICT) < 0) {
+                hwloc_set_cpubind(topology, m_cpuSet, HWLOC_CPUBIND_THREAD);
+            }
+        }
+
+        uv_mutex_lock(&m_mutex);
+        m_ready = true;
+
+        do {
+            uv_cond_wait(&m_cond, &m_mutex);
+
+            const uint32_t n = m_numTasks;
+            if (n > 0) {
+                for (uint32_t i = 0; i < n; ++i) {
+                    reinterpret_cast<TaskBase*>(&m_tasks[i])->run();
+                }
+                std::atomic_thread_fence(std::memory_order_seq_cst);
+                m_numTasks = 0;
+            }
+        } while (!m_finished);
+
+        uv_mutex_unlock(&m_mutex);
+    }
+
+    uv_mutex_t m_mutex;
+    uv_cond_t m_cond;
+
+    alignas(16) uint8_t m_tasks[4][128] = {};
+    volatile uint32_t m_numTasks = 0;
+    volatile bool m_ready = false;
+    volatile bool m_finished = false;
+    hwloc_bitmap_t m_cpuSet = {};
+    bool m_is8MB = false;
+
+    std::thread* m_thread = nullptr;
+};
+
+
+void benchmark()
+{
+    static std::atomic<int> done{ 0 };
+    if (done.exchange(1)) {
+        return;
+    }
+
+    std::thread t([]() {
+        // Try to avoid CPU core 0 because many system threads use it and can interfere
+        uint32_t thread_index1 = (Cpu::info()->threads() > 2) ? 2 : 0;
+
+        hwloc_topology_t topology = reinterpret_cast<HwlocCpuInfo*>(Cpu::info())->topology();
+        hwloc_obj_t pu = hwloc_get_pu_obj_by_os_index(topology, thread_index1);
+        hwloc_obj_t pu2;
+        hwloc_get_closest_objs(topology, pu, &pu2, 1);
+        uint32_t thread_index2 = pu2->os_index;
+
+        if (thread_index2 < thread_index1) {
+            std::swap(thread_index1, thread_index2);
+        }
+
+        Platform::setThreadAffinity(thread_index1);
+
+        constexpr uint32_t N = 1U << 21;
+
+        VirtualMemory::init(0, N);
+        VirtualMemory* memory = new VirtualMemory(N * 8, true, false, false);
+
+        // 2 MB cache per core by default
+        size_t max_scratchpad_size = 1U << 21;
+
+        if ((Cpu::info()->L3() >> 22) > Cpu::info()->cores()) {
+            // At least 1 core can run with 8 MB cache
+            max_scratchpad_size = 1U << 23;
+        }
+        else if ((Cpu::info()->L3() >> 22) >= Cpu::info()->cores()) {
+            // All cores can run with 4 MB cache
+            max_scratchpad_size = 1U << 22;
+        }
+
+        LOG_VERBOSE("Running GhostRider benchmark on logical CPUs %u and %u (max scratchpad size %zu MB, huge pages %s)", thread_index1, thread_index2, max_scratchpad_size >> 20, memory->isHugePages() ? "on" : "off");
+
+        cryptonight_ctx* ctx[8];
+        CnCtx::create(ctx, memory->scratchpad(), N, 8);
+
+        const CnHash::AlgoVariant* av = Cpu::info()->hasAES() ? av_hw_aes : av_soft_aes;
+
+        uint8_t buf[80];
+        uint8_t hash[32 * 8];
+
+        LOG_VERBOSE("%24s |  N  | Hashrate", "Algorithm");
+        LOG_VERBOSE("-------------------------|-----|-------------");
+
+        using namespace std::chrono;
+
+        for (uint32_t algo = 0; algo < 6; ++algo) {
+            for (uint64_t step : { 1, 2, 4}) {
+#               ifdef XMRIG_ARM
+                if (step == 4) {
+                    continue;
+                }
+#               endif
+
+                const size_t cur_scratchpad_size = cn_sizes[algo] * step;
+                if (cur_scratchpad_size > max_scratchpad_size) {
+                    continue;
+                }
+
+                auto f = CnHash::fn(cn_hash[algo], av[step], Assembly::AUTO);
+
+                const high_resolution_clock::time_point start_time = high_resolution_clock::now();
+
+                double min_dt = 1e10;
+                for (uint32_t iter = 0;; ++iter) {
+                    const high_resolution_clock::time_point t1 = high_resolution_clock::now();
+
+                    // Stop after 15 milliseconds, but only if at least 10 iterations were done
+                    if ((iter >= 10) && (duration_cast<milliseconds>(t1 - start_time).count() >= 15)) {
+                        break;
+                    }
+
+                    f(buf, sizeof(buf), hash, ctx, 0);
+
+                    const double dt = duration_cast<nanoseconds>(high_resolution_clock::now() - t1).count() / 1e9;
+                    if (dt < min_dt) {
+                        min_dt = dt;
+                    }
+                }
+
+                const double hashrate = step / min_dt;
+                LOG_VERBOSE("%24s | %" PRIu64 "x1 | %.2f h/s", cn_names[algo], step, hashrate);
+
+                if (hashrate > tune8MB[algo].hashrate) {
+                    tune8MB[algo].hashrate = hashrate;
+                    tune8MB[algo].step = static_cast<uint32_t>(step);
+                    tune8MB[algo].threads = 1;
+                }
+
+                if ((cur_scratchpad_size < (1U << 23)) && (hashrate > tuneDefault[algo].hashrate)) {
+                    tuneDefault[algo].hashrate = hashrate;
+                    tuneDefault[algo].step = static_cast<uint32_t>(step);
+                    tuneDefault[algo].threads = 1;
+                }
+            }
+        }
+
+        hwloc_bitmap_t helper_set = hwloc_bitmap_alloc();
+        hwloc_bitmap_set(helper_set, thread_index2);
+        HelperThread* helper = new HelperThread(helper_set, false);
+
+        for (uint32_t algo = 0; algo < 6; ++algo) {
+            for (uint64_t step : { 1, 2, 4}) {
+#               ifdef XMRIG_ARM
+                if (step == 4) {
+                    continue;
+                }
+#               endif
+
+                const size_t cur_scratchpad_size = cn_sizes[algo] * step * 2;
+                if (cur_scratchpad_size > max_scratchpad_size) {
+                    continue;
+                }
+
+                auto f = CnHash::fn(cn_hash[algo], av[step], Assembly::AUTO);
+
+                const high_resolution_clock::time_point start_time = high_resolution_clock::now();
+
+                double min_dt = 1e10;
+                for (uint32_t iter = 0;; ++iter) {
+                    const high_resolution_clock::time_point t1 = high_resolution_clock::now();
+
+                    // Stop after 30 milliseconds, but only if at least 10 iterations were done
+                    if ((iter >= 10) && (duration_cast<milliseconds>(t1 - start_time).count() >= 30)) {
+                        break;
+                    }
+
+                    helper->launch_task([&f, &buf, &hash, &ctx, &step]() { f(buf, sizeof(buf), hash + step * 32, ctx + step, 0); });
+                    f(buf, sizeof(buf), hash, ctx, 0);
+                    helper->wait();
+
+                    const double dt = duration_cast<nanoseconds>(high_resolution_clock::now() - t1).count() / 1e9;
+                    if (dt < min_dt) {
+                        min_dt = dt;
+                    }
+                }
+
+                const double hashrate = step * 2.0 / min_dt * 1.0075;
+                LOG_VERBOSE("%24s | %" PRIu64 "x2 | %.2f h/s", cn_names[algo], step, hashrate);
+
+                if (hashrate > tune8MB[algo].hashrate) {
+                    tune8MB[algo].hashrate = hashrate;
+                    tune8MB[algo].step = static_cast<uint32_t>(step);
+                    tune8MB[algo].threads = 2;
+                }
+
+                if ((cur_scratchpad_size < (1U << 23)) && (hashrate > tuneDefault[algo].hashrate)) {
+                    tuneDefault[algo].hashrate = hashrate;
+                    tuneDefault[algo].step = static_cast<uint32_t>(step);
+                    tuneDefault[algo].threads = 2;
+                }
+            }
+        }
+
+        delete helper;
+
+        CnCtx::release(ctx, 8);
+        delete memory;
+    });
+
+    t.join();
+
+    LOG_VERBOSE("---------------------------------------------");
+    LOG_VERBOSE("|         GhostRider tuning results         |");
+    LOG_VERBOSE("---------------------------------------------");
+
+    for (int algo = 0; algo < 6; ++algo) {
+        LOG_VERBOSE("%24s | %ux%u | %.2f h/s", cn_names[algo], tuneDefault[algo].step, tuneDefault[algo].threads, tuneDefault[algo].hashrate);
+        if ((tune8MB[algo].step != tuneDefault[algo].step) || (tune8MB[algo].threads != tuneDefault[algo].threads)) {
+            LOG_VERBOSE("%24s | %ux%u | %.2f h/s", cn_names[algo], tune8MB[algo].step, tune8MB[algo].threads, tune8MB[algo].hashrate);
+        }
+    }
+}
+
+
+template <typename func>
+static inline bool findByType(hwloc_obj_t obj, hwloc_obj_type_t type, func lambda)
+{
+    for (size_t i = 0; i < obj->arity; i++) {
+        if (obj->children[i]->type == type) {
+            if (lambda(obj->children[i])) {
+                return true;
+            }
+        }
+        else {
+            if (findByType(obj->children[i], type, lambda)) {
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+HelperThread* create_helper_thread(int64_t cpu_index, const std::vector<int64_t>& affinities)
+{
+#ifndef XMRIG_ARM
+    hwloc_bitmap_t helper_cpu_set = hwloc_bitmap_alloc();
+    hwloc_bitmap_t main_threads_set = hwloc_bitmap_alloc();
+
+    for (int64_t i : affinities) {
+        if (i >= 0) {
+            hwloc_bitmap_set(main_threads_set, i);
+        }
+    }
+
+    if (cpu_index >= 0) {
+        hwloc_topology_t topology = reinterpret_cast<HwlocCpuInfo*>(Cpu::info())->topology();
+        hwloc_obj_t root = hwloc_get_root_obj(topology);
+
+        bool is8MB = false;
+
+        findByType(root, HWLOC_OBJ_L3CACHE, [cpu_index, &is8MB](hwloc_obj_t obj) {
+            if (!hwloc_bitmap_isset(obj->cpuset, cpu_index)) {
+                return false;
+            }
+
+            uint32_t num_cores = 0;
+            findByType(obj, HWLOC_OBJ_CORE, [&num_cores](hwloc_obj_t) { ++num_cores; return false; });
+
+            if ((obj->attr->cache.size >> 22) > num_cores) {
+                uint32_t num_8MB_cores = (obj->attr->cache.size >> 22) - num_cores;
+
+                is8MB = findByType(obj, HWLOC_OBJ_CORE, [cpu_index, &num_8MB_cores](hwloc_obj_t obj2) {
+                    if (num_8MB_cores > 0) {
+                        --num_8MB_cores;
+                        if (hwloc_bitmap_isset(obj2->cpuset, cpu_index)) {
+                            return true;
+                        }
+                    }
+                    return false;
+                });
+            }
+            return true;
+        });
+
+        for (auto obj_type : { HWLOC_OBJ_CORE, HWLOC_OBJ_L1CACHE, HWLOC_OBJ_L2CACHE, HWLOC_OBJ_L3CACHE }) {
+            findByType(root, obj_type, [cpu_index, helper_cpu_set, main_threads_set](hwloc_obj_t obj) {
+                const hwloc_cpuset_t& s = obj->cpuset;
+                if (hwloc_bitmap_isset(s, cpu_index)) {
+                    hwloc_bitmap_andnot(helper_cpu_set, s, main_threads_set);
+                    if (hwloc_bitmap_weight(helper_cpu_set) > 0) {
+                        return true;
+                    }
+                }
+                return false;
+            });
+
+            if (hwloc_bitmap_weight(helper_cpu_set) > 0) {
+                return new HelperThread(helper_cpu_set, is8MB);
+            }
+        }
+    }
+#endif
+
+    return nullptr;
+}
+
+
+void destroy_helper_thread(HelperThread* t)
+{
+    delete t;
+}
+
+
+void hash_octa(const uint8_t* data, size_t size, uint8_t* output, cryptonight_ctx** ctx, HelperThread* helper)
+{
+    enum { N = 8 };
+
+    uint8_t* ctx_memory[N];
+    for (size_t i = 0; i < N; ++i) {
+        ctx_memory[i] = ctx[i]->memory;
+    }
+
+    // PrevBlockHash (GhostRider's seed) is stored in bytes [4; 36)
+    uint32_t core_indices[15];
+    select_indices(core_indices, data + 4);
+
+    uint32_t cn_indices[6];
+    select_indices(cn_indices, data + 4);
+
+    static uint32_t prev_indices[3];
+    if (memcmp(cn_indices, prev_indices, sizeof(prev_indices)) != 0) {
+        memcpy(prev_indices, cn_indices, sizeof(prev_indices));
+        for (int i = 0; i < 3; ++i) {
+            LOG_INFO("%s GhostRider algo %d: %s", Tags::cpu(), i + 1, cn_names[cn_indices[i]]);
+        }
+    }
+
+    const CnHash::AlgoVariant* av = Cpu::info()->hasAES() ? av_hw_aes : av_soft_aes;
+    const AlgoTune* tune = (helper && helper->m_is8MB) ? tune8MB : tuneDefault;
+
+    uint8_t tmp[64 * N];
+
+    if (helper && (tune[cn_indices[0]].threads == 2) && (tune[cn_indices[1]].threads == 2) && (tune[cn_indices[2]].threads == 2)) {
+        const size_t n = N / 2;
+
+        helper->launch_task([n, av, data, size, &ctx_memory, ctx, &cn_indices, &core_indices, &tmp, output, tune]() {
+            const uint8_t* input = data;
+            size_t input_size = size;
+
+            for (size_t part = 0; part < 3; ++part) {
+                const AlgoTune& t = tune[cn_indices[part]];
+
+                // Allocate scratchpads
+                {
+                    uint8_t* p = ctx_memory[4];
+
+                    for (size_t i = n, k = 4; i < N; ++i) {
+                        if ((i % t.step) == 0) {
+                            k = 4;
+                            p = ctx_memory[4];
+                        }
+                        else if (p - ctx_memory[k] >= (1 << 21)) {
+                            ++k;
+                            p = ctx_memory[k];
+                        }
+                        ctx[i]->memory = p;
+                        p += cn_sizes[cn_indices[part]];
+                    }
+                }
+
+                for (size_t i = 0; i < 5; ++i) {
+                    for (size_t j = n; j < N; ++j) {
+                        core_hash[core_indices[part * 5 + i]](input + j * input_size, input_size, tmp + j * 64);
+                    }
+                    input = tmp;
+                    input_size = 64;
+                }
+
+                auto f = CnHash::fn(cn_hash[cn_indices[part]], av[t.step], Assembly::AUTO);
+                for (size_t j = n; j < N; j += t.step) {
+                    f(tmp + j * 64, 64, output + j * 32, ctx + n, 0);
+                }
+
+                for (size_t j = n; j < N; ++j) {
+                    memcpy(tmp + j * 64, output + j * 32, 32);
+                    memset(tmp + j * 64 + 32, 0, 32);
+                }
+            }
+        });
+
+        const uint8_t* input = data;
+        size_t input_size = size;
+
+        for (size_t part = 0; part < 3; ++part) {
+            const AlgoTune& t = tune[cn_indices[part]];
+
+            // Allocate scratchpads
+            {
+                uint8_t* p = ctx_memory[0];
+
+                for (size_t i = 0, k = 0; i < n; ++i) {
+                    if ((i % t.step) == 0) {
+                        k = 0;
+                        p = ctx_memory[0];
+                    }
+                    else if (p - ctx_memory[k] >= (1 << 21)) {
+                        ++k;
+                        p = ctx_memory[k];
+                    }
+                    ctx[i]->memory = p;
+                    p += cn_sizes[cn_indices[part]];
+                }
+            }
+
+            for (size_t i = 0; i < 5; ++i) {
+                for (size_t j = 0; j < n; ++j) {
+                    core_hash[core_indices[part * 5 + i]](input + j * input_size, input_size, tmp + j * 64);
+                }
+                input = tmp;
+                input_size = 64;
+            }
+
+            auto f = CnHash::fn(cn_hash[cn_indices[part]], av[t.step], Assembly::AUTO);
+            for (size_t j = 0; j < n; j += t.step) {
+                f(tmp + j * 64, 64, output + j * 32, ctx, 0);
+            }
+
+            for (size_t j = 0; j < n; ++j) {
+                memcpy(tmp + j * 64, output + j * 32, 32);
+                memset(tmp + j * 64 + 32, 0, 32);
+            }
+        }
+
+        helper->wait();
+    }
+    else {
+        for (size_t part = 0; part < 3; ++part) {
+            const AlgoTune& t = tune[cn_indices[part]];
+
+            // Allocate scratchpads
+            {
+                uint8_t* p = ctx_memory[0];
+                const size_t n = N / t.threads;
+
+                // Thread 1
+                for (size_t i = 0, k = 0; i < n; ++i) {
+                    if ((i % t.step) == 0) {
+                        k = 0;
+                        p = ctx_memory[0];
+                    }
+                    else if (p - ctx_memory[k] >= (1 << 21)) {
+                        ++k;
+                        p = ctx_memory[k];
+                    }
+                    ctx[i]->memory = p;
+                    p += cn_sizes[cn_indices[part]];
+                }
+
+                // Thread 2
+                for (size_t i = n, k = 4; i < N; ++i) {
+                    if ((i % t.step) == 0) {
+                        k = 4;
+                        p = ctx_memory[4];
+                    }
+                    else if (p - ctx_memory[k] >= (1 << 21)) {
+                        ++k;
+                        p = ctx_memory[k];
+                    }
+                    ctx[i]->memory = p;
+                    p += cn_sizes[cn_indices[part]];
+                }
+            }
+
+            size_t n = N;
+
+            if (helper && (t.threads == 2)) {
+                n = N / 2;
+
+                helper->launch_task([data, size, n, &cn_indices, &core_indices, part, &tmp, av, &t, output, ctx]() {
+                    const uint8_t* input = data;
+                    size_t input_size = size;
+
+                    for (size_t i = 0; i < 5; ++i) {
+                        for (size_t j = n; j < N; ++j) {
+                            core_hash[core_indices[part * 5 + i]](input + j * input_size, input_size, tmp + j * 64);
+                        }
+                        input = tmp;
+                        input_size = 64;
+                    }
+
+                    auto f = CnHash::fn(cn_hash[cn_indices[part]], av[t.step], Assembly::AUTO);
+                    for (size_t j = n; j < N; j += t.step) {
+                        f(tmp + j * 64, 64, output + j * 32, ctx + n, 0);
+                    }
+
+                    for (size_t j = n; j < N; ++j) {
+                        memcpy(tmp + j * 64, output + j * 32, 32);
+                        memset(tmp + j * 64 + 32, 0, 32);
+                    }
+                });
+            }
+
+            for (size_t i = 0; i < 5; ++i) {
+                for (size_t j = 0; j < n; ++j) {
+                    core_hash[core_indices[part * 5 + i]](data + j * size, size, tmp + j * 64);
+                }
+                data = tmp;
+                size = 64;
+            }
+
+            auto f = CnHash::fn(cn_hash[cn_indices[part]], av[t.step], Assembly::AUTO);
+            for (size_t j = 0; j < n; j += t.step) {
+                f(tmp + j * 64, 64, output + j * 32, ctx, 0);
+            }
+
+            for (size_t j = 0; j < n; ++j) {
+                memcpy(tmp + j * 64, output + j * 32, 32);
+                memset(tmp + j * 64 + 32, 0, 32);
+            }
+
+            if (helper && (t.threads == 2)) {
+                helper->wait();
+            }
+        }
+    }
+
+    for (size_t i = 0; i < N; ++i) {
+        ctx[i]->memory = ctx_memory[i];
+    }
+}
+
+
+#else // XMRIG_FEATURE_HWLOC
+
+
+void benchmark() {}
+HelperThread* create_helper_thread(int64_t, const std::vector<int64_t>&) { return nullptr; }
+void destroy_helper_thread(HelperThread*) {}
+
+
+void hash_octa(const uint8_t* data, size_t size, uint8_t* output, cryptonight_ctx** ctx, HelperThread*)
+{
+    constexpr uint32_t N = 8;
+
+    // PrevBlockHash (GhostRider's seed) is stored in bytes [4; 36)
+    const uint8_t* seed = data + 4;
+
+    uint32_t core_indices[15];
+    select_indices(core_indices, seed);
+
+    uint32_t cn_indices[6];
+    select_indices(cn_indices, seed);
+
+#ifdef XMRIG_ARM
+    uint32_t step[6] = { 1, 1, 1, 1, 1, 2 };
+#else
+    uint32_t step[6] = { 4, 4, 1, 2, 4, 4 };
+#endif
+
+    static uint32_t prev_indices[3];
+    if (memcmp(cn_indices, prev_indices, sizeof(prev_indices)) != 0) {
+        memcpy(prev_indices, cn_indices, sizeof(prev_indices));
+        for (int i = 0; i < 3; ++i) {
+            LOG_INFO("%s GhostRider algo %d: %s", Tags::cpu(), i + 1, cn_names[cn_indices[i]]);
+        }
+    }
+
+    const CnHash::AlgoVariant* av = Cpu::info()->hasAES() ? av_hw_aes : av_soft_aes;
+
+    const cn_hash_fun f[3] = {
+        CnHash::fn(cn_hash[cn_indices[0]], av[step[cn_indices[0]]], Assembly::AUTO),
+        CnHash::fn(cn_hash[cn_indices[1]], av[step[cn_indices[1]]], Assembly::AUTO),
+        CnHash::fn(cn_hash[cn_indices[2]], av[step[cn_indices[2]]], Assembly::AUTO),
+    };
+
+    uint8_t tmp[64 * N];
+
+    for (uint64_t part = 0; part < 3; ++part) {
+        for (uint64_t i = 0; i < 5; ++i) {
+            for (uint64_t j = 0; j < N; ++j) {
+                core_hash[core_indices[part * 5 + i]](data + j * size, size, tmp + j * 64);
+                data = tmp;
+                size = 64;
+            }
+        }
+        for (uint64_t j = 0, k = step[cn_indices[part]]; j < N; j += k) {
+            f[part](tmp + j * 64, 64, output + j * 32, ctx, 0);
+        }
+        for (uint64_t j = 0; j < N; ++j) {
+            memcpy(tmp + j * 64, output + j * 32, 32);
+            memset(tmp + j * 64 + 32, 0, 32);
+        }
+    }
+}
+
+
+#endif // XMRIG_FEATURE_HWLOC
+
+
+} // namespace ghostrider
+
+
+} // namespace xmrig
diff --git a/src/crypto/ghostrider/ghostrider.h b/src/crypto/ghostrider/ghostrider.h
new file mode 100644
index 000000000..f37c46f39
--- /dev/null
+++ b/src/crypto/ghostrider/ghostrider.h
@@ -0,0 +1,52 @@
+/* XMRig
+ * Copyright 2018-2021 SChernykh   <https://github.com/SChernykh>
+ * Copyright 2016-2021 XMRig       <https://github.com/xmrig>, <support@xmrig.com>
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef XMRIG_GR_HASH_H
+#define XMRIG_GR_HASH_H
+
+
+#include <cstddef>
+#include <cstdint>
+#include <vector>
+
+
+struct cryptonight_ctx;
+
+
+namespace xmrig
+{
+
+
+namespace ghostrider
+{
+
+
+struct HelperThread;
+
+void benchmark();
+HelperThread* create_helper_thread(int64_t cpu_index, const std::vector<int64_t>& affinities);
+void destroy_helper_thread(HelperThread* t);
+void hash_octa(const uint8_t* data, size_t size, uint8_t* output, cryptonight_ctx** ctx, HelperThread* helper);
+
+
+} // namespace ghostrider
+
+
+} // namespace xmrig
+
+#endif // XMRIG_GR_HASH_H
\ No newline at end of file
diff --git a/src/crypto/ghostrider/md_helper.c b/src/crypto/ghostrider/md_helper.c
new file mode 100644
index 000000000..3ae23d76a
--- /dev/null
+++ b/src/crypto/ghostrider/md_helper.c
@@ -0,0 +1,346 @@
+/* $Id: md_helper.c 216 2010-06-08 09:46:57Z tp $ */
+/*
+ * This file contains some functions which implement the external data
+ * handling and padding for Merkle-Damgard hash functions which follow
+ * the conventions set out by MD4 (little-endian) or SHA-1 (big-endian).
+ *
+ * API: this file is meant to be included, not compiled as a stand-alone
+ * file. Some macros must be defined:
+ *   RFUN   name for the round function
+ *   HASH   "short name" for the hash function
+ *   BE32   defined for big-endian, 32-bit based (e.g. SHA-1)
+ *   LE32   defined for little-endian, 32-bit based (e.g. MD5)
+ *   BE64   defined for big-endian, 64-bit based (e.g. SHA-512)
+ *   LE64   defined for little-endian, 64-bit based (no example yet)
+ *   PW01   if defined, append 0x01 instead of 0x80 (for Tiger)
+ *   BLEN   if defined, length of a message block (in bytes)
+ *   PLW1   if defined, length is defined on one 64-bit word only (for Tiger)
+ *   PLW4   if defined, length is defined on four 64-bit words (for WHIRLPOOL)
+ *   SVAL   if defined, reference to the context state information
+ *
+ * BLEN is used when a message block is not 16 (32-bit or 64-bit) words:
+ * this is used for instance for Tiger, which works on 64-bit words but
+ * uses 512-bit message blocks (eight 64-bit words). PLW1 and PLW4 are
+ * ignored if 32-bit words are used; if 64-bit words are used and PLW1 is
+ * set, then only one word (64 bits) will be used to encode the input
+ * message length (in bits), otherwise two words will be used (as in
+ * SHA-384 and SHA-512). If 64-bit words are used and PLW4 is defined (but
+ * not PLW1), four 64-bit words will be used to encode the message length
+ * (in bits). Note that regardless of those settings, only 64-bit message
+ * lengths are supported (in bits): messages longer than 2 Exabytes will be
+ * improperly hashed (this is unlikely to happen soon: 2 Exabytes is about
+ * 2 millions Terabytes, which is huge).
+ *
+ * If CLOSE_ONLY is defined, then this file defines only the sph_XXX_close()
+ * function. This is used for Tiger2, which is identical to Tiger except
+ * when it comes to the padding (Tiger2 uses the standard 0x80 byte instead
+ * of the 0x01 from original Tiger).
+ *
+ * The RFUN function is invoked with two arguments, the first pointing to
+ * aligned data (as a "const void *"), the second being state information
+ * from the context structure. By default, this state information is the
+ * "val" field from the context, and this field is assumed to be an array
+ * of words ("sph_u32" or "sph_u64", depending on BE32/LE32/BE64/LE64).
+ * from the context structure. The "val" field can have any type, except
+ * for the output encoding which assumes that it is an array of "sph_u32"
+ * values. By defining NO_OUTPUT, this last step is deactivated; the
+ * includer code is then responsible for writing out the hash result. When
+ * NO_OUTPUT is defined, the third parameter to the "close()" function is
+ * ignored.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#undef SPH_XCAT
+#define SPH_XCAT(a, b)     SPH_XCAT_(a, b)
+#undef SPH_XCAT_
+#define SPH_XCAT_(a, b)    a ## b
+
+#undef SPH_BLEN
+#undef SPH_WLEN
+#if defined BE64 || defined LE64
+#define SPH_BLEN    128U
+#define SPH_WLEN      8U
+#else
+#define SPH_BLEN     64U
+#define SPH_WLEN      4U
+#endif
+
+#ifdef BLEN
+#undef SPH_BLEN
+#define SPH_BLEN    BLEN
+#endif
+
+#undef SPH_MAXPAD
+#if defined PLW1
+#define SPH_MAXPAD   (SPH_BLEN - SPH_WLEN)
+#elif defined PLW4
+#define SPH_MAXPAD   (SPH_BLEN - (SPH_WLEN << 2))
+#else
+#define SPH_MAXPAD   (SPH_BLEN - (SPH_WLEN << 1))
+#endif
+
+#undef SPH_VAL
+#undef SPH_NO_OUTPUT
+#ifdef SVAL
+#define SPH_VAL         SVAL
+#define SPH_NO_OUTPUT   1
+#else
+#define SPH_VAL   sc->val
+#endif
+
+#ifndef CLOSE_ONLY
+
+#ifdef SPH_UPTR
+static void
+SPH_XCAT(HASH, _short)(void *cc, const void *data, size_t len)
+#else
+void
+SPH_XCAT(sph_, HASH)(void *cc, const void *data, size_t len)
+#endif
+{
+	SPH_XCAT(sph_, SPH_XCAT(HASH, _context)) *sc;
+	size_t current;
+
+	sc = cc;
+#if SPH_64
+	current = (unsigned)sc->count & (SPH_BLEN - 1U);
+#else
+	current = (unsigned)sc->count_low & (SPH_BLEN - 1U);
+#endif
+	while (len > 0) {
+		size_t clen;
+#if !SPH_64
+		sph_u32 clow, clow2;
+#endif
+
+		clen = SPH_BLEN - current;
+		if (clen > len)
+			clen = len;
+		memcpy(sc->buf + current, data, clen);
+		data = (const unsigned char *)data + clen;
+		current += clen;
+		len -= clen;
+		if (current == SPH_BLEN) {
+			RFUN(sc->buf, SPH_VAL);
+			current = 0;
+		}
+#if SPH_64
+		sc->count += clen;
+#else
+		clow = sc->count_low;
+		clow2 = SPH_T32(clow + clen);
+		sc->count_low = clow2;
+		if (clow2 < clow)
+			sc->count_high ++;
+#endif
+	}
+}
+
+#ifdef SPH_UPTR
+void
+SPH_XCAT(sph_, HASH)(void *cc, const void *data, size_t len)
+{
+	SPH_XCAT(sph_, SPH_XCAT(HASH, _context)) *sc;
+	unsigned current;
+	size_t orig_len;
+#if !SPH_64
+	sph_u32 clow, clow2;
+#endif
+
+	if (len < (2 * SPH_BLEN)) {
+		SPH_XCAT(HASH, _short)(cc, data, len);
+		return;
+	}
+	sc = cc;
+#if SPH_64
+	current = (unsigned)sc->count & (SPH_BLEN - 1U);
+#else
+	current = (unsigned)sc->count_low & (SPH_BLEN - 1U);
+#endif
+	if (current > 0) {
+		unsigned t;
+
+		t = SPH_BLEN - current;
+		SPH_XCAT(HASH, _short)(cc, data, t);
+		data = (const unsigned char *)data + t;
+		len -= t;
+	}
+#if !SPH_UNALIGNED
+	if (((SPH_UPTR)data & (SPH_WLEN - 1U)) != 0) {
+		SPH_XCAT(HASH, _short)(cc, data, len);
+		return;
+	}
+#endif
+	orig_len = len;
+	while (len >= SPH_BLEN) {
+		RFUN(data, SPH_VAL);
+		len -= SPH_BLEN;
+		data = (const unsigned char *)data + SPH_BLEN;
+	}
+	if (len > 0)
+		memcpy(sc->buf, data, len);
+#if SPH_64
+	sc->count += (sph_u64)orig_len;
+#else
+	clow = sc->count_low;
+	clow2 = SPH_T32(clow + orig_len);
+	sc->count_low = clow2;
+	if (clow2 < clow)
+		sc->count_high ++;
+	/*
+	 * This code handles the improbable situation where "size_t" is
+	 * greater than 32 bits, and yet we do not have a 64-bit type.
+	 */
+	orig_len >>= 12;
+	orig_len >>= 10;
+	orig_len >>= 10;
+	sc->count_high += orig_len;
+#endif
+}
+#endif
+
+#endif
+
+/*
+ * Perform padding and produce result. The context is NOT reinitialized
+ * by this function.
+ */
+static void
+SPH_XCAT(HASH, _addbits_and_close)(void *cc,
+	unsigned ub, unsigned n, void *dst, unsigned rnum)
+{
+	SPH_XCAT(sph_, SPH_XCAT(HASH, _context)) *sc;
+	unsigned current, u;
+#if !SPH_64
+	sph_u32 low, high;
+#endif
+
+	sc = cc;
+#if SPH_64
+	current = (unsigned)sc->count & (SPH_BLEN - 1U);
+#else
+	current = (unsigned)sc->count_low & (SPH_BLEN - 1U);
+#endif
+#ifdef PW01
+	sc->buf[current ++] = (0x100 | (ub & 0xFF)) >> (8 - n);
+#else
+	{
+		unsigned z;
+
+		z = 0x80 >> n;
+		sc->buf[current ++] = ((ub & -z) | z) & 0xFF;
+	}
+#endif
+	if (current > SPH_MAXPAD) {
+		memset(sc->buf + current, 0, SPH_BLEN - current);
+		RFUN(sc->buf, SPH_VAL);
+		memset(sc->buf, 0, SPH_MAXPAD);
+	} else {
+		memset(sc->buf + current, 0, SPH_MAXPAD - current);
+	}
+#if defined BE64
+#if defined PLW1
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#elif defined PLW4
+	memset(sc->buf + SPH_MAXPAD, 0, 2 * SPH_WLEN);
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD + 2 * SPH_WLEN,
+		sc->count >> 61);
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD + 3 * SPH_WLEN,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#else
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD, sc->count >> 61);
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD + SPH_WLEN,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#endif
+#elif defined LE64
+#if defined PLW1
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#elif defined PLW1
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD + SPH_WLEN, sc->count >> 61);
+	memset(sc->buf + SPH_MAXPAD + 2 * SPH_WLEN, 0, 2 * SPH_WLEN);
+#else
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD + SPH_WLEN, sc->count >> 61);
+#endif
+#else
+#if SPH_64
+#ifdef BE32
+	sph_enc64be_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#else
+	sph_enc64le_aligned(sc->buf + SPH_MAXPAD,
+		SPH_T64(sc->count << 3) + (sph_u64)n);
+#endif
+#else
+	low = sc->count_low;
+	high = SPH_T32((sc->count_high << 3) | (low >> 29));
+	low = SPH_T32(low << 3) + (sph_u32)n;
+#ifdef BE32
+	sph_enc32be(sc->buf + SPH_MAXPAD, high);
+	sph_enc32be(sc->buf + SPH_MAXPAD + SPH_WLEN, low);
+#else
+	sph_enc32le(sc->buf + SPH_MAXPAD, low);
+	sph_enc32le(sc->buf + SPH_MAXPAD + SPH_WLEN, high);
+#endif
+#endif
+#endif
+	RFUN(sc->buf, SPH_VAL);
+#ifdef SPH_NO_OUTPUT
+	(void)dst;
+	(void)rnum;
+	(void)u;
+#else
+	for (u = 0; u < rnum; u ++) {
+#if defined BE64
+		sph_enc64be((unsigned char *)dst + 8 * u, sc->val[u]);
+#elif defined LE64
+		sph_enc64le((unsigned char *)dst + 8 * u, sc->val[u]);
+#elif defined BE32
+		sph_enc32be((unsigned char *)dst + 4 * u, sc->val[u]);
+#else
+		sph_enc32le((unsigned char *)dst + 4 * u, sc->val[u]);
+#endif
+	}
+#endif
+}
+
+static void
+SPH_XCAT(HASH, _close)(void *cc, void *dst, unsigned rnum)
+{
+	SPH_XCAT(HASH, _addbits_and_close)(cc, 0, 0, dst, rnum);
+}
diff --git a/src/crypto/ghostrider/sph_blake.c b/src/crypto/ghostrider/sph_blake.c
new file mode 100644
index 000000000..8c7c3b91a
--- /dev/null
+++ b/src/crypto/ghostrider/sph_blake.c
@@ -0,0 +1,1132 @@
+/* $Id: blake.c 252 2011-06-07 17:55:14Z tp $ */
+/*
+ * BLAKE implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#include "sph_blake.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_BLAKE
+#define SPH_SMALL_FOOTPRINT_BLAKE   1
+#endif
+
+#if SPH_SMALL_FOOTPRINT_BLAKE
+#define SPH_COMPACT_BLAKE_32   1
+#endif
+
+#if SPH_64 && (SPH_SMALL_FOOTPRINT_BLAKE || !SPH_64_TRUE)
+#define SPH_COMPACT_BLAKE_64   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+static const sph_u32 IV224[8] = {
+	SPH_C32(0xC1059ED8), SPH_C32(0x367CD507),
+	SPH_C32(0x3070DD17), SPH_C32(0xF70E5939),
+	SPH_C32(0xFFC00B31), SPH_C32(0x68581511),
+	SPH_C32(0x64F98FA7), SPH_C32(0xBEFA4FA4)
+};
+
+static const sph_u32 IV256[8] = {
+	SPH_C32(0x6A09E667), SPH_C32(0xBB67AE85),
+	SPH_C32(0x3C6EF372), SPH_C32(0xA54FF53A),
+	SPH_C32(0x510E527F), SPH_C32(0x9B05688C),
+	SPH_C32(0x1F83D9AB), SPH_C32(0x5BE0CD19)
+};
+
+#if SPH_64
+
+static const sph_u64 IV384[8] = {
+	SPH_C64(0xCBBB9D5DC1059ED8), SPH_C64(0x629A292A367CD507),
+	SPH_C64(0x9159015A3070DD17), SPH_C64(0x152FECD8F70E5939),
+	SPH_C64(0x67332667FFC00B31), SPH_C64(0x8EB44A8768581511),
+	SPH_C64(0xDB0C2E0D64F98FA7), SPH_C64(0x47B5481DBEFA4FA4)
+};
+
+static const sph_u64 IV512[8] = {
+	SPH_C64(0x6A09E667F3BCC908), SPH_C64(0xBB67AE8584CAA73B),
+	SPH_C64(0x3C6EF372FE94F82B), SPH_C64(0xA54FF53A5F1D36F1),
+	SPH_C64(0x510E527FADE682D1), SPH_C64(0x9B05688C2B3E6C1F),
+	SPH_C64(0x1F83D9ABFB41BD6B), SPH_C64(0x5BE0CD19137E2179)
+};
+
+#endif
+
+#if SPH_COMPACT_BLAKE_32 || SPH_COMPACT_BLAKE_64
+
+static const unsigned sigma[16][16] = {
+	{  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15 },
+	{ 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3 },
+	{ 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4 },
+	{  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8 },
+	{  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13 },
+	{  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9 },
+	{ 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11 },
+	{ 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10 },
+	{  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5 },
+	{ 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13,  0 },
+	{  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15 },
+	{ 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3 },
+	{ 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4 },
+	{  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8 },
+	{  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13 },
+	{  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9 }
+};
+
+/*
+  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
+ 14 10  4  8  9 15 13  6  1 12  0  2 11  7  5  3
+ 11  8 12  0  5  2 15 13 10 14  3  6  7  1  9  4
+  7  9  3  1 13 12 11 14  2  6  5 10  4  0 15  8
+  9  0  5  7  2  4 10 15 14  1 11 12  6  8  3 13
+  2 12  6 10  0 11  8  3  4 13  7  5 15 14  1  9
+ 12  5  1 15 14 13  4 10  0  7  6  3  9  2  8 11
+ 13 11  7 14 12  1  3  9  5  0 15  4  8  6  2 10
+  6 15 14  9 11  3  0  8 12  2 13  7  1  4 10  5
+ 10  2  8  4  7  6  1  5 15 11  9 14  3 12 13  0
+*/
+#endif
+
+#define Z00   0
+#define Z01   1
+#define Z02   2
+#define Z03   3
+#define Z04   4
+#define Z05   5
+#define Z06   6
+#define Z07   7
+#define Z08   8
+#define Z09   9
+#define Z0A   A
+#define Z0B   B
+#define Z0C   C
+#define Z0D   D
+#define Z0E   E
+#define Z0F   F
+
+#define Z10   E
+#define Z11   A
+#define Z12   4
+#define Z13   8
+#define Z14   9
+#define Z15   F
+#define Z16   D
+#define Z17   6
+#define Z18   1
+#define Z19   C
+#define Z1A   0
+#define Z1B   2
+#define Z1C   B
+#define Z1D   7
+#define Z1E   5
+#define Z1F   3
+
+#define Z20   B
+#define Z21   8
+#define Z22   C
+#define Z23   0
+#define Z24   5
+#define Z25   2
+#define Z26   F
+#define Z27   D
+#define Z28   A
+#define Z29   E
+#define Z2A   3
+#define Z2B   6
+#define Z2C   7
+#define Z2D   1
+#define Z2E   9
+#define Z2F   4
+
+#define Z30   7
+#define Z31   9
+#define Z32   3
+#define Z33   1
+#define Z34   D
+#define Z35   C
+#define Z36   B
+#define Z37   E
+#define Z38   2
+#define Z39   6
+#define Z3A   5
+#define Z3B   A
+#define Z3C   4
+#define Z3D   0
+#define Z3E   F
+#define Z3F   8
+
+#define Z40   9
+#define Z41   0
+#define Z42   5
+#define Z43   7
+#define Z44   2
+#define Z45   4
+#define Z46   A
+#define Z47   F
+#define Z48   E
+#define Z49   1
+#define Z4A   B
+#define Z4B   C
+#define Z4C   6
+#define Z4D   8
+#define Z4E   3
+#define Z4F   D
+
+#define Z50   2
+#define Z51   C
+#define Z52   6
+#define Z53   A
+#define Z54   0
+#define Z55   B
+#define Z56   8
+#define Z57   3
+#define Z58   4
+#define Z59   D
+#define Z5A   7
+#define Z5B   5
+#define Z5C   F
+#define Z5D   E
+#define Z5E   1
+#define Z5F   9
+
+#define Z60   C
+#define Z61   5
+#define Z62   1
+#define Z63   F
+#define Z64   E
+#define Z65   D
+#define Z66   4
+#define Z67   A
+#define Z68   0
+#define Z69   7
+#define Z6A   6
+#define Z6B   3
+#define Z6C   9
+#define Z6D   2
+#define Z6E   8
+#define Z6F   B
+
+#define Z70   D
+#define Z71   B
+#define Z72   7
+#define Z73   E
+#define Z74   C
+#define Z75   1
+#define Z76   3
+#define Z77   9
+#define Z78   5
+#define Z79   0
+#define Z7A   F
+#define Z7B   4
+#define Z7C   8
+#define Z7D   6
+#define Z7E   2
+#define Z7F   A
+
+#define Z80   6
+#define Z81   F
+#define Z82   E
+#define Z83   9
+#define Z84   B
+#define Z85   3
+#define Z86   0
+#define Z87   8
+#define Z88   C
+#define Z89   2
+#define Z8A   D
+#define Z8B   7
+#define Z8C   1
+#define Z8D   4
+#define Z8E   A
+#define Z8F   5
+
+#define Z90   A
+#define Z91   2
+#define Z92   8
+#define Z93   4
+#define Z94   7
+#define Z95   6
+#define Z96   1
+#define Z97   5
+#define Z98   F
+#define Z99   B
+#define Z9A   9
+#define Z9B   E
+#define Z9C   3
+#define Z9D   C
+#define Z9E   D
+#define Z9F   0
+
+#define Mx(r, i)    Mx_(Z ## r ## i)
+#define Mx_(n)      Mx__(n)
+#define Mx__(n)     M ## n
+
+#define CSx(r, i)   CSx_(Z ## r ## i)
+#define CSx_(n)     CSx__(n)
+#define CSx__(n)    CS ## n
+
+#define CS0   SPH_C32(0x243F6A88)
+#define CS1   SPH_C32(0x85A308D3)
+#define CS2   SPH_C32(0x13198A2E)
+#define CS3   SPH_C32(0x03707344)
+#define CS4   SPH_C32(0xA4093822)
+#define CS5   SPH_C32(0x299F31D0)
+#define CS6   SPH_C32(0x082EFA98)
+#define CS7   SPH_C32(0xEC4E6C89)
+#define CS8   SPH_C32(0x452821E6)
+#define CS9   SPH_C32(0x38D01377)
+#define CSA   SPH_C32(0xBE5466CF)
+#define CSB   SPH_C32(0x34E90C6C)
+#define CSC   SPH_C32(0xC0AC29B7)
+#define CSD   SPH_C32(0xC97C50DD)
+#define CSE   SPH_C32(0x3F84D5B5)
+#define CSF   SPH_C32(0xB5470917)
+
+#if SPH_COMPACT_BLAKE_32
+
+static const sph_u32 CS[16] = {
+	SPH_C32(0x243F6A88), SPH_C32(0x85A308D3),
+	SPH_C32(0x13198A2E), SPH_C32(0x03707344),
+	SPH_C32(0xA4093822), SPH_C32(0x299F31D0),
+	SPH_C32(0x082EFA98), SPH_C32(0xEC4E6C89),
+	SPH_C32(0x452821E6), SPH_C32(0x38D01377),
+	SPH_C32(0xBE5466CF), SPH_C32(0x34E90C6C),
+	SPH_C32(0xC0AC29B7), SPH_C32(0xC97C50DD),
+	SPH_C32(0x3F84D5B5), SPH_C32(0xB5470917)
+};
+
+#endif
+
+#if SPH_64
+
+#define CBx(r, i)   CBx_(Z ## r ## i)
+#define CBx_(n)     CBx__(n)
+#define CBx__(n)    CB ## n
+
+#define CB0   SPH_C64(0x243F6A8885A308D3)
+#define CB1   SPH_C64(0x13198A2E03707344)
+#define CB2   SPH_C64(0xA4093822299F31D0)
+#define CB3   SPH_C64(0x082EFA98EC4E6C89)
+#define CB4   SPH_C64(0x452821E638D01377)
+#define CB5   SPH_C64(0xBE5466CF34E90C6C)
+#define CB6   SPH_C64(0xC0AC29B7C97C50DD)
+#define CB7   SPH_C64(0x3F84D5B5B5470917)
+#define CB8   SPH_C64(0x9216D5D98979FB1B)
+#define CB9   SPH_C64(0xD1310BA698DFB5AC)
+#define CBA   SPH_C64(0x2FFD72DBD01ADFB7)
+#define CBB   SPH_C64(0xB8E1AFED6A267E96)
+#define CBC   SPH_C64(0xBA7C9045F12C7F99)
+#define CBD   SPH_C64(0x24A19947B3916CF7)
+#define CBE   SPH_C64(0x0801F2E2858EFC16)
+#define CBF   SPH_C64(0x636920D871574E69)
+
+#if SPH_COMPACT_BLAKE_64
+
+static const sph_u64 CB[16] = {
+	SPH_C64(0x243F6A8885A308D3), SPH_C64(0x13198A2E03707344),
+	SPH_C64(0xA4093822299F31D0), SPH_C64(0x082EFA98EC4E6C89),
+	SPH_C64(0x452821E638D01377), SPH_C64(0xBE5466CF34E90C6C),
+	SPH_C64(0xC0AC29B7C97C50DD), SPH_C64(0x3F84D5B5B5470917),
+	SPH_C64(0x9216D5D98979FB1B), SPH_C64(0xD1310BA698DFB5AC),
+	SPH_C64(0x2FFD72DBD01ADFB7), SPH_C64(0xB8E1AFED6A267E96),
+	SPH_C64(0xBA7C9045F12C7F99), SPH_C64(0x24A19947B3916CF7),
+	SPH_C64(0x0801F2E2858EFC16), SPH_C64(0x636920D871574E69)
+};
+
+#endif
+
+#endif
+
+#define GS(m0, m1, c0, c1, a, b, c, d)   do { \
+		a = SPH_T32(a + b + (m0 ^ c1)); \
+		d = SPH_ROTR32(d ^ a, 16); \
+		c = SPH_T32(c + d); \
+		b = SPH_ROTR32(b ^ c, 12); \
+		a = SPH_T32(a + b + (m1 ^ c0)); \
+		d = SPH_ROTR32(d ^ a, 8); \
+		c = SPH_T32(c + d); \
+		b = SPH_ROTR32(b ^ c, 7); \
+	} while (0)
+
+#if SPH_COMPACT_BLAKE_32
+
+#define ROUND_S(r)   do { \
+		GS(M[sigma[r][0x0]], M[sigma[r][0x1]], \
+			CS[sigma[r][0x0]], CS[sigma[r][0x1]], V0, V4, V8, VC); \
+		GS(M[sigma[r][0x2]], M[sigma[r][0x3]], \
+			CS[sigma[r][0x2]], CS[sigma[r][0x3]], V1, V5, V9, VD); \
+		GS(M[sigma[r][0x4]], M[sigma[r][0x5]], \
+			CS[sigma[r][0x4]], CS[sigma[r][0x5]], V2, V6, VA, VE); \
+		GS(M[sigma[r][0x6]], M[sigma[r][0x7]], \
+			CS[sigma[r][0x6]], CS[sigma[r][0x7]], V3, V7, VB, VF); \
+		GS(M[sigma[r][0x8]], M[sigma[r][0x9]], \
+			CS[sigma[r][0x8]], CS[sigma[r][0x9]], V0, V5, VA, VF); \
+		GS(M[sigma[r][0xA]], M[sigma[r][0xB]], \
+			CS[sigma[r][0xA]], CS[sigma[r][0xB]], V1, V6, VB, VC); \
+		GS(M[sigma[r][0xC]], M[sigma[r][0xD]], \
+			CS[sigma[r][0xC]], CS[sigma[r][0xD]], V2, V7, V8, VD); \
+		GS(M[sigma[r][0xE]], M[sigma[r][0xF]], \
+			CS[sigma[r][0xE]], CS[sigma[r][0xF]], V3, V4, V9, VE); \
+	} while (0)
+
+#else
+
+#define ROUND_S(r)   do { \
+		GS(Mx(r, 0), Mx(r, 1), CSx(r, 0), CSx(r, 1), V0, V4, V8, VC); \
+		GS(Mx(r, 2), Mx(r, 3), CSx(r, 2), CSx(r, 3), V1, V5, V9, VD); \
+		GS(Mx(r, 4), Mx(r, 5), CSx(r, 4), CSx(r, 5), V2, V6, VA, VE); \
+		GS(Mx(r, 6), Mx(r, 7), CSx(r, 6), CSx(r, 7), V3, V7, VB, VF); \
+		GS(Mx(r, 8), Mx(r, 9), CSx(r, 8), CSx(r, 9), V0, V5, VA, VF); \
+		GS(Mx(r, A), Mx(r, B), CSx(r, A), CSx(r, B), V1, V6, VB, VC); \
+		GS(Mx(r, C), Mx(r, D), CSx(r, C), CSx(r, D), V2, V7, V8, VD); \
+		GS(Mx(r, E), Mx(r, F), CSx(r, E), CSx(r, F), V3, V4, V9, VE); \
+	} while (0)
+
+#endif
+
+#if SPH_64
+
+#define GB(m0, m1, c0, c1, a, b, c, d)   do { \
+		a = SPH_T64(a + b + (m0 ^ c1)); \
+		d = SPH_ROTR64(d ^ a, 32); \
+		c = SPH_T64(c + d); \
+		b = SPH_ROTR64(b ^ c, 25); \
+		a = SPH_T64(a + b + (m1 ^ c0)); \
+		d = SPH_ROTR64(d ^ a, 16); \
+		c = SPH_T64(c + d); \
+		b = SPH_ROTR64(b ^ c, 11); \
+	} while (0)
+
+#if SPH_COMPACT_BLAKE_64
+
+#define ROUND_B(r)   do { \
+		GB(M[sigma[r][0x0]], M[sigma[r][0x1]], \
+			CB[sigma[r][0x0]], CB[sigma[r][0x1]], V0, V4, V8, VC); \
+		GB(M[sigma[r][0x2]], M[sigma[r][0x3]], \
+			CB[sigma[r][0x2]], CB[sigma[r][0x3]], V1, V5, V9, VD); \
+		GB(M[sigma[r][0x4]], M[sigma[r][0x5]], \
+			CB[sigma[r][0x4]], CB[sigma[r][0x5]], V2, V6, VA, VE); \
+		GB(M[sigma[r][0x6]], M[sigma[r][0x7]], \
+			CB[sigma[r][0x6]], CB[sigma[r][0x7]], V3, V7, VB, VF); \
+		GB(M[sigma[r][0x8]], M[sigma[r][0x9]], \
+			CB[sigma[r][0x8]], CB[sigma[r][0x9]], V0, V5, VA, VF); \
+		GB(M[sigma[r][0xA]], M[sigma[r][0xB]], \
+			CB[sigma[r][0xA]], CB[sigma[r][0xB]], V1, V6, VB, VC); \
+		GB(M[sigma[r][0xC]], M[sigma[r][0xD]], \
+			CB[sigma[r][0xC]], CB[sigma[r][0xD]], V2, V7, V8, VD); \
+		GB(M[sigma[r][0xE]], M[sigma[r][0xF]], \
+			CB[sigma[r][0xE]], CB[sigma[r][0xF]], V3, V4, V9, VE); \
+	} while (0)
+
+#else
+
+#define ROUND_B(r)   do { \
+		GB(Mx(r, 0), Mx(r, 1), CBx(r, 0), CBx(r, 1), V0, V4, V8, VC); \
+		GB(Mx(r, 2), Mx(r, 3), CBx(r, 2), CBx(r, 3), V1, V5, V9, VD); \
+		GB(Mx(r, 4), Mx(r, 5), CBx(r, 4), CBx(r, 5), V2, V6, VA, VE); \
+		GB(Mx(r, 6), Mx(r, 7), CBx(r, 6), CBx(r, 7), V3, V7, VB, VF); \
+		GB(Mx(r, 8), Mx(r, 9), CBx(r, 8), CBx(r, 9), V0, V5, VA, VF); \
+		GB(Mx(r, A), Mx(r, B), CBx(r, A), CBx(r, B), V1, V6, VB, VC); \
+		GB(Mx(r, C), Mx(r, D), CBx(r, C), CBx(r, D), V2, V7, V8, VD); \
+		GB(Mx(r, E), Mx(r, F), CBx(r, E), CBx(r, F), V3, V4, V9, VE); \
+	} while (0)
+
+#endif
+
+#endif
+
+#define DECL_STATE32 \
+	sph_u32 H0, H1, H2, H3, H4, H5, H6, H7; \
+	sph_u32 S0, S1, S2, S3, T0, T1;
+
+#define READ_STATE32(state)   do { \
+		H0 = (state)->H[0]; \
+		H1 = (state)->H[1]; \
+		H2 = (state)->H[2]; \
+		H3 = (state)->H[3]; \
+		H4 = (state)->H[4]; \
+		H5 = (state)->H[5]; \
+		H6 = (state)->H[6]; \
+		H7 = (state)->H[7]; \
+		S0 = (state)->S[0]; \
+		S1 = (state)->S[1]; \
+		S2 = (state)->S[2]; \
+		S3 = (state)->S[3]; \
+		T0 = (state)->T0; \
+		T1 = (state)->T1; \
+	} while (0)
+
+#define WRITE_STATE32(state)   do { \
+		(state)->H[0] = H0; \
+		(state)->H[1] = H1; \
+		(state)->H[2] = H2; \
+		(state)->H[3] = H3; \
+		(state)->H[4] = H4; \
+		(state)->H[5] = H5; \
+		(state)->H[6] = H6; \
+		(state)->H[7] = H7; \
+		(state)->S[0] = S0; \
+		(state)->S[1] = S1; \
+		(state)->S[2] = S2; \
+		(state)->S[3] = S3; \
+		(state)->T0 = T0; \
+		(state)->T1 = T1; \
+	} while (0)
+
+//#define BLAKE32_ROUNDS 8
+#ifndef BLAKE32_ROUNDS
+#define BLAKE32_ROUNDS 14
+#endif
+
+#if SPH_COMPACT_BLAKE_32
+
+#define COMPRESS32   do { \
+		sph_u32 M[16]; \
+		sph_u32 V0, V1, V2, V3, V4, V5, V6, V7; \
+		sph_u32 V8, V9, VA, VB, VC, VD, VE, VF; \
+		unsigned r; \
+		V0 = H0; \
+		V1 = H1; \
+		V2 = H2; \
+		V3 = H3; \
+		V4 = H4; \
+		V5 = H5; \
+		V6 = H6; \
+		V7 = H7; \
+		V8 = S0 ^ CS0; \
+		V9 = S1 ^ CS1; \
+		VA = S2 ^ CS2; \
+		VB = S3 ^ CS3; \
+		VC = T0 ^ CS4; \
+		VD = T0 ^ CS5; \
+		VE = T1 ^ CS6; \
+		VF = T1 ^ CS7; \
+		M[0x0] = sph_dec32be_aligned(buf +  0); \
+		M[0x1] = sph_dec32be_aligned(buf +  4); \
+		M[0x2] = sph_dec32be_aligned(buf +  8); \
+		M[0x3] = sph_dec32be_aligned(buf + 12); \
+		M[0x4] = sph_dec32be_aligned(buf + 16); \
+		M[0x5] = sph_dec32be_aligned(buf + 20); \
+		M[0x6] = sph_dec32be_aligned(buf + 24); \
+		M[0x7] = sph_dec32be_aligned(buf + 28); \
+		M[0x8] = sph_dec32be_aligned(buf + 32); \
+		M[0x9] = sph_dec32be_aligned(buf + 36); \
+		M[0xA] = sph_dec32be_aligned(buf + 40); \
+		M[0xB] = sph_dec32be_aligned(buf + 44); \
+		M[0xC] = sph_dec32be_aligned(buf + 48); \
+		M[0xD] = sph_dec32be_aligned(buf + 52); \
+		M[0xE] = sph_dec32be_aligned(buf + 56); \
+		M[0xF] = sph_dec32be_aligned(buf + 60); \
+		for (r = 0; r < BLAKE32_ROUNDS; r ++) \
+			ROUND_S(r); \
+		H0 ^= S0 ^ V0 ^ V8; \
+		H1 ^= S1 ^ V1 ^ V9; \
+		H2 ^= S2 ^ V2 ^ VA; \
+		H3 ^= S3 ^ V3 ^ VB; \
+		H4 ^= S0 ^ V4 ^ VC; \
+		H5 ^= S1 ^ V5 ^ VD; \
+		H6 ^= S2 ^ V6 ^ VE; \
+		H7 ^= S3 ^ V7 ^ VF; \
+	} while (0)
+
+#else
+
+#define COMPRESS32   do { \
+		sph_u32 M0, M1, M2, M3, M4, M5, M6, M7; \
+		sph_u32 M8, M9, MA, MB, MC, MD, ME, MF; \
+		sph_u32 V0, V1, V2, V3, V4, V5, V6, V7; \
+		sph_u32 V8, V9, VA, VB, VC, VD, VE, VF; \
+		V0 = H0; \
+		V1 = H1; \
+		V2 = H2; \
+		V3 = H3; \
+		V4 = H4; \
+		V5 = H5; \
+		V6 = H6; \
+		V7 = H7; \
+		V8 = S0 ^ CS0; \
+		V9 = S1 ^ CS1; \
+		VA = S2 ^ CS2; \
+		VB = S3 ^ CS3; \
+		VC = T0 ^ CS4; \
+		VD = T0 ^ CS5; \
+		VE = T1 ^ CS6; \
+		VF = T1 ^ CS7; \
+		M0 = sph_dec32be_aligned(buf +  0); \
+		M1 = sph_dec32be_aligned(buf +  4); \
+		M2 = sph_dec32be_aligned(buf +  8); \
+		M3 = sph_dec32be_aligned(buf + 12); \
+		M4 = sph_dec32be_aligned(buf + 16); \
+		M5 = sph_dec32be_aligned(buf + 20); \
+		M6 = sph_dec32be_aligned(buf + 24); \
+		M7 = sph_dec32be_aligned(buf + 28); \
+		M8 = sph_dec32be_aligned(buf + 32); \
+		M9 = sph_dec32be_aligned(buf + 36); \
+		MA = sph_dec32be_aligned(buf + 40); \
+		MB = sph_dec32be_aligned(buf + 44); \
+		MC = sph_dec32be_aligned(buf + 48); \
+		MD = sph_dec32be_aligned(buf + 52); \
+		ME = sph_dec32be_aligned(buf + 56); \
+		MF = sph_dec32be_aligned(buf + 60); \
+		ROUND_S(0); \
+		ROUND_S(1); \
+		ROUND_S(2); \
+		ROUND_S(3); \
+		ROUND_S(4); \
+		ROUND_S(5); \
+		ROUND_S(6); \
+		ROUND_S(7); \
+		if (BLAKE32_ROUNDS == 14) { \
+		ROUND_S(8); \
+		ROUND_S(9); \
+		ROUND_S(0); \
+		ROUND_S(1); \
+		ROUND_S(2); \
+		ROUND_S(3); \
+		} \
+		H0 ^= S0 ^ V0 ^ V8; \
+		H1 ^= S1 ^ V1 ^ V9; \
+		H2 ^= S2 ^ V2 ^ VA; \
+		H3 ^= S3 ^ V3 ^ VB; \
+		H4 ^= S0 ^ V4 ^ VC; \
+		H5 ^= S1 ^ V5 ^ VD; \
+		H6 ^= S2 ^ V6 ^ VE; \
+		H7 ^= S3 ^ V7 ^ VF; \
+	} while (0)
+
+#endif
+
+#if SPH_64
+
+#define DECL_STATE64 \
+	sph_u64 H0, H1, H2, H3, H4, H5, H6, H7; \
+	sph_u64 S0, S1, S2, S3, T0, T1;
+
+#define READ_STATE64(state)   do { \
+		H0 = (state)->H[0]; \
+		H1 = (state)->H[1]; \
+		H2 = (state)->H[2]; \
+		H3 = (state)->H[3]; \
+		H4 = (state)->H[4]; \
+		H5 = (state)->H[5]; \
+		H6 = (state)->H[6]; \
+		H7 = (state)->H[7]; \
+		S0 = (state)->S[0]; \
+		S1 = (state)->S[1]; \
+		S2 = (state)->S[2]; \
+		S3 = (state)->S[3]; \
+		T0 = (state)->T0; \
+		T1 = (state)->T1; \
+	} while (0)
+
+#define WRITE_STATE64(state)   do { \
+		(state)->H[0] = H0; \
+		(state)->H[1] = H1; \
+		(state)->H[2] = H2; \
+		(state)->H[3] = H3; \
+		(state)->H[4] = H4; \
+		(state)->H[5] = H5; \
+		(state)->H[6] = H6; \
+		(state)->H[7] = H7; \
+		(state)->S[0] = S0; \
+		(state)->S[1] = S1; \
+		(state)->S[2] = S2; \
+		(state)->S[3] = S3; \
+		(state)->T0 = T0; \
+		(state)->T1 = T1; \
+	} while (0)
+
+#if SPH_COMPACT_BLAKE_64
+
+#define COMPRESS64   do { \
+		sph_u64 M[16]; \
+		sph_u64 V0, V1, V2, V3, V4, V5, V6, V7; \
+		sph_u64 V8, V9, VA, VB, VC, VD, VE, VF; \
+		unsigned r; \
+		V0 = H0; \
+		V1 = H1; \
+		V2 = H2; \
+		V3 = H3; \
+		V4 = H4; \
+		V5 = H5; \
+		V6 = H6; \
+		V7 = H7; \
+		V8 = S0 ^ CB0; \
+		V9 = S1 ^ CB1; \
+		VA = S2 ^ CB2; \
+		VB = S3 ^ CB3; \
+		VC = T0 ^ CB4; \
+		VD = T0 ^ CB5; \
+		VE = T1 ^ CB6; \
+		VF = T1 ^ CB7; \
+		M[0x0] = sph_dec64be_aligned(buf +   0); \
+		M[0x1] = sph_dec64be_aligned(buf +   8); \
+		M[0x2] = sph_dec64be_aligned(buf +  16); \
+		M[0x3] = sph_dec64be_aligned(buf +  24); \
+		M[0x4] = sph_dec64be_aligned(buf +  32); \
+		M[0x5] = sph_dec64be_aligned(buf +  40); \
+		M[0x6] = sph_dec64be_aligned(buf +  48); \
+		M[0x7] = sph_dec64be_aligned(buf +  56); \
+		M[0x8] = sph_dec64be_aligned(buf +  64); \
+		M[0x9] = sph_dec64be_aligned(buf +  72); \
+		M[0xA] = sph_dec64be_aligned(buf +  80); \
+		M[0xB] = sph_dec64be_aligned(buf +  88); \
+		M[0xC] = sph_dec64be_aligned(buf +  96); \
+		M[0xD] = sph_dec64be_aligned(buf + 104); \
+		M[0xE] = sph_dec64be_aligned(buf + 112); \
+		M[0xF] = sph_dec64be_aligned(buf + 120); \
+		for (r = 0; r < 16; r ++) \
+			ROUND_B(r); \
+		H0 ^= S0 ^ V0 ^ V8; \
+		H1 ^= S1 ^ V1 ^ V9; \
+		H2 ^= S2 ^ V2 ^ VA; \
+		H3 ^= S3 ^ V3 ^ VB; \
+		H4 ^= S0 ^ V4 ^ VC; \
+		H5 ^= S1 ^ V5 ^ VD; \
+		H6 ^= S2 ^ V6 ^ VE; \
+		H7 ^= S3 ^ V7 ^ VF; \
+	} while (0)
+
+#else
+
+#define COMPRESS64   do { \
+		sph_u64 M0, M1, M2, M3, M4, M5, M6, M7; \
+		sph_u64 M8, M9, MA, MB, MC, MD, ME, MF; \
+		sph_u64 V0, V1, V2, V3, V4, V5, V6, V7; \
+		sph_u64 V8, V9, VA, VB, VC, VD, VE, VF; \
+		V0 = H0; \
+		V1 = H1; \
+		V2 = H2; \
+		V3 = H3; \
+		V4 = H4; \
+		V5 = H5; \
+		V6 = H6; \
+		V7 = H7; \
+		V8 = S0 ^ CB0; \
+		V9 = S1 ^ CB1; \
+		VA = S2 ^ CB2; \
+		VB = S3 ^ CB3; \
+		VC = T0 ^ CB4; \
+		VD = T0 ^ CB5; \
+		VE = T1 ^ CB6; \
+		VF = T1 ^ CB7; \
+		M0 = sph_dec64be_aligned(buf +   0); \
+		M1 = sph_dec64be_aligned(buf +   8); \
+		M2 = sph_dec64be_aligned(buf +  16); \
+		M3 = sph_dec64be_aligned(buf +  24); \
+		M4 = sph_dec64be_aligned(buf +  32); \
+		M5 = sph_dec64be_aligned(buf +  40); \
+		M6 = sph_dec64be_aligned(buf +  48); \
+		M7 = sph_dec64be_aligned(buf +  56); \
+		M8 = sph_dec64be_aligned(buf +  64); \
+		M9 = sph_dec64be_aligned(buf +  72); \
+		MA = sph_dec64be_aligned(buf +  80); \
+		MB = sph_dec64be_aligned(buf +  88); \
+		MC = sph_dec64be_aligned(buf +  96); \
+		MD = sph_dec64be_aligned(buf + 104); \
+		ME = sph_dec64be_aligned(buf + 112); \
+		MF = sph_dec64be_aligned(buf + 120); \
+		ROUND_B(0); \
+		ROUND_B(1); \
+		ROUND_B(2); \
+		ROUND_B(3); \
+		ROUND_B(4); \
+		ROUND_B(5); \
+		ROUND_B(6); \
+		ROUND_B(7); \
+		ROUND_B(8); \
+		ROUND_B(9); \
+		ROUND_B(0); \
+		ROUND_B(1); \
+		ROUND_B(2); \
+		ROUND_B(3); \
+		ROUND_B(4); \
+		ROUND_B(5); \
+		H0 ^= S0 ^ V0 ^ V8; \
+		H1 ^= S1 ^ V1 ^ V9; \
+		H2 ^= S2 ^ V2 ^ VA; \
+		H3 ^= S3 ^ V3 ^ VB; \
+		H4 ^= S0 ^ V4 ^ VC; \
+		H5 ^= S1 ^ V5 ^ VD; \
+		H6 ^= S2 ^ V6 ^ VE; \
+		H7 ^= S3 ^ V7 ^ VF; \
+	} while (0)
+
+#endif
+
+#endif
+
+static const sph_u32 salt_zero_small[4] = { 0, 0, 0, 0 };
+
+static void
+blake32_init(sph_blake_small_context *sc,
+	const sph_u32 *iv, const sph_u32 *salt)
+{
+	memcpy(sc->H, iv, 8 * sizeof(sph_u32));
+	memcpy(sc->S, salt, 4 * sizeof(sph_u32));
+	sc->T0 = sc->T1 = 0;
+	sc->ptr = 0;
+}
+
+static void
+blake32(sph_blake_small_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE32
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE32(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			if ((T0 = SPH_T32(T0 + 512)) < 512)
+				T1 = SPH_T32(T1 + 1);
+			COMPRESS32;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE32(sc);
+	sc->ptr = ptr;
+}
+
+static void
+blake32_close(sph_blake_small_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w32)
+{
+	union {
+		unsigned char buf[64];
+		sph_u32 dummy;
+	} u;
+	size_t ptr, k;
+	unsigned bit_len;
+	unsigned z;
+	sph_u32 th, tl;
+	unsigned char *out;
+
+	ptr = sc->ptr;
+	bit_len = ((unsigned)ptr << 3) + n;
+	z = 0x80 >> n;
+	u.buf[ptr] = ((ub & -z) | z) & 0xFF;
+	tl = sc->T0 + bit_len;
+	th = sc->T1;
+	if (ptr == 0 && n == 0) {
+		sc->T0 = SPH_C32(0xFFFFFE00);
+		sc->T1 = SPH_C32(0xFFFFFFFF);
+	} else if (sc->T0 == 0) {
+		sc->T0 = SPH_C32(0xFFFFFE00) + bit_len;
+		sc->T1 = SPH_T32(sc->T1 - 1);
+	} else {
+		sc->T0 -= 512 - bit_len;
+	}
+
+	if (bit_len <= 446) {
+		memset(u.buf + ptr + 1, 0, 55 - ptr);
+		if (out_size_w32 == 8)
+			u.buf[55] |= 1;
+		sph_enc32be_aligned(u.buf + 56, th);
+		sph_enc32be_aligned(u.buf + 60, tl);
+		blake32(sc, u.buf + ptr, 64 - ptr);
+	} else {
+		memset(u.buf + ptr + 1, 0, 63 - ptr);
+		blake32(sc, u.buf + ptr, 64 - ptr);
+		sc->T0 = SPH_C32(0xFFFFFE00);
+		sc->T1 = SPH_C32(0xFFFFFFFF);
+		memset(u.buf, 0, 56);
+		if (out_size_w32 == 8)
+			u.buf[55] = 1;
+		sph_enc32be_aligned(u.buf + 56, th);
+		sph_enc32be_aligned(u.buf + 60, tl);
+		blake32(sc, u.buf, 64);
+	}
+        out = dst;
+        for (k = 0; k < out_size_w32; k ++)
+                sph_enc32be(out + (k << 2), sc->H[k]);
+}
+
+#if SPH_64
+
+static const sph_u64 salt_zero_big[4] = { 0, 0, 0, 0 };
+
+static void
+blake64_init(sph_blake_big_context *sc,
+	const sph_u64 *iv, const sph_u64 *salt)
+{
+	memcpy(sc->H, iv, 8 * sizeof(sph_u64));
+	memcpy(sc->S, salt, 4 * sizeof(sph_u64));
+	sc->T0 = sc->T1 = 0;
+	sc->ptr = 0;
+}
+
+static void
+blake64(sph_blake_big_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE64
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE64(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			if ((T0 = SPH_T64(T0 + 1024)) < 1024)
+				T1 = SPH_T64(T1 + 1);
+			COMPRESS64;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE64(sc);
+	sc->ptr = ptr;
+}
+
+static void
+blake64_close(sph_blake_big_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w64)
+{
+	union {
+		unsigned char buf[128];
+		sph_u64 dummy;
+	} u;
+	size_t ptr, k;
+	unsigned bit_len;
+	unsigned z;
+	sph_u64 th, tl;
+	unsigned char *out;
+
+	ptr = sc->ptr;
+	bit_len = ((unsigned)ptr << 3) + n;
+	z = 0x80 >> n;
+	u.buf[ptr] = ((ub & -z) | z) & 0xFF;
+	tl = sc->T0 + bit_len;
+	th = sc->T1;
+	if (ptr == 0 && n == 0) {
+		sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00);
+		sc->T1 = SPH_C64(0xFFFFFFFFFFFFFFFF);
+	} else if (sc->T0 == 0) {
+		sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00) + bit_len;
+		sc->T1 = SPH_T64(sc->T1 - 1);
+	} else {
+		sc->T0 -= 1024 - bit_len;
+	}
+	if (bit_len <= 894) {
+		memset(u.buf + ptr + 1, 0, 111 - ptr);
+		if (out_size_w64 == 8)
+			u.buf[111] |= 1;
+		sph_enc64be_aligned(u.buf + 112, th);
+		sph_enc64be_aligned(u.buf + 120, tl);
+
+		blake64(sc, u.buf + ptr, 128 - ptr);
+	} else {
+		memset(u.buf + ptr + 1, 0, 127 - ptr);
+
+		blake64(sc, u.buf + ptr, 128 - ptr);
+		sc->T0 = SPH_C64(0xFFFFFFFFFFFFFC00);
+		sc->T1 = SPH_C64(0xFFFFFFFFFFFFFFFF);
+		memset(u.buf, 0, 112);
+		if (out_size_w64 == 8)
+			u.buf[111] = 1;
+		sph_enc64be_aligned(u.buf + 112, th);
+		sph_enc64be_aligned(u.buf + 120, tl);
+
+		blake64(sc, u.buf, 128);
+	}
+	out = dst;
+	for (k = 0; k < out_size_w64; k ++)
+		sph_enc64be(out + (k << 3), sc->H[k]);
+}
+
+#endif
+
+/* see sph_blake.h */
+void
+sph_blake224_init(void *cc)
+{
+	blake32_init(cc, IV224, salt_zero_small);
+}
+
+/* see sph_blake.h */
+void
+sph_blake224(void *cc, const void *data, size_t len)
+{
+	blake32(cc, data, len);
+}
+
+/* see sph_blake.h */
+void
+sph_blake224_close(void *cc, void *dst)
+{
+	sph_blake224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_blake.h */
+void
+sph_blake224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	blake32_close(cc, ub, n, dst, 7);
+//	sph_blake224_init(cc);
+}
+
+/* see sph_blake.h */
+void
+sph_blake256_init(void *cc)
+{
+	blake32_init(cc, IV256, salt_zero_small);
+}
+
+/* see sph_blake.h */
+void
+sph_blake256(void *cc, const void *data, size_t len)
+{
+	blake32(cc, data, len);
+}
+
+/* see sph_blake.h */
+void
+sph_blake256_close(void *cc, void *dst)
+{
+	sph_blake256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_blake.h */
+void
+sph_blake256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	blake32_close(cc, ub, n, dst, 8);
+//	sph_blake256_init(cc);
+}
+
+#if SPH_64
+
+/* see sph_blake.h */
+void
+sph_blake384_init(void *cc)
+{
+	blake64_init(cc, IV384, salt_zero_big);
+}
+
+/* see sph_blake.h */
+void
+sph_blake384(void *cc, const void *data, size_t len)
+{
+	blake64(cc, data, len);
+}
+
+/* see sph_blake.h */
+void
+sph_blake384_close(void *cc, void *dst)
+{
+	sph_blake384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_blake.h */
+void
+sph_blake384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	blake64_close(cc, ub, n, dst, 6);
+//	sph_blake384_init(cc);
+}
+
+/* see sph_blake.h */
+void
+sph_blake512_init(void *cc)
+{
+	blake64_init(cc, IV512, salt_zero_big);
+}
+
+/* see sph_blake.h */
+void
+sph_blake512(void *cc, const void *data, size_t len)
+{
+	blake64(cc, data, len);
+}
+
+/* see sph_blake.h */
+void
+sph_blake512_close(void *cc, void *dst)
+{
+	sph_blake512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_blake.h */
+void
+sph_blake512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	blake64_close(cc, ub, n, dst, 8);
+//	sph_blake512_init(cc);
+}
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_blake.h b/src/crypto/ghostrider/sph_blake.h
new file mode 100644
index 000000000..d8d794399
--- /dev/null
+++ b/src/crypto/ghostrider/sph_blake.h
@@ -0,0 +1,327 @@
+/* $Id: sph_blake.h 252 2011-06-07 17:55:14Z tp $ */
+/**
+ * BLAKE interface. BLAKE is a family of functions which differ by their
+ * output size; this implementation defines BLAKE for output sizes 224,
+ * 256, 384 and 512 bits. This implementation conforms to the "third
+ * round" specification.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_blake.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_BLAKE_H__
+#define SPH_BLAKE_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for BLAKE-224.
+ */
+#define SPH_SIZE_blake224   224
+
+/**
+ * Output size (in bits) for BLAKE-256.
+ */
+#define SPH_SIZE_blake256   256
+
+#if SPH_64
+
+/**
+ * Output size (in bits) for BLAKE-384.
+ */
+#define SPH_SIZE_blake384   384
+
+/**
+ * Output size (in bits) for BLAKE-512.
+ */
+#define SPH_SIZE_blake512   512
+
+#endif
+
+/**
+ * This structure is a context for BLAKE-224 and BLAKE-256 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a BLAKE computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running BLAKE
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 H[8];
+	sph_u32 S[4];
+	sph_u32 T0, T1;
+#endif
+} sph_blake_small_context;
+
+/**
+ * This structure is a context for BLAKE-224 computations. It is
+ * identical to the common <code>sph_blake_small_context</code>.
+ */
+typedef sph_blake_small_context sph_blake224_context;
+
+/**
+ * This structure is a context for BLAKE-256 computations. It is
+ * identical to the common <code>sph_blake_small_context</code>.
+ */
+typedef sph_blake_small_context sph_blake256_context;
+
+#if SPH_64
+
+/**
+ * This structure is a context for BLAKE-384 and BLAKE-512 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a BLAKE computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running BLAKE
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	size_t ptr;
+	sph_u64 H[8];
+	sph_u64 S[4];
+	sph_u64 T0, T1;
+#endif
+} sph_blake_big_context;
+
+/**
+ * This structure is a context for BLAKE-384 computations. It is
+ * identical to the common <code>sph_blake_small_context</code>.
+ */
+typedef sph_blake_big_context sph_blake384_context;
+
+/**
+ * This structure is a context for BLAKE-512 computations. It is
+ * identical to the common <code>sph_blake_small_context</code>.
+ */
+typedef sph_blake_big_context sph_blake512_context;
+
+#endif
+
+/**
+ * Initialize a BLAKE-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the BLAKE-224 context (pointer to a
+ *             <code>sph_blake224_context</code>)
+ */
+void sph_blake224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BLAKE-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_blake224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BLAKE-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BLAKE-224 context
+ * @param dst   the destination buffer
+ */
+void sph_blake224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BLAKE-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_blake224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a BLAKE-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the BLAKE-256 context (pointer to a
+ *             <code>sph_blake256_context</code>)
+ */
+void sph_blake256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BLAKE-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_blake256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BLAKE-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BLAKE-256 context
+ * @param dst   the destination buffer
+ */
+void sph_blake256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BLAKE-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_blake256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#if SPH_64
+
+/**
+ * Initialize a BLAKE-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the BLAKE-384 context (pointer to a
+ *             <code>sph_blake384_context</code>)
+ */
+void sph_blake384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BLAKE-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_blake384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BLAKE-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BLAKE-384 context
+ * @param dst   the destination buffer
+ */
+void sph_blake384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BLAKE-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_blake384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a BLAKE-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the BLAKE-512 context (pointer to a
+ *             <code>sph_blake512_context</code>)
+ */
+void sph_blake512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BLAKE-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_blake512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BLAKE-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BLAKE-512 context
+ * @param dst   the destination buffer
+ */
+void sph_blake512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BLAKE-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_blake512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_bmw.c b/src/crypto/ghostrider/sph_bmw.c
new file mode 100644
index 000000000..6c5a6df46
--- /dev/null
+++ b/src/crypto/ghostrider/sph_bmw.c
@@ -0,0 +1,986 @@
+/* $Id: bmw.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * BMW implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include "sph_bmw.h"
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_BMW
+#define SPH_SMALL_FOOTPRINT_BMW   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#if !defined(__AVX2__)
+
+static const sph_u32 IV224[] = {
+	SPH_C32(0x00010203), SPH_C32(0x04050607),
+	SPH_C32(0x08090A0B), SPH_C32(0x0C0D0E0F),
+	SPH_C32(0x10111213), SPH_C32(0x14151617),
+	SPH_C32(0x18191A1B), SPH_C32(0x1C1D1E1F),
+	SPH_C32(0x20212223), SPH_C32(0x24252627),
+	SPH_C32(0x28292A2B), SPH_C32(0x2C2D2E2F),
+	SPH_C32(0x30313233), SPH_C32(0x34353637),
+	SPH_C32(0x38393A3B), SPH_C32(0x3C3D3E3F)
+};
+
+static const sph_u32 IV256[] = {
+	SPH_C32(0x40414243), SPH_C32(0x44454647),
+	SPH_C32(0x48494A4B), SPH_C32(0x4C4D4E4F),
+	SPH_C32(0x50515253), SPH_C32(0x54555657),
+	SPH_C32(0x58595A5B), SPH_C32(0x5C5D5E5F),
+	SPH_C32(0x60616263), SPH_C32(0x64656667),
+	SPH_C32(0x68696A6B), SPH_C32(0x6C6D6E6F),
+	SPH_C32(0x70717273), SPH_C32(0x74757677),
+	SPH_C32(0x78797A7B), SPH_C32(0x7C7D7E7F)
+};
+
+#endif // !AVX2
+
+#if SPH_64
+
+static const sph_u64 IV384[] = {
+	SPH_C64(0x0001020304050607), SPH_C64(0x08090A0B0C0D0E0F),
+	SPH_C64(0x1011121314151617), SPH_C64(0x18191A1B1C1D1E1F),
+	SPH_C64(0x2021222324252627), SPH_C64(0x28292A2B2C2D2E2F),
+	SPH_C64(0x3031323334353637), SPH_C64(0x38393A3B3C3D3E3F),
+	SPH_C64(0x4041424344454647), SPH_C64(0x48494A4B4C4D4E4F),
+	SPH_C64(0x5051525354555657), SPH_C64(0x58595A5B5C5D5E5F),
+	SPH_C64(0x6061626364656667), SPH_C64(0x68696A6B6C6D6E6F),
+	SPH_C64(0x7071727374757677), SPH_C64(0x78797A7B7C7D7E7F)
+};
+
+static const sph_u64 IV512[] = {
+	SPH_C64(0x8081828384858687), SPH_C64(0x88898A8B8C8D8E8F),
+	SPH_C64(0x9091929394959697), SPH_C64(0x98999A9B9C9D9E9F),
+	SPH_C64(0xA0A1A2A3A4A5A6A7), SPH_C64(0xA8A9AAABACADAEAF),
+	SPH_C64(0xB0B1B2B3B4B5B6B7), SPH_C64(0xB8B9BABBBCBDBEBF),
+	SPH_C64(0xC0C1C2C3C4C5C6C7), SPH_C64(0xC8C9CACBCCCDCECF),
+	SPH_C64(0xD0D1D2D3D4D5D6D7), SPH_C64(0xD8D9DADBDCDDDEDF),
+	SPH_C64(0xE0E1E2E3E4E5E6E7), SPH_C64(0xE8E9EAEBECEDEEEF),
+	SPH_C64(0xF0F1F2F3F4F5F6F7), SPH_C64(0xF8F9FAFBFCFDFEFF)
+};
+
+#endif
+
+#define XCAT(x, y)    XCAT_(x, y)
+#define XCAT_(x, y)   x ## y
+
+#define LPAR   (
+
+#define I16_16    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15
+#define I16_17    1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16
+#define I16_18    2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17
+#define I16_19    3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18
+#define I16_20    4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+#define I16_21    5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
+#define I16_22    6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
+#define I16_23    7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
+#define I16_24    8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23
+#define I16_25    9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
+#define I16_26   10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
+#define I16_27   11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
+#define I16_28   12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
+#define I16_29   13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
+#define I16_30   14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
+#define I16_31   15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
+
+#define M16_16    0,  1,  3,  4,  7, 10, 11
+#define M16_17    1,  2,  4,  5,  8, 11, 12
+#define M16_18    2,  3,  5,  6,  9, 12, 13
+#define M16_19    3,  4,  6,  7, 10, 13, 14
+#define M16_20    4,  5,  7,  8, 11, 14, 15
+#define M16_21    5,  6,  8,  9, 12, 15, 16
+#define M16_22    6,  7,  9, 10, 13,  0,  1
+#define M16_23    7,  8, 10, 11, 14,  1,  2
+#define M16_24    8,  9, 11, 12, 15,  2,  3
+#define M16_25    9, 10, 12, 13,  0,  3,  4
+#define M16_26   10, 11, 13, 14,  1,  4,  5
+#define M16_27   11, 12, 14, 15,  2,  5,  6
+#define M16_28   12, 13, 15, 16,  3,  6,  7
+#define M16_29   13, 14,  0,  1,  4,  7,  8
+#define M16_30   14, 15,  1,  2,  5,  8,  9
+#define M16_31   15, 16,  2,  3,  6,  9, 10
+
+#if !defined(__AVX2__)
+
+#define ss0(x)    (((x) >> 1) ^ SPH_T32((x) << 3) \
+                  ^ SPH_ROTL32(x,  4) ^ SPH_ROTL32(x, 19))
+#define ss1(x)    (((x) >> 1) ^ SPH_T32((x) << 2) \
+                  ^ SPH_ROTL32(x,  8) ^ SPH_ROTL32(x, 23))
+#define ss2(x)    (((x) >> 2) ^ SPH_T32((x) << 1) \
+                  ^ SPH_ROTL32(x, 12) ^ SPH_ROTL32(x, 25))
+#define ss3(x)    (((x) >> 2) ^ SPH_T32((x) << 2) \
+                  ^ SPH_ROTL32(x, 15) ^ SPH_ROTL32(x, 29))
+#define ss4(x)    (((x) >> 1) ^ (x))
+#define ss5(x)    (((x) >> 2) ^ (x))
+#define rs1(x)    SPH_ROTL32(x,  3)
+#define rs2(x)    SPH_ROTL32(x,  7)
+#define rs3(x)    SPH_ROTL32(x, 13)
+#define rs4(x)    SPH_ROTL32(x, 16)
+#define rs5(x)    SPH_ROTL32(x, 19)
+#define rs6(x)    SPH_ROTL32(x, 23)
+#define rs7(x)    SPH_ROTL32(x, 27)
+
+#define Ks(j)   SPH_T32((sph_u32)(j) * SPH_C32(0x05555555))
+
+#define add_elt_s(mf, hf, j0m, j1m, j3m, j4m, j7m, j10m, j11m, j16) \
+	(SPH_T32(SPH_ROTL32(mf(j0m), j1m) + SPH_ROTL32(mf(j3m), j4m) \
+		- SPH_ROTL32(mf(j10m), j11m) + Ks(j16)) ^ hf(j7m))
+
+#define expand1s_inner(qf, mf, hf, i16, \
+		i0, i1, i2, i3, i4, i5, i6, i7, i8, \
+		i9, i10, i11, i12, i13, i14, i15, \
+		i0m, i1m, i3m, i4m, i7m, i10m, i11m) \
+	SPH_T32(ss1(qf(i0)) + ss2(qf(i1)) + ss3(qf(i2)) + ss0(qf(i3)) \
+		+ ss1(qf(i4)) + ss2(qf(i5)) + ss3(qf(i6)) + ss0(qf(i7)) \
+		+ ss1(qf(i8)) + ss2(qf(i9)) + ss3(qf(i10)) + ss0(qf(i11)) \
+		+ ss1(qf(i12)) + ss2(qf(i13)) + ss3(qf(i14)) + ss0(qf(i15)) \
+		+ add_elt_s(mf, hf, i0m, i1m, i3m, i4m, i7m, i10m, i11m, i16))
+
+#define expand1s(qf, mf, hf, i16) \
+	expand1s_(qf, mf, hf, i16, I16_ ## i16, M16_ ## i16)
+#define expand1s_(qf, mf, hf, i16, ix, iy) \
+	expand1s_inner LPAR qf, mf, hf, i16, ix, iy)
+
+#define expand2s_inner(qf, mf, hf, i16, \
+		i0, i1, i2, i3, i4, i5, i6, i7, i8, \
+		i9, i10, i11, i12, i13, i14, i15, \
+		i0m, i1m, i3m, i4m, i7m, i10m, i11m) \
+	SPH_T32(qf(i0) + rs1(qf(i1)) + qf(i2) + rs2(qf(i3)) \
+		+ qf(i4) + rs3(qf(i5)) + qf(i6) + rs4(qf(i7)) \
+		+ qf(i8) + rs5(qf(i9)) + qf(i10) + rs6(qf(i11)) \
+		+ qf(i12) + rs7(qf(i13)) + ss4(qf(i14)) + ss5(qf(i15)) \
+		+ add_elt_s(mf, hf, i0m, i1m, i3m, i4m, i7m, i10m, i11m, i16))
+
+#define expand2s(qf, mf, hf, i16) \
+	expand2s_(qf, mf, hf, i16, I16_ ## i16, M16_ ## i16)
+#define expand2s_(qf, mf, hf, i16, ix, iy) \
+	expand2s_inner LPAR qf, mf, hf, i16, ix, iy)
+
+#endif // !AVX2
+
+#if SPH_64
+
+#define sb0(x)    (((x) >> 1) ^ SPH_T64((x) << 3) \
+                  ^ SPH_ROTL64(x,  4) ^ SPH_ROTL64(x, 37))
+#define sb1(x)    (((x) >> 1) ^ SPH_T64((x) << 2) \
+                  ^ SPH_ROTL64(x, 13) ^ SPH_ROTL64(x, 43))
+#define sb2(x)    (((x) >> 2) ^ SPH_T64((x) << 1) \
+                  ^ SPH_ROTL64(x, 19) ^ SPH_ROTL64(x, 53))
+#define sb3(x)    (((x) >> 2) ^ SPH_T64((x) << 2) \
+                  ^ SPH_ROTL64(x, 28) ^ SPH_ROTL64(x, 59))
+#define sb4(x)    (((x) >> 1) ^ (x))
+#define sb5(x)    (((x) >> 2) ^ (x))
+#define rb1(x)    SPH_ROTL64(x,  5)
+#define rb2(x)    SPH_ROTL64(x, 11)
+#define rb3(x)    SPH_ROTL64(x, 27)
+#define rb4(x)    SPH_ROTL64(x, 32)
+#define rb5(x)    SPH_ROTL64(x, 37)
+#define rb6(x)    SPH_ROTL64(x, 43)
+#define rb7(x)    SPH_ROTL64(x, 53)
+
+#define Kb(j)   SPH_T64((sph_u64)(j) * SPH_C64(0x0555555555555555))
+
+#if SPH_SMALL_FOOTPRINT_BMW
+
+static const sph_u64 Kb_tab[] = {
+	Kb(16), Kb(17), Kb(18), Kb(19), Kb(20), Kb(21), Kb(22), Kb(23),
+	Kb(24), Kb(25), Kb(26), Kb(27), Kb(28), Kb(29), Kb(30), Kb(31)
+};
+
+#define rol_off(mf, j, off) \
+	SPH_ROTL64(mf(((j) + (off)) & 15), (((j) + (off)) & 15) + 1)
+
+#define add_elt_b(mf, hf, j) \
+	(SPH_T64(rol_off(mf, j, 0) + rol_off(mf, j, 3) \
+		- rol_off(mf, j, 10) + Kb_tab[j]) ^ hf(((j) + 7) & 15))
+
+#define expand1b(qf, mf, hf, i) \
+	SPH_T64(sb1(qf((i) - 16)) + sb2(qf((i) - 15)) \
+		+ sb3(qf((i) - 14)) + sb0(qf((i) - 13)) \
+		+ sb1(qf((i) - 12)) + sb2(qf((i) - 11)) \
+		+ sb3(qf((i) - 10)) + sb0(qf((i) - 9)) \
+		+ sb1(qf((i) - 8)) + sb2(qf((i) - 7)) \
+		+ sb3(qf((i) - 6)) + sb0(qf((i) - 5)) \
+		+ sb1(qf((i) - 4)) + sb2(qf((i) - 3)) \
+		+ sb3(qf((i) - 2)) + sb0(qf((i) - 1)) \
+		+ add_elt_b(mf, hf, (i) - 16))
+
+#define expand2b(qf, mf, hf, i) \
+	SPH_T64(qf((i) - 16) + rb1(qf((i) - 15)) \
+		+ qf((i) - 14) + rb2(qf((i) - 13)) \
+		+ qf((i) - 12) + rb3(qf((i) - 11)) \
+		+ qf((i) - 10) + rb4(qf((i) - 9)) \
+		+ qf((i) - 8) + rb5(qf((i) - 7)) \
+		+ qf((i) - 6) + rb6(qf((i) - 5)) \
+		+ qf((i) - 4) + rb7(qf((i) - 3)) \
+		+ sb4(qf((i) - 2)) + sb5(qf((i) - 1)) \
+		+ add_elt_b(mf, hf, (i) - 16))
+
+#else
+
+#define add_elt_b(mf, hf, j0m, j1m, j3m, j4m, j7m, j10m, j11m, j16) \
+	(SPH_T64(SPH_ROTL64(mf(j0m), j1m) + SPH_ROTL64(mf(j3m), j4m) \
+		- SPH_ROTL64(mf(j10m), j11m) + Kb(j16)) ^ hf(j7m))
+
+#define expand1b_inner(qf, mf, hf, i16, \
+		i0, i1, i2, i3, i4, i5, i6, i7, i8, \
+		i9, i10, i11, i12, i13, i14, i15, \
+		i0m, i1m, i3m, i4m, i7m, i10m, i11m) \
+	SPH_T64(sb1(qf(i0)) + sb2(qf(i1)) + sb3(qf(i2)) + sb0(qf(i3)) \
+		+ sb1(qf(i4)) + sb2(qf(i5)) + sb3(qf(i6)) + sb0(qf(i7)) \
+		+ sb1(qf(i8)) + sb2(qf(i9)) + sb3(qf(i10)) + sb0(qf(i11)) \
+		+ sb1(qf(i12)) + sb2(qf(i13)) + sb3(qf(i14)) + sb0(qf(i15)) \
+		+ add_elt_b(mf, hf, i0m, i1m, i3m, i4m, i7m, i10m, i11m, i16))
+
+#define expand1b(qf, mf, hf, i16) \
+	expand1b_(qf, mf, hf, i16, I16_ ## i16, M16_ ## i16)
+#define expand1b_(qf, mf, hf, i16, ix, iy) \
+	expand1b_inner LPAR qf, mf, hf, i16, ix, iy)
+
+#define expand2b_inner(qf, mf, hf, i16, \
+		i0, i1, i2, i3, i4, i5, i6, i7, i8, \
+		i9, i10, i11, i12, i13, i14, i15, \
+		i0m, i1m, i3m, i4m, i7m, i10m, i11m) \
+	SPH_T64(qf(i0) + rb1(qf(i1)) + qf(i2) + rb2(qf(i3)) \
+		+ qf(i4) + rb3(qf(i5)) + qf(i6) + rb4(qf(i7)) \
+		+ qf(i8) + rb5(qf(i9)) + qf(i10) + rb6(qf(i11)) \
+		+ qf(i12) + rb7(qf(i13)) + sb4(qf(i14)) + sb5(qf(i15)) \
+		+ add_elt_b(mf, hf, i0m, i1m, i3m, i4m, i7m, i10m, i11m, i16))
+
+#define expand2b(qf, mf, hf, i16) \
+	expand2b_(qf, mf, hf, i16, I16_ ## i16, M16_ ## i16)
+#define expand2b_(qf, mf, hf, i16, ix, iy) \
+	expand2b_inner LPAR qf, mf, hf, i16, ix, iy)
+
+#endif
+
+#endif
+
+#define MAKE_W(tt, i0, op01, i1, op12, i2, op23, i3, op34, i4) \
+	tt((M(i0) ^ H(i0)) op01 (M(i1) ^ H(i1)) op12 (M(i2) ^ H(i2)) \
+	op23 (M(i3) ^ H(i3)) op34 (M(i4) ^ H(i4)))
+
+#if !defined(__AVX2__)
+
+#define Ws0    MAKE_W(SPH_T32,  5, -,  7, +, 10, +, 13, +, 14)
+#define Ws1    MAKE_W(SPH_T32,  6, -,  8, +, 11, +, 14, -, 15)
+#define Ws2    MAKE_W(SPH_T32,  0, +,  7, +,  9, -, 12, +, 15)
+#define Ws3    MAKE_W(SPH_T32,  0, -,  1, +,  8, -, 10, +, 13)
+#define Ws4    MAKE_W(SPH_T32,  1, +,  2, +,  9, -, 11, -, 14)
+#define Ws5    MAKE_W(SPH_T32,  3, -,  2, +, 10, -, 12, +, 15)
+#define Ws6    MAKE_W(SPH_T32,  4, -,  0, -,  3, -, 11, +, 13)
+#define Ws7    MAKE_W(SPH_T32,  1, -,  4, -,  5, -, 12, -, 14)
+#define Ws8    MAKE_W(SPH_T32,  2, -,  5, -,  6, +, 13, -, 15)
+#define Ws9    MAKE_W(SPH_T32,  0, -,  3, +,  6, -,  7, +, 14)
+#define Ws10   MAKE_W(SPH_T32,  8, -,  1, -,  4, -,  7, +, 15)
+#define Ws11   MAKE_W(SPH_T32,  8, -,  0, -,  2, -,  5, +,  9)
+#define Ws12   MAKE_W(SPH_T32,  1, +,  3, -,  6, -,  9, +, 10)
+#define Ws13   MAKE_W(SPH_T32,  2, +,  4, +,  7, +, 10, +, 11)
+#define Ws14   MAKE_W(SPH_T32,  3, -,  5, +,  8, -, 11, -, 12)
+#define Ws15   MAKE_W(SPH_T32, 12, -,  4, -,  6, -,  9, +, 13)
+
+#if SPH_SMALL_FOOTPRINT_BMW
+
+#define MAKE_Qas   do { \
+		unsigned u; \
+		sph_u32 Ws[16]; \
+		Ws[ 0] = Ws0; \
+		Ws[ 1] = Ws1; \
+		Ws[ 2] = Ws2; \
+		Ws[ 3] = Ws3; \
+		Ws[ 4] = Ws4; \
+		Ws[ 5] = Ws5; \
+		Ws[ 6] = Ws6; \
+		Ws[ 7] = Ws7; \
+		Ws[ 8] = Ws8; \
+		Ws[ 9] = Ws9; \
+		Ws[10] = Ws10; \
+		Ws[11] = Ws11; \
+		Ws[12] = Ws12; \
+		Ws[13] = Ws13; \
+		Ws[14] = Ws14; \
+		Ws[15] = Ws15; \
+		for (u = 0; u < 15; u += 5) { \
+			qt[u + 0] = SPH_T32(ss0(Ws[u + 0]) + H(u + 1)); \
+			qt[u + 1] = SPH_T32(ss1(Ws[u + 1]) + H(u + 2)); \
+			qt[u + 2] = SPH_T32(ss2(Ws[u + 2]) + H(u + 3)); \
+			qt[u + 3] = SPH_T32(ss3(Ws[u + 3]) + H(u + 4)); \
+			qt[u + 4] = SPH_T32(ss4(Ws[u + 4]) + H(u + 5)); \
+		} \
+		qt[15] = SPH_T32(ss0(Ws[15]) + H(0)); \
+	} while (0)
+
+#define MAKE_Qbs   do { \
+		qt[16] = expand1s(Qs, M, H, 16); \
+		qt[17] = expand1s(Qs, M, H, 17); \
+		qt[18] = expand2s(Qs, M, H, 18); \
+		qt[19] = expand2s(Qs, M, H, 19); \
+		qt[20] = expand2s(Qs, M, H, 20); \
+		qt[21] = expand2s(Qs, M, H, 21); \
+		qt[22] = expand2s(Qs, M, H, 22); \
+		qt[23] = expand2s(Qs, M, H, 23); \
+		qt[24] = expand2s(Qs, M, H, 24); \
+		qt[25] = expand2s(Qs, M, H, 25); \
+		qt[26] = expand2s(Qs, M, H, 26); \
+		qt[27] = expand2s(Qs, M, H, 27); \
+		qt[28] = expand2s(Qs, M, H, 28); \
+		qt[29] = expand2s(Qs, M, H, 29); \
+		qt[30] = expand2s(Qs, M, H, 30); \
+		qt[31] = expand2s(Qs, M, H, 31); \
+	} while (0)
+
+#else
+
+#define MAKE_Qas   do { \
+		qt[ 0] = SPH_T32(ss0(Ws0 ) + H( 1)); \
+		qt[ 1] = SPH_T32(ss1(Ws1 ) + H( 2)); \
+		qt[ 2] = SPH_T32(ss2(Ws2 ) + H( 3)); \
+		qt[ 3] = SPH_T32(ss3(Ws3 ) + H( 4)); \
+		qt[ 4] = SPH_T32(ss4(Ws4 ) + H( 5)); \
+		qt[ 5] = SPH_T32(ss0(Ws5 ) + H( 6)); \
+		qt[ 6] = SPH_T32(ss1(Ws6 ) + H( 7)); \
+		qt[ 7] = SPH_T32(ss2(Ws7 ) + H( 8)); \
+		qt[ 8] = SPH_T32(ss3(Ws8 ) + H( 9)); \
+		qt[ 9] = SPH_T32(ss4(Ws9 ) + H(10)); \
+		qt[10] = SPH_T32(ss0(Ws10) + H(11)); \
+		qt[11] = SPH_T32(ss1(Ws11) + H(12)); \
+		qt[12] = SPH_T32(ss2(Ws12) + H(13)); \
+		qt[13] = SPH_T32(ss3(Ws13) + H(14)); \
+		qt[14] = SPH_T32(ss4(Ws14) + H(15)); \
+		qt[15] = SPH_T32(ss0(Ws15) + H( 0)); \
+	} while (0)
+
+#define MAKE_Qbs   do { \
+		qt[16] = expand1s(Qs, M, H, 16); \
+		qt[17] = expand1s(Qs, M, H, 17); \
+		qt[18] = expand2s(Qs, M, H, 18); \
+		qt[19] = expand2s(Qs, M, H, 19); \
+		qt[20] = expand2s(Qs, M, H, 20); \
+		qt[21] = expand2s(Qs, M, H, 21); \
+		qt[22] = expand2s(Qs, M, H, 22); \
+		qt[23] = expand2s(Qs, M, H, 23); \
+		qt[24] = expand2s(Qs, M, H, 24); \
+		qt[25] = expand2s(Qs, M, H, 25); \
+		qt[26] = expand2s(Qs, M, H, 26); \
+		qt[27] = expand2s(Qs, M, H, 27); \
+		qt[28] = expand2s(Qs, M, H, 28); \
+		qt[29] = expand2s(Qs, M, H, 29); \
+		qt[30] = expand2s(Qs, M, H, 30); \
+		qt[31] = expand2s(Qs, M, H, 31); \
+	} while (0)
+
+#endif
+
+#define MAKE_Qs   do { \
+		MAKE_Qas; \
+		MAKE_Qbs; \
+	} while (0)
+
+#define Qs(j)   (qt[j])
+
+#endif  // !AVX2
+
+#if SPH_64
+
+#define Wb0    MAKE_W(SPH_T64,  5, -,  7, +, 10, +, 13, +, 14)
+#define Wb1    MAKE_W(SPH_T64,  6, -,  8, +, 11, +, 14, -, 15)
+#define Wb2    MAKE_W(SPH_T64,  0, +,  7, +,  9, -, 12, +, 15)
+#define Wb3    MAKE_W(SPH_T64,  0, -,  1, +,  8, -, 10, +, 13)
+#define Wb4    MAKE_W(SPH_T64,  1, +,  2, +,  9, -, 11, -, 14)
+#define Wb5    MAKE_W(SPH_T64,  3, -,  2, +, 10, -, 12, +, 15)
+#define Wb6    MAKE_W(SPH_T64,  4, -,  0, -,  3, -, 11, +, 13)
+#define Wb7    MAKE_W(SPH_T64,  1, -,  4, -,  5, -, 12, -, 14)
+#define Wb8    MAKE_W(SPH_T64,  2, -,  5, -,  6, +, 13, -, 15)
+#define Wb9    MAKE_W(SPH_T64,  0, -,  3, +,  6, -,  7, +, 14)
+#define Wb10   MAKE_W(SPH_T64,  8, -,  1, -,  4, -,  7, +, 15)
+#define Wb11   MAKE_W(SPH_T64,  8, -,  0, -,  2, -,  5, +,  9)
+#define Wb12   MAKE_W(SPH_T64,  1, +,  3, -,  6, -,  9, +, 10)
+#define Wb13   MAKE_W(SPH_T64,  2, +,  4, +,  7, +, 10, +, 11)
+#define Wb14   MAKE_W(SPH_T64,  3, -,  5, +,  8, -, 11, -, 12)
+#define Wb15   MAKE_W(SPH_T64, 12, -,  4, -,  6, -,  9, +, 13)
+
+#if SPH_SMALL_FOOTPRINT_BMW
+
+#define MAKE_Qab   do { \
+		unsigned u; \
+		sph_u64 Wb[16]; \
+		Wb[ 0] = Wb0; \
+		Wb[ 1] = Wb1; \
+		Wb[ 2] = Wb2; \
+		Wb[ 3] = Wb3; \
+		Wb[ 4] = Wb4; \
+		Wb[ 5] = Wb5; \
+		Wb[ 6] = Wb6; \
+		Wb[ 7] = Wb7; \
+		Wb[ 8] = Wb8; \
+		Wb[ 9] = Wb9; \
+		Wb[10] = Wb10; \
+		Wb[11] = Wb11; \
+		Wb[12] = Wb12; \
+		Wb[13] = Wb13; \
+		Wb[14] = Wb14; \
+		Wb[15] = Wb15; \
+		for (u = 0; u < 15; u += 5) { \
+			qt[u + 0] = SPH_T64(sb0(Wb[u + 0]) + H(u + 1)); \
+			qt[u + 1] = SPH_T64(sb1(Wb[u + 1]) + H(u + 2)); \
+			qt[u + 2] = SPH_T64(sb2(Wb[u + 2]) + H(u + 3)); \
+			qt[u + 3] = SPH_T64(sb3(Wb[u + 3]) + H(u + 4)); \
+			qt[u + 4] = SPH_T64(sb4(Wb[u + 4]) + H(u + 5)); \
+		} \
+		qt[15] = SPH_T64(sb0(Wb[15]) + H(0)); \
+	} while (0)
+
+#define MAKE_Qbb   do { \
+		unsigned u; \
+		for (u = 16; u < 18; u ++) \
+			qt[u] = expand1b(Qb, M, H, u); \
+		for (u = 18; u < 32; u ++) \
+			qt[u] = expand2b(Qb, M, H, u); \
+	} while (0)
+
+#else
+
+#define MAKE_Qab   do { \
+		qt[ 0] = SPH_T64(sb0(Wb0 ) + H( 1)); \
+		qt[ 1] = SPH_T64(sb1(Wb1 ) + H( 2)); \
+		qt[ 2] = SPH_T64(sb2(Wb2 ) + H( 3)); \
+		qt[ 3] = SPH_T64(sb3(Wb3 ) + H( 4)); \
+		qt[ 4] = SPH_T64(sb4(Wb4 ) + H( 5)); \
+		qt[ 5] = SPH_T64(sb0(Wb5 ) + H( 6)); \
+		qt[ 6] = SPH_T64(sb1(Wb6 ) + H( 7)); \
+		qt[ 7] = SPH_T64(sb2(Wb7 ) + H( 8)); \
+		qt[ 8] = SPH_T64(sb3(Wb8 ) + H( 9)); \
+		qt[ 9] = SPH_T64(sb4(Wb9 ) + H(10)); \
+		qt[10] = SPH_T64(sb0(Wb10) + H(11)); \
+		qt[11] = SPH_T64(sb1(Wb11) + H(12)); \
+		qt[12] = SPH_T64(sb2(Wb12) + H(13)); \
+		qt[13] = SPH_T64(sb3(Wb13) + H(14)); \
+		qt[14] = SPH_T64(sb4(Wb14) + H(15)); \
+		qt[15] = SPH_T64(sb0(Wb15) + H( 0)); \
+	} while (0)
+
+#define MAKE_Qbb   do { \
+		qt[16] = expand1b(Qb, M, H, 16); \
+		qt[17] = expand1b(Qb, M, H, 17); \
+		qt[18] = expand2b(Qb, M, H, 18); \
+		qt[19] = expand2b(Qb, M, H, 19); \
+		qt[20] = expand2b(Qb, M, H, 20); \
+		qt[21] = expand2b(Qb, M, H, 21); \
+		qt[22] = expand2b(Qb, M, H, 22); \
+		qt[23] = expand2b(Qb, M, H, 23); \
+		qt[24] = expand2b(Qb, M, H, 24); \
+		qt[25] = expand2b(Qb, M, H, 25); \
+		qt[26] = expand2b(Qb, M, H, 26); \
+		qt[27] = expand2b(Qb, M, H, 27); \
+		qt[28] = expand2b(Qb, M, H, 28); \
+		qt[29] = expand2b(Qb, M, H, 29); \
+		qt[30] = expand2b(Qb, M, H, 30); \
+		qt[31] = expand2b(Qb, M, H, 31); \
+	} while (0)
+
+#endif
+
+#define MAKE_Qb   do { \
+		MAKE_Qab; \
+		MAKE_Qbb; \
+	} while (0)
+
+#define Qb(j)   (qt[j])
+
+#endif
+
+#define FOLD(type, mkQ, tt, rol, mf, qf, dhf)   do { \
+		type qt[32], xl, xh; \
+		mkQ; \
+		xl = qf(16) ^ qf(17) ^ qf(18) ^ qf(19) \
+			^ qf(20) ^ qf(21) ^ qf(22) ^ qf(23); \
+		xh = xl ^ qf(24) ^ qf(25) ^ qf(26) ^ qf(27) \
+			^ qf(28) ^ qf(29) ^ qf(30) ^ qf(31); \
+		dhf( 0) = tt(((xh <<  5) ^ (qf(16) >>  5) ^ mf( 0)) \
+			+ (xl ^ qf(24) ^ qf( 0))); \
+		dhf( 1) = tt(((xh >>  7) ^ (qf(17) <<  8) ^ mf( 1)) \
+			+ (xl ^ qf(25) ^ qf( 1))); \
+		dhf( 2) = tt(((xh >>  5) ^ (qf(18) <<  5) ^ mf( 2)) \
+			+ (xl ^ qf(26) ^ qf( 2))); \
+		dhf( 3) = tt(((xh >>  1) ^ (qf(19) <<  5) ^ mf( 3)) \
+			+ (xl ^ qf(27) ^ qf( 3))); \
+		dhf( 4) = tt(((xh >>  3) ^ (qf(20) <<  0) ^ mf( 4)) \
+			+ (xl ^ qf(28) ^ qf( 4))); \
+		dhf( 5) = tt(((xh <<  6) ^ (qf(21) >>  6) ^ mf( 5)) \
+			+ (xl ^ qf(29) ^ qf( 5))); \
+		dhf( 6) = tt(((xh >>  4) ^ (qf(22) <<  6) ^ mf( 6)) \
+			+ (xl ^ qf(30) ^ qf( 6))); \
+		dhf( 7) = tt(((xh >> 11) ^ (qf(23) <<  2) ^ mf( 7)) \
+			+ (xl ^ qf(31) ^ qf( 7))); \
+		dhf( 8) = tt(rol(dhf(4),  9) + (xh ^ qf(24) ^ mf( 8)) \
+			+ ((xl << 8) ^ qf(23) ^ qf( 8))); \
+		dhf( 9) = tt(rol(dhf(5), 10) + (xh ^ qf(25) ^ mf( 9)) \
+			+ ((xl >> 6) ^ qf(16) ^ qf( 9))); \
+		dhf(10) = tt(rol(dhf(6), 11) + (xh ^ qf(26) ^ mf(10)) \
+			+ ((xl << 6) ^ qf(17) ^ qf(10))); \
+		dhf(11) = tt(rol(dhf(7), 12) + (xh ^ qf(27) ^ mf(11)) \
+			+ ((xl << 4) ^ qf(18) ^ qf(11))); \
+		dhf(12) = tt(rol(dhf(0), 13) + (xh ^ qf(28) ^ mf(12)) \
+			+ ((xl >> 3) ^ qf(19) ^ qf(12))); \
+		dhf(13) = tt(rol(dhf(1), 14) + (xh ^ qf(29) ^ mf(13)) \
+			+ ((xl >> 4) ^ qf(20) ^ qf(13))); \
+		dhf(14) = tt(rol(dhf(2), 15) + (xh ^ qf(30) ^ mf(14)) \
+			+ ((xl >> 7) ^ qf(21) ^ qf(14))); \
+		dhf(15) = tt(rol(dhf(3), 16) + (xh ^ qf(31) ^ mf(15)) \
+			+ ((xl >> 2) ^ qf(22) ^ qf(15))); \
+	} while (0)
+
+
+#if SPH_64
+
+#define FOLDb   FOLD(sph_u64, MAKE_Qb, SPH_T64, SPH_ROTL64, M, Qb, dH)
+
+#endif
+
+#if !defined(__AVX2__)
+
+#define FOLDs   FOLD(sph_u32, MAKE_Qs, SPH_T32, SPH_ROTL32, M, Qs, dH)
+
+static void
+compress_small(const unsigned char *data, const sph_u32 h[16], sph_u32 dh[16])
+{
+#if SPH_LITTLE_FAST
+#define M(x)    sph_dec32le_aligned(data + 4 * (x))
+#else
+	sph_u32 mv[16];
+
+	mv[ 0] = sph_dec32le_aligned(data +  0);
+	mv[ 1] = sph_dec32le_aligned(data +  4);
+	mv[ 2] = sph_dec32le_aligned(data +  8);
+	mv[ 3] = sph_dec32le_aligned(data + 12);
+	mv[ 4] = sph_dec32le_aligned(data + 16);
+	mv[ 5] = sph_dec32le_aligned(data + 20);
+	mv[ 6] = sph_dec32le_aligned(data + 24);
+	mv[ 7] = sph_dec32le_aligned(data + 28);
+	mv[ 8] = sph_dec32le_aligned(data + 32);
+	mv[ 9] = sph_dec32le_aligned(data + 36);
+	mv[10] = sph_dec32le_aligned(data + 40);
+	mv[11] = sph_dec32le_aligned(data + 44);
+	mv[12] = sph_dec32le_aligned(data + 48);
+	mv[13] = sph_dec32le_aligned(data + 52);
+	mv[14] = sph_dec32le_aligned(data + 56);
+	mv[15] = sph_dec32le_aligned(data + 60);
+#define M(x)    (mv[x])
+#endif
+#define H(x)    (h[x])
+#define dH(x)   (dh[x])
+
+	FOLDs;
+
+#undef M
+#undef H
+#undef dH
+}
+
+static const sph_u32 final_s[16] = {
+	SPH_C32(0xaaaaaaa0), SPH_C32(0xaaaaaaa1), SPH_C32(0xaaaaaaa2),
+	SPH_C32(0xaaaaaaa3), SPH_C32(0xaaaaaaa4), SPH_C32(0xaaaaaaa5),
+	SPH_C32(0xaaaaaaa6), SPH_C32(0xaaaaaaa7), SPH_C32(0xaaaaaaa8),
+	SPH_C32(0xaaaaaaa9), SPH_C32(0xaaaaaaaa), SPH_C32(0xaaaaaaab),
+	SPH_C32(0xaaaaaaac), SPH_C32(0xaaaaaaad), SPH_C32(0xaaaaaaae),
+	SPH_C32(0xaaaaaaaf)
+};
+
+static void
+bmw32_init(sph_bmw_small_context *sc, const sph_u32 *iv)
+{
+	memcpy(sc->H, iv, sizeof sc->H);
+	sc->ptr = 0;
+#if SPH_64
+	sc->bit_count = 0;
+#else
+	sc->bit_count_high = 0;
+	sc->bit_count_low = 0;
+#endif
+}
+
+static void
+bmw32(sph_bmw_small_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	sph_u32 htmp[16];
+	sph_u32 *h1, *h2;
+#if !SPH_64
+	sph_u32 tmp;
+#endif
+
+#if SPH_64
+	sc->bit_count += (sph_u64)len << 3;
+#else
+	tmp = sc->bit_count_low;
+	sc->bit_count_low = SPH_T32(tmp + ((sph_u32)len << 3));
+	if (sc->bit_count_low < tmp)
+		sc->bit_count_high ++;
+	sc->bit_count_high += len >> 29;
+#endif
+	buf = sc->buf;
+	ptr = sc->ptr;
+	h1 = sc->H;
+	h2 = htmp;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		ptr += clen;
+		if (ptr == sizeof sc->buf) {
+			sph_u32 *ht;
+
+			compress_small(buf, h1, h2);
+			ht = h1;
+			h1 = h2;
+			h2 = ht;
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+	if (h1 != sc->H)
+		memcpy(sc->H, h1, sizeof sc->H);
+}
+
+static void
+bmw32_close(sph_bmw_small_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_size_w32)
+{
+	unsigned char *buf, *out;
+	size_t ptr, u, v;
+	unsigned z;
+	sph_u32 h1[16], h2[16], *h;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	h = sc->H;
+	if (ptr > (sizeof sc->buf) - 8) {
+		memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+		compress_small(buf, h, h1);
+		ptr = 0;
+		h = h1;
+	}
+	memset(buf + ptr, 0, (sizeof sc->buf) - 8 - ptr);
+#if SPH_64
+	sph_enc64le_aligned(buf + (sizeof sc->buf) - 8,
+		SPH_T64(sc->bit_count + n));
+#else
+	sph_enc32le_aligned(buf + (sizeof sc->buf) - 8,
+		sc->bit_count_low + n);
+	sph_enc32le_aligned(buf + (sizeof sc->buf) - 4,
+		SPH_T32(sc->bit_count_high));
+#endif
+	compress_small(buf, h, h2);
+	for (u = 0; u < 16; u ++)
+		sph_enc32le_aligned(buf + 4 * u, h2[u]);
+	compress_small(buf, final_s, h1);
+	out = dst;
+	for (u = 0, v = 16 - out_size_w32; u < out_size_w32; u ++, v ++)
+		sph_enc32le(out + 4 * u, h1[v]);
+}
+
+#endif // !AVX2
+
+#if SPH_64
+
+static void
+compress_big(const unsigned char *data, const sph_u64 h[16], sph_u64 dh[16])
+{
+#if SPH_LITTLE_FAST
+#define M(x)    sph_dec64le_aligned(data + 8 * (x))
+#else
+	sph_u64 mv[16];
+
+	mv[ 0] = sph_dec64le_aligned(data +   0);
+	mv[ 1] = sph_dec64le_aligned(data +   8);
+	mv[ 2] = sph_dec64le_aligned(data +  16);
+	mv[ 3] = sph_dec64le_aligned(data +  24);
+	mv[ 4] = sph_dec64le_aligned(data +  32);
+	mv[ 5] = sph_dec64le_aligned(data +  40);
+	mv[ 6] = sph_dec64le_aligned(data +  48);
+	mv[ 7] = sph_dec64le_aligned(data +  56);
+	mv[ 8] = sph_dec64le_aligned(data +  64);
+	mv[ 9] = sph_dec64le_aligned(data +  72);
+	mv[10] = sph_dec64le_aligned(data +  80);
+	mv[11] = sph_dec64le_aligned(data +  88);
+	mv[12] = sph_dec64le_aligned(data +  96);
+	mv[13] = sph_dec64le_aligned(data + 104);
+	mv[14] = sph_dec64le_aligned(data + 112);
+	mv[15] = sph_dec64le_aligned(data + 120);
+#define M(x)    (mv[x])
+#endif
+#define H(x)    (h[x])
+#define dH(x)   (dh[x])
+
+	FOLDb;
+
+#undef M
+#undef H
+#undef dH
+}
+
+static const sph_u64 final_b[16] = {
+	SPH_C64(0xaaaaaaaaaaaaaaa0), SPH_C64(0xaaaaaaaaaaaaaaa1),
+	SPH_C64(0xaaaaaaaaaaaaaaa2), SPH_C64(0xaaaaaaaaaaaaaaa3),
+	SPH_C64(0xaaaaaaaaaaaaaaa4), SPH_C64(0xaaaaaaaaaaaaaaa5),
+	SPH_C64(0xaaaaaaaaaaaaaaa6), SPH_C64(0xaaaaaaaaaaaaaaa7),
+	SPH_C64(0xaaaaaaaaaaaaaaa8), SPH_C64(0xaaaaaaaaaaaaaaa9),
+	SPH_C64(0xaaaaaaaaaaaaaaaa), SPH_C64(0xaaaaaaaaaaaaaaab),
+	SPH_C64(0xaaaaaaaaaaaaaaac), SPH_C64(0xaaaaaaaaaaaaaaad),
+	SPH_C64(0xaaaaaaaaaaaaaaae), SPH_C64(0xaaaaaaaaaaaaaaaf)
+};
+
+static void
+bmw64_init(sph_bmw_big_context *sc, const sph_u64 *iv)
+{
+	memcpy(sc->H, iv, sizeof sc->H);
+	sc->ptr = 0;
+	sc->bit_count = 0;
+}
+
+static void
+bmw64(sph_bmw_big_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	sph_u64 htmp[16];
+	sph_u64 *h1, *h2;
+
+	sc->bit_count += (sph_u64)len << 3;
+	buf = sc->buf;
+	ptr = sc->ptr;
+	h1 = sc->H;
+	h2 = htmp;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		ptr += clen;
+		if (ptr == sizeof sc->buf) {
+			sph_u64 *ht;
+
+			compress_big(buf, h1, h2);
+			ht = h1;
+			h1 = h2;
+			h2 = ht;
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+	if (h1 != sc->H)
+		memcpy(sc->H, h1, sizeof sc->H);
+}
+
+static void
+bmw64_close(sph_bmw_big_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_size_w64)
+{
+	unsigned char *buf, *out;
+	size_t ptr, u, v;
+	unsigned z;
+	sph_u64 h1[16], h2[16], *h;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	h = sc->H;
+	if (ptr > (sizeof sc->buf) - 8) {
+		memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+		compress_big(buf, h, h1);
+		ptr = 0;
+		h = h1;
+	}
+	memset(buf + ptr, 0, (sizeof sc->buf) - 8 - ptr);
+	sph_enc64le_aligned(buf + (sizeof sc->buf) - 8,
+		SPH_T64(sc->bit_count + n));
+	compress_big(buf, h, h2);
+	for (u = 0; u < 16; u ++)
+		sph_enc64le_aligned(buf + 8 * u, h2[u]);
+	compress_big(buf, final_b, h1);
+	out = dst;
+	for (u = 0, v = 16 - out_size_w64; u < out_size_w64; u ++, v ++)
+		sph_enc64le(out + 8 * u, h1[v]);
+}
+
+#endif
+
+#if !defined(__AVX2__)
+
+/* see sph_bmw.h */
+void
+sph_bmw224_init(void *cc)
+{
+	bmw32_init(cc, IV224);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw224(void *cc, const void *data, size_t len)
+{
+	bmw32(cc, data, len);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw224_close(void *cc, void *dst)
+{
+	sph_bmw224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	bmw32_close(cc, ub, n, dst, 7);
+//	sph_bmw224_init(cc);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw256_init(void *cc)
+{
+	bmw32_init(cc, IV256);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw256(void *cc, const void *data, size_t len)
+{
+	bmw32(cc, data, len);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw256_close(void *cc, void *dst)
+{
+	sph_bmw256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	bmw32_close(cc, ub, n, dst, 8);
+//	sph_bmw256_init(cc);
+}
+
+#endif // !AVX2
+
+#if SPH_64
+
+/* see sph_bmw.h */
+void
+sph_bmw384_init(void *cc)
+{
+	bmw64_init(cc, IV384);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw384(void *cc, const void *data, size_t len)
+{
+	bmw64(cc, data, len);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw384_close(void *cc, void *dst)
+{
+	sph_bmw384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	bmw64_close(cc, ub, n, dst, 6);
+//	sph_bmw384_init(cc);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw512_init(void *cc)
+{
+	bmw64_init(cc, IV512);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw512(void *cc, const void *data, size_t len)
+{
+	bmw64(cc, data, len);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw512_close(void *cc, void *dst)
+{
+	sph_bmw512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_bmw.h */
+void
+sph_bmw512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	bmw64_close(cc, ub, n, dst, 8);
+//	sph_bmw512_init(cc);
+}
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_bmw.h b/src/crypto/ghostrider/sph_bmw.h
new file mode 100644
index 000000000..d576e10b8
--- /dev/null
+++ b/src/crypto/ghostrider/sph_bmw.h
@@ -0,0 +1,337 @@
+/* $Id: sph_bmw.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * BMW interface. BMW (aka "Blue Midnight Wish") is a family of
+ * functions which differ by their output size; this implementation
+ * defines BMW for output sizes 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_bmw.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_BMW_H__
+#define SPH_BMW_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for BMW-224.
+ */
+#define SPH_SIZE_bmw224   224
+
+/**
+ * Output size (in bits) for BMW-256.
+ */
+#define SPH_SIZE_bmw256   256
+
+#if SPH_64
+
+/**
+ * Output size (in bits) for BMW-384.
+ */
+#define SPH_SIZE_bmw384   384
+
+/**
+ * Output size (in bits) for BMW-512.
+ */
+#define SPH_SIZE_bmw512   512
+
+#endif
+
+/**
+ * This structure is a context for BMW-224 and BMW-256 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a BMW computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running BMW
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+
+#if !defined(__AVX2__)
+
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 H[16];
+#if SPH_64
+	sph_u64 bit_count;
+#else
+	sph_u32 bit_count_high, bit_count_low;
+#endif
+#endif
+} sph_bmw_small_context;
+
+/**
+ * This structure is a context for BMW-224 computations. It is
+ * identical to the common <code>sph_bmw_small_context</code>.
+ */
+typedef sph_bmw_small_context sph_bmw224_context;
+
+/**
+ * This structure is a context for BMW-256 computations. It is
+ * identical to the common <code>sph_bmw_small_context</code>.
+ */
+typedef sph_bmw_small_context sph_bmw256_context;
+
+#endif // !AVX2
+
+#if SPH_64
+
+/**
+ * This structure is a context for BMW-384 and BMW-512 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a BMW computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running BMW
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	size_t ptr;
+	sph_u64 H[16];
+	sph_u64 bit_count;
+#endif
+} sph_bmw_big_context;
+
+/**
+ * This structure is a context for BMW-384 computations. It is
+ * identical to the common <code>sph_bmw_small_context</code>.
+ */
+typedef sph_bmw_big_context sph_bmw384_context;
+
+/**
+ * This structure is a context for BMW-512 computations. It is
+ * identical to the common <code>sph_bmw_small_context</code>.
+ */
+typedef sph_bmw_big_context sph_bmw512_context;
+
+#endif
+
+#if !defined(__AVX2__)
+
+/**
+ * Initialize a BMW-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the BMW-224 context (pointer to a
+ *             <code>sph_bmw224_context</code>)
+ */
+void sph_bmw224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BMW-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_bmw224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BMW-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BMW-224 context
+ * @param dst   the destination buffer
+ */
+void sph_bmw224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BMW-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_bmw224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a BMW-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the BMW-256 context (pointer to a
+ *             <code>sph_bmw256_context</code>)
+ */
+void sph_bmw256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BMW-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_bmw256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BMW-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BMW-256 context
+ * @param dst   the destination buffer
+ */
+void sph_bmw256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BMW-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_bmw256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#endif // !AVX2
+
+#if SPH_64
+
+/**
+ * Initialize a BMW-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the BMW-384 context (pointer to a
+ *             <code>sph_bmw384_context</code>)
+ */
+void sph_bmw384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BMW-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_bmw384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BMW-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BMW-384 context
+ * @param dst   the destination buffer
+ */
+void sph_bmw384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BMW-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_bmw384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a BMW-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the BMW-512 context (pointer to a
+ *             <code>sph_bmw512_context</code>)
+ */
+void sph_bmw512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the BMW-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_bmw512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current BMW-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the BMW-512 context
+ * @param dst   the destination buffer
+ */
+void sph_bmw512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the BMW-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_bmw512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_cubehash.c b/src/crypto/ghostrider/sph_cubehash.c
new file mode 100644
index 000000000..9322fe14e
--- /dev/null
+++ b/src/crypto/ghostrider/sph_cubehash.c
@@ -0,0 +1,723 @@
+/* $Id: cubehash.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * CubeHash implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#include "sph_cubehash.h"
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_CUBEHASH
+#define SPH_SMALL_FOOTPRINT_CUBEHASH   1
+#endif
+
+/*
+ * Some tests were conducted on an Intel Core2 Q6600 (32-bit and 64-bit
+ * mode), a PowerPC G3, and a MIPS-compatible CPU (Broadcom BCM3302).
+ * It appears that the optimal settings are:
+ *  -- full unroll, no state copy on the "big" systems (x86, PowerPC)
+ *  -- unroll to 4 or 8, state copy on the "small" system (MIPS)
+ */
+
+#if SPH_SMALL_FOOTPRINT_CUBEHASH
+
+#if !defined SPH_CUBEHASH_UNROLL
+#define SPH_CUBEHASH_UNROLL   4
+#endif
+#if !defined SPH_CUBEHASH_NOCOPY
+#define SPH_CUBEHASH_NOCOPY   1
+#endif
+
+#else
+
+#if !defined SPH_CUBEHASH_UNROLL
+#define SPH_CUBEHASH_UNROLL   0
+#endif
+#if !defined SPH_CUBEHASH_NOCOPY
+#define SPH_CUBEHASH_NOCOPY   0
+#endif
+
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+static const sph_u32 IV224[] = {
+	SPH_C32(0xB0FC8217), SPH_C32(0x1BEE1A90), SPH_C32(0x829E1A22),
+	SPH_C32(0x6362C342), SPH_C32(0x24D91C30), SPH_C32(0x03A7AA24),
+	SPH_C32(0xA63721C8), SPH_C32(0x85B0E2EF), SPH_C32(0xF35D13F3),
+	SPH_C32(0x41DA807D), SPH_C32(0x21A70CA6), SPH_C32(0x1F4E9774),
+	SPH_C32(0xB3E1C932), SPH_C32(0xEB0A79A8), SPH_C32(0xCDDAAA66),
+	SPH_C32(0xE2F6ECAA), SPH_C32(0x0A713362), SPH_C32(0xAA3080E0),
+	SPH_C32(0xD8F23A32), SPH_C32(0xCEF15E28), SPH_C32(0xDB086314),
+	SPH_C32(0x7F709DF7), SPH_C32(0xACD228A4), SPH_C32(0x704D6ECE),
+	SPH_C32(0xAA3EC95F), SPH_C32(0xE387C214), SPH_C32(0x3A6445FF),
+	SPH_C32(0x9CAB81C3), SPH_C32(0xC73D4B98), SPH_C32(0xD277AEBE),
+	SPH_C32(0xFD20151C), SPH_C32(0x00CB573E)
+};
+
+static const sph_u32 IV256[] = {
+	SPH_C32(0xEA2BD4B4), SPH_C32(0xCCD6F29F), SPH_C32(0x63117E71),
+	SPH_C32(0x35481EAE), SPH_C32(0x22512D5B), SPH_C32(0xE5D94E63),
+	SPH_C32(0x7E624131), SPH_C32(0xF4CC12BE), SPH_C32(0xC2D0B696),
+	SPH_C32(0x42AF2070), SPH_C32(0xD0720C35), SPH_C32(0x3361DA8C),
+	SPH_C32(0x28CCECA4), SPH_C32(0x8EF8AD83), SPH_C32(0x4680AC00),
+	SPH_C32(0x40E5FBAB), SPH_C32(0xD89041C3), SPH_C32(0x6107FBD5),
+	SPH_C32(0x6C859D41), SPH_C32(0xF0B26679), SPH_C32(0x09392549),
+	SPH_C32(0x5FA25603), SPH_C32(0x65C892FD), SPH_C32(0x93CB6285),
+	SPH_C32(0x2AF2B5AE), SPH_C32(0x9E4B4E60), SPH_C32(0x774ABFDD),
+	SPH_C32(0x85254725), SPH_C32(0x15815AEB), SPH_C32(0x4AB6AAD6),
+	SPH_C32(0x9CDAF8AF), SPH_C32(0xD6032C0A)
+};
+
+static const sph_u32 IV384[] = {
+	SPH_C32(0xE623087E), SPH_C32(0x04C00C87), SPH_C32(0x5EF46453),
+	SPH_C32(0x69524B13), SPH_C32(0x1A05C7A9), SPH_C32(0x3528DF88),
+	SPH_C32(0x6BDD01B5), SPH_C32(0x5057B792), SPH_C32(0x6AA7A922),
+	SPH_C32(0x649C7EEE), SPH_C32(0xF426309F), SPH_C32(0xCB629052),
+	SPH_C32(0xFC8E20ED), SPH_C32(0xB3482BAB), SPH_C32(0xF89E5E7E),
+	SPH_C32(0xD83D4DE4), SPH_C32(0x44BFC10D), SPH_C32(0x5FC1E63D),
+	SPH_C32(0x2104E6CB), SPH_C32(0x17958F7F), SPH_C32(0xDBEAEF70),
+	SPH_C32(0xB4B97E1E), SPH_C32(0x32C195F6), SPH_C32(0x6184A8E4),
+	SPH_C32(0x796C2543), SPH_C32(0x23DE176D), SPH_C32(0xD33BBAEC),
+	SPH_C32(0x0C12E5D2), SPH_C32(0x4EB95A7B), SPH_C32(0x2D18BA01),
+	SPH_C32(0x04EE475F), SPH_C32(0x1FC5F22E)
+};
+
+static const sph_u32 IV512[] = {
+	SPH_C32(0x2AEA2A61), SPH_C32(0x50F494D4), SPH_C32(0x2D538B8B),
+	SPH_C32(0x4167D83E), SPH_C32(0x3FEE2313), SPH_C32(0xC701CF8C),
+	SPH_C32(0xCC39968E), SPH_C32(0x50AC5695), SPH_C32(0x4D42C787),
+	SPH_C32(0xA647A8B3), SPH_C32(0x97CF0BEF), SPH_C32(0x825B4537),
+	SPH_C32(0xEEF864D2), SPH_C32(0xF22090C4), SPH_C32(0xD0E5CD33),
+	SPH_C32(0xA23911AE), SPH_C32(0xFCD398D9), SPH_C32(0x148FE485),
+	SPH_C32(0x1B017BEF), SPH_C32(0xB6444532), SPH_C32(0x6A536159),
+	SPH_C32(0x2FF5781C), SPH_C32(0x91FA7934), SPH_C32(0x0DBADEA9),
+	SPH_C32(0xD65C8A2B), SPH_C32(0xA5A70E75), SPH_C32(0xB1C62456),
+	SPH_C32(0xBC796576), SPH_C32(0x1921C8F7), SPH_C32(0xE7989AF1),
+	SPH_C32(0x7795D246), SPH_C32(0xD43E3B44)
+};
+
+#define T32      SPH_T32
+#define ROTL32   SPH_ROTL32
+
+#if SPH_CUBEHASH_NOCOPY
+
+#define DECL_STATE
+#define READ_STATE(cc)
+#define WRITE_STATE(cc)
+
+#define x0   ((sc)->state[ 0])
+#define x1   ((sc)->state[ 1])
+#define x2   ((sc)->state[ 2])
+#define x3   ((sc)->state[ 3])
+#define x4   ((sc)->state[ 4])
+#define x5   ((sc)->state[ 5])
+#define x6   ((sc)->state[ 6])
+#define x7   ((sc)->state[ 7])
+#define x8   ((sc)->state[ 8])
+#define x9   ((sc)->state[ 9])
+#define xa   ((sc)->state[10])
+#define xb   ((sc)->state[11])
+#define xc   ((sc)->state[12])
+#define xd   ((sc)->state[13])
+#define xe   ((sc)->state[14])
+#define xf   ((sc)->state[15])
+#define xg   ((sc)->state[16])
+#define xh   ((sc)->state[17])
+#define xi   ((sc)->state[18])
+#define xj   ((sc)->state[19])
+#define xk   ((sc)->state[20])
+#define xl   ((sc)->state[21])
+#define xm   ((sc)->state[22])
+#define xn   ((sc)->state[23])
+#define xo   ((sc)->state[24])
+#define xp   ((sc)->state[25])
+#define xq   ((sc)->state[26])
+#define xr   ((sc)->state[27])
+#define xs   ((sc)->state[28])
+#define xt   ((sc)->state[29])
+#define xu   ((sc)->state[30])
+#define xv   ((sc)->state[31])
+
+#else
+
+#define DECL_STATE \
+	sph_u32 x0, x1, x2, x3, x4, x5, x6, x7; \
+	sph_u32 x8, x9, xa, xb, xc, xd, xe, xf; \
+	sph_u32 xg, xh, xi, xj, xk, xl, xm, xn; \
+	sph_u32 xo, xp, xq, xr, xs, xt, xu, xv;
+
+#define READ_STATE(cc)   do { \
+		x0 = (cc)->state[ 0]; \
+		x1 = (cc)->state[ 1]; \
+		x2 = (cc)->state[ 2]; \
+		x3 = (cc)->state[ 3]; \
+		x4 = (cc)->state[ 4]; \
+		x5 = (cc)->state[ 5]; \
+		x6 = (cc)->state[ 6]; \
+		x7 = (cc)->state[ 7]; \
+		x8 = (cc)->state[ 8]; \
+		x9 = (cc)->state[ 9]; \
+		xa = (cc)->state[10]; \
+		xb = (cc)->state[11]; \
+		xc = (cc)->state[12]; \
+		xd = (cc)->state[13]; \
+		xe = (cc)->state[14]; \
+		xf = (cc)->state[15]; \
+		xg = (cc)->state[16]; \
+		xh = (cc)->state[17]; \
+		xi = (cc)->state[18]; \
+		xj = (cc)->state[19]; \
+		xk = (cc)->state[20]; \
+		xl = (cc)->state[21]; \
+		xm = (cc)->state[22]; \
+		xn = (cc)->state[23]; \
+		xo = (cc)->state[24]; \
+		xp = (cc)->state[25]; \
+		xq = (cc)->state[26]; \
+		xr = (cc)->state[27]; \
+		xs = (cc)->state[28]; \
+		xt = (cc)->state[29]; \
+		xu = (cc)->state[30]; \
+		xv = (cc)->state[31]; \
+	} while (0)
+
+#define WRITE_STATE(cc)   do { \
+		(cc)->state[ 0] = x0; \
+		(cc)->state[ 1] = x1; \
+		(cc)->state[ 2] = x2; \
+		(cc)->state[ 3] = x3; \
+		(cc)->state[ 4] = x4; \
+		(cc)->state[ 5] = x5; \
+		(cc)->state[ 6] = x6; \
+		(cc)->state[ 7] = x7; \
+		(cc)->state[ 8] = x8; \
+		(cc)->state[ 9] = x9; \
+		(cc)->state[10] = xa; \
+		(cc)->state[11] = xb; \
+		(cc)->state[12] = xc; \
+		(cc)->state[13] = xd; \
+		(cc)->state[14] = xe; \
+		(cc)->state[15] = xf; \
+		(cc)->state[16] = xg; \
+		(cc)->state[17] = xh; \
+		(cc)->state[18] = xi; \
+		(cc)->state[19] = xj; \
+		(cc)->state[20] = xk; \
+		(cc)->state[21] = xl; \
+		(cc)->state[22] = xm; \
+		(cc)->state[23] = xn; \
+		(cc)->state[24] = xo; \
+		(cc)->state[25] = xp; \
+		(cc)->state[26] = xq; \
+		(cc)->state[27] = xr; \
+		(cc)->state[28] = xs; \
+		(cc)->state[29] = xt; \
+		(cc)->state[30] = xu; \
+		(cc)->state[31] = xv; \
+	} while (0)
+
+#endif
+
+#define INPUT_BLOCK   do { \
+		x0 ^= sph_dec32le_aligned(buf +  0); \
+		x1 ^= sph_dec32le_aligned(buf +  4); \
+		x2 ^= sph_dec32le_aligned(buf +  8); \
+		x3 ^= sph_dec32le_aligned(buf + 12); \
+		x4 ^= sph_dec32le_aligned(buf + 16); \
+		x5 ^= sph_dec32le_aligned(buf + 20); \
+		x6 ^= sph_dec32le_aligned(buf + 24); \
+		x7 ^= sph_dec32le_aligned(buf + 28); \
+	} while (0)
+
+#define ROUND_EVEN   do { \
+		xg = T32(x0 + xg); \
+		x0 = ROTL32(x0, 7); \
+		xh = T32(x1 + xh); \
+		x1 = ROTL32(x1, 7); \
+		xi = T32(x2 + xi); \
+		x2 = ROTL32(x2, 7); \
+		xj = T32(x3 + xj); \
+		x3 = ROTL32(x3, 7); \
+		xk = T32(x4 + xk); \
+		x4 = ROTL32(x4, 7); \
+		xl = T32(x5 + xl); \
+		x5 = ROTL32(x5, 7); \
+		xm = T32(x6 + xm); \
+		x6 = ROTL32(x6, 7); \
+		xn = T32(x7 + xn); \
+		x7 = ROTL32(x7, 7); \
+		xo = T32(x8 + xo); \
+		x8 = ROTL32(x8, 7); \
+		xp = T32(x9 + xp); \
+		x9 = ROTL32(x9, 7); \
+		xq = T32(xa + xq); \
+		xa = ROTL32(xa, 7); \
+		xr = T32(xb + xr); \
+		xb = ROTL32(xb, 7); \
+		xs = T32(xc + xs); \
+		xc = ROTL32(xc, 7); \
+		xt = T32(xd + xt); \
+		xd = ROTL32(xd, 7); \
+		xu = T32(xe + xu); \
+		xe = ROTL32(xe, 7); \
+		xv = T32(xf + xv); \
+		xf = ROTL32(xf, 7); \
+		x8 ^= xg; \
+		x9 ^= xh; \
+		xa ^= xi; \
+		xb ^= xj; \
+		xc ^= xk; \
+		xd ^= xl; \
+		xe ^= xm; \
+		xf ^= xn; \
+		x0 ^= xo; \
+		x1 ^= xp; \
+		x2 ^= xq; \
+		x3 ^= xr; \
+		x4 ^= xs; \
+		x5 ^= xt; \
+		x6 ^= xu; \
+		x7 ^= xv; \
+		xi = T32(x8 + xi); \
+		x8 = ROTL32(x8, 11); \
+		xj = T32(x9 + xj); \
+		x9 = ROTL32(x9, 11); \
+		xg = T32(xa + xg); \
+		xa = ROTL32(xa, 11); \
+		xh = T32(xb + xh); \
+		xb = ROTL32(xb, 11); \
+		xm = T32(xc + xm); \
+		xc = ROTL32(xc, 11); \
+		xn = T32(xd + xn); \
+		xd = ROTL32(xd, 11); \
+		xk = T32(xe + xk); \
+		xe = ROTL32(xe, 11); \
+		xl = T32(xf + xl); \
+		xf = ROTL32(xf, 11); \
+		xq = T32(x0 + xq); \
+		x0 = ROTL32(x0, 11); \
+		xr = T32(x1 + xr); \
+		x1 = ROTL32(x1, 11); \
+		xo = T32(x2 + xo); \
+		x2 = ROTL32(x2, 11); \
+		xp = T32(x3 + xp); \
+		x3 = ROTL32(x3, 11); \
+		xu = T32(x4 + xu); \
+		x4 = ROTL32(x4, 11); \
+		xv = T32(x5 + xv); \
+		x5 = ROTL32(x5, 11); \
+		xs = T32(x6 + xs); \
+		x6 = ROTL32(x6, 11); \
+		xt = T32(x7 + xt); \
+		x7 = ROTL32(x7, 11); \
+		xc ^= xi; \
+		xd ^= xj; \
+		xe ^= xg; \
+		xf ^= xh; \
+		x8 ^= xm; \
+		x9 ^= xn; \
+		xa ^= xk; \
+		xb ^= xl; \
+		x4 ^= xq; \
+		x5 ^= xr; \
+		x6 ^= xo; \
+		x7 ^= xp; \
+		x0 ^= xu; \
+		x1 ^= xv; \
+		x2 ^= xs; \
+		x3 ^= xt; \
+	} while (0)
+
+#define ROUND_ODD   do { \
+		xj = T32(xc + xj); \
+		xc = ROTL32(xc, 7); \
+		xi = T32(xd + xi); \
+		xd = ROTL32(xd, 7); \
+		xh = T32(xe + xh); \
+		xe = ROTL32(xe, 7); \
+		xg = T32(xf + xg); \
+		xf = ROTL32(xf, 7); \
+		xn = T32(x8 + xn); \
+		x8 = ROTL32(x8, 7); \
+		xm = T32(x9 + xm); \
+		x9 = ROTL32(x9, 7); \
+		xl = T32(xa + xl); \
+		xa = ROTL32(xa, 7); \
+		xk = T32(xb + xk); \
+		xb = ROTL32(xb, 7); \
+		xr = T32(x4 + xr); \
+		x4 = ROTL32(x4, 7); \
+		xq = T32(x5 + xq); \
+		x5 = ROTL32(x5, 7); \
+		xp = T32(x6 + xp); \
+		x6 = ROTL32(x6, 7); \
+		xo = T32(x7 + xo); \
+		x7 = ROTL32(x7, 7); \
+		xv = T32(x0 + xv); \
+		x0 = ROTL32(x0, 7); \
+		xu = T32(x1 + xu); \
+		x1 = ROTL32(x1, 7); \
+		xt = T32(x2 + xt); \
+		x2 = ROTL32(x2, 7); \
+		xs = T32(x3 + xs); \
+		x3 = ROTL32(x3, 7); \
+		x4 ^= xj; \
+		x5 ^= xi; \
+		x6 ^= xh; \
+		x7 ^= xg; \
+		x0 ^= xn; \
+		x1 ^= xm; \
+		x2 ^= xl; \
+		x3 ^= xk; \
+		xc ^= xr; \
+		xd ^= xq; \
+		xe ^= xp; \
+		xf ^= xo; \
+		x8 ^= xv; \
+		x9 ^= xu; \
+		xa ^= xt; \
+		xb ^= xs; \
+		xh = T32(x4 + xh); \
+		x4 = ROTL32(x4, 11); \
+		xg = T32(x5 + xg); \
+		x5 = ROTL32(x5, 11); \
+		xj = T32(x6 + xj); \
+		x6 = ROTL32(x6, 11); \
+		xi = T32(x7 + xi); \
+		x7 = ROTL32(x7, 11); \
+		xl = T32(x0 + xl); \
+		x0 = ROTL32(x0, 11); \
+		xk = T32(x1 + xk); \
+		x1 = ROTL32(x1, 11); \
+		xn = T32(x2 + xn); \
+		x2 = ROTL32(x2, 11); \
+		xm = T32(x3 + xm); \
+		x3 = ROTL32(x3, 11); \
+		xp = T32(xc + xp); \
+		xc = ROTL32(xc, 11); \
+		xo = T32(xd + xo); \
+		xd = ROTL32(xd, 11); \
+		xr = T32(xe + xr); \
+		xe = ROTL32(xe, 11); \
+		xq = T32(xf + xq); \
+		xf = ROTL32(xf, 11); \
+		xt = T32(x8 + xt); \
+		x8 = ROTL32(x8, 11); \
+		xs = T32(x9 + xs); \
+		x9 = ROTL32(x9, 11); \
+		xv = T32(xa + xv); \
+		xa = ROTL32(xa, 11); \
+		xu = T32(xb + xu); \
+		xb = ROTL32(xb, 11); \
+		x0 ^= xh; \
+		x1 ^= xg; \
+		x2 ^= xj; \
+		x3 ^= xi; \
+		x4 ^= xl; \
+		x5 ^= xk; \
+		x6 ^= xn; \
+		x7 ^= xm; \
+		x8 ^= xp; \
+		x9 ^= xo; \
+		xa ^= xr; \
+		xb ^= xq; \
+		xc ^= xt; \
+		xd ^= xs; \
+		xe ^= xv; \
+		xf ^= xu; \
+	} while (0)
+
+/*
+ * There is no need to unroll all 16 rounds. The word-swapping permutation
+ * is an involution, so we need to unroll an even number of rounds. On
+ * "big" systems, unrolling 4 rounds yields about 97% of the speed
+ * achieved with full unrolling; and it keeps the code more compact
+ * for small architectures.
+ */
+
+#if SPH_CUBEHASH_UNROLL == 2
+
+#define SIXTEEN_ROUNDS   do { \
+		int j; \
+		for (j = 0; j < 8; j ++) { \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+		} \
+	} while (0)
+
+#elif SPH_CUBEHASH_UNROLL == 4
+
+#define SIXTEEN_ROUNDS   do { \
+		int j; \
+		for (j = 0; j < 4; j ++) { \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+		} \
+	} while (0)
+
+#elif SPH_CUBEHASH_UNROLL == 8
+
+#define SIXTEEN_ROUNDS   do { \
+		int j; \
+		for (j = 0; j < 2; j ++) { \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+			ROUND_EVEN; \
+			ROUND_ODD; \
+		} \
+	} while (0)
+
+#else
+
+#define SIXTEEN_ROUNDS   do { \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+		ROUND_EVEN; \
+		ROUND_ODD; \
+	} while (0)
+
+#endif
+
+static void
+cubehash_init(sph_cubehash_context *sc, const sph_u32 *iv)
+{
+	memcpy(sc->state, iv, sizeof sc->state);
+	sc->ptr = 0;
+}
+
+static void
+cubehash_core(sph_cubehash_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			INPUT_BLOCK;
+			SIXTEEN_ROUNDS;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE(sc);
+	sc->ptr = ptr;
+}
+
+static void
+cubehash_close(sph_cubehash_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_size_w32)
+{
+	unsigned char *buf, *out;
+	size_t ptr;
+	unsigned z;
+	int i;
+	DECL_STATE
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	READ_STATE(sc);
+	INPUT_BLOCK;
+	for (i = 0; i < 11; i ++) {
+		SIXTEEN_ROUNDS;
+		if (i == 0)
+			xv ^= SPH_C32(1);
+	}
+	WRITE_STATE(sc);
+	out = dst;
+	for (z = 0; z < out_size_w32; z ++)
+		sph_enc32le(out + (z << 2), sc->state[z]);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash224_init(void *cc)
+{
+	cubehash_init(cc, IV224);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash224(void *cc, const void *data, size_t len)
+{
+	cubehash_core(cc, data, len);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash224_close(void *cc, void *dst)
+{
+	sph_cubehash224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	cubehash_close(cc, ub, n, dst, 7);
+	sph_cubehash224_init(cc);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash256_init(void *cc)
+{
+	cubehash_init(cc, IV256);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash256(void *cc, const void *data, size_t len)
+{
+	cubehash_core(cc, data, len);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash256_close(void *cc, void *dst)
+{
+	sph_cubehash256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	cubehash_close(cc, ub, n, dst, 8);
+	sph_cubehash256_init(cc);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash384_init(void *cc)
+{
+	cubehash_init(cc, IV384);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash384(void *cc, const void *data, size_t len)
+{
+	cubehash_core(cc, data, len);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash384_close(void *cc, void *dst)
+{
+	sph_cubehash384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	cubehash_close(cc, ub, n, dst, 12);
+	sph_cubehash384_init(cc);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash512_init(void *cc)
+{
+	cubehash_init(cc, IV512);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash512(void *cc, const void *data, size_t len)
+{
+	cubehash_core(cc, data, len);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash512_close(void *cc, void *dst)
+{
+	sph_cubehash512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_cubehash.h */
+void
+sph_cubehash512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	cubehash_close(cc, ub, n, dst, 16);
+	sph_cubehash512_init(cc);
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_cubehash.h b/src/crypto/ghostrider/sph_cubehash.h
new file mode 100644
index 000000000..487a1946a
--- /dev/null
+++ b/src/crypto/ghostrider/sph_cubehash.h
@@ -0,0 +1,292 @@
+/* $Id: sph_cubehash.h 180 2010-05-08 02:29:25Z tp $ */
+/**
+ * CubeHash interface. CubeHash is a family of functions which differ by
+ * their output size; this implementation defines CubeHash for output
+ * sizes 224, 256, 384 and 512 bits, with the "standard parameters"
+ * (CubeHash16/32 with the CubeHash specification notations).
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_cubehash.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_CUBEHASH_H__
+#define SPH_CUBEHASH_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for CubeHash-224.
+ */
+#define SPH_SIZE_cubehash224   224
+
+/**
+ * Output size (in bits) for CubeHash-256.
+ */
+#define SPH_SIZE_cubehash256   256
+
+/**
+ * Output size (in bits) for CubeHash-384.
+ */
+#define SPH_SIZE_cubehash384   384
+
+/**
+ * Output size (in bits) for CubeHash-512.
+ */
+#define SPH_SIZE_cubehash512   512
+
+/**
+ * This structure is a context for CubeHash computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a CubeHash computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running CubeHash computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[32];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 state[32];
+#endif
+} sph_cubehash_context;
+
+/**
+ * Type for a CubeHash-224 context (identical to the common context).
+ */
+typedef sph_cubehash_context sph_cubehash224_context;
+
+/**
+ * Type for a CubeHash-256 context (identical to the common context).
+ */
+typedef sph_cubehash_context sph_cubehash256_context;
+
+/**
+ * Type for a CubeHash-384 context (identical to the common context).
+ */
+typedef sph_cubehash_context sph_cubehash384_context;
+
+/**
+ * Type for a CubeHash-512 context (identical to the common context).
+ */
+typedef sph_cubehash_context sph_cubehash512_context;
+
+/**
+ * Initialize a CubeHash-224 context. This process performs no memory
+ * allocation.
+ *
+ * @param cc   the CubeHash-224 context (pointer to a
+ *             <code>sph_cubehash224_context</code>)
+ */
+void sph_cubehash224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the CubeHash-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_cubehash224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current CubeHash-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the CubeHash-224 context
+ * @param dst   the destination buffer
+ */
+void sph_cubehash224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the CubeHash-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_cubehash224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a CubeHash-256 context. This process performs no memory
+ * allocation.
+ *
+ * @param cc   the CubeHash-256 context (pointer to a
+ *             <code>sph_cubehash256_context</code>)
+ */
+void sph_cubehash256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the CubeHash-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_cubehash256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current CubeHash-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the CubeHash-256 context
+ * @param dst   the destination buffer
+ */
+void sph_cubehash256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the CubeHash-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_cubehash256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a CubeHash-384 context. This process performs no memory
+ * allocation.
+ *
+ * @param cc   the CubeHash-384 context (pointer to a
+ *             <code>sph_cubehash384_context</code>)
+ */
+void sph_cubehash384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the CubeHash-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_cubehash384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current CubeHash-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the CubeHash-384 context
+ * @param dst   the destination buffer
+ */
+void sph_cubehash384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the CubeHash-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_cubehash384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a CubeHash-512 context. This process performs no memory
+ * allocation.
+ *
+ * @param cc   the CubeHash-512 context (pointer to a
+ *             <code>sph_cubehash512_context</code>)
+ */
+void sph_cubehash512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the CubeHash-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_cubehash512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current CubeHash-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the CubeHash-512 context
+ * @param dst   the destination buffer
+ */
+void sph_cubehash512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the CubeHash-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_cubehash512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_echo.c b/src/crypto/ghostrider/sph_echo.c
new file mode 100644
index 000000000..a6723cc28
--- /dev/null
+++ b/src/crypto/ghostrider/sph_echo.c
@@ -0,0 +1,1032 @@
+/* $Id: echo.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * ECHO implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#include "sph_echo.h"
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_ECHO
+#define SPH_SMALL_FOOTPRINT_ECHO   1
+#endif
+
+/*
+ * Some measures tend to show that the 64-bit implementation offers
+ * better performance only on a "64-bit architectures", those which have
+ * actual 64-bit registers.
+ */
+#if !defined SPH_ECHO_64 && SPH_64_TRUE
+#define SPH_ECHO_64   1
+#endif
+
+/*
+ * We can use a 64-bit implementation only if a 64-bit type is available.
+ */
+#if !SPH_64
+#undef SPH_ECHO_64
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#define T32   SPH_T32
+#define C32   SPH_C32
+#if SPH_64
+#define C64   SPH_C64
+#endif
+
+#define AES_BIG_ENDIAN   0
+#include "aes_helper.c"
+
+#if SPH_ECHO_64
+
+#define DECL_STATE_SMALL   \
+	sph_u64 W[16][2];
+
+#define DECL_STATE_BIG   \
+	sph_u64 W[16][2];
+
+#define INPUT_BLOCK_SMALL(sc)   do { \
+		unsigned u; \
+		memcpy(W, sc->u.Vb, 8 * sizeof(sph_u64)); \
+		for (u = 0; u < 12; u ++) { \
+			W[u + 4][0] = sph_dec64le_aligned( \
+				sc->buf + 16 * u); \
+			W[u + 4][1] = sph_dec64le_aligned( \
+				sc->buf + 16 * u + 8); \
+		} \
+	} while (0)
+
+#define INPUT_BLOCK_BIG(sc)   do { \
+		unsigned u; \
+		memcpy(W, sc->u.Vb, 16 * sizeof(sph_u64)); \
+		for (u = 0; u < 8; u ++) { \
+			W[u + 8][0] = sph_dec64le_aligned( \
+				sc->buf + 16 * u); \
+			W[u + 8][1] = sph_dec64le_aligned( \
+				sc->buf + 16 * u + 8); \
+		} \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_ECHO
+
+static void
+aes_2rounds_all(sph_u64 W[16][2],
+	sph_u32 *pK0, sph_u32 *pK1, sph_u32 *pK2, sph_u32 *pK3)
+{
+	int n;
+	sph_u32 K0 = *pK0;
+	sph_u32 K1 = *pK1;
+	sph_u32 K2 = *pK2;
+	sph_u32 K3 = *pK3;
+
+	for (n = 0; n < 16; n ++) {
+		sph_u64 Wl = W[n][0];
+		sph_u64 Wh = W[n][1];
+		sph_u32 X0 = (sph_u32)Wl;
+		sph_u32 X1 = (sph_u32)(Wl >> 32);
+		sph_u32 X2 = (sph_u32)Wh;
+		sph_u32 X3 = (sph_u32)(Wh >> 32);
+		sph_u32 Y0, Y1, Y2, Y3; \
+		AES_ROUND_LE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3);
+		AES_ROUND_NOKEY_LE(Y0, Y1, Y2, Y3, X0, X1, X2, X3);
+		W[n][0] = (sph_u64)X0 | ((sph_u64)X1 << 32);
+		W[n][1] = (sph_u64)X2 | ((sph_u64)X3 << 32);
+		if ((K0 = T32(K0 + 1)) == 0) {
+			if ((K1 = T32(K1 + 1)) == 0)
+				if ((K2 = T32(K2 + 1)) == 0)
+					K3 = T32(K3 + 1);
+		}
+	}
+	*pK0 = K0;
+	*pK1 = K1;
+	*pK2 = K2;
+	*pK3 = K3;
+}
+
+#define BIG_SUB_WORDS   do { \
+		aes_2rounds_all(W, &K0, &K1, &K2, &K3); \
+	} while (0)
+
+#else
+
+#define AES_2ROUNDS(X)   do { \
+		sph_u32 X0 = (sph_u32)(X[0]); \
+		sph_u32 X1 = (sph_u32)(X[0] >> 32); \
+		sph_u32 X2 = (sph_u32)(X[1]); \
+		sph_u32 X3 = (sph_u32)(X[1] >> 32); \
+		sph_u32 Y0, Y1, Y2, Y3; \
+		AES_ROUND_LE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3); \
+		AES_ROUND_NOKEY_LE(Y0, Y1, Y2, Y3, X0, X1, X2, X3); \
+		X[0] = (sph_u64)X0 | ((sph_u64)X1 << 32); \
+		X[1] = (sph_u64)X2 | ((sph_u64)X3 << 32); \
+		if ((K0 = T32(K0 + 1)) == 0) { \
+			if ((K1 = T32(K1 + 1)) == 0) \
+				if ((K2 = T32(K2 + 1)) == 0) \
+					K3 = T32(K3 + 1); \
+		} \
+	} while (0)
+
+#define BIG_SUB_WORDS   do { \
+		AES_2ROUNDS(W[ 0]); \
+		AES_2ROUNDS(W[ 1]); \
+		AES_2ROUNDS(W[ 2]); \
+		AES_2ROUNDS(W[ 3]); \
+		AES_2ROUNDS(W[ 4]); \
+		AES_2ROUNDS(W[ 5]); \
+		AES_2ROUNDS(W[ 6]); \
+		AES_2ROUNDS(W[ 7]); \
+		AES_2ROUNDS(W[ 8]); \
+		AES_2ROUNDS(W[ 9]); \
+		AES_2ROUNDS(W[10]); \
+		AES_2ROUNDS(W[11]); \
+		AES_2ROUNDS(W[12]); \
+		AES_2ROUNDS(W[13]); \
+		AES_2ROUNDS(W[14]); \
+		AES_2ROUNDS(W[15]); \
+	} while (0)
+
+#endif
+
+#define SHIFT_ROW1(a, b, c, d)   do { \
+		sph_u64 tmp; \
+		tmp = W[a][0]; \
+		W[a][0] = W[b][0]; \
+		W[b][0] = W[c][0]; \
+		W[c][0] = W[d][0]; \
+		W[d][0] = tmp; \
+		tmp = W[a][1]; \
+		W[a][1] = W[b][1]; \
+		W[b][1] = W[c][1]; \
+		W[c][1] = W[d][1]; \
+		W[d][1] = tmp; \
+	} while (0)
+
+#define SHIFT_ROW2(a, b, c, d)   do { \
+		sph_u64 tmp; \
+		tmp = W[a][0]; \
+		W[a][0] = W[c][0]; \
+		W[c][0] = tmp; \
+		tmp = W[b][0]; \
+		W[b][0] = W[d][0]; \
+		W[d][0] = tmp; \
+		tmp = W[a][1]; \
+		W[a][1] = W[c][1]; \
+		W[c][1] = tmp; \
+		tmp = W[b][1]; \
+		W[b][1] = W[d][1]; \
+		W[d][1] = tmp; \
+	} while (0)
+
+#define SHIFT_ROW3(a, b, c, d)   SHIFT_ROW1(d, c, b, a)
+
+#define BIG_SHIFT_ROWS   do { \
+		SHIFT_ROW1(1, 5, 9, 13); \
+		SHIFT_ROW2(2, 6, 10, 14); \
+		SHIFT_ROW3(3, 7, 11, 15); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_ECHO
+
+static void
+mix_column(sph_u64 W[16][2], int ia, int ib, int ic, int id)
+{
+	int n;
+
+	for (n = 0; n < 2; n ++) {
+		sph_u64 a = W[ia][n];
+		sph_u64 b = W[ib][n];
+		sph_u64 c = W[ic][n];
+		sph_u64 d = W[id][n];
+		sph_u64 ab = a ^ b;
+		sph_u64 bc = b ^ c;
+		sph_u64 cd = c ^ d;
+		sph_u64 abx = ((ab & C64(0x8080808080808080)) >> 7) * 27U
+			^ ((ab & C64(0x7F7F7F7F7F7F7F7F)) << 1);
+		sph_u64 bcx = ((bc & C64(0x8080808080808080)) >> 7) * 27U
+			^ ((bc & C64(0x7F7F7F7F7F7F7F7F)) << 1);
+		sph_u64 cdx = ((cd & C64(0x8080808080808080)) >> 7) * 27U
+			^ ((cd & C64(0x7F7F7F7F7F7F7F7F)) << 1);
+		W[ia][n] = abx ^ bc ^ d;
+		W[ib][n] = bcx ^ a ^ cd;
+		W[ic][n] = cdx ^ ab ^ d;
+		W[id][n] = abx ^ bcx ^ cdx ^ ab ^ c;
+	}
+}
+
+#define MIX_COLUMN(a, b, c, d)   mix_column(W, a, b, c, d)
+
+#else
+
+#define MIX_COLUMN1(ia, ib, ic, id, n)   do { \
+		sph_u64 a = W[ia][n]; \
+		sph_u64 b = W[ib][n]; \
+		sph_u64 c = W[ic][n]; \
+		sph_u64 d = W[id][n]; \
+		sph_u64 ab = a ^ b; \
+		sph_u64 bc = b ^ c; \
+		sph_u64 cd = c ^ d; \
+		sph_u64 abx = ((ab & C64(0x8080808080808080)) >> 7) * 27U \
+			^ ((ab & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
+		sph_u64 bcx = ((bc & C64(0x8080808080808080)) >> 7) * 27U \
+			^ ((bc & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
+		sph_u64 cdx = ((cd & C64(0x8080808080808080)) >> 7) * 27U \
+			^ ((cd & C64(0x7F7F7F7F7F7F7F7F)) << 1); \
+		W[ia][n] = abx ^ bc ^ d; \
+		W[ib][n] = bcx ^ a ^ cd; \
+		W[ic][n] = cdx ^ ab ^ d; \
+		W[id][n] = abx ^ bcx ^ cdx ^ ab ^ c; \
+	} while (0)
+
+#define MIX_COLUMN(a, b, c, d)   do { \
+		MIX_COLUMN1(a, b, c, d, 0); \
+		MIX_COLUMN1(a, b, c, d, 1); \
+	} while (0)
+
+#endif
+
+#define BIG_MIX_COLUMNS   do { \
+		MIX_COLUMN(0, 1, 2, 3); \
+		MIX_COLUMN(4, 5, 6, 7); \
+		MIX_COLUMN(8, 9, 10, 11); \
+		MIX_COLUMN(12, 13, 14, 15); \
+	} while (0)
+
+#define BIG_ROUND   do { \
+		BIG_SUB_WORDS; \
+		BIG_SHIFT_ROWS; \
+		BIG_MIX_COLUMNS; \
+	} while (0)
+
+#define FINAL_SMALL   do { \
+		unsigned u; \
+		sph_u64 *VV = &sc->u.Vb[0][0]; \
+		sph_u64 *WW = &W[0][0]; \
+		for (u = 0; u < 8; u ++) { \
+			VV[u] ^= sph_dec64le_aligned(sc->buf + (u * 8)) \
+				^ sph_dec64le_aligned(sc->buf + (u * 8) + 64) \
+				^ sph_dec64le_aligned(sc->buf + (u * 8) + 128) \
+				^ WW[u] ^ WW[u + 8] \
+				^ WW[u + 16] ^ WW[u + 24]; \
+		} \
+	} while (0)
+
+#define FINAL_BIG   do { \
+		unsigned u; \
+		sph_u64 *VV = &sc->u.Vb[0][0]; \
+		sph_u64 *WW = &W[0][0]; \
+		for (u = 0; u < 16; u ++) { \
+			VV[u] ^= sph_dec64le_aligned(sc->buf + (u * 8)) \
+				^ WW[u] ^ WW[u + 16]; \
+		} \
+	} while (0)
+
+#define COMPRESS_SMALL(sc)   do { \
+		sph_u32 K0 = sc->C0; \
+		sph_u32 K1 = sc->C1; \
+		sph_u32 K2 = sc->C2; \
+		sph_u32 K3 = sc->C3; \
+		unsigned u; \
+		INPUT_BLOCK_SMALL(sc); \
+		for (u = 0; u < 8; u ++) { \
+			BIG_ROUND; \
+		} \
+		FINAL_SMALL; \
+	} while (0)
+
+#define COMPRESS_BIG(sc)   do { \
+		sph_u32 K0 = sc->C0; \
+		sph_u32 K1 = sc->C1; \
+		sph_u32 K2 = sc->C2; \
+		sph_u32 K3 = sc->C3; \
+		unsigned u; \
+		INPUT_BLOCK_BIG(sc); \
+		for (u = 0; u < 10; u ++) { \
+			BIG_ROUND; \
+		} \
+		FINAL_BIG; \
+	} while (0)
+
+#else
+
+#define DECL_STATE_SMALL   \
+	sph_u32 W[16][4];
+
+#define DECL_STATE_BIG   \
+	sph_u32 W[16][4];
+
+#define INPUT_BLOCK_SMALL(sc)   do { \
+		unsigned u; \
+		memcpy(W, sc->u.Vs, 16 * sizeof(sph_u32)); \
+		for (u = 0; u < 12; u ++) { \
+			W[u + 4][0] = sph_dec32le_aligned( \
+				sc->buf + 16 * u); \
+			W[u + 4][1] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 4); \
+			W[u + 4][2] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 8); \
+			W[u + 4][3] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 12); \
+		} \
+	} while (0)
+
+#define INPUT_BLOCK_BIG(sc)   do { \
+		unsigned u; \
+		memcpy(W, sc->u.Vs, 32 * sizeof(sph_u32)); \
+		for (u = 0; u < 8; u ++) { \
+			W[u + 8][0] = sph_dec32le_aligned( \
+				sc->buf + 16 * u); \
+			W[u + 8][1] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 4); \
+			W[u + 8][2] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 8); \
+			W[u + 8][3] = sph_dec32le_aligned( \
+				sc->buf + 16 * u + 12); \
+		} \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_ECHO
+
+static void
+aes_2rounds_all(sph_u32 W[16][4],
+	sph_u32 *pK0, sph_u32 *pK1, sph_u32 *pK2, sph_u32 *pK3)
+{
+	int n;
+	sph_u32 K0 = *pK0;
+	sph_u32 K1 = *pK1;
+	sph_u32 K2 = *pK2;
+	sph_u32 K3 = *pK3;
+
+	for (n = 0; n < 16; n ++) {
+		sph_u32 *X = W[n];
+		sph_u32 Y0, Y1, Y2, Y3;
+		AES_ROUND_LE(X[0], X[1], X[2], X[3],
+			K0, K1, K2, K3, Y0, Y1, Y2, Y3);
+		AES_ROUND_NOKEY_LE(Y0, Y1, Y2, Y3, X[0], X[1], X[2], X[3]);
+		if ((K0 = T32(K0 + 1)) == 0) {
+			if ((K1 = T32(K1 + 1)) == 0)
+				if ((K2 = T32(K2 + 1)) == 0)
+					K3 = T32(K3 + 1);
+		}
+	}
+	*pK0 = K0;
+	*pK1 = K1;
+	*pK2 = K2;
+	*pK3 = K3;
+}
+
+#define BIG_SUB_WORDS   do { \
+		aes_2rounds_all(W, &K0, &K1, &K2, &K3); \
+	} while (0)
+
+#else
+
+#define AES_2ROUNDS(X)   do { \
+		sph_u32 Y0, Y1, Y2, Y3; \
+		AES_ROUND_LE(X[0], X[1], X[2], X[3], \
+			K0, K1, K2, K3, Y0, Y1, Y2, Y3); \
+		AES_ROUND_NOKEY_LE(Y0, Y1, Y2, Y3, X[0], X[1], X[2], X[3]); \
+		if ((K0 = T32(K0 + 1)) == 0) { \
+			if ((K1 = T32(K1 + 1)) == 0) \
+				if ((K2 = T32(K2 + 1)) == 0) \
+					K3 = T32(K3 + 1); \
+		} \
+	} while (0)
+
+#define BIG_SUB_WORDS   do { \
+		AES_2ROUNDS(W[ 0]); \
+		AES_2ROUNDS(W[ 1]); \
+		AES_2ROUNDS(W[ 2]); \
+		AES_2ROUNDS(W[ 3]); \
+		AES_2ROUNDS(W[ 4]); \
+		AES_2ROUNDS(W[ 5]); \
+		AES_2ROUNDS(W[ 6]); \
+		AES_2ROUNDS(W[ 7]); \
+		AES_2ROUNDS(W[ 8]); \
+		AES_2ROUNDS(W[ 9]); \
+		AES_2ROUNDS(W[10]); \
+		AES_2ROUNDS(W[11]); \
+		AES_2ROUNDS(W[12]); \
+		AES_2ROUNDS(W[13]); \
+		AES_2ROUNDS(W[14]); \
+		AES_2ROUNDS(W[15]); \
+	} while (0)
+
+#endif
+
+#define SHIFT_ROW1(a, b, c, d)   do { \
+		sph_u32 tmp; \
+		tmp = W[a][0]; \
+		W[a][0] = W[b][0]; \
+		W[b][0] = W[c][0]; \
+		W[c][0] = W[d][0]; \
+		W[d][0] = tmp; \
+		tmp = W[a][1]; \
+		W[a][1] = W[b][1]; \
+		W[b][1] = W[c][1]; \
+		W[c][1] = W[d][1]; \
+		W[d][1] = tmp; \
+		tmp = W[a][2]; \
+		W[a][2] = W[b][2]; \
+		W[b][2] = W[c][2]; \
+		W[c][2] = W[d][2]; \
+		W[d][2] = tmp; \
+		tmp = W[a][3]; \
+		W[a][3] = W[b][3]; \
+		W[b][3] = W[c][3]; \
+		W[c][3] = W[d][3]; \
+		W[d][3] = tmp; \
+	} while (0)
+
+#define SHIFT_ROW2(a, b, c, d)   do { \
+		sph_u32 tmp; \
+		tmp = W[a][0]; \
+		W[a][0] = W[c][0]; \
+		W[c][0] = tmp; \
+		tmp = W[b][0]; \
+		W[b][0] = W[d][0]; \
+		W[d][0] = tmp; \
+		tmp = W[a][1]; \
+		W[a][1] = W[c][1]; \
+		W[c][1] = tmp; \
+		tmp = W[b][1]; \
+		W[b][1] = W[d][1]; \
+		W[d][1] = tmp; \
+		tmp = W[a][2]; \
+		W[a][2] = W[c][2]; \
+		W[c][2] = tmp; \
+		tmp = W[b][2]; \
+		W[b][2] = W[d][2]; \
+		W[d][2] = tmp; \
+		tmp = W[a][3]; \
+		W[a][3] = W[c][3]; \
+		W[c][3] = tmp; \
+		tmp = W[b][3]; \
+		W[b][3] = W[d][3]; \
+		W[d][3] = tmp; \
+	} while (0)
+
+#define SHIFT_ROW3(a, b, c, d)   SHIFT_ROW1(d, c, b, a)
+
+#define BIG_SHIFT_ROWS   do { \
+		SHIFT_ROW1(1, 5, 9, 13); \
+		SHIFT_ROW2(2, 6, 10, 14); \
+		SHIFT_ROW3(3, 7, 11, 15); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_ECHO
+
+static void
+mix_column(sph_u32 W[16][4], int ia, int ib, int ic, int id)
+{
+	int n;
+
+	for (n = 0; n < 4; n ++) {
+		sph_u32 a = W[ia][n];
+		sph_u32 b = W[ib][n];
+		sph_u32 c = W[ic][n];
+		sph_u32 d = W[id][n];
+		sph_u32 ab = a ^ b;
+		sph_u32 bc = b ^ c;
+		sph_u32 cd = c ^ d;
+		sph_u32 abx = ((ab & C32(0x80808080)) >> 7) * 27U
+			^ ((ab & C32(0x7F7F7F7F)) << 1);
+		sph_u32 bcx = ((bc & C32(0x80808080)) >> 7) * 27U
+			^ ((bc & C32(0x7F7F7F7F)) << 1);
+		sph_u32 cdx = ((cd & C32(0x80808080)) >> 7) * 27U
+			^ ((cd & C32(0x7F7F7F7F)) << 1);
+		W[ia][n] = abx ^ bc ^ d;
+		W[ib][n] = bcx ^ a ^ cd;
+		W[ic][n] = cdx ^ ab ^ d;
+		W[id][n] = abx ^ bcx ^ cdx ^ ab ^ c;
+	}
+}
+
+#define MIX_COLUMN(a, b, c, d)   mix_column(W, a, b, c, d)
+
+#else
+
+#define MIX_COLUMN1(ia, ib, ic, id, n)   do { \
+		sph_u32 a = W[ia][n]; \
+		sph_u32 b = W[ib][n]; \
+		sph_u32 c = W[ic][n]; \
+		sph_u32 d = W[id][n]; \
+		sph_u32 ab = a ^ b; \
+		sph_u32 bc = b ^ c; \
+		sph_u32 cd = c ^ d; \
+		sph_u32 abx = ((ab & C32(0x80808080)) >> 7) * 27U \
+			^ ((ab & C32(0x7F7F7F7F)) << 1); \
+		sph_u32 bcx = ((bc & C32(0x80808080)) >> 7) * 27U \
+			^ ((bc & C32(0x7F7F7F7F)) << 1); \
+		sph_u32 cdx = ((cd & C32(0x80808080)) >> 7) * 27U \
+			^ ((cd & C32(0x7F7F7F7F)) << 1); \
+		W[ia][n] = abx ^ bc ^ d; \
+		W[ib][n] = bcx ^ a ^ cd; \
+		W[ic][n] = cdx ^ ab ^ d; \
+		W[id][n] = abx ^ bcx ^ cdx ^ ab ^ c; \
+	} while (0)
+
+#define MIX_COLUMN(a, b, c, d)   do { \
+		MIX_COLUMN1(a, b, c, d, 0); \
+		MIX_COLUMN1(a, b, c, d, 1); \
+		MIX_COLUMN1(a, b, c, d, 2); \
+		MIX_COLUMN1(a, b, c, d, 3); \
+	} while (0)
+
+#endif
+
+#define BIG_MIX_COLUMNS   do { \
+		MIX_COLUMN(0, 1, 2, 3); \
+		MIX_COLUMN(4, 5, 6, 7); \
+		MIX_COLUMN(8, 9, 10, 11); \
+		MIX_COLUMN(12, 13, 14, 15); \
+	} while (0)
+
+#define BIG_ROUND   do { \
+		BIG_SUB_WORDS; \
+		BIG_SHIFT_ROWS; \
+		BIG_MIX_COLUMNS; \
+	} while (0)
+
+#define FINAL_SMALL   do { \
+		unsigned u; \
+		sph_u32 *VV = &sc->u.Vs[0][0]; \
+		sph_u32 *WW = &W[0][0]; \
+		for (u = 0; u < 16; u ++) { \
+			VV[u] ^= sph_dec32le_aligned(sc->buf + (u * 4)) \
+				^ sph_dec32le_aligned(sc->buf + (u * 4) + 64) \
+				^ sph_dec32le_aligned(sc->buf + (u * 4) + 128) \
+				^ WW[u] ^ WW[u + 16] \
+				^ WW[u + 32] ^ WW[u + 48]; \
+		} \
+	} while (0)
+
+#define FINAL_BIG   do { \
+		unsigned u; \
+		sph_u32 *VV = &sc->u.Vs[0][0]; \
+		sph_u32 *WW = &W[0][0]; \
+		for (u = 0; u < 32; u ++) { \
+			VV[u] ^= sph_dec32le_aligned(sc->buf + (u * 4)) \
+				^ WW[u] ^ WW[u + 32]; \
+		} \
+	} while (0)
+
+#define COMPRESS_SMALL(sc)   do { \
+		sph_u32 K0 = sc->C0; \
+		sph_u32 K1 = sc->C1; \
+		sph_u32 K2 = sc->C2; \
+		sph_u32 K3 = sc->C3; \
+		unsigned u; \
+		INPUT_BLOCK_SMALL(sc); \
+		for (u = 0; u < 8; u ++) { \
+			BIG_ROUND; \
+		} \
+		FINAL_SMALL; \
+	} while (0)
+
+#define COMPRESS_BIG(sc)   do { \
+		sph_u32 K0 = sc->C0; \
+		sph_u32 K1 = sc->C1; \
+		sph_u32 K2 = sc->C2; \
+		sph_u32 K3 = sc->C3; \
+		unsigned u; \
+		INPUT_BLOCK_BIG(sc); \
+		for (u = 0; u < 10; u ++) { \
+			BIG_ROUND; \
+		} \
+		FINAL_BIG; \
+	} while (0)
+
+#endif
+
+#define INCR_COUNTER(sc, val)   do { \
+		sc->C0 = T32(sc->C0 + (sph_u32)(val)); \
+		if (sc->C0 < (sph_u32)(val)) { \
+			if ((sc->C1 = T32(sc->C1 + 1)) == 0) \
+				if ((sc->C2 = T32(sc->C2 + 1)) == 0) \
+					sc->C3 = T32(sc->C3 + 1); \
+		} \
+	} while (0)
+
+static void
+echo_small_init(sph_echo_small_context *sc, unsigned out_len)
+{
+#if SPH_ECHO_64
+	sc->u.Vb[0][0] = (sph_u64)out_len;
+	sc->u.Vb[0][1] = 0;
+	sc->u.Vb[1][0] = (sph_u64)out_len;
+	sc->u.Vb[1][1] = 0;
+	sc->u.Vb[2][0] = (sph_u64)out_len;
+	sc->u.Vb[2][1] = 0;
+	sc->u.Vb[3][0] = (sph_u64)out_len;
+	sc->u.Vb[3][1] = 0;
+#else
+	sc->u.Vs[0][0] = (sph_u32)out_len;
+	sc->u.Vs[0][1] = sc->u.Vs[0][2] = sc->u.Vs[0][3] = 0;
+	sc->u.Vs[1][0] = (sph_u32)out_len;
+	sc->u.Vs[1][1] = sc->u.Vs[1][2] = sc->u.Vs[1][3] = 0;
+	sc->u.Vs[2][0] = (sph_u32)out_len;
+	sc->u.Vs[2][1] = sc->u.Vs[2][2] = sc->u.Vs[2][3] = 0;
+	sc->u.Vs[3][0] = (sph_u32)out_len;
+	sc->u.Vs[3][1] = sc->u.Vs[3][2] = sc->u.Vs[3][3] = 0;
+#endif
+	sc->ptr = 0;
+	sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+}
+
+static void
+echo_big_init(sph_echo_big_context *sc, unsigned out_len)
+{
+#if SPH_ECHO_64
+	sc->u.Vb[0][0] = (sph_u64)out_len;
+	sc->u.Vb[0][1] = 0;
+	sc->u.Vb[1][0] = (sph_u64)out_len;
+	sc->u.Vb[1][1] = 0;
+	sc->u.Vb[2][0] = (sph_u64)out_len;
+	sc->u.Vb[2][1] = 0;
+	sc->u.Vb[3][0] = (sph_u64)out_len;
+	sc->u.Vb[3][1] = 0;
+	sc->u.Vb[4][0] = (sph_u64)out_len;
+	sc->u.Vb[4][1] = 0;
+	sc->u.Vb[5][0] = (sph_u64)out_len;
+	sc->u.Vb[5][1] = 0;
+	sc->u.Vb[6][0] = (sph_u64)out_len;
+	sc->u.Vb[6][1] = 0;
+	sc->u.Vb[7][0] = (sph_u64)out_len;
+	sc->u.Vb[7][1] = 0;
+#else
+	sc->u.Vs[0][0] = (sph_u32)out_len;
+	sc->u.Vs[0][1] = sc->u.Vs[0][2] = sc->u.Vs[0][3] = 0;
+	sc->u.Vs[1][0] = (sph_u32)out_len;
+	sc->u.Vs[1][1] = sc->u.Vs[1][2] = sc->u.Vs[1][3] = 0;
+	sc->u.Vs[2][0] = (sph_u32)out_len;
+	sc->u.Vs[2][1] = sc->u.Vs[2][2] = sc->u.Vs[2][3] = 0;
+	sc->u.Vs[3][0] = (sph_u32)out_len;
+	sc->u.Vs[3][1] = sc->u.Vs[3][2] = sc->u.Vs[3][3] = 0;
+	sc->u.Vs[4][0] = (sph_u32)out_len;
+	sc->u.Vs[4][1] = sc->u.Vs[4][2] = sc->u.Vs[4][3] = 0;
+	sc->u.Vs[5][0] = (sph_u32)out_len;
+	sc->u.Vs[5][1] = sc->u.Vs[5][2] = sc->u.Vs[5][3] = 0;
+	sc->u.Vs[6][0] = (sph_u32)out_len;
+	sc->u.Vs[6][1] = sc->u.Vs[6][2] = sc->u.Vs[6][3] = 0;
+	sc->u.Vs[7][0] = (sph_u32)out_len;
+	sc->u.Vs[7][1] = sc->u.Vs[7][2] = sc->u.Vs[7][3] = 0;
+#endif
+	sc->ptr = 0;
+	sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+}
+
+static void
+echo_small_compress(sph_echo_small_context *sc)
+{
+	DECL_STATE_SMALL
+
+	COMPRESS_SMALL(sc);
+}
+
+static void
+echo_big_compress(sph_echo_big_context *sc)
+{
+	DECL_STATE_BIG
+
+	COMPRESS_BIG(sc);
+}
+
+static void
+echo_small_core(sph_echo_small_context *sc,
+	const unsigned char *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data += clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			INCR_COUNTER(sc, 1536);
+			echo_small_compress(sc);
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+}
+
+static void
+echo_big_core(sph_echo_big_context *sc,
+	const unsigned char *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data += clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			INCR_COUNTER(sc, 1024);
+			echo_big_compress(sc);
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+}
+
+static void
+echo_small_close(sph_echo_small_context *sc, unsigned ub, unsigned n,
+	void *dst, unsigned out_size_w32)
+{
+	unsigned char *buf;
+	size_t ptr;
+	unsigned z;
+	unsigned elen;
+	union {
+		unsigned char tmp[32];
+		sph_u32 dummy;
+#if SPH_ECHO_64
+		sph_u64 dummy2;
+#endif
+	} u;
+#if SPH_ECHO_64
+	sph_u64 *VV;
+#else
+	sph_u32 *VV;
+#endif
+	unsigned k;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	elen = ((unsigned)ptr << 3) + n;
+	INCR_COUNTER(sc, elen);
+	sph_enc32le_aligned(u.tmp, sc->C0);
+	sph_enc32le_aligned(u.tmp + 4, sc->C1);
+	sph_enc32le_aligned(u.tmp + 8, sc->C2);
+	sph_enc32le_aligned(u.tmp + 12, sc->C3);
+	/*
+	 * If elen is zero, then this block actually contains no message
+	 * bit, only the first padding bit.
+	 */
+	if (elen == 0) {
+		sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+	}
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	if (ptr > ((sizeof sc->buf) - 18)) {
+		echo_small_compress(sc);
+		sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+		memset(buf, 0, sizeof sc->buf);
+	}
+	sph_enc16le(buf + (sizeof sc->buf) - 18, out_size_w32 << 5);
+	memcpy(buf + (sizeof sc->buf) - 16, u.tmp, 16);
+	echo_small_compress(sc);
+#if SPH_ECHO_64
+	for (VV = &sc->u.Vb[0][0], k = 0; k < ((out_size_w32 + 1) >> 1); k ++)
+		sph_enc64le_aligned(u.tmp + (k << 3), VV[k]);
+#else
+	for (VV = &sc->u.Vs[0][0], k = 0; k < out_size_w32; k ++)
+		sph_enc32le_aligned(u.tmp + (k << 2), VV[k]);
+#endif
+	memcpy(dst, u.tmp, out_size_w32 << 2);
+	echo_small_init(sc, out_size_w32 << 5);
+}
+
+static void
+echo_big_close(sph_echo_big_context *sc, unsigned ub, unsigned n,
+	void *dst, unsigned out_size_w32)
+{
+	unsigned char *buf;
+	size_t ptr;
+	unsigned z;
+	unsigned elen;
+	union {
+		unsigned char tmp[64];
+		sph_u32 dummy;
+#if SPH_ECHO_64
+		sph_u64 dummy2;
+#endif
+	} u;
+#if SPH_ECHO_64
+	sph_u64 *VV;
+#else
+	sph_u32 *VV;
+#endif
+	unsigned k;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	elen = ((unsigned)ptr << 3) + n;
+	INCR_COUNTER(sc, elen);
+	sph_enc32le_aligned(u.tmp, sc->C0);
+	sph_enc32le_aligned(u.tmp + 4, sc->C1);
+	sph_enc32le_aligned(u.tmp + 8, sc->C2);
+	sph_enc32le_aligned(u.tmp + 12, sc->C3);
+	/*
+	 * If elen is zero, then this block actually contains no message
+	 * bit, only the first padding bit.
+	 */
+	if (elen == 0) {
+		sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+	}
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	if (ptr > ((sizeof sc->buf) - 18)) {
+		echo_big_compress(sc);
+		sc->C0 = sc->C1 = sc->C2 = sc->C3 = 0;
+		memset(buf, 0, sizeof sc->buf);
+	}
+	sph_enc16le(buf + (sizeof sc->buf) - 18, out_size_w32 << 5);
+	memcpy(buf + (sizeof sc->buf) - 16, u.tmp, 16);
+	echo_big_compress(sc);
+#if SPH_ECHO_64
+	for (VV = &sc->u.Vb[0][0], k = 0; k < ((out_size_w32 + 1) >> 1); k ++)
+		sph_enc64le_aligned(u.tmp + (k << 3), VV[k]);
+#else
+	for (VV = &sc->u.Vs[0][0], k = 0; k < out_size_w32; k ++)
+		sph_enc32le_aligned(u.tmp + (k << 2), VV[k]);
+#endif
+	memcpy(dst, u.tmp, out_size_w32 << 2);
+	echo_big_init(sc, out_size_w32 << 5);
+}
+
+/* see sph_echo.h */
+void
+sph_echo224_init(void *cc)
+{
+	echo_small_init(cc, 224);
+}
+
+/* see sph_echo.h */
+void
+sph_echo224(void *cc, const void *data, size_t len)
+{
+	echo_small_core(cc, data, len);
+}
+
+/* see sph_echo.h */
+void
+sph_echo224_close(void *cc, void *dst)
+{
+	echo_small_close(cc, 0, 0, dst, 7);
+}
+
+/* see sph_echo.h */
+void
+sph_echo224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	echo_small_close(cc, ub, n, dst, 7);
+}
+
+/* see sph_echo.h */
+void
+sph_echo256_init(void *cc)
+{
+	echo_small_init(cc, 256);
+}
+
+/* see sph_echo.h */
+void
+sph_echo256(void *cc, const void *data, size_t len)
+{
+	echo_small_core(cc, data, len);
+}
+
+/* see sph_echo.h */
+void
+sph_echo256_close(void *cc, void *dst)
+{
+	echo_small_close(cc, 0, 0, dst, 8);
+}
+
+/* see sph_echo.h */
+void
+sph_echo256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	echo_small_close(cc, ub, n, dst, 8);
+}
+
+/* see sph_echo.h */
+void
+sph_echo384_init(void *cc)
+{
+	echo_big_init(cc, 384);
+}
+
+/* see sph_echo.h */
+void
+sph_echo384(void *cc, const void *data, size_t len)
+{
+	echo_big_core(cc, data, len);
+}
+
+/* see sph_echo.h */
+void
+sph_echo384_close(void *cc, void *dst)
+{
+	echo_big_close(cc, 0, 0, dst, 12);
+}
+
+/* see sph_echo.h */
+void
+sph_echo384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	echo_big_close(cc, ub, n, dst, 12);
+}
+
+/* see sph_echo.h */
+void
+sph_echo512_init(void *cc)
+{
+	echo_big_init(cc, 512);
+}
+
+/* see sph_echo.h */
+void
+sph_echo512(void *cc, const void *data, size_t len)
+{
+	echo_big_core(cc, data, len);
+}
+
+/* see sph_echo.h */
+void
+sph_echo512_close(void *cc, void *dst)
+{
+	echo_big_close(cc, 0, 0, dst, 16);
+}
+
+/* see sph_echo.h */
+void
+sph_echo512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	echo_big_close(cc, ub, n, dst, 16);
+}
+#ifdef __cplusplus
+}
+#endif 
diff --git a/src/crypto/ghostrider/sph_echo.h b/src/crypto/ghostrider/sph_echo.h
new file mode 100644
index 000000000..176d343eb
--- /dev/null
+++ b/src/crypto/ghostrider/sph_echo.h
@@ -0,0 +1,319 @@
+/* $Id: sph_echo.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * ECHO interface. ECHO is a family of functions which differ by
+ * their output size; this implementation defines ECHO for output
+ * sizes 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_echo.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_ECHO_H__
+#define SPH_ECHO_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for ECHO-224.
+ */
+#define SPH_SIZE_echo224   224
+
+/**
+ * Output size (in bits) for ECHO-256.
+ */
+#define SPH_SIZE_echo256   256
+
+/**
+ * Output size (in bits) for ECHO-384.
+ */
+#define SPH_SIZE_echo384   384
+
+/**
+ * Output size (in bits) for ECHO-512.
+ */
+#define SPH_SIZE_echo512   512
+
+/**
+ * This structure is a context for ECHO computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * an ECHO computation has been performed, the context can be reused for
+ * another computation. This specific structure is used for ECHO-224
+ * and ECHO-256.
+ *
+ * The contents of this structure are private. A running ECHO computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[192];    /* first field, for alignment */
+	size_t ptr;
+	union {
+		sph_u32 Vs[4][4];
+#if SPH_64
+		sph_u64 Vb[4][2];
+#endif
+	} u;
+	sph_u32 C0, C1, C2, C3;
+#endif
+} sph_echo_small_context;
+
+/**
+ * This structure is a context for ECHO computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * an ECHO computation has been performed, the context can be reused for
+ * another computation. This specific structure is used for ECHO-384
+ * and ECHO-512.
+ *
+ * The contents of this structure are private. A running ECHO computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	size_t ptr;
+	union {
+		sph_u32 Vs[8][4];
+#if SPH_64
+		sph_u64 Vb[8][2];
+#endif
+	} u;
+	sph_u32 C0, C1, C2, C3;
+#endif
+} sph_echo_big_context;
+
+/**
+ * Type for a ECHO-224 context (identical to the common "small" context).
+ */
+typedef sph_echo_small_context sph_echo224_context;
+
+/**
+ * Type for a ECHO-256 context (identical to the common "small" context).
+ */
+typedef sph_echo_small_context sph_echo256_context;
+
+/**
+ * Type for a ECHO-384 context (identical to the common "big" context).
+ */
+typedef sph_echo_big_context sph_echo384_context;
+
+/**
+ * Type for a ECHO-512 context (identical to the common "big" context).
+ */
+typedef sph_echo_big_context sph_echo512_context;
+
+/**
+ * Initialize an ECHO-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the ECHO-224 context (pointer to a
+ *             <code>sph_echo224_context</code>)
+ */
+void sph_echo224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the ECHO-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_echo224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current ECHO-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the ECHO-224 context
+ * @param dst   the destination buffer
+ */
+void sph_echo224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the ECHO-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_echo224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an ECHO-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the ECHO-256 context (pointer to a
+ *             <code>sph_echo256_context</code>)
+ */
+void sph_echo256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the ECHO-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_echo256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current ECHO-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the ECHO-256 context
+ * @param dst   the destination buffer
+ */
+void sph_echo256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the ECHO-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_echo256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an ECHO-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the ECHO-384 context (pointer to a
+ *             <code>sph_echo384_context</code>)
+ */
+void sph_echo384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the ECHO-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_echo384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current ECHO-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the ECHO-384 context
+ * @param dst   the destination buffer
+ */
+void sph_echo384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the ECHO-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_echo384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an ECHO-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the ECHO-512 context (pointer to a
+ *             <code>sph_echo512_context</code>)
+ */
+void sph_echo512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the ECHO-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_echo512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current ECHO-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the ECHO-512 context
+ * @param dst   the destination buffer
+ */
+void sph_echo512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the ECHO-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_echo512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+	
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/crypto/ghostrider/sph_fugue.c b/src/crypto/ghostrider/sph_fugue.c
new file mode 100644
index 000000000..7d7feafa9
--- /dev/null
+++ b/src/crypto/ghostrider/sph_fugue.c
@@ -0,0 +1,1210 @@
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_fugue.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#define SPH_FUGUE_NOCOPY 1
+
+static const sph_u32 IV224[] = {
+	SPH_C32(0xf4c9120d), SPH_C32(0x6286f757), SPH_C32(0xee39e01c),
+	SPH_C32(0xe074e3cb), SPH_C32(0xa1127c62), SPH_C32(0x9a43d215),
+	SPH_C32(0xbd8d679a)
+};
+
+static const sph_u32 IV256[] = {
+	SPH_C32(0xe952bdde), SPH_C32(0x6671135f), SPH_C32(0xe0d4f668),
+	SPH_C32(0xd2b0b594), SPH_C32(0xf96c621d), SPH_C32(0xfbf929de),
+	SPH_C32(0x9149e899), SPH_C32(0x34f8c248)
+};
+
+static const sph_u32 IV384[] = {
+	SPH_C32(0xaa61ec0d), SPH_C32(0x31252e1f), SPH_C32(0xa01db4c7),
+	SPH_C32(0x00600985), SPH_C32(0x215ef44a), SPH_C32(0x741b5e9c),
+	SPH_C32(0xfa693e9a), SPH_C32(0x473eb040), SPH_C32(0xe502ae8a),
+	SPH_C32(0xa99c25e0), SPH_C32(0xbc95517c), SPH_C32(0x5c1095a1)
+};
+
+static const sph_u32 IV512[] = {
+	SPH_C32(0x8807a57e), SPH_C32(0xe616af75), SPH_C32(0xc5d3e4db),
+	SPH_C32(0xac9ab027), SPH_C32(0xd915f117), SPH_C32(0xb6eecc54),
+	SPH_C32(0x06e8020b), SPH_C32(0x4a92efd1), SPH_C32(0xaac6e2c9),
+	SPH_C32(0xddb21398), SPH_C32(0xcae65838), SPH_C32(0x437f203f),
+	SPH_C32(0x25ea78e7), SPH_C32(0x951fddd6), SPH_C32(0xda6ed11d),
+	SPH_C32(0xe13e3567)
+};
+
+static const sph_u32 mixtab0[] = {
+	SPH_C32(0x63633297), SPH_C32(0x7c7c6feb), SPH_C32(0x77775ec7),
+	SPH_C32(0x7b7b7af7), SPH_C32(0xf2f2e8e5), SPH_C32(0x6b6b0ab7),
+	SPH_C32(0x6f6f16a7), SPH_C32(0xc5c56d39), SPH_C32(0x303090c0),
+	SPH_C32(0x01010704), SPH_C32(0x67672e87), SPH_C32(0x2b2bd1ac),
+	SPH_C32(0xfefeccd5), SPH_C32(0xd7d71371), SPH_C32(0xabab7c9a),
+	SPH_C32(0x767659c3), SPH_C32(0xcaca4005), SPH_C32(0x8282a33e),
+	SPH_C32(0xc9c94909), SPH_C32(0x7d7d68ef), SPH_C32(0xfafad0c5),
+	SPH_C32(0x5959947f), SPH_C32(0x4747ce07), SPH_C32(0xf0f0e6ed),
+	SPH_C32(0xadad6e82), SPH_C32(0xd4d41a7d), SPH_C32(0xa2a243be),
+	SPH_C32(0xafaf608a), SPH_C32(0x9c9cf946), SPH_C32(0xa4a451a6),
+	SPH_C32(0x727245d3), SPH_C32(0xc0c0762d), SPH_C32(0xb7b728ea),
+	SPH_C32(0xfdfdc5d9), SPH_C32(0x9393d47a), SPH_C32(0x2626f298),
+	SPH_C32(0x363682d8), SPH_C32(0x3f3fbdfc), SPH_C32(0xf7f7f3f1),
+	SPH_C32(0xcccc521d), SPH_C32(0x34348cd0), SPH_C32(0xa5a556a2),
+	SPH_C32(0xe5e58db9), SPH_C32(0xf1f1e1e9), SPH_C32(0x71714cdf),
+	SPH_C32(0xd8d83e4d), SPH_C32(0x313197c4), SPH_C32(0x15156b54),
+	SPH_C32(0x04041c10), SPH_C32(0xc7c76331), SPH_C32(0x2323e98c),
+	SPH_C32(0xc3c37f21), SPH_C32(0x18184860), SPH_C32(0x9696cf6e),
+	SPH_C32(0x05051b14), SPH_C32(0x9a9aeb5e), SPH_C32(0x0707151c),
+	SPH_C32(0x12127e48), SPH_C32(0x8080ad36), SPH_C32(0xe2e298a5),
+	SPH_C32(0xebeba781), SPH_C32(0x2727f59c), SPH_C32(0xb2b233fe),
+	SPH_C32(0x757550cf), SPH_C32(0x09093f24), SPH_C32(0x8383a43a),
+	SPH_C32(0x2c2cc4b0), SPH_C32(0x1a1a4668), SPH_C32(0x1b1b416c),
+	SPH_C32(0x6e6e11a3), SPH_C32(0x5a5a9d73), SPH_C32(0xa0a04db6),
+	SPH_C32(0x5252a553), SPH_C32(0x3b3ba1ec), SPH_C32(0xd6d61475),
+	SPH_C32(0xb3b334fa), SPH_C32(0x2929dfa4), SPH_C32(0xe3e39fa1),
+	SPH_C32(0x2f2fcdbc), SPH_C32(0x8484b126), SPH_C32(0x5353a257),
+	SPH_C32(0xd1d10169), SPH_C32(0x00000000), SPH_C32(0xededb599),
+	SPH_C32(0x2020e080), SPH_C32(0xfcfcc2dd), SPH_C32(0xb1b13af2),
+	SPH_C32(0x5b5b9a77), SPH_C32(0x6a6a0db3), SPH_C32(0xcbcb4701),
+	SPH_C32(0xbebe17ce), SPH_C32(0x3939afe4), SPH_C32(0x4a4aed33),
+	SPH_C32(0x4c4cff2b), SPH_C32(0x5858937b), SPH_C32(0xcfcf5b11),
+	SPH_C32(0xd0d0066d), SPH_C32(0xefefbb91), SPH_C32(0xaaaa7b9e),
+	SPH_C32(0xfbfbd7c1), SPH_C32(0x4343d217), SPH_C32(0x4d4df82f),
+	SPH_C32(0x333399cc), SPH_C32(0x8585b622), SPH_C32(0x4545c00f),
+	SPH_C32(0xf9f9d9c9), SPH_C32(0x02020e08), SPH_C32(0x7f7f66e7),
+	SPH_C32(0x5050ab5b), SPH_C32(0x3c3cb4f0), SPH_C32(0x9f9ff04a),
+	SPH_C32(0xa8a87596), SPH_C32(0x5151ac5f), SPH_C32(0xa3a344ba),
+	SPH_C32(0x4040db1b), SPH_C32(0x8f8f800a), SPH_C32(0x9292d37e),
+	SPH_C32(0x9d9dfe42), SPH_C32(0x3838a8e0), SPH_C32(0xf5f5fdf9),
+	SPH_C32(0xbcbc19c6), SPH_C32(0xb6b62fee), SPH_C32(0xdada3045),
+	SPH_C32(0x2121e784), SPH_C32(0x10107040), SPH_C32(0xffffcbd1),
+	SPH_C32(0xf3f3efe1), SPH_C32(0xd2d20865), SPH_C32(0xcdcd5519),
+	SPH_C32(0x0c0c2430), SPH_C32(0x1313794c), SPH_C32(0xececb29d),
+	SPH_C32(0x5f5f8667), SPH_C32(0x9797c86a), SPH_C32(0x4444c70b),
+	SPH_C32(0x1717655c), SPH_C32(0xc4c46a3d), SPH_C32(0xa7a758aa),
+	SPH_C32(0x7e7e61e3), SPH_C32(0x3d3db3f4), SPH_C32(0x6464278b),
+	SPH_C32(0x5d5d886f), SPH_C32(0x19194f64), SPH_C32(0x737342d7),
+	SPH_C32(0x60603b9b), SPH_C32(0x8181aa32), SPH_C32(0x4f4ff627),
+	SPH_C32(0xdcdc225d), SPH_C32(0x2222ee88), SPH_C32(0x2a2ad6a8),
+	SPH_C32(0x9090dd76), SPH_C32(0x88889516), SPH_C32(0x4646c903),
+	SPH_C32(0xeeeebc95), SPH_C32(0xb8b805d6), SPH_C32(0x14146c50),
+	SPH_C32(0xdede2c55), SPH_C32(0x5e5e8163), SPH_C32(0x0b0b312c),
+	SPH_C32(0xdbdb3741), SPH_C32(0xe0e096ad), SPH_C32(0x32329ec8),
+	SPH_C32(0x3a3aa6e8), SPH_C32(0x0a0a3628), SPH_C32(0x4949e43f),
+	SPH_C32(0x06061218), SPH_C32(0x2424fc90), SPH_C32(0x5c5c8f6b),
+	SPH_C32(0xc2c27825), SPH_C32(0xd3d30f61), SPH_C32(0xacac6986),
+	SPH_C32(0x62623593), SPH_C32(0x9191da72), SPH_C32(0x9595c662),
+	SPH_C32(0xe4e48abd), SPH_C32(0x797974ff), SPH_C32(0xe7e783b1),
+	SPH_C32(0xc8c84e0d), SPH_C32(0x373785dc), SPH_C32(0x6d6d18af),
+	SPH_C32(0x8d8d8e02), SPH_C32(0xd5d51d79), SPH_C32(0x4e4ef123),
+	SPH_C32(0xa9a97292), SPH_C32(0x6c6c1fab), SPH_C32(0x5656b943),
+	SPH_C32(0xf4f4fafd), SPH_C32(0xeaeaa085), SPH_C32(0x6565208f),
+	SPH_C32(0x7a7a7df3), SPH_C32(0xaeae678e), SPH_C32(0x08083820),
+	SPH_C32(0xbaba0bde), SPH_C32(0x787873fb), SPH_C32(0x2525fb94),
+	SPH_C32(0x2e2ecab8), SPH_C32(0x1c1c5470), SPH_C32(0xa6a65fae),
+	SPH_C32(0xb4b421e6), SPH_C32(0xc6c66435), SPH_C32(0xe8e8ae8d),
+	SPH_C32(0xdddd2559), SPH_C32(0x747457cb), SPH_C32(0x1f1f5d7c),
+	SPH_C32(0x4b4bea37), SPH_C32(0xbdbd1ec2), SPH_C32(0x8b8b9c1a),
+	SPH_C32(0x8a8a9b1e), SPH_C32(0x70704bdb), SPH_C32(0x3e3ebaf8),
+	SPH_C32(0xb5b526e2), SPH_C32(0x66662983), SPH_C32(0x4848e33b),
+	SPH_C32(0x0303090c), SPH_C32(0xf6f6f4f5), SPH_C32(0x0e0e2a38),
+	SPH_C32(0x61613c9f), SPH_C32(0x35358bd4), SPH_C32(0x5757be47),
+	SPH_C32(0xb9b902d2), SPH_C32(0x8686bf2e), SPH_C32(0xc1c17129),
+	SPH_C32(0x1d1d5374), SPH_C32(0x9e9ef74e), SPH_C32(0xe1e191a9),
+	SPH_C32(0xf8f8decd), SPH_C32(0x9898e556), SPH_C32(0x11117744),
+	SPH_C32(0x696904bf), SPH_C32(0xd9d93949), SPH_C32(0x8e8e870e),
+	SPH_C32(0x9494c166), SPH_C32(0x9b9bec5a), SPH_C32(0x1e1e5a78),
+	SPH_C32(0x8787b82a), SPH_C32(0xe9e9a989), SPH_C32(0xcece5c15),
+	SPH_C32(0x5555b04f), SPH_C32(0x2828d8a0), SPH_C32(0xdfdf2b51),
+	SPH_C32(0x8c8c8906), SPH_C32(0xa1a14ab2), SPH_C32(0x89899212),
+	SPH_C32(0x0d0d2334), SPH_C32(0xbfbf10ca), SPH_C32(0xe6e684b5),
+	SPH_C32(0x4242d513), SPH_C32(0x686803bb), SPH_C32(0x4141dc1f),
+	SPH_C32(0x9999e252), SPH_C32(0x2d2dc3b4), SPH_C32(0x0f0f2d3c),
+	SPH_C32(0xb0b03df6), SPH_C32(0x5454b74b), SPH_C32(0xbbbb0cda),
+	SPH_C32(0x16166258)
+};
+
+static const sph_u32 mixtab1[] = {
+	SPH_C32(0x97636332), SPH_C32(0xeb7c7c6f), SPH_C32(0xc777775e),
+	SPH_C32(0xf77b7b7a), SPH_C32(0xe5f2f2e8), SPH_C32(0xb76b6b0a),
+	SPH_C32(0xa76f6f16), SPH_C32(0x39c5c56d), SPH_C32(0xc0303090),
+	SPH_C32(0x04010107), SPH_C32(0x8767672e), SPH_C32(0xac2b2bd1),
+	SPH_C32(0xd5fefecc), SPH_C32(0x71d7d713), SPH_C32(0x9aabab7c),
+	SPH_C32(0xc3767659), SPH_C32(0x05caca40), SPH_C32(0x3e8282a3),
+	SPH_C32(0x09c9c949), SPH_C32(0xef7d7d68), SPH_C32(0xc5fafad0),
+	SPH_C32(0x7f595994), SPH_C32(0x074747ce), SPH_C32(0xedf0f0e6),
+	SPH_C32(0x82adad6e), SPH_C32(0x7dd4d41a), SPH_C32(0xbea2a243),
+	SPH_C32(0x8aafaf60), SPH_C32(0x469c9cf9), SPH_C32(0xa6a4a451),
+	SPH_C32(0xd3727245), SPH_C32(0x2dc0c076), SPH_C32(0xeab7b728),
+	SPH_C32(0xd9fdfdc5), SPH_C32(0x7a9393d4), SPH_C32(0x982626f2),
+	SPH_C32(0xd8363682), SPH_C32(0xfc3f3fbd), SPH_C32(0xf1f7f7f3),
+	SPH_C32(0x1dcccc52), SPH_C32(0xd034348c), SPH_C32(0xa2a5a556),
+	SPH_C32(0xb9e5e58d), SPH_C32(0xe9f1f1e1), SPH_C32(0xdf71714c),
+	SPH_C32(0x4dd8d83e), SPH_C32(0xc4313197), SPH_C32(0x5415156b),
+	SPH_C32(0x1004041c), SPH_C32(0x31c7c763), SPH_C32(0x8c2323e9),
+	SPH_C32(0x21c3c37f), SPH_C32(0x60181848), SPH_C32(0x6e9696cf),
+	SPH_C32(0x1405051b), SPH_C32(0x5e9a9aeb), SPH_C32(0x1c070715),
+	SPH_C32(0x4812127e), SPH_C32(0x368080ad), SPH_C32(0xa5e2e298),
+	SPH_C32(0x81ebeba7), SPH_C32(0x9c2727f5), SPH_C32(0xfeb2b233),
+	SPH_C32(0xcf757550), SPH_C32(0x2409093f), SPH_C32(0x3a8383a4),
+	SPH_C32(0xb02c2cc4), SPH_C32(0x681a1a46), SPH_C32(0x6c1b1b41),
+	SPH_C32(0xa36e6e11), SPH_C32(0x735a5a9d), SPH_C32(0xb6a0a04d),
+	SPH_C32(0x535252a5), SPH_C32(0xec3b3ba1), SPH_C32(0x75d6d614),
+	SPH_C32(0xfab3b334), SPH_C32(0xa42929df), SPH_C32(0xa1e3e39f),
+	SPH_C32(0xbc2f2fcd), SPH_C32(0x268484b1), SPH_C32(0x575353a2),
+	SPH_C32(0x69d1d101), SPH_C32(0x00000000), SPH_C32(0x99ededb5),
+	SPH_C32(0x802020e0), SPH_C32(0xddfcfcc2), SPH_C32(0xf2b1b13a),
+	SPH_C32(0x775b5b9a), SPH_C32(0xb36a6a0d), SPH_C32(0x01cbcb47),
+	SPH_C32(0xcebebe17), SPH_C32(0xe43939af), SPH_C32(0x334a4aed),
+	SPH_C32(0x2b4c4cff), SPH_C32(0x7b585893), SPH_C32(0x11cfcf5b),
+	SPH_C32(0x6dd0d006), SPH_C32(0x91efefbb), SPH_C32(0x9eaaaa7b),
+	SPH_C32(0xc1fbfbd7), SPH_C32(0x174343d2), SPH_C32(0x2f4d4df8),
+	SPH_C32(0xcc333399), SPH_C32(0x228585b6), SPH_C32(0x0f4545c0),
+	SPH_C32(0xc9f9f9d9), SPH_C32(0x0802020e), SPH_C32(0xe77f7f66),
+	SPH_C32(0x5b5050ab), SPH_C32(0xf03c3cb4), SPH_C32(0x4a9f9ff0),
+	SPH_C32(0x96a8a875), SPH_C32(0x5f5151ac), SPH_C32(0xbaa3a344),
+	SPH_C32(0x1b4040db), SPH_C32(0x0a8f8f80), SPH_C32(0x7e9292d3),
+	SPH_C32(0x429d9dfe), SPH_C32(0xe03838a8), SPH_C32(0xf9f5f5fd),
+	SPH_C32(0xc6bcbc19), SPH_C32(0xeeb6b62f), SPH_C32(0x45dada30),
+	SPH_C32(0x842121e7), SPH_C32(0x40101070), SPH_C32(0xd1ffffcb),
+	SPH_C32(0xe1f3f3ef), SPH_C32(0x65d2d208), SPH_C32(0x19cdcd55),
+	SPH_C32(0x300c0c24), SPH_C32(0x4c131379), SPH_C32(0x9dececb2),
+	SPH_C32(0x675f5f86), SPH_C32(0x6a9797c8), SPH_C32(0x0b4444c7),
+	SPH_C32(0x5c171765), SPH_C32(0x3dc4c46a), SPH_C32(0xaaa7a758),
+	SPH_C32(0xe37e7e61), SPH_C32(0xf43d3db3), SPH_C32(0x8b646427),
+	SPH_C32(0x6f5d5d88), SPH_C32(0x6419194f), SPH_C32(0xd7737342),
+	SPH_C32(0x9b60603b), SPH_C32(0x328181aa), SPH_C32(0x274f4ff6),
+	SPH_C32(0x5ddcdc22), SPH_C32(0x882222ee), SPH_C32(0xa82a2ad6),
+	SPH_C32(0x769090dd), SPH_C32(0x16888895), SPH_C32(0x034646c9),
+	SPH_C32(0x95eeeebc), SPH_C32(0xd6b8b805), SPH_C32(0x5014146c),
+	SPH_C32(0x55dede2c), SPH_C32(0x635e5e81), SPH_C32(0x2c0b0b31),
+	SPH_C32(0x41dbdb37), SPH_C32(0xade0e096), SPH_C32(0xc832329e),
+	SPH_C32(0xe83a3aa6), SPH_C32(0x280a0a36), SPH_C32(0x3f4949e4),
+	SPH_C32(0x18060612), SPH_C32(0x902424fc), SPH_C32(0x6b5c5c8f),
+	SPH_C32(0x25c2c278), SPH_C32(0x61d3d30f), SPH_C32(0x86acac69),
+	SPH_C32(0x93626235), SPH_C32(0x729191da), SPH_C32(0x629595c6),
+	SPH_C32(0xbde4e48a), SPH_C32(0xff797974), SPH_C32(0xb1e7e783),
+	SPH_C32(0x0dc8c84e), SPH_C32(0xdc373785), SPH_C32(0xaf6d6d18),
+	SPH_C32(0x028d8d8e), SPH_C32(0x79d5d51d), SPH_C32(0x234e4ef1),
+	SPH_C32(0x92a9a972), SPH_C32(0xab6c6c1f), SPH_C32(0x435656b9),
+	SPH_C32(0xfdf4f4fa), SPH_C32(0x85eaeaa0), SPH_C32(0x8f656520),
+	SPH_C32(0xf37a7a7d), SPH_C32(0x8eaeae67), SPH_C32(0x20080838),
+	SPH_C32(0xdebaba0b), SPH_C32(0xfb787873), SPH_C32(0x942525fb),
+	SPH_C32(0xb82e2eca), SPH_C32(0x701c1c54), SPH_C32(0xaea6a65f),
+	SPH_C32(0xe6b4b421), SPH_C32(0x35c6c664), SPH_C32(0x8de8e8ae),
+	SPH_C32(0x59dddd25), SPH_C32(0xcb747457), SPH_C32(0x7c1f1f5d),
+	SPH_C32(0x374b4bea), SPH_C32(0xc2bdbd1e), SPH_C32(0x1a8b8b9c),
+	SPH_C32(0x1e8a8a9b), SPH_C32(0xdb70704b), SPH_C32(0xf83e3eba),
+	SPH_C32(0xe2b5b526), SPH_C32(0x83666629), SPH_C32(0x3b4848e3),
+	SPH_C32(0x0c030309), SPH_C32(0xf5f6f6f4), SPH_C32(0x380e0e2a),
+	SPH_C32(0x9f61613c), SPH_C32(0xd435358b), SPH_C32(0x475757be),
+	SPH_C32(0xd2b9b902), SPH_C32(0x2e8686bf), SPH_C32(0x29c1c171),
+	SPH_C32(0x741d1d53), SPH_C32(0x4e9e9ef7), SPH_C32(0xa9e1e191),
+	SPH_C32(0xcdf8f8de), SPH_C32(0x569898e5), SPH_C32(0x44111177),
+	SPH_C32(0xbf696904), SPH_C32(0x49d9d939), SPH_C32(0x0e8e8e87),
+	SPH_C32(0x669494c1), SPH_C32(0x5a9b9bec), SPH_C32(0x781e1e5a),
+	SPH_C32(0x2a8787b8), SPH_C32(0x89e9e9a9), SPH_C32(0x15cece5c),
+	SPH_C32(0x4f5555b0), SPH_C32(0xa02828d8), SPH_C32(0x51dfdf2b),
+	SPH_C32(0x068c8c89), SPH_C32(0xb2a1a14a), SPH_C32(0x12898992),
+	SPH_C32(0x340d0d23), SPH_C32(0xcabfbf10), SPH_C32(0xb5e6e684),
+	SPH_C32(0x134242d5), SPH_C32(0xbb686803), SPH_C32(0x1f4141dc),
+	SPH_C32(0x529999e2), SPH_C32(0xb42d2dc3), SPH_C32(0x3c0f0f2d),
+	SPH_C32(0xf6b0b03d), SPH_C32(0x4b5454b7), SPH_C32(0xdabbbb0c),
+	SPH_C32(0x58161662)
+};
+
+static const sph_u32 mixtab2[] = {
+	SPH_C32(0x32976363), SPH_C32(0x6feb7c7c), SPH_C32(0x5ec77777),
+	SPH_C32(0x7af77b7b), SPH_C32(0xe8e5f2f2), SPH_C32(0x0ab76b6b),
+	SPH_C32(0x16a76f6f), SPH_C32(0x6d39c5c5), SPH_C32(0x90c03030),
+	SPH_C32(0x07040101), SPH_C32(0x2e876767), SPH_C32(0xd1ac2b2b),
+	SPH_C32(0xccd5fefe), SPH_C32(0x1371d7d7), SPH_C32(0x7c9aabab),
+	SPH_C32(0x59c37676), SPH_C32(0x4005caca), SPH_C32(0xa33e8282),
+	SPH_C32(0x4909c9c9), SPH_C32(0x68ef7d7d), SPH_C32(0xd0c5fafa),
+	SPH_C32(0x947f5959), SPH_C32(0xce074747), SPH_C32(0xe6edf0f0),
+	SPH_C32(0x6e82adad), SPH_C32(0x1a7dd4d4), SPH_C32(0x43bea2a2),
+	SPH_C32(0x608aafaf), SPH_C32(0xf9469c9c), SPH_C32(0x51a6a4a4),
+	SPH_C32(0x45d37272), SPH_C32(0x762dc0c0), SPH_C32(0x28eab7b7),
+	SPH_C32(0xc5d9fdfd), SPH_C32(0xd47a9393), SPH_C32(0xf2982626),
+	SPH_C32(0x82d83636), SPH_C32(0xbdfc3f3f), SPH_C32(0xf3f1f7f7),
+	SPH_C32(0x521dcccc), SPH_C32(0x8cd03434), SPH_C32(0x56a2a5a5),
+	SPH_C32(0x8db9e5e5), SPH_C32(0xe1e9f1f1), SPH_C32(0x4cdf7171),
+	SPH_C32(0x3e4dd8d8), SPH_C32(0x97c43131), SPH_C32(0x6b541515),
+	SPH_C32(0x1c100404), SPH_C32(0x6331c7c7), SPH_C32(0xe98c2323),
+	SPH_C32(0x7f21c3c3), SPH_C32(0x48601818), SPH_C32(0xcf6e9696),
+	SPH_C32(0x1b140505), SPH_C32(0xeb5e9a9a), SPH_C32(0x151c0707),
+	SPH_C32(0x7e481212), SPH_C32(0xad368080), SPH_C32(0x98a5e2e2),
+	SPH_C32(0xa781ebeb), SPH_C32(0xf59c2727), SPH_C32(0x33feb2b2),
+	SPH_C32(0x50cf7575), SPH_C32(0x3f240909), SPH_C32(0xa43a8383),
+	SPH_C32(0xc4b02c2c), SPH_C32(0x46681a1a), SPH_C32(0x416c1b1b),
+	SPH_C32(0x11a36e6e), SPH_C32(0x9d735a5a), SPH_C32(0x4db6a0a0),
+	SPH_C32(0xa5535252), SPH_C32(0xa1ec3b3b), SPH_C32(0x1475d6d6),
+	SPH_C32(0x34fab3b3), SPH_C32(0xdfa42929), SPH_C32(0x9fa1e3e3),
+	SPH_C32(0xcdbc2f2f), SPH_C32(0xb1268484), SPH_C32(0xa2575353),
+	SPH_C32(0x0169d1d1), SPH_C32(0x00000000), SPH_C32(0xb599eded),
+	SPH_C32(0xe0802020), SPH_C32(0xc2ddfcfc), SPH_C32(0x3af2b1b1),
+	SPH_C32(0x9a775b5b), SPH_C32(0x0db36a6a), SPH_C32(0x4701cbcb),
+	SPH_C32(0x17cebebe), SPH_C32(0xafe43939), SPH_C32(0xed334a4a),
+	SPH_C32(0xff2b4c4c), SPH_C32(0x937b5858), SPH_C32(0x5b11cfcf),
+	SPH_C32(0x066dd0d0), SPH_C32(0xbb91efef), SPH_C32(0x7b9eaaaa),
+	SPH_C32(0xd7c1fbfb), SPH_C32(0xd2174343), SPH_C32(0xf82f4d4d),
+	SPH_C32(0x99cc3333), SPH_C32(0xb6228585), SPH_C32(0xc00f4545),
+	SPH_C32(0xd9c9f9f9), SPH_C32(0x0e080202), SPH_C32(0x66e77f7f),
+	SPH_C32(0xab5b5050), SPH_C32(0xb4f03c3c), SPH_C32(0xf04a9f9f),
+	SPH_C32(0x7596a8a8), SPH_C32(0xac5f5151), SPH_C32(0x44baa3a3),
+	SPH_C32(0xdb1b4040), SPH_C32(0x800a8f8f), SPH_C32(0xd37e9292),
+	SPH_C32(0xfe429d9d), SPH_C32(0xa8e03838), SPH_C32(0xfdf9f5f5),
+	SPH_C32(0x19c6bcbc), SPH_C32(0x2feeb6b6), SPH_C32(0x3045dada),
+	SPH_C32(0xe7842121), SPH_C32(0x70401010), SPH_C32(0xcbd1ffff),
+	SPH_C32(0xefe1f3f3), SPH_C32(0x0865d2d2), SPH_C32(0x5519cdcd),
+	SPH_C32(0x24300c0c), SPH_C32(0x794c1313), SPH_C32(0xb29decec),
+	SPH_C32(0x86675f5f), SPH_C32(0xc86a9797), SPH_C32(0xc70b4444),
+	SPH_C32(0x655c1717), SPH_C32(0x6a3dc4c4), SPH_C32(0x58aaa7a7),
+	SPH_C32(0x61e37e7e), SPH_C32(0xb3f43d3d), SPH_C32(0x278b6464),
+	SPH_C32(0x886f5d5d), SPH_C32(0x4f641919), SPH_C32(0x42d77373),
+	SPH_C32(0x3b9b6060), SPH_C32(0xaa328181), SPH_C32(0xf6274f4f),
+	SPH_C32(0x225ddcdc), SPH_C32(0xee882222), SPH_C32(0xd6a82a2a),
+	SPH_C32(0xdd769090), SPH_C32(0x95168888), SPH_C32(0xc9034646),
+	SPH_C32(0xbc95eeee), SPH_C32(0x05d6b8b8), SPH_C32(0x6c501414),
+	SPH_C32(0x2c55dede), SPH_C32(0x81635e5e), SPH_C32(0x312c0b0b),
+	SPH_C32(0x3741dbdb), SPH_C32(0x96ade0e0), SPH_C32(0x9ec83232),
+	SPH_C32(0xa6e83a3a), SPH_C32(0x36280a0a), SPH_C32(0xe43f4949),
+	SPH_C32(0x12180606), SPH_C32(0xfc902424), SPH_C32(0x8f6b5c5c),
+	SPH_C32(0x7825c2c2), SPH_C32(0x0f61d3d3), SPH_C32(0x6986acac),
+	SPH_C32(0x35936262), SPH_C32(0xda729191), SPH_C32(0xc6629595),
+	SPH_C32(0x8abde4e4), SPH_C32(0x74ff7979), SPH_C32(0x83b1e7e7),
+	SPH_C32(0x4e0dc8c8), SPH_C32(0x85dc3737), SPH_C32(0x18af6d6d),
+	SPH_C32(0x8e028d8d), SPH_C32(0x1d79d5d5), SPH_C32(0xf1234e4e),
+	SPH_C32(0x7292a9a9), SPH_C32(0x1fab6c6c), SPH_C32(0xb9435656),
+	SPH_C32(0xfafdf4f4), SPH_C32(0xa085eaea), SPH_C32(0x208f6565),
+	SPH_C32(0x7df37a7a), SPH_C32(0x678eaeae), SPH_C32(0x38200808),
+	SPH_C32(0x0bdebaba), SPH_C32(0x73fb7878), SPH_C32(0xfb942525),
+	SPH_C32(0xcab82e2e), SPH_C32(0x54701c1c), SPH_C32(0x5faea6a6),
+	SPH_C32(0x21e6b4b4), SPH_C32(0x6435c6c6), SPH_C32(0xae8de8e8),
+	SPH_C32(0x2559dddd), SPH_C32(0x57cb7474), SPH_C32(0x5d7c1f1f),
+	SPH_C32(0xea374b4b), SPH_C32(0x1ec2bdbd), SPH_C32(0x9c1a8b8b),
+	SPH_C32(0x9b1e8a8a), SPH_C32(0x4bdb7070), SPH_C32(0xbaf83e3e),
+	SPH_C32(0x26e2b5b5), SPH_C32(0x29836666), SPH_C32(0xe33b4848),
+	SPH_C32(0x090c0303), SPH_C32(0xf4f5f6f6), SPH_C32(0x2a380e0e),
+	SPH_C32(0x3c9f6161), SPH_C32(0x8bd43535), SPH_C32(0xbe475757),
+	SPH_C32(0x02d2b9b9), SPH_C32(0xbf2e8686), SPH_C32(0x7129c1c1),
+	SPH_C32(0x53741d1d), SPH_C32(0xf74e9e9e), SPH_C32(0x91a9e1e1),
+	SPH_C32(0xdecdf8f8), SPH_C32(0xe5569898), SPH_C32(0x77441111),
+	SPH_C32(0x04bf6969), SPH_C32(0x3949d9d9), SPH_C32(0x870e8e8e),
+	SPH_C32(0xc1669494), SPH_C32(0xec5a9b9b), SPH_C32(0x5a781e1e),
+	SPH_C32(0xb82a8787), SPH_C32(0xa989e9e9), SPH_C32(0x5c15cece),
+	SPH_C32(0xb04f5555), SPH_C32(0xd8a02828), SPH_C32(0x2b51dfdf),
+	SPH_C32(0x89068c8c), SPH_C32(0x4ab2a1a1), SPH_C32(0x92128989),
+	SPH_C32(0x23340d0d), SPH_C32(0x10cabfbf), SPH_C32(0x84b5e6e6),
+	SPH_C32(0xd5134242), SPH_C32(0x03bb6868), SPH_C32(0xdc1f4141),
+	SPH_C32(0xe2529999), SPH_C32(0xc3b42d2d), SPH_C32(0x2d3c0f0f),
+	SPH_C32(0x3df6b0b0), SPH_C32(0xb74b5454), SPH_C32(0x0cdabbbb),
+	SPH_C32(0x62581616)
+};
+
+static const sph_u32 mixtab3[] = {
+	SPH_C32(0x63329763), SPH_C32(0x7c6feb7c), SPH_C32(0x775ec777),
+	SPH_C32(0x7b7af77b), SPH_C32(0xf2e8e5f2), SPH_C32(0x6b0ab76b),
+	SPH_C32(0x6f16a76f), SPH_C32(0xc56d39c5), SPH_C32(0x3090c030),
+	SPH_C32(0x01070401), SPH_C32(0x672e8767), SPH_C32(0x2bd1ac2b),
+	SPH_C32(0xfeccd5fe), SPH_C32(0xd71371d7), SPH_C32(0xab7c9aab),
+	SPH_C32(0x7659c376), SPH_C32(0xca4005ca), SPH_C32(0x82a33e82),
+	SPH_C32(0xc94909c9), SPH_C32(0x7d68ef7d), SPH_C32(0xfad0c5fa),
+	SPH_C32(0x59947f59), SPH_C32(0x47ce0747), SPH_C32(0xf0e6edf0),
+	SPH_C32(0xad6e82ad), SPH_C32(0xd41a7dd4), SPH_C32(0xa243bea2),
+	SPH_C32(0xaf608aaf), SPH_C32(0x9cf9469c), SPH_C32(0xa451a6a4),
+	SPH_C32(0x7245d372), SPH_C32(0xc0762dc0), SPH_C32(0xb728eab7),
+	SPH_C32(0xfdc5d9fd), SPH_C32(0x93d47a93), SPH_C32(0x26f29826),
+	SPH_C32(0x3682d836), SPH_C32(0x3fbdfc3f), SPH_C32(0xf7f3f1f7),
+	SPH_C32(0xcc521dcc), SPH_C32(0x348cd034), SPH_C32(0xa556a2a5),
+	SPH_C32(0xe58db9e5), SPH_C32(0xf1e1e9f1), SPH_C32(0x714cdf71),
+	SPH_C32(0xd83e4dd8), SPH_C32(0x3197c431), SPH_C32(0x156b5415),
+	SPH_C32(0x041c1004), SPH_C32(0xc76331c7), SPH_C32(0x23e98c23),
+	SPH_C32(0xc37f21c3), SPH_C32(0x18486018), SPH_C32(0x96cf6e96),
+	SPH_C32(0x051b1405), SPH_C32(0x9aeb5e9a), SPH_C32(0x07151c07),
+	SPH_C32(0x127e4812), SPH_C32(0x80ad3680), SPH_C32(0xe298a5e2),
+	SPH_C32(0xeba781eb), SPH_C32(0x27f59c27), SPH_C32(0xb233feb2),
+	SPH_C32(0x7550cf75), SPH_C32(0x093f2409), SPH_C32(0x83a43a83),
+	SPH_C32(0x2cc4b02c), SPH_C32(0x1a46681a), SPH_C32(0x1b416c1b),
+	SPH_C32(0x6e11a36e), SPH_C32(0x5a9d735a), SPH_C32(0xa04db6a0),
+	SPH_C32(0x52a55352), SPH_C32(0x3ba1ec3b), SPH_C32(0xd61475d6),
+	SPH_C32(0xb334fab3), SPH_C32(0x29dfa429), SPH_C32(0xe39fa1e3),
+	SPH_C32(0x2fcdbc2f), SPH_C32(0x84b12684), SPH_C32(0x53a25753),
+	SPH_C32(0xd10169d1), SPH_C32(0x00000000), SPH_C32(0xedb599ed),
+	SPH_C32(0x20e08020), SPH_C32(0xfcc2ddfc), SPH_C32(0xb13af2b1),
+	SPH_C32(0x5b9a775b), SPH_C32(0x6a0db36a), SPH_C32(0xcb4701cb),
+	SPH_C32(0xbe17cebe), SPH_C32(0x39afe439), SPH_C32(0x4aed334a),
+	SPH_C32(0x4cff2b4c), SPH_C32(0x58937b58), SPH_C32(0xcf5b11cf),
+	SPH_C32(0xd0066dd0), SPH_C32(0xefbb91ef), SPH_C32(0xaa7b9eaa),
+	SPH_C32(0xfbd7c1fb), SPH_C32(0x43d21743), SPH_C32(0x4df82f4d),
+	SPH_C32(0x3399cc33), SPH_C32(0x85b62285), SPH_C32(0x45c00f45),
+	SPH_C32(0xf9d9c9f9), SPH_C32(0x020e0802), SPH_C32(0x7f66e77f),
+	SPH_C32(0x50ab5b50), SPH_C32(0x3cb4f03c), SPH_C32(0x9ff04a9f),
+	SPH_C32(0xa87596a8), SPH_C32(0x51ac5f51), SPH_C32(0xa344baa3),
+	SPH_C32(0x40db1b40), SPH_C32(0x8f800a8f), SPH_C32(0x92d37e92),
+	SPH_C32(0x9dfe429d), SPH_C32(0x38a8e038), SPH_C32(0xf5fdf9f5),
+	SPH_C32(0xbc19c6bc), SPH_C32(0xb62feeb6), SPH_C32(0xda3045da),
+	SPH_C32(0x21e78421), SPH_C32(0x10704010), SPH_C32(0xffcbd1ff),
+	SPH_C32(0xf3efe1f3), SPH_C32(0xd20865d2), SPH_C32(0xcd5519cd),
+	SPH_C32(0x0c24300c), SPH_C32(0x13794c13), SPH_C32(0xecb29dec),
+	SPH_C32(0x5f86675f), SPH_C32(0x97c86a97), SPH_C32(0x44c70b44),
+	SPH_C32(0x17655c17), SPH_C32(0xc46a3dc4), SPH_C32(0xa758aaa7),
+	SPH_C32(0x7e61e37e), SPH_C32(0x3db3f43d), SPH_C32(0x64278b64),
+	SPH_C32(0x5d886f5d), SPH_C32(0x194f6419), SPH_C32(0x7342d773),
+	SPH_C32(0x603b9b60), SPH_C32(0x81aa3281), SPH_C32(0x4ff6274f),
+	SPH_C32(0xdc225ddc), SPH_C32(0x22ee8822), SPH_C32(0x2ad6a82a),
+	SPH_C32(0x90dd7690), SPH_C32(0x88951688), SPH_C32(0x46c90346),
+	SPH_C32(0xeebc95ee), SPH_C32(0xb805d6b8), SPH_C32(0x146c5014),
+	SPH_C32(0xde2c55de), SPH_C32(0x5e81635e), SPH_C32(0x0b312c0b),
+	SPH_C32(0xdb3741db), SPH_C32(0xe096ade0), SPH_C32(0x329ec832),
+	SPH_C32(0x3aa6e83a), SPH_C32(0x0a36280a), SPH_C32(0x49e43f49),
+	SPH_C32(0x06121806), SPH_C32(0x24fc9024), SPH_C32(0x5c8f6b5c),
+	SPH_C32(0xc27825c2), SPH_C32(0xd30f61d3), SPH_C32(0xac6986ac),
+	SPH_C32(0x62359362), SPH_C32(0x91da7291), SPH_C32(0x95c66295),
+	SPH_C32(0xe48abde4), SPH_C32(0x7974ff79), SPH_C32(0xe783b1e7),
+	SPH_C32(0xc84e0dc8), SPH_C32(0x3785dc37), SPH_C32(0x6d18af6d),
+	SPH_C32(0x8d8e028d), SPH_C32(0xd51d79d5), SPH_C32(0x4ef1234e),
+	SPH_C32(0xa97292a9), SPH_C32(0x6c1fab6c), SPH_C32(0x56b94356),
+	SPH_C32(0xf4fafdf4), SPH_C32(0xeaa085ea), SPH_C32(0x65208f65),
+	SPH_C32(0x7a7df37a), SPH_C32(0xae678eae), SPH_C32(0x08382008),
+	SPH_C32(0xba0bdeba), SPH_C32(0x7873fb78), SPH_C32(0x25fb9425),
+	SPH_C32(0x2ecab82e), SPH_C32(0x1c54701c), SPH_C32(0xa65faea6),
+	SPH_C32(0xb421e6b4), SPH_C32(0xc66435c6), SPH_C32(0xe8ae8de8),
+	SPH_C32(0xdd2559dd), SPH_C32(0x7457cb74), SPH_C32(0x1f5d7c1f),
+	SPH_C32(0x4bea374b), SPH_C32(0xbd1ec2bd), SPH_C32(0x8b9c1a8b),
+	SPH_C32(0x8a9b1e8a), SPH_C32(0x704bdb70), SPH_C32(0x3ebaf83e),
+	SPH_C32(0xb526e2b5), SPH_C32(0x66298366), SPH_C32(0x48e33b48),
+	SPH_C32(0x03090c03), SPH_C32(0xf6f4f5f6), SPH_C32(0x0e2a380e),
+	SPH_C32(0x613c9f61), SPH_C32(0x358bd435), SPH_C32(0x57be4757),
+	SPH_C32(0xb902d2b9), SPH_C32(0x86bf2e86), SPH_C32(0xc17129c1),
+	SPH_C32(0x1d53741d), SPH_C32(0x9ef74e9e), SPH_C32(0xe191a9e1),
+	SPH_C32(0xf8decdf8), SPH_C32(0x98e55698), SPH_C32(0x11774411),
+	SPH_C32(0x6904bf69), SPH_C32(0xd93949d9), SPH_C32(0x8e870e8e),
+	SPH_C32(0x94c16694), SPH_C32(0x9bec5a9b), SPH_C32(0x1e5a781e),
+	SPH_C32(0x87b82a87), SPH_C32(0xe9a989e9), SPH_C32(0xce5c15ce),
+	SPH_C32(0x55b04f55), SPH_C32(0x28d8a028), SPH_C32(0xdf2b51df),
+	SPH_C32(0x8c89068c), SPH_C32(0xa14ab2a1), SPH_C32(0x89921289),
+	SPH_C32(0x0d23340d), SPH_C32(0xbf10cabf), SPH_C32(0xe684b5e6),
+	SPH_C32(0x42d51342), SPH_C32(0x6803bb68), SPH_C32(0x41dc1f41),
+	SPH_C32(0x99e25299), SPH_C32(0x2dc3b42d), SPH_C32(0x0f2d3c0f),
+	SPH_C32(0xb03df6b0), SPH_C32(0x54b74b54), SPH_C32(0xbb0cdabb),
+	SPH_C32(0x16625816)
+};
+
+#define TIX2(q, x00, x01, x08, x10, x24)   do { \
+		x10 ^= x00; \
+		x00 = (q); \
+		x08 ^= x00; \
+		x01 ^= x24; \
+	} while (0)
+
+#define TIX3(q, x00, x01, x04, x08, x16, x27, x30)   do { \
+		x16 ^= x00; \
+		x00 = (q); \
+		x08 ^= x00; \
+		x01 ^= x27; \
+		x04 ^= x30; \
+	} while (0)
+
+#define TIX4(q, x00, x01, x04, x07, x08, x22, x24, x27, x30)   do { \
+		x22 ^= x00; \
+		x00 = (q); \
+		x08 ^= x00; \
+		x01 ^= x24; \
+		x04 ^= x27; \
+		x07 ^= x30; \
+	} while (0)
+
+#define CMIX30(x00, x01, x02, x04, x05, x06, x15, x16, x17)   do { \
+		x00 ^= x04; \
+		x01 ^= x05; \
+		x02 ^= x06; \
+		x15 ^= x04; \
+		x16 ^= x05; \
+		x17 ^= x06; \
+	} while (0)
+
+#define CMIX36(x00, x01, x02, x04, x05, x06, x18, x19, x20)   do { \
+		x00 ^= x04; \
+		x01 ^= x05; \
+		x02 ^= x06; \
+		x18 ^= x04; \
+		x19 ^= x05; \
+		x20 ^= x06; \
+	} while (0)
+
+#define SMIX(x0, x1, x2, x3)   do { \
+		sph_u32 c0 = 0; \
+		sph_u32 c1 = 0; \
+		sph_u32 c2 = 0; \
+		sph_u32 c3 = 0; \
+		sph_u32 r0 = 0; \
+		sph_u32 r1 = 0; \
+		sph_u32 r2 = 0; \
+		sph_u32 r3 = 0; \
+		sph_u32 tmp; \
+		tmp = mixtab0[x0 >> 24]; \
+		c0 ^= tmp; \
+		tmp = mixtab1[(x0 >> 16) & 0xFF]; \
+		c0 ^= tmp; \
+		r1 ^= tmp; \
+		tmp = mixtab2[(x0 >>  8) & 0xFF]; \
+		c0 ^= tmp; \
+		r2 ^= tmp; \
+		tmp = mixtab3[x0 & 0xFF]; \
+		c0 ^= tmp; \
+		r3 ^= tmp; \
+		tmp = mixtab0[x1 >> 24]; \
+		c1 ^= tmp; \
+		r0 ^= tmp; \
+		tmp = mixtab1[(x1 >> 16) & 0xFF]; \
+		c1 ^= tmp; \
+		tmp = mixtab2[(x1 >>  8) & 0xFF]; \
+		c1 ^= tmp; \
+		r2 ^= tmp; \
+		tmp = mixtab3[x1 & 0xFF]; \
+		c1 ^= tmp; \
+		r3 ^= tmp; \
+		tmp = mixtab0[x2 >> 24]; \
+		c2 ^= tmp; \
+		r0 ^= tmp; \
+		tmp = mixtab1[(x2 >> 16) & 0xFF]; \
+		c2 ^= tmp; \
+		r1 ^= tmp; \
+		tmp = mixtab2[(x2 >>  8) & 0xFF]; \
+		c2 ^= tmp; \
+		tmp = mixtab3[x2 & 0xFF]; \
+		c2 ^= tmp; \
+		r3 ^= tmp; \
+		tmp = mixtab0[x3 >> 24]; \
+		c3 ^= tmp; \
+		r0 ^= tmp; \
+		tmp = mixtab1[(x3 >> 16) & 0xFF]; \
+		c3 ^= tmp; \
+		r1 ^= tmp; \
+		tmp = mixtab2[(x3 >>  8) & 0xFF]; \
+		c3 ^= tmp; \
+		r2 ^= tmp; \
+		tmp = mixtab3[x3 & 0xFF]; \
+		c3 ^= tmp; \
+		x0 = ((c0 ^ r0) & SPH_C32(0xFF000000)) \
+			| ((c1 ^ r1) & SPH_C32(0x00FF0000)) \
+			| ((c2 ^ r2) & SPH_C32(0x0000FF00)) \
+			| ((c3 ^ r3) & SPH_C32(0x000000FF)); \
+		x1 = ((c1 ^ (r0 << 8)) & SPH_C32(0xFF000000)) \
+			| ((c2 ^ (r1 << 8)) & SPH_C32(0x00FF0000)) \
+			| ((c3 ^ (r2 << 8)) & SPH_C32(0x0000FF00)) \
+			| ((c0 ^ (r3 >> 24)) & SPH_C32(0x000000FF)); \
+		x2 = ((c2 ^ (r0 << 16)) & SPH_C32(0xFF000000)) \
+			| ((c3 ^ (r1 << 16)) & SPH_C32(0x00FF0000)) \
+			| ((c0 ^ (r2 >> 16)) & SPH_C32(0x0000FF00)) \
+			| ((c1 ^ (r3 >> 16)) & SPH_C32(0x000000FF)); \
+		x3 = ((c3 ^ (r0 << 24)) & SPH_C32(0xFF000000)) \
+			| ((c0 ^ (r1 >> 8)) & SPH_C32(0x00FF0000)) \
+			| ((c1 ^ (r2 >> 8)) & SPH_C32(0x0000FF00)) \
+			| ((c2 ^ (r3 >> 8)) & SPH_C32(0x000000FF)); \
+		/* */ \
+	} while (0)
+
+#if SPH_FUGUE_NOCOPY
+
+#define DECL_STATE_SMALL
+#define READ_STATE_SMALL(state)
+#define WRITE_STATE_SMALL(state)
+#define DECL_STATE_BIG
+#define READ_STATE_BIG(state)
+#define WRITE_STATE_BIG(state)
+
+#define S00   ((sc)->S[ 0])
+#define S01   ((sc)->S[ 1])
+#define S02   ((sc)->S[ 2])
+#define S03   ((sc)->S[ 3])
+#define S04   ((sc)->S[ 4])
+#define S05   ((sc)->S[ 5])
+#define S06   ((sc)->S[ 6])
+#define S07   ((sc)->S[ 7])
+#define S08   ((sc)->S[ 8])
+#define S09   ((sc)->S[ 9])
+#define S10   ((sc)->S[10])
+#define S11   ((sc)->S[11])
+#define S12   ((sc)->S[12])
+#define S13   ((sc)->S[13])
+#define S14   ((sc)->S[14])
+#define S15   ((sc)->S[15])
+#define S16   ((sc)->S[16])
+#define S17   ((sc)->S[17])
+#define S18   ((sc)->S[18])
+#define S19   ((sc)->S[19])
+#define S20   ((sc)->S[20])
+#define S21   ((sc)->S[21])
+#define S22   ((sc)->S[22])
+#define S23   ((sc)->S[23])
+#define S24   ((sc)->S[24])
+#define S25   ((sc)->S[25])
+#define S26   ((sc)->S[26])
+#define S27   ((sc)->S[27])
+#define S28   ((sc)->S[28])
+#define S29   ((sc)->S[29])
+#define S30   ((sc)->S[30])
+#define S31   ((sc)->S[31])
+#define S32   ((sc)->S[32])
+#define S33   ((sc)->S[33])
+#define S34   ((sc)->S[34])
+#define S35   ((sc)->S[35])
+
+#else
+
+#define DECL_STATE_SMALL \
+	sph_u32 S00, S01, S02, S03, S04, S05, S06, S07, S08, S09; \
+	sph_u32 S10, S11, S12, S13, S14, S15, S16, S17, S18, S19; \
+	sph_u32 S20, S21, S22, S23, S24, S25, S26, S27, S28, S29;
+
+#define DECL_STATE_BIG \
+	DECL_STATE_SMALL \
+	sph_u32 S30, S31, S32, S33, S34, S35;
+
+#define READ_STATE_SMALL(state)   do { \
+		S00 = (state)->S[ 0]; \
+		S01 = (state)->S[ 1]; \
+		S02 = (state)->S[ 2]; \
+		S03 = (state)->S[ 3]; \
+		S04 = (state)->S[ 4]; \
+		S05 = (state)->S[ 5]; \
+		S06 = (state)->S[ 6]; \
+		S07 = (state)->S[ 7]; \
+		S08 = (state)->S[ 8]; \
+		S09 = (state)->S[ 9]; \
+		S10 = (state)->S[10]; \
+		S11 = (state)->S[11]; \
+		S12 = (state)->S[12]; \
+		S13 = (state)->S[13]; \
+		S14 = (state)->S[14]; \
+		S15 = (state)->S[15]; \
+		S16 = (state)->S[16]; \
+		S17 = (state)->S[17]; \
+		S18 = (state)->S[18]; \
+		S19 = (state)->S[19]; \
+		S20 = (state)->S[20]; \
+		S21 = (state)->S[21]; \
+		S22 = (state)->S[22]; \
+		S23 = (state)->S[23]; \
+		S24 = (state)->S[24]; \
+		S25 = (state)->S[25]; \
+		S26 = (state)->S[26]; \
+		S27 = (state)->S[27]; \
+		S28 = (state)->S[28]; \
+		S29 = (state)->S[29]; \
+	} while (0)
+
+#define READ_STATE_BIG(state)   do { \
+		READ_STATE_SMALL(state); \
+		S30 = (state)->S[30]; \
+		S31 = (state)->S[31]; \
+		S32 = (state)->S[32]; \
+		S33 = (state)->S[33]; \
+		S34 = (state)->S[34]; \
+		S35 = (state)->S[35]; \
+	} while (0)
+
+#define WRITE_STATE_SMALL(state)   do { \
+		(state)->S[ 0] = S00; \
+		(state)->S[ 1] = S01; \
+		(state)->S[ 2] = S02; \
+		(state)->S[ 3] = S03; \
+		(state)->S[ 4] = S04; \
+		(state)->S[ 5] = S05; \
+		(state)->S[ 6] = S06; \
+		(state)->S[ 7] = S07; \
+		(state)->S[ 8] = S08; \
+		(state)->S[ 9] = S09; \
+		(state)->S[10] = S10; \
+		(state)->S[11] = S11; \
+		(state)->S[12] = S12; \
+		(state)->S[13] = S13; \
+		(state)->S[14] = S14; \
+		(state)->S[15] = S15; \
+		(state)->S[16] = S16; \
+		(state)->S[17] = S17; \
+		(state)->S[18] = S18; \
+		(state)->S[19] = S19; \
+		(state)->S[20] = S20; \
+		(state)->S[21] = S21; \
+		(state)->S[22] = S22; \
+		(state)->S[23] = S23; \
+		(state)->S[24] = S24; \
+		(state)->S[25] = S25; \
+		(state)->S[26] = S26; \
+		(state)->S[27] = S27; \
+		(state)->S[28] = S28; \
+		(state)->S[29] = S29; \
+	} while (0)
+
+#define WRITE_STATE_BIG(state)   do { \
+		WRITE_STATE_SMALL(state); \
+		(state)->S[30] = S30; \
+		(state)->S[31] = S31; \
+		(state)->S[32] = S32; \
+		(state)->S[33] = S33; \
+		(state)->S[34] = S34; \
+		(state)->S[35] = S35; \
+	} while (0)
+
+#endif
+
+static void
+fugue_init(sph_fugue_context *sc, size_t z_len,
+	const sph_u32 *iv, size_t iv_len)
+{
+	size_t u;
+
+	for (u = 0; u < z_len; u ++)
+		sc->S[u] = 0;
+	memcpy(&sc->S[z_len], iv, iv_len * sizeof *iv);
+	sc->partial = 0;
+	sc->partial_len = 0;
+	sc->round_shift = 0;
+#if SPH_64
+	sc->bit_count = 0;
+#else
+	sc->bit_count_high = 0;
+	sc->bit_count_low = 0;
+#endif
+}
+
+#if SPH_64
+
+#define INCR_COUNTER   do { \
+		sc->bit_count += (sph_u64)len << 3; \
+	} while (0)
+
+#else
+
+#define INCR_COUNTER   do { \
+		sph_u32 tmp = SPH_T32((sph_u32)len << 3); \
+		sc->bit_count_low = SPH_T32(sc->bit_count_low + tmp); \
+		if (sc->bit_count_low < tmp) \
+			sc->bit_count_high ++; \
+		sc->bit_count_high = SPH_T32(sc->bit_count_high \
+			+ ((sph_u32)len >> 29)); \
+	} while (0)
+
+#endif
+
+#define CORE_ENTRY \
+	sph_u32 p; \
+	unsigned plen, rshift; \
+	INCR_COUNTER; \
+	p = sc->partial; \
+	plen = sc->partial_len; \
+	if (plen < 4) { \
+		unsigned count = 4 - plen; \
+		if (len < count) \
+			count = len; \
+		plen += count; \
+		while (count -- > 0) { \
+			p = (p << 8) | *(const unsigned char *)data; \
+			data = (const unsigned char *)data + 1; \
+			len --; \
+		} \
+		if (len == 0) { \
+			sc->partial = p; \
+			sc->partial_len = plen; \
+			return; \
+		} \
+	}
+
+#define CORE_EXIT \
+	p = 0; \
+	sc->partial_len = (unsigned)len; \
+	while (len -- > 0) { \
+		p = (p << 8) | *(const unsigned char *)data; \
+		data = (const unsigned char *)data + 1; \
+	} \
+	sc->partial = p; \
+	sc->round_shift = rshift;
+
+/*
+ * Not in a do..while: the 'break' must exit the outer loop.
+ */
+#define NEXT(rc) \
+	if (len <= 4) { \
+		rshift = (rc); \
+		break; \
+	} \
+	p = sph_dec32be(data); \
+	data = (const unsigned char *)data + 4; \
+	len -= 4
+
+static void
+fugue2_core(sph_fugue_context *sc, const void *data, size_t len)
+{
+	DECL_STATE_SMALL
+	CORE_ENTRY
+	READ_STATE_SMALL(sc);
+	rshift = sc->round_shift;
+	switch (rshift) {
+		for (;;) {
+			sph_u32 q;
+
+		case 0:
+			q = p;
+			TIX2(q, S00, S01, S08, S10, S24);
+			CMIX30(S27, S28, S29, S01, S02, S03, S12, S13, S14);
+			SMIX(S27, S28, S29, S00);
+			CMIX30(S24, S25, S26, S28, S29, S00, S09, S10, S11);
+			SMIX(S24, S25, S26, S27);
+			NEXT(1);
+			/* fall through */
+		case 1:
+			q = p;
+			TIX2(q, S24, S25, S02, S04, S18);
+			CMIX30(S21, S22, S23, S25, S26, S27, S06, S07, S08);
+			SMIX(S21, S22, S23, S24);
+			CMIX30(S18, S19, S20, S22, S23, S24, S03, S04, S05);
+			SMIX(S18, S19, S20, S21);
+			NEXT(2);
+			/* fall through */
+		case 2:
+			q = p;
+			TIX2(q, S18, S19, S26, S28, S12);
+			CMIX30(S15, S16, S17, S19, S20, S21, S00, S01, S02);
+			SMIX(S15, S16, S17, S18);
+			CMIX30(S12, S13, S14, S16, S17, S18, S27, S28, S29);
+			SMIX(S12, S13, S14, S15);
+			NEXT(3);
+			/* fall through */
+		case 3:
+			q = p;
+			TIX2(q, S12, S13, S20, S22, S06);
+			CMIX30(S09, S10, S11, S13, S14, S15, S24, S25, S26);
+			SMIX(S09, S10, S11, S12);
+			CMIX30(S06, S07, S08, S10, S11, S12, S21, S22, S23);
+			SMIX(S06, S07, S08, S09);
+			NEXT(4);
+			/* fall through */
+		case 4:
+			q = p;
+			TIX2(q, S06, S07, S14, S16, S00);
+			CMIX30(S03, S04, S05, S07, S08, S09, S18, S19, S20);
+			SMIX(S03, S04, S05, S06);
+			CMIX30(S00, S01, S02, S04, S05, S06, S15, S16, S17);
+			SMIX(S00, S01, S02, S03);
+			NEXT(0);
+		}
+	}
+	CORE_EXIT
+	WRITE_STATE_SMALL(sc);
+}
+
+static void
+fugue3_core(sph_fugue_context *sc, const void *data, size_t len)
+{
+	DECL_STATE_BIG
+	CORE_ENTRY
+	READ_STATE_BIG(sc);
+	rshift = sc->round_shift;
+	switch (rshift) {
+		for (;;) {
+			sph_u32 q;
+
+		case 0:
+			q = p;
+			TIX3(q, S00, S01, S04, S08, S16, S27, S30);
+			CMIX36(S33, S34, S35, S01, S02, S03, S15, S16, S17);
+			SMIX(S33, S34, S35, S00);
+			CMIX36(S30, S31, S32, S34, S35, S00, S12, S13, S14);
+			SMIX(S30, S31, S32, S33);
+			CMIX36(S27, S28, S29, S31, S32, S33, S09, S10, S11);
+			SMIX(S27, S28, S29, S30);
+			NEXT(1);
+			/* fall through */
+		case 1:
+			q = p;
+			TIX3(q, S27, S28, S31, S35, S07, S18, S21);
+			CMIX36(S24, S25, S26, S28, S29, S30, S06, S07, S08);
+			SMIX(S24, S25, S26, S27);
+			CMIX36(S21, S22, S23, S25, S26, S27, S03, S04, S05);
+			SMIX(S21, S22, S23, S24);
+			CMIX36(S18, S19, S20, S22, S23, S24, S00, S01, S02);
+			SMIX(S18, S19, S20, S21);
+			NEXT(2);
+			/* fall through */
+		case 2:
+			q = p;
+			TIX3(q, S18, S19, S22, S26, S34, S09, S12);
+			CMIX36(S15, S16, S17, S19, S20, S21, S33, S34, S35);
+			SMIX(S15, S16, S17, S18);
+			CMIX36(S12, S13, S14, S16, S17, S18, S30, S31, S32);
+			SMIX(S12, S13, S14, S15);
+			CMIX36(S09, S10, S11, S13, S14, S15, S27, S28, S29);
+			SMIX(S09, S10, S11, S12);
+			NEXT(3);
+			/* fall through */
+		case 3:
+			q = p;
+			TIX3(q, S09, S10, S13, S17, S25, S00, S03);
+			CMIX36(S06, S07, S08, S10, S11, S12, S24, S25, S26);
+			SMIX(S06, S07, S08, S09);
+			CMIX36(S03, S04, S05, S07, S08, S09, S21, S22, S23);
+			SMIX(S03, S04, S05, S06);
+			CMIX36(S00, S01, S02, S04, S05, S06, S18, S19, S20);
+			SMIX(S00, S01, S02, S03);
+			NEXT(0);
+		}
+	}
+	CORE_EXIT
+	WRITE_STATE_BIG(sc);
+}
+
+static void
+fugue4_core(sph_fugue_context *sc, const void *data, size_t len)
+{
+	DECL_STATE_BIG
+	CORE_ENTRY
+	READ_STATE_BIG(sc);
+	rshift = sc->round_shift;
+	switch (rshift) {
+		for (;;) {
+			sph_u32 q;
+
+		case 0:
+			q = p;
+			TIX4(q, S00, S01, S04, S07, S08, S22, S24, S27, S30);
+			CMIX36(S33, S34, S35, S01, S02, S03, S15, S16, S17);
+			SMIX(S33, S34, S35, S00);
+			CMIX36(S30, S31, S32, S34, S35, S00, S12, S13, S14);
+			SMIX(S30, S31, S32, S33);
+			CMIX36(S27, S28, S29, S31, S32, S33, S09, S10, S11);
+			SMIX(S27, S28, S29, S30);
+			CMIX36(S24, S25, S26, S28, S29, S30, S06, S07, S08);
+			SMIX(S24, S25, S26, S27);
+			NEXT(1);
+			/* fall through */
+		case 1:
+			q = p;
+			TIX4(q, S24, S25, S28, S31, S32, S10, S12, S15, S18);
+			CMIX36(S21, S22, S23, S25, S26, S27, S03, S04, S05);
+			SMIX(S21, S22, S23, S24);
+			CMIX36(S18, S19, S20, S22, S23, S24, S00, S01, S02);
+			SMIX(S18, S19, S20, S21);
+			CMIX36(S15, S16, S17, S19, S20, S21, S33, S34, S35);
+			SMIX(S15, S16, S17, S18);
+			CMIX36(S12, S13, S14, S16, S17, S18, S30, S31, S32);
+			SMIX(S12, S13, S14, S15);
+			NEXT(2);
+			/* fall through */
+		case 2:
+			q = p;
+			TIX4(q, S12, S13, S16, S19, S20, S34, S00, S03, S06);
+			CMIX36(S09, S10, S11, S13, S14, S15, S27, S28, S29);
+			SMIX(S09, S10, S11, S12);
+			CMIX36(S06, S07, S08, S10, S11, S12, S24, S25, S26);
+			SMIX(S06, S07, S08, S09);
+			CMIX36(S03, S04, S05, S07, S08, S09, S21, S22, S23);
+			SMIX(S03, S04, S05, S06);
+			CMIX36(S00, S01, S02, S04, S05, S06, S18, S19, S20);
+			SMIX(S00, S01, S02, S03);
+			NEXT(0);
+		}
+	}
+	CORE_EXIT
+	WRITE_STATE_BIG(sc);
+}
+
+#if SPH_64
+
+#define WRITE_COUNTER   do { \
+		sph_enc64be(buf + 4, sc->bit_count + n); \
+	} while (0)
+
+#else
+
+#define WRITE_COUNTER   do { \
+		sph_enc32be(buf + 4, sc->bit_count_high); \
+		sph_enc32be(buf + 8, sc->bit_count_low + n); \
+	} while (0)
+
+#endif
+
+#define CLOSE_ENTRY(s, rcm, core) \
+	unsigned char buf[16]; \
+	unsigned plen, rms; \
+	unsigned char *out; \
+	sph_u32 S[s]; \
+	plen = sc->partial_len; \
+	WRITE_COUNTER; \
+	if (plen == 0 && n == 0) { \
+		plen = 4; \
+	} else if (plen < 4 || n != 0) { \
+		unsigned u; \
+ \
+		if (plen == 4) \
+			plen = 0; \
+		buf[plen] = ub & ~(0xFFU >> n); \
+		for (u = plen + 1; u < 4; u ++) \
+			buf[u] = 0; \
+	} \
+	core(sc, buf + plen, (sizeof buf) - plen); \
+	rms = sc->round_shift * (rcm); \
+	memcpy(S, sc->S + (s) - rms, rms * sizeof(sph_u32)); \
+	memcpy(S + rms, sc->S, ((s) - rms) * sizeof(sph_u32));
+
+#define ROR(n, s)   do { \
+		sph_u32 tmp[n]; \
+		memcpy(tmp, S + ((s) - (n)), (n) * sizeof(sph_u32)); \
+		memmove(S + (n), S, ((s) - (n)) * sizeof(sph_u32)); \
+		memcpy(S, tmp, (n) * sizeof(sph_u32)); \
+	} while (0)
+
+static void
+fugue2_close(sph_fugue_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_size_w32)
+{
+	int i;
+
+	CLOSE_ENTRY(30, 6, fugue2_core)
+	for (i = 0; i < 10; i ++) {
+		ROR(3, 30);
+		CMIX30(S[0], S[1], S[2], S[4], S[5], S[6], S[15], S[16], S[17]);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	for (i = 0; i < 13; i ++) {
+		S[4] ^= S[0];
+		S[15] ^= S[0];
+		ROR(15, 30);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[16] ^= S[0];
+		ROR(14, 30);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	S[4] ^= S[0];
+	S[15] ^= S[0];
+	out = dst;
+	sph_enc32be(out +  0, S[ 1]);
+	sph_enc32be(out +  4, S[ 2]);
+	sph_enc32be(out +  8, S[ 3]);
+	sph_enc32be(out + 12, S[ 4]);
+	sph_enc32be(out + 16, S[15]);
+	sph_enc32be(out + 20, S[16]);
+	sph_enc32be(out + 24, S[17]);
+	if (out_size_w32 == 8) {
+		sph_enc32be(out + 28, S[18]);
+		sph_fugue256_init(sc);
+	} else {
+		sph_fugue224_init(sc);
+	}
+}
+
+static void
+fugue3_close(sph_fugue_context *sc, unsigned ub, unsigned n, void *dst)
+{
+	int i;
+
+	CLOSE_ENTRY(36, 9, fugue3_core)
+	for (i = 0; i < 18; i ++) {
+		ROR(3, 36);
+		CMIX36(S[0], S[1], S[2], S[4], S[5], S[6], S[18], S[19], S[20]);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	for (i = 0; i < 13; i ++) {
+		S[4] ^= S[0];
+		S[12] ^= S[0];
+		S[24] ^= S[0];
+		ROR(12, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[13] ^= S[0];
+		S[24] ^= S[0];
+		ROR(12, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[13] ^= S[0];
+		S[25] ^= S[0];
+		ROR(11, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	S[4] ^= S[0];
+	S[12] ^= S[0];
+	S[24] ^= S[0];
+	out = dst;
+	sph_enc32be(out +  0, S[ 1]);
+	sph_enc32be(out +  4, S[ 2]);
+	sph_enc32be(out +  8, S[ 3]);
+	sph_enc32be(out + 12, S[ 4]);
+	sph_enc32be(out + 16, S[12]);
+	sph_enc32be(out + 20, S[13]);
+	sph_enc32be(out + 24, S[14]);
+	sph_enc32be(out + 28, S[15]);
+	sph_enc32be(out + 32, S[24]);
+	sph_enc32be(out + 36, S[25]);
+	sph_enc32be(out + 40, S[26]);
+	sph_enc32be(out + 44, S[27]);
+	sph_fugue384_init(sc);
+}
+
+static void
+fugue4_close(sph_fugue_context *sc, unsigned ub, unsigned n, void *dst)
+{
+	int i;
+
+	CLOSE_ENTRY(36, 12, fugue4_core)
+	for (i = 0; i < 32; i ++) {
+		ROR(3, 36);
+		CMIX36(S[0], S[1], S[2], S[4], S[5], S[6], S[18], S[19], S[20]);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	for (i = 0; i < 13; i ++) {
+		S[4] ^= S[0];
+		S[9] ^= S[0];
+		S[18] ^= S[0];
+		S[27] ^= S[0];
+		ROR(9, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[10] ^= S[0];
+		S[18] ^= S[0];
+		S[27] ^= S[0];
+		ROR(9, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[10] ^= S[0];
+		S[19] ^= S[0];
+		S[27] ^= S[0];
+		ROR(9, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+		S[4] ^= S[0];
+		S[10] ^= S[0];
+		S[19] ^= S[0];
+		S[28] ^= S[0];
+		ROR(8, 36);
+		SMIX(S[0], S[1], S[2], S[3]);
+	}
+	S[4] ^= S[0];
+	S[9] ^= S[0];
+	S[18] ^= S[0];
+	S[27] ^= S[0];
+	out = dst;
+	sph_enc32be(out +  0, S[ 1]);
+	sph_enc32be(out +  4, S[ 2]);
+	sph_enc32be(out +  8, S[ 3]);
+	sph_enc32be(out + 12, S[ 4]);
+	sph_enc32be(out + 16, S[ 9]);
+	sph_enc32be(out + 20, S[10]);
+	sph_enc32be(out + 24, S[11]);
+	sph_enc32be(out + 28, S[12]);
+	sph_enc32be(out + 32, S[18]);
+	sph_enc32be(out + 36, S[19]);
+	sph_enc32be(out + 40, S[20]);
+	sph_enc32be(out + 44, S[21]);
+	sph_enc32be(out + 48, S[27]);
+	sph_enc32be(out + 52, S[28]);
+	sph_enc32be(out + 56, S[29]);
+	sph_enc32be(out + 60, S[30]);
+//	sph_fugue512_init(sc);
+}
+
+void
+sph_fugue224_init(void *cc)
+{
+	fugue_init(cc, 23, IV224, 7);
+}
+
+void
+sph_fugue224(void *cc, const void *data, size_t len)
+{
+	fugue2_core(cc, data, len);
+}
+
+void
+sph_fugue224_close(void *cc, void *dst)
+{
+	fugue2_close(cc, 0, 0, dst, 7);
+}
+
+void
+sph_fugue224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	fugue2_close(cc, ub, n, dst, 7);
+}
+
+void
+sph_fugue256_init(void *cc)
+{
+	fugue_init(cc, 22, IV256, 8);
+}
+
+void
+sph_fugue256(void *cc, const void *data, size_t len)
+{
+	fugue2_core(cc, data, len);
+}
+
+void
+sph_fugue256_close(void *cc, void *dst)
+{
+	fugue2_close(cc, 0, 0, dst, 8);
+}
+
+void
+sph_fugue256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	fugue2_close(cc, ub, n, dst, 8);
+}
+
+void
+sph_fugue384_init(void *cc)
+{
+	fugue_init(cc, 24, IV384, 12);
+}
+
+void
+sph_fugue384(void *cc, const void *data, size_t len)
+{
+	fugue3_core(cc, data, len);
+}
+
+void
+sph_fugue384_close(void *cc, void *dst)
+{
+	fugue3_close(cc, 0, 0, dst);
+}
+
+void
+sph_fugue384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	fugue3_close(cc, ub, n, dst);
+}
+
+void
+sph_fugue512_init(void *cc)
+{
+	fugue_init(cc, 20, IV512, 16);
+}
+
+void
+sph_fugue512(void *cc, const void *data, size_t len)
+{
+	fugue4_core(cc, data, len);
+}
+
+void
+sph_fugue512_close(void *cc, void *dst)
+{
+	fugue4_close(cc, 0, 0, dst);
+}
+
+void
+sph_fugue512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	fugue4_close(cc, ub, n, dst);
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_fugue.h b/src/crypto/ghostrider/sph_fugue.h
new file mode 100644
index 000000000..3c9128e4e
--- /dev/null
+++ b/src/crypto/ghostrider/sph_fugue.h
@@ -0,0 +1,89 @@
+#ifndef SPH_FUGUE_H__
+#define SPH_FUGUE_H__
+
+#include <stddef.h>
+#include "sph_types.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#define SPH_SIZE_fugue224   224
+
+#define SPH_SIZE_fugue256   256
+
+#define SPH_SIZE_fugue384   384
+
+#define SPH_SIZE_fugue512   512
+
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	sph_u32 partial;
+	unsigned partial_len;
+	unsigned round_shift;
+	sph_u32 S[36];
+#if SPH_64
+	sph_u64 bit_count;
+#else
+	sph_u32 bit_count_high, bit_count_low;
+#endif
+#endif
+} sph_fugue_context;
+
+typedef sph_fugue_context sph_fugue224_context;
+
+typedef sph_fugue_context sph_fugue256_context;
+
+typedef sph_fugue_context sph_fugue384_context;
+
+typedef sph_fugue_context sph_fugue512_context;
+
+void sph_fugue224_init(void *cc);
+
+void sph_fugue224(void *cc, const void *data, size_t len);
+
+void sph_fugue224_close(void *cc, void *dst);
+
+void sph_fugue224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+void sph_fugue256_init(void *cc);
+
+void sph_fugue256(void *cc, const void *data, size_t len);
+
+void sph_fugue256_close(void *cc, void *dst);
+
+void sph_fugue256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+void sph_fugue384_init(void *cc);
+
+void sph_fugue384(void *cc, const void *data, size_t len);
+
+void sph_fugue384_close(void *cc, void *dst);
+
+void sph_fugue384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+void sph_fugue512_init(void *cc);
+
+void sph_fugue512(void *cc, const void *data, size_t len);
+
+void sph_fugue512_close(void *cc, void *dst);
+
+void sph_fugue512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#define sph_fugue512_full( cc, dst, data, len ) \
+do{ \
+   sph_fugue512_init( cc ); \
+   sph_fugue512( cc, data, len ); \
+   sph_fugue512_close( cc, dst ); \
+}while(0)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_groestl.c b/src/crypto/ghostrider/sph_groestl.c
new file mode 100644
index 000000000..805fafe8e
--- /dev/null
+++ b/src/crypto/ghostrider/sph_groestl.c
@@ -0,0 +1,3121 @@
+/* $Id: groestl.c 260 2011-07-21 01:02:38Z tp $ */
+/*
+ * Groestl implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_groestl.h"
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_GROESTL
+#define SPH_SMALL_FOOTPRINT_GROESTL   1
+#endif
+
+/*
+ * Apparently, the 32-bit-only version is not faster than the 64-bit
+ * version unless using the "small footprint" code on a 32-bit machine.
+ */
+#if !defined SPH_GROESTL_64
+#if SPH_SMALL_FOOTPRINT_GROESTL && !SPH_64_TRUE
+#define SPH_GROESTL_64   0
+#else
+#define SPH_GROESTL_64   1
+#endif
+#endif
+
+#if !SPH_64
+#undef SPH_GROESTL_64
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+/*
+ * The internal representation may use either big-endian or
+ * little-endian. Using the platform default representation speeds up
+ * encoding and decoding between bytes and the matrix columns.
+ */
+
+#undef USE_LE
+#if SPH_GROESTL_LITTLE_ENDIAN
+#define USE_LE   1
+#elif SPH_GROESTL_BIG_ENDIAN
+#define USE_LE   0
+#elif SPH_LITTLE_ENDIAN
+#define USE_LE   1
+#endif
+
+#if USE_LE
+
+#define C32e(x)     ((SPH_C32(x) >> 24) \
+                    | ((SPH_C32(x) >>  8) & SPH_C32(0x0000FF00)) \
+                    | ((SPH_C32(x) <<  8) & SPH_C32(0x00FF0000)) \
+                    | ((SPH_C32(x) << 24) & SPH_C32(0xFF000000)))
+#define dec32e_aligned   sph_dec32le_aligned
+#define enc32e           sph_enc32le
+#define B32_0(x)    ((x) & 0xFF)
+#define B32_1(x)    (((x) >> 8) & 0xFF)
+#define B32_2(x)    (((x) >> 16) & 0xFF)
+#define B32_3(x)    ((x) >> 24)
+
+#define R32u(u, d)   SPH_T32(((u) << 16) | ((d) >> 16))
+#define R32d(u, d)   SPH_T32(((u) >> 16) | ((d) << 16))
+
+#define PC32up(j, r)   ((sph_u32)((j) + (r)))
+#define PC32dn(j, r)   0
+#define QC32up(j, r)   SPH_C32(0xFFFFFFFF)
+#define QC32dn(j, r)   (((sph_u32)(r) << 24) ^ SPH_T32(~((sph_u32)(j) << 24)))
+
+#if SPH_64
+#define C64e(x)     ((SPH_C64(x) >> 56) \
+                    | ((SPH_C64(x) >> 40) & SPH_C64(0x000000000000FF00)) \
+                    | ((SPH_C64(x) >> 24) & SPH_C64(0x0000000000FF0000)) \
+                    | ((SPH_C64(x) >>  8) & SPH_C64(0x00000000FF000000)) \
+                    | ((SPH_C64(x) <<  8) & SPH_C64(0x000000FF00000000)) \
+                    | ((SPH_C64(x) << 24) & SPH_C64(0x0000FF0000000000)) \
+                    | ((SPH_C64(x) << 40) & SPH_C64(0x00FF000000000000)) \
+                    | ((SPH_C64(x) << 56) & SPH_C64(0xFF00000000000000)))
+#define dec64e_aligned   sph_dec64le_aligned
+#define enc64e           sph_enc64le
+#define B64_0(x)    ((x) & 0xFF)
+#define B64_1(x)    (((x) >> 8) & 0xFF)
+#define B64_2(x)    (((x) >> 16) & 0xFF)
+#define B64_3(x)    (((x) >> 24) & 0xFF)
+#define B64_4(x)    (((x) >> 32) & 0xFF)
+#define B64_5(x)    (((x) >> 40) & 0xFF)
+#define B64_6(x)    (((x) >> 48) & 0xFF)
+#define B64_7(x)    ((x) >> 56)
+#define R64         SPH_ROTL64
+#define PC64(j, r)  ((sph_u64)((j) + (r)))
+#define QC64(j, r)  (((sph_u64)(r) << 56) ^ SPH_T64(~((sph_u64)(j) << 56)))
+#endif
+
+#else
+
+#define C32e(x)     SPH_C32(x)
+#define dec32e_aligned   sph_dec32be_aligned
+#define enc32e           sph_enc32be
+#define B32_0(x)    ((x) >> 24)
+#define B32_1(x)    (((x) >> 16) & 0xFF)
+#define B32_2(x)    (((x) >> 8) & 0xFF)
+#define B32_3(x)    ((x) & 0xFF)
+
+#define R32u(u, d)   SPH_T32(((u) >> 16) | ((d) << 16))
+#define R32d(u, d)   SPH_T32(((u) << 16) | ((d) >> 16))
+
+#define PC32up(j, r)   ((sph_u32)((j) + (r)) << 24)
+#define PC32dn(j, r)   0
+#define QC32up(j, r)   SPH_C32(0xFFFFFFFF)
+#define QC32dn(j, r)   ((sph_u32)(r) ^ SPH_T32(~(sph_u32)(j)))
+
+#if SPH_64
+#define C64e(x)     SPH_C64(x)
+#define dec64e_aligned   sph_dec64be_aligned
+#define enc64e           sph_enc64be
+#define B64_0(x)    ((x) >> 56)
+#define B64_1(x)    (((x) >> 48) & 0xFF)
+#define B64_2(x)    (((x) >> 40) & 0xFF)
+#define B64_3(x)    (((x) >> 32) & 0xFF)
+#define B64_4(x)    (((x) >> 24) & 0xFF)
+#define B64_5(x)    (((x) >> 16) & 0xFF)
+#define B64_6(x)    (((x) >> 8) & 0xFF)
+#define B64_7(x)    ((x) & 0xFF)
+#define R64         SPH_ROTR64
+#define PC64(j, r)  ((sph_u64)((j) + (r)) << 56)
+#define QC64(j, r)  ((sph_u64)(r) ^ SPH_T64(~(sph_u64)(j)))
+#endif
+
+#endif
+
+#if SPH_GROESTL_64
+
+static const sph_u64 T0[] = {
+	C64e(0xc632f4a5f497a5c6), C64e(0xf86f978497eb84f8),
+	C64e(0xee5eb099b0c799ee), C64e(0xf67a8c8d8cf78df6),
+	C64e(0xffe8170d17e50dff), C64e(0xd60adcbddcb7bdd6),
+	C64e(0xde16c8b1c8a7b1de), C64e(0x916dfc54fc395491),
+	C64e(0x6090f050f0c05060), C64e(0x0207050305040302),
+	C64e(0xce2ee0a9e087a9ce), C64e(0x56d1877d87ac7d56),
+	C64e(0xe7cc2b192bd519e7), C64e(0xb513a662a67162b5),
+	C64e(0x4d7c31e6319ae64d), C64e(0xec59b59ab5c39aec),
+	C64e(0x8f40cf45cf05458f), C64e(0x1fa3bc9dbc3e9d1f),
+	C64e(0x8949c040c0094089), C64e(0xfa68928792ef87fa),
+	C64e(0xefd03f153fc515ef), C64e(0xb29426eb267febb2),
+	C64e(0x8ece40c94007c98e), C64e(0xfbe61d0b1ded0bfb),
+	C64e(0x416e2fec2f82ec41), C64e(0xb31aa967a97d67b3),
+	C64e(0x5f431cfd1cbefd5f), C64e(0x456025ea258aea45),
+	C64e(0x23f9dabfda46bf23), C64e(0x535102f702a6f753),
+	C64e(0xe445a196a1d396e4), C64e(0x9b76ed5bed2d5b9b),
+	C64e(0x75285dc25deac275), C64e(0xe1c5241c24d91ce1),
+	C64e(0x3dd4e9aee97aae3d), C64e(0x4cf2be6abe986a4c),
+	C64e(0x6c82ee5aeed85a6c), C64e(0x7ebdc341c3fc417e),
+	C64e(0xf5f3060206f102f5), C64e(0x8352d14fd11d4f83),
+	C64e(0x688ce45ce4d05c68), C64e(0x515607f407a2f451),
+	C64e(0xd18d5c345cb934d1), C64e(0xf9e1180818e908f9),
+	C64e(0xe24cae93aedf93e2), C64e(0xab3e9573954d73ab),
+	C64e(0x6297f553f5c45362), C64e(0x2a6b413f41543f2a),
+	C64e(0x081c140c14100c08), C64e(0x9563f652f6315295),
+	C64e(0x46e9af65af8c6546), C64e(0x9d7fe25ee2215e9d),
+	C64e(0x3048782878602830), C64e(0x37cff8a1f86ea137),
+	C64e(0x0a1b110f11140f0a), C64e(0x2febc4b5c45eb52f),
+	C64e(0x0e151b091b1c090e), C64e(0x247e5a365a483624),
+	C64e(0x1badb69bb6369b1b), C64e(0xdf98473d47a53ddf),
+	C64e(0xcda76a266a8126cd), C64e(0x4ef5bb69bb9c694e),
+	C64e(0x7f334ccd4cfecd7f), C64e(0xea50ba9fbacf9fea),
+	C64e(0x123f2d1b2d241b12), C64e(0x1da4b99eb93a9e1d),
+	C64e(0x58c49c749cb07458), C64e(0x3446722e72682e34),
+	C64e(0x3641772d776c2d36), C64e(0xdc11cdb2cda3b2dc),
+	C64e(0xb49d29ee2973eeb4), C64e(0x5b4d16fb16b6fb5b),
+	C64e(0xa4a501f60153f6a4), C64e(0x76a1d74dd7ec4d76),
+	C64e(0xb714a361a37561b7), C64e(0x7d3449ce49face7d),
+	C64e(0x52df8d7b8da47b52), C64e(0xdd9f423e42a13edd),
+	C64e(0x5ecd937193bc715e), C64e(0x13b1a297a2269713),
+	C64e(0xa6a204f50457f5a6), C64e(0xb901b868b86968b9),
+	C64e(0x0000000000000000), C64e(0xc1b5742c74992cc1),
+	C64e(0x40e0a060a0806040), C64e(0xe3c2211f21dd1fe3),
+	C64e(0x793a43c843f2c879), C64e(0xb69a2ced2c77edb6),
+	C64e(0xd40dd9bed9b3bed4), C64e(0x8d47ca46ca01468d),
+	C64e(0x671770d970ced967), C64e(0x72afdd4bdde44b72),
+	C64e(0x94ed79de7933de94), C64e(0x98ff67d4672bd498),
+	C64e(0xb09323e8237be8b0), C64e(0x855bde4ade114a85),
+	C64e(0xbb06bd6bbd6d6bbb), C64e(0xc5bb7e2a7e912ac5),
+	C64e(0x4f7b34e5349ee54f), C64e(0xedd73a163ac116ed),
+	C64e(0x86d254c55417c586), C64e(0x9af862d7622fd79a),
+	C64e(0x6699ff55ffcc5566), C64e(0x11b6a794a7229411),
+	C64e(0x8ac04acf4a0fcf8a), C64e(0xe9d9301030c910e9),
+	C64e(0x040e0a060a080604), C64e(0xfe66988198e781fe),
+	C64e(0xa0ab0bf00b5bf0a0), C64e(0x78b4cc44ccf04478),
+	C64e(0x25f0d5bad54aba25), C64e(0x4b753ee33e96e34b),
+	C64e(0xa2ac0ef30e5ff3a2), C64e(0x5d4419fe19bafe5d),
+	C64e(0x80db5bc05b1bc080), C64e(0x0580858a850a8a05),
+	C64e(0x3fd3ecadec7ead3f), C64e(0x21fedfbcdf42bc21),
+	C64e(0x70a8d848d8e04870), C64e(0xf1fd0c040cf904f1),
+	C64e(0x63197adf7ac6df63), C64e(0x772f58c158eec177),
+	C64e(0xaf309f759f4575af), C64e(0x42e7a563a5846342),
+	C64e(0x2070503050403020), C64e(0xe5cb2e1a2ed11ae5),
+	C64e(0xfdef120e12e10efd), C64e(0xbf08b76db7656dbf),
+	C64e(0x8155d44cd4194c81), C64e(0x18243c143c301418),
+	C64e(0x26795f355f4c3526), C64e(0xc3b2712f719d2fc3),
+	C64e(0xbe8638e13867e1be), C64e(0x35c8fda2fd6aa235),
+	C64e(0x88c74fcc4f0bcc88), C64e(0x2e654b394b5c392e),
+	C64e(0x936af957f93d5793), C64e(0x55580df20daaf255),
+	C64e(0xfc619d829de382fc), C64e(0x7ab3c947c9f4477a),
+	C64e(0xc827efacef8bacc8), C64e(0xba8832e7326fe7ba),
+	C64e(0x324f7d2b7d642b32), C64e(0xe642a495a4d795e6),
+	C64e(0xc03bfba0fb9ba0c0), C64e(0x19aab398b3329819),
+	C64e(0x9ef668d16827d19e), C64e(0xa322817f815d7fa3),
+	C64e(0x44eeaa66aa886644), C64e(0x54d6827e82a87e54),
+	C64e(0x3bdde6abe676ab3b), C64e(0x0b959e839e16830b),
+	C64e(0x8cc945ca4503ca8c), C64e(0xc7bc7b297b9529c7),
+	C64e(0x6b056ed36ed6d36b), C64e(0x286c443c44503c28),
+	C64e(0xa72c8b798b5579a7), C64e(0xbc813de23d63e2bc),
+	C64e(0x1631271d272c1d16), C64e(0xad379a769a4176ad),
+	C64e(0xdb964d3b4dad3bdb), C64e(0x649efa56fac85664),
+	C64e(0x74a6d24ed2e84e74), C64e(0x1436221e22281e14),
+	C64e(0x92e476db763fdb92), C64e(0x0c121e0a1e180a0c),
+	C64e(0x48fcb46cb4906c48), C64e(0xb88f37e4376be4b8),
+	C64e(0x9f78e75de7255d9f), C64e(0xbd0fb26eb2616ebd),
+	C64e(0x43692aef2a86ef43), C64e(0xc435f1a6f193a6c4),
+	C64e(0x39dae3a8e372a839), C64e(0x31c6f7a4f762a431),
+	C64e(0xd38a593759bd37d3), C64e(0xf274868b86ff8bf2),
+	C64e(0xd583563256b132d5), C64e(0x8b4ec543c50d438b),
+	C64e(0x6e85eb59ebdc596e), C64e(0xda18c2b7c2afb7da),
+	C64e(0x018e8f8c8f028c01), C64e(0xb11dac64ac7964b1),
+	C64e(0x9cf16dd26d23d29c), C64e(0x49723be03b92e049),
+	C64e(0xd81fc7b4c7abb4d8), C64e(0xacb915fa1543faac),
+	C64e(0xf3fa090709fd07f3), C64e(0xcfa06f256f8525cf),
+	C64e(0xca20eaafea8fafca), C64e(0xf47d898e89f38ef4),
+	C64e(0x476720e9208ee947), C64e(0x1038281828201810),
+	C64e(0x6f0b64d564ded56f), C64e(0xf073838883fb88f0),
+	C64e(0x4afbb16fb1946f4a), C64e(0x5cca967296b8725c),
+	C64e(0x38546c246c702438), C64e(0x575f08f108aef157),
+	C64e(0x732152c752e6c773), C64e(0x9764f351f3355197),
+	C64e(0xcbae6523658d23cb), C64e(0xa125847c84597ca1),
+	C64e(0xe857bf9cbfcb9ce8), C64e(0x3e5d6321637c213e),
+	C64e(0x96ea7cdd7c37dd96), C64e(0x611e7fdc7fc2dc61),
+	C64e(0x0d9c9186911a860d), C64e(0x0f9b9485941e850f),
+	C64e(0xe04bab90abdb90e0), C64e(0x7cbac642c6f8427c),
+	C64e(0x712657c457e2c471), C64e(0xcc29e5aae583aacc),
+	C64e(0x90e373d8733bd890), C64e(0x06090f050f0c0506),
+	C64e(0xf7f4030103f501f7), C64e(0x1c2a36123638121c),
+	C64e(0xc23cfea3fe9fa3c2), C64e(0x6a8be15fe1d45f6a),
+	C64e(0xaebe10f91047f9ae), C64e(0x69026bd06bd2d069),
+	C64e(0x17bfa891a82e9117), C64e(0x9971e858e8295899),
+	C64e(0x3a5369276974273a), C64e(0x27f7d0b9d04eb927),
+	C64e(0xd991483848a938d9), C64e(0xebde351335cd13eb),
+	C64e(0x2be5ceb3ce56b32b), C64e(0x2277553355443322),
+	C64e(0xd204d6bbd6bfbbd2), C64e(0xa9399070904970a9),
+	C64e(0x07878089800e8907), C64e(0x33c1f2a7f266a733),
+	C64e(0x2decc1b6c15ab62d), C64e(0x3c5a66226678223c),
+	C64e(0x15b8ad92ad2a9215), C64e(0xc9a96020608920c9),
+	C64e(0x875cdb49db154987), C64e(0xaab01aff1a4fffaa),
+	C64e(0x50d8887888a07850), C64e(0xa52b8e7a8e517aa5),
+	C64e(0x03898a8f8a068f03), C64e(0x594a13f813b2f859),
+	C64e(0x09929b809b128009), C64e(0x1a2339173934171a),
+	C64e(0x651075da75cada65), C64e(0xd784533153b531d7),
+	C64e(0x84d551c65113c684), C64e(0xd003d3b8d3bbb8d0),
+	C64e(0x82dc5ec35e1fc382), C64e(0x29e2cbb0cb52b029),
+	C64e(0x5ac3997799b4775a), C64e(0x1e2d3311333c111e),
+	C64e(0x7b3d46cb46f6cb7b), C64e(0xa8b71ffc1f4bfca8),
+	C64e(0x6d0c61d661dad66d), C64e(0x2c624e3a4e583a2c)
+};
+
+#if !SPH_SMALL_FOOTPRINT_GROESTL
+
+static const sph_u64 T1[] = {
+	C64e(0xc6c632f4a5f497a5), C64e(0xf8f86f978497eb84),
+	C64e(0xeeee5eb099b0c799), C64e(0xf6f67a8c8d8cf78d),
+	C64e(0xffffe8170d17e50d), C64e(0xd6d60adcbddcb7bd),
+	C64e(0xdede16c8b1c8a7b1), C64e(0x91916dfc54fc3954),
+	C64e(0x606090f050f0c050), C64e(0x0202070503050403),
+	C64e(0xcece2ee0a9e087a9), C64e(0x5656d1877d87ac7d),
+	C64e(0xe7e7cc2b192bd519), C64e(0xb5b513a662a67162),
+	C64e(0x4d4d7c31e6319ae6), C64e(0xecec59b59ab5c39a),
+	C64e(0x8f8f40cf45cf0545), C64e(0x1f1fa3bc9dbc3e9d),
+	C64e(0x898949c040c00940), C64e(0xfafa68928792ef87),
+	C64e(0xefefd03f153fc515), C64e(0xb2b29426eb267feb),
+	C64e(0x8e8ece40c94007c9), C64e(0xfbfbe61d0b1ded0b),
+	C64e(0x41416e2fec2f82ec), C64e(0xb3b31aa967a97d67),
+	C64e(0x5f5f431cfd1cbefd), C64e(0x45456025ea258aea),
+	C64e(0x2323f9dabfda46bf), C64e(0x53535102f702a6f7),
+	C64e(0xe4e445a196a1d396), C64e(0x9b9b76ed5bed2d5b),
+	C64e(0x7575285dc25deac2), C64e(0xe1e1c5241c24d91c),
+	C64e(0x3d3dd4e9aee97aae), C64e(0x4c4cf2be6abe986a),
+	C64e(0x6c6c82ee5aeed85a), C64e(0x7e7ebdc341c3fc41),
+	C64e(0xf5f5f3060206f102), C64e(0x838352d14fd11d4f),
+	C64e(0x68688ce45ce4d05c), C64e(0x51515607f407a2f4),
+	C64e(0xd1d18d5c345cb934), C64e(0xf9f9e1180818e908),
+	C64e(0xe2e24cae93aedf93), C64e(0xabab3e9573954d73),
+	C64e(0x626297f553f5c453), C64e(0x2a2a6b413f41543f),
+	C64e(0x08081c140c14100c), C64e(0x959563f652f63152),
+	C64e(0x4646e9af65af8c65), C64e(0x9d9d7fe25ee2215e),
+	C64e(0x3030487828786028), C64e(0x3737cff8a1f86ea1),
+	C64e(0x0a0a1b110f11140f), C64e(0x2f2febc4b5c45eb5),
+	C64e(0x0e0e151b091b1c09), C64e(0x24247e5a365a4836),
+	C64e(0x1b1badb69bb6369b), C64e(0xdfdf98473d47a53d),
+	C64e(0xcdcda76a266a8126), C64e(0x4e4ef5bb69bb9c69),
+	C64e(0x7f7f334ccd4cfecd), C64e(0xeaea50ba9fbacf9f),
+	C64e(0x12123f2d1b2d241b), C64e(0x1d1da4b99eb93a9e),
+	C64e(0x5858c49c749cb074), C64e(0x343446722e72682e),
+	C64e(0x363641772d776c2d), C64e(0xdcdc11cdb2cda3b2),
+	C64e(0xb4b49d29ee2973ee), C64e(0x5b5b4d16fb16b6fb),
+	C64e(0xa4a4a501f60153f6), C64e(0x7676a1d74dd7ec4d),
+	C64e(0xb7b714a361a37561), C64e(0x7d7d3449ce49face),
+	C64e(0x5252df8d7b8da47b), C64e(0xdddd9f423e42a13e),
+	C64e(0x5e5ecd937193bc71), C64e(0x1313b1a297a22697),
+	C64e(0xa6a6a204f50457f5), C64e(0xb9b901b868b86968),
+	C64e(0x0000000000000000), C64e(0xc1c1b5742c74992c),
+	C64e(0x4040e0a060a08060), C64e(0xe3e3c2211f21dd1f),
+	C64e(0x79793a43c843f2c8), C64e(0xb6b69a2ced2c77ed),
+	C64e(0xd4d40dd9bed9b3be), C64e(0x8d8d47ca46ca0146),
+	C64e(0x67671770d970ced9), C64e(0x7272afdd4bdde44b),
+	C64e(0x9494ed79de7933de), C64e(0x9898ff67d4672bd4),
+	C64e(0xb0b09323e8237be8), C64e(0x85855bde4ade114a),
+	C64e(0xbbbb06bd6bbd6d6b), C64e(0xc5c5bb7e2a7e912a),
+	C64e(0x4f4f7b34e5349ee5), C64e(0xededd73a163ac116),
+	C64e(0x8686d254c55417c5), C64e(0x9a9af862d7622fd7),
+	C64e(0x666699ff55ffcc55), C64e(0x1111b6a794a72294),
+	C64e(0x8a8ac04acf4a0fcf), C64e(0xe9e9d9301030c910),
+	C64e(0x04040e0a060a0806), C64e(0xfefe66988198e781),
+	C64e(0xa0a0ab0bf00b5bf0), C64e(0x7878b4cc44ccf044),
+	C64e(0x2525f0d5bad54aba), C64e(0x4b4b753ee33e96e3),
+	C64e(0xa2a2ac0ef30e5ff3), C64e(0x5d5d4419fe19bafe),
+	C64e(0x8080db5bc05b1bc0), C64e(0x050580858a850a8a),
+	C64e(0x3f3fd3ecadec7ead), C64e(0x2121fedfbcdf42bc),
+	C64e(0x7070a8d848d8e048), C64e(0xf1f1fd0c040cf904),
+	C64e(0x6363197adf7ac6df), C64e(0x77772f58c158eec1),
+	C64e(0xafaf309f759f4575), C64e(0x4242e7a563a58463),
+	C64e(0x2020705030504030), C64e(0xe5e5cb2e1a2ed11a),
+	C64e(0xfdfdef120e12e10e), C64e(0xbfbf08b76db7656d),
+	C64e(0x818155d44cd4194c), C64e(0x1818243c143c3014),
+	C64e(0x2626795f355f4c35), C64e(0xc3c3b2712f719d2f),
+	C64e(0xbebe8638e13867e1), C64e(0x3535c8fda2fd6aa2),
+	C64e(0x8888c74fcc4f0bcc), C64e(0x2e2e654b394b5c39),
+	C64e(0x93936af957f93d57), C64e(0x5555580df20daaf2),
+	C64e(0xfcfc619d829de382), C64e(0x7a7ab3c947c9f447),
+	C64e(0xc8c827efacef8bac), C64e(0xbaba8832e7326fe7),
+	C64e(0x32324f7d2b7d642b), C64e(0xe6e642a495a4d795),
+	C64e(0xc0c03bfba0fb9ba0), C64e(0x1919aab398b33298),
+	C64e(0x9e9ef668d16827d1), C64e(0xa3a322817f815d7f),
+	C64e(0x4444eeaa66aa8866), C64e(0x5454d6827e82a87e),
+	C64e(0x3b3bdde6abe676ab), C64e(0x0b0b959e839e1683),
+	C64e(0x8c8cc945ca4503ca), C64e(0xc7c7bc7b297b9529),
+	C64e(0x6b6b056ed36ed6d3), C64e(0x28286c443c44503c),
+	C64e(0xa7a72c8b798b5579), C64e(0xbcbc813de23d63e2),
+	C64e(0x161631271d272c1d), C64e(0xadad379a769a4176),
+	C64e(0xdbdb964d3b4dad3b), C64e(0x64649efa56fac856),
+	C64e(0x7474a6d24ed2e84e), C64e(0x141436221e22281e),
+	C64e(0x9292e476db763fdb), C64e(0x0c0c121e0a1e180a),
+	C64e(0x4848fcb46cb4906c), C64e(0xb8b88f37e4376be4),
+	C64e(0x9f9f78e75de7255d), C64e(0xbdbd0fb26eb2616e),
+	C64e(0x4343692aef2a86ef), C64e(0xc4c435f1a6f193a6),
+	C64e(0x3939dae3a8e372a8), C64e(0x3131c6f7a4f762a4),
+	C64e(0xd3d38a593759bd37), C64e(0xf2f274868b86ff8b),
+	C64e(0xd5d583563256b132), C64e(0x8b8b4ec543c50d43),
+	C64e(0x6e6e85eb59ebdc59), C64e(0xdada18c2b7c2afb7),
+	C64e(0x01018e8f8c8f028c), C64e(0xb1b11dac64ac7964),
+	C64e(0x9c9cf16dd26d23d2), C64e(0x4949723be03b92e0),
+	C64e(0xd8d81fc7b4c7abb4), C64e(0xacacb915fa1543fa),
+	C64e(0xf3f3fa090709fd07), C64e(0xcfcfa06f256f8525),
+	C64e(0xcaca20eaafea8faf), C64e(0xf4f47d898e89f38e),
+	C64e(0x47476720e9208ee9), C64e(0x1010382818282018),
+	C64e(0x6f6f0b64d564ded5), C64e(0xf0f073838883fb88),
+	C64e(0x4a4afbb16fb1946f), C64e(0x5c5cca967296b872),
+	C64e(0x3838546c246c7024), C64e(0x57575f08f108aef1),
+	C64e(0x73732152c752e6c7), C64e(0x979764f351f33551),
+	C64e(0xcbcbae6523658d23), C64e(0xa1a125847c84597c),
+	C64e(0xe8e857bf9cbfcb9c), C64e(0x3e3e5d6321637c21),
+	C64e(0x9696ea7cdd7c37dd), C64e(0x61611e7fdc7fc2dc),
+	C64e(0x0d0d9c9186911a86), C64e(0x0f0f9b9485941e85),
+	C64e(0xe0e04bab90abdb90), C64e(0x7c7cbac642c6f842),
+	C64e(0x71712657c457e2c4), C64e(0xcccc29e5aae583aa),
+	C64e(0x9090e373d8733bd8), C64e(0x0606090f050f0c05),
+	C64e(0xf7f7f4030103f501), C64e(0x1c1c2a3612363812),
+	C64e(0xc2c23cfea3fe9fa3), C64e(0x6a6a8be15fe1d45f),
+	C64e(0xaeaebe10f91047f9), C64e(0x6969026bd06bd2d0),
+	C64e(0x1717bfa891a82e91), C64e(0x999971e858e82958),
+	C64e(0x3a3a536927697427), C64e(0x2727f7d0b9d04eb9),
+	C64e(0xd9d991483848a938), C64e(0xebebde351335cd13),
+	C64e(0x2b2be5ceb3ce56b3), C64e(0x2222775533554433),
+	C64e(0xd2d204d6bbd6bfbb), C64e(0xa9a9399070904970),
+	C64e(0x0707878089800e89), C64e(0x3333c1f2a7f266a7),
+	C64e(0x2d2decc1b6c15ab6), C64e(0x3c3c5a6622667822),
+	C64e(0x1515b8ad92ad2a92), C64e(0xc9c9a96020608920),
+	C64e(0x87875cdb49db1549), C64e(0xaaaab01aff1a4fff),
+	C64e(0x5050d8887888a078), C64e(0xa5a52b8e7a8e517a),
+	C64e(0x0303898a8f8a068f), C64e(0x59594a13f813b2f8),
+	C64e(0x0909929b809b1280), C64e(0x1a1a233917393417),
+	C64e(0x65651075da75cada), C64e(0xd7d784533153b531),
+	C64e(0x8484d551c65113c6), C64e(0xd0d003d3b8d3bbb8),
+	C64e(0x8282dc5ec35e1fc3), C64e(0x2929e2cbb0cb52b0),
+	C64e(0x5a5ac3997799b477), C64e(0x1e1e2d3311333c11),
+	C64e(0x7b7b3d46cb46f6cb), C64e(0xa8a8b71ffc1f4bfc),
+	C64e(0x6d6d0c61d661dad6), C64e(0x2c2c624e3a4e583a)
+};
+
+static const sph_u64 T2[] = {
+	C64e(0xa5c6c632f4a5f497), C64e(0x84f8f86f978497eb),
+	C64e(0x99eeee5eb099b0c7), C64e(0x8df6f67a8c8d8cf7),
+	C64e(0x0dffffe8170d17e5), C64e(0xbdd6d60adcbddcb7),
+	C64e(0xb1dede16c8b1c8a7), C64e(0x5491916dfc54fc39),
+	C64e(0x50606090f050f0c0), C64e(0x0302020705030504),
+	C64e(0xa9cece2ee0a9e087), C64e(0x7d5656d1877d87ac),
+	C64e(0x19e7e7cc2b192bd5), C64e(0x62b5b513a662a671),
+	C64e(0xe64d4d7c31e6319a), C64e(0x9aecec59b59ab5c3),
+	C64e(0x458f8f40cf45cf05), C64e(0x9d1f1fa3bc9dbc3e),
+	C64e(0x40898949c040c009), C64e(0x87fafa68928792ef),
+	C64e(0x15efefd03f153fc5), C64e(0xebb2b29426eb267f),
+	C64e(0xc98e8ece40c94007), C64e(0x0bfbfbe61d0b1ded),
+	C64e(0xec41416e2fec2f82), C64e(0x67b3b31aa967a97d),
+	C64e(0xfd5f5f431cfd1cbe), C64e(0xea45456025ea258a),
+	C64e(0xbf2323f9dabfda46), C64e(0xf753535102f702a6),
+	C64e(0x96e4e445a196a1d3), C64e(0x5b9b9b76ed5bed2d),
+	C64e(0xc27575285dc25dea), C64e(0x1ce1e1c5241c24d9),
+	C64e(0xae3d3dd4e9aee97a), C64e(0x6a4c4cf2be6abe98),
+	C64e(0x5a6c6c82ee5aeed8), C64e(0x417e7ebdc341c3fc),
+	C64e(0x02f5f5f3060206f1), C64e(0x4f838352d14fd11d),
+	C64e(0x5c68688ce45ce4d0), C64e(0xf451515607f407a2),
+	C64e(0x34d1d18d5c345cb9), C64e(0x08f9f9e1180818e9),
+	C64e(0x93e2e24cae93aedf), C64e(0x73abab3e9573954d),
+	C64e(0x53626297f553f5c4), C64e(0x3f2a2a6b413f4154),
+	C64e(0x0c08081c140c1410), C64e(0x52959563f652f631),
+	C64e(0x654646e9af65af8c), C64e(0x5e9d9d7fe25ee221),
+	C64e(0x2830304878287860), C64e(0xa13737cff8a1f86e),
+	C64e(0x0f0a0a1b110f1114), C64e(0xb52f2febc4b5c45e),
+	C64e(0x090e0e151b091b1c), C64e(0x3624247e5a365a48),
+	C64e(0x9b1b1badb69bb636), C64e(0x3ddfdf98473d47a5),
+	C64e(0x26cdcda76a266a81), C64e(0x694e4ef5bb69bb9c),
+	C64e(0xcd7f7f334ccd4cfe), C64e(0x9feaea50ba9fbacf),
+	C64e(0x1b12123f2d1b2d24), C64e(0x9e1d1da4b99eb93a),
+	C64e(0x745858c49c749cb0), C64e(0x2e343446722e7268),
+	C64e(0x2d363641772d776c), C64e(0xb2dcdc11cdb2cda3),
+	C64e(0xeeb4b49d29ee2973), C64e(0xfb5b5b4d16fb16b6),
+	C64e(0xf6a4a4a501f60153), C64e(0x4d7676a1d74dd7ec),
+	C64e(0x61b7b714a361a375), C64e(0xce7d7d3449ce49fa),
+	C64e(0x7b5252df8d7b8da4), C64e(0x3edddd9f423e42a1),
+	C64e(0x715e5ecd937193bc), C64e(0x971313b1a297a226),
+	C64e(0xf5a6a6a204f50457), C64e(0x68b9b901b868b869),
+	C64e(0x0000000000000000), C64e(0x2cc1c1b5742c7499),
+	C64e(0x604040e0a060a080), C64e(0x1fe3e3c2211f21dd),
+	C64e(0xc879793a43c843f2), C64e(0xedb6b69a2ced2c77),
+	C64e(0xbed4d40dd9bed9b3), C64e(0x468d8d47ca46ca01),
+	C64e(0xd967671770d970ce), C64e(0x4b7272afdd4bdde4),
+	C64e(0xde9494ed79de7933), C64e(0xd49898ff67d4672b),
+	C64e(0xe8b0b09323e8237b), C64e(0x4a85855bde4ade11),
+	C64e(0x6bbbbb06bd6bbd6d), C64e(0x2ac5c5bb7e2a7e91),
+	C64e(0xe54f4f7b34e5349e), C64e(0x16ededd73a163ac1),
+	C64e(0xc58686d254c55417), C64e(0xd79a9af862d7622f),
+	C64e(0x55666699ff55ffcc), C64e(0x941111b6a794a722),
+	C64e(0xcf8a8ac04acf4a0f), C64e(0x10e9e9d9301030c9),
+	C64e(0x0604040e0a060a08), C64e(0x81fefe66988198e7),
+	C64e(0xf0a0a0ab0bf00b5b), C64e(0x447878b4cc44ccf0),
+	C64e(0xba2525f0d5bad54a), C64e(0xe34b4b753ee33e96),
+	C64e(0xf3a2a2ac0ef30e5f), C64e(0xfe5d5d4419fe19ba),
+	C64e(0xc08080db5bc05b1b), C64e(0x8a050580858a850a),
+	C64e(0xad3f3fd3ecadec7e), C64e(0xbc2121fedfbcdf42),
+	C64e(0x487070a8d848d8e0), C64e(0x04f1f1fd0c040cf9),
+	C64e(0xdf6363197adf7ac6), C64e(0xc177772f58c158ee),
+	C64e(0x75afaf309f759f45), C64e(0x634242e7a563a584),
+	C64e(0x3020207050305040), C64e(0x1ae5e5cb2e1a2ed1),
+	C64e(0x0efdfdef120e12e1), C64e(0x6dbfbf08b76db765),
+	C64e(0x4c818155d44cd419), C64e(0x141818243c143c30),
+	C64e(0x352626795f355f4c), C64e(0x2fc3c3b2712f719d),
+	C64e(0xe1bebe8638e13867), C64e(0xa23535c8fda2fd6a),
+	C64e(0xcc8888c74fcc4f0b), C64e(0x392e2e654b394b5c),
+	C64e(0x5793936af957f93d), C64e(0xf25555580df20daa),
+	C64e(0x82fcfc619d829de3), C64e(0x477a7ab3c947c9f4),
+	C64e(0xacc8c827efacef8b), C64e(0xe7baba8832e7326f),
+	C64e(0x2b32324f7d2b7d64), C64e(0x95e6e642a495a4d7),
+	C64e(0xa0c0c03bfba0fb9b), C64e(0x981919aab398b332),
+	C64e(0xd19e9ef668d16827), C64e(0x7fa3a322817f815d),
+	C64e(0x664444eeaa66aa88), C64e(0x7e5454d6827e82a8),
+	C64e(0xab3b3bdde6abe676), C64e(0x830b0b959e839e16),
+	C64e(0xca8c8cc945ca4503), C64e(0x29c7c7bc7b297b95),
+	C64e(0xd36b6b056ed36ed6), C64e(0x3c28286c443c4450),
+	C64e(0x79a7a72c8b798b55), C64e(0xe2bcbc813de23d63),
+	C64e(0x1d161631271d272c), C64e(0x76adad379a769a41),
+	C64e(0x3bdbdb964d3b4dad), C64e(0x5664649efa56fac8),
+	C64e(0x4e7474a6d24ed2e8), C64e(0x1e141436221e2228),
+	C64e(0xdb9292e476db763f), C64e(0x0a0c0c121e0a1e18),
+	C64e(0x6c4848fcb46cb490), C64e(0xe4b8b88f37e4376b),
+	C64e(0x5d9f9f78e75de725), C64e(0x6ebdbd0fb26eb261),
+	C64e(0xef4343692aef2a86), C64e(0xa6c4c435f1a6f193),
+	C64e(0xa83939dae3a8e372), C64e(0xa43131c6f7a4f762),
+	C64e(0x37d3d38a593759bd), C64e(0x8bf2f274868b86ff),
+	C64e(0x32d5d583563256b1), C64e(0x438b8b4ec543c50d),
+	C64e(0x596e6e85eb59ebdc), C64e(0xb7dada18c2b7c2af),
+	C64e(0x8c01018e8f8c8f02), C64e(0x64b1b11dac64ac79),
+	C64e(0xd29c9cf16dd26d23), C64e(0xe04949723be03b92),
+	C64e(0xb4d8d81fc7b4c7ab), C64e(0xfaacacb915fa1543),
+	C64e(0x07f3f3fa090709fd), C64e(0x25cfcfa06f256f85),
+	C64e(0xafcaca20eaafea8f), C64e(0x8ef4f47d898e89f3),
+	C64e(0xe947476720e9208e), C64e(0x1810103828182820),
+	C64e(0xd56f6f0b64d564de), C64e(0x88f0f073838883fb),
+	C64e(0x6f4a4afbb16fb194), C64e(0x725c5cca967296b8),
+	C64e(0x243838546c246c70), C64e(0xf157575f08f108ae),
+	C64e(0xc773732152c752e6), C64e(0x51979764f351f335),
+	C64e(0x23cbcbae6523658d), C64e(0x7ca1a125847c8459),
+	C64e(0x9ce8e857bf9cbfcb), C64e(0x213e3e5d6321637c),
+	C64e(0xdd9696ea7cdd7c37), C64e(0xdc61611e7fdc7fc2),
+	C64e(0x860d0d9c9186911a), C64e(0x850f0f9b9485941e),
+	C64e(0x90e0e04bab90abdb), C64e(0x427c7cbac642c6f8),
+	C64e(0xc471712657c457e2), C64e(0xaacccc29e5aae583),
+	C64e(0xd89090e373d8733b), C64e(0x050606090f050f0c),
+	C64e(0x01f7f7f4030103f5), C64e(0x121c1c2a36123638),
+	C64e(0xa3c2c23cfea3fe9f), C64e(0x5f6a6a8be15fe1d4),
+	C64e(0xf9aeaebe10f91047), C64e(0xd06969026bd06bd2),
+	C64e(0x911717bfa891a82e), C64e(0x58999971e858e829),
+	C64e(0x273a3a5369276974), C64e(0xb92727f7d0b9d04e),
+	C64e(0x38d9d991483848a9), C64e(0x13ebebde351335cd),
+	C64e(0xb32b2be5ceb3ce56), C64e(0x3322227755335544),
+	C64e(0xbbd2d204d6bbd6bf), C64e(0x70a9a93990709049),
+	C64e(0x890707878089800e), C64e(0xa73333c1f2a7f266),
+	C64e(0xb62d2decc1b6c15a), C64e(0x223c3c5a66226678),
+	C64e(0x921515b8ad92ad2a), C64e(0x20c9c9a960206089),
+	C64e(0x4987875cdb49db15), C64e(0xffaaaab01aff1a4f),
+	C64e(0x785050d8887888a0), C64e(0x7aa5a52b8e7a8e51),
+	C64e(0x8f0303898a8f8a06), C64e(0xf859594a13f813b2),
+	C64e(0x800909929b809b12), C64e(0x171a1a2339173934),
+	C64e(0xda65651075da75ca), C64e(0x31d7d784533153b5),
+	C64e(0xc68484d551c65113), C64e(0xb8d0d003d3b8d3bb),
+	C64e(0xc38282dc5ec35e1f), C64e(0xb02929e2cbb0cb52),
+	C64e(0x775a5ac3997799b4), C64e(0x111e1e2d3311333c),
+	C64e(0xcb7b7b3d46cb46f6), C64e(0xfca8a8b71ffc1f4b),
+	C64e(0xd66d6d0c61d661da), C64e(0x3a2c2c624e3a4e58)
+};
+
+static const sph_u64 T3[] = {
+	C64e(0x97a5c6c632f4a5f4), C64e(0xeb84f8f86f978497),
+	C64e(0xc799eeee5eb099b0), C64e(0xf78df6f67a8c8d8c),
+	C64e(0xe50dffffe8170d17), C64e(0xb7bdd6d60adcbddc),
+	C64e(0xa7b1dede16c8b1c8), C64e(0x395491916dfc54fc),
+	C64e(0xc050606090f050f0), C64e(0x0403020207050305),
+	C64e(0x87a9cece2ee0a9e0), C64e(0xac7d5656d1877d87),
+	C64e(0xd519e7e7cc2b192b), C64e(0x7162b5b513a662a6),
+	C64e(0x9ae64d4d7c31e631), C64e(0xc39aecec59b59ab5),
+	C64e(0x05458f8f40cf45cf), C64e(0x3e9d1f1fa3bc9dbc),
+	C64e(0x0940898949c040c0), C64e(0xef87fafa68928792),
+	C64e(0xc515efefd03f153f), C64e(0x7febb2b29426eb26),
+	C64e(0x07c98e8ece40c940), C64e(0xed0bfbfbe61d0b1d),
+	C64e(0x82ec41416e2fec2f), C64e(0x7d67b3b31aa967a9),
+	C64e(0xbefd5f5f431cfd1c), C64e(0x8aea45456025ea25),
+	C64e(0x46bf2323f9dabfda), C64e(0xa6f753535102f702),
+	C64e(0xd396e4e445a196a1), C64e(0x2d5b9b9b76ed5bed),
+	C64e(0xeac27575285dc25d), C64e(0xd91ce1e1c5241c24),
+	C64e(0x7aae3d3dd4e9aee9), C64e(0x986a4c4cf2be6abe),
+	C64e(0xd85a6c6c82ee5aee), C64e(0xfc417e7ebdc341c3),
+	C64e(0xf102f5f5f3060206), C64e(0x1d4f838352d14fd1),
+	C64e(0xd05c68688ce45ce4), C64e(0xa2f451515607f407),
+	C64e(0xb934d1d18d5c345c), C64e(0xe908f9f9e1180818),
+	C64e(0xdf93e2e24cae93ae), C64e(0x4d73abab3e957395),
+	C64e(0xc453626297f553f5), C64e(0x543f2a2a6b413f41),
+	C64e(0x100c08081c140c14), C64e(0x3152959563f652f6),
+	C64e(0x8c654646e9af65af), C64e(0x215e9d9d7fe25ee2),
+	C64e(0x6028303048782878), C64e(0x6ea13737cff8a1f8),
+	C64e(0x140f0a0a1b110f11), C64e(0x5eb52f2febc4b5c4),
+	C64e(0x1c090e0e151b091b), C64e(0x483624247e5a365a),
+	C64e(0x369b1b1badb69bb6), C64e(0xa53ddfdf98473d47),
+	C64e(0x8126cdcda76a266a), C64e(0x9c694e4ef5bb69bb),
+	C64e(0xfecd7f7f334ccd4c), C64e(0xcf9feaea50ba9fba),
+	C64e(0x241b12123f2d1b2d), C64e(0x3a9e1d1da4b99eb9),
+	C64e(0xb0745858c49c749c), C64e(0x682e343446722e72),
+	C64e(0x6c2d363641772d77), C64e(0xa3b2dcdc11cdb2cd),
+	C64e(0x73eeb4b49d29ee29), C64e(0xb6fb5b5b4d16fb16),
+	C64e(0x53f6a4a4a501f601), C64e(0xec4d7676a1d74dd7),
+	C64e(0x7561b7b714a361a3), C64e(0xface7d7d3449ce49),
+	C64e(0xa47b5252df8d7b8d), C64e(0xa13edddd9f423e42),
+	C64e(0xbc715e5ecd937193), C64e(0x26971313b1a297a2),
+	C64e(0x57f5a6a6a204f504), C64e(0x6968b9b901b868b8),
+	C64e(0x0000000000000000), C64e(0x992cc1c1b5742c74),
+	C64e(0x80604040e0a060a0), C64e(0xdd1fe3e3c2211f21),
+	C64e(0xf2c879793a43c843), C64e(0x77edb6b69a2ced2c),
+	C64e(0xb3bed4d40dd9bed9), C64e(0x01468d8d47ca46ca),
+	C64e(0xced967671770d970), C64e(0xe44b7272afdd4bdd),
+	C64e(0x33de9494ed79de79), C64e(0x2bd49898ff67d467),
+	C64e(0x7be8b0b09323e823), C64e(0x114a85855bde4ade),
+	C64e(0x6d6bbbbb06bd6bbd), C64e(0x912ac5c5bb7e2a7e),
+	C64e(0x9ee54f4f7b34e534), C64e(0xc116ededd73a163a),
+	C64e(0x17c58686d254c554), C64e(0x2fd79a9af862d762),
+	C64e(0xcc55666699ff55ff), C64e(0x22941111b6a794a7),
+	C64e(0x0fcf8a8ac04acf4a), C64e(0xc910e9e9d9301030),
+	C64e(0x080604040e0a060a), C64e(0xe781fefe66988198),
+	C64e(0x5bf0a0a0ab0bf00b), C64e(0xf0447878b4cc44cc),
+	C64e(0x4aba2525f0d5bad5), C64e(0x96e34b4b753ee33e),
+	C64e(0x5ff3a2a2ac0ef30e), C64e(0xbafe5d5d4419fe19),
+	C64e(0x1bc08080db5bc05b), C64e(0x0a8a050580858a85),
+	C64e(0x7ead3f3fd3ecadec), C64e(0x42bc2121fedfbcdf),
+	C64e(0xe0487070a8d848d8), C64e(0xf904f1f1fd0c040c),
+	C64e(0xc6df6363197adf7a), C64e(0xeec177772f58c158),
+	C64e(0x4575afaf309f759f), C64e(0x84634242e7a563a5),
+	C64e(0x4030202070503050), C64e(0xd11ae5e5cb2e1a2e),
+	C64e(0xe10efdfdef120e12), C64e(0x656dbfbf08b76db7),
+	C64e(0x194c818155d44cd4), C64e(0x30141818243c143c),
+	C64e(0x4c352626795f355f), C64e(0x9d2fc3c3b2712f71),
+	C64e(0x67e1bebe8638e138), C64e(0x6aa23535c8fda2fd),
+	C64e(0x0bcc8888c74fcc4f), C64e(0x5c392e2e654b394b),
+	C64e(0x3d5793936af957f9), C64e(0xaaf25555580df20d),
+	C64e(0xe382fcfc619d829d), C64e(0xf4477a7ab3c947c9),
+	C64e(0x8bacc8c827efacef), C64e(0x6fe7baba8832e732),
+	C64e(0x642b32324f7d2b7d), C64e(0xd795e6e642a495a4),
+	C64e(0x9ba0c0c03bfba0fb), C64e(0x32981919aab398b3),
+	C64e(0x27d19e9ef668d168), C64e(0x5d7fa3a322817f81),
+	C64e(0x88664444eeaa66aa), C64e(0xa87e5454d6827e82),
+	C64e(0x76ab3b3bdde6abe6), C64e(0x16830b0b959e839e),
+	C64e(0x03ca8c8cc945ca45), C64e(0x9529c7c7bc7b297b),
+	C64e(0xd6d36b6b056ed36e), C64e(0x503c28286c443c44),
+	C64e(0x5579a7a72c8b798b), C64e(0x63e2bcbc813de23d),
+	C64e(0x2c1d161631271d27), C64e(0x4176adad379a769a),
+	C64e(0xad3bdbdb964d3b4d), C64e(0xc85664649efa56fa),
+	C64e(0xe84e7474a6d24ed2), C64e(0x281e141436221e22),
+	C64e(0x3fdb9292e476db76), C64e(0x180a0c0c121e0a1e),
+	C64e(0x906c4848fcb46cb4), C64e(0x6be4b8b88f37e437),
+	C64e(0x255d9f9f78e75de7), C64e(0x616ebdbd0fb26eb2),
+	C64e(0x86ef4343692aef2a), C64e(0x93a6c4c435f1a6f1),
+	C64e(0x72a83939dae3a8e3), C64e(0x62a43131c6f7a4f7),
+	C64e(0xbd37d3d38a593759), C64e(0xff8bf2f274868b86),
+	C64e(0xb132d5d583563256), C64e(0x0d438b8b4ec543c5),
+	C64e(0xdc596e6e85eb59eb), C64e(0xafb7dada18c2b7c2),
+	C64e(0x028c01018e8f8c8f), C64e(0x7964b1b11dac64ac),
+	C64e(0x23d29c9cf16dd26d), C64e(0x92e04949723be03b),
+	C64e(0xabb4d8d81fc7b4c7), C64e(0x43faacacb915fa15),
+	C64e(0xfd07f3f3fa090709), C64e(0x8525cfcfa06f256f),
+	C64e(0x8fafcaca20eaafea), C64e(0xf38ef4f47d898e89),
+	C64e(0x8ee947476720e920), C64e(0x2018101038281828),
+	C64e(0xded56f6f0b64d564), C64e(0xfb88f0f073838883),
+	C64e(0x946f4a4afbb16fb1), C64e(0xb8725c5cca967296),
+	C64e(0x70243838546c246c), C64e(0xaef157575f08f108),
+	C64e(0xe6c773732152c752), C64e(0x3551979764f351f3),
+	C64e(0x8d23cbcbae652365), C64e(0x597ca1a125847c84),
+	C64e(0xcb9ce8e857bf9cbf), C64e(0x7c213e3e5d632163),
+	C64e(0x37dd9696ea7cdd7c), C64e(0xc2dc61611e7fdc7f),
+	C64e(0x1a860d0d9c918691), C64e(0x1e850f0f9b948594),
+	C64e(0xdb90e0e04bab90ab), C64e(0xf8427c7cbac642c6),
+	C64e(0xe2c471712657c457), C64e(0x83aacccc29e5aae5),
+	C64e(0x3bd89090e373d873), C64e(0x0c050606090f050f),
+	C64e(0xf501f7f7f4030103), C64e(0x38121c1c2a361236),
+	C64e(0x9fa3c2c23cfea3fe), C64e(0xd45f6a6a8be15fe1),
+	C64e(0x47f9aeaebe10f910), C64e(0xd2d06969026bd06b),
+	C64e(0x2e911717bfa891a8), C64e(0x2958999971e858e8),
+	C64e(0x74273a3a53692769), C64e(0x4eb92727f7d0b9d0),
+	C64e(0xa938d9d991483848), C64e(0xcd13ebebde351335),
+	C64e(0x56b32b2be5ceb3ce), C64e(0x4433222277553355),
+	C64e(0xbfbbd2d204d6bbd6), C64e(0x4970a9a939907090),
+	C64e(0x0e89070787808980), C64e(0x66a73333c1f2a7f2),
+	C64e(0x5ab62d2decc1b6c1), C64e(0x78223c3c5a662266),
+	C64e(0x2a921515b8ad92ad), C64e(0x8920c9c9a9602060),
+	C64e(0x154987875cdb49db), C64e(0x4fffaaaab01aff1a),
+	C64e(0xa0785050d8887888), C64e(0x517aa5a52b8e7a8e),
+	C64e(0x068f0303898a8f8a), C64e(0xb2f859594a13f813),
+	C64e(0x12800909929b809b), C64e(0x34171a1a23391739),
+	C64e(0xcada65651075da75), C64e(0xb531d7d784533153),
+	C64e(0x13c68484d551c651), C64e(0xbbb8d0d003d3b8d3),
+	C64e(0x1fc38282dc5ec35e), C64e(0x52b02929e2cbb0cb),
+	C64e(0xb4775a5ac3997799), C64e(0x3c111e1e2d331133),
+	C64e(0xf6cb7b7b3d46cb46), C64e(0x4bfca8a8b71ffc1f),
+	C64e(0xdad66d6d0c61d661), C64e(0x583a2c2c624e3a4e)
+};
+
+#endif
+
+static const sph_u64 T4[] = {
+	C64e(0xf497a5c6c632f4a5), C64e(0x97eb84f8f86f9784),
+	C64e(0xb0c799eeee5eb099), C64e(0x8cf78df6f67a8c8d),
+	C64e(0x17e50dffffe8170d), C64e(0xdcb7bdd6d60adcbd),
+	C64e(0xc8a7b1dede16c8b1), C64e(0xfc395491916dfc54),
+	C64e(0xf0c050606090f050), C64e(0x0504030202070503),
+	C64e(0xe087a9cece2ee0a9), C64e(0x87ac7d5656d1877d),
+	C64e(0x2bd519e7e7cc2b19), C64e(0xa67162b5b513a662),
+	C64e(0x319ae64d4d7c31e6), C64e(0xb5c39aecec59b59a),
+	C64e(0xcf05458f8f40cf45), C64e(0xbc3e9d1f1fa3bc9d),
+	C64e(0xc00940898949c040), C64e(0x92ef87fafa689287),
+	C64e(0x3fc515efefd03f15), C64e(0x267febb2b29426eb),
+	C64e(0x4007c98e8ece40c9), C64e(0x1ded0bfbfbe61d0b),
+	C64e(0x2f82ec41416e2fec), C64e(0xa97d67b3b31aa967),
+	C64e(0x1cbefd5f5f431cfd), C64e(0x258aea45456025ea),
+	C64e(0xda46bf2323f9dabf), C64e(0x02a6f753535102f7),
+	C64e(0xa1d396e4e445a196), C64e(0xed2d5b9b9b76ed5b),
+	C64e(0x5deac27575285dc2), C64e(0x24d91ce1e1c5241c),
+	C64e(0xe97aae3d3dd4e9ae), C64e(0xbe986a4c4cf2be6a),
+	C64e(0xeed85a6c6c82ee5a), C64e(0xc3fc417e7ebdc341),
+	C64e(0x06f102f5f5f30602), C64e(0xd11d4f838352d14f),
+	C64e(0xe4d05c68688ce45c), C64e(0x07a2f451515607f4),
+	C64e(0x5cb934d1d18d5c34), C64e(0x18e908f9f9e11808),
+	C64e(0xaedf93e2e24cae93), C64e(0x954d73abab3e9573),
+	C64e(0xf5c453626297f553), C64e(0x41543f2a2a6b413f),
+	C64e(0x14100c08081c140c), C64e(0xf63152959563f652),
+	C64e(0xaf8c654646e9af65), C64e(0xe2215e9d9d7fe25e),
+	C64e(0x7860283030487828), C64e(0xf86ea13737cff8a1),
+	C64e(0x11140f0a0a1b110f), C64e(0xc45eb52f2febc4b5),
+	C64e(0x1b1c090e0e151b09), C64e(0x5a483624247e5a36),
+	C64e(0xb6369b1b1badb69b), C64e(0x47a53ddfdf98473d),
+	C64e(0x6a8126cdcda76a26), C64e(0xbb9c694e4ef5bb69),
+	C64e(0x4cfecd7f7f334ccd), C64e(0xbacf9feaea50ba9f),
+	C64e(0x2d241b12123f2d1b), C64e(0xb93a9e1d1da4b99e),
+	C64e(0x9cb0745858c49c74), C64e(0x72682e343446722e),
+	C64e(0x776c2d363641772d), C64e(0xcda3b2dcdc11cdb2),
+	C64e(0x2973eeb4b49d29ee), C64e(0x16b6fb5b5b4d16fb),
+	C64e(0x0153f6a4a4a501f6), C64e(0xd7ec4d7676a1d74d),
+	C64e(0xa37561b7b714a361), C64e(0x49face7d7d3449ce),
+	C64e(0x8da47b5252df8d7b), C64e(0x42a13edddd9f423e),
+	C64e(0x93bc715e5ecd9371), C64e(0xa226971313b1a297),
+	C64e(0x0457f5a6a6a204f5), C64e(0xb86968b9b901b868),
+	C64e(0x0000000000000000), C64e(0x74992cc1c1b5742c),
+	C64e(0xa080604040e0a060), C64e(0x21dd1fe3e3c2211f),
+	C64e(0x43f2c879793a43c8), C64e(0x2c77edb6b69a2ced),
+	C64e(0xd9b3bed4d40dd9be), C64e(0xca01468d8d47ca46),
+	C64e(0x70ced967671770d9), C64e(0xdde44b7272afdd4b),
+	C64e(0x7933de9494ed79de), C64e(0x672bd49898ff67d4),
+	C64e(0x237be8b0b09323e8), C64e(0xde114a85855bde4a),
+	C64e(0xbd6d6bbbbb06bd6b), C64e(0x7e912ac5c5bb7e2a),
+	C64e(0x349ee54f4f7b34e5), C64e(0x3ac116ededd73a16),
+	C64e(0x5417c58686d254c5), C64e(0x622fd79a9af862d7),
+	C64e(0xffcc55666699ff55), C64e(0xa722941111b6a794),
+	C64e(0x4a0fcf8a8ac04acf), C64e(0x30c910e9e9d93010),
+	C64e(0x0a080604040e0a06), C64e(0x98e781fefe669881),
+	C64e(0x0b5bf0a0a0ab0bf0), C64e(0xccf0447878b4cc44),
+	C64e(0xd54aba2525f0d5ba), C64e(0x3e96e34b4b753ee3),
+	C64e(0x0e5ff3a2a2ac0ef3), C64e(0x19bafe5d5d4419fe),
+	C64e(0x5b1bc08080db5bc0), C64e(0x850a8a050580858a),
+	C64e(0xec7ead3f3fd3ecad), C64e(0xdf42bc2121fedfbc),
+	C64e(0xd8e0487070a8d848), C64e(0x0cf904f1f1fd0c04),
+	C64e(0x7ac6df6363197adf), C64e(0x58eec177772f58c1),
+	C64e(0x9f4575afaf309f75), C64e(0xa584634242e7a563),
+	C64e(0x5040302020705030), C64e(0x2ed11ae5e5cb2e1a),
+	C64e(0x12e10efdfdef120e), C64e(0xb7656dbfbf08b76d),
+	C64e(0xd4194c818155d44c), C64e(0x3c30141818243c14),
+	C64e(0x5f4c352626795f35), C64e(0x719d2fc3c3b2712f),
+	C64e(0x3867e1bebe8638e1), C64e(0xfd6aa23535c8fda2),
+	C64e(0x4f0bcc8888c74fcc), C64e(0x4b5c392e2e654b39),
+	C64e(0xf93d5793936af957), C64e(0x0daaf25555580df2),
+	C64e(0x9de382fcfc619d82), C64e(0xc9f4477a7ab3c947),
+	C64e(0xef8bacc8c827efac), C64e(0x326fe7baba8832e7),
+	C64e(0x7d642b32324f7d2b), C64e(0xa4d795e6e642a495),
+	C64e(0xfb9ba0c0c03bfba0), C64e(0xb332981919aab398),
+	C64e(0x6827d19e9ef668d1), C64e(0x815d7fa3a322817f),
+	C64e(0xaa88664444eeaa66), C64e(0x82a87e5454d6827e),
+	C64e(0xe676ab3b3bdde6ab), C64e(0x9e16830b0b959e83),
+	C64e(0x4503ca8c8cc945ca), C64e(0x7b9529c7c7bc7b29),
+	C64e(0x6ed6d36b6b056ed3), C64e(0x44503c28286c443c),
+	C64e(0x8b5579a7a72c8b79), C64e(0x3d63e2bcbc813de2),
+	C64e(0x272c1d161631271d), C64e(0x9a4176adad379a76),
+	C64e(0x4dad3bdbdb964d3b), C64e(0xfac85664649efa56),
+	C64e(0xd2e84e7474a6d24e), C64e(0x22281e141436221e),
+	C64e(0x763fdb9292e476db), C64e(0x1e180a0c0c121e0a),
+	C64e(0xb4906c4848fcb46c), C64e(0x376be4b8b88f37e4),
+	C64e(0xe7255d9f9f78e75d), C64e(0xb2616ebdbd0fb26e),
+	C64e(0x2a86ef4343692aef), C64e(0xf193a6c4c435f1a6),
+	C64e(0xe372a83939dae3a8), C64e(0xf762a43131c6f7a4),
+	C64e(0x59bd37d3d38a5937), C64e(0x86ff8bf2f274868b),
+	C64e(0x56b132d5d5835632), C64e(0xc50d438b8b4ec543),
+	C64e(0xebdc596e6e85eb59), C64e(0xc2afb7dada18c2b7),
+	C64e(0x8f028c01018e8f8c), C64e(0xac7964b1b11dac64),
+	C64e(0x6d23d29c9cf16dd2), C64e(0x3b92e04949723be0),
+	C64e(0xc7abb4d8d81fc7b4), C64e(0x1543faacacb915fa),
+	C64e(0x09fd07f3f3fa0907), C64e(0x6f8525cfcfa06f25),
+	C64e(0xea8fafcaca20eaaf), C64e(0x89f38ef4f47d898e),
+	C64e(0x208ee947476720e9), C64e(0x2820181010382818),
+	C64e(0x64ded56f6f0b64d5), C64e(0x83fb88f0f0738388),
+	C64e(0xb1946f4a4afbb16f), C64e(0x96b8725c5cca9672),
+	C64e(0x6c70243838546c24), C64e(0x08aef157575f08f1),
+	C64e(0x52e6c773732152c7), C64e(0xf33551979764f351),
+	C64e(0x658d23cbcbae6523), C64e(0x84597ca1a125847c),
+	C64e(0xbfcb9ce8e857bf9c), C64e(0x637c213e3e5d6321),
+	C64e(0x7c37dd9696ea7cdd), C64e(0x7fc2dc61611e7fdc),
+	C64e(0x911a860d0d9c9186), C64e(0x941e850f0f9b9485),
+	C64e(0xabdb90e0e04bab90), C64e(0xc6f8427c7cbac642),
+	C64e(0x57e2c471712657c4), C64e(0xe583aacccc29e5aa),
+	C64e(0x733bd89090e373d8), C64e(0x0f0c050606090f05),
+	C64e(0x03f501f7f7f40301), C64e(0x3638121c1c2a3612),
+	C64e(0xfe9fa3c2c23cfea3), C64e(0xe1d45f6a6a8be15f),
+	C64e(0x1047f9aeaebe10f9), C64e(0x6bd2d06969026bd0),
+	C64e(0xa82e911717bfa891), C64e(0xe82958999971e858),
+	C64e(0x6974273a3a536927), C64e(0xd04eb92727f7d0b9),
+	C64e(0x48a938d9d9914838), C64e(0x35cd13ebebde3513),
+	C64e(0xce56b32b2be5ceb3), C64e(0x5544332222775533),
+	C64e(0xd6bfbbd2d204d6bb), C64e(0x904970a9a9399070),
+	C64e(0x800e890707878089), C64e(0xf266a73333c1f2a7),
+	C64e(0xc15ab62d2decc1b6), C64e(0x6678223c3c5a6622),
+	C64e(0xad2a921515b8ad92), C64e(0x608920c9c9a96020),
+	C64e(0xdb154987875cdb49), C64e(0x1a4fffaaaab01aff),
+	C64e(0x88a0785050d88878), C64e(0x8e517aa5a52b8e7a),
+	C64e(0x8a068f0303898a8f), C64e(0x13b2f859594a13f8),
+	C64e(0x9b12800909929b80), C64e(0x3934171a1a233917),
+	C64e(0x75cada65651075da), C64e(0x53b531d7d7845331),
+	C64e(0x5113c68484d551c6), C64e(0xd3bbb8d0d003d3b8),
+	C64e(0x5e1fc38282dc5ec3), C64e(0xcb52b02929e2cbb0),
+	C64e(0x99b4775a5ac39977), C64e(0x333c111e1e2d3311),
+	C64e(0x46f6cb7b7b3d46cb), C64e(0x1f4bfca8a8b71ffc),
+	C64e(0x61dad66d6d0c61d6), C64e(0x4e583a2c2c624e3a)
+};
+
+#if !SPH_SMALL_FOOTPRINT_GROESTL
+
+static const sph_u64 T5[] = {
+	C64e(0xa5f497a5c6c632f4), C64e(0x8497eb84f8f86f97),
+	C64e(0x99b0c799eeee5eb0), C64e(0x8d8cf78df6f67a8c),
+	C64e(0x0d17e50dffffe817), C64e(0xbddcb7bdd6d60adc),
+	C64e(0xb1c8a7b1dede16c8), C64e(0x54fc395491916dfc),
+	C64e(0x50f0c050606090f0), C64e(0x0305040302020705),
+	C64e(0xa9e087a9cece2ee0), C64e(0x7d87ac7d5656d187),
+	C64e(0x192bd519e7e7cc2b), C64e(0x62a67162b5b513a6),
+	C64e(0xe6319ae64d4d7c31), C64e(0x9ab5c39aecec59b5),
+	C64e(0x45cf05458f8f40cf), C64e(0x9dbc3e9d1f1fa3bc),
+	C64e(0x40c00940898949c0), C64e(0x8792ef87fafa6892),
+	C64e(0x153fc515efefd03f), C64e(0xeb267febb2b29426),
+	C64e(0xc94007c98e8ece40), C64e(0x0b1ded0bfbfbe61d),
+	C64e(0xec2f82ec41416e2f), C64e(0x67a97d67b3b31aa9),
+	C64e(0xfd1cbefd5f5f431c), C64e(0xea258aea45456025),
+	C64e(0xbfda46bf2323f9da), C64e(0xf702a6f753535102),
+	C64e(0x96a1d396e4e445a1), C64e(0x5bed2d5b9b9b76ed),
+	C64e(0xc25deac27575285d), C64e(0x1c24d91ce1e1c524),
+	C64e(0xaee97aae3d3dd4e9), C64e(0x6abe986a4c4cf2be),
+	C64e(0x5aeed85a6c6c82ee), C64e(0x41c3fc417e7ebdc3),
+	C64e(0x0206f102f5f5f306), C64e(0x4fd11d4f838352d1),
+	C64e(0x5ce4d05c68688ce4), C64e(0xf407a2f451515607),
+	C64e(0x345cb934d1d18d5c), C64e(0x0818e908f9f9e118),
+	C64e(0x93aedf93e2e24cae), C64e(0x73954d73abab3e95),
+	C64e(0x53f5c453626297f5), C64e(0x3f41543f2a2a6b41),
+	C64e(0x0c14100c08081c14), C64e(0x52f63152959563f6),
+	C64e(0x65af8c654646e9af), C64e(0x5ee2215e9d9d7fe2),
+	C64e(0x2878602830304878), C64e(0xa1f86ea13737cff8),
+	C64e(0x0f11140f0a0a1b11), C64e(0xb5c45eb52f2febc4),
+	C64e(0x091b1c090e0e151b), C64e(0x365a483624247e5a),
+	C64e(0x9bb6369b1b1badb6), C64e(0x3d47a53ddfdf9847),
+	C64e(0x266a8126cdcda76a), C64e(0x69bb9c694e4ef5bb),
+	C64e(0xcd4cfecd7f7f334c), C64e(0x9fbacf9feaea50ba),
+	C64e(0x1b2d241b12123f2d), C64e(0x9eb93a9e1d1da4b9),
+	C64e(0x749cb0745858c49c), C64e(0x2e72682e34344672),
+	C64e(0x2d776c2d36364177), C64e(0xb2cda3b2dcdc11cd),
+	C64e(0xee2973eeb4b49d29), C64e(0xfb16b6fb5b5b4d16),
+	C64e(0xf60153f6a4a4a501), C64e(0x4dd7ec4d7676a1d7),
+	C64e(0x61a37561b7b714a3), C64e(0xce49face7d7d3449),
+	C64e(0x7b8da47b5252df8d), C64e(0x3e42a13edddd9f42),
+	C64e(0x7193bc715e5ecd93), C64e(0x97a226971313b1a2),
+	C64e(0xf50457f5a6a6a204), C64e(0x68b86968b9b901b8),
+	C64e(0x0000000000000000), C64e(0x2c74992cc1c1b574),
+	C64e(0x60a080604040e0a0), C64e(0x1f21dd1fe3e3c221),
+	C64e(0xc843f2c879793a43), C64e(0xed2c77edb6b69a2c),
+	C64e(0xbed9b3bed4d40dd9), C64e(0x46ca01468d8d47ca),
+	C64e(0xd970ced967671770), C64e(0x4bdde44b7272afdd),
+	C64e(0xde7933de9494ed79), C64e(0xd4672bd49898ff67),
+	C64e(0xe8237be8b0b09323), C64e(0x4ade114a85855bde),
+	C64e(0x6bbd6d6bbbbb06bd), C64e(0x2a7e912ac5c5bb7e),
+	C64e(0xe5349ee54f4f7b34), C64e(0x163ac116ededd73a),
+	C64e(0xc55417c58686d254), C64e(0xd7622fd79a9af862),
+	C64e(0x55ffcc55666699ff), C64e(0x94a722941111b6a7),
+	C64e(0xcf4a0fcf8a8ac04a), C64e(0x1030c910e9e9d930),
+	C64e(0x060a080604040e0a), C64e(0x8198e781fefe6698),
+	C64e(0xf00b5bf0a0a0ab0b), C64e(0x44ccf0447878b4cc),
+	C64e(0xbad54aba2525f0d5), C64e(0xe33e96e34b4b753e),
+	C64e(0xf30e5ff3a2a2ac0e), C64e(0xfe19bafe5d5d4419),
+	C64e(0xc05b1bc08080db5b), C64e(0x8a850a8a05058085),
+	C64e(0xadec7ead3f3fd3ec), C64e(0xbcdf42bc2121fedf),
+	C64e(0x48d8e0487070a8d8), C64e(0x040cf904f1f1fd0c),
+	C64e(0xdf7ac6df6363197a), C64e(0xc158eec177772f58),
+	C64e(0x759f4575afaf309f), C64e(0x63a584634242e7a5),
+	C64e(0x3050403020207050), C64e(0x1a2ed11ae5e5cb2e),
+	C64e(0x0e12e10efdfdef12), C64e(0x6db7656dbfbf08b7),
+	C64e(0x4cd4194c818155d4), C64e(0x143c30141818243c),
+	C64e(0x355f4c352626795f), C64e(0x2f719d2fc3c3b271),
+	C64e(0xe13867e1bebe8638), C64e(0xa2fd6aa23535c8fd),
+	C64e(0xcc4f0bcc8888c74f), C64e(0x394b5c392e2e654b),
+	C64e(0x57f93d5793936af9), C64e(0xf20daaf25555580d),
+	C64e(0x829de382fcfc619d), C64e(0x47c9f4477a7ab3c9),
+	C64e(0xacef8bacc8c827ef), C64e(0xe7326fe7baba8832),
+	C64e(0x2b7d642b32324f7d), C64e(0x95a4d795e6e642a4),
+	C64e(0xa0fb9ba0c0c03bfb), C64e(0x98b332981919aab3),
+	C64e(0xd16827d19e9ef668), C64e(0x7f815d7fa3a32281),
+	C64e(0x66aa88664444eeaa), C64e(0x7e82a87e5454d682),
+	C64e(0xabe676ab3b3bdde6), C64e(0x839e16830b0b959e),
+	C64e(0xca4503ca8c8cc945), C64e(0x297b9529c7c7bc7b),
+	C64e(0xd36ed6d36b6b056e), C64e(0x3c44503c28286c44),
+	C64e(0x798b5579a7a72c8b), C64e(0xe23d63e2bcbc813d),
+	C64e(0x1d272c1d16163127), C64e(0x769a4176adad379a),
+	C64e(0x3b4dad3bdbdb964d), C64e(0x56fac85664649efa),
+	C64e(0x4ed2e84e7474a6d2), C64e(0x1e22281e14143622),
+	C64e(0xdb763fdb9292e476), C64e(0x0a1e180a0c0c121e),
+	C64e(0x6cb4906c4848fcb4), C64e(0xe4376be4b8b88f37),
+	C64e(0x5de7255d9f9f78e7), C64e(0x6eb2616ebdbd0fb2),
+	C64e(0xef2a86ef4343692a), C64e(0xa6f193a6c4c435f1),
+	C64e(0xa8e372a83939dae3), C64e(0xa4f762a43131c6f7),
+	C64e(0x3759bd37d3d38a59), C64e(0x8b86ff8bf2f27486),
+	C64e(0x3256b132d5d58356), C64e(0x43c50d438b8b4ec5),
+	C64e(0x59ebdc596e6e85eb), C64e(0xb7c2afb7dada18c2),
+	C64e(0x8c8f028c01018e8f), C64e(0x64ac7964b1b11dac),
+	C64e(0xd26d23d29c9cf16d), C64e(0xe03b92e04949723b),
+	C64e(0xb4c7abb4d8d81fc7), C64e(0xfa1543faacacb915),
+	C64e(0x0709fd07f3f3fa09), C64e(0x256f8525cfcfa06f),
+	C64e(0xafea8fafcaca20ea), C64e(0x8e89f38ef4f47d89),
+	C64e(0xe9208ee947476720), C64e(0x1828201810103828),
+	C64e(0xd564ded56f6f0b64), C64e(0x8883fb88f0f07383),
+	C64e(0x6fb1946f4a4afbb1), C64e(0x7296b8725c5cca96),
+	C64e(0x246c70243838546c), C64e(0xf108aef157575f08),
+	C64e(0xc752e6c773732152), C64e(0x51f33551979764f3),
+	C64e(0x23658d23cbcbae65), C64e(0x7c84597ca1a12584),
+	C64e(0x9cbfcb9ce8e857bf), C64e(0x21637c213e3e5d63),
+	C64e(0xdd7c37dd9696ea7c), C64e(0xdc7fc2dc61611e7f),
+	C64e(0x86911a860d0d9c91), C64e(0x85941e850f0f9b94),
+	C64e(0x90abdb90e0e04bab), C64e(0x42c6f8427c7cbac6),
+	C64e(0xc457e2c471712657), C64e(0xaae583aacccc29e5),
+	C64e(0xd8733bd89090e373), C64e(0x050f0c050606090f),
+	C64e(0x0103f501f7f7f403), C64e(0x123638121c1c2a36),
+	C64e(0xa3fe9fa3c2c23cfe), C64e(0x5fe1d45f6a6a8be1),
+	C64e(0xf91047f9aeaebe10), C64e(0xd06bd2d06969026b),
+	C64e(0x91a82e911717bfa8), C64e(0x58e82958999971e8),
+	C64e(0x276974273a3a5369), C64e(0xb9d04eb92727f7d0),
+	C64e(0x3848a938d9d99148), C64e(0x1335cd13ebebde35),
+	C64e(0xb3ce56b32b2be5ce), C64e(0x3355443322227755),
+	C64e(0xbbd6bfbbd2d204d6), C64e(0x70904970a9a93990),
+	C64e(0x89800e8907078780), C64e(0xa7f266a73333c1f2),
+	C64e(0xb6c15ab62d2decc1), C64e(0x226678223c3c5a66),
+	C64e(0x92ad2a921515b8ad), C64e(0x20608920c9c9a960),
+	C64e(0x49db154987875cdb), C64e(0xff1a4fffaaaab01a),
+	C64e(0x7888a0785050d888), C64e(0x7a8e517aa5a52b8e),
+	C64e(0x8f8a068f0303898a), C64e(0xf813b2f859594a13),
+	C64e(0x809b12800909929b), C64e(0x173934171a1a2339),
+	C64e(0xda75cada65651075), C64e(0x3153b531d7d78453),
+	C64e(0xc65113c68484d551), C64e(0xb8d3bbb8d0d003d3),
+	C64e(0xc35e1fc38282dc5e), C64e(0xb0cb52b02929e2cb),
+	C64e(0x7799b4775a5ac399), C64e(0x11333c111e1e2d33),
+	C64e(0xcb46f6cb7b7b3d46), C64e(0xfc1f4bfca8a8b71f),
+	C64e(0xd661dad66d6d0c61), C64e(0x3a4e583a2c2c624e)
+};
+
+static const sph_u64 T6[] = {
+	C64e(0xf4a5f497a5c6c632), C64e(0x978497eb84f8f86f),
+	C64e(0xb099b0c799eeee5e), C64e(0x8c8d8cf78df6f67a),
+	C64e(0x170d17e50dffffe8), C64e(0xdcbddcb7bdd6d60a),
+	C64e(0xc8b1c8a7b1dede16), C64e(0xfc54fc395491916d),
+	C64e(0xf050f0c050606090), C64e(0x0503050403020207),
+	C64e(0xe0a9e087a9cece2e), C64e(0x877d87ac7d5656d1),
+	C64e(0x2b192bd519e7e7cc), C64e(0xa662a67162b5b513),
+	C64e(0x31e6319ae64d4d7c), C64e(0xb59ab5c39aecec59),
+	C64e(0xcf45cf05458f8f40), C64e(0xbc9dbc3e9d1f1fa3),
+	C64e(0xc040c00940898949), C64e(0x928792ef87fafa68),
+	C64e(0x3f153fc515efefd0), C64e(0x26eb267febb2b294),
+	C64e(0x40c94007c98e8ece), C64e(0x1d0b1ded0bfbfbe6),
+	C64e(0x2fec2f82ec41416e), C64e(0xa967a97d67b3b31a),
+	C64e(0x1cfd1cbefd5f5f43), C64e(0x25ea258aea454560),
+	C64e(0xdabfda46bf2323f9), C64e(0x02f702a6f7535351),
+	C64e(0xa196a1d396e4e445), C64e(0xed5bed2d5b9b9b76),
+	C64e(0x5dc25deac2757528), C64e(0x241c24d91ce1e1c5),
+	C64e(0xe9aee97aae3d3dd4), C64e(0xbe6abe986a4c4cf2),
+	C64e(0xee5aeed85a6c6c82), C64e(0xc341c3fc417e7ebd),
+	C64e(0x060206f102f5f5f3), C64e(0xd14fd11d4f838352),
+	C64e(0xe45ce4d05c68688c), C64e(0x07f407a2f4515156),
+	C64e(0x5c345cb934d1d18d), C64e(0x180818e908f9f9e1),
+	C64e(0xae93aedf93e2e24c), C64e(0x9573954d73abab3e),
+	C64e(0xf553f5c453626297), C64e(0x413f41543f2a2a6b),
+	C64e(0x140c14100c08081c), C64e(0xf652f63152959563),
+	C64e(0xaf65af8c654646e9), C64e(0xe25ee2215e9d9d7f),
+	C64e(0x7828786028303048), C64e(0xf8a1f86ea13737cf),
+	C64e(0x110f11140f0a0a1b), C64e(0xc4b5c45eb52f2feb),
+	C64e(0x1b091b1c090e0e15), C64e(0x5a365a483624247e),
+	C64e(0xb69bb6369b1b1bad), C64e(0x473d47a53ddfdf98),
+	C64e(0x6a266a8126cdcda7), C64e(0xbb69bb9c694e4ef5),
+	C64e(0x4ccd4cfecd7f7f33), C64e(0xba9fbacf9feaea50),
+	C64e(0x2d1b2d241b12123f), C64e(0xb99eb93a9e1d1da4),
+	C64e(0x9c749cb0745858c4), C64e(0x722e72682e343446),
+	C64e(0x772d776c2d363641), C64e(0xcdb2cda3b2dcdc11),
+	C64e(0x29ee2973eeb4b49d), C64e(0x16fb16b6fb5b5b4d),
+	C64e(0x01f60153f6a4a4a5), C64e(0xd74dd7ec4d7676a1),
+	C64e(0xa361a37561b7b714), C64e(0x49ce49face7d7d34),
+	C64e(0x8d7b8da47b5252df), C64e(0x423e42a13edddd9f),
+	C64e(0x937193bc715e5ecd), C64e(0xa297a226971313b1),
+	C64e(0x04f50457f5a6a6a2), C64e(0xb868b86968b9b901),
+	C64e(0x0000000000000000), C64e(0x742c74992cc1c1b5),
+	C64e(0xa060a080604040e0), C64e(0x211f21dd1fe3e3c2),
+	C64e(0x43c843f2c879793a), C64e(0x2ced2c77edb6b69a),
+	C64e(0xd9bed9b3bed4d40d), C64e(0xca46ca01468d8d47),
+	C64e(0x70d970ced9676717), C64e(0xdd4bdde44b7272af),
+	C64e(0x79de7933de9494ed), C64e(0x67d4672bd49898ff),
+	C64e(0x23e8237be8b0b093), C64e(0xde4ade114a85855b),
+	C64e(0xbd6bbd6d6bbbbb06), C64e(0x7e2a7e912ac5c5bb),
+	C64e(0x34e5349ee54f4f7b), C64e(0x3a163ac116ededd7),
+	C64e(0x54c55417c58686d2), C64e(0x62d7622fd79a9af8),
+	C64e(0xff55ffcc55666699), C64e(0xa794a722941111b6),
+	C64e(0x4acf4a0fcf8a8ac0), C64e(0x301030c910e9e9d9),
+	C64e(0x0a060a080604040e), C64e(0x988198e781fefe66),
+	C64e(0x0bf00b5bf0a0a0ab), C64e(0xcc44ccf0447878b4),
+	C64e(0xd5bad54aba2525f0), C64e(0x3ee33e96e34b4b75),
+	C64e(0x0ef30e5ff3a2a2ac), C64e(0x19fe19bafe5d5d44),
+	C64e(0x5bc05b1bc08080db), C64e(0x858a850a8a050580),
+	C64e(0xecadec7ead3f3fd3), C64e(0xdfbcdf42bc2121fe),
+	C64e(0xd848d8e0487070a8), C64e(0x0c040cf904f1f1fd),
+	C64e(0x7adf7ac6df636319), C64e(0x58c158eec177772f),
+	C64e(0x9f759f4575afaf30), C64e(0xa563a584634242e7),
+	C64e(0x5030504030202070), C64e(0x2e1a2ed11ae5e5cb),
+	C64e(0x120e12e10efdfdef), C64e(0xb76db7656dbfbf08),
+	C64e(0xd44cd4194c818155), C64e(0x3c143c3014181824),
+	C64e(0x5f355f4c35262679), C64e(0x712f719d2fc3c3b2),
+	C64e(0x38e13867e1bebe86), C64e(0xfda2fd6aa23535c8),
+	C64e(0x4fcc4f0bcc8888c7), C64e(0x4b394b5c392e2e65),
+	C64e(0xf957f93d5793936a), C64e(0x0df20daaf2555558),
+	C64e(0x9d829de382fcfc61), C64e(0xc947c9f4477a7ab3),
+	C64e(0xefacef8bacc8c827), C64e(0x32e7326fe7baba88),
+	C64e(0x7d2b7d642b32324f), C64e(0xa495a4d795e6e642),
+	C64e(0xfba0fb9ba0c0c03b), C64e(0xb398b332981919aa),
+	C64e(0x68d16827d19e9ef6), C64e(0x817f815d7fa3a322),
+	C64e(0xaa66aa88664444ee), C64e(0x827e82a87e5454d6),
+	C64e(0xe6abe676ab3b3bdd), C64e(0x9e839e16830b0b95),
+	C64e(0x45ca4503ca8c8cc9), C64e(0x7b297b9529c7c7bc),
+	C64e(0x6ed36ed6d36b6b05), C64e(0x443c44503c28286c),
+	C64e(0x8b798b5579a7a72c), C64e(0x3de23d63e2bcbc81),
+	C64e(0x271d272c1d161631), C64e(0x9a769a4176adad37),
+	C64e(0x4d3b4dad3bdbdb96), C64e(0xfa56fac85664649e),
+	C64e(0xd24ed2e84e7474a6), C64e(0x221e22281e141436),
+	C64e(0x76db763fdb9292e4), C64e(0x1e0a1e180a0c0c12),
+	C64e(0xb46cb4906c4848fc), C64e(0x37e4376be4b8b88f),
+	C64e(0xe75de7255d9f9f78), C64e(0xb26eb2616ebdbd0f),
+	C64e(0x2aef2a86ef434369), C64e(0xf1a6f193a6c4c435),
+	C64e(0xe3a8e372a83939da), C64e(0xf7a4f762a43131c6),
+	C64e(0x593759bd37d3d38a), C64e(0x868b86ff8bf2f274),
+	C64e(0x563256b132d5d583), C64e(0xc543c50d438b8b4e),
+	C64e(0xeb59ebdc596e6e85), C64e(0xc2b7c2afb7dada18),
+	C64e(0x8f8c8f028c01018e), C64e(0xac64ac7964b1b11d),
+	C64e(0x6dd26d23d29c9cf1), C64e(0x3be03b92e0494972),
+	C64e(0xc7b4c7abb4d8d81f), C64e(0x15fa1543faacacb9),
+	C64e(0x090709fd07f3f3fa), C64e(0x6f256f8525cfcfa0),
+	C64e(0xeaafea8fafcaca20), C64e(0x898e89f38ef4f47d),
+	C64e(0x20e9208ee9474767), C64e(0x2818282018101038),
+	C64e(0x64d564ded56f6f0b), C64e(0x838883fb88f0f073),
+	C64e(0xb16fb1946f4a4afb), C64e(0x967296b8725c5cca),
+	C64e(0x6c246c7024383854), C64e(0x08f108aef157575f),
+	C64e(0x52c752e6c7737321), C64e(0xf351f33551979764),
+	C64e(0x6523658d23cbcbae), C64e(0x847c84597ca1a125),
+	C64e(0xbf9cbfcb9ce8e857), C64e(0x6321637c213e3e5d),
+	C64e(0x7cdd7c37dd9696ea), C64e(0x7fdc7fc2dc61611e),
+	C64e(0x9186911a860d0d9c), C64e(0x9485941e850f0f9b),
+	C64e(0xab90abdb90e0e04b), C64e(0xc642c6f8427c7cba),
+	C64e(0x57c457e2c4717126), C64e(0xe5aae583aacccc29),
+	C64e(0x73d8733bd89090e3), C64e(0x0f050f0c05060609),
+	C64e(0x030103f501f7f7f4), C64e(0x36123638121c1c2a),
+	C64e(0xfea3fe9fa3c2c23c), C64e(0xe15fe1d45f6a6a8b),
+	C64e(0x10f91047f9aeaebe), C64e(0x6bd06bd2d0696902),
+	C64e(0xa891a82e911717bf), C64e(0xe858e82958999971),
+	C64e(0x69276974273a3a53), C64e(0xd0b9d04eb92727f7),
+	C64e(0x483848a938d9d991), C64e(0x351335cd13ebebde),
+	C64e(0xceb3ce56b32b2be5), C64e(0x5533554433222277),
+	C64e(0xd6bbd6bfbbd2d204), C64e(0x9070904970a9a939),
+	C64e(0x8089800e89070787), C64e(0xf2a7f266a73333c1),
+	C64e(0xc1b6c15ab62d2dec), C64e(0x66226678223c3c5a),
+	C64e(0xad92ad2a921515b8), C64e(0x6020608920c9c9a9),
+	C64e(0xdb49db154987875c), C64e(0x1aff1a4fffaaaab0),
+	C64e(0x887888a0785050d8), C64e(0x8e7a8e517aa5a52b),
+	C64e(0x8a8f8a068f030389), C64e(0x13f813b2f859594a),
+	C64e(0x9b809b1280090992), C64e(0x39173934171a1a23),
+	C64e(0x75da75cada656510), C64e(0x533153b531d7d784),
+	C64e(0x51c65113c68484d5), C64e(0xd3b8d3bbb8d0d003),
+	C64e(0x5ec35e1fc38282dc), C64e(0xcbb0cb52b02929e2),
+	C64e(0x997799b4775a5ac3), C64e(0x3311333c111e1e2d),
+	C64e(0x46cb46f6cb7b7b3d), C64e(0x1ffc1f4bfca8a8b7),
+	C64e(0x61d661dad66d6d0c), C64e(0x4e3a4e583a2c2c62)
+};
+
+static const sph_u64 T7[] = {
+	C64e(0x32f4a5f497a5c6c6), C64e(0x6f978497eb84f8f8),
+	C64e(0x5eb099b0c799eeee), C64e(0x7a8c8d8cf78df6f6),
+	C64e(0xe8170d17e50dffff), C64e(0x0adcbddcb7bdd6d6),
+	C64e(0x16c8b1c8a7b1dede), C64e(0x6dfc54fc39549191),
+	C64e(0x90f050f0c0506060), C64e(0x0705030504030202),
+	C64e(0x2ee0a9e087a9cece), C64e(0xd1877d87ac7d5656),
+	C64e(0xcc2b192bd519e7e7), C64e(0x13a662a67162b5b5),
+	C64e(0x7c31e6319ae64d4d), C64e(0x59b59ab5c39aecec),
+	C64e(0x40cf45cf05458f8f), C64e(0xa3bc9dbc3e9d1f1f),
+	C64e(0x49c040c009408989), C64e(0x68928792ef87fafa),
+	C64e(0xd03f153fc515efef), C64e(0x9426eb267febb2b2),
+	C64e(0xce40c94007c98e8e), C64e(0xe61d0b1ded0bfbfb),
+	C64e(0x6e2fec2f82ec4141), C64e(0x1aa967a97d67b3b3),
+	C64e(0x431cfd1cbefd5f5f), C64e(0x6025ea258aea4545),
+	C64e(0xf9dabfda46bf2323), C64e(0x5102f702a6f75353),
+	C64e(0x45a196a1d396e4e4), C64e(0x76ed5bed2d5b9b9b),
+	C64e(0x285dc25deac27575), C64e(0xc5241c24d91ce1e1),
+	C64e(0xd4e9aee97aae3d3d), C64e(0xf2be6abe986a4c4c),
+	C64e(0x82ee5aeed85a6c6c), C64e(0xbdc341c3fc417e7e),
+	C64e(0xf3060206f102f5f5), C64e(0x52d14fd11d4f8383),
+	C64e(0x8ce45ce4d05c6868), C64e(0x5607f407a2f45151),
+	C64e(0x8d5c345cb934d1d1), C64e(0xe1180818e908f9f9),
+	C64e(0x4cae93aedf93e2e2), C64e(0x3e9573954d73abab),
+	C64e(0x97f553f5c4536262), C64e(0x6b413f41543f2a2a),
+	C64e(0x1c140c14100c0808), C64e(0x63f652f631529595),
+	C64e(0xe9af65af8c654646), C64e(0x7fe25ee2215e9d9d),
+	C64e(0x4878287860283030), C64e(0xcff8a1f86ea13737),
+	C64e(0x1b110f11140f0a0a), C64e(0xebc4b5c45eb52f2f),
+	C64e(0x151b091b1c090e0e), C64e(0x7e5a365a48362424),
+	C64e(0xadb69bb6369b1b1b), C64e(0x98473d47a53ddfdf),
+	C64e(0xa76a266a8126cdcd), C64e(0xf5bb69bb9c694e4e),
+	C64e(0x334ccd4cfecd7f7f), C64e(0x50ba9fbacf9feaea),
+	C64e(0x3f2d1b2d241b1212), C64e(0xa4b99eb93a9e1d1d),
+	C64e(0xc49c749cb0745858), C64e(0x46722e72682e3434),
+	C64e(0x41772d776c2d3636), C64e(0x11cdb2cda3b2dcdc),
+	C64e(0x9d29ee2973eeb4b4), C64e(0x4d16fb16b6fb5b5b),
+	C64e(0xa501f60153f6a4a4), C64e(0xa1d74dd7ec4d7676),
+	C64e(0x14a361a37561b7b7), C64e(0x3449ce49face7d7d),
+	C64e(0xdf8d7b8da47b5252), C64e(0x9f423e42a13edddd),
+	C64e(0xcd937193bc715e5e), C64e(0xb1a297a226971313),
+	C64e(0xa204f50457f5a6a6), C64e(0x01b868b86968b9b9),
+	C64e(0x0000000000000000), C64e(0xb5742c74992cc1c1),
+	C64e(0xe0a060a080604040), C64e(0xc2211f21dd1fe3e3),
+	C64e(0x3a43c843f2c87979), C64e(0x9a2ced2c77edb6b6),
+	C64e(0x0dd9bed9b3bed4d4), C64e(0x47ca46ca01468d8d),
+	C64e(0x1770d970ced96767), C64e(0xafdd4bdde44b7272),
+	C64e(0xed79de7933de9494), C64e(0xff67d4672bd49898),
+	C64e(0x9323e8237be8b0b0), C64e(0x5bde4ade114a8585),
+	C64e(0x06bd6bbd6d6bbbbb), C64e(0xbb7e2a7e912ac5c5),
+	C64e(0x7b34e5349ee54f4f), C64e(0xd73a163ac116eded),
+	C64e(0xd254c55417c58686), C64e(0xf862d7622fd79a9a),
+	C64e(0x99ff55ffcc556666), C64e(0xb6a794a722941111),
+	C64e(0xc04acf4a0fcf8a8a), C64e(0xd9301030c910e9e9),
+	C64e(0x0e0a060a08060404), C64e(0x66988198e781fefe),
+	C64e(0xab0bf00b5bf0a0a0), C64e(0xb4cc44ccf0447878),
+	C64e(0xf0d5bad54aba2525), C64e(0x753ee33e96e34b4b),
+	C64e(0xac0ef30e5ff3a2a2), C64e(0x4419fe19bafe5d5d),
+	C64e(0xdb5bc05b1bc08080), C64e(0x80858a850a8a0505),
+	C64e(0xd3ecadec7ead3f3f), C64e(0xfedfbcdf42bc2121),
+	C64e(0xa8d848d8e0487070), C64e(0xfd0c040cf904f1f1),
+	C64e(0x197adf7ac6df6363), C64e(0x2f58c158eec17777),
+	C64e(0x309f759f4575afaf), C64e(0xe7a563a584634242),
+	C64e(0x7050305040302020), C64e(0xcb2e1a2ed11ae5e5),
+	C64e(0xef120e12e10efdfd), C64e(0x08b76db7656dbfbf),
+	C64e(0x55d44cd4194c8181), C64e(0x243c143c30141818),
+	C64e(0x795f355f4c352626), C64e(0xb2712f719d2fc3c3),
+	C64e(0x8638e13867e1bebe), C64e(0xc8fda2fd6aa23535),
+	C64e(0xc74fcc4f0bcc8888), C64e(0x654b394b5c392e2e),
+	C64e(0x6af957f93d579393), C64e(0x580df20daaf25555),
+	C64e(0x619d829de382fcfc), C64e(0xb3c947c9f4477a7a),
+	C64e(0x27efacef8bacc8c8), C64e(0x8832e7326fe7baba),
+	C64e(0x4f7d2b7d642b3232), C64e(0x42a495a4d795e6e6),
+	C64e(0x3bfba0fb9ba0c0c0), C64e(0xaab398b332981919),
+	C64e(0xf668d16827d19e9e), C64e(0x22817f815d7fa3a3),
+	C64e(0xeeaa66aa88664444), C64e(0xd6827e82a87e5454),
+	C64e(0xdde6abe676ab3b3b), C64e(0x959e839e16830b0b),
+	C64e(0xc945ca4503ca8c8c), C64e(0xbc7b297b9529c7c7),
+	C64e(0x056ed36ed6d36b6b), C64e(0x6c443c44503c2828),
+	C64e(0x2c8b798b5579a7a7), C64e(0x813de23d63e2bcbc),
+	C64e(0x31271d272c1d1616), C64e(0x379a769a4176adad),
+	C64e(0x964d3b4dad3bdbdb), C64e(0x9efa56fac8566464),
+	C64e(0xa6d24ed2e84e7474), C64e(0x36221e22281e1414),
+	C64e(0xe476db763fdb9292), C64e(0x121e0a1e180a0c0c),
+	C64e(0xfcb46cb4906c4848), C64e(0x8f37e4376be4b8b8),
+	C64e(0x78e75de7255d9f9f), C64e(0x0fb26eb2616ebdbd),
+	C64e(0x692aef2a86ef4343), C64e(0x35f1a6f193a6c4c4),
+	C64e(0xdae3a8e372a83939), C64e(0xc6f7a4f762a43131),
+	C64e(0x8a593759bd37d3d3), C64e(0x74868b86ff8bf2f2),
+	C64e(0x83563256b132d5d5), C64e(0x4ec543c50d438b8b),
+	C64e(0x85eb59ebdc596e6e), C64e(0x18c2b7c2afb7dada),
+	C64e(0x8e8f8c8f028c0101), C64e(0x1dac64ac7964b1b1),
+	C64e(0xf16dd26d23d29c9c), C64e(0x723be03b92e04949),
+	C64e(0x1fc7b4c7abb4d8d8), C64e(0xb915fa1543faacac),
+	C64e(0xfa090709fd07f3f3), C64e(0xa06f256f8525cfcf),
+	C64e(0x20eaafea8fafcaca), C64e(0x7d898e89f38ef4f4),
+	C64e(0x6720e9208ee94747), C64e(0x3828182820181010),
+	C64e(0x0b64d564ded56f6f), C64e(0x73838883fb88f0f0),
+	C64e(0xfbb16fb1946f4a4a), C64e(0xca967296b8725c5c),
+	C64e(0x546c246c70243838), C64e(0x5f08f108aef15757),
+	C64e(0x2152c752e6c77373), C64e(0x64f351f335519797),
+	C64e(0xae6523658d23cbcb), C64e(0x25847c84597ca1a1),
+	C64e(0x57bf9cbfcb9ce8e8), C64e(0x5d6321637c213e3e),
+	C64e(0xea7cdd7c37dd9696), C64e(0x1e7fdc7fc2dc6161),
+	C64e(0x9c9186911a860d0d), C64e(0x9b9485941e850f0f),
+	C64e(0x4bab90abdb90e0e0), C64e(0xbac642c6f8427c7c),
+	C64e(0x2657c457e2c47171), C64e(0x29e5aae583aacccc),
+	C64e(0xe373d8733bd89090), C64e(0x090f050f0c050606),
+	C64e(0xf4030103f501f7f7), C64e(0x2a36123638121c1c),
+	C64e(0x3cfea3fe9fa3c2c2), C64e(0x8be15fe1d45f6a6a),
+	C64e(0xbe10f91047f9aeae), C64e(0x026bd06bd2d06969),
+	C64e(0xbfa891a82e911717), C64e(0x71e858e829589999),
+	C64e(0x5369276974273a3a), C64e(0xf7d0b9d04eb92727),
+	C64e(0x91483848a938d9d9), C64e(0xde351335cd13ebeb),
+	C64e(0xe5ceb3ce56b32b2b), C64e(0x7755335544332222),
+	C64e(0x04d6bbd6bfbbd2d2), C64e(0x399070904970a9a9),
+	C64e(0x878089800e890707), C64e(0xc1f2a7f266a73333),
+	C64e(0xecc1b6c15ab62d2d), C64e(0x5a66226678223c3c),
+	C64e(0xb8ad92ad2a921515), C64e(0xa96020608920c9c9),
+	C64e(0x5cdb49db15498787), C64e(0xb01aff1a4fffaaaa),
+	C64e(0xd8887888a0785050), C64e(0x2b8e7a8e517aa5a5),
+	C64e(0x898a8f8a068f0303), C64e(0x4a13f813b2f85959),
+	C64e(0x929b809b12800909), C64e(0x2339173934171a1a),
+	C64e(0x1075da75cada6565), C64e(0x84533153b531d7d7),
+	C64e(0xd551c65113c68484), C64e(0x03d3b8d3bbb8d0d0),
+	C64e(0xdc5ec35e1fc38282), C64e(0xe2cbb0cb52b02929),
+	C64e(0xc3997799b4775a5a), C64e(0x2d3311333c111e1e),
+	C64e(0x3d46cb46f6cb7b7b), C64e(0xb71ffc1f4bfca8a8),
+	C64e(0x0c61d661dad66d6d), C64e(0x624e3a4e583a2c2c)
+};
+
+#endif
+
+#define DECL_STATE_SMALL \
+	sph_u64 H[8];
+
+#define READ_STATE_SMALL(sc)   do { \
+		memcpy(H, (sc)->state.wide, sizeof H); \
+	} while (0)
+
+#define WRITE_STATE_SMALL(sc)   do { \
+		memcpy((sc)->state.wide, H, sizeof H); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define RSTT(d, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d] = T0[B64_0(a[b0])] \
+			^ R64(T0[B64_1(a[b1])],  8) \
+			^ R64(T0[B64_2(a[b2])], 16) \
+			^ R64(T0[B64_3(a[b3])], 24) \
+			^ T4[B64_4(a[b4])] \
+			^ R64(T4[B64_5(a[b5])],  8) \
+			^ R64(T4[B64_6(a[b6])], 16) \
+			^ R64(T4[B64_7(a[b7])], 24); \
+	} while (0)
+
+#else
+
+#define RSTT(d, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d] = T0[B64_0(a[b0])] \
+			^ T1[B64_1(a[b1])] \
+			^ T2[B64_2(a[b2])] \
+			^ T3[B64_3(a[b3])] \
+			^ T4[B64_4(a[b4])] \
+			^ T5[B64_5(a[b5])] \
+			^ T6[B64_6(a[b6])] \
+			^ T7[B64_7(a[b7])]; \
+	} while (0)
+
+#endif
+
+#define ROUND_SMALL_P(a, r)   do { \
+		sph_u64 t[8]; \
+		a[0] ^= PC64(0x00, r); \
+		a[1] ^= PC64(0x10, r); \
+		a[2] ^= PC64(0x20, r); \
+		a[3] ^= PC64(0x30, r); \
+		a[4] ^= PC64(0x40, r); \
+		a[5] ^= PC64(0x50, r); \
+		a[6] ^= PC64(0x60, r); \
+		a[7] ^= PC64(0x70, r); \
+		RSTT(0, a, 0, 1, 2, 3, 4, 5, 6, 7); \
+		RSTT(1, a, 1, 2, 3, 4, 5, 6, 7, 0); \
+		RSTT(2, a, 2, 3, 4, 5, 6, 7, 0, 1); \
+		RSTT(3, a, 3, 4, 5, 6, 7, 0, 1, 2); \
+		RSTT(4, a, 4, 5, 6, 7, 0, 1, 2, 3); \
+		RSTT(5, a, 5, 6, 7, 0, 1, 2, 3, 4); \
+		RSTT(6, a, 6, 7, 0, 1, 2, 3, 4, 5); \
+		RSTT(7, a, 7, 0, 1, 2, 3, 4, 5, 6); \
+		a[0] = t[0]; \
+		a[1] = t[1]; \
+		a[2] = t[2]; \
+		a[3] = t[3]; \
+		a[4] = t[4]; \
+		a[5] = t[5]; \
+		a[6] = t[6]; \
+		a[7] = t[7]; \
+	} while (0)
+
+#define ROUND_SMALL_Q(a, r)   do { \
+		sph_u64 t[8]; \
+		a[0] ^= QC64(0x00, r); \
+		a[1] ^= QC64(0x10, r); \
+		a[2] ^= QC64(0x20, r); \
+		a[3] ^= QC64(0x30, r); \
+		a[4] ^= QC64(0x40, r); \
+		a[5] ^= QC64(0x50, r); \
+		a[6] ^= QC64(0x60, r); \
+		a[7] ^= QC64(0x70, r); \
+		RSTT(0, a, 1, 3, 5, 7, 0, 2, 4, 6); \
+		RSTT(1, a, 2, 4, 6, 0, 1, 3, 5, 7); \
+		RSTT(2, a, 3, 5, 7, 1, 2, 4, 6, 0); \
+		RSTT(3, a, 4, 6, 0, 2, 3, 5, 7, 1); \
+		RSTT(4, a, 5, 7, 1, 3, 4, 6, 0, 2); \
+		RSTT(5, a, 6, 0, 2, 4, 5, 7, 1, 3); \
+		RSTT(6, a, 7, 1, 3, 5, 6, 0, 2, 4); \
+		RSTT(7, a, 0, 2, 4, 6, 7, 1, 3, 5); \
+		a[0] = t[0]; \
+		a[1] = t[1]; \
+		a[2] = t[2]; \
+		a[3] = t[3]; \
+		a[4] = t[4]; \
+		a[5] = t[5]; \
+		a[6] = t[6]; \
+		a[7] = t[7]; \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define PERM_SMALL_P(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r ++) \
+			ROUND_SMALL_P(a, r); \
+	} while (0)
+
+#define PERM_SMALL_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r ++) \
+			ROUND_SMALL_Q(a, r); \
+	} while (0)
+
+#else
+
+/*
+ * Apparently, unrolling more than that confuses GCC, resulting in
+ * lower performance, even though L1 cache would be no problem.
+ */
+#define PERM_SMALL_P(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r += 2) { \
+			ROUND_SMALL_P(a, r + 0); \
+			ROUND_SMALL_P(a, r + 1); \
+		} \
+	} while (0)
+
+#define PERM_SMALL_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r += 2) { \
+			ROUND_SMALL_Q(a, r + 0); \
+			ROUND_SMALL_Q(a, r + 1); \
+		} \
+	} while (0)
+
+#endif
+
+#define COMPRESS_SMALL   do { \
+		sph_u64 g[8], m[8]; \
+		size_t u; \
+		for (u = 0; u < 8; u ++) { \
+			m[u] = dec64e_aligned(buf + (u << 3)); \
+			g[u] = m[u] ^ H[u]; \
+		} \
+		PERM_SMALL_P(g); \
+		PERM_SMALL_Q(m); \
+		for (u = 0; u < 8; u ++) \
+			H[u] ^= g[u] ^ m[u]; \
+	} while (0)
+
+#define FINAL_SMALL   do { \
+		sph_u64 x[8]; \
+		size_t u; \
+		memcpy(x, H, sizeof x); \
+		PERM_SMALL_P(x); \
+		for (u = 0; u < 8; u ++) \
+			H[u] ^= x[u]; \
+	} while (0)
+
+#define DECL_STATE_BIG \
+	sph_u64 H[16];
+
+#define READ_STATE_BIG(sc)   do { \
+		memcpy(H, (sc)->state.wide, sizeof H); \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		memcpy((sc)->state.wide, H, sizeof H); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define RBTT(d, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d] = T0[B64_0(a[b0])] \
+			^ R64(T0[B64_1(a[b1])],  8) \
+			^ R64(T0[B64_2(a[b2])], 16) \
+			^ R64(T0[B64_3(a[b3])], 24) \
+			^ T4[B64_4(a[b4])] \
+			^ R64(T4[B64_5(a[b5])],  8) \
+			^ R64(T4[B64_6(a[b6])], 16) \
+			^ R64(T4[B64_7(a[b7])], 24); \
+	} while (0)
+
+#else
+
+#define RBTT(d, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d] = T0[B64_0(a[b0])] \
+			^ T1[B64_1(a[b1])] \
+			^ T2[B64_2(a[b2])] \
+			^ T3[B64_3(a[b3])] \
+			^ T4[B64_4(a[b4])] \
+			^ T5[B64_5(a[b5])] \
+			^ T6[B64_6(a[b6])] \
+			^ T7[B64_7(a[b7])]; \
+	} while (0)
+
+#endif
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define ROUND_BIG_P(a, r)   do { \
+		sph_u64 t[16]; \
+		size_t u; \
+		a[0x0] ^= PC64(0x00, r); \
+		a[0x1] ^= PC64(0x10, r); \
+		a[0x2] ^= PC64(0x20, r); \
+		a[0x3] ^= PC64(0x30, r); \
+		a[0x4] ^= PC64(0x40, r); \
+		a[0x5] ^= PC64(0x50, r); \
+		a[0x6] ^= PC64(0x60, r); \
+		a[0x7] ^= PC64(0x70, r); \
+		a[0x8] ^= PC64(0x80, r); \
+		a[0x9] ^= PC64(0x90, r); \
+		a[0xA] ^= PC64(0xA0, r); \
+		a[0xB] ^= PC64(0xB0, r); \
+		a[0xC] ^= PC64(0xC0, r); \
+		a[0xD] ^= PC64(0xD0, r); \
+		a[0xE] ^= PC64(0xE0, r); \
+		a[0xF] ^= PC64(0xF0, r); \
+		for (u = 0; u < 16; u += 4) { \
+			RBTT(u + 0, a, u + 0, (u + 1) & 0xF, \
+				(u + 2) & 0xF, (u + 3) & 0xF, (u + 4) & 0xF, \
+				(u + 5) & 0xF, (u + 6) & 0xF, (u + 11) & 0xF); \
+			RBTT(u + 1, a, u + 1, (u + 2) & 0xF, \
+				(u + 3) & 0xF, (u + 4) & 0xF, (u + 5) & 0xF, \
+				(u + 6) & 0xF, (u + 7) & 0xF, (u + 12) & 0xF); \
+			RBTT(u + 2, a, u + 2, (u + 3) & 0xF, \
+				(u + 4) & 0xF, (u + 5) & 0xF, (u + 6) & 0xF, \
+				(u + 7) & 0xF, (u + 8) & 0xF, (u + 13) & 0xF); \
+			RBTT(u + 3, a, u + 3, (u + 4) & 0xF, \
+				(u + 5) & 0xF, (u + 6) & 0xF, (u + 7) & 0xF, \
+				(u + 8) & 0xF, (u + 9) & 0xF, (u + 14) & 0xF); \
+		} \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#define ROUND_BIG_Q(a, r)   do { \
+		sph_u64 t[16]; \
+		size_t u; \
+		a[0x0] ^= QC64(0x00, r); \
+		a[0x1] ^= QC64(0x10, r); \
+		a[0x2] ^= QC64(0x20, r); \
+		a[0x3] ^= QC64(0x30, r); \
+		a[0x4] ^= QC64(0x40, r); \
+		a[0x5] ^= QC64(0x50, r); \
+		a[0x6] ^= QC64(0x60, r); \
+		a[0x7] ^= QC64(0x70, r); \
+		a[0x8] ^= QC64(0x80, r); \
+		a[0x9] ^= QC64(0x90, r); \
+		a[0xA] ^= QC64(0xA0, r); \
+		a[0xB] ^= QC64(0xB0, r); \
+		a[0xC] ^= QC64(0xC0, r); \
+		a[0xD] ^= QC64(0xD0, r); \
+		a[0xE] ^= QC64(0xE0, r); \
+		a[0xF] ^= QC64(0xF0, r); \
+		for (u = 0; u < 16; u += 4) { \
+			RBTT(u + 0, a, (u + 1) & 0xF, (u + 3) & 0xF, \
+				(u + 5) & 0xF, (u + 11) & 0xF, (u + 0) & 0xF, \
+				(u + 2) & 0xF, (u + 4) & 0xF, (u + 6) & 0xF); \
+			RBTT(u + 1, a, (u + 2) & 0xF, (u + 4) & 0xF, \
+				(u + 6) & 0xF, (u + 12) & 0xF, (u + 1) & 0xF, \
+				(u + 3) & 0xF, (u + 5) & 0xF, (u + 7) & 0xF); \
+			RBTT(u + 2, a, (u + 3) & 0xF, (u + 5) & 0xF, \
+				(u + 7) & 0xF, (u + 13) & 0xF, (u + 2) & 0xF, \
+				(u + 4) & 0xF, (u + 6) & 0xF, (u + 8) & 0xF); \
+			RBTT(u + 3, a, (u + 4) & 0xF, (u + 6) & 0xF, \
+				(u + 8) & 0xF, (u + 14) & 0xF, (u + 3) & 0xF, \
+				(u + 5) & 0xF, (u + 7) & 0xF, (u + 9) & 0xF); \
+		} \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#else
+
+#define ROUND_BIG_P(a, r)   do { \
+		sph_u64 t[16]; \
+		a[0x0] ^= PC64(0x00, r); \
+		a[0x1] ^= PC64(0x10, r); \
+		a[0x2] ^= PC64(0x20, r); \
+		a[0x3] ^= PC64(0x30, r); \
+		a[0x4] ^= PC64(0x40, r); \
+		a[0x5] ^= PC64(0x50, r); \
+		a[0x6] ^= PC64(0x60, r); \
+		a[0x7] ^= PC64(0x70, r); \
+		a[0x8] ^= PC64(0x80, r); \
+		a[0x9] ^= PC64(0x90, r); \
+		a[0xA] ^= PC64(0xA0, r); \
+		a[0xB] ^= PC64(0xB0, r); \
+		a[0xC] ^= PC64(0xC0, r); \
+		a[0xD] ^= PC64(0xD0, r); \
+		a[0xE] ^= PC64(0xE0, r); \
+		a[0xF] ^= PC64(0xF0, r); \
+		RBTT(0x0, a, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xB); \
+		RBTT(0x1, a, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xC); \
+		RBTT(0x2, a, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0xD); \
+		RBTT(0x3, a, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xE); \
+		RBTT(0x4, a, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xF); \
+		RBTT(0x5, a, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0x0); \
+		RBTT(0x6, a, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0x1); \
+		RBTT(0x7, a, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0x2); \
+		RBTT(0x8, a, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x3); \
+		RBTT(0x9, a, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x4); \
+		RBTT(0xA, a, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x0, 0x5); \
+		RBTT(0xB, a, 0xB, 0xC, 0xD, 0xE, 0xF, 0x0, 0x1, 0x6); \
+		RBTT(0xC, a, 0xC, 0xD, 0xE, 0xF, 0x0, 0x1, 0x2, 0x7); \
+		RBTT(0xD, a, 0xD, 0xE, 0xF, 0x0, 0x1, 0x2, 0x3, 0x8); \
+		RBTT(0xE, a, 0xE, 0xF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x9); \
+		RBTT(0xF, a, 0xF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0xA); \
+		a[0x0] = t[0x0]; \
+		a[0x1] = t[0x1]; \
+		a[0x2] = t[0x2]; \
+		a[0x3] = t[0x3]; \
+		a[0x4] = t[0x4]; \
+		a[0x5] = t[0x5]; \
+		a[0x6] = t[0x6]; \
+		a[0x7] = t[0x7]; \
+		a[0x8] = t[0x8]; \
+		a[0x9] = t[0x9]; \
+		a[0xA] = t[0xA]; \
+		a[0xB] = t[0xB]; \
+		a[0xC] = t[0xC]; \
+		a[0xD] = t[0xD]; \
+		a[0xE] = t[0xE]; \
+		a[0xF] = t[0xF]; \
+	} while (0)
+
+#define ROUND_BIG_Q(a, r)   do { \
+		sph_u64 t[16]; \
+		a[0x0] ^= QC64(0x00, r); \
+		a[0x1] ^= QC64(0x10, r); \
+		a[0x2] ^= QC64(0x20, r); \
+		a[0x3] ^= QC64(0x30, r); \
+		a[0x4] ^= QC64(0x40, r); \
+		a[0x5] ^= QC64(0x50, r); \
+		a[0x6] ^= QC64(0x60, r); \
+		a[0x7] ^= QC64(0x70, r); \
+		a[0x8] ^= QC64(0x80, r); \
+		a[0x9] ^= QC64(0x90, r); \
+		a[0xA] ^= QC64(0xA0, r); \
+		a[0xB] ^= QC64(0xB0, r); \
+		a[0xC] ^= QC64(0xC0, r); \
+		a[0xD] ^= QC64(0xD0, r); \
+		a[0xE] ^= QC64(0xE0, r); \
+		a[0xF] ^= QC64(0xF0, r); \
+		RBTT(0x0, a, 0x1, 0x3, 0x5, 0xB, 0x0, 0x2, 0x4, 0x6); \
+		RBTT(0x1, a, 0x2, 0x4, 0x6, 0xC, 0x1, 0x3, 0x5, 0x7); \
+		RBTT(0x2, a, 0x3, 0x5, 0x7, 0xD, 0x2, 0x4, 0x6, 0x8); \
+		RBTT(0x3, a, 0x4, 0x6, 0x8, 0xE, 0x3, 0x5, 0x7, 0x9); \
+		RBTT(0x4, a, 0x5, 0x7, 0x9, 0xF, 0x4, 0x6, 0x8, 0xA); \
+		RBTT(0x5, a, 0x6, 0x8, 0xA, 0x0, 0x5, 0x7, 0x9, 0xB); \
+		RBTT(0x6, a, 0x7, 0x9, 0xB, 0x1, 0x6, 0x8, 0xA, 0xC); \
+		RBTT(0x7, a, 0x8, 0xA, 0xC, 0x2, 0x7, 0x9, 0xB, 0xD); \
+		RBTT(0x8, a, 0x9, 0xB, 0xD, 0x3, 0x8, 0xA, 0xC, 0xE); \
+		RBTT(0x9, a, 0xA, 0xC, 0xE, 0x4, 0x9, 0xB, 0xD, 0xF); \
+		RBTT(0xA, a, 0xB, 0xD, 0xF, 0x5, 0xA, 0xC, 0xE, 0x0); \
+		RBTT(0xB, a, 0xC, 0xE, 0x0, 0x6, 0xB, 0xD, 0xF, 0x1); \
+		RBTT(0xC, a, 0xD, 0xF, 0x1, 0x7, 0xC, 0xE, 0x0, 0x2); \
+		RBTT(0xD, a, 0xE, 0x0, 0x2, 0x8, 0xD, 0xF, 0x1, 0x3); \
+		RBTT(0xE, a, 0xF, 0x1, 0x3, 0x9, 0xE, 0x0, 0x2, 0x4); \
+		RBTT(0xF, a, 0x0, 0x2, 0x4, 0xA, 0xF, 0x1, 0x3, 0x5); \
+		a[0x0] = t[0x0]; \
+		a[0x1] = t[0x1]; \
+		a[0x2] = t[0x2]; \
+		a[0x3] = t[0x3]; \
+		a[0x4] = t[0x4]; \
+		a[0x5] = t[0x5]; \
+		a[0x6] = t[0x6]; \
+		a[0x7] = t[0x7]; \
+		a[0x8] = t[0x8]; \
+		a[0x9] = t[0x9]; \
+		a[0xA] = t[0xA]; \
+		a[0xB] = t[0xB]; \
+		a[0xC] = t[0xC]; \
+		a[0xD] = t[0xD]; \
+		a[0xE] = t[0xE]; \
+		a[0xF] = t[0xF]; \
+	} while (0)
+
+#endif
+
+#define PERM_BIG_P(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r += 2) { \
+			ROUND_BIG_P(a, r + 0); \
+			ROUND_BIG_P(a, r + 1); \
+		} \
+	} while (0)
+
+#define PERM_BIG_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r += 2) { \
+			ROUND_BIG_Q(a, r + 0); \
+			ROUND_BIG_Q(a, r + 1); \
+		} \
+	} while (0)
+
+/* obsolete
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define COMPRESS_BIG   do { \
+		sph_u64 g[16], m[16], *ya; \
+		const sph_u64 *yc; \
+		size_t u; \
+		int i; \
+		for (u = 0; u < 16; u ++) { \
+			m[u] = dec64e_aligned(buf + (u << 3)); \
+			g[u] = m[u] ^ H[u]; \
+		} \
+		ya = g; \
+		yc = CP; \
+		for (i = 0; i < 2; i ++) { \
+			PERM_BIG(ya, yc); \
+			ya = m; \
+			yc = CQ; \
+		} \
+		for (u = 0; u < 16; u ++) { \
+			H[u] ^= g[u] ^ m[u]; \
+		} \
+	} while (0)
+
+#else
+*/
+
+#define COMPRESS_BIG   do { \
+		sph_u64 g[16], m[16]; \
+		size_t u; \
+		for (u = 0; u < 16; u ++) { \
+			m[u] = dec64e_aligned(buf + (u << 3)); \
+			g[u] = m[u] ^ H[u]; \
+		} \
+		PERM_BIG_P(g); \
+		PERM_BIG_Q(m); \
+		for (u = 0; u < 16; u ++) { \
+			H[u] ^= g[u] ^ m[u]; \
+		} \
+	} while (0)
+
+/* obsolete
+#endif
+*/
+
+#define FINAL_BIG   do { \
+		sph_u64 x[16]; \
+		size_t u; \
+		memcpy(x, H, sizeof x); \
+		PERM_BIG_P(x); \
+		for (u = 0; u < 16; u ++) \
+			H[u] ^= x[u]; \
+	} while (0)
+
+#else
+
+static const sph_u32 T0up[] = {
+	C32e(0xc632f4a5), C32e(0xf86f9784), C32e(0xee5eb099), C32e(0xf67a8c8d),
+	C32e(0xffe8170d), C32e(0xd60adcbd), C32e(0xde16c8b1), C32e(0x916dfc54),
+	C32e(0x6090f050), C32e(0x02070503), C32e(0xce2ee0a9), C32e(0x56d1877d),
+	C32e(0xe7cc2b19), C32e(0xb513a662), C32e(0x4d7c31e6), C32e(0xec59b59a),
+	C32e(0x8f40cf45), C32e(0x1fa3bc9d), C32e(0x8949c040), C32e(0xfa689287),
+	C32e(0xefd03f15), C32e(0xb29426eb), C32e(0x8ece40c9), C32e(0xfbe61d0b),
+	C32e(0x416e2fec), C32e(0xb31aa967), C32e(0x5f431cfd), C32e(0x456025ea),
+	C32e(0x23f9dabf), C32e(0x535102f7), C32e(0xe445a196), C32e(0x9b76ed5b),
+	C32e(0x75285dc2), C32e(0xe1c5241c), C32e(0x3dd4e9ae), C32e(0x4cf2be6a),
+	C32e(0x6c82ee5a), C32e(0x7ebdc341), C32e(0xf5f30602), C32e(0x8352d14f),
+	C32e(0x688ce45c), C32e(0x515607f4), C32e(0xd18d5c34), C32e(0xf9e11808),
+	C32e(0xe24cae93), C32e(0xab3e9573), C32e(0x6297f553), C32e(0x2a6b413f),
+	C32e(0x081c140c), C32e(0x9563f652), C32e(0x46e9af65), C32e(0x9d7fe25e),
+	C32e(0x30487828), C32e(0x37cff8a1), C32e(0x0a1b110f), C32e(0x2febc4b5),
+	C32e(0x0e151b09), C32e(0x247e5a36), C32e(0x1badb69b), C32e(0xdf98473d),
+	C32e(0xcda76a26), C32e(0x4ef5bb69), C32e(0x7f334ccd), C32e(0xea50ba9f),
+	C32e(0x123f2d1b), C32e(0x1da4b99e), C32e(0x58c49c74), C32e(0x3446722e),
+	C32e(0x3641772d), C32e(0xdc11cdb2), C32e(0xb49d29ee), C32e(0x5b4d16fb),
+	C32e(0xa4a501f6), C32e(0x76a1d74d), C32e(0xb714a361), C32e(0x7d3449ce),
+	C32e(0x52df8d7b), C32e(0xdd9f423e), C32e(0x5ecd9371), C32e(0x13b1a297),
+	C32e(0xa6a204f5), C32e(0xb901b868), C32e(0x00000000), C32e(0xc1b5742c),
+	C32e(0x40e0a060), C32e(0xe3c2211f), C32e(0x793a43c8), C32e(0xb69a2ced),
+	C32e(0xd40dd9be), C32e(0x8d47ca46), C32e(0x671770d9), C32e(0x72afdd4b),
+	C32e(0x94ed79de), C32e(0x98ff67d4), C32e(0xb09323e8), C32e(0x855bde4a),
+	C32e(0xbb06bd6b), C32e(0xc5bb7e2a), C32e(0x4f7b34e5), C32e(0xedd73a16),
+	C32e(0x86d254c5), C32e(0x9af862d7), C32e(0x6699ff55), C32e(0x11b6a794),
+	C32e(0x8ac04acf), C32e(0xe9d93010), C32e(0x040e0a06), C32e(0xfe669881),
+	C32e(0xa0ab0bf0), C32e(0x78b4cc44), C32e(0x25f0d5ba), C32e(0x4b753ee3),
+	C32e(0xa2ac0ef3), C32e(0x5d4419fe), C32e(0x80db5bc0), C32e(0x0580858a),
+	C32e(0x3fd3ecad), C32e(0x21fedfbc), C32e(0x70a8d848), C32e(0xf1fd0c04),
+	C32e(0x63197adf), C32e(0x772f58c1), C32e(0xaf309f75), C32e(0x42e7a563),
+	C32e(0x20705030), C32e(0xe5cb2e1a), C32e(0xfdef120e), C32e(0xbf08b76d),
+	C32e(0x8155d44c), C32e(0x18243c14), C32e(0x26795f35), C32e(0xc3b2712f),
+	C32e(0xbe8638e1), C32e(0x35c8fda2), C32e(0x88c74fcc), C32e(0x2e654b39),
+	C32e(0x936af957), C32e(0x55580df2), C32e(0xfc619d82), C32e(0x7ab3c947),
+	C32e(0xc827efac), C32e(0xba8832e7), C32e(0x324f7d2b), C32e(0xe642a495),
+	C32e(0xc03bfba0), C32e(0x19aab398), C32e(0x9ef668d1), C32e(0xa322817f),
+	C32e(0x44eeaa66), C32e(0x54d6827e), C32e(0x3bdde6ab), C32e(0x0b959e83),
+	C32e(0x8cc945ca), C32e(0xc7bc7b29), C32e(0x6b056ed3), C32e(0x286c443c),
+	C32e(0xa72c8b79), C32e(0xbc813de2), C32e(0x1631271d), C32e(0xad379a76),
+	C32e(0xdb964d3b), C32e(0x649efa56), C32e(0x74a6d24e), C32e(0x1436221e),
+	C32e(0x92e476db), C32e(0x0c121e0a), C32e(0x48fcb46c), C32e(0xb88f37e4),
+	C32e(0x9f78e75d), C32e(0xbd0fb26e), C32e(0x43692aef), C32e(0xc435f1a6),
+	C32e(0x39dae3a8), C32e(0x31c6f7a4), C32e(0xd38a5937), C32e(0xf274868b),
+	C32e(0xd5835632), C32e(0x8b4ec543), C32e(0x6e85eb59), C32e(0xda18c2b7),
+	C32e(0x018e8f8c), C32e(0xb11dac64), C32e(0x9cf16dd2), C32e(0x49723be0),
+	C32e(0xd81fc7b4), C32e(0xacb915fa), C32e(0xf3fa0907), C32e(0xcfa06f25),
+	C32e(0xca20eaaf), C32e(0xf47d898e), C32e(0x476720e9), C32e(0x10382818),
+	C32e(0x6f0b64d5), C32e(0xf0738388), C32e(0x4afbb16f), C32e(0x5cca9672),
+	C32e(0x38546c24), C32e(0x575f08f1), C32e(0x732152c7), C32e(0x9764f351),
+	C32e(0xcbae6523), C32e(0xa125847c), C32e(0xe857bf9c), C32e(0x3e5d6321),
+	C32e(0x96ea7cdd), C32e(0x611e7fdc), C32e(0x0d9c9186), C32e(0x0f9b9485),
+	C32e(0xe04bab90), C32e(0x7cbac642), C32e(0x712657c4), C32e(0xcc29e5aa),
+	C32e(0x90e373d8), C32e(0x06090f05), C32e(0xf7f40301), C32e(0x1c2a3612),
+	C32e(0xc23cfea3), C32e(0x6a8be15f), C32e(0xaebe10f9), C32e(0x69026bd0),
+	C32e(0x17bfa891), C32e(0x9971e858), C32e(0x3a536927), C32e(0x27f7d0b9),
+	C32e(0xd9914838), C32e(0xebde3513), C32e(0x2be5ceb3), C32e(0x22775533),
+	C32e(0xd204d6bb), C32e(0xa9399070), C32e(0x07878089), C32e(0x33c1f2a7),
+	C32e(0x2decc1b6), C32e(0x3c5a6622), C32e(0x15b8ad92), C32e(0xc9a96020),
+	C32e(0x875cdb49), C32e(0xaab01aff), C32e(0x50d88878), C32e(0xa52b8e7a),
+	C32e(0x03898a8f), C32e(0x594a13f8), C32e(0x09929b80), C32e(0x1a233917),
+	C32e(0x651075da), C32e(0xd7845331), C32e(0x84d551c6), C32e(0xd003d3b8),
+	C32e(0x82dc5ec3), C32e(0x29e2cbb0), C32e(0x5ac39977), C32e(0x1e2d3311),
+	C32e(0x7b3d46cb), C32e(0xa8b71ffc), C32e(0x6d0c61d6), C32e(0x2c624e3a)
+};
+
+static const sph_u32 T0dn[] = {
+	C32e(0xf497a5c6), C32e(0x97eb84f8), C32e(0xb0c799ee), C32e(0x8cf78df6),
+	C32e(0x17e50dff), C32e(0xdcb7bdd6), C32e(0xc8a7b1de), C32e(0xfc395491),
+	C32e(0xf0c05060), C32e(0x05040302), C32e(0xe087a9ce), C32e(0x87ac7d56),
+	C32e(0x2bd519e7), C32e(0xa67162b5), C32e(0x319ae64d), C32e(0xb5c39aec),
+	C32e(0xcf05458f), C32e(0xbc3e9d1f), C32e(0xc0094089), C32e(0x92ef87fa),
+	C32e(0x3fc515ef), C32e(0x267febb2), C32e(0x4007c98e), C32e(0x1ded0bfb),
+	C32e(0x2f82ec41), C32e(0xa97d67b3), C32e(0x1cbefd5f), C32e(0x258aea45),
+	C32e(0xda46bf23), C32e(0x02a6f753), C32e(0xa1d396e4), C32e(0xed2d5b9b),
+	C32e(0x5deac275), C32e(0x24d91ce1), C32e(0xe97aae3d), C32e(0xbe986a4c),
+	C32e(0xeed85a6c), C32e(0xc3fc417e), C32e(0x06f102f5), C32e(0xd11d4f83),
+	C32e(0xe4d05c68), C32e(0x07a2f451), C32e(0x5cb934d1), C32e(0x18e908f9),
+	C32e(0xaedf93e2), C32e(0x954d73ab), C32e(0xf5c45362), C32e(0x41543f2a),
+	C32e(0x14100c08), C32e(0xf6315295), C32e(0xaf8c6546), C32e(0xe2215e9d),
+	C32e(0x78602830), C32e(0xf86ea137), C32e(0x11140f0a), C32e(0xc45eb52f),
+	C32e(0x1b1c090e), C32e(0x5a483624), C32e(0xb6369b1b), C32e(0x47a53ddf),
+	C32e(0x6a8126cd), C32e(0xbb9c694e), C32e(0x4cfecd7f), C32e(0xbacf9fea),
+	C32e(0x2d241b12), C32e(0xb93a9e1d), C32e(0x9cb07458), C32e(0x72682e34),
+	C32e(0x776c2d36), C32e(0xcda3b2dc), C32e(0x2973eeb4), C32e(0x16b6fb5b),
+	C32e(0x0153f6a4), C32e(0xd7ec4d76), C32e(0xa37561b7), C32e(0x49face7d),
+	C32e(0x8da47b52), C32e(0x42a13edd), C32e(0x93bc715e), C32e(0xa2269713),
+	C32e(0x0457f5a6), C32e(0xb86968b9), C32e(0x00000000), C32e(0x74992cc1),
+	C32e(0xa0806040), C32e(0x21dd1fe3), C32e(0x43f2c879), C32e(0x2c77edb6),
+	C32e(0xd9b3bed4), C32e(0xca01468d), C32e(0x70ced967), C32e(0xdde44b72),
+	C32e(0x7933de94), C32e(0x672bd498), C32e(0x237be8b0), C32e(0xde114a85),
+	C32e(0xbd6d6bbb), C32e(0x7e912ac5), C32e(0x349ee54f), C32e(0x3ac116ed),
+	C32e(0x5417c586), C32e(0x622fd79a), C32e(0xffcc5566), C32e(0xa7229411),
+	C32e(0x4a0fcf8a), C32e(0x30c910e9), C32e(0x0a080604), C32e(0x98e781fe),
+	C32e(0x0b5bf0a0), C32e(0xccf04478), C32e(0xd54aba25), C32e(0x3e96e34b),
+	C32e(0x0e5ff3a2), C32e(0x19bafe5d), C32e(0x5b1bc080), C32e(0x850a8a05),
+	C32e(0xec7ead3f), C32e(0xdf42bc21), C32e(0xd8e04870), C32e(0x0cf904f1),
+	C32e(0x7ac6df63), C32e(0x58eec177), C32e(0x9f4575af), C32e(0xa5846342),
+	C32e(0x50403020), C32e(0x2ed11ae5), C32e(0x12e10efd), C32e(0xb7656dbf),
+	C32e(0xd4194c81), C32e(0x3c301418), C32e(0x5f4c3526), C32e(0x719d2fc3),
+	C32e(0x3867e1be), C32e(0xfd6aa235), C32e(0x4f0bcc88), C32e(0x4b5c392e),
+	C32e(0xf93d5793), C32e(0x0daaf255), C32e(0x9de382fc), C32e(0xc9f4477a),
+	C32e(0xef8bacc8), C32e(0x326fe7ba), C32e(0x7d642b32), C32e(0xa4d795e6),
+	C32e(0xfb9ba0c0), C32e(0xb3329819), C32e(0x6827d19e), C32e(0x815d7fa3),
+	C32e(0xaa886644), C32e(0x82a87e54), C32e(0xe676ab3b), C32e(0x9e16830b),
+	C32e(0x4503ca8c), C32e(0x7b9529c7), C32e(0x6ed6d36b), C32e(0x44503c28),
+	C32e(0x8b5579a7), C32e(0x3d63e2bc), C32e(0x272c1d16), C32e(0x9a4176ad),
+	C32e(0x4dad3bdb), C32e(0xfac85664), C32e(0xd2e84e74), C32e(0x22281e14),
+	C32e(0x763fdb92), C32e(0x1e180a0c), C32e(0xb4906c48), C32e(0x376be4b8),
+	C32e(0xe7255d9f), C32e(0xb2616ebd), C32e(0x2a86ef43), C32e(0xf193a6c4),
+	C32e(0xe372a839), C32e(0xf762a431), C32e(0x59bd37d3), C32e(0x86ff8bf2),
+	C32e(0x56b132d5), C32e(0xc50d438b), C32e(0xebdc596e), C32e(0xc2afb7da),
+	C32e(0x8f028c01), C32e(0xac7964b1), C32e(0x6d23d29c), C32e(0x3b92e049),
+	C32e(0xc7abb4d8), C32e(0x1543faac), C32e(0x09fd07f3), C32e(0x6f8525cf),
+	C32e(0xea8fafca), C32e(0x89f38ef4), C32e(0x208ee947), C32e(0x28201810),
+	C32e(0x64ded56f), C32e(0x83fb88f0), C32e(0xb1946f4a), C32e(0x96b8725c),
+	C32e(0x6c702438), C32e(0x08aef157), C32e(0x52e6c773), C32e(0xf3355197),
+	C32e(0x658d23cb), C32e(0x84597ca1), C32e(0xbfcb9ce8), C32e(0x637c213e),
+	C32e(0x7c37dd96), C32e(0x7fc2dc61), C32e(0x911a860d), C32e(0x941e850f),
+	C32e(0xabdb90e0), C32e(0xc6f8427c), C32e(0x57e2c471), C32e(0xe583aacc),
+	C32e(0x733bd890), C32e(0x0f0c0506), C32e(0x03f501f7), C32e(0x3638121c),
+	C32e(0xfe9fa3c2), C32e(0xe1d45f6a), C32e(0x1047f9ae), C32e(0x6bd2d069),
+	C32e(0xa82e9117), C32e(0xe8295899), C32e(0x6974273a), C32e(0xd04eb927),
+	C32e(0x48a938d9), C32e(0x35cd13eb), C32e(0xce56b32b), C32e(0x55443322),
+	C32e(0xd6bfbbd2), C32e(0x904970a9), C32e(0x800e8907), C32e(0xf266a733),
+	C32e(0xc15ab62d), C32e(0x6678223c), C32e(0xad2a9215), C32e(0x608920c9),
+	C32e(0xdb154987), C32e(0x1a4fffaa), C32e(0x88a07850), C32e(0x8e517aa5),
+	C32e(0x8a068f03), C32e(0x13b2f859), C32e(0x9b128009), C32e(0x3934171a),
+	C32e(0x75cada65), C32e(0x53b531d7), C32e(0x5113c684), C32e(0xd3bbb8d0),
+	C32e(0x5e1fc382), C32e(0xcb52b029), C32e(0x99b4775a), C32e(0x333c111e),
+	C32e(0x46f6cb7b), C32e(0x1f4bfca8), C32e(0x61dad66d), C32e(0x4e583a2c)
+};
+
+static const sph_u32 T1up[] = {
+	C32e(0xc6c632f4), C32e(0xf8f86f97), C32e(0xeeee5eb0), C32e(0xf6f67a8c),
+	C32e(0xffffe817), C32e(0xd6d60adc), C32e(0xdede16c8), C32e(0x91916dfc),
+	C32e(0x606090f0), C32e(0x02020705), C32e(0xcece2ee0), C32e(0x5656d187),
+	C32e(0xe7e7cc2b), C32e(0xb5b513a6), C32e(0x4d4d7c31), C32e(0xecec59b5),
+	C32e(0x8f8f40cf), C32e(0x1f1fa3bc), C32e(0x898949c0), C32e(0xfafa6892),
+	C32e(0xefefd03f), C32e(0xb2b29426), C32e(0x8e8ece40), C32e(0xfbfbe61d),
+	C32e(0x41416e2f), C32e(0xb3b31aa9), C32e(0x5f5f431c), C32e(0x45456025),
+	C32e(0x2323f9da), C32e(0x53535102), C32e(0xe4e445a1), C32e(0x9b9b76ed),
+	C32e(0x7575285d), C32e(0xe1e1c524), C32e(0x3d3dd4e9), C32e(0x4c4cf2be),
+	C32e(0x6c6c82ee), C32e(0x7e7ebdc3), C32e(0xf5f5f306), C32e(0x838352d1),
+	C32e(0x68688ce4), C32e(0x51515607), C32e(0xd1d18d5c), C32e(0xf9f9e118),
+	C32e(0xe2e24cae), C32e(0xabab3e95), C32e(0x626297f5), C32e(0x2a2a6b41),
+	C32e(0x08081c14), C32e(0x959563f6), C32e(0x4646e9af), C32e(0x9d9d7fe2),
+	C32e(0x30304878), C32e(0x3737cff8), C32e(0x0a0a1b11), C32e(0x2f2febc4),
+	C32e(0x0e0e151b), C32e(0x24247e5a), C32e(0x1b1badb6), C32e(0xdfdf9847),
+	C32e(0xcdcda76a), C32e(0x4e4ef5bb), C32e(0x7f7f334c), C32e(0xeaea50ba),
+	C32e(0x12123f2d), C32e(0x1d1da4b9), C32e(0x5858c49c), C32e(0x34344672),
+	C32e(0x36364177), C32e(0xdcdc11cd), C32e(0xb4b49d29), C32e(0x5b5b4d16),
+	C32e(0xa4a4a501), C32e(0x7676a1d7), C32e(0xb7b714a3), C32e(0x7d7d3449),
+	C32e(0x5252df8d), C32e(0xdddd9f42), C32e(0x5e5ecd93), C32e(0x1313b1a2),
+	C32e(0xa6a6a204), C32e(0xb9b901b8), C32e(0x00000000), C32e(0xc1c1b574),
+	C32e(0x4040e0a0), C32e(0xe3e3c221), C32e(0x79793a43), C32e(0xb6b69a2c),
+	C32e(0xd4d40dd9), C32e(0x8d8d47ca), C32e(0x67671770), C32e(0x7272afdd),
+	C32e(0x9494ed79), C32e(0x9898ff67), C32e(0xb0b09323), C32e(0x85855bde),
+	C32e(0xbbbb06bd), C32e(0xc5c5bb7e), C32e(0x4f4f7b34), C32e(0xededd73a),
+	C32e(0x8686d254), C32e(0x9a9af862), C32e(0x666699ff), C32e(0x1111b6a7),
+	C32e(0x8a8ac04a), C32e(0xe9e9d930), C32e(0x04040e0a), C32e(0xfefe6698),
+	C32e(0xa0a0ab0b), C32e(0x7878b4cc), C32e(0x2525f0d5), C32e(0x4b4b753e),
+	C32e(0xa2a2ac0e), C32e(0x5d5d4419), C32e(0x8080db5b), C32e(0x05058085),
+	C32e(0x3f3fd3ec), C32e(0x2121fedf), C32e(0x7070a8d8), C32e(0xf1f1fd0c),
+	C32e(0x6363197a), C32e(0x77772f58), C32e(0xafaf309f), C32e(0x4242e7a5),
+	C32e(0x20207050), C32e(0xe5e5cb2e), C32e(0xfdfdef12), C32e(0xbfbf08b7),
+	C32e(0x818155d4), C32e(0x1818243c), C32e(0x2626795f), C32e(0xc3c3b271),
+	C32e(0xbebe8638), C32e(0x3535c8fd), C32e(0x8888c74f), C32e(0x2e2e654b),
+	C32e(0x93936af9), C32e(0x5555580d), C32e(0xfcfc619d), C32e(0x7a7ab3c9),
+	C32e(0xc8c827ef), C32e(0xbaba8832), C32e(0x32324f7d), C32e(0xe6e642a4),
+	C32e(0xc0c03bfb), C32e(0x1919aab3), C32e(0x9e9ef668), C32e(0xa3a32281),
+	C32e(0x4444eeaa), C32e(0x5454d682), C32e(0x3b3bdde6), C32e(0x0b0b959e),
+	C32e(0x8c8cc945), C32e(0xc7c7bc7b), C32e(0x6b6b056e), C32e(0x28286c44),
+	C32e(0xa7a72c8b), C32e(0xbcbc813d), C32e(0x16163127), C32e(0xadad379a),
+	C32e(0xdbdb964d), C32e(0x64649efa), C32e(0x7474a6d2), C32e(0x14143622),
+	C32e(0x9292e476), C32e(0x0c0c121e), C32e(0x4848fcb4), C32e(0xb8b88f37),
+	C32e(0x9f9f78e7), C32e(0xbdbd0fb2), C32e(0x4343692a), C32e(0xc4c435f1),
+	C32e(0x3939dae3), C32e(0x3131c6f7), C32e(0xd3d38a59), C32e(0xf2f27486),
+	C32e(0xd5d58356), C32e(0x8b8b4ec5), C32e(0x6e6e85eb), C32e(0xdada18c2),
+	C32e(0x01018e8f), C32e(0xb1b11dac), C32e(0x9c9cf16d), C32e(0x4949723b),
+	C32e(0xd8d81fc7), C32e(0xacacb915), C32e(0xf3f3fa09), C32e(0xcfcfa06f),
+	C32e(0xcaca20ea), C32e(0xf4f47d89), C32e(0x47476720), C32e(0x10103828),
+	C32e(0x6f6f0b64), C32e(0xf0f07383), C32e(0x4a4afbb1), C32e(0x5c5cca96),
+	C32e(0x3838546c), C32e(0x57575f08), C32e(0x73732152), C32e(0x979764f3),
+	C32e(0xcbcbae65), C32e(0xa1a12584), C32e(0xe8e857bf), C32e(0x3e3e5d63),
+	C32e(0x9696ea7c), C32e(0x61611e7f), C32e(0x0d0d9c91), C32e(0x0f0f9b94),
+	C32e(0xe0e04bab), C32e(0x7c7cbac6), C32e(0x71712657), C32e(0xcccc29e5),
+	C32e(0x9090e373), C32e(0x0606090f), C32e(0xf7f7f403), C32e(0x1c1c2a36),
+	C32e(0xc2c23cfe), C32e(0x6a6a8be1), C32e(0xaeaebe10), C32e(0x6969026b),
+	C32e(0x1717bfa8), C32e(0x999971e8), C32e(0x3a3a5369), C32e(0x2727f7d0),
+	C32e(0xd9d99148), C32e(0xebebde35), C32e(0x2b2be5ce), C32e(0x22227755),
+	C32e(0xd2d204d6), C32e(0xa9a93990), C32e(0x07078780), C32e(0x3333c1f2),
+	C32e(0x2d2decc1), C32e(0x3c3c5a66), C32e(0x1515b8ad), C32e(0xc9c9a960),
+	C32e(0x87875cdb), C32e(0xaaaab01a), C32e(0x5050d888), C32e(0xa5a52b8e),
+	C32e(0x0303898a), C32e(0x59594a13), C32e(0x0909929b), C32e(0x1a1a2339),
+	C32e(0x65651075), C32e(0xd7d78453), C32e(0x8484d551), C32e(0xd0d003d3),
+	C32e(0x8282dc5e), C32e(0x2929e2cb), C32e(0x5a5ac399), C32e(0x1e1e2d33),
+	C32e(0x7b7b3d46), C32e(0xa8a8b71f), C32e(0x6d6d0c61), C32e(0x2c2c624e)
+};
+
+static const sph_u32 T1dn[] = {
+	C32e(0xa5f497a5), C32e(0x8497eb84), C32e(0x99b0c799), C32e(0x8d8cf78d),
+	C32e(0x0d17e50d), C32e(0xbddcb7bd), C32e(0xb1c8a7b1), C32e(0x54fc3954),
+	C32e(0x50f0c050), C32e(0x03050403), C32e(0xa9e087a9), C32e(0x7d87ac7d),
+	C32e(0x192bd519), C32e(0x62a67162), C32e(0xe6319ae6), C32e(0x9ab5c39a),
+	C32e(0x45cf0545), C32e(0x9dbc3e9d), C32e(0x40c00940), C32e(0x8792ef87),
+	C32e(0x153fc515), C32e(0xeb267feb), C32e(0xc94007c9), C32e(0x0b1ded0b),
+	C32e(0xec2f82ec), C32e(0x67a97d67), C32e(0xfd1cbefd), C32e(0xea258aea),
+	C32e(0xbfda46bf), C32e(0xf702a6f7), C32e(0x96a1d396), C32e(0x5bed2d5b),
+	C32e(0xc25deac2), C32e(0x1c24d91c), C32e(0xaee97aae), C32e(0x6abe986a),
+	C32e(0x5aeed85a), C32e(0x41c3fc41), C32e(0x0206f102), C32e(0x4fd11d4f),
+	C32e(0x5ce4d05c), C32e(0xf407a2f4), C32e(0x345cb934), C32e(0x0818e908),
+	C32e(0x93aedf93), C32e(0x73954d73), C32e(0x53f5c453), C32e(0x3f41543f),
+	C32e(0x0c14100c), C32e(0x52f63152), C32e(0x65af8c65), C32e(0x5ee2215e),
+	C32e(0x28786028), C32e(0xa1f86ea1), C32e(0x0f11140f), C32e(0xb5c45eb5),
+	C32e(0x091b1c09), C32e(0x365a4836), C32e(0x9bb6369b), C32e(0x3d47a53d),
+	C32e(0x266a8126), C32e(0x69bb9c69), C32e(0xcd4cfecd), C32e(0x9fbacf9f),
+	C32e(0x1b2d241b), C32e(0x9eb93a9e), C32e(0x749cb074), C32e(0x2e72682e),
+	C32e(0x2d776c2d), C32e(0xb2cda3b2), C32e(0xee2973ee), C32e(0xfb16b6fb),
+	C32e(0xf60153f6), C32e(0x4dd7ec4d), C32e(0x61a37561), C32e(0xce49face),
+	C32e(0x7b8da47b), C32e(0x3e42a13e), C32e(0x7193bc71), C32e(0x97a22697),
+	C32e(0xf50457f5), C32e(0x68b86968), C32e(0x00000000), C32e(0x2c74992c),
+	C32e(0x60a08060), C32e(0x1f21dd1f), C32e(0xc843f2c8), C32e(0xed2c77ed),
+	C32e(0xbed9b3be), C32e(0x46ca0146), C32e(0xd970ced9), C32e(0x4bdde44b),
+	C32e(0xde7933de), C32e(0xd4672bd4), C32e(0xe8237be8), C32e(0x4ade114a),
+	C32e(0x6bbd6d6b), C32e(0x2a7e912a), C32e(0xe5349ee5), C32e(0x163ac116),
+	C32e(0xc55417c5), C32e(0xd7622fd7), C32e(0x55ffcc55), C32e(0x94a72294),
+	C32e(0xcf4a0fcf), C32e(0x1030c910), C32e(0x060a0806), C32e(0x8198e781),
+	C32e(0xf00b5bf0), C32e(0x44ccf044), C32e(0xbad54aba), C32e(0xe33e96e3),
+	C32e(0xf30e5ff3), C32e(0xfe19bafe), C32e(0xc05b1bc0), C32e(0x8a850a8a),
+	C32e(0xadec7ead), C32e(0xbcdf42bc), C32e(0x48d8e048), C32e(0x040cf904),
+	C32e(0xdf7ac6df), C32e(0xc158eec1), C32e(0x759f4575), C32e(0x63a58463),
+	C32e(0x30504030), C32e(0x1a2ed11a), C32e(0x0e12e10e), C32e(0x6db7656d),
+	C32e(0x4cd4194c), C32e(0x143c3014), C32e(0x355f4c35), C32e(0x2f719d2f),
+	C32e(0xe13867e1), C32e(0xa2fd6aa2), C32e(0xcc4f0bcc), C32e(0x394b5c39),
+	C32e(0x57f93d57), C32e(0xf20daaf2), C32e(0x829de382), C32e(0x47c9f447),
+	C32e(0xacef8bac), C32e(0xe7326fe7), C32e(0x2b7d642b), C32e(0x95a4d795),
+	C32e(0xa0fb9ba0), C32e(0x98b33298), C32e(0xd16827d1), C32e(0x7f815d7f),
+	C32e(0x66aa8866), C32e(0x7e82a87e), C32e(0xabe676ab), C32e(0x839e1683),
+	C32e(0xca4503ca), C32e(0x297b9529), C32e(0xd36ed6d3), C32e(0x3c44503c),
+	C32e(0x798b5579), C32e(0xe23d63e2), C32e(0x1d272c1d), C32e(0x769a4176),
+	C32e(0x3b4dad3b), C32e(0x56fac856), C32e(0x4ed2e84e), C32e(0x1e22281e),
+	C32e(0xdb763fdb), C32e(0x0a1e180a), C32e(0x6cb4906c), C32e(0xe4376be4),
+	C32e(0x5de7255d), C32e(0x6eb2616e), C32e(0xef2a86ef), C32e(0xa6f193a6),
+	C32e(0xa8e372a8), C32e(0xa4f762a4), C32e(0x3759bd37), C32e(0x8b86ff8b),
+	C32e(0x3256b132), C32e(0x43c50d43), C32e(0x59ebdc59), C32e(0xb7c2afb7),
+	C32e(0x8c8f028c), C32e(0x64ac7964), C32e(0xd26d23d2), C32e(0xe03b92e0),
+	C32e(0xb4c7abb4), C32e(0xfa1543fa), C32e(0x0709fd07), C32e(0x256f8525),
+	C32e(0xafea8faf), C32e(0x8e89f38e), C32e(0xe9208ee9), C32e(0x18282018),
+	C32e(0xd564ded5), C32e(0x8883fb88), C32e(0x6fb1946f), C32e(0x7296b872),
+	C32e(0x246c7024), C32e(0xf108aef1), C32e(0xc752e6c7), C32e(0x51f33551),
+	C32e(0x23658d23), C32e(0x7c84597c), C32e(0x9cbfcb9c), C32e(0x21637c21),
+	C32e(0xdd7c37dd), C32e(0xdc7fc2dc), C32e(0x86911a86), C32e(0x85941e85),
+	C32e(0x90abdb90), C32e(0x42c6f842), C32e(0xc457e2c4), C32e(0xaae583aa),
+	C32e(0xd8733bd8), C32e(0x050f0c05), C32e(0x0103f501), C32e(0x12363812),
+	C32e(0xa3fe9fa3), C32e(0x5fe1d45f), C32e(0xf91047f9), C32e(0xd06bd2d0),
+	C32e(0x91a82e91), C32e(0x58e82958), C32e(0x27697427), C32e(0xb9d04eb9),
+	C32e(0x3848a938), C32e(0x1335cd13), C32e(0xb3ce56b3), C32e(0x33554433),
+	C32e(0xbbd6bfbb), C32e(0x70904970), C32e(0x89800e89), C32e(0xa7f266a7),
+	C32e(0xb6c15ab6), C32e(0x22667822), C32e(0x92ad2a92), C32e(0x20608920),
+	C32e(0x49db1549), C32e(0xff1a4fff), C32e(0x7888a078), C32e(0x7a8e517a),
+	C32e(0x8f8a068f), C32e(0xf813b2f8), C32e(0x809b1280), C32e(0x17393417),
+	C32e(0xda75cada), C32e(0x3153b531), C32e(0xc65113c6), C32e(0xb8d3bbb8),
+	C32e(0xc35e1fc3), C32e(0xb0cb52b0), C32e(0x7799b477), C32e(0x11333c11),
+	C32e(0xcb46f6cb), C32e(0xfc1f4bfc), C32e(0xd661dad6), C32e(0x3a4e583a)
+};
+
+static const sph_u32 T2up[] = {
+	C32e(0xa5c6c632), C32e(0x84f8f86f), C32e(0x99eeee5e), C32e(0x8df6f67a),
+	C32e(0x0dffffe8), C32e(0xbdd6d60a), C32e(0xb1dede16), C32e(0x5491916d),
+	C32e(0x50606090), C32e(0x03020207), C32e(0xa9cece2e), C32e(0x7d5656d1),
+	C32e(0x19e7e7cc), C32e(0x62b5b513), C32e(0xe64d4d7c), C32e(0x9aecec59),
+	C32e(0x458f8f40), C32e(0x9d1f1fa3), C32e(0x40898949), C32e(0x87fafa68),
+	C32e(0x15efefd0), C32e(0xebb2b294), C32e(0xc98e8ece), C32e(0x0bfbfbe6),
+	C32e(0xec41416e), C32e(0x67b3b31a), C32e(0xfd5f5f43), C32e(0xea454560),
+	C32e(0xbf2323f9), C32e(0xf7535351), C32e(0x96e4e445), C32e(0x5b9b9b76),
+	C32e(0xc2757528), C32e(0x1ce1e1c5), C32e(0xae3d3dd4), C32e(0x6a4c4cf2),
+	C32e(0x5a6c6c82), C32e(0x417e7ebd), C32e(0x02f5f5f3), C32e(0x4f838352),
+	C32e(0x5c68688c), C32e(0xf4515156), C32e(0x34d1d18d), C32e(0x08f9f9e1),
+	C32e(0x93e2e24c), C32e(0x73abab3e), C32e(0x53626297), C32e(0x3f2a2a6b),
+	C32e(0x0c08081c), C32e(0x52959563), C32e(0x654646e9), C32e(0x5e9d9d7f),
+	C32e(0x28303048), C32e(0xa13737cf), C32e(0x0f0a0a1b), C32e(0xb52f2feb),
+	C32e(0x090e0e15), C32e(0x3624247e), C32e(0x9b1b1bad), C32e(0x3ddfdf98),
+	C32e(0x26cdcda7), C32e(0x694e4ef5), C32e(0xcd7f7f33), C32e(0x9feaea50),
+	C32e(0x1b12123f), C32e(0x9e1d1da4), C32e(0x745858c4), C32e(0x2e343446),
+	C32e(0x2d363641), C32e(0xb2dcdc11), C32e(0xeeb4b49d), C32e(0xfb5b5b4d),
+	C32e(0xf6a4a4a5), C32e(0x4d7676a1), C32e(0x61b7b714), C32e(0xce7d7d34),
+	C32e(0x7b5252df), C32e(0x3edddd9f), C32e(0x715e5ecd), C32e(0x971313b1),
+	C32e(0xf5a6a6a2), C32e(0x68b9b901), C32e(0x00000000), C32e(0x2cc1c1b5),
+	C32e(0x604040e0), C32e(0x1fe3e3c2), C32e(0xc879793a), C32e(0xedb6b69a),
+	C32e(0xbed4d40d), C32e(0x468d8d47), C32e(0xd9676717), C32e(0x4b7272af),
+	C32e(0xde9494ed), C32e(0xd49898ff), C32e(0xe8b0b093), C32e(0x4a85855b),
+	C32e(0x6bbbbb06), C32e(0x2ac5c5bb), C32e(0xe54f4f7b), C32e(0x16ededd7),
+	C32e(0xc58686d2), C32e(0xd79a9af8), C32e(0x55666699), C32e(0x941111b6),
+	C32e(0xcf8a8ac0), C32e(0x10e9e9d9), C32e(0x0604040e), C32e(0x81fefe66),
+	C32e(0xf0a0a0ab), C32e(0x447878b4), C32e(0xba2525f0), C32e(0xe34b4b75),
+	C32e(0xf3a2a2ac), C32e(0xfe5d5d44), C32e(0xc08080db), C32e(0x8a050580),
+	C32e(0xad3f3fd3), C32e(0xbc2121fe), C32e(0x487070a8), C32e(0x04f1f1fd),
+	C32e(0xdf636319), C32e(0xc177772f), C32e(0x75afaf30), C32e(0x634242e7),
+	C32e(0x30202070), C32e(0x1ae5e5cb), C32e(0x0efdfdef), C32e(0x6dbfbf08),
+	C32e(0x4c818155), C32e(0x14181824), C32e(0x35262679), C32e(0x2fc3c3b2),
+	C32e(0xe1bebe86), C32e(0xa23535c8), C32e(0xcc8888c7), C32e(0x392e2e65),
+	C32e(0x5793936a), C32e(0xf2555558), C32e(0x82fcfc61), C32e(0x477a7ab3),
+	C32e(0xacc8c827), C32e(0xe7baba88), C32e(0x2b32324f), C32e(0x95e6e642),
+	C32e(0xa0c0c03b), C32e(0x981919aa), C32e(0xd19e9ef6), C32e(0x7fa3a322),
+	C32e(0x664444ee), C32e(0x7e5454d6), C32e(0xab3b3bdd), C32e(0x830b0b95),
+	C32e(0xca8c8cc9), C32e(0x29c7c7bc), C32e(0xd36b6b05), C32e(0x3c28286c),
+	C32e(0x79a7a72c), C32e(0xe2bcbc81), C32e(0x1d161631), C32e(0x76adad37),
+	C32e(0x3bdbdb96), C32e(0x5664649e), C32e(0x4e7474a6), C32e(0x1e141436),
+	C32e(0xdb9292e4), C32e(0x0a0c0c12), C32e(0x6c4848fc), C32e(0xe4b8b88f),
+	C32e(0x5d9f9f78), C32e(0x6ebdbd0f), C32e(0xef434369), C32e(0xa6c4c435),
+	C32e(0xa83939da), C32e(0xa43131c6), C32e(0x37d3d38a), C32e(0x8bf2f274),
+	C32e(0x32d5d583), C32e(0x438b8b4e), C32e(0x596e6e85), C32e(0xb7dada18),
+	C32e(0x8c01018e), C32e(0x64b1b11d), C32e(0xd29c9cf1), C32e(0xe0494972),
+	C32e(0xb4d8d81f), C32e(0xfaacacb9), C32e(0x07f3f3fa), C32e(0x25cfcfa0),
+	C32e(0xafcaca20), C32e(0x8ef4f47d), C32e(0xe9474767), C32e(0x18101038),
+	C32e(0xd56f6f0b), C32e(0x88f0f073), C32e(0x6f4a4afb), C32e(0x725c5cca),
+	C32e(0x24383854), C32e(0xf157575f), C32e(0xc7737321), C32e(0x51979764),
+	C32e(0x23cbcbae), C32e(0x7ca1a125), C32e(0x9ce8e857), C32e(0x213e3e5d),
+	C32e(0xdd9696ea), C32e(0xdc61611e), C32e(0x860d0d9c), C32e(0x850f0f9b),
+	C32e(0x90e0e04b), C32e(0x427c7cba), C32e(0xc4717126), C32e(0xaacccc29),
+	C32e(0xd89090e3), C32e(0x05060609), C32e(0x01f7f7f4), C32e(0x121c1c2a),
+	C32e(0xa3c2c23c), C32e(0x5f6a6a8b), C32e(0xf9aeaebe), C32e(0xd0696902),
+	C32e(0x911717bf), C32e(0x58999971), C32e(0x273a3a53), C32e(0xb92727f7),
+	C32e(0x38d9d991), C32e(0x13ebebde), C32e(0xb32b2be5), C32e(0x33222277),
+	C32e(0xbbd2d204), C32e(0x70a9a939), C32e(0x89070787), C32e(0xa73333c1),
+	C32e(0xb62d2dec), C32e(0x223c3c5a), C32e(0x921515b8), C32e(0x20c9c9a9),
+	C32e(0x4987875c), C32e(0xffaaaab0), C32e(0x785050d8), C32e(0x7aa5a52b),
+	C32e(0x8f030389), C32e(0xf859594a), C32e(0x80090992), C32e(0x171a1a23),
+	C32e(0xda656510), C32e(0x31d7d784), C32e(0xc68484d5), C32e(0xb8d0d003),
+	C32e(0xc38282dc), C32e(0xb02929e2), C32e(0x775a5ac3), C32e(0x111e1e2d),
+	C32e(0xcb7b7b3d), C32e(0xfca8a8b7), C32e(0xd66d6d0c), C32e(0x3a2c2c62)
+};
+
+static const sph_u32 T2dn[] = {
+	C32e(0xf4a5f497), C32e(0x978497eb), C32e(0xb099b0c7), C32e(0x8c8d8cf7),
+	C32e(0x170d17e5), C32e(0xdcbddcb7), C32e(0xc8b1c8a7), C32e(0xfc54fc39),
+	C32e(0xf050f0c0), C32e(0x05030504), C32e(0xe0a9e087), C32e(0x877d87ac),
+	C32e(0x2b192bd5), C32e(0xa662a671), C32e(0x31e6319a), C32e(0xb59ab5c3),
+	C32e(0xcf45cf05), C32e(0xbc9dbc3e), C32e(0xc040c009), C32e(0x928792ef),
+	C32e(0x3f153fc5), C32e(0x26eb267f), C32e(0x40c94007), C32e(0x1d0b1ded),
+	C32e(0x2fec2f82), C32e(0xa967a97d), C32e(0x1cfd1cbe), C32e(0x25ea258a),
+	C32e(0xdabfda46), C32e(0x02f702a6), C32e(0xa196a1d3), C32e(0xed5bed2d),
+	C32e(0x5dc25dea), C32e(0x241c24d9), C32e(0xe9aee97a), C32e(0xbe6abe98),
+	C32e(0xee5aeed8), C32e(0xc341c3fc), C32e(0x060206f1), C32e(0xd14fd11d),
+	C32e(0xe45ce4d0), C32e(0x07f407a2), C32e(0x5c345cb9), C32e(0x180818e9),
+	C32e(0xae93aedf), C32e(0x9573954d), C32e(0xf553f5c4), C32e(0x413f4154),
+	C32e(0x140c1410), C32e(0xf652f631), C32e(0xaf65af8c), C32e(0xe25ee221),
+	C32e(0x78287860), C32e(0xf8a1f86e), C32e(0x110f1114), C32e(0xc4b5c45e),
+	C32e(0x1b091b1c), C32e(0x5a365a48), C32e(0xb69bb636), C32e(0x473d47a5),
+	C32e(0x6a266a81), C32e(0xbb69bb9c), C32e(0x4ccd4cfe), C32e(0xba9fbacf),
+	C32e(0x2d1b2d24), C32e(0xb99eb93a), C32e(0x9c749cb0), C32e(0x722e7268),
+	C32e(0x772d776c), C32e(0xcdb2cda3), C32e(0x29ee2973), C32e(0x16fb16b6),
+	C32e(0x01f60153), C32e(0xd74dd7ec), C32e(0xa361a375), C32e(0x49ce49fa),
+	C32e(0x8d7b8da4), C32e(0x423e42a1), C32e(0x937193bc), C32e(0xa297a226),
+	C32e(0x04f50457), C32e(0xb868b869), C32e(0x00000000), C32e(0x742c7499),
+	C32e(0xa060a080), C32e(0x211f21dd), C32e(0x43c843f2), C32e(0x2ced2c77),
+	C32e(0xd9bed9b3), C32e(0xca46ca01), C32e(0x70d970ce), C32e(0xdd4bdde4),
+	C32e(0x79de7933), C32e(0x67d4672b), C32e(0x23e8237b), C32e(0xde4ade11),
+	C32e(0xbd6bbd6d), C32e(0x7e2a7e91), C32e(0x34e5349e), C32e(0x3a163ac1),
+	C32e(0x54c55417), C32e(0x62d7622f), C32e(0xff55ffcc), C32e(0xa794a722),
+	C32e(0x4acf4a0f), C32e(0x301030c9), C32e(0x0a060a08), C32e(0x988198e7),
+	C32e(0x0bf00b5b), C32e(0xcc44ccf0), C32e(0xd5bad54a), C32e(0x3ee33e96),
+	C32e(0x0ef30e5f), C32e(0x19fe19ba), C32e(0x5bc05b1b), C32e(0x858a850a),
+	C32e(0xecadec7e), C32e(0xdfbcdf42), C32e(0xd848d8e0), C32e(0x0c040cf9),
+	C32e(0x7adf7ac6), C32e(0x58c158ee), C32e(0x9f759f45), C32e(0xa563a584),
+	C32e(0x50305040), C32e(0x2e1a2ed1), C32e(0x120e12e1), C32e(0xb76db765),
+	C32e(0xd44cd419), C32e(0x3c143c30), C32e(0x5f355f4c), C32e(0x712f719d),
+	C32e(0x38e13867), C32e(0xfda2fd6a), C32e(0x4fcc4f0b), C32e(0x4b394b5c),
+	C32e(0xf957f93d), C32e(0x0df20daa), C32e(0x9d829de3), C32e(0xc947c9f4),
+	C32e(0xefacef8b), C32e(0x32e7326f), C32e(0x7d2b7d64), C32e(0xa495a4d7),
+	C32e(0xfba0fb9b), C32e(0xb398b332), C32e(0x68d16827), C32e(0x817f815d),
+	C32e(0xaa66aa88), C32e(0x827e82a8), C32e(0xe6abe676), C32e(0x9e839e16),
+	C32e(0x45ca4503), C32e(0x7b297b95), C32e(0x6ed36ed6), C32e(0x443c4450),
+	C32e(0x8b798b55), C32e(0x3de23d63), C32e(0x271d272c), C32e(0x9a769a41),
+	C32e(0x4d3b4dad), C32e(0xfa56fac8), C32e(0xd24ed2e8), C32e(0x221e2228),
+	C32e(0x76db763f), C32e(0x1e0a1e18), C32e(0xb46cb490), C32e(0x37e4376b),
+	C32e(0xe75de725), C32e(0xb26eb261), C32e(0x2aef2a86), C32e(0xf1a6f193),
+	C32e(0xe3a8e372), C32e(0xf7a4f762), C32e(0x593759bd), C32e(0x868b86ff),
+	C32e(0x563256b1), C32e(0xc543c50d), C32e(0xeb59ebdc), C32e(0xc2b7c2af),
+	C32e(0x8f8c8f02), C32e(0xac64ac79), C32e(0x6dd26d23), C32e(0x3be03b92),
+	C32e(0xc7b4c7ab), C32e(0x15fa1543), C32e(0x090709fd), C32e(0x6f256f85),
+	C32e(0xeaafea8f), C32e(0x898e89f3), C32e(0x20e9208e), C32e(0x28182820),
+	C32e(0x64d564de), C32e(0x838883fb), C32e(0xb16fb194), C32e(0x967296b8),
+	C32e(0x6c246c70), C32e(0x08f108ae), C32e(0x52c752e6), C32e(0xf351f335),
+	C32e(0x6523658d), C32e(0x847c8459), C32e(0xbf9cbfcb), C32e(0x6321637c),
+	C32e(0x7cdd7c37), C32e(0x7fdc7fc2), C32e(0x9186911a), C32e(0x9485941e),
+	C32e(0xab90abdb), C32e(0xc642c6f8), C32e(0x57c457e2), C32e(0xe5aae583),
+	C32e(0x73d8733b), C32e(0x0f050f0c), C32e(0x030103f5), C32e(0x36123638),
+	C32e(0xfea3fe9f), C32e(0xe15fe1d4), C32e(0x10f91047), C32e(0x6bd06bd2),
+	C32e(0xa891a82e), C32e(0xe858e829), C32e(0x69276974), C32e(0xd0b9d04e),
+	C32e(0x483848a9), C32e(0x351335cd), C32e(0xceb3ce56), C32e(0x55335544),
+	C32e(0xd6bbd6bf), C32e(0x90709049), C32e(0x8089800e), C32e(0xf2a7f266),
+	C32e(0xc1b6c15a), C32e(0x66226678), C32e(0xad92ad2a), C32e(0x60206089),
+	C32e(0xdb49db15), C32e(0x1aff1a4f), C32e(0x887888a0), C32e(0x8e7a8e51),
+	C32e(0x8a8f8a06), C32e(0x13f813b2), C32e(0x9b809b12), C32e(0x39173934),
+	C32e(0x75da75ca), C32e(0x533153b5), C32e(0x51c65113), C32e(0xd3b8d3bb),
+	C32e(0x5ec35e1f), C32e(0xcbb0cb52), C32e(0x997799b4), C32e(0x3311333c),
+	C32e(0x46cb46f6), C32e(0x1ffc1f4b), C32e(0x61d661da), C32e(0x4e3a4e58)
+};
+
+static const sph_u32 T3up[] = {
+	C32e(0x97a5c6c6), C32e(0xeb84f8f8), C32e(0xc799eeee), C32e(0xf78df6f6),
+	C32e(0xe50dffff), C32e(0xb7bdd6d6), C32e(0xa7b1dede), C32e(0x39549191),
+	C32e(0xc0506060), C32e(0x04030202), C32e(0x87a9cece), C32e(0xac7d5656),
+	C32e(0xd519e7e7), C32e(0x7162b5b5), C32e(0x9ae64d4d), C32e(0xc39aecec),
+	C32e(0x05458f8f), C32e(0x3e9d1f1f), C32e(0x09408989), C32e(0xef87fafa),
+	C32e(0xc515efef), C32e(0x7febb2b2), C32e(0x07c98e8e), C32e(0xed0bfbfb),
+	C32e(0x82ec4141), C32e(0x7d67b3b3), C32e(0xbefd5f5f), C32e(0x8aea4545),
+	C32e(0x46bf2323), C32e(0xa6f75353), C32e(0xd396e4e4), C32e(0x2d5b9b9b),
+	C32e(0xeac27575), C32e(0xd91ce1e1), C32e(0x7aae3d3d), C32e(0x986a4c4c),
+	C32e(0xd85a6c6c), C32e(0xfc417e7e), C32e(0xf102f5f5), C32e(0x1d4f8383),
+	C32e(0xd05c6868), C32e(0xa2f45151), C32e(0xb934d1d1), C32e(0xe908f9f9),
+	C32e(0xdf93e2e2), C32e(0x4d73abab), C32e(0xc4536262), C32e(0x543f2a2a),
+	C32e(0x100c0808), C32e(0x31529595), C32e(0x8c654646), C32e(0x215e9d9d),
+	C32e(0x60283030), C32e(0x6ea13737), C32e(0x140f0a0a), C32e(0x5eb52f2f),
+	C32e(0x1c090e0e), C32e(0x48362424), C32e(0x369b1b1b), C32e(0xa53ddfdf),
+	C32e(0x8126cdcd), C32e(0x9c694e4e), C32e(0xfecd7f7f), C32e(0xcf9feaea),
+	C32e(0x241b1212), C32e(0x3a9e1d1d), C32e(0xb0745858), C32e(0x682e3434),
+	C32e(0x6c2d3636), C32e(0xa3b2dcdc), C32e(0x73eeb4b4), C32e(0xb6fb5b5b),
+	C32e(0x53f6a4a4), C32e(0xec4d7676), C32e(0x7561b7b7), C32e(0xface7d7d),
+	C32e(0xa47b5252), C32e(0xa13edddd), C32e(0xbc715e5e), C32e(0x26971313),
+	C32e(0x57f5a6a6), C32e(0x6968b9b9), C32e(0x00000000), C32e(0x992cc1c1),
+	C32e(0x80604040), C32e(0xdd1fe3e3), C32e(0xf2c87979), C32e(0x77edb6b6),
+	C32e(0xb3bed4d4), C32e(0x01468d8d), C32e(0xced96767), C32e(0xe44b7272),
+	C32e(0x33de9494), C32e(0x2bd49898), C32e(0x7be8b0b0), C32e(0x114a8585),
+	C32e(0x6d6bbbbb), C32e(0x912ac5c5), C32e(0x9ee54f4f), C32e(0xc116eded),
+	C32e(0x17c58686), C32e(0x2fd79a9a), C32e(0xcc556666), C32e(0x22941111),
+	C32e(0x0fcf8a8a), C32e(0xc910e9e9), C32e(0x08060404), C32e(0xe781fefe),
+	C32e(0x5bf0a0a0), C32e(0xf0447878), C32e(0x4aba2525), C32e(0x96e34b4b),
+	C32e(0x5ff3a2a2), C32e(0xbafe5d5d), C32e(0x1bc08080), C32e(0x0a8a0505),
+	C32e(0x7ead3f3f), C32e(0x42bc2121), C32e(0xe0487070), C32e(0xf904f1f1),
+	C32e(0xc6df6363), C32e(0xeec17777), C32e(0x4575afaf), C32e(0x84634242),
+	C32e(0x40302020), C32e(0xd11ae5e5), C32e(0xe10efdfd), C32e(0x656dbfbf),
+	C32e(0x194c8181), C32e(0x30141818), C32e(0x4c352626), C32e(0x9d2fc3c3),
+	C32e(0x67e1bebe), C32e(0x6aa23535), C32e(0x0bcc8888), C32e(0x5c392e2e),
+	C32e(0x3d579393), C32e(0xaaf25555), C32e(0xe382fcfc), C32e(0xf4477a7a),
+	C32e(0x8bacc8c8), C32e(0x6fe7baba), C32e(0x642b3232), C32e(0xd795e6e6),
+	C32e(0x9ba0c0c0), C32e(0x32981919), C32e(0x27d19e9e), C32e(0x5d7fa3a3),
+	C32e(0x88664444), C32e(0xa87e5454), C32e(0x76ab3b3b), C32e(0x16830b0b),
+	C32e(0x03ca8c8c), C32e(0x9529c7c7), C32e(0xd6d36b6b), C32e(0x503c2828),
+	C32e(0x5579a7a7), C32e(0x63e2bcbc), C32e(0x2c1d1616), C32e(0x4176adad),
+	C32e(0xad3bdbdb), C32e(0xc8566464), C32e(0xe84e7474), C32e(0x281e1414),
+	C32e(0x3fdb9292), C32e(0x180a0c0c), C32e(0x906c4848), C32e(0x6be4b8b8),
+	C32e(0x255d9f9f), C32e(0x616ebdbd), C32e(0x86ef4343), C32e(0x93a6c4c4),
+	C32e(0x72a83939), C32e(0x62a43131), C32e(0xbd37d3d3), C32e(0xff8bf2f2),
+	C32e(0xb132d5d5), C32e(0x0d438b8b), C32e(0xdc596e6e), C32e(0xafb7dada),
+	C32e(0x028c0101), C32e(0x7964b1b1), C32e(0x23d29c9c), C32e(0x92e04949),
+	C32e(0xabb4d8d8), C32e(0x43faacac), C32e(0xfd07f3f3), C32e(0x8525cfcf),
+	C32e(0x8fafcaca), C32e(0xf38ef4f4), C32e(0x8ee94747), C32e(0x20181010),
+	C32e(0xded56f6f), C32e(0xfb88f0f0), C32e(0x946f4a4a), C32e(0xb8725c5c),
+	C32e(0x70243838), C32e(0xaef15757), C32e(0xe6c77373), C32e(0x35519797),
+	C32e(0x8d23cbcb), C32e(0x597ca1a1), C32e(0xcb9ce8e8), C32e(0x7c213e3e),
+	C32e(0x37dd9696), C32e(0xc2dc6161), C32e(0x1a860d0d), C32e(0x1e850f0f),
+	C32e(0xdb90e0e0), C32e(0xf8427c7c), C32e(0xe2c47171), C32e(0x83aacccc),
+	C32e(0x3bd89090), C32e(0x0c050606), C32e(0xf501f7f7), C32e(0x38121c1c),
+	C32e(0x9fa3c2c2), C32e(0xd45f6a6a), C32e(0x47f9aeae), C32e(0xd2d06969),
+	C32e(0x2e911717), C32e(0x29589999), C32e(0x74273a3a), C32e(0x4eb92727),
+	C32e(0xa938d9d9), C32e(0xcd13ebeb), C32e(0x56b32b2b), C32e(0x44332222),
+	C32e(0xbfbbd2d2), C32e(0x4970a9a9), C32e(0x0e890707), C32e(0x66a73333),
+	C32e(0x5ab62d2d), C32e(0x78223c3c), C32e(0x2a921515), C32e(0x8920c9c9),
+	C32e(0x15498787), C32e(0x4fffaaaa), C32e(0xa0785050), C32e(0x517aa5a5),
+	C32e(0x068f0303), C32e(0xb2f85959), C32e(0x12800909), C32e(0x34171a1a),
+	C32e(0xcada6565), C32e(0xb531d7d7), C32e(0x13c68484), C32e(0xbbb8d0d0),
+	C32e(0x1fc38282), C32e(0x52b02929), C32e(0xb4775a5a), C32e(0x3c111e1e),
+	C32e(0xf6cb7b7b), C32e(0x4bfca8a8), C32e(0xdad66d6d), C32e(0x583a2c2c)
+};
+
+static const sph_u32 T3dn[] = {
+	C32e(0x32f4a5f4), C32e(0x6f978497), C32e(0x5eb099b0), C32e(0x7a8c8d8c),
+	C32e(0xe8170d17), C32e(0x0adcbddc), C32e(0x16c8b1c8), C32e(0x6dfc54fc),
+	C32e(0x90f050f0), C32e(0x07050305), C32e(0x2ee0a9e0), C32e(0xd1877d87),
+	C32e(0xcc2b192b), C32e(0x13a662a6), C32e(0x7c31e631), C32e(0x59b59ab5),
+	C32e(0x40cf45cf), C32e(0xa3bc9dbc), C32e(0x49c040c0), C32e(0x68928792),
+	C32e(0xd03f153f), C32e(0x9426eb26), C32e(0xce40c940), C32e(0xe61d0b1d),
+	C32e(0x6e2fec2f), C32e(0x1aa967a9), C32e(0x431cfd1c), C32e(0x6025ea25),
+	C32e(0xf9dabfda), C32e(0x5102f702), C32e(0x45a196a1), C32e(0x76ed5bed),
+	C32e(0x285dc25d), C32e(0xc5241c24), C32e(0xd4e9aee9), C32e(0xf2be6abe),
+	C32e(0x82ee5aee), C32e(0xbdc341c3), C32e(0xf3060206), C32e(0x52d14fd1),
+	C32e(0x8ce45ce4), C32e(0x5607f407), C32e(0x8d5c345c), C32e(0xe1180818),
+	C32e(0x4cae93ae), C32e(0x3e957395), C32e(0x97f553f5), C32e(0x6b413f41),
+	C32e(0x1c140c14), C32e(0x63f652f6), C32e(0xe9af65af), C32e(0x7fe25ee2),
+	C32e(0x48782878), C32e(0xcff8a1f8), C32e(0x1b110f11), C32e(0xebc4b5c4),
+	C32e(0x151b091b), C32e(0x7e5a365a), C32e(0xadb69bb6), C32e(0x98473d47),
+	C32e(0xa76a266a), C32e(0xf5bb69bb), C32e(0x334ccd4c), C32e(0x50ba9fba),
+	C32e(0x3f2d1b2d), C32e(0xa4b99eb9), C32e(0xc49c749c), C32e(0x46722e72),
+	C32e(0x41772d77), C32e(0x11cdb2cd), C32e(0x9d29ee29), C32e(0x4d16fb16),
+	C32e(0xa501f601), C32e(0xa1d74dd7), C32e(0x14a361a3), C32e(0x3449ce49),
+	C32e(0xdf8d7b8d), C32e(0x9f423e42), C32e(0xcd937193), C32e(0xb1a297a2),
+	C32e(0xa204f504), C32e(0x01b868b8), C32e(0x00000000), C32e(0xb5742c74),
+	C32e(0xe0a060a0), C32e(0xc2211f21), C32e(0x3a43c843), C32e(0x9a2ced2c),
+	C32e(0x0dd9bed9), C32e(0x47ca46ca), C32e(0x1770d970), C32e(0xafdd4bdd),
+	C32e(0xed79de79), C32e(0xff67d467), C32e(0x9323e823), C32e(0x5bde4ade),
+	C32e(0x06bd6bbd), C32e(0xbb7e2a7e), C32e(0x7b34e534), C32e(0xd73a163a),
+	C32e(0xd254c554), C32e(0xf862d762), C32e(0x99ff55ff), C32e(0xb6a794a7),
+	C32e(0xc04acf4a), C32e(0xd9301030), C32e(0x0e0a060a), C32e(0x66988198),
+	C32e(0xab0bf00b), C32e(0xb4cc44cc), C32e(0xf0d5bad5), C32e(0x753ee33e),
+	C32e(0xac0ef30e), C32e(0x4419fe19), C32e(0xdb5bc05b), C32e(0x80858a85),
+	C32e(0xd3ecadec), C32e(0xfedfbcdf), C32e(0xa8d848d8), C32e(0xfd0c040c),
+	C32e(0x197adf7a), C32e(0x2f58c158), C32e(0x309f759f), C32e(0xe7a563a5),
+	C32e(0x70503050), C32e(0xcb2e1a2e), C32e(0xef120e12), C32e(0x08b76db7),
+	C32e(0x55d44cd4), C32e(0x243c143c), C32e(0x795f355f), C32e(0xb2712f71),
+	C32e(0x8638e138), C32e(0xc8fda2fd), C32e(0xc74fcc4f), C32e(0x654b394b),
+	C32e(0x6af957f9), C32e(0x580df20d), C32e(0x619d829d), C32e(0xb3c947c9),
+	C32e(0x27efacef), C32e(0x8832e732), C32e(0x4f7d2b7d), C32e(0x42a495a4),
+	C32e(0x3bfba0fb), C32e(0xaab398b3), C32e(0xf668d168), C32e(0x22817f81),
+	C32e(0xeeaa66aa), C32e(0xd6827e82), C32e(0xdde6abe6), C32e(0x959e839e),
+	C32e(0xc945ca45), C32e(0xbc7b297b), C32e(0x056ed36e), C32e(0x6c443c44),
+	C32e(0x2c8b798b), C32e(0x813de23d), C32e(0x31271d27), C32e(0x379a769a),
+	C32e(0x964d3b4d), C32e(0x9efa56fa), C32e(0xa6d24ed2), C32e(0x36221e22),
+	C32e(0xe476db76), C32e(0x121e0a1e), C32e(0xfcb46cb4), C32e(0x8f37e437),
+	C32e(0x78e75de7), C32e(0x0fb26eb2), C32e(0x692aef2a), C32e(0x35f1a6f1),
+	C32e(0xdae3a8e3), C32e(0xc6f7a4f7), C32e(0x8a593759), C32e(0x74868b86),
+	C32e(0x83563256), C32e(0x4ec543c5), C32e(0x85eb59eb), C32e(0x18c2b7c2),
+	C32e(0x8e8f8c8f), C32e(0x1dac64ac), C32e(0xf16dd26d), C32e(0x723be03b),
+	C32e(0x1fc7b4c7), C32e(0xb915fa15), C32e(0xfa090709), C32e(0xa06f256f),
+	C32e(0x20eaafea), C32e(0x7d898e89), C32e(0x6720e920), C32e(0x38281828),
+	C32e(0x0b64d564), C32e(0x73838883), C32e(0xfbb16fb1), C32e(0xca967296),
+	C32e(0x546c246c), C32e(0x5f08f108), C32e(0x2152c752), C32e(0x64f351f3),
+	C32e(0xae652365), C32e(0x25847c84), C32e(0x57bf9cbf), C32e(0x5d632163),
+	C32e(0xea7cdd7c), C32e(0x1e7fdc7f), C32e(0x9c918691), C32e(0x9b948594),
+	C32e(0x4bab90ab), C32e(0xbac642c6), C32e(0x2657c457), C32e(0x29e5aae5),
+	C32e(0xe373d873), C32e(0x090f050f), C32e(0xf4030103), C32e(0x2a361236),
+	C32e(0x3cfea3fe), C32e(0x8be15fe1), C32e(0xbe10f910), C32e(0x026bd06b),
+	C32e(0xbfa891a8), C32e(0x71e858e8), C32e(0x53692769), C32e(0xf7d0b9d0),
+	C32e(0x91483848), C32e(0xde351335), C32e(0xe5ceb3ce), C32e(0x77553355),
+	C32e(0x04d6bbd6), C32e(0x39907090), C32e(0x87808980), C32e(0xc1f2a7f2),
+	C32e(0xecc1b6c1), C32e(0x5a662266), C32e(0xb8ad92ad), C32e(0xa9602060),
+	C32e(0x5cdb49db), C32e(0xb01aff1a), C32e(0xd8887888), C32e(0x2b8e7a8e),
+	C32e(0x898a8f8a), C32e(0x4a13f813), C32e(0x929b809b), C32e(0x23391739),
+	C32e(0x1075da75), C32e(0x84533153), C32e(0xd551c651), C32e(0x03d3b8d3),
+	C32e(0xdc5ec35e), C32e(0xe2cbb0cb), C32e(0xc3997799), C32e(0x2d331133),
+	C32e(0x3d46cb46), C32e(0xb71ffc1f), C32e(0x0c61d661), C32e(0x624e3a4e)
+};
+
+#define DECL_STATE_SMALL \
+	sph_u32 H[16];
+
+#define READ_STATE_SMALL(sc)   do { \
+		memcpy(H, (sc)->state.narrow, sizeof H); \
+	} while (0)
+
+#define WRITE_STATE_SMALL(sc)   do { \
+		memcpy((sc)->state.narrow, H, sizeof H); \
+	} while (0)
+
+#define XCAT(x, y)    XCAT_(x, y)
+#define XCAT_(x, y)   x ## y
+
+#define RSTT(d0, d1, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d0] = T0up[B32_0(a[b0])] \
+			^ T1up[B32_1(a[b1])] \
+			^ T2up[B32_2(a[b2])] \
+			^ T3up[B32_3(a[b3])] \
+			^ T0dn[B32_0(a[b4])] \
+			^ T1dn[B32_1(a[b5])] \
+			^ T2dn[B32_2(a[b6])] \
+			^ T3dn[B32_3(a[b7])]; \
+		t[d1] = T0dn[B32_0(a[b0])] \
+			^ T1dn[B32_1(a[b1])] \
+			^ T2dn[B32_2(a[b2])] \
+			^ T3dn[B32_3(a[b3])] \
+			^ T0up[B32_0(a[b4])] \
+			^ T1up[B32_1(a[b5])] \
+			^ T2up[B32_2(a[b6])] \
+			^ T3up[B32_3(a[b7])]; \
+	} while (0)
+
+#define ROUND_SMALL_P(a, r)   do { \
+		sph_u32 t[16]; \
+		a[0x0] ^= PC32up(0x00, r); \
+		a[0x1] ^= PC32dn(0x00, r); \
+		a[0x2] ^= PC32up(0x10, r); \
+		a[0x3] ^= PC32dn(0x10, r); \
+		a[0x4] ^= PC32up(0x20, r); \
+		a[0x5] ^= PC32dn(0x20, r); \
+		a[0x6] ^= PC32up(0x30, r); \
+		a[0x7] ^= PC32dn(0x30, r); \
+		a[0x8] ^= PC32up(0x40, r); \
+		a[0x9] ^= PC32dn(0x40, r); \
+		a[0xA] ^= PC32up(0x50, r); \
+		a[0xB] ^= PC32dn(0x50, r); \
+		a[0xC] ^= PC32up(0x60, r); \
+		a[0xD] ^= PC32dn(0x60, r); \
+		a[0xE] ^= PC32up(0x70, r); \
+		a[0xF] ^= PC32dn(0x70, r); \
+		RSTT(0x0, 0x1, a, 0x0, 0x2, 0x4, 0x6, 0x9, 0xB, 0xD, 0xF); \
+		RSTT(0x2, 0x3, a, 0x2, 0x4, 0x6, 0x8, 0xB, 0xD, 0xF, 0x1); \
+		RSTT(0x4, 0x5, a, 0x4, 0x6, 0x8, 0xA, 0xD, 0xF, 0x1, 0x3); \
+		RSTT(0x6, 0x7, a, 0x6, 0x8, 0xA, 0xC, 0xF, 0x1, 0x3, 0x5); \
+		RSTT(0x8, 0x9, a, 0x8, 0xA, 0xC, 0xE, 0x1, 0x3, 0x5, 0x7); \
+		RSTT(0xA, 0xB, a, 0xA, 0xC, 0xE, 0x0, 0x3, 0x5, 0x7, 0x9); \
+		RSTT(0xC, 0xD, a, 0xC, 0xE, 0x0, 0x2, 0x5, 0x7, 0x9, 0xB); \
+		RSTT(0xE, 0xF, a, 0xE, 0x0, 0x2, 0x4, 0x7, 0x9, 0xB, 0xD); \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#define ROUND_SMALL_Q(a, r)   do { \
+		sph_u32 t[16]; \
+		a[0x0] ^= QC32up(0x00, r); \
+		a[0x1] ^= QC32dn(0x00, r); \
+		a[0x2] ^= QC32up(0x10, r); \
+		a[0x3] ^= QC32dn(0x10, r); \
+		a[0x4] ^= QC32up(0x20, r); \
+		a[0x5] ^= QC32dn(0x20, r); \
+		a[0x6] ^= QC32up(0x30, r); \
+		a[0x7] ^= QC32dn(0x30, r); \
+		a[0x8] ^= QC32up(0x40, r); \
+		a[0x9] ^= QC32dn(0x40, r); \
+		a[0xA] ^= QC32up(0x50, r); \
+		a[0xB] ^= QC32dn(0x50, r); \
+		a[0xC] ^= QC32up(0x60, r); \
+		a[0xD] ^= QC32dn(0x60, r); \
+		a[0xE] ^= QC32up(0x70, r); \
+		a[0xF] ^= QC32dn(0x70, r); \
+		RSTT(0x0, 0x1, a, 0x2, 0x6, 0xA, 0xE, 0x1, 0x5, 0x9, 0xD); \
+		RSTT(0x2, 0x3, a, 0x4, 0x8, 0xC, 0x0, 0x3, 0x7, 0xB, 0xF); \
+		RSTT(0x4, 0x5, a, 0x6, 0xA, 0xE, 0x2, 0x5, 0x9, 0xD, 0x1); \
+		RSTT(0x6, 0x7, a, 0x8, 0xC, 0x0, 0x4, 0x7, 0xB, 0xF, 0x3); \
+		RSTT(0x8, 0x9, a, 0xA, 0xE, 0x2, 0x6, 0x9, 0xD, 0x1, 0x5); \
+		RSTT(0xA, 0xB, a, 0xC, 0x0, 0x4, 0x8, 0xB, 0xF, 0x3, 0x7); \
+		RSTT(0xC, 0xD, a, 0xE, 0x2, 0x6, 0xA, 0xD, 0x1, 0x5, 0x9); \
+		RSTT(0xE, 0xF, a, 0x0, 0x4, 0x8, 0xC, 0xF, 0x3, 0x7, 0xB); \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define PERM_SMALL_P(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r ++) \
+			ROUND_SMALL_P(a, r); \
+	} while (0)
+
+#define PERM_SMALL_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r ++) \
+			ROUND_SMALL_Q(a, r); \
+	} while (0)
+
+#else
+
+#define PERM_SMALL_P(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r += 2) { \
+			ROUND_SMALL_P(a, r + 0); \
+			ROUND_SMALL_P(a, r + 1); \
+		} \
+	} while (0)
+
+#define PERM_SMALL_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 10; r += 2) { \
+			ROUND_SMALL_Q(a, r + 0); \
+			ROUND_SMALL_Q(a, r + 1); \
+		} \
+	} while (0)
+
+#endif
+
+#define COMPRESS_SMALL   do { \
+		sph_u32 g[16], m[16]; \
+		size_t u; \
+		for (u = 0; u < 16; u ++) { \
+			m[u] = dec32e_aligned(buf + (u << 2)); \
+			g[u] = m[u] ^ H[u]; \
+		} \
+		PERM_SMALL_P(g); \
+		PERM_SMALL_Q(m); \
+		for (u = 0; u < 16; u ++) \
+			H[u] ^= g[u] ^ m[u]; \
+	} while (0)
+
+#define FINAL_SMALL   do { \
+		sph_u32 x[16]; \
+		size_t u; \
+		memcpy(x, H, sizeof x); \
+		PERM_SMALL_P(x); \
+		for (u = 0; u < 16; u ++) \
+			H[u] ^= x[u]; \
+	} while (0)
+
+#define DECL_STATE_BIG \
+	sph_u32 H[32];
+
+#define READ_STATE_BIG(sc)   do { \
+		memcpy(H, (sc)->state.narrow, sizeof H); \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		memcpy((sc)->state.narrow, H, sizeof H); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define RBTT(d0, d1, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		sph_u32 fu2 = T0up[B32_2(a[b2])]; \
+		sph_u32 fd2 = T0dn[B32_2(a[b2])]; \
+		sph_u32 fu3 = T1up[B32_3(a[b3])]; \
+		sph_u32 fd3 = T1dn[B32_3(a[b3])]; \
+		sph_u32 fu6 = T0up[B32_2(a[b6])]; \
+		sph_u32 fd6 = T0dn[B32_2(a[b6])]; \
+		sph_u32 fu7 = T1up[B32_3(a[b7])]; \
+		sph_u32 fd7 = T1dn[B32_3(a[b7])]; \
+		t[d0] = T0up[B32_0(a[b0])] \
+			^ T1up[B32_1(a[b1])] \
+			^ R32u(fu2, fd2) \
+			^ R32u(fu3, fd3) \
+			^ T0dn[B32_0(a[b4])] \
+			^ T1dn[B32_1(a[b5])] \
+			^ R32d(fu6, fd6) \
+			^ R32d(fu7, fd7); \
+		t[d1] = T0dn[B32_0(a[b0])] \
+			^ T1dn[B32_1(a[b1])] \
+			^ R32d(fu2, fd2) \
+			^ R32d(fu3, fd3) \
+			^ T0up[B32_0(a[b4])] \
+			^ T1up[B32_1(a[b5])] \
+			^ R32u(fu6, fd6) \
+			^ R32u(fu7, fd7); \
+	} while (0)
+
+#else
+
+#define RBTT(d0, d1, a, b0, b1, b2, b3, b4, b5, b6, b7)   do { \
+		t[d0] = T0up[B32_0(a[b0])] \
+			^ T1up[B32_1(a[b1])] \
+			^ T2up[B32_2(a[b2])] \
+			^ T3up[B32_3(a[b3])] \
+			^ T0dn[B32_0(a[b4])] \
+			^ T1dn[B32_1(a[b5])] \
+			^ T2dn[B32_2(a[b6])] \
+			^ T3dn[B32_3(a[b7])]; \
+		t[d1] = T0dn[B32_0(a[b0])] \
+			^ T1dn[B32_1(a[b1])] \
+			^ T2dn[B32_2(a[b2])] \
+			^ T3dn[B32_3(a[b3])] \
+			^ T0up[B32_0(a[b4])] \
+			^ T1up[B32_1(a[b5])] \
+			^ T2up[B32_2(a[b6])] \
+			^ T3up[B32_3(a[b7])]; \
+	} while (0)
+
+#endif
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define ROUND_BIG_P(a, r)   do { \
+		sph_u32 t[32]; \
+		size_t u; \
+		a[0x00] ^= PC32up(0x00, r); \
+		a[0x01] ^= PC32dn(0x00, r); \
+		a[0x02] ^= PC32up(0x10, r); \
+		a[0x03] ^= PC32dn(0x10, r); \
+		a[0x04] ^= PC32up(0x20, r); \
+		a[0x05] ^= PC32dn(0x20, r); \
+		a[0x06] ^= PC32up(0x30, r); \
+		a[0x07] ^= PC32dn(0x30, r); \
+		a[0x08] ^= PC32up(0x40, r); \
+		a[0x09] ^= PC32dn(0x40, r); \
+		a[0x0A] ^= PC32up(0x50, r); \
+		a[0x0B] ^= PC32dn(0x50, r); \
+		a[0x0C] ^= PC32up(0x60, r); \
+		a[0x0D] ^= PC32dn(0x60, r); \
+		a[0x0E] ^= PC32up(0x70, r); \
+		a[0x0F] ^= PC32dn(0x70, r); \
+		a[0x10] ^= PC32up(0x80, r); \
+		a[0x11] ^= PC32dn(0x80, r); \
+		a[0x12] ^= PC32up(0x90, r); \
+		a[0x13] ^= PC32dn(0x90, r); \
+		a[0x14] ^= PC32up(0xA0, r); \
+		a[0x15] ^= PC32dn(0xA0, r); \
+		a[0x16] ^= PC32up(0xB0, r); \
+		a[0x17] ^= PC32dn(0xB0, r); \
+		a[0x18] ^= PC32up(0xC0, r); \
+		a[0x19] ^= PC32dn(0xC0, r); \
+		a[0x1A] ^= PC32up(0xD0, r); \
+		a[0x1B] ^= PC32dn(0xD0, r); \
+		a[0x1C] ^= PC32up(0xE0, r); \
+		a[0x1D] ^= PC32dn(0xE0, r); \
+		a[0x1E] ^= PC32up(0xF0, r); \
+		a[0x1F] ^= PC32dn(0xF0, r); \
+		for (u = 0; u < 32; u += 8) { \
+			RBTT(u + 0x00, (u + 0x01) & 0x1F, a, \
+				u + 0x00, (u + 0x02) & 0x1F, \
+				(u + 0x04) & 0x1F, (u + 0x06) & 0x1F, \
+				(u + 0x09) & 0x1F, (u + 0x0B) & 0x1F, \
+				(u + 0x0D) & 0x1F, (u + 0x17) & 0x1F); \
+			RBTT(u + 0x02, (u + 0x03) & 0x1F, a, \
+				u + 0x02, (u + 0x04) & 0x1F, \
+				(u + 0x06) & 0x1F, (u + 0x08) & 0x1F, \
+				(u + 0x0B) & 0x1F, (u + 0x0D) & 0x1F, \
+				(u + 0x0F) & 0x1F, (u + 0x19) & 0x1F); \
+			RBTT(u + 0x04, (u + 0x05) & 0x1F, a, \
+				u + 0x04, (u + 0x06) & 0x1F, \
+				(u + 0x08) & 0x1F, (u + 0x0A) & 0x1F, \
+				(u + 0x0D) & 0x1F, (u + 0x0F) & 0x1F, \
+				(u + 0x11) & 0x1F, (u + 0x1B) & 0x1F); \
+			RBTT(u + 0x06, (u + 0x07) & 0x1F, a, \
+				u + 0x06, (u + 0x08) & 0x1F, \
+				(u + 0x0A) & 0x1F, (u + 0x0C) & 0x1F, \
+				(u + 0x0F) & 0x1F, (u + 0x11) & 0x1F, \
+				(u + 0x13) & 0x1F, (u + 0x1D) & 0x1F); \
+		} \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#define ROUND_BIG_Q(a, r)   do { \
+		sph_u32 t[32]; \
+		size_t u; \
+		a[0x00] ^= QC32up(0x00, r); \
+		a[0x01] ^= QC32dn(0x00, r); \
+		a[0x02] ^= QC32up(0x10, r); \
+		a[0x03] ^= QC32dn(0x10, r); \
+		a[0x04] ^= QC32up(0x20, r); \
+		a[0x05] ^= QC32dn(0x20, r); \
+		a[0x06] ^= QC32up(0x30, r); \
+		a[0x07] ^= QC32dn(0x30, r); \
+		a[0x08] ^= QC32up(0x40, r); \
+		a[0x09] ^= QC32dn(0x40, r); \
+		a[0x0A] ^= QC32up(0x50, r); \
+		a[0x0B] ^= QC32dn(0x50, r); \
+		a[0x0C] ^= QC32up(0x60, r); \
+		a[0x0D] ^= QC32dn(0x60, r); \
+		a[0x0E] ^= QC32up(0x70, r); \
+		a[0x0F] ^= QC32dn(0x70, r); \
+		a[0x10] ^= QC32up(0x80, r); \
+		a[0x11] ^= QC32dn(0x80, r); \
+		a[0x12] ^= QC32up(0x90, r); \
+		a[0x13] ^= QC32dn(0x90, r); \
+		a[0x14] ^= QC32up(0xA0, r); \
+		a[0x15] ^= QC32dn(0xA0, r); \
+		a[0x16] ^= QC32up(0xB0, r); \
+		a[0x17] ^= QC32dn(0xB0, r); \
+		a[0x18] ^= QC32up(0xC0, r); \
+		a[0x19] ^= QC32dn(0xC0, r); \
+		a[0x1A] ^= QC32up(0xD0, r); \
+		a[0x1B] ^= QC32dn(0xD0, r); \
+		a[0x1C] ^= QC32up(0xE0, r); \
+		a[0x1D] ^= QC32dn(0xE0, r); \
+		a[0x1E] ^= QC32up(0xF0, r); \
+		a[0x1F] ^= QC32dn(0xF0, r); \
+		for (u = 0; u < 32; u += 8) { \
+			RBTT(u + 0x00, (u + 0x01) & 0x1F, a, \
+				(u + 0x02) & 0x1F, (u + 0x06) & 0x1F, \
+				(u + 0x0A) & 0x1F, (u + 0x16) & 0x1F, \
+				(u + 0x01) & 0x1F, (u + 0x05) & 0x1F, \
+				(u + 0x09) & 0x1F, (u + 0x0D) & 0x1F); \
+			RBTT(u + 0x02, (u + 0x03) & 0x1F, a, \
+				(u + 0x04) & 0x1F, (u + 0x08) & 0x1F, \
+				(u + 0x0C) & 0x1F, (u + 0x18) & 0x1F, \
+				(u + 0x03) & 0x1F, (u + 0x07) & 0x1F, \
+				(u + 0x0B) & 0x1F, (u + 0x0F) & 0x1F); \
+			RBTT(u + 0x04, (u + 0x05) & 0x1F, a, \
+				(u + 0x06) & 0x1F, (u + 0x0A) & 0x1F, \
+				(u + 0x0E) & 0x1F, (u + 0x1A) & 0x1F, \
+				(u + 0x05) & 0x1F, (u + 0x09) & 0x1F, \
+				(u + 0x0D) & 0x1F, (u + 0x11) & 0x1F); \
+			RBTT(u + 0x06, (u + 0x07) & 0x1F, a, \
+				(u + 0x08) & 0x1F, (u + 0x0C) & 0x1F, \
+				(u + 0x10) & 0x1F, (u + 0x1C) & 0x1F, \
+				(u + 0x07) & 0x1F, (u + 0x0B) & 0x1F, \
+				(u + 0x0F) & 0x1F, (u + 0x13) & 0x1F); \
+		} \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#else
+
+#define ROUND_BIG_P(a, r)   do { \
+		sph_u32 t[32]; \
+		a[0x00] ^= PC32up(0x00, r); \
+		a[0x01] ^= PC32dn(0x00, r); \
+		a[0x02] ^= PC32up(0x10, r); \
+		a[0x03] ^= PC32dn(0x10, r); \
+		a[0x04] ^= PC32up(0x20, r); \
+		a[0x05] ^= PC32dn(0x20, r); \
+		a[0x06] ^= PC32up(0x30, r); \
+		a[0x07] ^= PC32dn(0x30, r); \
+		a[0x08] ^= PC32up(0x40, r); \
+		a[0x09] ^= PC32dn(0x40, r); \
+		a[0x0A] ^= PC32up(0x50, r); \
+		a[0x0B] ^= PC32dn(0x50, r); \
+		a[0x0C] ^= PC32up(0x60, r); \
+		a[0x0D] ^= PC32dn(0x60, r); \
+		a[0x0E] ^= PC32up(0x70, r); \
+		a[0x0F] ^= PC32dn(0x70, r); \
+		a[0x10] ^= PC32up(0x80, r); \
+		a[0x11] ^= PC32dn(0x80, r); \
+		a[0x12] ^= PC32up(0x90, r); \
+		a[0x13] ^= PC32dn(0x90, r); \
+		a[0x14] ^= PC32up(0xA0, r); \
+		a[0x15] ^= PC32dn(0xA0, r); \
+		a[0x16] ^= PC32up(0xB0, r); \
+		a[0x17] ^= PC32dn(0xB0, r); \
+		a[0x18] ^= PC32up(0xC0, r); \
+		a[0x19] ^= PC32dn(0xC0, r); \
+		a[0x1A] ^= PC32up(0xD0, r); \
+		a[0x1B] ^= PC32dn(0xD0, r); \
+		a[0x1C] ^= PC32up(0xE0, r); \
+		a[0x1D] ^= PC32dn(0xE0, r); \
+		a[0x1E] ^= PC32up(0xF0, r); \
+		a[0x1F] ^= PC32dn(0xF0, r); \
+		RBTT(0x00, 0x01, a, \
+			0x00, 0x02, 0x04, 0x06, 0x09, 0x0B, 0x0D, 0x17); \
+		RBTT(0x02, 0x03, a, \
+			0x02, 0x04, 0x06, 0x08, 0x0B, 0x0D, 0x0F, 0x19); \
+		RBTT(0x04, 0x05, a, \
+			0x04, 0x06, 0x08, 0x0A, 0x0D, 0x0F, 0x11, 0x1B); \
+		RBTT(0x06, 0x07, a, \
+			0x06, 0x08, 0x0A, 0x0C, 0x0F, 0x11, 0x13, 0x1D); \
+		RBTT(0x08, 0x09, a, \
+			0x08, 0x0A, 0x0C, 0x0E, 0x11, 0x13, 0x15, 0x1F); \
+		RBTT(0x0A, 0x0B, a, \
+			0x0A, 0x0C, 0x0E, 0x10, 0x13, 0x15, 0x17, 0x01); \
+		RBTT(0x0C, 0x0D, a, \
+			0x0C, 0x0E, 0x10, 0x12, 0x15, 0x17, 0x19, 0x03); \
+		RBTT(0x0E, 0x0F, a, \
+			0x0E, 0x10, 0x12, 0x14, 0x17, 0x19, 0x1B, 0x05); \
+		RBTT(0x10, 0x11, a, \
+			0x10, 0x12, 0x14, 0x16, 0x19, 0x1B, 0x1D, 0x07); \
+		RBTT(0x12, 0x13, a, \
+			0x12, 0x14, 0x16, 0x18, 0x1B, 0x1D, 0x1F, 0x09); \
+		RBTT(0x14, 0x15, a, \
+			0x14, 0x16, 0x18, 0x1A, 0x1D, 0x1F, 0x01, 0x0B); \
+		RBTT(0x16, 0x17, a, \
+			0x16, 0x18, 0x1A, 0x1C, 0x1F, 0x01, 0x03, 0x0D); \
+		RBTT(0x18, 0x19, a, \
+			0x18, 0x1A, 0x1C, 0x1E, 0x01, 0x03, 0x05, 0x0F); \
+		RBTT(0x1A, 0x1B, a, \
+			0x1A, 0x1C, 0x1E, 0x00, 0x03, 0x05, 0x07, 0x11); \
+		RBTT(0x1C, 0x1D, a, \
+			0x1C, 0x1E, 0x00, 0x02, 0x05, 0x07, 0x09, 0x13); \
+		RBTT(0x1E, 0x1F, a, \
+			0x1E, 0x00, 0x02, 0x04, 0x07, 0x09, 0x0B, 0x15); \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#define ROUND_BIG_Q(a, r)   do { \
+		sph_u32 t[32]; \
+		a[0x00] ^= QC32up(0x00, r); \
+		a[0x01] ^= QC32dn(0x00, r); \
+		a[0x02] ^= QC32up(0x10, r); \
+		a[0x03] ^= QC32dn(0x10, r); \
+		a[0x04] ^= QC32up(0x20, r); \
+		a[0x05] ^= QC32dn(0x20, r); \
+		a[0x06] ^= QC32up(0x30, r); \
+		a[0x07] ^= QC32dn(0x30, r); \
+		a[0x08] ^= QC32up(0x40, r); \
+		a[0x09] ^= QC32dn(0x40, r); \
+		a[0x0A] ^= QC32up(0x50, r); \
+		a[0x0B] ^= QC32dn(0x50, r); \
+		a[0x0C] ^= QC32up(0x60, r); \
+		a[0x0D] ^= QC32dn(0x60, r); \
+		a[0x0E] ^= QC32up(0x70, r); \
+		a[0x0F] ^= QC32dn(0x70, r); \
+		a[0x10] ^= QC32up(0x80, r); \
+		a[0x11] ^= QC32dn(0x80, r); \
+		a[0x12] ^= QC32up(0x90, r); \
+		a[0x13] ^= QC32dn(0x90, r); \
+		a[0x14] ^= QC32up(0xA0, r); \
+		a[0x15] ^= QC32dn(0xA0, r); \
+		a[0x16] ^= QC32up(0xB0, r); \
+		a[0x17] ^= QC32dn(0xB0, r); \
+		a[0x18] ^= QC32up(0xC0, r); \
+		a[0x19] ^= QC32dn(0xC0, r); \
+		a[0x1A] ^= QC32up(0xD0, r); \
+		a[0x1B] ^= QC32dn(0xD0, r); \
+		a[0x1C] ^= QC32up(0xE0, r); \
+		a[0x1D] ^= QC32dn(0xE0, r); \
+		a[0x1E] ^= QC32up(0xF0, r); \
+		a[0x1F] ^= QC32dn(0xF0, r); \
+		RBTT(0x00, 0x01, a, \
+			0x02, 0x06, 0x0A, 0x16, 0x01, 0x05, 0x09, 0x0D); \
+		RBTT(0x02, 0x03, a, \
+			0x04, 0x08, 0x0C, 0x18, 0x03, 0x07, 0x0B, 0x0F); \
+		RBTT(0x04, 0x05, a, \
+			0x06, 0x0A, 0x0E, 0x1A, 0x05, 0x09, 0x0D, 0x11); \
+		RBTT(0x06, 0x07, a, \
+			0x08, 0x0C, 0x10, 0x1C, 0x07, 0x0B, 0x0F, 0x13); \
+		RBTT(0x08, 0x09, a, \
+			0x0A, 0x0E, 0x12, 0x1E, 0x09, 0x0D, 0x11, 0x15); \
+		RBTT(0x0A, 0x0B, a, \
+			0x0C, 0x10, 0x14, 0x00, 0x0B, 0x0F, 0x13, 0x17); \
+		RBTT(0x0C, 0x0D, a, \
+			0x0E, 0x12, 0x16, 0x02, 0x0D, 0x11, 0x15, 0x19); \
+		RBTT(0x0E, 0x0F, a, \
+			0x10, 0x14, 0x18, 0x04, 0x0F, 0x13, 0x17, 0x1B); \
+		RBTT(0x10, 0x11, a, \
+			0x12, 0x16, 0x1A, 0x06, 0x11, 0x15, 0x19, 0x1D); \
+		RBTT(0x12, 0x13, a, \
+			0x14, 0x18, 0x1C, 0x08, 0x13, 0x17, 0x1B, 0x1F); \
+		RBTT(0x14, 0x15, a, \
+			0x16, 0x1A, 0x1E, 0x0A, 0x15, 0x19, 0x1D, 0x01); \
+		RBTT(0x16, 0x17, a, \
+			0x18, 0x1C, 0x00, 0x0C, 0x17, 0x1B, 0x1F, 0x03); \
+		RBTT(0x18, 0x19, a, \
+			0x1A, 0x1E, 0x02, 0x0E, 0x19, 0x1D, 0x01, 0x05); \
+		RBTT(0x1A, 0x1B, a, \
+			0x1C, 0x00, 0x04, 0x10, 0x1B, 0x1F, 0x03, 0x07); \
+		RBTT(0x1C, 0x1D, a, \
+			0x1E, 0x02, 0x06, 0x12, 0x1D, 0x01, 0x05, 0x09); \
+		RBTT(0x1E, 0x1F, a, \
+			0x00, 0x04, 0x08, 0x14, 0x1F, 0x03, 0x07, 0x0B); \
+		memcpy(a, t, sizeof t); \
+	} while (0)
+
+#endif
+
+#if SPH_SMALL_FOOTPRINT_GROESTL
+
+#define PERM_BIG_P(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r ++) \
+			ROUND_BIG_P(a, r); \
+	} while (0)
+
+#define PERM_BIG_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r ++) \
+			ROUND_BIG_Q(a, r); \
+	} while (0)
+
+#else
+
+#define PERM_BIG_P(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r += 2) { \
+			ROUND_BIG_P(a, r + 0); \
+			ROUND_BIG_P(a, r + 1); \
+		} \
+	} while (0)
+
+#define PERM_BIG_Q(a)   do { \
+		int r; \
+		for (r = 0; r < 14; r += 2) { \
+			ROUND_BIG_Q(a, r + 0); \
+			ROUND_BIG_Q(a, r + 1); \
+		} \
+	} while (0)
+
+#endif
+
+#define COMPRESS_BIG   do { \
+		sph_u32 g[32], m[32]; \
+		size_t u; \
+		for (u = 0; u < 32; u ++) { \
+			m[u] = dec32e_aligned(buf + (u << 2)); \
+			g[u] = m[u] ^ H[u]; \
+		} \
+		PERM_BIG_P(g); \
+		PERM_BIG_Q(m); \
+		for (u = 0; u < 32; u ++) \
+			H[u] ^= g[u] ^ m[u]; \
+	} while (0)
+
+#define FINAL_BIG   do { \
+		sph_u32 x[32]; \
+		size_t u; \
+		memcpy(x, H, sizeof x); \
+		PERM_BIG_P(x); \
+		for (u = 0; u < 32; u ++) \
+			H[u] ^= x[u]; \
+	} while (0)
+
+#endif
+
+static void
+groestl_small_init(sph_groestl_small_context *sc, unsigned out_size)
+{
+	size_t u;
+
+	sc->ptr = 0;
+#if SPH_GROESTL_64
+	for (u = 0; u < 7; u ++)
+		sc->state.wide[u] = 0;
+#if USE_LE
+	sc->state.wide[7] = ((sph_u64)(out_size & 0xFF) << 56)
+		| ((sph_u64)(out_size & 0xFF00) << 40);
+#else
+	sc->state.wide[7] = (sph_u64)out_size;
+#endif
+#else
+	for (u = 0; u < 15; u ++)
+		sc->state.narrow[u] = 0;
+#if USE_LE
+	sc->state.narrow[15] = ((sph_u32)(out_size & 0xFF) << 24)
+		| ((sph_u32)(out_size & 0xFF00) << 8);
+#else
+	sc->state.narrow[15] = (sph_u32)out_size;
+#endif
+#endif
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = 0;
+	sc->count_low = 0;
+#endif
+}
+
+static void
+groestl_small_core(sph_groestl_small_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE_SMALL
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE_SMALL(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			COMPRESS_SMALL;
+#if SPH_64
+			sc->count ++;
+#else
+			if ((sc->count_low = SPH_T32(sc->count_low + 1)) == 0)
+				sc->count_high = SPH_T32(sc->count_high + 1);
+#endif
+			ptr = 0;
+		}
+	}
+	WRITE_STATE_SMALL(sc);
+	sc->ptr = ptr;
+}
+
+static void
+groestl_small_close(sph_groestl_small_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_len)
+{
+	unsigned char pad[72];
+	size_t u, ptr, pad_len;
+#if SPH_64
+	sph_u64 count;
+#else
+	sph_u32 count_high, count_low;
+#endif
+	unsigned z;
+	DECL_STATE_SMALL
+
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	pad[0] = ((ub & -z) | z) & 0xFF;
+	if (ptr < 56) {
+		pad_len = 64 - ptr;
+#if SPH_64
+		count = SPH_T64(sc->count + 1);
+#else
+		count_low = SPH_T32(sc->count_low + 1);
+		count_high = SPH_T32(sc->count_high);
+		if (count_low == 0)
+			count_high = SPH_T32(count_high + 1);
+#endif
+	} else {
+		pad_len = 128 - ptr;
+#if SPH_64
+		count = SPH_T64(sc->count + 2);
+#else
+		count_low = SPH_T32(sc->count_low + 2);
+		count_high = SPH_T32(sc->count_high);
+		if (count_low <= 1)
+			count_high = SPH_T32(count_high + 1);
+#endif
+	}
+	memset(pad + 1, 0, pad_len - 9);
+#if SPH_64
+	sph_enc64be(pad + pad_len - 8, count);
+#else
+	sph_enc64be(pad + pad_len - 8, count_high);
+	sph_enc64be(pad + pad_len - 4, count_low);
+#endif
+	groestl_small_core(sc, pad, pad_len);
+	READ_STATE_SMALL(sc);
+	FINAL_SMALL;
+#if SPH_GROESTL_64
+	for (u = 0; u < 4; u ++)
+		enc64e(pad + (u << 3), H[u + 4]);
+#else
+	for (u = 0; u < 8; u ++)
+		enc32e(pad + (u << 2), H[u + 8]);
+#endif
+	memcpy(dst, pad + 32 - out_len, out_len);
+	groestl_small_init(sc, (unsigned)out_len << 3);
+}
+
+static void
+groestl_big_init(sph_groestl_big_context *sc, unsigned out_size)
+{
+	size_t u;
+
+	sc->ptr = 0;
+#if SPH_GROESTL_64
+	for (u = 0; u < 15; u ++)
+		sc->state.wide[u] = 0;
+#if USE_LE
+	sc->state.wide[15] = ((sph_u64)(out_size & 0xFF) << 56)
+		| ((sph_u64)(out_size & 0xFF00) << 40);
+#else
+	sc->state.wide[15] = (sph_u64)out_size;
+#endif
+#else
+	for (u = 0; u < 31; u ++)
+		sc->state.narrow[u] = 0;
+#if USE_LE
+	sc->state.narrow[31] = ((sph_u32)(out_size & 0xFF) << 24)
+		| ((sph_u32)(out_size & 0xFF00) << 8);
+#else
+	sc->state.narrow[31] = (sph_u32)out_size;
+#endif
+#endif
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = 0;
+	sc->count_low = 0;
+#endif
+}
+
+static void
+groestl_big_core(sph_groestl_big_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE_BIG
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE_BIG(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			COMPRESS_BIG;
+#if SPH_64
+			sc->count ++;
+#else
+			if ((sc->count_low = SPH_T32(sc->count_low + 1)) == 0)
+				sc->count_high = SPH_T32(sc->count_high + 1);
+#endif
+			ptr = 0;
+		}
+	}
+	WRITE_STATE_BIG(sc);
+	sc->ptr = ptr;
+}
+
+static void
+groestl_big_close(sph_groestl_big_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_len)
+{
+	unsigned char pad[136];
+	size_t ptr, pad_len, u;
+#if SPH_64
+	sph_u64 count;
+#else
+	sph_u32 count_high, count_low;
+#endif
+	unsigned z;
+	DECL_STATE_BIG
+
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	pad[0] = ((ub & -z) | z) & 0xFF;
+	if (ptr < 120) {
+		pad_len = 128 - ptr;
+#if SPH_64
+		count = SPH_T64(sc->count + 1);
+#else
+		count_low = SPH_T32(sc->count_low + 1);
+		count_high = SPH_T32(sc->count_high);
+		if (count_low == 0)
+			count_high = SPH_T32(count_high + 1);
+#endif
+	} else {
+		pad_len = 256 - ptr;
+#if SPH_64
+		count = SPH_T64(sc->count + 2);
+#else
+		count_low = SPH_T32(sc->count_low + 2);
+		count_high = SPH_T32(sc->count_high);
+		if (count_low <= 1)
+			count_high = SPH_T32(count_high + 1);
+#endif
+	}
+	memset(pad + 1, 0, pad_len - 9);
+#if SPH_64
+	sph_enc64be(pad + pad_len - 8, count);
+#else
+	sph_enc64be(pad + pad_len - 8, count_high);
+	sph_enc64be(pad + pad_len - 4, count_low);
+#endif
+	groestl_big_core(sc, pad, pad_len);
+	READ_STATE_BIG(sc);
+	FINAL_BIG;
+#if SPH_GROESTL_64
+	for (u = 0; u < 8; u ++)
+		enc64e(pad + (u << 3), H[u + 8]);
+#else
+	for (u = 0; u < 16; u ++)
+		enc32e(pad + (u << 2), H[u + 16]);
+#endif
+	memcpy(dst, pad + 64 - out_len, out_len);
+	groestl_big_init(sc, (unsigned)out_len << 3);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl224_init(void *cc)
+{
+	groestl_small_init(cc, 224);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl224(void *cc, const void *data, size_t len)
+{
+	groestl_small_core(cc, data, len);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl224_close(void *cc, void *dst)
+{
+	groestl_small_close(cc, 0, 0, dst, 28);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	groestl_small_close(cc, ub, n, dst, 28);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl256_init(void *cc)
+{
+	groestl_small_init(cc, 256);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl256(void *cc, const void *data, size_t len)
+{
+	groestl_small_core(cc, data, len);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl256_close(void *cc, void *dst)
+{
+	groestl_small_close(cc, 0, 0, dst, 32);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	groestl_small_close(cc, ub, n, dst, 32);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl384_init(void *cc)
+{
+	groestl_big_init(cc, 384);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl384(void *cc, const void *data, size_t len)
+{
+	groestl_big_core(cc, data, len);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl384_close(void *cc, void *dst)
+{
+	groestl_big_close(cc, 0, 0, dst, 48);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	groestl_big_close(cc, ub, n, dst, 48);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl512_init(void *cc)
+{
+	groestl_big_init(cc, 512);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl512(void *cc, const void *data, size_t len)
+{
+	groestl_big_core(cc, data, len);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl512_close(void *cc, void *dst)
+{
+	groestl_big_close(cc, 0, 0, dst, 64);
+}
+
+/* see sph_groestl.h */
+void
+sph_groestl512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	groestl_big_close(cc, ub, n, dst, 64);
+}
+
+#ifdef __cplusplus
+}
+
+#endif
diff --git a/src/crypto/ghostrider/sph_groestl.h b/src/crypto/ghostrider/sph_groestl.h
new file mode 100644
index 000000000..07558764f
--- /dev/null
+++ b/src/crypto/ghostrider/sph_groestl.h
@@ -0,0 +1,329 @@
+/* $Id: sph_groestl.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * Groestl interface. This code implements Groestl with the recommended
+ * parameters for SHA-3, with outputs of 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_groestl.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_GROESTL_H__
+#define SPH_GROESTL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "sph_types.h"
+#include <stddef.h>
+
+/**
+ * Output size (in bits) for Groestl-224.
+ */
+#define SPH_SIZE_groestl224 224
+
+/**
+ * Output size (in bits) for Groestl-256.
+ */
+#define SPH_SIZE_groestl256 256
+
+/**
+ * Output size (in bits) for Groestl-384.
+ */
+#define SPH_SIZE_groestl384 384
+
+/**
+ * Output size (in bits) for Groestl-512.
+ */
+#define SPH_SIZE_groestl512 512
+
+/**
+ * This structure is a context for Groestl-224 and Groestl-256 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a Groestl computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running Groestl
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+  unsigned char buf[64]; /* first field, for alignment */
+  size_t ptr;
+  union {
+#if SPH_64
+    sph_u64 wide[8];
+#endif
+    sph_u32 narrow[16];
+  } state;
+#if SPH_64
+  sph_u64 count;
+#else
+  sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_groestl_small_context;
+
+/**
+ * This structure is a context for Groestl-224 computations. It is
+ * identical to the common <code>sph_groestl_small_context</code>.
+ */
+typedef sph_groestl_small_context sph_groestl224_context;
+
+/**
+ * This structure is a context for Groestl-256 computations. It is
+ * identical to the common <code>sph_groestl_small_context</code>.
+ */
+typedef sph_groestl_small_context sph_groestl256_context;
+
+/**
+ * This structure is a context for Groestl-384 and Groestl-512 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a Groestl computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running Groestl
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+  unsigned char buf[128]; /* first field, for alignment */
+  size_t ptr;
+  union {
+#if SPH_64
+    sph_u64 wide[16];
+#endif
+    sph_u32 narrow[32];
+  } state;
+#if SPH_64
+  sph_u64 count;
+#else
+  sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_groestl_big_context;
+
+/**
+ * This structure is a context for Groestl-384 computations. It is
+ * identical to the common <code>sph_groestl_small_context</code>.
+ */
+typedef sph_groestl_big_context sph_groestl384_context;
+
+/**
+ * This structure is a context for Groestl-512 computations. It is
+ * identical to the common <code>sph_groestl_small_context</code>.
+ */
+typedef sph_groestl_big_context sph_groestl512_context;
+
+/**
+ * Initialize a Groestl-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Groestl-224 context (pointer to a
+ *             <code>sph_groestl224_context</code>)
+ */
+void sph_groestl224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Groestl-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_groestl224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Groestl-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Groestl-224 context
+ * @param dst   the destination buffer
+ */
+void sph_groestl224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Groestl-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_groestl224_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                      void *dst);
+
+/**
+ * Initialize a Groestl-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Groestl-256 context (pointer to a
+ *             <code>sph_groestl256_context</code>)
+ */
+void sph_groestl256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Groestl-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_groestl256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Groestl-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Groestl-256 context
+ * @param dst   the destination buffer
+ */
+void sph_groestl256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Groestl-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_groestl256_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                      void *dst);
+
+/**
+ * Initialize a Groestl-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Groestl-384 context (pointer to a
+ *             <code>sph_groestl384_context</code>)
+ */
+void sph_groestl384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Groestl-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_groestl384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Groestl-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Groestl-384 context
+ * @param dst   the destination buffer
+ */
+void sph_groestl384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Groestl-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_groestl384_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                      void *dst);
+
+/**
+ * Initialize a Groestl-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Groestl-512 context (pointer to a
+ *             <code>sph_groestl512_context</code>)
+ */
+void sph_groestl512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Groestl-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_groestl512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Groestl-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Groestl-512 context
+ * @param dst   the destination buffer
+ */
+void sph_groestl512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Groestl-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_groestl512_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                      void *dst);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_hamsi.c b/src/crypto/ghostrider/sph_hamsi.c
new file mode 100644
index 000000000..a24bbf75d
--- /dev/null
+++ b/src/crypto/ghostrider/sph_hamsi.c
@@ -0,0 +1,867 @@
+/* $Id: hamsi.c 251 2010-10-19 14:31:51Z tp $ */
+/*
+ * Hamsi implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_hamsi.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_HAMSI
+#define SPH_SMALL_FOOTPRINT_HAMSI   1
+#endif
+
+/*
+ * The SPH_HAMSI_EXPAND_* define how many input bits we handle in one
+ * table lookup during message expansion (1 to 8, inclusive). If we note
+ * w the number of bits per message word (w=32 for Hamsi-224/256, w=64
+ * for Hamsi-384/512), r the size of a "row" in 32-bit words (r=8 for
+ * Hamsi-224/256, r=16 for Hamsi-384/512), and n the expansion level,
+ * then we will get t tables (where t=ceil(w/n)) of individual size
+ * 2^n*r*4 (in bytes). The last table may be shorter (e.g. with w=32 and
+ * n=5, there are 7 tables, but the last one uses only two bits on
+ * input, not five).
+ *
+ * Also, we read t rows of r words from RAM. Words in a given row are
+ * concatenated in RAM in that order, so most of the cost is about
+ * reading the first row word; comparatively, cache misses are thus
+ * less expensive with Hamsi-512 (r=16) than with Hamsi-256 (r=8).
+ *
+ * When n=1, tables are "special" in that we omit the first entry of
+ * each table (which always contains 0), so that total table size is
+ * halved.
+ *
+ * We thus have the following (size1 is the cumulative table size of
+ * Hamsi-224/256; size2 is for Hamsi-384/512; similarly, t1 and t2
+ * are for Hamsi-224/256 and Hamsi-384/512, respectively).
+ *
+ *   n      size1      size2    t1    t2
+ * ---------------------------------------
+ *   1       1024       4096    32    64
+ *   2       2048       8192    16    32
+ *   3       2688      10880    11    22
+ *   4       4096      16384     8    16
+ *   5       6272      25600     7    13
+ *   6      10368      41984     6    11
+ *   7      16896      73856     5    10
+ *   8      32768     131072     4     8
+ *
+ * So there is a trade-off: a lower n makes the tables fit better in
+ * L1 cache, but increases the number of memory accesses. The optimal
+ * value depends on the amount of available L1 cache and the relative
+ * impact of a cache miss.
+ *
+ * Experimentally, in ideal benchmark conditions (which are not necessarily
+ * realistic with regards to L1 cache contention), it seems that n=8 is
+ * the best value on "big" architectures (those with 32 kB or more of L1
+ * cache), while n=4 is better on "small" architectures. This was tested
+ * on an Intel Core2 Q6600 (both 32-bit and 64-bit mode), a PowerPC G3
+ * (32 kB L1 cache, hence "big"), and a MIPS-compatible Broadcom BCM3302
+ * (8 kB L1 cache).
+ *
+ * Note: with n=1, the 32 tables (actually implemented as one big table)
+ * are read entirely and sequentially, regardless of the input data,
+ * thus avoiding any data-dependent table access pattern.
+ */
+
+#if !defined SPH_HAMSI_EXPAND_SMALL
+#if SPH_SMALL_FOOTPRINT_HAMSI
+#define SPH_HAMSI_EXPAND_SMALL  4
+#else
+#define SPH_HAMSI_EXPAND_SMALL  8
+#endif
+#endif
+
+#if !defined SPH_HAMSI_EXPAND_BIG
+#define SPH_HAMSI_EXPAND_BIG    8
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#include "sph_hamsi_helper.c"
+
+static const sph_u32 IV224[] = {
+	SPH_C32(0xc3967a67), SPH_C32(0xc3bc6c20), SPH_C32(0x4bc3bcc3),
+	SPH_C32(0xa7c3bc6b), SPH_C32(0x2c204b61), SPH_C32(0x74686f6c),
+	SPH_C32(0x69656b65), SPH_C32(0x20556e69)
+};
+
+/*
+ * This version is the one used in the Hamsi submission package for
+ * round 2 of the SHA-3 competition; the UTF-8 encoding is wrong and
+ * shall soon be corrected in the official Hamsi specification.
+ *
+static const sph_u32 IV224[] = {
+	SPH_C32(0x3c967a67), SPH_C32(0x3cbc6c20), SPH_C32(0xb4c343c3),
+	SPH_C32(0xa73cbc6b), SPH_C32(0x2c204b61), SPH_C32(0x74686f6c),
+	SPH_C32(0x69656b65), SPH_C32(0x20556e69)
+};
+ */
+
+static const sph_u32 IV256[] = {
+	SPH_C32(0x76657273), SPH_C32(0x69746569), SPH_C32(0x74204c65),
+	SPH_C32(0x7576656e), SPH_C32(0x2c204465), SPH_C32(0x70617274),
+	SPH_C32(0x656d656e), SPH_C32(0x7420456c)
+};
+
+static const sph_u32 IV384[] = {
+	SPH_C32(0x656b7472), SPH_C32(0x6f746563), SPH_C32(0x686e6965),
+	SPH_C32(0x6b2c2043), SPH_C32(0x6f6d7075), SPH_C32(0x74657220),
+	SPH_C32(0x53656375), SPH_C32(0x72697479), SPH_C32(0x20616e64),
+	SPH_C32(0x20496e64), SPH_C32(0x75737472), SPH_C32(0x69616c20),
+	SPH_C32(0x43727970), SPH_C32(0x746f6772), SPH_C32(0x61706879),
+	SPH_C32(0x2c204b61)
+};
+
+static const sph_u32 IV512[] = {
+	SPH_C32(0x73746565), SPH_C32(0x6c706172), SPH_C32(0x6b204172),
+	SPH_C32(0x656e6265), SPH_C32(0x72672031), SPH_C32(0x302c2062),
+	SPH_C32(0x75732032), SPH_C32(0x3434362c), SPH_C32(0x20422d33),
+	SPH_C32(0x30303120), SPH_C32(0x4c657576), SPH_C32(0x656e2d48),
+	SPH_C32(0x65766572), SPH_C32(0x6c65652c), SPH_C32(0x2042656c),
+	SPH_C32(0x6769756d)
+};
+
+static const sph_u32 alpha_n[] = {
+	SPH_C32(0xff00f0f0), SPH_C32(0xccccaaaa), SPH_C32(0xf0f0cccc),
+	SPH_C32(0xff00aaaa), SPH_C32(0xccccaaaa), SPH_C32(0xf0f0ff00),
+	SPH_C32(0xaaaacccc), SPH_C32(0xf0f0ff00), SPH_C32(0xf0f0cccc),
+	SPH_C32(0xaaaaff00), SPH_C32(0xccccff00), SPH_C32(0xaaaaf0f0),
+	SPH_C32(0xaaaaf0f0), SPH_C32(0xff00cccc), SPH_C32(0xccccf0f0),
+	SPH_C32(0xff00aaaa), SPH_C32(0xccccaaaa), SPH_C32(0xff00f0f0),
+	SPH_C32(0xff00aaaa), SPH_C32(0xf0f0cccc), SPH_C32(0xf0f0ff00),
+	SPH_C32(0xccccaaaa), SPH_C32(0xf0f0ff00), SPH_C32(0xaaaacccc),
+	SPH_C32(0xaaaaff00), SPH_C32(0xf0f0cccc), SPH_C32(0xaaaaf0f0),
+	SPH_C32(0xccccff00), SPH_C32(0xff00cccc), SPH_C32(0xaaaaf0f0),
+	SPH_C32(0xff00aaaa), SPH_C32(0xccccf0f0)
+};
+
+static const sph_u32 alpha_f[] = {
+	SPH_C32(0xcaf9639c), SPH_C32(0x0ff0f9c0), SPH_C32(0x639c0ff0),
+	SPH_C32(0xcaf9f9c0), SPH_C32(0x0ff0f9c0), SPH_C32(0x639ccaf9),
+	SPH_C32(0xf9c00ff0), SPH_C32(0x639ccaf9), SPH_C32(0x639c0ff0),
+	SPH_C32(0xf9c0caf9), SPH_C32(0x0ff0caf9), SPH_C32(0xf9c0639c),
+	SPH_C32(0xf9c0639c), SPH_C32(0xcaf90ff0), SPH_C32(0x0ff0639c),
+	SPH_C32(0xcaf9f9c0), SPH_C32(0x0ff0f9c0), SPH_C32(0xcaf9639c),
+	SPH_C32(0xcaf9f9c0), SPH_C32(0x639c0ff0), SPH_C32(0x639ccaf9),
+	SPH_C32(0x0ff0f9c0), SPH_C32(0x639ccaf9), SPH_C32(0xf9c00ff0),
+	SPH_C32(0xf9c0caf9), SPH_C32(0x639c0ff0), SPH_C32(0xf9c0639c),
+	SPH_C32(0x0ff0caf9), SPH_C32(0xcaf90ff0), SPH_C32(0xf9c0639c),
+	SPH_C32(0xcaf9f9c0), SPH_C32(0x0ff0639c)
+};
+
+#define DECL_STATE_SMALL \
+	sph_u32 c0, c1, c2, c3, c4, c5, c6, c7;
+
+#define READ_STATE_SMALL(sc)   do { \
+		c0 = sc->h[0x0]; \
+		c1 = sc->h[0x1]; \
+		c2 = sc->h[0x2]; \
+		c3 = sc->h[0x3]; \
+		c4 = sc->h[0x4]; \
+		c5 = sc->h[0x5]; \
+		c6 = sc->h[0x6]; \
+		c7 = sc->h[0x7]; \
+	} while (0)
+
+#define WRITE_STATE_SMALL(sc)   do { \
+		sc->h[0x0] = c0; \
+		sc->h[0x1] = c1; \
+		sc->h[0x2] = c2; \
+		sc->h[0x3] = c3; \
+		sc->h[0x4] = c4; \
+		sc->h[0x5] = c5; \
+		sc->h[0x6] = c6; \
+		sc->h[0x7] = c7; \
+	} while (0)
+
+#define s0   m0
+#define s1   m1
+#define s2   c0
+#define s3   c1
+#define s4   c2
+#define s5   c3
+#define s6   m2
+#define s7   m3
+#define s8   m4
+#define s9   m5
+#define sA   c4
+#define sB   c5
+#define sC   c6
+#define sD   c7
+#define sE   m6
+#define sF   m7
+
+#define SBOX(a, b, c, d)   do { \
+		sph_u32 t; \
+		t = (a); \
+		(a) &= (c); \
+		(a) ^= (d); \
+		(c) ^= (b); \
+		(c) ^= (a); \
+		(d) |= t; \
+		(d) ^= (b); \
+		t ^= (c); \
+		(b) = (d); \
+		(d) |= t; \
+		(d) ^= (a); \
+		(a) &= (b); \
+		t ^= (a); \
+		(b) ^= (d); \
+		(b) ^= t; \
+		(a) = (c); \
+		(c) = (b); \
+		(b) = (d); \
+		(d) = SPH_T32(~t); \
+	} while (0)
+
+#define L(a, b, c, d)   do { \
+		(a) = SPH_ROTL32(a, 13); \
+		(c) = SPH_ROTL32(c, 3); \
+		(b) ^= (a) ^ (c); \
+		(d) ^= (c) ^ SPH_T32((a) << 3); \
+		(b) = SPH_ROTL32(b, 1); \
+		(d) = SPH_ROTL32(d, 7); \
+		(a) ^= (b) ^ (d); \
+		(c) ^= (d) ^ SPH_T32((b) << 7); \
+		(a) = SPH_ROTL32(a, 5); \
+		(c) = SPH_ROTL32(c, 22); \
+	} while (0)
+
+#define ROUND_SMALL(rc, alpha)   do { \
+		s0 ^= alpha[0x00]; \
+		s1 ^= alpha[0x01] ^ (sph_u32)(rc); \
+		s2 ^= alpha[0x02]; \
+		s3 ^= alpha[0x03]; \
+		s4 ^= alpha[0x08]; \
+		s5 ^= alpha[0x09]; \
+		s6 ^= alpha[0x0A]; \
+		s7 ^= alpha[0x0B]; \
+		s8 ^= alpha[0x10]; \
+		s9 ^= alpha[0x11]; \
+		sA ^= alpha[0x12]; \
+		sB ^= alpha[0x13]; \
+		sC ^= alpha[0x18]; \
+		sD ^= alpha[0x19]; \
+		sE ^= alpha[0x1A]; \
+		sF ^= alpha[0x1B]; \
+		SBOX(s0, s4, s8, sC); \
+		SBOX(s1, s5, s9, sD); \
+		SBOX(s2, s6, sA, sE); \
+		SBOX(s3, s7, sB, sF); \
+		L(s0, s5, sA, sF); \
+		L(s1, s6, sB, sC); \
+		L(s2, s7, s8, sD); \
+		L(s3, s4, s9, sE); \
+	} while (0)
+
+#define P_SMALL   do { \
+		ROUND_SMALL(0, alpha_n); \
+		ROUND_SMALL(1, alpha_n); \
+		ROUND_SMALL(2, alpha_n); \
+	} while (0)
+
+#define PF_SMALL   do { \
+		ROUND_SMALL(0, alpha_f); \
+		ROUND_SMALL(1, alpha_f); \
+		ROUND_SMALL(2, alpha_f); \
+		ROUND_SMALL(3, alpha_f); \
+		ROUND_SMALL(4, alpha_f); \
+		ROUND_SMALL(5, alpha_f); \
+	} while (0)
+
+#define T_SMALL   do { \
+		/* order is important */ \
+		c7 = (sc->h[7] ^= sB); \
+		c6 = (sc->h[6] ^= sA); \
+		c5 = (sc->h[5] ^= s9); \
+		c4 = (sc->h[4] ^= s8); \
+		c3 = (sc->h[3] ^= s3); \
+		c2 = (sc->h[2] ^= s2); \
+		c1 = (sc->h[1] ^= s1); \
+		c0 = (sc->h[0] ^= s0); \
+	} while (0)
+
+static void
+hamsi_small(sph_hamsi_small_context *sc, const unsigned char *buf, size_t num)
+{
+	DECL_STATE_SMALL
+#if !SPH_64
+	sph_u32 tmp;
+#endif
+
+#if SPH_64
+	sc->count += (sph_u64)num << 5;
+#else
+	tmp = SPH_T32((sph_u32)num << 5);
+	sc->count_low = SPH_T32(sc->count_low + tmp);
+	sc->count_high += (sph_u32)((num >> 13) >> 14);
+	if (sc->count_low < tmp)
+		sc->count_high ++;
+#endif
+	READ_STATE_SMALL(sc);
+	while (num -- > 0) {
+		sph_u32 m0, m1, m2, m3, m4, m5, m6, m7;
+
+		INPUT_SMALL;
+		P_SMALL;
+		T_SMALL;
+		buf += 4;
+	}
+	WRITE_STATE_SMALL(sc);
+}
+
+static void
+hamsi_small_final(sph_hamsi_small_context *sc, const unsigned char *buf)
+{
+	sph_u32 m0, m1, m2, m3, m4, m5, m6, m7;
+	DECL_STATE_SMALL
+
+	READ_STATE_SMALL(sc);
+	INPUT_SMALL;
+	PF_SMALL;
+	T_SMALL;
+	WRITE_STATE_SMALL(sc);
+}
+
+static void
+hamsi_small_init(sph_hamsi_small_context *sc, const sph_u32 *iv)
+{
+	sc->partial_len = 0;
+	memcpy(sc->h, iv, sizeof sc->h);
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = sc->count_low = 0;
+#endif
+}
+
+static void
+hamsi_small_core(sph_hamsi_small_context *sc, const void *data, size_t len)
+{
+	if (sc->partial_len != 0) {
+		size_t mlen;
+
+		mlen = 4 - sc->partial_len;
+		if (len < mlen) {
+			memcpy(sc->partial + sc->partial_len, data, len);
+			sc->partial_len += len;
+			return;
+		} else {
+			memcpy(sc->partial + sc->partial_len, data, mlen);
+			len -= mlen;
+			data = (const unsigned char *)data + mlen;
+			hamsi_small(sc, sc->partial, 1);
+			sc->partial_len = 0;
+		}
+	}
+
+	hamsi_small(sc, data, (len >> 2));
+	data = (const unsigned char *)data + (len & ~(size_t)3);
+	len &= (size_t)3;
+	memcpy(sc->partial, data, len);
+	sc->partial_len = len;
+}
+
+static void
+hamsi_small_close(sph_hamsi_small_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w32)
+{
+	unsigned char pad[12];
+	size_t ptr, u;
+	unsigned z;
+	unsigned char *out;
+
+	ptr = sc->partial_len;
+	memcpy(pad, sc->partial, ptr);
+#if SPH_64
+	sph_enc64be(pad + 4, sc->count + (ptr << 3) + n);
+#else
+	sph_enc32be(pad + 4, sc->count_high);
+	sph_enc32be(pad + 8, sc->count_low + (ptr << 3) + n);
+#endif
+	z = 0x80 >> n;
+	pad[ptr ++] = ((ub & -z) | z) & 0xFF;
+	while (ptr < 4)
+		pad[ptr ++] = 0;
+	hamsi_small(sc, pad, 2);
+	hamsi_small_final(sc, pad + 8);
+	out = dst;
+	for (u = 0; u < out_size_w32; u ++)
+		sph_enc32be(out + (u << 2), sc->h[u]);
+}
+
+#define DECL_STATE_BIG \
+	sph_u32 c0, c1, c2, c3, c4, c5, c6, c7; \
+	sph_u32 c8, c9, cA, cB, cC, cD, cE, cF;
+
+#define READ_STATE_BIG(sc)   do { \
+		c0 = sc->h[0x0]; \
+		c1 = sc->h[0x1]; \
+		c2 = sc->h[0x2]; \
+		c3 = sc->h[0x3]; \
+		c4 = sc->h[0x4]; \
+		c5 = sc->h[0x5]; \
+		c6 = sc->h[0x6]; \
+		c7 = sc->h[0x7]; \
+		c8 = sc->h[0x8]; \
+		c9 = sc->h[0x9]; \
+		cA = sc->h[0xA]; \
+		cB = sc->h[0xB]; \
+		cC = sc->h[0xC]; \
+		cD = sc->h[0xD]; \
+		cE = sc->h[0xE]; \
+		cF = sc->h[0xF]; \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		sc->h[0x0] = c0; \
+		sc->h[0x1] = c1; \
+		sc->h[0x2] = c2; \
+		sc->h[0x3] = c3; \
+		sc->h[0x4] = c4; \
+		sc->h[0x5] = c5; \
+		sc->h[0x6] = c6; \
+		sc->h[0x7] = c7; \
+		sc->h[0x8] = c8; \
+		sc->h[0x9] = c9; \
+		sc->h[0xA] = cA; \
+		sc->h[0xB] = cB; \
+		sc->h[0xC] = cC; \
+		sc->h[0xD] = cD; \
+		sc->h[0xE] = cE; \
+		sc->h[0xF] = cF; \
+	} while (0)
+
+#define s00   m0
+#define s01   m1
+#define s02   c0
+#define s03   c1
+#define s04   m2
+#define s05   m3
+#define s06   c2
+#define s07   c3
+#define s08   c4
+#define s09   c5
+#define s0A   m4
+#define s0B   m5
+#define s0C   c6
+#define s0D   c7
+#define s0E   m6
+#define s0F   m7
+#define s10   m8
+#define s11   m9
+#define s12   c8
+#define s13   c9
+#define s14   mA
+#define s15   mB
+#define s16   cA
+#define s17   cB
+#define s18   cC
+#define s19   cD
+#define s1A   mC
+#define s1B   mD
+#define s1C   cE
+#define s1D   cF
+#define s1E   mE
+#define s1F   mF
+
+#define ROUND_BIG(rc, alpha)   do { \
+		s00 ^= alpha[0x00]; \
+		s01 ^= alpha[0x01] ^ (sph_u32)(rc); \
+		s02 ^= alpha[0x02]; \
+		s03 ^= alpha[0x03]; \
+		s04 ^= alpha[0x04]; \
+		s05 ^= alpha[0x05]; \
+		s06 ^= alpha[0x06]; \
+		s07 ^= alpha[0x07]; \
+		s08 ^= alpha[0x08]; \
+		s09 ^= alpha[0x09]; \
+		s0A ^= alpha[0x0A]; \
+		s0B ^= alpha[0x0B]; \
+		s0C ^= alpha[0x0C]; \
+		s0D ^= alpha[0x0D]; \
+		s0E ^= alpha[0x0E]; \
+		s0F ^= alpha[0x0F]; \
+		s10 ^= alpha[0x10]; \
+		s11 ^= alpha[0x11]; \
+		s12 ^= alpha[0x12]; \
+		s13 ^= alpha[0x13]; \
+		s14 ^= alpha[0x14]; \
+		s15 ^= alpha[0x15]; \
+		s16 ^= alpha[0x16]; \
+		s17 ^= alpha[0x17]; \
+		s18 ^= alpha[0x18]; \
+		s19 ^= alpha[0x19]; \
+		s1A ^= alpha[0x1A]; \
+		s1B ^= alpha[0x1B]; \
+		s1C ^= alpha[0x1C]; \
+		s1D ^= alpha[0x1D]; \
+		s1E ^= alpha[0x1E]; \
+		s1F ^= alpha[0x1F]; \
+		SBOX(s00, s08, s10, s18); \
+		SBOX(s01, s09, s11, s19); \
+		SBOX(s02, s0A, s12, s1A); \
+		SBOX(s03, s0B, s13, s1B); \
+		SBOX(s04, s0C, s14, s1C); \
+		SBOX(s05, s0D, s15, s1D); \
+		SBOX(s06, s0E, s16, s1E); \
+		SBOX(s07, s0F, s17, s1F); \
+		L(s00, s09, s12, s1B); \
+		L(s01, s0A, s13, s1C); \
+		L(s02, s0B, s14, s1D); \
+		L(s03, s0C, s15, s1E); \
+		L(s04, s0D, s16, s1F); \
+		L(s05, s0E, s17, s18); \
+		L(s06, s0F, s10, s19); \
+		L(s07, s08, s11, s1A); \
+		L(s00, s02, s05, s07); \
+		L(s10, s13, s15, s16); \
+		L(s09, s0B, s0C, s0E); \
+		L(s19, s1A, s1C, s1F); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_HAMSI
+
+#define P_BIG   do { \
+		unsigned r; \
+		for (r = 0; r < 6; r ++) \
+			ROUND_BIG(r, alpha_n); \
+	} while (0)
+
+#define PF_BIG   do { \
+		unsigned r; \
+		for (r = 0; r < 12; r ++) \
+			ROUND_BIG(r, alpha_f); \
+	} while (0)
+
+#else
+
+#define P_BIG   do { \
+		ROUND_BIG(0, alpha_n); \
+		ROUND_BIG(1, alpha_n); \
+		ROUND_BIG(2, alpha_n); \
+		ROUND_BIG(3, alpha_n); \
+		ROUND_BIG(4, alpha_n); \
+		ROUND_BIG(5, alpha_n); \
+	} while (0)
+
+#define PF_BIG   do { \
+		ROUND_BIG(0, alpha_f); \
+		ROUND_BIG(1, alpha_f); \
+		ROUND_BIG(2, alpha_f); \
+		ROUND_BIG(3, alpha_f); \
+		ROUND_BIG(4, alpha_f); \
+		ROUND_BIG(5, alpha_f); \
+		ROUND_BIG(6, alpha_f); \
+		ROUND_BIG(7, alpha_f); \
+		ROUND_BIG(8, alpha_f); \
+		ROUND_BIG(9, alpha_f); \
+		ROUND_BIG(10, alpha_f); \
+		ROUND_BIG(11, alpha_f); \
+	} while (0)
+
+#endif
+
+#define T_BIG   do { \
+		/* order is important */ \
+		cF = (sc->h[0xF] ^= s17); \
+		cE = (sc->h[0xE] ^= s16); \
+		cD = (sc->h[0xD] ^= s15); \
+		cC = (sc->h[0xC] ^= s14); \
+		cB = (sc->h[0xB] ^= s13); \
+		cA = (sc->h[0xA] ^= s12); \
+		c9 = (sc->h[0x9] ^= s11); \
+		c8 = (sc->h[0x8] ^= s10); \
+		c7 = (sc->h[0x7] ^= s07); \
+		c6 = (sc->h[0x6] ^= s06); \
+		c5 = (sc->h[0x5] ^= s05); \
+		c4 = (sc->h[0x4] ^= s04); \
+		c3 = (sc->h[0x3] ^= s03); \
+		c2 = (sc->h[0x2] ^= s02); \
+		c1 = (sc->h[0x1] ^= s01); \
+		c0 = (sc->h[0x0] ^= s00); \
+	} while (0)
+
+static void
+hamsi_big(sph_hamsi_big_context *sc, const unsigned char *buf, size_t num)
+{
+	DECL_STATE_BIG
+#if !SPH_64
+	sph_u32 tmp;
+#endif
+
+#if SPH_64
+	sc->count += (sph_u64)num << 6;
+#else
+	tmp = SPH_T32((sph_u32)num << 6);
+	sc->count_low = SPH_T32(sc->count_low + tmp);
+	sc->count_high += (sph_u32)((num >> 13) >> 13);
+	if (sc->count_low < tmp)
+		sc->count_high ++;
+#endif
+	READ_STATE_BIG(sc);
+	while (num -- > 0) {
+		sph_u32 m0, m1, m2, m3, m4, m5, m6, m7;
+		sph_u32 m8, m9, mA, mB, mC, mD, mE, mF;
+
+		INPUT_BIG;
+		P_BIG;
+		T_BIG;
+		buf += 8;
+	}
+	WRITE_STATE_BIG(sc);
+}
+
+static void
+hamsi_big_final(sph_hamsi_big_context *sc, const unsigned char *buf)
+{
+	sph_u32 m0, m1, m2, m3, m4, m5, m6, m7;
+	sph_u32 m8, m9, mA, mB, mC, mD, mE, mF;
+	DECL_STATE_BIG
+
+	READ_STATE_BIG(sc);
+	INPUT_BIG;
+	PF_BIG;
+	T_BIG;
+	WRITE_STATE_BIG(sc);
+}
+
+static void
+hamsi_big_init(sph_hamsi_big_context *sc, const sph_u32 *iv)
+{
+	sc->partial_len = 0;
+	memcpy(sc->h, iv, sizeof sc->h);
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = sc->count_low = 0;
+#endif
+}
+
+static void
+hamsi_big_core(sph_hamsi_big_context *sc, const void *data, size_t len)
+{
+	if (sc->partial_len != 0) {
+		size_t mlen;
+
+		mlen = 8 - sc->partial_len;
+		if (len < mlen) {
+			memcpy(sc->partial + sc->partial_len, data, len);
+			sc->partial_len += len;
+			return;
+		} else {
+			memcpy(sc->partial + sc->partial_len, data, mlen);
+			len -= mlen;
+			data = (const unsigned char *)data + mlen;
+			hamsi_big(sc, sc->partial, 1);
+			sc->partial_len = 0;
+		}
+	}
+
+	hamsi_big(sc, data, (len >> 3));
+	data = (const unsigned char *)data + (len & ~(size_t)7);
+	len &= (size_t)7;
+	memcpy(sc->partial, data, len);
+	sc->partial_len = len;
+}
+
+static void
+hamsi_big_close(sph_hamsi_big_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w32)
+{
+	unsigned char pad[8];
+	size_t ptr, u;
+	unsigned z;
+	unsigned char *out;
+
+	ptr = sc->partial_len;
+#if SPH_64
+	sph_enc64be(pad, sc->count + (ptr << 3) + n);
+#else
+	sph_enc32be(pad, sc->count_high);
+	sph_enc32be(pad + 4, sc->count_low + (ptr << 3) + n);
+#endif
+	z = 0x80 >> n;
+	sc->partial[ptr ++] = ((ub & -z) | z) & 0xFF;
+	while (ptr < 8)
+		sc->partial[ptr ++] = 0;
+	hamsi_big(sc, sc->partial, 1);
+	hamsi_big_final(sc, pad);
+	out = dst;
+	if (out_size_w32 == 12) {
+		sph_enc32be(out +  0, sc->h[ 0]);
+		sph_enc32be(out +  4, sc->h[ 1]);
+		sph_enc32be(out +  8, sc->h[ 3]);
+		sph_enc32be(out + 12, sc->h[ 4]);
+		sph_enc32be(out + 16, sc->h[ 5]);
+		sph_enc32be(out + 20, sc->h[ 6]);
+		sph_enc32be(out + 24, sc->h[ 8]);
+		sph_enc32be(out + 28, sc->h[ 9]);
+		sph_enc32be(out + 32, sc->h[10]);
+		sph_enc32be(out + 36, sc->h[12]);
+		sph_enc32be(out + 40, sc->h[13]);
+		sph_enc32be(out + 44, sc->h[15]);
+	} else {
+		for (u = 0; u < 16; u ++)
+			sph_enc32be(out + (u << 2), sc->h[u]);
+	}
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi224_init(void *cc)
+{
+	hamsi_small_init(cc, IV224);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi224(void *cc, const void *data, size_t len)
+{
+	hamsi_small_core(cc, data, len);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi224_close(void *cc, void *dst)
+{
+	hamsi_small_close(cc, 0, 0, dst, 7);
+//	hamsi_small_init(cc, IV224);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	hamsi_small_close(cc, ub, n, dst, 7);
+//	hamsi_small_init(cc, IV224);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi256_init(void *cc)
+{
+	hamsi_small_init(cc, IV256);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi256(void *cc, const void *data, size_t len)
+{
+	hamsi_small_core(cc, data, len);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi256_close(void *cc, void *dst)
+{
+	hamsi_small_close(cc, 0, 0, dst, 8);
+//	hamsi_small_init(cc, IV256);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	hamsi_small_close(cc, ub, n, dst, 8);
+//	hamsi_small_init(cc, IV256);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi384_init(void *cc)
+{
+	hamsi_big_init(cc, IV384);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi384(void *cc, const void *data, size_t len)
+{
+	hamsi_big_core(cc, data, len);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi384_close(void *cc, void *dst)
+{
+	hamsi_big_close(cc, 0, 0, dst, 12);
+//	hamsi_big_init(cc, IV384);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	hamsi_big_close(cc, ub, n, dst, 12);
+//	hamsi_big_init(cc, IV384);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi512_init(void *cc)
+{
+	hamsi_big_init(cc, IV512);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi512(void *cc, const void *data, size_t len)
+{
+	hamsi_big_core(cc, data, len);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi512_close(void *cc, void *dst)
+{
+	hamsi_big_close(cc, 0, 0, dst, 16);
+//	hamsi_big_init(cc, IV512);
+}
+
+/* see sph_hamsi.h */
+void
+sph_hamsi512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	hamsi_big_close(cc, ub, n, dst, 16);
+//	hamsi_big_init(cc, IV512);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_hamsi.h b/src/crypto/ghostrider/sph_hamsi.h
new file mode 100644
index 000000000..13dcbd2b0
--- /dev/null
+++ b/src/crypto/ghostrider/sph_hamsi.h
@@ -0,0 +1,321 @@
+/* $Id: sph_hamsi.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * Hamsi interface. This code implements Hamsi with the recommended
+ * parameters for SHA-3, with outputs of 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_hamsi.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_HAMSI_H__
+#define SPH_HAMSI_H__
+
+#include <stddef.h>
+#include "sph_types.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/**
+ * Output size (in bits) for Hamsi-224.
+ */
+#define SPH_SIZE_hamsi224   224
+
+/**
+ * Output size (in bits) for Hamsi-256.
+ */
+#define SPH_SIZE_hamsi256   256
+
+/**
+ * Output size (in bits) for Hamsi-384.
+ */
+#define SPH_SIZE_hamsi384   384
+
+/**
+ * Output size (in bits) for Hamsi-512.
+ */
+#define SPH_SIZE_hamsi512   512
+
+/**
+ * This structure is a context for Hamsi-224 and Hamsi-256 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a Hamsi computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running Hamsi
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char partial[4];
+	size_t partial_len;
+	sph_u32 h[8];
+#if SPH_64
+	sph_u64 count;
+#else
+	sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_hamsi_small_context;
+
+/**
+ * This structure is a context for Hamsi-224 computations. It is
+ * identical to the common <code>sph_hamsi_small_context</code>.
+ */
+typedef sph_hamsi_small_context sph_hamsi224_context;
+
+/**
+ * This structure is a context for Hamsi-256 computations. It is
+ * identical to the common <code>sph_hamsi_small_context</code>.
+ */
+typedef sph_hamsi_small_context sph_hamsi256_context;
+
+/**
+ * This structure is a context for Hamsi-384 and Hamsi-512 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a Hamsi computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running Hamsi
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char partial[8];
+	size_t partial_len;
+	sph_u32 h[16];
+#if SPH_64
+	sph_u64 count;
+#else
+	sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_hamsi_big_context;
+
+/**
+ * This structure is a context for Hamsi-384 computations. It is
+ * identical to the common <code>sph_hamsi_small_context</code>.
+ */
+typedef sph_hamsi_big_context sph_hamsi384_context;
+
+/**
+ * This structure is a context for Hamsi-512 computations. It is
+ * identical to the common <code>sph_hamsi_small_context</code>.
+ */
+typedef sph_hamsi_big_context sph_hamsi512_context;
+
+/**
+ * Initialize a Hamsi-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Hamsi-224 context (pointer to a
+ *             <code>sph_hamsi224_context</code>)
+ */
+void sph_hamsi224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Hamsi-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_hamsi224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Hamsi-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Hamsi-224 context
+ * @param dst   the destination buffer
+ */
+void sph_hamsi224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Hamsi-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_hamsi224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Hamsi-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Hamsi-256 context (pointer to a
+ *             <code>sph_hamsi256_context</code>)
+ */
+void sph_hamsi256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Hamsi-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_hamsi256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Hamsi-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Hamsi-256 context
+ * @param dst   the destination buffer
+ */
+void sph_hamsi256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Hamsi-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_hamsi256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Hamsi-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Hamsi-384 context (pointer to a
+ *             <code>sph_hamsi384_context</code>)
+ */
+void sph_hamsi384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Hamsi-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_hamsi384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Hamsi-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Hamsi-384 context
+ * @param dst   the destination buffer
+ */
+void sph_hamsi384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Hamsi-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_hamsi384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Hamsi-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Hamsi-512 context (pointer to a
+ *             <code>sph_hamsi512_context</code>)
+ */
+void sph_hamsi512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Hamsi-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_hamsi512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Hamsi-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Hamsi-512 context
+ * @param dst   the destination buffer
+ */
+void sph_hamsi512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Hamsi-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_hamsi512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_hamsi_helper.c b/src/crypto/ghostrider/sph_hamsi_helper.c
new file mode 100644
index 000000000..807085295
--- /dev/null
+++ b/src/crypto/ghostrider/sph_hamsi_helper.c
@@ -0,0 +1,39648 @@
+/* $Id: hamsi_helper.c 202 2010-05-31 15:46:48Z tp $ */
+/*
+ * Helper code for Hamsi (input block expansion). This code is
+ * automatically generated and includes precomputed tables for
+ * expansion code which handles 2 to 8 bits at a time.
+ *
+ * This file is included from hamsi.c, and is not meant to be compiled
+ * independently.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 1
+
+/* Note: this table lists bits within each byte from least
+   siginificant to most significant. */
+static const sph_u32 T256[32][8] = {
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) }
+};
+
+#define INPUT_SMALL   do { \
+		const sph_u32 *tp = &T256[0][0]; \
+		unsigned u, v; \
+		m0 = 0; \
+		m1 = 0; \
+		m2 = 0; \
+		m3 = 0; \
+		m4 = 0; \
+		m5 = 0; \
+		m6 = 0; \
+		m7 = 0; \
+		for (u = 0; u < 4; u ++) { \
+			unsigned db = buf[u]; \
+			for (v = 0; v < 8; v ++, db >>= 1) { \
+				sph_u32 dm = SPH_T32(-(sph_u32)(db & 1)); \
+				m0 ^= dm & *tp ++; \
+				m1 ^= dm & *tp ++; \
+				m2 ^= dm & *tp ++; \
+				m3 ^= dm & *tp ++; \
+				m4 ^= dm & *tp ++; \
+				m5 ^= dm & *tp ++; \
+				m6 ^= dm & *tp ++; \
+				m7 ^= dm & *tp ++; \
+			} \
+		} \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 2
+
+static const sph_u32 T256_0[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) }
+};
+
+static const sph_u32 T256_2[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) }
+};
+
+static const sph_u32 T256_4[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) }
+};
+
+static const sph_u32 T256_6[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) }
+};
+
+static const sph_u32 T256_8[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) }
+};
+
+static const sph_u32 T256_10[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) }
+};
+
+static const sph_u32 T256_12[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) }
+};
+
+static const sph_u32 T256_14[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xc4e80100), SPH_C32(0x1f70960e), SPH_C32(0x2714ca3c),
+	  SPH_C32(0x88210c30), SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8),
+	  SPH_C32(0x8589d8ab), SPH_C32(0xe6c46464) }
+};
+
+static const sph_u32 T256_16[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) }
+};
+
+static const sph_u32 T256_18[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) }
+};
+
+static const sph_u32 T256_20[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0xfeca0020), SPH_C32(0x485d28e4), SPH_C32(0x806741fd),
+	  SPH_C32(0x814681b8), SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6),
+	  SPH_C32(0xf9ce4c04), SPH_C32(0xe2afa0c0) }
+};
+
+static const sph_u32 T256_22[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) }
+};
+
+static const sph_u32 T256_24[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) }
+};
+
+static const sph_u32 T256_26[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) }
+};
+
+static const sph_u32 T256_28[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) }
+};
+
+static const sph_u32 T256_30[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 6][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		rp = &T256_2[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_4[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_6[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[1]; \
+		rp = &T256_8[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_10[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_12[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_14[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[2]; \
+		rp = &T256_16[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_18[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_20[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_22[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[3]; \
+		rp = &T256_24[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_26[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_28[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_30[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 3
+
+static const sph_u32 T256_0[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) }
+};
+
+static const sph_u32 T256_3[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xfb316000), SPH_C32(0xef405514), SPH_C32(0x9c00f5fc),
+	  SPH_C32(0xf3ffc956), SPH_C32(0x71040000), SPH_C32(0x6bfc54f6),
+	  SPH_C32(0xf33c70b5), SPH_C32(0xb1ad5eff) },
+	{ SPH_C32(0x85484000), SPH_C32(0x7b58b73b), SPH_C32(0xfa4327a4),
+	  SPH_C32(0x6fda92b3), SPH_C32(0x982e2000), SPH_C32(0xdfabd80a),
+	  SPH_C32(0xe2c64ae2), SPH_C32(0x8c645bdb) },
+	{ SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7), SPH_C32(0xebb91df3),
+	  SPH_C32(0x52139797), SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9),
+	  SPH_C32(0x957fa2ed), SPH_C32(0x2d88051a) }
+};
+
+static const sph_u32 T256_6[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0x951e1000), SPH_C32(0x0e72ce03), SPH_C32(0x37ef9ef8),
+	  SPH_C32(0x0580e8e1), SPH_C32(0xf4100800), SPH_C32(0xecfdefea),
+	  SPH_C32(0x754b5d13), SPH_C32(0x6d2d5a84) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0x2a220000), SPH_C32(0xc47ebf14), SPH_C32(0x04ce77d4),
+	  SPH_C32(0xcb92c512), SPH_C32(0x80851800), SPH_C32(0xb6d6a994),
+	  SPH_C32(0xfdb64038), SPH_C32(0x73cbd816) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) },
+	{ SPH_C32(0x5eb71000), SPH_C32(0x9e55f96a), SPH_C32(0x8c336aff),
+	  SPH_C32(0xd5744780), SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd),
+	  SPH_C32(0x466ab43f), SPH_C32(0xa33f7777) }
+};
+
+static const sph_u32 T256_9[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0x510c0c00), SPH_C32(0x251e9889), SPH_C32(0x1e406226),
+	  SPH_C32(0x2f32b340), SPH_C32(0xf5360000), SPH_C32(0x7be3bf82),
+	  SPH_C32(0xd5606668), SPH_C32(0x3f198195) },
+	{ SPH_C32(0xca8f0800), SPH_C32(0x07396701), SPH_C32(0x1bf7cf7c),
+	  SPH_C32(0x82c07470), SPH_C32(0x7a080400), SPH_C32(0x767e77f5),
+	  SPH_C32(0xbaa52e89), SPH_C32(0xb694ad43) },
+	{ SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76), SPH_C32(0x7432879d),
+	  SPH_C32(0x0b4d58a6), SPH_C32(0x6eb50400), SPH_C32(0x59c4400a),
+	  SPH_C32(0xd0d7cb32), SPH_C32(0x92eb46a5) }
+};
+
+static const sph_u32 T256_12[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5), SPH_C32(0xc278eb65),
+	  SPH_C32(0xf0f11d22), SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30),
+	  SPH_C32(0xa7d61cb3), SPH_C32(0xb3d2a71c) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8), SPH_C32(0x225fc418),
+	  SPH_C32(0x5516c378), SPH_C32(0x8d760300), SPH_C32(0x12297a03),
+	  SPH_C32(0xc733e541), SPH_C32(0x2dc6d26a) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0x3ad20200), SPH_C32(0x98364bdb), SPH_C32(0x42ba3dea),
+	  SPH_C32(0xcb02b60e), SPH_C32(0x63500300), SPH_C32(0x0062123d),
+	  SPH_C32(0x47f133ce), SPH_C32(0x16357946) }
+};
+
+static const sph_u32 T256_15[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0xec760180), SPH_C32(0xcf102934), SPH_C32(0x474db4fe),
+	  SPH_C32(0x15a6d657), SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d),
+	  SPH_C32(0x73d31bdc), SPH_C32(0xd997dc7f) },
+	{ SPH_C32(0x8e020100), SPH_C32(0xc0a86233), SPH_C32(0x54c7d1e0),
+	  SPH_C32(0x51b6d04f), SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1),
+	  SPH_C32(0xb1177789), SPH_C32(0x2af56e4c) },
+	{ SPH_C32(0xd5d00180), SPH_C32(0x85a77adf), SPH_C32(0x9603bdb5),
+	  SPH_C32(0xa2d4627c), SPH_C32(0x289e0080), SPH_C32(0xd060bf3a),
+	  SPH_C32(0x60597ec2), SPH_C32(0x9d87da67) }
+};
+
+static const sph_u32 T256_18[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c), SPH_C32(0x4fcc6651),
+	  SPH_C32(0x408a1b7d), SPH_C32(0x86610020), SPH_C32(0xe89072d0),
+	  SPH_C32(0xdd3be10a), SPH_C32(0xf3310573) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x24d90000), SPH_C32(0x69779726), SPH_C32(0x24f5ad0e),
+	  SPH_C32(0x119ea5b3), SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae),
+	  SPH_C32(0xeb5e8aa2), SPH_C32(0xd0523f76) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x69170040), SPH_C32(0x522c7b58), SPH_C32(0x1290c6a6),
+	  SPH_C32(0x32fd9fb6), SPH_C32(0xb3040060), SPH_C32(0x7306c49a),
+	  SPH_C32(0xb6022a55), SPH_C32(0xa225bbbd) }
+};
+
+static const sph_u32 T256_21[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) }
+};
+
+static const sph_u32 T256_24[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0x7cb50000), SPH_C32(0xf285caee), SPH_C32(0x06589f43),
+	  SPH_C32(0x2e548f6c), SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4),
+	  SPH_C32(0x65eebc12), SPH_C32(0x39b78e87) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) },
+	{ SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393), SPH_C32(0xf82b0c42),
+	  SPH_C32(0x96fda75d), SPH_C32(0x130f000c), SPH_C32(0xece44fa0),
+	  SPH_C32(0xfb843f6c), SPH_C32(0x614fc6d8) }
+};
+
+static const sph_u32 T256_27[8][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x582b0006), SPH_C32(0xd39128c4), SPH_C32(0x042035fa),
+	  SPH_C32(0x223fde2b), SPH_C32(0x3a050000), SPH_C32(0x6508f6be),
+	  SPH_C32(0xe1d03671), SPH_C32(0x64347a75) },
+	{ SPH_C32(0x81a40004), SPH_C32(0xa9958063), SPH_C32(0xe4279a1c),
+	  SPH_C32(0xbdd2949c), SPH_C32(0xb2260002), SPH_C32(0x3aef510d),
+	  SPH_C32(0x7835b3db), SPH_C32(0xe9418d84) },
+	{ SPH_C32(0x09870006), SPH_C32(0xf67227d0), SPH_C32(0x7dc21fb6),
+	  SPH_C32(0x30a7636d), SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19),
+	  SPH_C32(0x01d79997), SPH_C32(0xfbd930c2) }
+};
+
+static const sph_u32 T256_30[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 5][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		rp = &T256_3[(acc >> 2) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T256_6[(acc >> 7) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_9[(acc >> 4) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_12[(acc >> 1) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T256_15[(acc >> 6) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_18[(acc >> 3) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_21[acc & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[3]; \
+		rp = &T256_24[acc >> 5][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_27[(acc >> 2) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_30[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 4
+
+static const sph_u32 T256_0[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0xf663c000), SPH_C32(0xde81aa29), SPH_C32(0x3801ebf9),
+	  SPH_C32(0xe7fa92ad), SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec),
+	  SPH_C32(0xe679e16a), SPH_C32(0x635fbdfc) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0x1034c000), SPH_C32(0x9532900c), SPH_C32(0xbc847343),
+	  SPH_C32(0xf7bb9293), SPH_C32(0x16444000), SPH_C32(0xc75d4a21),
+	  SPH_C32(0xef06b67b), SPH_C32(0xbd2871b0) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0x16444000), SPH_C32(0xc75d4a21), SPH_C32(0xef06b67b),
+	  SPH_C32(0xbd2871b0), SPH_C32(0x06708000), SPH_C32(0x526fda2d),
+	  SPH_C32(0x5382c538), SPH_C32(0x4a93e323) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0xf0134000), SPH_C32(0x8cee7004), SPH_C32(0x6b832ec1),
+	  SPH_C32(0xad69718e), SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0),
+	  SPH_C32(0x5afd9229), SPH_C32(0x94e42f6f) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0), SPH_C32(0x5afd9229),
+	  SPH_C32(0x94e42f6f), SPH_C32(0x022f8000), SPH_C32(0xce2549e4),
+	  SPH_C32(0x317ebce8), SPH_C32(0x398d5ee1) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) },
+	{ SPH_C32(0x146bc000), SPH_C32(0x097803c5), SPH_C32(0xde780a93),
+	  SPH_C32(0x84a52f51), SPH_C32(0xf663c000), SPH_C32(0xde81aa29),
+	  SPH_C32(0x3801ebf9), SPH_C32(0xe7fa92ad) }
+};
+
+static const sph_u32 T256_4[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x9dbf3000), SPH_C32(0xee7cca82), SPH_C32(0x9907277c),
+	  SPH_C32(0x232f87b6), SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba),
+	  SPH_C32(0xcc651c08), SPH_C32(0x7118f1a0) },
+	{ SPH_C32(0x22832000), SPH_C32(0x2470bb95), SPH_C32(0xaa26ce50),
+	  SPH_C32(0xed3daa45), SPH_C32(0x286f1000), SPH_C32(0xea431fc4),
+	  SPH_C32(0x44980123), SPH_C32(0x6ffe7332) },
+	{ SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb), SPH_C32(0x22dbd37b),
+	  SPH_C32(0xf3db28d7), SPH_C32(0xe3c61000), SPH_C32(0x7a6428ad),
+	  SPH_C32(0xff44f524), SPH_C32(0xbf0adc53) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0xe3c61000), SPH_C32(0x7a6428ad), SPH_C32(0xff44f524),
+	  SPH_C32(0xbf0adc53), SPH_C32(0xb5d02000), SPH_C32(0x043fd546),
+	  SPH_C32(0xdd9f265f), SPH_C32(0x4cd1f484) },
+	{ SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba), SPH_C32(0xcc651c08),
+	  SPH_C32(0x7118f1a0), SPH_C32(0xc1453000), SPH_C32(0x5e149338),
+	  SPH_C32(0x55623b74), SPH_C32(0x52377616) },
+	{ SPH_C32(0x286f1000), SPH_C32(0xea431fc4), SPH_C32(0x44980123),
+	  SPH_C32(0x6ffe7332), SPH_C32(0x0aec3000), SPH_C32(0xce33a451),
+	  SPH_C32(0xeebecf73), SPH_C32(0x82c3d977) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) },
+	{ SPH_C32(0x0aec3000), SPH_C32(0xce33a451), SPH_C32(0xeebecf73),
+	  SPH_C32(0x82c3d977), SPH_C32(0x22832000), SPH_C32(0x2470bb95),
+	  SPH_C32(0xaa26ce50), SPH_C32(0xed3daa45) },
+	{ SPH_C32(0xb5d02000), SPH_C32(0x043fd546), SPH_C32(0xdd9f265f),
+	  SPH_C32(0x4cd1f484), SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb),
+	  SPH_C32(0x22dbd37b), SPH_C32(0xf3db28d7) },
+	{ SPH_C32(0xc1453000), SPH_C32(0x5e149338), SPH_C32(0x55623b74),
+	  SPH_C32(0x52377616), SPH_C32(0x9dbf3000), SPH_C32(0xee7cca82),
+	  SPH_C32(0x9907277c), SPH_C32(0x232f87b6) }
+};
+
+static const sph_u32 T256_8[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0x510c0c00), SPH_C32(0x251e9889), SPH_C32(0x1e406226),
+	  SPH_C32(0x2f32b340), SPH_C32(0xf5360000), SPH_C32(0x7be3bf82),
+	  SPH_C32(0xd5606668), SPH_C32(0x3f198195) },
+	{ SPH_C32(0xca8f0800), SPH_C32(0x07396701), SPH_C32(0x1bf7cf7c),
+	  SPH_C32(0x82c07470), SPH_C32(0x7a080400), SPH_C32(0x767e77f5),
+	  SPH_C32(0xbaa52e89), SPH_C32(0xb694ad43) },
+	{ SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76), SPH_C32(0x7432879d),
+	  SPH_C32(0x0b4d58a6), SPH_C32(0x6eb50400), SPH_C32(0x59c4400a),
+	  SPH_C32(0xd0d7cb32), SPH_C32(0x92eb46a5) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x6eb50400), SPH_C32(0x59c4400a), SPH_C32(0xd0d7cb32),
+	  SPH_C32(0x92eb46a5), SPH_C32(0x2b040800), SPH_C32(0x5360ef7c),
+	  SPH_C32(0xa4e54caf), SPH_C32(0x99a61e03) },
+	{ SPH_C32(0xf5360000), SPH_C32(0x7be3bf82), SPH_C32(0xd5606668),
+	  SPH_C32(0x3f198195), SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b),
+	  SPH_C32(0xcb20044e), SPH_C32(0x102b32d5) },
+	{ SPH_C32(0x7a080400), SPH_C32(0x767e77f5), SPH_C32(0xbaa52e89),
+	  SPH_C32(0xb694ad43), SPH_C32(0xb0870c00), SPH_C32(0x714710f4),
+	  SPH_C32(0xa152e1f5), SPH_C32(0x3454d933) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) },
+	{ SPH_C32(0xb0870c00), SPH_C32(0x714710f4), SPH_C32(0xa152e1f5),
+	  SPH_C32(0x3454d933), SPH_C32(0xca8f0800), SPH_C32(0x07396701),
+	  SPH_C32(0x1bf7cf7c), SPH_C32(0x82c07470) },
+	{ SPH_C32(0x2b040800), SPH_C32(0x5360ef7c), SPH_C32(0xa4e54caf),
+	  SPH_C32(0x99a61e03), SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76),
+	  SPH_C32(0x7432879d), SPH_C32(0x0b4d58a6) },
+	{ SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b), SPH_C32(0xcb20044e),
+	  SPH_C32(0x102b32d5), SPH_C32(0x510c0c00), SPH_C32(0x251e9889),
+	  SPH_C32(0x1e406226), SPH_C32(0x2f32b340) }
+};
+
+static const sph_u32 T256_12[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xc4e80100), SPH_C32(0x1f70960e), SPH_C32(0x2714ca3c),
+	  SPH_C32(0x88210c30), SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8),
+	  SPH_C32(0x8589d8ab), SPH_C32(0xe6c46464) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0x101c0300), SPH_C32(0x950db5eb), SPH_C32(0xe56c2159),
+	  SPH_C32(0x78d01112), SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8),
+	  SPH_C32(0x225fc418), SPH_C32(0x5516c378) },
+	{ SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5), SPH_C32(0xc278eb65),
+	  SPH_C32(0xf0f11d22), SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30),
+	  SPH_C32(0xa7d61cb3), SPH_C32(0xb3d2a71c) },
+	{ SPH_C32(0x63500300), SPH_C32(0x0062123d), SPH_C32(0x47f133ce),
+	  SPH_C32(0x16357946), SPH_C32(0x59820100), SPH_C32(0x985459e6),
+	  SPH_C32(0x054b0e24), SPH_C32(0xdd37cf48) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x59820100), SPH_C32(0x985459e6), SPH_C32(0x054b0e24),
+	  SPH_C32(0xdd37cf48), SPH_C32(0x3ad20200), SPH_C32(0x98364bdb),
+	  SPH_C32(0x42ba3dea), SPH_C32(0xcb02b60e) },
+	{ SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8), SPH_C32(0x225fc418),
+	  SPH_C32(0x5516c378), SPH_C32(0x8d760300), SPH_C32(0x12297a03),
+	  SPH_C32(0xc733e541), SPH_C32(0x2dc6d26a) },
+	{ SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30), SPH_C32(0xa7d61cb3),
+	  SPH_C32(0xb3d2a71c), SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5),
+	  SPH_C32(0x65aef7d6), SPH_C32(0x4323ba3e) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5), SPH_C32(0x65aef7d6),
+	  SPH_C32(0x4323ba3e), SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5),
+	  SPH_C32(0xc278eb65), SPH_C32(0xf0f11d22) },
+	{ SPH_C32(0x3ad20200), SPH_C32(0x98364bdb), SPH_C32(0x42ba3dea),
+	  SPH_C32(0xcb02b60e), SPH_C32(0x63500300), SPH_C32(0x0062123d),
+	  SPH_C32(0x47f133ce), SPH_C32(0x16357946) },
+	{ SPH_C32(0x8d760300), SPH_C32(0x12297a03), SPH_C32(0xc733e541),
+	  SPH_C32(0x2dc6d26a), SPH_C32(0x101c0300), SPH_C32(0x950db5eb),
+	  SPH_C32(0xe56c2159), SPH_C32(0x78d01112) }
+};
+
+static const sph_u32 T256_16[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x161c00c0), SPH_C32(0x7e54f492), SPH_C32(0xf4a107fd),
+	  SPH_C32(0xd0018836), SPH_C32(0x410d0000), SPH_C32(0xea7a09df),
+	  SPH_C32(0x8c12a9bc), SPH_C32(0xc50530e0) },
+	{ SPH_C32(0x23790080), SPH_C32(0xe5c242d8), SPH_C32(0x9f98cca2),
+	  SPH_C32(0x811536f8), SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1),
+	  SPH_C32(0xba77c214), SPH_C32(0xe6660ae5) },
+	{ SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6), SPH_C32(0xa9fda70a),
+	  SPH_C32(0xa2760cfd), SPH_C32(0x74680040), SPH_C32(0x71ecbf95),
+	  SPH_C32(0xe72b62e3), SPH_C32(0x94118e2e) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x74680040), SPH_C32(0x71ecbf95), SPH_C32(0xe72b62e3),
+	  SPH_C32(0x94118e2e), SPH_C32(0x1adf0080), SPH_C32(0xaf751133),
+	  SPH_C32(0x4ed6c5e9), SPH_C32(0x366782d3) },
+	{ SPH_C32(0x410d0000), SPH_C32(0xea7a09df), SPH_C32(0x8c12a9bc),
+	  SPH_C32(0xc50530e0), SPH_C32(0x571100c0), SPH_C32(0x942efd4d),
+	  SPH_C32(0x78b3ae41), SPH_C32(0x1504b8d6) },
+	{ SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1), SPH_C32(0xba77c214),
+	  SPH_C32(0xe6660ae5), SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779),
+	  SPH_C32(0x25ef0eb6), SPH_C32(0x67733c1d) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779), SPH_C32(0x25ef0eb6),
+	  SPH_C32(0x67733c1d), SPH_C32(0x23790080), SPH_C32(0xe5c242d8),
+	  SPH_C32(0x9f98cca2), SPH_C32(0x811536f8) },
+	{ SPH_C32(0x1adf0080), SPH_C32(0xaf751133), SPH_C32(0x4ed6c5e9),
+	  SPH_C32(0x366782d3), SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6),
+	  SPH_C32(0xa9fda70a), SPH_C32(0xa2760cfd) },
+	{ SPH_C32(0x571100c0), SPH_C32(0x942efd4d), SPH_C32(0x78b3ae41),
+	  SPH_C32(0x1504b8d6), SPH_C32(0x161c00c0), SPH_C32(0x7e54f492),
+	  SPH_C32(0xf4a107fd), SPH_C32(0xd0018836) }
+};
+
+static const sph_u32 T256_20[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9), SPH_C32(0x854e2bfb),
+	  SPH_C32(0x12be7119), SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d),
+	  SPH_C32(0xbcb34701), SPH_C32(0x30b21104) },
+	{ SPH_C32(0x724b0000), SPH_C32(0xad67ab9b), SPH_C32(0x457d0b05),
+	  SPH_C32(0xd21db1c4), SPH_C32(0x81af0030), SPH_C32(0x6c733c96),
+	  SPH_C32(0x40546103), SPH_C32(0x41e54165) },
+	{ SPH_C32(0x23170010), SPH_C32(0xed94d960), SPH_C32(0xb99a2d07),
+	  SPH_C32(0xa34ae1a5), SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f),
+	  SPH_C32(0x7c8067ff), SPH_C32(0xf011d1d9) },
+	{ SPH_C32(0xfeca0020), SPH_C32(0x485d28e4), SPH_C32(0x806741fd),
+	  SPH_C32(0x814681b8), SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6),
+	  SPH_C32(0xf9ce4c04), SPH_C32(0xe2afa0c0) },
+	{ SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f), SPH_C32(0x7c8067ff),
+	  SPH_C32(0xf011d1d9), SPH_C32(0x8c810020), SPH_C32(0xe53a837f),
+	  SPH_C32(0xc51a4af8), SPH_C32(0x535b307c) },
+	{ SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d), SPH_C32(0xbcb34701),
+	  SPH_C32(0x30b21104), SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184),
+	  SPH_C32(0x39fd6cfa), SPH_C32(0x220c601d) },
+	{ SPH_C32(0x81af0030), SPH_C32(0x6c733c96), SPH_C32(0x40546103),
+	  SPH_C32(0x41e54165), SPH_C32(0xf3e40030), SPH_C32(0xc114970d),
+	  SPH_C32(0x05296a06), SPH_C32(0x93f8f0a1) }
+};
+
+static const sph_u32 T256_24[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a), SPH_C32(0x63b62351),
+	  SPH_C32(0x17e301eb), SPH_C32(0x7cb50000), SPH_C32(0xf285caee),
+	  SPH_C32(0x06589f43), SPH_C32(0x2e548f6c) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x130f000c), SPH_C32(0xece44fa0), SPH_C32(0xfb843f6c),
+	  SPH_C32(0x614fc6d8), SPH_C32(0xc7140004), SPH_C32(0x3e18bc33),
+	  SPH_C32(0x03af332e), SPH_C32(0xf7b26185) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0xc7140004), SPH_C32(0x3e18bc33), SPH_C32(0x03af332e),
+	  SPH_C32(0xf7b26185), SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393),
+	  SPH_C32(0xf82b0c42), SPH_C32(0x96fda75d) },
+	{ SPH_C32(0x7cb50000), SPH_C32(0xf285caee), SPH_C32(0x06589f43),
+	  SPH_C32(0x2e548f6c), SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4),
+	  SPH_C32(0x65eebc12), SPH_C32(0x39b78e87) },
+	{ SPH_C32(0xacbd0004), SPH_C32(0x7ef34599), SPH_C32(0x9b9d2f13),
+	  SPH_C32(0x811ea6b6), SPH_C32(0x6fba000c), SPH_C32(0x1e61854e),
+	  SPH_C32(0xfddca02f), SPH_C32(0x4f1b49b4) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) },
+	{ SPH_C32(0x6fba000c), SPH_C32(0x1e61854e), SPH_C32(0xfddca02f),
+	  SPH_C32(0x4f1b49b4), SPH_C32(0xc3070008), SPH_C32(0x6092c0d7),
+	  SPH_C32(0x66418f3c), SPH_C32(0xce05ef02) },
+	{ SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393), SPH_C32(0xf82b0c42),
+	  SPH_C32(0x96fda75d), SPH_C32(0x130f000c), SPH_C32(0xece44fa0),
+	  SPH_C32(0xfb843f6c), SPH_C32(0x614fc6d8) },
+	{ SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4), SPH_C32(0x65eebc12),
+	  SPH_C32(0x39b78e87), SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a),
+	  SPH_C32(0x63b62351), SPH_C32(0x17e301eb) }
+};
+
+static const sph_u32 T256_28[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3), SPH_C32(0x37eb3eaf),
+	  SPH_C32(0x38d131ca), SPH_C32(0x995d0000), SPH_C32(0x2ecee896),
+	  SPH_C32(0x121462e8), SPH_C32(0x410400f9) },
+	{ SPH_C32(0x40d20002), SPH_C32(0x54ca4031), SPH_C32(0xf213cd0e),
+	  SPH_C32(0xdee94a4e), SPH_C32(0x59130001), SPH_C32(0x1d772886),
+	  SPH_C32(0xbc1ad9ed), SPH_C32(0xf4a0c6c2) },
+	{ SPH_C32(0x809c0003), SPH_C32(0x67738021), SPH_C32(0x5c1d760b),
+	  SPH_C32(0x6b4d8c75), SPH_C32(0x91e20001), SPH_C32(0x165acf04),
+	  SPH_C32(0xd7ec9149), SPH_C32(0xa73c7b7d) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0x91e20001), SPH_C32(0x165acf04), SPH_C32(0xd7ec9149),
+	  SPH_C32(0xa73c7b7d), SPH_C32(0x117e0002), SPH_C32(0x71294f25),
+	  SPH_C32(0x8bf1e742), SPH_C32(0xcc71f708) },
+	{ SPH_C32(0x995d0000), SPH_C32(0x2ecee896), SPH_C32(0x121462e8),
+	  SPH_C32(0x410400f9), SPH_C32(0xd1300003), SPH_C32(0x42908f35),
+	  SPH_C32(0x25ff5c47), SPH_C32(0x79d53133) },
+	{ SPH_C32(0x59130001), SPH_C32(0x1d772886), SPH_C32(0xbc1ad9ed),
+	  SPH_C32(0xf4a0c6c2), SPH_C32(0x19c10003), SPH_C32(0x49bd68b7),
+	  SPH_C32(0x4e0914e3), SPH_C32(0x2a498c8c) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0x19c10003), SPH_C32(0x49bd68b7), SPH_C32(0x4e0914e3),
+	  SPH_C32(0x2a498c8c), SPH_C32(0x40d20002), SPH_C32(0x54ca4031),
+	  SPH_C32(0xf213cd0e), SPH_C32(0xdee94a4e) },
+	{ SPH_C32(0x117e0002), SPH_C32(0x71294f25), SPH_C32(0x8bf1e742),
+	  SPH_C32(0xcc71f708), SPH_C32(0x809c0003), SPH_C32(0x67738021),
+	  SPH_C32(0x5c1d760b), SPH_C32(0x6b4d8c75) },
+	{ SPH_C32(0xd1300003), SPH_C32(0x42908f35), SPH_C32(0x25ff5c47),
+	  SPH_C32(0x79d53133), SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3),
+	  SPH_C32(0x37eb3eaf), SPH_C32(0x38d131ca) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 4][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		rp = &T256_4[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[1]; \
+		rp = &T256_8[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_12[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[2]; \
+		rp = &T256_16[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_20[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[3]; \
+		rp = &T256_24[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_28[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 5
+
+static const sph_u32 T256_0[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0x85484000), SPH_C32(0x7b58b73b), SPH_C32(0xfa4327a4),
+	  SPH_C32(0x6fda92b3), SPH_C32(0x982e2000), SPH_C32(0xdfabd80a),
+	  SPH_C32(0xe2c64ae2), SPH_C32(0x8c645bdb) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0x71040000), SPH_C32(0x6bfc54f6), SPH_C32(0xf33c70b5),
+	  SPH_C32(0xb1ad5eff), SPH_C32(0x8a356000), SPH_C32(0x84bc01e2),
+	  SPH_C32(0x6f3c8549), SPH_C32(0x425297a9) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) },
+	{ SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e), SPH_C32(0x7ec6bf1e),
+	  SPH_C32(0x7f9b928d), SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7),
+	  SPH_C32(0xebb91df3), SPH_C32(0x52139797) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x732b8000), SPH_C32(0xa5d91d12), SPH_C32(0xc242cc5d),
+	  SPH_C32(0x8820001e), SPH_C32(0x7a262000), SPH_C32(0x085271e6),
+	  SPH_C32(0x04bfab88), SPH_C32(0xef3be627) },
+	{ SPH_C32(0xf663c000), SPH_C32(0xde81aa29), SPH_C32(0x3801ebf9),
+	  SPH_C32(0xe7fa92ad), SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec),
+	  SPH_C32(0xe679e16a), SPH_C32(0x635fbdfc) },
+	{ SPH_C32(0x6130c000), SPH_C32(0xfecec4fa), SPH_C32(0x4fb803f6),
+	  SPH_C32(0x4616cc6c), SPH_C32(0x9c712000), SPH_C32(0x43e14bc3),
+	  SPH_C32(0x803a3332), SPH_C32(0xff7ae619) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0x957c8000), SPH_C32(0xee6a2737), SPH_C32(0x46c754e7),
+	  SPH_C32(0x98610020), SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b),
+	  SPH_C32(0x0dc0fc99), SPH_C32(0x314c2a6b) },
+	{ SPH_C32(0x1034c000), SPH_C32(0x9532900c), SPH_C32(0xbc847343),
+	  SPH_C32(0xf7bb9293), SPH_C32(0x16444000), SPH_C32(0xc75d4a21),
+	  SPH_C32(0xef06b67b), SPH_C32(0xbd2871b0) },
+	{ SPH_C32(0x8767c000), SPH_C32(0xb57dfedf), SPH_C32(0xcb3d9b4c),
+	  SPH_C32(0x5657cc52), SPH_C32(0x683d6000), SPH_C32(0x5345a80e),
+	  SPH_C32(0x89456423), SPH_C32(0x210d2a55) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a), SPH_C32(0x154591df),
+	  SPH_C32(0xd2f2e303), SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227),
+	  SPH_C32(0xb1448fda), SPH_C32(0xc6f7b8f8) },
+	{ SPH_C32(0x16444000), SPH_C32(0xc75d4a21), SPH_C32(0xef06b67b),
+	  SPH_C32(0xbd2871b0), SPH_C32(0x06708000), SPH_C32(0x526fda2d),
+	  SPH_C32(0x5382c538), SPH_C32(0x4a93e323) },
+	{ SPH_C32(0x81174000), SPH_C32(0xe71224f2), SPH_C32(0x98bf5e74),
+	  SPH_C32(0x1cc42f71), SPH_C32(0x7809a000), SPH_C32(0xc6773802),
+	  SPH_C32(0x35c11760), SPH_C32(0xd6b6b8c6) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f), SPH_C32(0x91c00965),
+	  SPH_C32(0xc2b3e33d), SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea),
+	  SPH_C32(0xb83bd8cb), SPH_C32(0x188074b4) },
+	{ SPH_C32(0xf0134000), SPH_C32(0x8cee7004), SPH_C32(0x6b832ec1),
+	  SPH_C32(0xad69718e), SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0),
+	  SPH_C32(0x5afd9229), SPH_C32(0x94e42f6f) },
+	{ SPH_C32(0x67404000), SPH_C32(0xaca11ed7), SPH_C32(0x1c3ac6ce),
+	  SPH_C32(0x0c852f4f), SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf),
+	  SPH_C32(0x3cbe4071), SPH_C32(0x08c1748a) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0x77748000), SPH_C32(0x39938edb), SPH_C32(0xa0beb58d),
+	  SPH_C32(0xfb3ebddc), SPH_C32(0x9a01a000), SPH_C32(0x118e91ee),
+	  SPH_C32(0xd3b8f60a), SPH_C32(0xb5e9053a) },
+	{ SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0), SPH_C32(0x5afd9229),
+	  SPH_C32(0x94e42f6f), SPH_C32(0x022f8000), SPH_C32(0xce2549e4),
+	  SPH_C32(0x317ebce8), SPH_C32(0x398d5ee1) },
+	{ SPH_C32(0x656fc000), SPH_C32(0x62845733), SPH_C32(0x2d447a26),
+	  SPH_C32(0x350871ae), SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb),
+	  SPH_C32(0x573d6eb0), SPH_C32(0xa5a80504) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) },
+	{ SPH_C32(0x91238000), SPH_C32(0x7220b4fe), SPH_C32(0x243b2d37),
+	  SPH_C32(0xeb7fbde2), SPH_C32(0x6e4de000), SPH_C32(0x012a7223),
+	  SPH_C32(0xdac7a11b), SPH_C32(0x6b9ec976) },
+	{ SPH_C32(0x146bc000), SPH_C32(0x097803c5), SPH_C32(0xde780a93),
+	  SPH_C32(0x84a52f51), SPH_C32(0xf663c000), SPH_C32(0xde81aa29),
+	  SPH_C32(0x3801ebf9), SPH_C32(0xe7fa92ad) },
+	{ SPH_C32(0x8338c000), SPH_C32(0x29376d16), SPH_C32(0xa9c1e29c),
+	  SPH_C32(0x25497190), SPH_C32(0x881ae000), SPH_C32(0x4a994806),
+	  SPH_C32(0x5e4239a1), SPH_C32(0x7bdfc948) }
+};
+
+static const sph_u32 T256_5[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xaaa71800), SPH_C32(0x72a81680), SPH_C32(0xf97837ec),
+	  SPH_C32(0xb8591d04), SPH_C32(0x2a220000), SPH_C32(0xc47ebf14),
+	  SPH_C32(0x04ce77d4), SPH_C32(0xcb92c512) },
+	{ SPH_C32(0x951e1000), SPH_C32(0x0e72ce03), SPH_C32(0x37ef9ef8),
+	  SPH_C32(0x0580e8e1), SPH_C32(0xf4100800), SPH_C32(0xecfdefea),
+	  SPH_C32(0x754b5d13), SPH_C32(0x6d2d5a84) },
+	{ SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd), SPH_C32(0x466ab43f),
+	  SPH_C32(0xa33f7777), SPH_C32(0x159b0800), SPH_C32(0xb8a46797),
+	  SPH_C32(0xca59dec0), SPH_C32(0x764b30f7) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0x159b0800), SPH_C32(0xb8a46797), SPH_C32(0xca59dec0),
+	  SPH_C32(0x764b30f7), SPH_C32(0x5eb71000), SPH_C32(0x9e55f96a),
+	  SPH_C32(0x8c336aff), SPH_C32(0xd5744780) },
+	{ SPH_C32(0x2a220000), SPH_C32(0xc47ebf14), SPH_C32(0x04ce77d4),
+	  SPH_C32(0xcb92c512), SPH_C32(0x80851800), SPH_C32(0xb6d6a994),
+	  SPH_C32(0xfdb64038), SPH_C32(0x73cbd816) },
+	{ SPH_C32(0xf4100800), SPH_C32(0xecfdefea), SPH_C32(0x754b5d13),
+	  SPH_C32(0x6d2d5a84), SPH_C32(0x610e1800), SPH_C32(0xe28f21e9),
+	  SPH_C32(0x42a4c3eb), SPH_C32(0x68adb265) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) },
+	{ SPH_C32(0x610e1800), SPH_C32(0xe28f21e9), SPH_C32(0x42a4c3eb),
+	  SPH_C32(0x68adb265), SPH_C32(0x951e1000), SPH_C32(0x0e72ce03),
+	  SPH_C32(0x37ef9ef8), SPH_C32(0x0580e8e1) },
+	{ SPH_C32(0x5eb71000), SPH_C32(0x9e55f96a), SPH_C32(0x8c336aff),
+	  SPH_C32(0xd5744780), SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd),
+	  SPH_C32(0x466ab43f), SPH_C32(0xa33f7777) },
+	{ SPH_C32(0x80851800), SPH_C32(0xb6d6a994), SPH_C32(0xfdb64038),
+	  SPH_C32(0x73cbd816), SPH_C32(0xaaa71800), SPH_C32(0x72a81680),
+	  SPH_C32(0xf97837ec), SPH_C32(0xb8591d04) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x37182800), SPH_C32(0x9cd4dc02), SPH_C32(0x607f1090),
+	  SPH_C32(0x9b769ab2), SPH_C32(0x76d80000), SPH_C32(0x7416e6ae),
+	  SPH_C32(0xc8ab6bdc), SPH_C32(0xba8a34b2) },
+	{ SPH_C32(0x08a12000), SPH_C32(0xe00e0481), SPH_C32(0xaee8b984),
+	  SPH_C32(0x26af6f57), SPH_C32(0xa8ea0800), SPH_C32(0x5c95b650),
+	  SPH_C32(0xb92e411b), SPH_C32(0x1c35ab24) },
+	{ SPH_C32(0xd6932800), SPH_C32(0xc88d547f), SPH_C32(0xdf6d9343),
+	  SPH_C32(0x8010f0c1), SPH_C32(0x49610800), SPH_C32(0x08cc3e2d),
+	  SPH_C32(0x063cc2c8), SPH_C32(0x0753c157) },
+	{ SPH_C32(0x9dbf3000), SPH_C32(0xee7cca82), SPH_C32(0x9907277c),
+	  SPH_C32(0x232f87b6), SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba),
+	  SPH_C32(0xcc651c08), SPH_C32(0x7118f1a0) },
+	{ SPH_C32(0x438d3800), SPH_C32(0xc6ff9a7c), SPH_C32(0xe8820dbb),
+	  SPH_C32(0x85901820), SPH_C32(0xbd710000), SPH_C32(0xe431d1c7),
+	  SPH_C32(0x73779fdb), SPH_C32(0x6a7e9bd3) },
+	{ SPH_C32(0x7c343000), SPH_C32(0xba2542ff), SPH_C32(0x2615a4af),
+	  SPH_C32(0x3849edc5), SPH_C32(0x63430800), SPH_C32(0xccb28139),
+	  SPH_C32(0x02f2b51c), SPH_C32(0xccc10445) },
+	{ SPH_C32(0xa2063800), SPH_C32(0x92a61201), SPH_C32(0x57908e68),
+	  SPH_C32(0x9ef67253), SPH_C32(0x82c80800), SPH_C32(0x98eb0944),
+	  SPH_C32(0xbde036cf), SPH_C32(0xd7a76e36) },
+	{ SPH_C32(0x22832000), SPH_C32(0x2470bb95), SPH_C32(0xaa26ce50),
+	  SPH_C32(0xed3daa45), SPH_C32(0x286f1000), SPH_C32(0xea431fc4),
+	  SPH_C32(0x44980123), SPH_C32(0x6ffe7332) },
+	{ SPH_C32(0xfcb12800), SPH_C32(0x0cf3eb6b), SPH_C32(0xdba3e497),
+	  SPH_C32(0x4b8235d3), SPH_C32(0xc9e41000), SPH_C32(0xbe1a97b9),
+	  SPH_C32(0xfb8a82f0), SPH_C32(0x74981941) },
+	{ SPH_C32(0xc3082000), SPH_C32(0x702933e8), SPH_C32(0x15344d83),
+	  SPH_C32(0xf65bc036), SPH_C32(0x17d61800), SPH_C32(0x9699c747),
+	  SPH_C32(0x8a0fa837), SPH_C32(0xd22786d7) },
+	{ SPH_C32(0x1d3a2800), SPH_C32(0x58aa6316), SPH_C32(0x64b16744),
+	  SPH_C32(0x50e45fa0), SPH_C32(0xf65d1800), SPH_C32(0xc2c04f3a),
+	  SPH_C32(0x351d2be4), SPH_C32(0xc941eca4) },
+	{ SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb), SPH_C32(0x22dbd37b),
+	  SPH_C32(0xf3db28d7), SPH_C32(0xe3c61000), SPH_C32(0x7a6428ad),
+	  SPH_C32(0xff44f524), SPH_C32(0xbf0adc53) },
+	{ SPH_C32(0x88243800), SPH_C32(0x56d8ad15), SPH_C32(0x535ef9bc),
+	  SPH_C32(0x5564b741), SPH_C32(0x024d1000), SPH_C32(0x2e3da0d0),
+	  SPH_C32(0x405676f7), SPH_C32(0xa46cb620) },
+	{ SPH_C32(0xb79d3000), SPH_C32(0x2a027596), SPH_C32(0x9dc950a8),
+	  SPH_C32(0xe8bd42a4), SPH_C32(0xdc7f1800), SPH_C32(0x06bef02e),
+	  SPH_C32(0x31d35c30), SPH_C32(0x02d329b6) },
+	{ SPH_C32(0x69af3800), SPH_C32(0x02812568), SPH_C32(0xec4c7a6f),
+	  SPH_C32(0x4e02dd32), SPH_C32(0x3df41800), SPH_C32(0x52e77853),
+	  SPH_C32(0x8ec1dfe3), SPH_C32(0x19b543c5) }
+};
+
+static const sph_u32 T256_10[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5), SPH_C32(0xc278eb65),
+	  SPH_C32(0xf0f11d22), SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30),
+	  SPH_C32(0xa7d61cb3), SPH_C32(0xb3d2a71c) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8), SPH_C32(0x225fc418),
+	  SPH_C32(0x5516c378), SPH_C32(0x8d760300), SPH_C32(0x12297a03),
+	  SPH_C32(0xc733e541), SPH_C32(0x2dc6d26a) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0x3ad20200), SPH_C32(0x98364bdb), SPH_C32(0x42ba3dea),
+	  SPH_C32(0xcb02b60e), SPH_C32(0x63500300), SPH_C32(0x0062123d),
+	  SPH_C32(0x47f133ce), SPH_C32(0x16357946) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0xfc720400), SPH_C32(0x98f26fa1), SPH_C32(0xcd585a76),
+	  SPH_C32(0xe7684482), SPH_C32(0xd0550100), SPH_C32(0x30caa1f1),
+	  SPH_C32(0x4d662f87), SPH_C32(0xac5ee7d6) },
+	{ SPH_C32(0x28860600), SPH_C32(0x128f4c44), SPH_C32(0x0f20b113),
+	  SPH_C32(0x179959a0), SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1),
+	  SPH_C32(0xeab03334), SPH_C32(0x1f8c40ca) },
+	{ SPH_C32(0x5bca0600), SPH_C32(0x87e0eb92), SPH_C32(0xadbda384),
+	  SPH_C32(0x797c31f4), SPH_C32(0x3e730100), SPH_C32(0x2281c9cf),
+	  SPH_C32(0xcda4f908), SPH_C32(0x97ad4cfa) },
+	{ SPH_C32(0x61180400), SPH_C32(0x1fd6a049), SPH_C32(0xef079e6e),
+	  SPH_C32(0xb27e87fa), SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2),
+	  SPH_C32(0x8a55cac6), SPH_C32(0x819835bc) },
+	{ SPH_C32(0x12540400), SPH_C32(0x8ab9079f), SPH_C32(0x4d9a8cf9),
+	  SPH_C32(0xdc9befae), SPH_C32(0x99cb0300), SPH_C32(0x3d934dfc),
+	  SPH_C32(0xad4100fa), SPH_C32(0x09b9398c) },
+	{ SPH_C32(0xc6a00600), SPH_C32(0x00c4247a), SPH_C32(0x8fe2679c),
+	  SPH_C32(0x2c6af28c), SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc),
+	  SPH_C32(0x0a971c49), SPH_C32(0xba6b9e90) },
+	{ SPH_C32(0xb5ec0600), SPH_C32(0x95ab83ac), SPH_C32(0x2d7f750b),
+	  SPH_C32(0x428f9ad8), SPH_C32(0x77ed0300), SPH_C32(0x2fd825c2),
+	  SPH_C32(0x2d83d675), SPH_C32(0x324a92a0) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0x67f10000), SPH_C32(0xbad59029), SPH_C32(0xc8eff72c),
+	  SPH_C32(0x4a9a83b2), SPH_C32(0x5f6b0500), SPH_C32(0x3d576986),
+	  SPH_C32(0x22a36766), SPH_C32(0x25d3cb00) },
+	{ SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc), SPH_C32(0x0a971c49),
+	  SPH_C32(0xba6b9e90), SPH_C32(0x75a50400), SPH_C32(0x306c97b6),
+	  SPH_C32(0x85757bd5), SPH_C32(0x96016c1c) },
+	{ SPH_C32(0xc0490200), SPH_C32(0xa5c7141a), SPH_C32(0xa80a0ede),
+	  SPH_C32(0xd48ef6c4), SPH_C32(0xb14d0500), SPH_C32(0x2f1c01b8),
+	  SPH_C32(0xa261b1e9), SPH_C32(0x1e20602c) },
+	{ SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1), SPH_C32(0xeab03334),
+	  SPH_C32(0x1f8c40ca), SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385),
+	  SPH_C32(0xe5908227), SPH_C32(0x0815196a) },
+	{ SPH_C32(0x89d70000), SPH_C32(0xa89ef817), SPH_C32(0x482d21a3),
+	  SPH_C32(0x7169289e), SPH_C32(0x16f50700), SPH_C32(0x300e858b),
+	  SPH_C32(0xc284481b), SPH_C32(0x8034155a) },
+	{ SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2), SPH_C32(0x8a55cac6),
+	  SPH_C32(0x819835bc), SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb),
+	  SPH_C32(0x655254a8), SPH_C32(0x33e6b246) },
+	{ SPH_C32(0x2e6f0200), SPH_C32(0xb78c7c24), SPH_C32(0x28c8d851),
+	  SPH_C32(0xef7d5de8), SPH_C32(0xf8d30700), SPH_C32(0x2245edb5),
+	  SPH_C32(0x42469e94), SPH_C32(0xbbc7be76) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0xe8cf0400), SPH_C32(0xb748585e), SPH_C32(0xa72abfcd),
+	  SPH_C32(0xc317af64), SPH_C32(0x4bd60500), SPH_C32(0x12ed5e79),
+	  SPH_C32(0x48d182dd), SPH_C32(0x01ac20e6) },
+	{ SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb), SPH_C32(0x655254a8),
+	  SPH_C32(0x33e6b246), SPH_C32(0x61180400), SPH_C32(0x1fd6a049),
+	  SPH_C32(0xef079e6e), SPH_C32(0xb27e87fa) },
+	{ SPH_C32(0x4f770600), SPH_C32(0xa85adc6d), SPH_C32(0xc7cf463f),
+	  SPH_C32(0x5d03da12), SPH_C32(0xa5f00500), SPH_C32(0x00a63647),
+	  SPH_C32(0xc8135452), SPH_C32(0x3a5f8bca) },
+	{ SPH_C32(0x75a50400), SPH_C32(0x306c97b6), SPH_C32(0x85757bd5),
+	  SPH_C32(0x96016c1c), SPH_C32(0xc6a00600), SPH_C32(0x00c4247a),
+	  SPH_C32(0x8fe2679c), SPH_C32(0x2c6af28c) },
+	{ SPH_C32(0x06e90400), SPH_C32(0xa5033060), SPH_C32(0x27e86942),
+	  SPH_C32(0xf8e40448), SPH_C32(0x02480700), SPH_C32(0x1fb4b274),
+	  SPH_C32(0xa8f6ada0), SPH_C32(0xa44bfebc) },
+	{ SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385), SPH_C32(0xe5908227),
+	  SPH_C32(0x0815196a), SPH_C32(0x28860600), SPH_C32(0x128f4c44),
+	  SPH_C32(0x0f20b113), SPH_C32(0x179959a0) },
+	{ SPH_C32(0xa1510600), SPH_C32(0xba11b453), SPH_C32(0x470d90b0),
+	  SPH_C32(0x66f0713e), SPH_C32(0xec6e0700), SPH_C32(0x0dffda4a),
+	  SPH_C32(0x28347b2f), SPH_C32(0x9fb85590) }
+};
+
+static const sph_u32 T256_15[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x161c00c0), SPH_C32(0x7e54f492), SPH_C32(0xf4a107fd),
+	  SPH_C32(0xd0018836), SPH_C32(0x410d0000), SPH_C32(0xea7a09df),
+	  SPH_C32(0x8c12a9bc), SPH_C32(0xc50530e0) },
+	{ SPH_C32(0x23790080), SPH_C32(0xe5c242d8), SPH_C32(0x9f98cca2),
+	  SPH_C32(0x811536f8), SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1),
+	  SPH_C32(0xba77c214), SPH_C32(0xe6660ae5) },
+	{ SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6), SPH_C32(0xa9fda70a),
+	  SPH_C32(0xa2760cfd), SPH_C32(0x74680040), SPH_C32(0x71ecbf95),
+	  SPH_C32(0xe72b62e3), SPH_C32(0x94118e2e) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x74680040), SPH_C32(0x71ecbf95), SPH_C32(0xe72b62e3),
+	  SPH_C32(0x94118e2e), SPH_C32(0x1adf0080), SPH_C32(0xaf751133),
+	  SPH_C32(0x4ed6c5e9), SPH_C32(0x366782d3) },
+	{ SPH_C32(0x410d0000), SPH_C32(0xea7a09df), SPH_C32(0x8c12a9bc),
+	  SPH_C32(0xc50530e0), SPH_C32(0x571100c0), SPH_C32(0x942efd4d),
+	  SPH_C32(0x78b3ae41), SPH_C32(0x1504b8d6) },
+	{ SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1), SPH_C32(0xba77c214),
+	  SPH_C32(0xe6660ae5), SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779),
+	  SPH_C32(0x25ef0eb6), SPH_C32(0x67733c1d) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779), SPH_C32(0x25ef0eb6),
+	  SPH_C32(0x67733c1d), SPH_C32(0x23790080), SPH_C32(0xe5c242d8),
+	  SPH_C32(0x9f98cca2), SPH_C32(0x811536f8) },
+	{ SPH_C32(0x1adf0080), SPH_C32(0xaf751133), SPH_C32(0x4ed6c5e9),
+	  SPH_C32(0x366782d3), SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6),
+	  SPH_C32(0xa9fda70a), SPH_C32(0xa2760cfd) },
+	{ SPH_C32(0x571100c0), SPH_C32(0x942efd4d), SPH_C32(0x78b3ae41),
+	  SPH_C32(0x1504b8d6), SPH_C32(0x161c00c0), SPH_C32(0x7e54f492),
+	  SPH_C32(0xf4a107fd), SPH_C32(0xd0018836) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0xfa6a0140), SPH_C32(0xb144dda6), SPH_C32(0xb3ecb303),
+	  SPH_C32(0xc5a75e61), SPH_C32(0x0be70000), SPH_C32(0x35a2fde2),
+	  SPH_C32(0xffc1b260), SPH_C32(0x1c92ec9f) },
+	{ SPH_C32(0xcf0f0100), SPH_C32(0x2ad26bec), SPH_C32(0xd8d5785c),
+	  SPH_C32(0x94b3e0af), SPH_C32(0x46290040), SPH_C32(0x0ef9119c),
+	  SPH_C32(0xc9a4d9c8), SPH_C32(0x3ff1d69a) },
+	{ SPH_C32(0x82c10140), SPH_C32(0x11898792), SPH_C32(0xeeb013f4),
+	  SPH_C32(0xb7d0daaa), SPH_C32(0x3e820040), SPH_C32(0xae344ba8),
+	  SPH_C32(0x94f8793f), SPH_C32(0x4d865251) },
+	{ SPH_C32(0xec760180), SPH_C32(0xcf102934), SPH_C32(0x474db4fe),
+	  SPH_C32(0x15a6d657), SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d),
+	  SPH_C32(0x73d31bdc), SPH_C32(0xd997dc7f) },
+	{ SPH_C32(0xa1b801c0), SPH_C32(0xf44bc54a), SPH_C32(0x7128df56),
+	  SPH_C32(0x36c5ec52), SPH_C32(0x32410000), SPH_C32(0x7f15ae09),
+	  SPH_C32(0x2e8fbb2b), SPH_C32(0xabe058b4) },
+	{ SPH_C32(0x94dd0180), SPH_C32(0x6fdd7300), SPH_C32(0x1a111409),
+	  SPH_C32(0x67d1529c), SPH_C32(0x7f8f0040), SPH_C32(0x444e4277),
+	  SPH_C32(0x18ead083), SPH_C32(0x888362b1) },
+	{ SPH_C32(0xd91301c0), SPH_C32(0x54869f7e), SPH_C32(0x2c747fa1),
+	  SPH_C32(0x44b26899), SPH_C32(0x07240040), SPH_C32(0xe4831843),
+	  SPH_C32(0x45b67074), SPH_C32(0xfaf4e67a) },
+	{ SPH_C32(0x8e020100), SPH_C32(0xc0a86233), SPH_C32(0x54c7d1e0),
+	  SPH_C32(0x51b6d04f), SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1),
+	  SPH_C32(0xb1177789), SPH_C32(0x2af56e4c) },
+	{ SPH_C32(0xc3cc0140), SPH_C32(0xfbf38e4d), SPH_C32(0x62a2ba48),
+	  SPH_C32(0x72d5ea4a), SPH_C32(0x69930080), SPH_C32(0x3a1ab6e5),
+	  SPH_C32(0xec4bd77e), SPH_C32(0x5882ea87) },
+	{ SPH_C32(0xf6a90100), SPH_C32(0x60653807), SPH_C32(0x099b7117),
+	  SPH_C32(0x23c15484), SPH_C32(0x245d00c0), SPH_C32(0x01415a9b),
+	  SPH_C32(0xda2ebcd6), SPH_C32(0x7be1d082) },
+	{ SPH_C32(0xbb670140), SPH_C32(0x5b3ed479), SPH_C32(0x3ffe1abf),
+	  SPH_C32(0x00a26e81), SPH_C32(0x5cf600c0), SPH_C32(0xa18c00af),
+	  SPH_C32(0x87721c21), SPH_C32(0x09965449) },
+	{ SPH_C32(0xd5d00180), SPH_C32(0x85a77adf), SPH_C32(0x9603bdb5),
+	  SPH_C32(0xa2d4627c), SPH_C32(0x289e0080), SPH_C32(0xd060bf3a),
+	  SPH_C32(0x60597ec2), SPH_C32(0x9d87da67) },
+	{ SPH_C32(0x981e01c0), SPH_C32(0xbefc96a1), SPH_C32(0xa066d61d),
+	  SPH_C32(0x81b75879), SPH_C32(0x50350080), SPH_C32(0x70ade50e),
+	  SPH_C32(0x3d05de35), SPH_C32(0xeff05eac) },
+	{ SPH_C32(0xad7b0180), SPH_C32(0x256a20eb), SPH_C32(0xcb5f1d42),
+	  SPH_C32(0xd0a3e6b7), SPH_C32(0x1dfb00c0), SPH_C32(0x4bf60970),
+	  SPH_C32(0x0b60b59d), SPH_C32(0xcc9364a9) },
+	{ SPH_C32(0xe0b501c0), SPH_C32(0x1e31cc95), SPH_C32(0xfd3a76ea),
+	  SPH_C32(0xf3c0dcb2), SPH_C32(0x655000c0), SPH_C32(0xeb3b5344),
+	  SPH_C32(0x563c156a), SPH_C32(0xbee4e062) }
+};
+
+static const sph_u32 T256_20[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x46400010), SPH_C32(0xf29d41bf), SPH_C32(0x628da57c),
+	  SPH_C32(0x29af183e), SPH_C32(0x918b0008), SPH_C32(0xf6ca6cb0),
+	  SPH_C32(0x5ccd1683), SPH_C32(0x51a5f0d2) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x39250000), SPH_C32(0xd6b355cd), SPH_C32(0xa2be8582),
+	  SPH_C32(0xe90cd8e3), SPH_C32(0xc0d70018), SPH_C32(0xb6391e4b),
+	  SPH_C32(0xa02a3081), SPH_C32(0x20f2a0b3) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0x68790010), SPH_C32(0x96402736), SPH_C32(0x5e59a380),
+	  SPH_C32(0x985b8882), SPH_C32(0xeeee0018), SPH_C32(0xd2e478c2),
+	  SPH_C32(0x9cfe367d), SPH_C32(0x9106300f) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0xb5a40020), SPH_C32(0x3389d6b2), SPH_C32(0x67a4cf7a),
+	  SPH_C32(0xba57e89f), SPH_C32(0xe3c00008), SPH_C32(0x5badc72b),
+	  SPH_C32(0x19b01d86), SPH_C32(0x83b84116) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0xe4f80030), SPH_C32(0x737aa449), SPH_C32(0x9b43e978),
+	  SPH_C32(0xcb00b8fe), SPH_C32(0xcdf90008), SPH_C32(0x3f70a1a2),
+	  SPH_C32(0x25641b7a), SPH_C32(0x324cd1aa) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0x9b9d0020), SPH_C32(0x5754b03b), SPH_C32(0x5b70c986),
+	  SPH_C32(0x0ba37823), SPH_C32(0x9ca50018), SPH_C32(0x7f83d359),
+	  SPH_C32(0xd9833d78), SPH_C32(0x431b81cb) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) },
+	{ SPH_C32(0xcac10030), SPH_C32(0x17a7c2c0), SPH_C32(0xa797ef84),
+	  SPH_C32(0x7af42842), SPH_C32(0xb29c0018), SPH_C32(0x1b5eb5d0),
+	  SPH_C32(0xe5573b84), SPH_C32(0xf2ef1177) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x4b6e0000), SPH_C32(0x7bd4fe56), SPH_C32(0xe7c38e87),
+	  SPH_C32(0x3b116927), SPH_C32(0x41780028), SPH_C32(0xda4a22dd),
+	  SPH_C32(0xe07e5182), SPH_C32(0x6117e1d6) },
+	{ SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9), SPH_C32(0x854e2bfb),
+	  SPH_C32(0x12be7119), SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d),
+	  SPH_C32(0xbcb34701), SPH_C32(0x30b21104) },
+	{ SPH_C32(0x1a320010), SPH_C32(0x3b278cad), SPH_C32(0x1b24a885),
+	  SPH_C32(0x4a463946), SPH_C32(0x6f410028), SPH_C32(0xbe974454),
+	  SPH_C32(0xdcaa577e), SPH_C32(0xd0e3716a) },
+	{ SPH_C32(0x724b0000), SPH_C32(0xad67ab9b), SPH_C32(0x457d0b05),
+	  SPH_C32(0xd21db1c4), SPH_C32(0x81af0030), SPH_C32(0x6c733c96),
+	  SPH_C32(0x40546103), SPH_C32(0x41e54165) },
+	{ SPH_C32(0x65570000), SPH_C32(0x1f0998df), SPH_C32(0xdb17887b),
+	  SPH_C32(0x8ae5f99b), SPH_C32(0x3e1d0038), SPH_C32(0xfe6436af),
+	  SPH_C32(0x204d717c), SPH_C32(0xa1b4210b) },
+	{ SPH_C32(0x23170010), SPH_C32(0xed94d960), SPH_C32(0xb99a2d07),
+	  SPH_C32(0xa34ae1a5), SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f),
+	  SPH_C32(0x7c8067ff), SPH_C32(0xf011d1d9) },
+	{ SPH_C32(0x340b0010), SPH_C32(0x5ffaea24), SPH_C32(0x27f0ae79),
+	  SPH_C32(0xfbb2a9fa), SPH_C32(0x10240038), SPH_C32(0x9ab95026),
+	  SPH_C32(0x1c997780), SPH_C32(0x1040b1b7) },
+	{ SPH_C32(0xfeca0020), SPH_C32(0x485d28e4), SPH_C32(0x806741fd),
+	  SPH_C32(0x814681b8), SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6),
+	  SPH_C32(0xf9ce4c04), SPH_C32(0xe2afa0c0) },
+	{ SPH_C32(0xe9d60020), SPH_C32(0xfa331ba0), SPH_C32(0x1e0dc283),
+	  SPH_C32(0xd9bec9e7), SPH_C32(0x1d0a0028), SPH_C32(0x13f0efcf),
+	  SPH_C32(0x99d75c7b), SPH_C32(0x02fec0ae) },
+	{ SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f), SPH_C32(0x7c8067ff),
+	  SPH_C32(0xf011d1d9), SPH_C32(0x8c810020), SPH_C32(0xe53a837f),
+	  SPH_C32(0xc51a4af8), SPH_C32(0x535b307c) },
+	{ SPH_C32(0xb88a0030), SPH_C32(0xbac0695b), SPH_C32(0xe2eae481),
+	  SPH_C32(0xa8e99986), SPH_C32(0x33330028), SPH_C32(0x772d8946),
+	  SPH_C32(0xa5035a87), SPH_C32(0xb30a5012) },
+	{ SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d), SPH_C32(0xbcb34701),
+	  SPH_C32(0x30b21104), SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184),
+	  SPH_C32(0x39fd6cfa), SPH_C32(0x220c601d) },
+	{ SPH_C32(0xc7ef0020), SPH_C32(0x9eee7d29), SPH_C32(0x22d9c47f),
+	  SPH_C32(0x684a595b), SPH_C32(0x626f0038), SPH_C32(0x37defbbd),
+	  SPH_C32(0x59e47c85), SPH_C32(0xc25d0073) },
+	{ SPH_C32(0x81af0030), SPH_C32(0x6c733c96), SPH_C32(0x40546103),
+	  SPH_C32(0x41e54165), SPH_C32(0xf3e40030), SPH_C32(0xc114970d),
+	  SPH_C32(0x05296a06), SPH_C32(0x93f8f0a1) },
+	{ SPH_C32(0x96b30030), SPH_C32(0xde1d0fd2), SPH_C32(0xde3ee27d),
+	  SPH_C32(0x191d093a), SPH_C32(0x4c560038), SPH_C32(0x53039d34),
+	  SPH_C32(0x65307a79), SPH_C32(0x73a990cf) }
+};
+
+static const sph_u32 T256_25[32][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x582b0006), SPH_C32(0xd39128c4), SPH_C32(0x042035fa),
+	  SPH_C32(0x223fde2b), SPH_C32(0x3a050000), SPH_C32(0x6508f6be),
+	  SPH_C32(0xe1d03671), SPH_C32(0x64347a75) },
+	{ SPH_C32(0x81a40004), SPH_C32(0xa9958063), SPH_C32(0xe4279a1c),
+	  SPH_C32(0xbdd2949c), SPH_C32(0xb2260002), SPH_C32(0x3aef510d),
+	  SPH_C32(0x7835b3db), SPH_C32(0xe9418d84) },
+	{ SPH_C32(0x09870006), SPH_C32(0xf67227d0), SPH_C32(0x7dc21fb6),
+	  SPH_C32(0x30a7636d), SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19),
+	  SPH_C32(0x01d79997), SPH_C32(0xfbd930c2) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19), SPH_C32(0x01d79997),
+	  SPH_C32(0xfbd930c2), SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9),
+	  SPH_C32(0x7c158621), SPH_C32(0xcb7e53af) },
+	{ SPH_C32(0x3a050000), SPH_C32(0x6508f6be), SPH_C32(0xe1d03671),
+	  SPH_C32(0x64347a75), SPH_C32(0x622e0006), SPH_C32(0xb699de7a),
+	  SPH_C32(0xe5f0038b), SPH_C32(0x460ba45e) },
+	{ SPH_C32(0xb2260002), SPH_C32(0x3aef510d), SPH_C32(0x7835b3db),
+	  SPH_C32(0xe9418d84), SPH_C32(0x33820006), SPH_C32(0x937ad16e),
+	  SPH_C32(0x9c1229c7), SPH_C32(0x54931918) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) },
+	{ SPH_C32(0x33820006), SPH_C32(0x937ad16e), SPH_C32(0x9c1229c7),
+	  SPH_C32(0x54931918), SPH_C32(0x81a40004), SPH_C32(0xa9958063),
+	  SPH_C32(0xe4279a1c), SPH_C32(0xbdd2949c) },
+	{ SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9), SPH_C32(0x7c158621),
+	  SPH_C32(0xcb7e53af), SPH_C32(0x09870006), SPH_C32(0xf67227d0),
+	  SPH_C32(0x7dc21fb6), SPH_C32(0x30a7636d) },
+	{ SPH_C32(0x622e0006), SPH_C32(0xb699de7a), SPH_C32(0xe5f0038b),
+	  SPH_C32(0x460ba45e), SPH_C32(0x582b0006), SPH_C32(0xd39128c4),
+	  SPH_C32(0x042035fa), SPH_C32(0x223fde2b) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x208d000a), SPH_C32(0x7f9e9ece), SPH_C32(0x679616ab),
+	  SPH_C32(0x35dcdfc0), SPH_C32(0x46b00000), SPH_C32(0x978d3c50),
+	  SPH_C32(0xe788a932), SPH_C32(0x4a60f519) },
+	{ SPH_C32(0xf9020008), SPH_C32(0x059a3669), SPH_C32(0x8791b94d),
+	  SPH_C32(0xaa319577), SPH_C32(0xce930002), SPH_C32(0xc86a9be3),
+	  SPH_C32(0x7e6d2c98), SPH_C32(0xc71502e8) },
+	{ SPH_C32(0x7121000a), SPH_C32(0x5a7d91da), SPH_C32(0x1e743ce7),
+	  SPH_C32(0x27446286), SPH_C32(0x9f3f0002), SPH_C32(0xed8994f7),
+	  SPH_C32(0x078f06d4), SPH_C32(0xd58dbfae) },
+	{ SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a), SPH_C32(0x63b62351),
+	  SPH_C32(0x17e301eb), SPH_C32(0x7cb50000), SPH_C32(0xf285caee),
+	  SPH_C32(0x06589f43), SPH_C32(0x2e548f6c) },
+	{ SPH_C32(0xf085000e), SPH_C32(0xf3e811b9), SPH_C32(0xfa53a6fb),
+	  SPH_C32(0x9a96f61a), SPH_C32(0x2d190000), SPH_C32(0xd766c5fa),
+	  SPH_C32(0x7fbab50f), SPH_C32(0x3ccc322a) },
+	{ SPH_C32(0x290a000c), SPH_C32(0x89ecb91e), SPH_C32(0x1a54091d),
+	  SPH_C32(0x057bbcad), SPH_C32(0xa53a0002), SPH_C32(0x88816249),
+	  SPH_C32(0xe65f30a5), SPH_C32(0xb1b9c5db) },
+	{ SPH_C32(0xa129000e), SPH_C32(0xd60b1ead), SPH_C32(0x83b18cb7),
+	  SPH_C32(0x880e4b5c), SPH_C32(0xf4960002), SPH_C32(0xad626d5d),
+	  SPH_C32(0x9fbd1ae9), SPH_C32(0xa321789d) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x4b24000a), SPH_C32(0x3f756764), SPH_C32(0xffa40a96),
+	  SPH_C32(0x437018f3), SPH_C32(0xfd110004), SPH_C32(0x5b104a8d),
+	  SPH_C32(0xe27f055f), SPH_C32(0x93861bf0) },
+	{ SPH_C32(0x92ab0008), SPH_C32(0x4571cfc3), SPH_C32(0x1fa3a570),
+	  SPH_C32(0xdc9d5244), SPH_C32(0x75320006), SPH_C32(0x04f7ed3e),
+	  SPH_C32(0x7b9a80f5), SPH_C32(0x1ef3ec01) },
+	{ SPH_C32(0x1a88000a), SPH_C32(0x1a966870), SPH_C32(0x864620da),
+	  SPH_C32(0x51e8a5b5), SPH_C32(0x249e0006), SPH_C32(0x2114e22a),
+	  SPH_C32(0x0278aab9), SPH_C32(0x0c6b5147) },
+	{ SPH_C32(0x130f000c), SPH_C32(0xece44fa0), SPH_C32(0xfb843f6c),
+	  SPH_C32(0x614fc6d8), SPH_C32(0xc7140004), SPH_C32(0x3e18bc33),
+	  SPH_C32(0x03af332e), SPH_C32(0xf7b26185) },
+	{ SPH_C32(0x9b2c000e), SPH_C32(0xb303e813), SPH_C32(0x6261bac6),
+	  SPH_C32(0xec3a3129), SPH_C32(0x96b80004), SPH_C32(0x1bfbb327),
+	  SPH_C32(0x7a4d1962), SPH_C32(0xe52adcc3) },
+	{ SPH_C32(0x42a3000c), SPH_C32(0xc90740b4), SPH_C32(0x82661520),
+	  SPH_C32(0x73d77b9e), SPH_C32(0x1e9b0006), SPH_C32(0x441c1494),
+	  SPH_C32(0xe3a89cc8), SPH_C32(0x685f2b32) },
+	{ SPH_C32(0xca80000e), SPH_C32(0x96e0e707), SPH_C32(0x1b83908a),
+	  SPH_C32(0xfea28c6f), SPH_C32(0x4f370006), SPH_C32(0x61ff1b80),
+	  SPH_C32(0x9a4ab684), SPH_C32(0x7ac79674) }
+};
+
+static const sph_u32 T256_30[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 3][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T256_5[(acc >> 6) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_10[(acc >> 1) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T256_15[(acc >> 4) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[3]; \
+		rp = &T256_20[(acc >> 7) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_25[(acc >> 2) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_30[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 6
+
+static const sph_u32 T256_0[64][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xfb316000), SPH_C32(0xef405514), SPH_C32(0x9c00f5fc),
+	  SPH_C32(0xf3ffc956), SPH_C32(0x71040000), SPH_C32(0x6bfc54f6),
+	  SPH_C32(0xf33c70b5), SPH_C32(0xb1ad5eff) },
+	{ SPH_C32(0x85484000), SPH_C32(0x7b58b73b), SPH_C32(0xfa4327a4),
+	  SPH_C32(0x6fda92b3), SPH_C32(0x982e2000), SPH_C32(0xdfabd80a),
+	  SPH_C32(0xe2c64ae2), SPH_C32(0x8c645bdb) },
+	{ SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7), SPH_C32(0xebb91df3),
+	  SPH_C32(0x52139797), SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9),
+	  SPH_C32(0x957fa2ed), SPH_C32(0x2d88051a) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9), SPH_C32(0x957fa2ed),
+	  SPH_C32(0x2d88051a), SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e),
+	  SPH_C32(0x7ec6bf1e), SPH_C32(0x7f9b928d) },
+	{ SPH_C32(0x71040000), SPH_C32(0x6bfc54f6), SPH_C32(0xf33c70b5),
+	  SPH_C32(0xb1ad5eff), SPH_C32(0x8a356000), SPH_C32(0x84bc01e2),
+	  SPH_C32(0x6f3c8549), SPH_C32(0x425297a9) },
+	{ SPH_C32(0x982e2000), SPH_C32(0xdfabd80a), SPH_C32(0xe2c64ae2),
+	  SPH_C32(0x8c645bdb), SPH_C32(0x1d666000), SPH_C32(0xa4f36f31),
+	  SPH_C32(0x18856d46), SPH_C32(0xe3bec968) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) },
+	{ SPH_C32(0x1d666000), SPH_C32(0xa4f36f31), SPH_C32(0x18856d46),
+	  SPH_C32(0xe3bec968), SPH_C32(0x85484000), SPH_C32(0x7b58b73b),
+	  SPH_C32(0xfa4327a4), SPH_C32(0x6fda92b3) },
+	{ SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e), SPH_C32(0x7ec6bf1e),
+	  SPH_C32(0x7f9b928d), SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7),
+	  SPH_C32(0xebb91df3), SPH_C32(0x52139797) },
+	{ SPH_C32(0x8a356000), SPH_C32(0x84bc01e2), SPH_C32(0x6f3c8549),
+	  SPH_C32(0x425297a9), SPH_C32(0xfb316000), SPH_C32(0xef405514),
+	  SPH_C32(0x9c00f5fc), SPH_C32(0xf3ffc956) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d), SPH_C32(0xa4011e05),
+	  SPH_C32(0x14055bfb), SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a),
+	  SPH_C32(0x154591df), SPH_C32(0xd2f2e303) },
+	{ SPH_C32(0x732b8000), SPH_C32(0xa5d91d12), SPH_C32(0xc242cc5d),
+	  SPH_C32(0x8820001e), SPH_C32(0x7a262000), SPH_C32(0x085271e6),
+	  SPH_C32(0x04bfab88), SPH_C32(0xef3be627) },
+	{ SPH_C32(0x9a01a000), SPH_C32(0x118e91ee), SPH_C32(0xd3b8f60a),
+	  SPH_C32(0xb5e9053a), SPH_C32(0xed752000), SPH_C32(0x281d1f35),
+	  SPH_C32(0x73064387), SPH_C32(0x4ed7b8e6) },
+	{ SPH_C32(0xf663c000), SPH_C32(0xde81aa29), SPH_C32(0x3801ebf9),
+	  SPH_C32(0xe7fa92ad), SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec),
+	  SPH_C32(0xe679e16a), SPH_C32(0x635fbdfc) },
+	{ SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5), SPH_C32(0x29fbd1ae),
+	  SPH_C32(0xda339789), SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f),
+	  SPH_C32(0x91c00965), SPH_C32(0xc2b3e33d) },
+	{ SPH_C32(0x6130c000), SPH_C32(0xfecec4fa), SPH_C32(0x4fb803f6),
+	  SPH_C32(0x4616cc6c), SPH_C32(0x9c712000), SPH_C32(0x43e14bc3),
+	  SPH_C32(0x803a3332), SPH_C32(0xff7ae619) },
+	{ SPH_C32(0x881ae000), SPH_C32(0x4a994806), SPH_C32(0x5e4239a1),
+	  SPH_C32(0x7bdfc948), SPH_C32(0x0b222000), SPH_C32(0x63ae2510),
+	  SPH_C32(0xf783db3d), SPH_C32(0x5e96b8d8) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0xeb05a000), SPH_C32(0x7a72c518), SPH_C32(0x208486bf),
+	  SPH_C32(0x04445bc5), SPH_C32(0x67404000), SPH_C32(0xaca11ed7),
+	  SPH_C32(0x1c3ac6ce), SPH_C32(0x0c852f4f) },
+	{ SPH_C32(0x957c8000), SPH_C32(0xee6a2737), SPH_C32(0x46c754e7),
+	  SPH_C32(0x98610020), SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b),
+	  SPH_C32(0x0dc0fc99), SPH_C32(0x314c2a6b) },
+	{ SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb), SPH_C32(0x573d6eb0),
+	  SPH_C32(0xa5a80504), SPH_C32(0x19396000), SPH_C32(0x38b9fcf8),
+	  SPH_C32(0x7a791496), SPH_C32(0x90a074aa) },
+	{ SPH_C32(0x1034c000), SPH_C32(0x9532900c), SPH_C32(0xbc847343),
+	  SPH_C32(0xf7bb9293), SPH_C32(0x16444000), SPH_C32(0xc75d4a21),
+	  SPH_C32(0xef06b67b), SPH_C32(0xbd2871b0) },
+	{ SPH_C32(0xf91ee000), SPH_C32(0x21651cf0), SPH_C32(0xad7e4914),
+	  SPH_C32(0xca7297b7), SPH_C32(0x81174000), SPH_C32(0xe71224f2),
+	  SPH_C32(0x98bf5e74), SPH_C32(0x1cc42f71) },
+	{ SPH_C32(0x8767c000), SPH_C32(0xb57dfedf), SPH_C32(0xcb3d9b4c),
+	  SPH_C32(0x5657cc52), SPH_C32(0x683d6000), SPH_C32(0x5345a80e),
+	  SPH_C32(0x89456423), SPH_C32(0x210d2a55) },
+	{ SPH_C32(0x6e4de000), SPH_C32(0x012a7223), SPH_C32(0xdac7a11b),
+	  SPH_C32(0x6b9ec976), SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd),
+	  SPH_C32(0xfefc8c2c), SPH_C32(0x80e17494) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0xed752000), SPH_C32(0x281d1f35), SPH_C32(0x73064387),
+	  SPH_C32(0x4ed7b8e6), SPH_C32(0x77748000), SPH_C32(0x39938edb),
+	  SPH_C32(0xa0beb58d), SPH_C32(0xfb3ebddc) },
+	{ SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a), SPH_C32(0x154591df),
+	  SPH_C32(0xd2f2e303), SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227),
+	  SPH_C32(0xb1448fda), SPH_C32(0xc6f7b8f8) },
+	{ SPH_C32(0x7a262000), SPH_C32(0x085271e6), SPH_C32(0x04bfab88),
+	  SPH_C32(0xef3be627), SPH_C32(0x090da000), SPH_C32(0xad8b6cf4),
+	  SPH_C32(0xc6fd67d5), SPH_C32(0x671be639) },
+	{ SPH_C32(0x16444000), SPH_C32(0xc75d4a21), SPH_C32(0xef06b67b),
+	  SPH_C32(0xbd2871b0), SPH_C32(0x06708000), SPH_C32(0x526fda2d),
+	  SPH_C32(0x5382c538), SPH_C32(0x4a93e323) },
+	{ SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd), SPH_C32(0xfefc8c2c),
+	  SPH_C32(0x80e17494), SPH_C32(0x91238000), SPH_C32(0x7220b4fe),
+	  SPH_C32(0x243b2d37), SPH_C32(0xeb7fbde2) },
+	{ SPH_C32(0x81174000), SPH_C32(0xe71224f2), SPH_C32(0x98bf5e74),
+	  SPH_C32(0x1cc42f71), SPH_C32(0x7809a000), SPH_C32(0xc6773802),
+	  SPH_C32(0x35c11760), SPH_C32(0xd6b6b8c6) },
+	{ SPH_C32(0x683d6000), SPH_C32(0x5345a80e), SPH_C32(0x89456423),
+	  SPH_C32(0x210d2a55), SPH_C32(0xef5aa000), SPH_C32(0xe63856d1),
+	  SPH_C32(0x4278ff6f), SPH_C32(0x775ae607) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0x0b222000), SPH_C32(0x63ae2510), SPH_C32(0xf783db3d),
+	  SPH_C32(0x5e96b8d8), SPH_C32(0x8338c000), SPH_C32(0x29376d16),
+	  SPH_C32(0xa9c1e29c), SPH_C32(0x25497190) },
+	{ SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f), SPH_C32(0x91c00965),
+	  SPH_C32(0xc2b3e33d), SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea),
+	  SPH_C32(0xb83bd8cb), SPH_C32(0x188074b4) },
+	{ SPH_C32(0x9c712000), SPH_C32(0x43e14bc3), SPH_C32(0x803a3332),
+	  SPH_C32(0xff7ae619), SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39),
+	  SPH_C32(0xcf8230c4), SPH_C32(0xb96c2a75) },
+	{ SPH_C32(0xf0134000), SPH_C32(0x8cee7004), SPH_C32(0x6b832ec1),
+	  SPH_C32(0xad69718e), SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0),
+	  SPH_C32(0x5afd9229), SPH_C32(0x94e42f6f) },
+	{ SPH_C32(0x19396000), SPH_C32(0x38b9fcf8), SPH_C32(0x7a791496),
+	  SPH_C32(0x90a074aa), SPH_C32(0x656fc000), SPH_C32(0x62845733),
+	  SPH_C32(0x2d447a26), SPH_C32(0x350871ae) },
+	{ SPH_C32(0x67404000), SPH_C32(0xaca11ed7), SPH_C32(0x1c3ac6ce),
+	  SPH_C32(0x0c852f4f), SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf),
+	  SPH_C32(0x3cbe4071), SPH_C32(0x08c1748a) },
+	{ SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b), SPH_C32(0x0dc0fc99),
+	  SPH_C32(0x314c2a6b), SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c),
+	  SPH_C32(0x4b07a87e), SPH_C32(0xa92d2a4b) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0x090da000), SPH_C32(0xad8b6cf4), SPH_C32(0xc6fd67d5),
+	  SPH_C32(0x671be639), SPH_C32(0x732b8000), SPH_C32(0xa5d91d12),
+	  SPH_C32(0xc242cc5d), SPH_C32(0x8820001e) },
+	{ SPH_C32(0x77748000), SPH_C32(0x39938edb), SPH_C32(0xa0beb58d),
+	  SPH_C32(0xfb3ebddc), SPH_C32(0x9a01a000), SPH_C32(0x118e91ee),
+	  SPH_C32(0xd3b8f60a), SPH_C32(0xb5e9053a) },
+	{ SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227), SPH_C32(0xb1448fda),
+	  SPH_C32(0xc6f7b8f8), SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d),
+	  SPH_C32(0xa4011e05), SPH_C32(0x14055bfb) },
+	{ SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0), SPH_C32(0x5afd9229),
+	  SPH_C32(0x94e42f6f), SPH_C32(0x022f8000), SPH_C32(0xce2549e4),
+	  SPH_C32(0x317ebce8), SPH_C32(0x398d5ee1) },
+	{ SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c), SPH_C32(0x4b07a87e),
+	  SPH_C32(0xa92d2a4b), SPH_C32(0x957c8000), SPH_C32(0xee6a2737),
+	  SPH_C32(0x46c754e7), SPH_C32(0x98610020) },
+	{ SPH_C32(0x656fc000), SPH_C32(0x62845733), SPH_C32(0x2d447a26),
+	  SPH_C32(0x350871ae), SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb),
+	  SPH_C32(0x573d6eb0), SPH_C32(0xa5a80504) },
+	{ SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf), SPH_C32(0x3cbe4071),
+	  SPH_C32(0x08c1748a), SPH_C32(0xeb05a000), SPH_C32(0x7a72c518),
+	  SPH_C32(0x208486bf), SPH_C32(0x04445bc5) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) },
+	{ SPH_C32(0xef5aa000), SPH_C32(0xe63856d1), SPH_C32(0x4278ff6f),
+	  SPH_C32(0x775ae607), SPH_C32(0x8767c000), SPH_C32(0xb57dfedf),
+	  SPH_C32(0xcb3d9b4c), SPH_C32(0x5657cc52) },
+	{ SPH_C32(0x91238000), SPH_C32(0x7220b4fe), SPH_C32(0x243b2d37),
+	  SPH_C32(0xeb7fbde2), SPH_C32(0x6e4de000), SPH_C32(0x012a7223),
+	  SPH_C32(0xdac7a11b), SPH_C32(0x6b9ec976) },
+	{ SPH_C32(0x7809a000), SPH_C32(0xc6773802), SPH_C32(0x35c11760),
+	  SPH_C32(0xd6b6b8c6), SPH_C32(0xf91ee000), SPH_C32(0x21651cf0),
+	  SPH_C32(0xad7e4914), SPH_C32(0xca7297b7) },
+	{ SPH_C32(0x146bc000), SPH_C32(0x097803c5), SPH_C32(0xde780a93),
+	  SPH_C32(0x84a52f51), SPH_C32(0xf663c000), SPH_C32(0xde81aa29),
+	  SPH_C32(0x3801ebf9), SPH_C32(0xe7fa92ad) },
+	{ SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39), SPH_C32(0xcf8230c4),
+	  SPH_C32(0xb96c2a75), SPH_C32(0x6130c000), SPH_C32(0xfecec4fa),
+	  SPH_C32(0x4fb803f6), SPH_C32(0x4616cc6c) },
+	{ SPH_C32(0x8338c000), SPH_C32(0x29376d16), SPH_C32(0xa9c1e29c),
+	  SPH_C32(0x25497190), SPH_C32(0x881ae000), SPH_C32(0x4a994806),
+	  SPH_C32(0x5e4239a1), SPH_C32(0x7bdfc948) },
+	{ SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea), SPH_C32(0xb83bd8cb),
+	  SPH_C32(0x188074b4), SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5),
+	  SPH_C32(0x29fbd1ae), SPH_C32(0xda339789) }
+};
+
+static const sph_u32 T256_6[64][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0x510c0c00), SPH_C32(0x251e9889), SPH_C32(0x1e406226),
+	  SPH_C32(0x2f32b340), SPH_C32(0xf5360000), SPH_C32(0x7be3bf82),
+	  SPH_C32(0xd5606668), SPH_C32(0x3f198195) },
+	{ SPH_C32(0xca8f0800), SPH_C32(0x07396701), SPH_C32(0x1bf7cf7c),
+	  SPH_C32(0x82c07470), SPH_C32(0x7a080400), SPH_C32(0x767e77f5),
+	  SPH_C32(0xbaa52e89), SPH_C32(0xb694ad43) },
+	{ SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76), SPH_C32(0x7432879d),
+	  SPH_C32(0x0b4d58a6), SPH_C32(0x6eb50400), SPH_C32(0x59c4400a),
+	  SPH_C32(0xd0d7cb32), SPH_C32(0x92eb46a5) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x6eb50400), SPH_C32(0x59c4400a), SPH_C32(0xd0d7cb32),
+	  SPH_C32(0x92eb46a5), SPH_C32(0x2b040800), SPH_C32(0x5360ef7c),
+	  SPH_C32(0xa4e54caf), SPH_C32(0x99a61e03) },
+	{ SPH_C32(0xf5360000), SPH_C32(0x7be3bf82), SPH_C32(0xd5606668),
+	  SPH_C32(0x3f198195), SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b),
+	  SPH_C32(0xcb20044e), SPH_C32(0x102b32d5) },
+	{ SPH_C32(0x7a080400), SPH_C32(0x767e77f5), SPH_C32(0xbaa52e89),
+	  SPH_C32(0xb694ad43), SPH_C32(0xb0870c00), SPH_C32(0x714710f4),
+	  SPH_C32(0xa152e1f5), SPH_C32(0x3454d933) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) },
+	{ SPH_C32(0xb0870c00), SPH_C32(0x714710f4), SPH_C32(0xa152e1f5),
+	  SPH_C32(0x3454d933), SPH_C32(0xca8f0800), SPH_C32(0x07396701),
+	  SPH_C32(0x1bf7cf7c), SPH_C32(0x82c07470) },
+	{ SPH_C32(0x2b040800), SPH_C32(0x5360ef7c), SPH_C32(0xa4e54caf),
+	  SPH_C32(0x99a61e03), SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76),
+	  SPH_C32(0x7432879d), SPH_C32(0x0b4d58a6) },
+	{ SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b), SPH_C32(0xcb20044e),
+	  SPH_C32(0x102b32d5), SPH_C32(0x510c0c00), SPH_C32(0x251e9889),
+	  SPH_C32(0x1e406226), SPH_C32(0x2f32b340) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xfbab1400), SPH_C32(0x57b68e09), SPH_C32(0xe73855ca),
+	  SPH_C32(0x976bae44), SPH_C32(0xdf140000), SPH_C32(0xbf9d0096),
+	  SPH_C32(0xd1ae11bc), SPH_C32(0xf48b4487) },
+	{ SPH_C32(0x60281000), SPH_C32(0x75917181), SPH_C32(0xe28ff890),
+	  SPH_C32(0x3a996974), SPH_C32(0x502a0400), SPH_C32(0xb200c8e1),
+	  SPH_C32(0xbe6b595d), SPH_C32(0x7d066851) },
+	{ SPH_C32(0xef161400), SPH_C32(0x780cb9f6), SPH_C32(0x8d4ab071),
+	  SPH_C32(0xb31445a2), SPH_C32(0x44970400), SPH_C32(0x9dbaff1e),
+	  SPH_C32(0xd419bce6), SPH_C32(0x597983b7) },
+	{ SPH_C32(0xaaa71800), SPH_C32(0x72a81680), SPH_C32(0xf97837ec),
+	  SPH_C32(0xb8591d04), SPH_C32(0x2a220000), SPH_C32(0xc47ebf14),
+	  SPH_C32(0x04ce77d4), SPH_C32(0xcb92c512) },
+	{ SPH_C32(0x25991c00), SPH_C32(0x7f35def7), SPH_C32(0x96bd7f0d),
+	  SPH_C32(0x31d431d2), SPH_C32(0x3e9f0000), SPH_C32(0xebc488eb),
+	  SPH_C32(0x6ebc926f), SPH_C32(0xefed2ef4) },
+	{ SPH_C32(0xbe1a1800), SPH_C32(0x5d12217f), SPH_C32(0x930ad257),
+	  SPH_C32(0x9c26f6e2), SPH_C32(0xb1a10400), SPH_C32(0xe659409c),
+	  SPH_C32(0x0179da8e), SPH_C32(0x66600222) },
+	{ SPH_C32(0x31241c00), SPH_C32(0x508fe908), SPH_C32(0xfccf9ab6),
+	  SPH_C32(0x15abda34), SPH_C32(0xa51c0400), SPH_C32(0xc9e37763),
+	  SPH_C32(0x6b0b3f35), SPH_C32(0x421fe9c4) },
+	{ SPH_C32(0x951e1000), SPH_C32(0x0e72ce03), SPH_C32(0x37ef9ef8),
+	  SPH_C32(0x0580e8e1), SPH_C32(0xf4100800), SPH_C32(0xecfdefea),
+	  SPH_C32(0x754b5d13), SPH_C32(0x6d2d5a84) },
+	{ SPH_C32(0x1a201400), SPH_C32(0x03ef0674), SPH_C32(0x582ad619),
+	  SPH_C32(0x8c0dc437), SPH_C32(0xe0ad0800), SPH_C32(0xc347d815),
+	  SPH_C32(0x1f39b8a8), SPH_C32(0x4952b162) },
+	{ SPH_C32(0x81a31000), SPH_C32(0x21c8f9fc), SPH_C32(0x5d9d7b43),
+	  SPH_C32(0x21ff0307), SPH_C32(0x6f930c00), SPH_C32(0xceda1062),
+	  SPH_C32(0x70fcf049), SPH_C32(0xc0df9db4) },
+	{ SPH_C32(0x0e9d1400), SPH_C32(0x2c55318b), SPH_C32(0x325833a2),
+	  SPH_C32(0xa8722fd1), SPH_C32(0x7b2e0c00), SPH_C32(0xe160279d),
+	  SPH_C32(0x1a8e15f2), SPH_C32(0xe4a07652) },
+	{ SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd), SPH_C32(0x466ab43f),
+	  SPH_C32(0xa33f7777), SPH_C32(0x159b0800), SPH_C32(0xb8a46797),
+	  SPH_C32(0xca59dec0), SPH_C32(0x764b30f7) },
+	{ SPH_C32(0xc4121c00), SPH_C32(0x2b6c568a), SPH_C32(0x29affcde),
+	  SPH_C32(0x2ab25ba1), SPH_C32(0x01260800), SPH_C32(0x971e5068),
+	  SPH_C32(0xa02b3b7b), SPH_C32(0x5234db11) },
+	{ SPH_C32(0x5f911800), SPH_C32(0x094ba902), SPH_C32(0x2c185184),
+	  SPH_C32(0x87409c91), SPH_C32(0x8e180c00), SPH_C32(0x9a83981f),
+	  SPH_C32(0xcfee739a), SPH_C32(0xdbb9f7c7) },
+	{ SPH_C32(0xd0af1c00), SPH_C32(0x04d66175), SPH_C32(0x43dd1965),
+	  SPH_C32(0x0ecdb047), SPH_C32(0x9aa50c00), SPH_C32(0xb539afe0),
+	  SPH_C32(0xa59c9621), SPH_C32(0xffc61c21) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0x44970400), SPH_C32(0x9dbaff1e), SPH_C32(0xd419bce6),
+	  SPH_C32(0x597983b7), SPH_C32(0xab811000), SPH_C32(0xe5b646e8),
+	  SPH_C32(0x59530c97), SPH_C32(0xea6dc615) },
+	{ SPH_C32(0xdf140000), SPH_C32(0xbf9d0096), SPH_C32(0xd1ae11bc),
+	  SPH_C32(0xf48b4487), SPH_C32(0x24bf1400), SPH_C32(0xe82b8e9f),
+	  SPH_C32(0x36964476), SPH_C32(0x63e0eac3) },
+	{ SPH_C32(0x502a0400), SPH_C32(0xb200c8e1), SPH_C32(0xbe6b595d),
+	  SPH_C32(0x7d066851), SPH_C32(0x30021400), SPH_C32(0xc791b960),
+	  SPH_C32(0x5ce4a1cd), SPH_C32(0x479f0125) },
+	{ SPH_C32(0x159b0800), SPH_C32(0xb8a46797), SPH_C32(0xca59dec0),
+	  SPH_C32(0x764b30f7), SPH_C32(0x5eb71000), SPH_C32(0x9e55f96a),
+	  SPH_C32(0x8c336aff), SPH_C32(0xd5744780) },
+	{ SPH_C32(0x9aa50c00), SPH_C32(0xb539afe0), SPH_C32(0xa59c9621),
+	  SPH_C32(0xffc61c21), SPH_C32(0x4a0a1000), SPH_C32(0xb1efce95),
+	  SPH_C32(0xe6418f44), SPH_C32(0xf10bac66) },
+	{ SPH_C32(0x01260800), SPH_C32(0x971e5068), SPH_C32(0xa02b3b7b),
+	  SPH_C32(0x5234db11), SPH_C32(0xc5341400), SPH_C32(0xbc7206e2),
+	  SPH_C32(0x8984c7a5), SPH_C32(0x788680b0) },
+	{ SPH_C32(0x8e180c00), SPH_C32(0x9a83981f), SPH_C32(0xcfee739a),
+	  SPH_C32(0xdbb9f7c7), SPH_C32(0xd1891400), SPH_C32(0x93c8311d),
+	  SPH_C32(0xe3f6221e), SPH_C32(0x5cf96b56) },
+	{ SPH_C32(0x2a220000), SPH_C32(0xc47ebf14), SPH_C32(0x04ce77d4),
+	  SPH_C32(0xcb92c512), SPH_C32(0x80851800), SPH_C32(0xb6d6a994),
+	  SPH_C32(0xfdb64038), SPH_C32(0x73cbd816) },
+	{ SPH_C32(0xa51c0400), SPH_C32(0xc9e37763), SPH_C32(0x6b0b3f35),
+	  SPH_C32(0x421fe9c4), SPH_C32(0x94381800), SPH_C32(0x996c9e6b),
+	  SPH_C32(0x97c4a583), SPH_C32(0x57b433f0) },
+	{ SPH_C32(0x3e9f0000), SPH_C32(0xebc488eb), SPH_C32(0x6ebc926f),
+	  SPH_C32(0xefed2ef4), SPH_C32(0x1b061c00), SPH_C32(0x94f1561c),
+	  SPH_C32(0xf801ed62), SPH_C32(0xde391f26) },
+	{ SPH_C32(0xb1a10400), SPH_C32(0xe659409c), SPH_C32(0x0179da8e),
+	  SPH_C32(0x66600222), SPH_C32(0x0fbb1c00), SPH_C32(0xbb4b61e3),
+	  SPH_C32(0x927308d9), SPH_C32(0xfa46f4c0) },
+	{ SPH_C32(0xf4100800), SPH_C32(0xecfdefea), SPH_C32(0x754b5d13),
+	  SPH_C32(0x6d2d5a84), SPH_C32(0x610e1800), SPH_C32(0xe28f21e9),
+	  SPH_C32(0x42a4c3eb), SPH_C32(0x68adb265) },
+	{ SPH_C32(0x7b2e0c00), SPH_C32(0xe160279d), SPH_C32(0x1a8e15f2),
+	  SPH_C32(0xe4a07652), SPH_C32(0x75b31800), SPH_C32(0xcd351616),
+	  SPH_C32(0x28d62650), SPH_C32(0x4cd25983) },
+	{ SPH_C32(0xe0ad0800), SPH_C32(0xc347d815), SPH_C32(0x1f39b8a8),
+	  SPH_C32(0x4952b162), SPH_C32(0xfa8d1c00), SPH_C32(0xc0a8de61),
+	  SPH_C32(0x47136eb1), SPH_C32(0xc55f7555) },
+	{ SPH_C32(0x6f930c00), SPH_C32(0xceda1062), SPH_C32(0x70fcf049),
+	  SPH_C32(0xc0df9db4), SPH_C32(0xee301c00), SPH_C32(0xef12e99e),
+	  SPH_C32(0x2d618b0a), SPH_C32(0xe1209eb3) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) },
+	{ SPH_C32(0x30021400), SPH_C32(0xc791b960), SPH_C32(0x5ce4a1cd),
+	  SPH_C32(0x479f0125), SPH_C32(0x60281000), SPH_C32(0x75917181),
+	  SPH_C32(0xe28ff890), SPH_C32(0x3a996974) },
+	{ SPH_C32(0xab811000), SPH_C32(0xe5b646e8), SPH_C32(0x59530c97),
+	  SPH_C32(0xea6dc615), SPH_C32(0xef161400), SPH_C32(0x780cb9f6),
+	  SPH_C32(0x8d4ab071), SPH_C32(0xb31445a2) },
+	{ SPH_C32(0x24bf1400), SPH_C32(0xe82b8e9f), SPH_C32(0x36964476),
+	  SPH_C32(0x63e0eac3), SPH_C32(0xfbab1400), SPH_C32(0x57b68e09),
+	  SPH_C32(0xe73855ca), SPH_C32(0x976bae44) },
+	{ SPH_C32(0x610e1800), SPH_C32(0xe28f21e9), SPH_C32(0x42a4c3eb),
+	  SPH_C32(0x68adb265), SPH_C32(0x951e1000), SPH_C32(0x0e72ce03),
+	  SPH_C32(0x37ef9ef8), SPH_C32(0x0580e8e1) },
+	{ SPH_C32(0xee301c00), SPH_C32(0xef12e99e), SPH_C32(0x2d618b0a),
+	  SPH_C32(0xe1209eb3), SPH_C32(0x81a31000), SPH_C32(0x21c8f9fc),
+	  SPH_C32(0x5d9d7b43), SPH_C32(0x21ff0307) },
+	{ SPH_C32(0x75b31800), SPH_C32(0xcd351616), SPH_C32(0x28d62650),
+	  SPH_C32(0x4cd25983), SPH_C32(0x0e9d1400), SPH_C32(0x2c55318b),
+	  SPH_C32(0x325833a2), SPH_C32(0xa8722fd1) },
+	{ SPH_C32(0xfa8d1c00), SPH_C32(0xc0a8de61), SPH_C32(0x47136eb1),
+	  SPH_C32(0xc55f7555), SPH_C32(0x1a201400), SPH_C32(0x03ef0674),
+	  SPH_C32(0x582ad619), SPH_C32(0x8c0dc437) },
+	{ SPH_C32(0x5eb71000), SPH_C32(0x9e55f96a), SPH_C32(0x8c336aff),
+	  SPH_C32(0xd5744780), SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd),
+	  SPH_C32(0x466ab43f), SPH_C32(0xa33f7777) },
+	{ SPH_C32(0xd1891400), SPH_C32(0x93c8311d), SPH_C32(0xe3f6221e),
+	  SPH_C32(0x5cf96b56), SPH_C32(0x5f911800), SPH_C32(0x094ba902),
+	  SPH_C32(0x2c185184), SPH_C32(0x87409c91) },
+	{ SPH_C32(0x4a0a1000), SPH_C32(0xb1efce95), SPH_C32(0xe6418f44),
+	  SPH_C32(0xf10bac66), SPH_C32(0xd0af1c00), SPH_C32(0x04d66175),
+	  SPH_C32(0x43dd1965), SPH_C32(0x0ecdb047) },
+	{ SPH_C32(0xc5341400), SPH_C32(0xbc7206e2), SPH_C32(0x8984c7a5),
+	  SPH_C32(0x788680b0), SPH_C32(0xc4121c00), SPH_C32(0x2b6c568a),
+	  SPH_C32(0x29affcde), SPH_C32(0x2ab25ba1) },
+	{ SPH_C32(0x80851800), SPH_C32(0xb6d6a994), SPH_C32(0xfdb64038),
+	  SPH_C32(0x73cbd816), SPH_C32(0xaaa71800), SPH_C32(0x72a81680),
+	  SPH_C32(0xf97837ec), SPH_C32(0xb8591d04) },
+	{ SPH_C32(0x0fbb1c00), SPH_C32(0xbb4b61e3), SPH_C32(0x927308d9),
+	  SPH_C32(0xfa46f4c0), SPH_C32(0xbe1a1800), SPH_C32(0x5d12217f),
+	  SPH_C32(0x930ad257), SPH_C32(0x9c26f6e2) },
+	{ SPH_C32(0x94381800), SPH_C32(0x996c9e6b), SPH_C32(0x97c4a583),
+	  SPH_C32(0x57b433f0), SPH_C32(0x31241c00), SPH_C32(0x508fe908),
+	  SPH_C32(0xfccf9ab6), SPH_C32(0x15abda34) },
+	{ SPH_C32(0x1b061c00), SPH_C32(0x94f1561c), SPH_C32(0xf801ed62),
+	  SPH_C32(0xde391f26), SPH_C32(0x25991c00), SPH_C32(0x7f35def7),
+	  SPH_C32(0x96bd7f0d), SPH_C32(0x31d431d2) }
+};
+
+static const sph_u32 T256_12[64][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0xec760180), SPH_C32(0xcf102934), SPH_C32(0x474db4fe),
+	  SPH_C32(0x15a6d657), SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d),
+	  SPH_C32(0x73d31bdc), SPH_C32(0xd997dc7f) },
+	{ SPH_C32(0x8e020100), SPH_C32(0xc0a86233), SPH_C32(0x54c7d1e0),
+	  SPH_C32(0x51b6d04f), SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1),
+	  SPH_C32(0xb1177789), SPH_C32(0x2af56e4c) },
+	{ SPH_C32(0xd5d00180), SPH_C32(0x85a77adf), SPH_C32(0x9603bdb5),
+	  SPH_C32(0xa2d4627c), SPH_C32(0x289e0080), SPH_C32(0xd060bf3a),
+	  SPH_C32(0x60597ec2), SPH_C32(0x9d87da67) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0x289e0080), SPH_C32(0xd060bf3a), SPH_C32(0x60597ec2),
+	  SPH_C32(0x9d87da67), SPH_C32(0xfd4e0100), SPH_C32(0x55c7c5e5),
+	  SPH_C32(0xf65ac377), SPH_C32(0x3f53b81b) },
+	{ SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d), SPH_C32(0x73d31bdc),
+	  SPH_C32(0xd997dc7f), SPH_C32(0xa69c0180), SPH_C32(0x10c8dd09),
+	  SPH_C32(0x349eaf22), SPH_C32(0xcc310a28) },
+	{ SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1), SPH_C32(0xb1177789),
+	  SPH_C32(0x2af56e4c), SPH_C32(0x9f3a0180), SPH_C32(0x5a7f8ee2),
+	  SPH_C32(0xe5d0a669), SPH_C32(0x7b43be03) },
+	{ SPH_C32(0xc4e80100), SPH_C32(0x1f70960e), SPH_C32(0x2714ca3c),
+	  SPH_C32(0x88210c30), SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8),
+	  SPH_C32(0x8589d8ab), SPH_C32(0xe6c46464) },
+	{ SPH_C32(0x9f3a0180), SPH_C32(0x5a7f8ee2), SPH_C32(0xe5d0a669),
+	  SPH_C32(0x7b43be03), SPH_C32(0x8e020100), SPH_C32(0xc0a86233),
+	  SPH_C32(0x54c7d1e0), SPH_C32(0x51b6d04f) },
+	{ SPH_C32(0xfd4e0100), SPH_C32(0x55c7c5e5), SPH_C32(0xf65ac377),
+	  SPH_C32(0x3f53b81b), SPH_C32(0xd5d00180), SPH_C32(0x85a77adf),
+	  SPH_C32(0x9603bdb5), SPH_C32(0xa2d4627c) },
+	{ SPH_C32(0xa69c0180), SPH_C32(0x10c8dd09), SPH_C32(0x349eaf22),
+	  SPH_C32(0xcc310a28), SPH_C32(0xec760180), SPH_C32(0xcf102934),
+	  SPH_C32(0x474db4fe), SPH_C32(0x15a6d657) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xfc6a0280), SPH_C32(0x5a1d9cdf), SPH_C32(0xa22195a7),
+	  SPH_C32(0x6d76c745), SPH_C32(0xd7800000), SPH_C32(0x58fc3bd5),
+	  SPH_C32(0x518cdfc4), SPH_C32(0x8c811f07) },
+	{ SPH_C32(0x9e1e0200), SPH_C32(0x55a5d7d8), SPH_C32(0xb1abf0b9),
+	  SPH_C32(0x2966c15d), SPH_C32(0x8c520080), SPH_C32(0x1df32339),
+	  SPH_C32(0x9348b391), SPH_C32(0x7fe3ad34) },
+	{ SPH_C32(0xc5cc0280), SPH_C32(0x10aacf34), SPH_C32(0x736f9cec),
+	  SPH_C32(0xda04736e), SPH_C32(0xb5f40080), SPH_C32(0x574470d2),
+	  SPH_C32(0x4206bada), SPH_C32(0xc891191f) },
+	{ SPH_C32(0x101c0300), SPH_C32(0x950db5eb), SPH_C32(0xe56c2159),
+	  SPH_C32(0x78d01112), SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8),
+	  SPH_C32(0x225fc418), SPH_C32(0x5516c378) },
+	{ SPH_C32(0x4bce0380), SPH_C32(0xd002ad07), SPH_C32(0x27a84d0c),
+	  SPH_C32(0x8bb2a321), SPH_C32(0xa4cc0000), SPH_C32(0xcd939c03),
+	  SPH_C32(0xf311cd53), SPH_C32(0xe2647753) },
+	{ SPH_C32(0x29ba0300), SPH_C32(0xdfbae600), SPH_C32(0x34222812),
+	  SPH_C32(0xcfa2a539), SPH_C32(0xff1e0080), SPH_C32(0x889c84ef),
+	  SPH_C32(0x31d5a106), SPH_C32(0x1106c560) },
+	{ SPH_C32(0x72680380), SPH_C32(0x9ab5feec), SPH_C32(0xf6e64447),
+	  SPH_C32(0x3cc0170a), SPH_C32(0xc6b80080), SPH_C32(0xc22bd704),
+	  SPH_C32(0xe09ba84d), SPH_C32(0xa674714b) },
+	{ SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5), SPH_C32(0xc278eb65),
+	  SPH_C32(0xf0f11d22), SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30),
+	  SPH_C32(0xa7d61cb3), SPH_C32(0xb3d2a71c) },
+	{ SPH_C32(0x8f260280), SPH_C32(0xcf723b09), SPH_C32(0x00bc8730),
+	  SPH_C32(0x0393af11), SPH_C32(0x13680100), SPH_C32(0x478caddb),
+	  SPH_C32(0x769815f8), SPH_C32(0x04a01337) },
+	{ SPH_C32(0xed520200), SPH_C32(0xc0ca700e), SPH_C32(0x1336e22e),
+	  SPH_C32(0x4783a909), SPH_C32(0x48ba0180), SPH_C32(0x0283b537),
+	  SPH_C32(0xb45c79ad), SPH_C32(0xf7c2a104) },
+	{ SPH_C32(0xb6800280), SPH_C32(0x85c568e2), SPH_C32(0xd1f28e7b),
+	  SPH_C32(0xb4e11b3a), SPH_C32(0x711c0180), SPH_C32(0x4834e6dc),
+	  SPH_C32(0x651270e6), SPH_C32(0x40b0152f) },
+	{ SPH_C32(0x63500300), SPH_C32(0x0062123d), SPH_C32(0x47f133ce),
+	  SPH_C32(0x16357946), SPH_C32(0x59820100), SPH_C32(0x985459e6),
+	  SPH_C32(0x054b0e24), SPH_C32(0xdd37cf48) },
+	{ SPH_C32(0x38820380), SPH_C32(0x456d0ad1), SPH_C32(0x85355f9b),
+	  SPH_C32(0xe557cb75), SPH_C32(0x60240100), SPH_C32(0xd2e30a0d),
+	  SPH_C32(0xd405076f), SPH_C32(0x6a457b63) },
+	{ SPH_C32(0x5af60300), SPH_C32(0x4ad541d6), SPH_C32(0x96bf3a85),
+	  SPH_C32(0xa147cd6d), SPH_C32(0x3bf60180), SPH_C32(0x97ec12e1),
+	  SPH_C32(0x16c16b3a), SPH_C32(0x9927c950) },
+	{ SPH_C32(0x01240380), SPH_C32(0x0fda593a), SPH_C32(0x547b56d0),
+	  SPH_C32(0x52257f5e), SPH_C32(0x02500180), SPH_C32(0xdd5b410a),
+	  SPH_C32(0xc78f6271), SPH_C32(0x2e557d7b) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0xb5f40080), SPH_C32(0x574470d2), SPH_C32(0x4206bada),
+	  SPH_C32(0xc891191f), SPH_C32(0x70380200), SPH_C32(0x47eebfe6),
+	  SPH_C32(0x31692636), SPH_C32(0x12956a71) },
+	{ SPH_C32(0xd7800000), SPH_C32(0x58fc3bd5), SPH_C32(0x518cdfc4),
+	  SPH_C32(0x8c811f07), SPH_C32(0x2bea0280), SPH_C32(0x02e1a70a),
+	  SPH_C32(0xf3ad4a63), SPH_C32(0xe1f7d842) },
+	{ SPH_C32(0x8c520080), SPH_C32(0x1df32339), SPH_C32(0x9348b391),
+	  SPH_C32(0x7fe3ad34), SPH_C32(0x124c0280), SPH_C32(0x4856f4e1),
+	  SPH_C32(0x22e34328), SPH_C32(0x56856c69) },
+	{ SPH_C32(0x59820100), SPH_C32(0x985459e6), SPH_C32(0x054b0e24),
+	  SPH_C32(0xdd37cf48), SPH_C32(0x3ad20200), SPH_C32(0x98364bdb),
+	  SPH_C32(0x42ba3dea), SPH_C32(0xcb02b60e) },
+	{ SPH_C32(0x02500180), SPH_C32(0xdd5b410a), SPH_C32(0xc78f6271),
+	  SPH_C32(0x2e557d7b), SPH_C32(0x03740200), SPH_C32(0xd2811830),
+	  SPH_C32(0x93f434a1), SPH_C32(0x7c700225) },
+	{ SPH_C32(0x60240100), SPH_C32(0xd2e30a0d), SPH_C32(0xd405076f),
+	  SPH_C32(0x6a457b63), SPH_C32(0x58a60280), SPH_C32(0x978e00dc),
+	  SPH_C32(0x513058f4), SPH_C32(0x8f12b016) },
+	{ SPH_C32(0x3bf60180), SPH_C32(0x97ec12e1), SPH_C32(0x16c16b3a),
+	  SPH_C32(0x9927c950), SPH_C32(0x61000280), SPH_C32(0xdd395337),
+	  SPH_C32(0x807e51bf), SPH_C32(0x3860043d) },
+	{ SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8), SPH_C32(0x225fc418),
+	  SPH_C32(0x5516c378), SPH_C32(0x8d760300), SPH_C32(0x12297a03),
+	  SPH_C32(0xc733e541), SPH_C32(0x2dc6d26a) },
+	{ SPH_C32(0xc6b80080), SPH_C32(0xc22bd704), SPH_C32(0xe09ba84d),
+	  SPH_C32(0xa674714b), SPH_C32(0xb4d00300), SPH_C32(0x589e29e8),
+	  SPH_C32(0x167dec0a), SPH_C32(0x9ab46641) },
+	{ SPH_C32(0xa4cc0000), SPH_C32(0xcd939c03), SPH_C32(0xf311cd53),
+	  SPH_C32(0xe2647753), SPH_C32(0xef020380), SPH_C32(0x1d913104),
+	  SPH_C32(0xd4b9805f), SPH_C32(0x69d6d472) },
+	{ SPH_C32(0xff1e0080), SPH_C32(0x889c84ef), SPH_C32(0x31d5a106),
+	  SPH_C32(0x1106c560), SPH_C32(0xd6a40380), SPH_C32(0x572662ef),
+	  SPH_C32(0x05f78914), SPH_C32(0xdea46059) },
+	{ SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30), SPH_C32(0xa7d61cb3),
+	  SPH_C32(0xb3d2a71c), SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5),
+	  SPH_C32(0x65aef7d6), SPH_C32(0x4323ba3e) },
+	{ SPH_C32(0x711c0180), SPH_C32(0x4834e6dc), SPH_C32(0x651270e6),
+	  SPH_C32(0x40b0152f), SPH_C32(0xc79c0300), SPH_C32(0xcdf18e3e),
+	  SPH_C32(0xb4e0fe9d), SPH_C32(0xf4510e15) },
+	{ SPH_C32(0x13680100), SPH_C32(0x478caddb), SPH_C32(0x769815f8),
+	  SPH_C32(0x04a01337), SPH_C32(0x9c4e0380), SPH_C32(0x88fe96d2),
+	  SPH_C32(0x762492c8), SPH_C32(0x0733bc26) },
+	{ SPH_C32(0x48ba0180), SPH_C32(0x0283b537), SPH_C32(0xb45c79ad),
+	  SPH_C32(0xf7c2a104), SPH_C32(0xa5e80380), SPH_C32(0xc249c539),
+	  SPH_C32(0xa76a9b83), SPH_C32(0xb041080d) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0x124c0280), SPH_C32(0x4856f4e1), SPH_C32(0x22e34328),
+	  SPH_C32(0x56856c69), SPH_C32(0x9e1e0200), SPH_C32(0x55a5d7d8),
+	  SPH_C32(0xb1abf0b9), SPH_C32(0x2966c15d) },
+	{ SPH_C32(0x70380200), SPH_C32(0x47eebfe6), SPH_C32(0x31692636),
+	  SPH_C32(0x12956a71), SPH_C32(0xc5cc0280), SPH_C32(0x10aacf34),
+	  SPH_C32(0x736f9cec), SPH_C32(0xda04736e) },
+	{ SPH_C32(0x2bea0280), SPH_C32(0x02e1a70a), SPH_C32(0xf3ad4a63),
+	  SPH_C32(0xe1f7d842), SPH_C32(0xfc6a0280), SPH_C32(0x5a1d9cdf),
+	  SPH_C32(0xa22195a7), SPH_C32(0x6d76c745) },
+	{ SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5), SPH_C32(0x65aef7d6),
+	  SPH_C32(0x4323ba3e), SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5),
+	  SPH_C32(0xc278eb65), SPH_C32(0xf0f11d22) },
+	{ SPH_C32(0xa5e80380), SPH_C32(0xc249c539), SPH_C32(0xa76a9b83),
+	  SPH_C32(0xb041080d), SPH_C32(0xed520200), SPH_C32(0xc0ca700e),
+	  SPH_C32(0x1336e22e), SPH_C32(0x4783a909) },
+	{ SPH_C32(0xc79c0300), SPH_C32(0xcdf18e3e), SPH_C32(0xb4e0fe9d),
+	  SPH_C32(0xf4510e15), SPH_C32(0xb6800280), SPH_C32(0x85c568e2),
+	  SPH_C32(0xd1f28e7b), SPH_C32(0xb4e11b3a) },
+	{ SPH_C32(0x9c4e0380), SPH_C32(0x88fe96d2), SPH_C32(0x762492c8),
+	  SPH_C32(0x0733bc26), SPH_C32(0x8f260280), SPH_C32(0xcf723b09),
+	  SPH_C32(0x00bc8730), SPH_C32(0x0393af11) },
+	{ SPH_C32(0x3ad20200), SPH_C32(0x98364bdb), SPH_C32(0x42ba3dea),
+	  SPH_C32(0xcb02b60e), SPH_C32(0x63500300), SPH_C32(0x0062123d),
+	  SPH_C32(0x47f133ce), SPH_C32(0x16357946) },
+	{ SPH_C32(0x61000280), SPH_C32(0xdd395337), SPH_C32(0x807e51bf),
+	  SPH_C32(0x3860043d), SPH_C32(0x5af60300), SPH_C32(0x4ad541d6),
+	  SPH_C32(0x96bf3a85), SPH_C32(0xa147cd6d) },
+	{ SPH_C32(0x03740200), SPH_C32(0xd2811830), SPH_C32(0x93f434a1),
+	  SPH_C32(0x7c700225), SPH_C32(0x01240380), SPH_C32(0x0fda593a),
+	  SPH_C32(0x547b56d0), SPH_C32(0x52257f5e) },
+	{ SPH_C32(0x58a60280), SPH_C32(0x978e00dc), SPH_C32(0x513058f4),
+	  SPH_C32(0x8f12b016), SPH_C32(0x38820380), SPH_C32(0x456d0ad1),
+	  SPH_C32(0x85355f9b), SPH_C32(0xe557cb75) },
+	{ SPH_C32(0x8d760300), SPH_C32(0x12297a03), SPH_C32(0xc733e541),
+	  SPH_C32(0x2dc6d26a), SPH_C32(0x101c0300), SPH_C32(0x950db5eb),
+	  SPH_C32(0xe56c2159), SPH_C32(0x78d01112) },
+	{ SPH_C32(0xd6a40380), SPH_C32(0x572662ef), SPH_C32(0x05f78914),
+	  SPH_C32(0xdea46059), SPH_C32(0x29ba0300), SPH_C32(0xdfbae600),
+	  SPH_C32(0x34222812), SPH_C32(0xcfa2a539) },
+	{ SPH_C32(0xb4d00300), SPH_C32(0x589e29e8), SPH_C32(0x167dec0a),
+	  SPH_C32(0x9ab46641), SPH_C32(0x72680380), SPH_C32(0x9ab5feec),
+	  SPH_C32(0xf6e64447), SPH_C32(0x3cc0170a) },
+	{ SPH_C32(0xef020380), SPH_C32(0x1d913104), SPH_C32(0xd4b9805f),
+	  SPH_C32(0x69d6d472), SPH_C32(0x4bce0380), SPH_C32(0xd002ad07),
+	  SPH_C32(0x27a84d0c), SPH_C32(0x8bb2a321) }
+};
+
+static const sph_u32 T256_18[64][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9), SPH_C32(0x854e2bfb),
+	  SPH_C32(0x12be7119), SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d),
+	  SPH_C32(0xbcb34701), SPH_C32(0x30b21104) },
+	{ SPH_C32(0x724b0000), SPH_C32(0xad67ab9b), SPH_C32(0x457d0b05),
+	  SPH_C32(0xd21db1c4), SPH_C32(0x81af0030), SPH_C32(0x6c733c96),
+	  SPH_C32(0x40546103), SPH_C32(0x41e54165) },
+	{ SPH_C32(0x23170010), SPH_C32(0xed94d960), SPH_C32(0xb99a2d07),
+	  SPH_C32(0xa34ae1a5), SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f),
+	  SPH_C32(0x7c8067ff), SPH_C32(0xf011d1d9) },
+	{ SPH_C32(0xfeca0020), SPH_C32(0x485d28e4), SPH_C32(0x806741fd),
+	  SPH_C32(0x814681b8), SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6),
+	  SPH_C32(0xf9ce4c04), SPH_C32(0xe2afa0c0) },
+	{ SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f), SPH_C32(0x7c8067ff),
+	  SPH_C32(0xf011d1d9), SPH_C32(0x8c810020), SPH_C32(0xe53a837f),
+	  SPH_C32(0xc51a4af8), SPH_C32(0x535b307c) },
+	{ SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d), SPH_C32(0xbcb34701),
+	  SPH_C32(0x30b21104), SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184),
+	  SPH_C32(0x39fd6cfa), SPH_C32(0x220c601d) },
+	{ SPH_C32(0x81af0030), SPH_C32(0x6c733c96), SPH_C32(0x40546103),
+	  SPH_C32(0x41e54165), SPH_C32(0xf3e40030), SPH_C32(0xc114970d),
+	  SPH_C32(0x05296a06), SPH_C32(0x93f8f0a1) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x1c920050), SPH_C32(0x7ba89e85), SPH_C32(0xca824daa),
+	  SPH_C32(0x52346a64), SPH_C32(0x56920000), SPH_C32(0xc4103cbd),
+	  SPH_C32(0x6188a60b), SPH_C32(0xc3831477) },
+	{ SPH_C32(0x63f70040), SPH_C32(0x5f868af7), SPH_C32(0x0ab16d54),
+	  SPH_C32(0x9297aab9), SPH_C32(0x07ce0010), SPH_C32(0x84e34e46),
+	  SPH_C32(0x9d6f8009), SPH_C32(0xb2d44416) },
+	{ SPH_C32(0x32ab0050), SPH_C32(0x1f75f80c), SPH_C32(0xf6564b56),
+	  SPH_C32(0xe3c0fad8), SPH_C32(0x29f70010), SPH_C32(0xe03e28cf),
+	  SPH_C32(0xa1bb86f5), SPH_C32(0x0320d4aa) },
+	{ SPH_C32(0xef760060), SPH_C32(0xbabc0988), SPH_C32(0xcfab27ac),
+	  SPH_C32(0xc1cc9ac5), SPH_C32(0x24d90000), SPH_C32(0x69779726),
+	  SPH_C32(0x24f5ad0e), SPH_C32(0x119ea5b3) },
+	{ SPH_C32(0xbe2a0070), SPH_C32(0xfa4f7b73), SPH_C32(0x334c01ae),
+	  SPH_C32(0xb09bcaa4), SPH_C32(0x0ae00000), SPH_C32(0x0daaf1af),
+	  SPH_C32(0x1821abf2), SPH_C32(0xa06a350f) },
+	{ SPH_C32(0xc14f0060), SPH_C32(0xde616f01), SPH_C32(0xf37f2150),
+	  SPH_C32(0x70380a79), SPH_C32(0x5bbc0010), SPH_C32(0x4d598354),
+	  SPH_C32(0xe4c68df0), SPH_C32(0xd13d656e) },
+	{ SPH_C32(0x90130070), SPH_C32(0x9e921dfa), SPH_C32(0x0f980752),
+	  SPH_C32(0x016f5a18), SPH_C32(0x75850010), SPH_C32(0x2984e5dd),
+	  SPH_C32(0xd8128b0c), SPH_C32(0x60c9f5d2) },
+	{ SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c), SPH_C32(0x4fcc6651),
+	  SPH_C32(0x408a1b7d), SPH_C32(0x86610020), SPH_C32(0xe89072d0),
+	  SPH_C32(0xdd3be10a), SPH_C32(0xf3310573) },
+	{ SPH_C32(0x40e00050), SPH_C32(0xb2125397), SPH_C32(0xb32b4053),
+	  SPH_C32(0x31dd4b1c), SPH_C32(0xa8580020), SPH_C32(0x8c4d1459),
+	  SPH_C32(0xe1efe7f6), SPH_C32(0x42c595cf) },
+	{ SPH_C32(0x3f850040), SPH_C32(0x963c47e5), SPH_C32(0x731860ad),
+	  SPH_C32(0xf17e8bc1), SPH_C32(0xf9040030), SPH_C32(0xccbe66a2),
+	  SPH_C32(0x1d08c1f4), SPH_C32(0x3392c5ae) },
+	{ SPH_C32(0x6ed90050), SPH_C32(0xd6cf351e), SPH_C32(0x8fff46af),
+	  SPH_C32(0x8029dba0), SPH_C32(0xd73d0030), SPH_C32(0xa863002b),
+	  SPH_C32(0x21dcc708), SPH_C32(0x82665512) },
+	{ SPH_C32(0xb3040060), SPH_C32(0x7306c49a), SPH_C32(0xb6022a55),
+	  SPH_C32(0xa225bbbd), SPH_C32(0xda130020), SPH_C32(0x212abfc2),
+	  SPH_C32(0xa492ecf3), SPH_C32(0x90d8240b) },
+	{ SPH_C32(0xe2580070), SPH_C32(0x33f5b661), SPH_C32(0x4ae50c57),
+	  SPH_C32(0xd372ebdc), SPH_C32(0xf42a0020), SPH_C32(0x45f7d94b),
+	  SPH_C32(0x9846ea0f), SPH_C32(0x212cb4b7) },
+	{ SPH_C32(0x9d3d0060), SPH_C32(0x17dba213), SPH_C32(0x8ad62ca9),
+	  SPH_C32(0x13d12b01), SPH_C32(0xa5760030), SPH_C32(0x0504abb0),
+	  SPH_C32(0x64a1cc0d), SPH_C32(0x507be4d6) },
+	{ SPH_C32(0xcc610070), SPH_C32(0x5728d0e8), SPH_C32(0x76310aab),
+	  SPH_C32(0x62867b60), SPH_C32(0x8b4f0030), SPH_C32(0x61d9cd39),
+	  SPH_C32(0x5875caf1), SPH_C32(0xe18f746a) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x29f70010), SPH_C32(0xe03e28cf), SPH_C32(0xa1bb86f5),
+	  SPH_C32(0x0320d4aa), SPH_C32(0x1b5c0040), SPH_C32(0xff4bd0c3),
+	  SPH_C32(0x57edcda3), SPH_C32(0xe0e02e72) },
+	{ SPH_C32(0x56920000), SPH_C32(0xc4103cbd), SPH_C32(0x6188a60b),
+	  SPH_C32(0xc3831477), SPH_C32(0x4a000050), SPH_C32(0xbfb8a238),
+	  SPH_C32(0xab0aeba1), SPH_C32(0x91b77e13) },
+	{ SPH_C32(0x07ce0010), SPH_C32(0x84e34e46), SPH_C32(0x9d6f8009),
+	  SPH_C32(0xb2d44416), SPH_C32(0x64390050), SPH_C32(0xdb65c4b1),
+	  SPH_C32(0x97deed5d), SPH_C32(0x2043eeaf) },
+	{ SPH_C32(0xda130020), SPH_C32(0x212abfc2), SPH_C32(0xa492ecf3),
+	  SPH_C32(0x90d8240b), SPH_C32(0x69170040), SPH_C32(0x522c7b58),
+	  SPH_C32(0x1290c6a6), SPH_C32(0x32fd9fb6) },
+	{ SPH_C32(0x8b4f0030), SPH_C32(0x61d9cd39), SPH_C32(0x5875caf1),
+	  SPH_C32(0xe18f746a), SPH_C32(0x472e0040), SPH_C32(0x36f11dd1),
+	  SPH_C32(0x2e44c05a), SPH_C32(0x83090f0a) },
+	{ SPH_C32(0xf42a0020), SPH_C32(0x45f7d94b), SPH_C32(0x9846ea0f),
+	  SPH_C32(0x212cb4b7), SPH_C32(0x16720050), SPH_C32(0x76026f2a),
+	  SPH_C32(0xd2a3e658), SPH_C32(0xf25e5f6b) },
+	{ SPH_C32(0xa5760030), SPH_C32(0x0504abb0), SPH_C32(0x64a1cc0d),
+	  SPH_C32(0x507be4d6), SPH_C32(0x384b0050), SPH_C32(0x12df09a3),
+	  SPH_C32(0xee77e0a4), SPH_C32(0x43aacfd7) },
+	{ SPH_C32(0x24d90000), SPH_C32(0x69779726), SPH_C32(0x24f5ad0e),
+	  SPH_C32(0x119ea5b3), SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae),
+	  SPH_C32(0xeb5e8aa2), SPH_C32(0xd0523f76) },
+	{ SPH_C32(0x75850010), SPH_C32(0x2984e5dd), SPH_C32(0xd8128b0c),
+	  SPH_C32(0x60c9f5d2), SPH_C32(0xe5960060), SPH_C32(0xb716f827),
+	  SPH_C32(0xd78a8c5e), SPH_C32(0x61a6afca) },
+	{ SPH_C32(0x0ae00000), SPH_C32(0x0daaf1af), SPH_C32(0x1821abf2),
+	  SPH_C32(0xa06a350f), SPH_C32(0xb4ca0070), SPH_C32(0xf7e58adc),
+	  SPH_C32(0x2b6daa5c), SPH_C32(0x10f1ffab) },
+	{ SPH_C32(0x5bbc0010), SPH_C32(0x4d598354), SPH_C32(0xe4c68df0),
+	  SPH_C32(0xd13d656e), SPH_C32(0x9af30070), SPH_C32(0x9338ec55),
+	  SPH_C32(0x17b9aca0), SPH_C32(0xa1056f17) },
+	{ SPH_C32(0x86610020), SPH_C32(0xe89072d0), SPH_C32(0xdd3be10a),
+	  SPH_C32(0xf3310573), SPH_C32(0x97dd0060), SPH_C32(0x1a7153bc),
+	  SPH_C32(0x92f7875b), SPH_C32(0xb3bb1e0e) },
+	{ SPH_C32(0xd73d0030), SPH_C32(0xa863002b), SPH_C32(0x21dcc708),
+	  SPH_C32(0x82665512), SPH_C32(0xb9e40060), SPH_C32(0x7eac3535),
+	  SPH_C32(0xae2381a7), SPH_C32(0x024f8eb2) },
+	{ SPH_C32(0xa8580020), SPH_C32(0x8c4d1459), SPH_C32(0xe1efe7f6),
+	  SPH_C32(0x42c595cf), SPH_C32(0xe8b80070), SPH_C32(0x3e5f47ce),
+	  SPH_C32(0x52c4a7a5), SPH_C32(0x7318ded3) },
+	{ SPH_C32(0xf9040030), SPH_C32(0xccbe66a2), SPH_C32(0x1d08c1f4),
+	  SPH_C32(0x3392c5ae), SPH_C32(0xc6810070), SPH_C32(0x5a822147),
+	  SPH_C32(0x6e10a159), SPH_C32(0xc2ec4e6f) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x64390050), SPH_C32(0xdb65c4b1), SPH_C32(0x97deed5d),
+	  SPH_C32(0x2043eeaf), SPH_C32(0x63f70040), SPH_C32(0x5f868af7),
+	  SPH_C32(0x0ab16d54), SPH_C32(0x9297aab9) },
+	{ SPH_C32(0x1b5c0040), SPH_C32(0xff4bd0c3), SPH_C32(0x57edcda3),
+	  SPH_C32(0xe0e02e72), SPH_C32(0x32ab0050), SPH_C32(0x1f75f80c),
+	  SPH_C32(0xf6564b56), SPH_C32(0xe3c0fad8) },
+	{ SPH_C32(0x4a000050), SPH_C32(0xbfb8a238), SPH_C32(0xab0aeba1),
+	  SPH_C32(0x91b77e13), SPH_C32(0x1c920050), SPH_C32(0x7ba89e85),
+	  SPH_C32(0xca824daa), SPH_C32(0x52346a64) },
+	{ SPH_C32(0x97dd0060), SPH_C32(0x1a7153bc), SPH_C32(0x92f7875b),
+	  SPH_C32(0xb3bb1e0e), SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c),
+	  SPH_C32(0x4fcc6651), SPH_C32(0x408a1b7d) },
+	{ SPH_C32(0xc6810070), SPH_C32(0x5a822147), SPH_C32(0x6e10a159),
+	  SPH_C32(0xc2ec4e6f), SPH_C32(0x3f850040), SPH_C32(0x963c47e5),
+	  SPH_C32(0x731860ad), SPH_C32(0xf17e8bc1) },
+	{ SPH_C32(0xb9e40060), SPH_C32(0x7eac3535), SPH_C32(0xae2381a7),
+	  SPH_C32(0x024f8eb2), SPH_C32(0x6ed90050), SPH_C32(0xd6cf351e),
+	  SPH_C32(0x8fff46af), SPH_C32(0x8029dba0) },
+	{ SPH_C32(0xe8b80070), SPH_C32(0x3e5f47ce), SPH_C32(0x52c4a7a5),
+	  SPH_C32(0x7318ded3), SPH_C32(0x40e00050), SPH_C32(0xb2125397),
+	  SPH_C32(0xb32b4053), SPH_C32(0x31dd4b1c) },
+	{ SPH_C32(0x69170040), SPH_C32(0x522c7b58), SPH_C32(0x1290c6a6),
+	  SPH_C32(0x32fd9fb6), SPH_C32(0xb3040060), SPH_C32(0x7306c49a),
+	  SPH_C32(0xb6022a55), SPH_C32(0xa225bbbd) },
+	{ SPH_C32(0x384b0050), SPH_C32(0x12df09a3), SPH_C32(0xee77e0a4),
+	  SPH_C32(0x43aacfd7), SPH_C32(0x9d3d0060), SPH_C32(0x17dba213),
+	  SPH_C32(0x8ad62ca9), SPH_C32(0x13d12b01) },
+	{ SPH_C32(0x472e0040), SPH_C32(0x36f11dd1), SPH_C32(0x2e44c05a),
+	  SPH_C32(0x83090f0a), SPH_C32(0xcc610070), SPH_C32(0x5728d0e8),
+	  SPH_C32(0x76310aab), SPH_C32(0x62867b60) },
+	{ SPH_C32(0x16720050), SPH_C32(0x76026f2a), SPH_C32(0xd2a3e658),
+	  SPH_C32(0xf25e5f6b), SPH_C32(0xe2580070), SPH_C32(0x33f5b661),
+	  SPH_C32(0x4ae50c57), SPH_C32(0xd372ebdc) },
+	{ SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae), SPH_C32(0xeb5e8aa2),
+	  SPH_C32(0xd0523f76), SPH_C32(0xef760060), SPH_C32(0xbabc0988),
+	  SPH_C32(0xcfab27ac), SPH_C32(0xc1cc9ac5) },
+	{ SPH_C32(0x9af30070), SPH_C32(0x9338ec55), SPH_C32(0x17b9aca0),
+	  SPH_C32(0xa1056f17), SPH_C32(0xc14f0060), SPH_C32(0xde616f01),
+	  SPH_C32(0xf37f2150), SPH_C32(0x70380a79) },
+	{ SPH_C32(0xe5960060), SPH_C32(0xb716f827), SPH_C32(0xd78a8c5e),
+	  SPH_C32(0x61a6afca), SPH_C32(0x90130070), SPH_C32(0x9e921dfa),
+	  SPH_C32(0x0f980752), SPH_C32(0x016f5a18) },
+	{ SPH_C32(0xb4ca0070), SPH_C32(0xf7e58adc), SPH_C32(0x2b6daa5c),
+	  SPH_C32(0x10f1ffab), SPH_C32(0xbe2a0070), SPH_C32(0xfa4f7b73),
+	  SPH_C32(0x334c01ae), SPH_C32(0xb09bcaa4) }
+};
+
+static const sph_u32 T256_24[64][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x582b0006), SPH_C32(0xd39128c4), SPH_C32(0x042035fa),
+	  SPH_C32(0x223fde2b), SPH_C32(0x3a050000), SPH_C32(0x6508f6be),
+	  SPH_C32(0xe1d03671), SPH_C32(0x64347a75) },
+	{ SPH_C32(0x81a40004), SPH_C32(0xa9958063), SPH_C32(0xe4279a1c),
+	  SPH_C32(0xbdd2949c), SPH_C32(0xb2260002), SPH_C32(0x3aef510d),
+	  SPH_C32(0x7835b3db), SPH_C32(0xe9418d84) },
+	{ SPH_C32(0x09870006), SPH_C32(0xf67227d0), SPH_C32(0x7dc21fb6),
+	  SPH_C32(0x30a7636d), SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19),
+	  SPH_C32(0x01d79997), SPH_C32(0xfbd930c2) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19), SPH_C32(0x01d79997),
+	  SPH_C32(0xfbd930c2), SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9),
+	  SPH_C32(0x7c158621), SPH_C32(0xcb7e53af) },
+	{ SPH_C32(0x3a050000), SPH_C32(0x6508f6be), SPH_C32(0xe1d03671),
+	  SPH_C32(0x64347a75), SPH_C32(0x622e0006), SPH_C32(0xb699de7a),
+	  SPH_C32(0xe5f0038b), SPH_C32(0x460ba45e) },
+	{ SPH_C32(0xb2260002), SPH_C32(0x3aef510d), SPH_C32(0x7835b3db),
+	  SPH_C32(0xe9418d84), SPH_C32(0x33820006), SPH_C32(0x937ad16e),
+	  SPH_C32(0x9c1229c7), SPH_C32(0x54931918) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) },
+	{ SPH_C32(0x33820006), SPH_C32(0x937ad16e), SPH_C32(0x9c1229c7),
+	  SPH_C32(0x54931918), SPH_C32(0x81a40004), SPH_C32(0xa9958063),
+	  SPH_C32(0xe4279a1c), SPH_C32(0xbdd2949c) },
+	{ SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9), SPH_C32(0x7c158621),
+	  SPH_C32(0xcb7e53af), SPH_C32(0x09870006), SPH_C32(0xf67227d0),
+	  SPH_C32(0x7dc21fb6), SPH_C32(0x30a7636d) },
+	{ SPH_C32(0x622e0006), SPH_C32(0xb699de7a), SPH_C32(0xe5f0038b),
+	  SPH_C32(0x460ba45e), SPH_C32(0x582b0006), SPH_C32(0xd39128c4),
+	  SPH_C32(0x042035fa), SPH_C32(0x223fde2b) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x208d000a), SPH_C32(0x7f9e9ece), SPH_C32(0x679616ab),
+	  SPH_C32(0x35dcdfc0), SPH_C32(0x46b00000), SPH_C32(0x978d3c50),
+	  SPH_C32(0xe788a932), SPH_C32(0x4a60f519) },
+	{ SPH_C32(0xf9020008), SPH_C32(0x059a3669), SPH_C32(0x8791b94d),
+	  SPH_C32(0xaa319577), SPH_C32(0xce930002), SPH_C32(0xc86a9be3),
+	  SPH_C32(0x7e6d2c98), SPH_C32(0xc71502e8) },
+	{ SPH_C32(0x7121000a), SPH_C32(0x5a7d91da), SPH_C32(0x1e743ce7),
+	  SPH_C32(0x27446286), SPH_C32(0x9f3f0002), SPH_C32(0xed8994f7),
+	  SPH_C32(0x078f06d4), SPH_C32(0xd58dbfae) },
+	{ SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a), SPH_C32(0x63b62351),
+	  SPH_C32(0x17e301eb), SPH_C32(0x7cb50000), SPH_C32(0xf285caee),
+	  SPH_C32(0x06589f43), SPH_C32(0x2e548f6c) },
+	{ SPH_C32(0xf085000e), SPH_C32(0xf3e811b9), SPH_C32(0xfa53a6fb),
+	  SPH_C32(0x9a96f61a), SPH_C32(0x2d190000), SPH_C32(0xd766c5fa),
+	  SPH_C32(0x7fbab50f), SPH_C32(0x3ccc322a) },
+	{ SPH_C32(0x290a000c), SPH_C32(0x89ecb91e), SPH_C32(0x1a54091d),
+	  SPH_C32(0x057bbcad), SPH_C32(0xa53a0002), SPH_C32(0x88816249),
+	  SPH_C32(0xe65f30a5), SPH_C32(0xb1b9c5db) },
+	{ SPH_C32(0xa129000e), SPH_C32(0xd60b1ead), SPH_C32(0x83b18cb7),
+	  SPH_C32(0x880e4b5c), SPH_C32(0xf4960002), SPH_C32(0xad626d5d),
+	  SPH_C32(0x9fbd1ae9), SPH_C32(0xa321789d) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x4b24000a), SPH_C32(0x3f756764), SPH_C32(0xffa40a96),
+	  SPH_C32(0x437018f3), SPH_C32(0xfd110004), SPH_C32(0x5b104a8d),
+	  SPH_C32(0xe27f055f), SPH_C32(0x93861bf0) },
+	{ SPH_C32(0x92ab0008), SPH_C32(0x4571cfc3), SPH_C32(0x1fa3a570),
+	  SPH_C32(0xdc9d5244), SPH_C32(0x75320006), SPH_C32(0x04f7ed3e),
+	  SPH_C32(0x7b9a80f5), SPH_C32(0x1ef3ec01) },
+	{ SPH_C32(0x1a88000a), SPH_C32(0x1a966870), SPH_C32(0x864620da),
+	  SPH_C32(0x51e8a5b5), SPH_C32(0x249e0006), SPH_C32(0x2114e22a),
+	  SPH_C32(0x0278aab9), SPH_C32(0x0c6b5147) },
+	{ SPH_C32(0x130f000c), SPH_C32(0xece44fa0), SPH_C32(0xfb843f6c),
+	  SPH_C32(0x614fc6d8), SPH_C32(0xc7140004), SPH_C32(0x3e18bc33),
+	  SPH_C32(0x03af332e), SPH_C32(0xf7b26185) },
+	{ SPH_C32(0x9b2c000e), SPH_C32(0xb303e813), SPH_C32(0x6261bac6),
+	  SPH_C32(0xec3a3129), SPH_C32(0x96b80004), SPH_C32(0x1bfbb327),
+	  SPH_C32(0x7a4d1962), SPH_C32(0xe52adcc3) },
+	{ SPH_C32(0x42a3000c), SPH_C32(0xc90740b4), SPH_C32(0x82661520),
+	  SPH_C32(0x73d77b9e), SPH_C32(0x1e9b0006), SPH_C32(0x441c1494),
+	  SPH_C32(0xe3a89cc8), SPH_C32(0x685f2b32) },
+	{ SPH_C32(0xca80000e), SPH_C32(0x96e0e707), SPH_C32(0x1b83908a),
+	  SPH_C32(0xfea28c6f), SPH_C32(0x4f370006), SPH_C32(0x61ff1b80),
+	  SPH_C32(0x9a4ab684), SPH_C32(0x7ac79674) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0x9f3f0002), SPH_C32(0xed8994f7), SPH_C32(0x078f06d4),
+	  SPH_C32(0xd58dbfae), SPH_C32(0xee1e0008), SPH_C32(0xb7f4052d),
+	  SPH_C32(0x19fb3a33), SPH_C32(0xf2c9dd28) },
+	{ SPH_C32(0x46b00000), SPH_C32(0x978d3c50), SPH_C32(0xe788a932),
+	  SPH_C32(0x4a60f519), SPH_C32(0x663d000a), SPH_C32(0xe813a29e),
+	  SPH_C32(0x801ebf99), SPH_C32(0x7fbc2ad9) },
+	{ SPH_C32(0xce930002), SPH_C32(0xc86a9be3), SPH_C32(0x7e6d2c98),
+	  SPH_C32(0xc71502e8), SPH_C32(0x3791000a), SPH_C32(0xcdf0ad8a),
+	  SPH_C32(0xf9fc95d5), SPH_C32(0x6d24979f) },
+	{ SPH_C32(0xc7140004), SPH_C32(0x3e18bc33), SPH_C32(0x03af332e),
+	  SPH_C32(0xf7b26185), SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393),
+	  SPH_C32(0xf82b0c42), SPH_C32(0x96fda75d) },
+	{ SPH_C32(0x4f370006), SPH_C32(0x61ff1b80), SPH_C32(0x9a4ab684),
+	  SPH_C32(0x7ac79674), SPH_C32(0x85b70008), SPH_C32(0xf71ffc87),
+	  SPH_C32(0x81c9260e), SPH_C32(0x84651a1b) },
+	{ SPH_C32(0x96b80004), SPH_C32(0x1bfbb327), SPH_C32(0x7a4d1962),
+	  SPH_C32(0xe52adcc3), SPH_C32(0x0d94000a), SPH_C32(0xa8f85b34),
+	  SPH_C32(0x182ca3a4), SPH_C32(0x0910edea) },
+	{ SPH_C32(0x1e9b0006), SPH_C32(0x441c1494), SPH_C32(0xe3a89cc8),
+	  SPH_C32(0x685f2b32), SPH_C32(0x5c38000a), SPH_C32(0x8d1b5420),
+	  SPH_C32(0x61ce89e8), SPH_C32(0x1b8850ac) },
+	{ SPH_C32(0x7cb50000), SPH_C32(0xf285caee), SPH_C32(0x06589f43),
+	  SPH_C32(0x2e548f6c), SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4),
+	  SPH_C32(0x65eebc12), SPH_C32(0x39b78e87) },
+	{ SPH_C32(0xf4960002), SPH_C32(0xad626d5d), SPH_C32(0x9fbd1ae9),
+	  SPH_C32(0xa321789d), SPH_C32(0x55bf000c), SPH_C32(0x7b6973f0),
+	  SPH_C32(0x1c0c965e), SPH_C32(0x2b2f33c1) },
+	{ SPH_C32(0x2d190000), SPH_C32(0xd766c5fa), SPH_C32(0x7fbab50f),
+	  SPH_C32(0x3ccc322a), SPH_C32(0xdd9c000e), SPH_C32(0x248ed443),
+	  SPH_C32(0x85e913f4), SPH_C32(0xa65ac430) },
+	{ SPH_C32(0xa53a0002), SPH_C32(0x88816249), SPH_C32(0xe65f30a5),
+	  SPH_C32(0xb1b9c5db), SPH_C32(0x8c30000e), SPH_C32(0x016ddb57),
+	  SPH_C32(0xfc0b39b8), SPH_C32(0xb4c27976) },
+	{ SPH_C32(0xacbd0004), SPH_C32(0x7ef34599), SPH_C32(0x9b9d2f13),
+	  SPH_C32(0x811ea6b6), SPH_C32(0x6fba000c), SPH_C32(0x1e61854e),
+	  SPH_C32(0xfddca02f), SPH_C32(0x4f1b49b4) },
+	{ SPH_C32(0x249e0006), SPH_C32(0x2114e22a), SPH_C32(0x0278aab9),
+	  SPH_C32(0x0c6b5147), SPH_C32(0x3e16000c), SPH_C32(0x3b828a5a),
+	  SPH_C32(0x843e8a63), SPH_C32(0x5d83f4f2) },
+	{ SPH_C32(0xfd110004), SPH_C32(0x5b104a8d), SPH_C32(0xe27f055f),
+	  SPH_C32(0x93861bf0), SPH_C32(0xb635000e), SPH_C32(0x64652de9),
+	  SPH_C32(0x1ddb0fc9), SPH_C32(0xd0f60303) },
+	{ SPH_C32(0x75320006), SPH_C32(0x04f7ed3e), SPH_C32(0x7b9a80f5),
+	  SPH_C32(0x1ef3ec01), SPH_C32(0xe799000e), SPH_C32(0x418622fd),
+	  SPH_C32(0x64392585), SPH_C32(0xc26ebe45) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) },
+	{ SPH_C32(0x3791000a), SPH_C32(0xcdf0ad8a), SPH_C32(0xf9fc95d5),
+	  SPH_C32(0x6d24979f), SPH_C32(0xf9020008), SPH_C32(0x059a3669),
+	  SPH_C32(0x8791b94d), SPH_C32(0xaa319577) },
+	{ SPH_C32(0xee1e0008), SPH_C32(0xb7f4052d), SPH_C32(0x19fb3a33),
+	  SPH_C32(0xf2c9dd28), SPH_C32(0x7121000a), SPH_C32(0x5a7d91da),
+	  SPH_C32(0x1e743ce7), SPH_C32(0x27446286) },
+	{ SPH_C32(0x663d000a), SPH_C32(0xe813a29e), SPH_C32(0x801ebf99),
+	  SPH_C32(0x7fbc2ad9), SPH_C32(0x208d000a), SPH_C32(0x7f9e9ece),
+	  SPH_C32(0x679616ab), SPH_C32(0x35dcdfc0) },
+	{ SPH_C32(0x6fba000c), SPH_C32(0x1e61854e), SPH_C32(0xfddca02f),
+	  SPH_C32(0x4f1b49b4), SPH_C32(0xc3070008), SPH_C32(0x6092c0d7),
+	  SPH_C32(0x66418f3c), SPH_C32(0xce05ef02) },
+	{ SPH_C32(0xe799000e), SPH_C32(0x418622fd), SPH_C32(0x64392585),
+	  SPH_C32(0xc26ebe45), SPH_C32(0x92ab0008), SPH_C32(0x4571cfc3),
+	  SPH_C32(0x1fa3a570), SPH_C32(0xdc9d5244) },
+	{ SPH_C32(0x3e16000c), SPH_C32(0x3b828a5a), SPH_C32(0x843e8a63),
+	  SPH_C32(0x5d83f4f2), SPH_C32(0x1a88000a), SPH_C32(0x1a966870),
+	  SPH_C32(0x864620da), SPH_C32(0x51e8a5b5) },
+	{ SPH_C32(0xb635000e), SPH_C32(0x64652de9), SPH_C32(0x1ddb0fc9),
+	  SPH_C32(0xd0f60303), SPH_C32(0x4b24000a), SPH_C32(0x3f756764),
+	  SPH_C32(0xffa40a96), SPH_C32(0x437018f3) },
+	{ SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393), SPH_C32(0xf82b0c42),
+	  SPH_C32(0x96fda75d), SPH_C32(0x130f000c), SPH_C32(0xece44fa0),
+	  SPH_C32(0xfb843f6c), SPH_C32(0x614fc6d8) },
+	{ SPH_C32(0x5c38000a), SPH_C32(0x8d1b5420), SPH_C32(0x61ce89e8),
+	  SPH_C32(0x1b8850ac), SPH_C32(0x42a3000c), SPH_C32(0xc90740b4),
+	  SPH_C32(0x82661520), SPH_C32(0x73d77b9e) },
+	{ SPH_C32(0x85b70008), SPH_C32(0xf71ffc87), SPH_C32(0x81c9260e),
+	  SPH_C32(0x84651a1b), SPH_C32(0xca80000e), SPH_C32(0x96e0e707),
+	  SPH_C32(0x1b83908a), SPH_C32(0xfea28c6f) },
+	{ SPH_C32(0x0d94000a), SPH_C32(0xa8f85b34), SPH_C32(0x182ca3a4),
+	  SPH_C32(0x0910edea), SPH_C32(0x9b2c000e), SPH_C32(0xb303e813),
+	  SPH_C32(0x6261bac6), SPH_C32(0xec3a3129) },
+	{ SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4), SPH_C32(0x65eebc12),
+	  SPH_C32(0x39b78e87), SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a),
+	  SPH_C32(0x63b62351), SPH_C32(0x17e301eb) },
+	{ SPH_C32(0x8c30000e), SPH_C32(0x016ddb57), SPH_C32(0xfc0b39b8),
+	  SPH_C32(0xb4c27976), SPH_C32(0x290a000c), SPH_C32(0x89ecb91e),
+	  SPH_C32(0x1a54091d), SPH_C32(0x057bbcad) },
+	{ SPH_C32(0x55bf000c), SPH_C32(0x7b6973f0), SPH_C32(0x1c0c965e),
+	  SPH_C32(0x2b2f33c1), SPH_C32(0xa129000e), SPH_C32(0xd60b1ead),
+	  SPH_C32(0x83b18cb7), SPH_C32(0x880e4b5c) },
+	{ SPH_C32(0xdd9c000e), SPH_C32(0x248ed443), SPH_C32(0x85e913f4),
+	  SPH_C32(0xa65ac430), SPH_C32(0xf085000e), SPH_C32(0xf3e811b9),
+	  SPH_C32(0xfa53a6fb), SPH_C32(0x9a96f61a) }
+};
+
+static const sph_u32 T256_30[4][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 2][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T256_6[(acc >> 4) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T256_12[(acc >> 6) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_18[acc & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[3]; \
+		rp = &T256_24[acc >> 2][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_30[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 7
+
+static const sph_u32 T256_0[128][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x22832000), SPH_C32(0x2470bb95), SPH_C32(0xaa26ce50),
+	  SPH_C32(0xed3daa45), SPH_C32(0x286f1000), SPH_C32(0xea431fc4),
+	  SPH_C32(0x44980123), SPH_C32(0x6ffe7332) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba), SPH_C32(0xcc651c08),
+	  SPH_C32(0x7118f1a0), SPH_C32(0xc1453000), SPH_C32(0x5e149338),
+	  SPH_C32(0x55623b74), SPH_C32(0x52377616) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) },
+	{ SPH_C32(0xb5d02000), SPH_C32(0x043fd546), SPH_C32(0xdd9f265f),
+	  SPH_C32(0x4cd1f484), SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb),
+	  SPH_C32(0x22dbd37b), SPH_C32(0xf3db28d7) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0xd9b24000), SPH_C32(0xcb30ee81), SPH_C32(0x36263bac),
+	  SPH_C32(0x1ec26313), SPH_C32(0x596b1000), SPH_C32(0x81bf4b32),
+	  SPH_C32(0xb7a47196), SPH_C32(0xde532dcd) },
+	{ SPH_C32(0xfb316000), SPH_C32(0xef405514), SPH_C32(0x9c00f5fc),
+	  SPH_C32(0xf3ffc956), SPH_C32(0x71040000), SPH_C32(0x6bfc54f6),
+	  SPH_C32(0xf33c70b5), SPH_C32(0xb1ad5eff) },
+	{ SPH_C32(0x30986000), SPH_C32(0x7f67627d), SPH_C32(0x27dc01fb),
+	  SPH_C32(0x230b6637), SPH_C32(0xce381000), SPH_C32(0xa1f025e1),
+	  SPH_C32(0xc01d9999), SPH_C32(0x7fbf730c) },
+	{ SPH_C32(0x85484000), SPH_C32(0x7b58b73b), SPH_C32(0xfa4327a4),
+	  SPH_C32(0x6fda92b3), SPH_C32(0x982e2000), SPH_C32(0xdfabd80a),
+	  SPH_C32(0xe2c64ae2), SPH_C32(0x8c645bdb) },
+	{ SPH_C32(0x4ee14000), SPH_C32(0xeb7f8052), SPH_C32(0x419fd3a3),
+	  SPH_C32(0xbf2e3dd2), SPH_C32(0x27123000), SPH_C32(0x15a7a91d),
+	  SPH_C32(0xd1e7a3ce), SPH_C32(0x42767628) },
+	{ SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7), SPH_C32(0xebb91df3),
+	  SPH_C32(0x52139797), SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9),
+	  SPH_C32(0x957fa2ed), SPH_C32(0x2d88051a) },
+	{ SPH_C32(0xa7cb6000), SPH_C32(0x5f280cae), SPH_C32(0x5065e9f4),
+	  SPH_C32(0x82e738f6), SPH_C32(0xb0413000), SPH_C32(0x35e8c7ce),
+	  SPH_C32(0xa65e4bc1), SPH_C32(0xe39a28e9) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0x2dfe0000), SPH_C32(0xdb940d4c), SPH_C32(0x3f596cbd),
+	  SPH_C32(0xc0b5af5f), SPH_C32(0x4b705000), SPH_C32(0xdaa892da),
+	  SPH_C32(0x3a5ebe3d), SPH_C32(0x1065e1bf) },
+	{ SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9), SPH_C32(0x957fa2ed),
+	  SPH_C32(0x2d88051a), SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e),
+	  SPH_C32(0x7ec6bf1e), SPH_C32(0x7f9b928d) },
+	{ SPH_C32(0xc4d42000), SPH_C32(0x6fc381b0), SPH_C32(0x2ea356ea),
+	  SPH_C32(0xfd7caa7b), SPH_C32(0xdc235000), SPH_C32(0xfae7fc09),
+	  SPH_C32(0x4de75632), SPH_C32(0xb189bf7e) },
+	{ SPH_C32(0x71040000), SPH_C32(0x6bfc54f6), SPH_C32(0xf33c70b5),
+	  SPH_C32(0xb1ad5eff), SPH_C32(0x8a356000), SPH_C32(0x84bc01e2),
+	  SPH_C32(0x6f3c8549), SPH_C32(0x425297a9) },
+	{ SPH_C32(0xbaad0000), SPH_C32(0xfbdb639f), SPH_C32(0x48e084b2),
+	  SPH_C32(0x6159f19e), SPH_C32(0x35097000), SPH_C32(0x4eb070f5),
+	  SPH_C32(0x5c1d6c65), SPH_C32(0x8c40ba5a) },
+	{ SPH_C32(0x982e2000), SPH_C32(0xdfabd80a), SPH_C32(0xe2c64ae2),
+	  SPH_C32(0x8c645bdb), SPH_C32(0x1d666000), SPH_C32(0xa4f36f31),
+	  SPH_C32(0x18856d46), SPH_C32(0xe3bec968) },
+	{ SPH_C32(0x53872000), SPH_C32(0x4f8cef63), SPH_C32(0x591abee5),
+	  SPH_C32(0x5c90f4ba), SPH_C32(0xa25a7000), SPH_C32(0x6eff1e26),
+	  SPH_C32(0x2ba4846a), SPH_C32(0x2dace49b) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) },
+	{ SPH_C32(0x3fe54000), SPH_C32(0x8083d4a4), SPH_C32(0xb2a3a316),
+	  SPH_C32(0x0e83632d), SPH_C32(0xad275000), SPH_C32(0x911ba8ff),
+	  SPH_C32(0xbedb2687), SPH_C32(0x0024e181) },
+	{ SPH_C32(0x1d666000), SPH_C32(0xa4f36f31), SPH_C32(0x18856d46),
+	  SPH_C32(0xe3bec968), SPH_C32(0x85484000), SPH_C32(0x7b58b73b),
+	  SPH_C32(0xfa4327a4), SPH_C32(0x6fda92b3) },
+	{ SPH_C32(0xd6cf6000), SPH_C32(0x34d45858), SPH_C32(0xa3599941),
+	  SPH_C32(0x334a6609), SPH_C32(0x3a745000), SPH_C32(0xb154c62c),
+	  SPH_C32(0xc962ce88), SPH_C32(0xa1c8bf40) },
+	{ SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e), SPH_C32(0x7ec6bf1e),
+	  SPH_C32(0x7f9b928d), SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7),
+	  SPH_C32(0xebb91df3), SPH_C32(0x52139797) },
+	{ SPH_C32(0xa8b64000), SPH_C32(0xa0ccba77), SPH_C32(0xc51a4b19),
+	  SPH_C32(0xaf6f3dec), SPH_C32(0xd35e7000), SPH_C32(0x05034ad0),
+	  SPH_C32(0xd898f4df), SPH_C32(0x9c01ba64) },
+	{ SPH_C32(0x8a356000), SPH_C32(0x84bc01e2), SPH_C32(0x6f3c8549),
+	  SPH_C32(0x425297a9), SPH_C32(0xfb316000), SPH_C32(0xef405514),
+	  SPH_C32(0x9c00f5fc), SPH_C32(0xf3ffc956) },
+	{ SPH_C32(0x419c6000), SPH_C32(0x149b368b), SPH_C32(0xd4e0714e),
+	  SPH_C32(0x92a638c8), SPH_C32(0x440d7000), SPH_C32(0x254c2403),
+	  SPH_C32(0xaf211cd0), SPH_C32(0x3dede4a5) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x2fd18000), SPH_C32(0x15b144a8), SPH_C32(0x0e27d055),
+	  SPH_C32(0xf938f1be), SPH_C32(0xbb631000), SPH_C32(0x5646e2de),
+	  SPH_C32(0x51dd90fc), SPH_C32(0xbd0c9031) },
+	{ SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d), SPH_C32(0xa4011e05),
+	  SPH_C32(0x14055bfb), SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a),
+	  SPH_C32(0x154591df), SPH_C32(0xd2f2e303) },
+	{ SPH_C32(0xc6fba000), SPH_C32(0xa1e6c854), SPH_C32(0x1fddea02),
+	  SPH_C32(0xc4f1f49a), SPH_C32(0x2c301000), SPH_C32(0x76098c0d),
+	  SPH_C32(0x266478f3), SPH_C32(0x1ce0cef0) },
+	{ SPH_C32(0x732b8000), SPH_C32(0xa5d91d12), SPH_C32(0xc242cc5d),
+	  SPH_C32(0x8820001e), SPH_C32(0x7a262000), SPH_C32(0x085271e6),
+	  SPH_C32(0x04bfab88), SPH_C32(0xef3be627) },
+	{ SPH_C32(0xb8828000), SPH_C32(0x35fe2a7b), SPH_C32(0x799e385a),
+	  SPH_C32(0x58d4af7f), SPH_C32(0xc51a3000), SPH_C32(0xc25e00f1),
+	  SPH_C32(0x379e42a4), SPH_C32(0x2129cbd4) },
+	{ SPH_C32(0x9a01a000), SPH_C32(0x118e91ee), SPH_C32(0xd3b8f60a),
+	  SPH_C32(0xb5e9053a), SPH_C32(0xed752000), SPH_C32(0x281d1f35),
+	  SPH_C32(0x73064387), SPH_C32(0x4ed7b8e6) },
+	{ SPH_C32(0x51a8a000), SPH_C32(0x81a9a687), SPH_C32(0x6864020d),
+	  SPH_C32(0x651daa5b), SPH_C32(0x52493000), SPH_C32(0xe2116e22),
+	  SPH_C32(0x4027aaab), SPH_C32(0x80c59515) },
+	{ SPH_C32(0xf663c000), SPH_C32(0xde81aa29), SPH_C32(0x3801ebf9),
+	  SPH_C32(0xe7fa92ad), SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec),
+	  SPH_C32(0xe679e16a), SPH_C32(0x635fbdfc) },
+	{ SPH_C32(0x3dcac000), SPH_C32(0x4ea69d40), SPH_C32(0x83dd1ffe),
+	  SPH_C32(0x370e3dcc), SPH_C32(0x5d341000), SPH_C32(0x1df5d8fb),
+	  SPH_C32(0xd5580846), SPH_C32(0xad4d900f) },
+	{ SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5), SPH_C32(0x29fbd1ae),
+	  SPH_C32(0xda339789), SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f),
+	  SPH_C32(0x91c00965), SPH_C32(0xc2b3e33d) },
+	{ SPH_C32(0xd4e0e000), SPH_C32(0xfaf111bc), SPH_C32(0x922725a9),
+	  SPH_C32(0x0ac738e8), SPH_C32(0xca671000), SPH_C32(0x3dbab628),
+	  SPH_C32(0xa2e1e049), SPH_C32(0x0ca1cece) },
+	{ SPH_C32(0x6130c000), SPH_C32(0xfecec4fa), SPH_C32(0x4fb803f6),
+	  SPH_C32(0x4616cc6c), SPH_C32(0x9c712000), SPH_C32(0x43e14bc3),
+	  SPH_C32(0x803a3332), SPH_C32(0xff7ae619) },
+	{ SPH_C32(0xaa99c000), SPH_C32(0x6ee9f393), SPH_C32(0xf464f7f1),
+	  SPH_C32(0x96e2630d), SPH_C32(0x234d3000), SPH_C32(0x89ed3ad4),
+	  SPH_C32(0xb31bda1e), SPH_C32(0x3168cbea) },
+	{ SPH_C32(0x881ae000), SPH_C32(0x4a994806), SPH_C32(0x5e4239a1),
+	  SPH_C32(0x7bdfc948), SPH_C32(0x0b222000), SPH_C32(0x63ae2510),
+	  SPH_C32(0xf783db3d), SPH_C32(0x5e96b8d8) },
+	{ SPH_C32(0x43b3e000), SPH_C32(0xdabe7f6f), SPH_C32(0xe59ecda6),
+	  SPH_C32(0xab2b6629), SPH_C32(0xb41e3000), SPH_C32(0xa9a25407),
+	  SPH_C32(0xc4a23211), SPH_C32(0x9084952b) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0xc9868000), SPH_C32(0x5e027e8d), SPH_C32(0x8aa248ef),
+	  SPH_C32(0xe979f180), SPH_C32(0x4f2f5000), SPH_C32(0x46e20113),
+	  SPH_C32(0x58a2c7ed), SPH_C32(0x637b5c7d) },
+	{ SPH_C32(0xeb05a000), SPH_C32(0x7a72c518), SPH_C32(0x208486bf),
+	  SPH_C32(0x04445bc5), SPH_C32(0x67404000), SPH_C32(0xaca11ed7),
+	  SPH_C32(0x1c3ac6ce), SPH_C32(0x0c852f4f) },
+	{ SPH_C32(0x20aca000), SPH_C32(0xea55f271), SPH_C32(0x9b5872b8),
+	  SPH_C32(0xd4b0f4a4), SPH_C32(0xd87c5000), SPH_C32(0x66ad6fc0),
+	  SPH_C32(0x2f1b2fe2), SPH_C32(0xc29702bc) },
+	{ SPH_C32(0x957c8000), SPH_C32(0xee6a2737), SPH_C32(0x46c754e7),
+	  SPH_C32(0x98610020), SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b),
+	  SPH_C32(0x0dc0fc99), SPH_C32(0x314c2a6b) },
+	{ SPH_C32(0x5ed58000), SPH_C32(0x7e4d105e), SPH_C32(0xfd1ba0e0),
+	  SPH_C32(0x4895af41), SPH_C32(0x31567000), SPH_C32(0xd2fae33c),
+	  SPH_C32(0x3ee115b5), SPH_C32(0xff5e0798) },
+	{ SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb), SPH_C32(0x573d6eb0),
+	  SPH_C32(0xa5a80504), SPH_C32(0x19396000), SPH_C32(0x38b9fcf8),
+	  SPH_C32(0x7a791496), SPH_C32(0x90a074aa) },
+	{ SPH_C32(0xb7ffa000), SPH_C32(0xca1a9ca2), SPH_C32(0xece19ab7),
+	  SPH_C32(0x755caa65), SPH_C32(0xa6057000), SPH_C32(0xf2b58def),
+	  SPH_C32(0x4958fdba), SPH_C32(0x5eb25959) },
+	{ SPH_C32(0x1034c000), SPH_C32(0x9532900c), SPH_C32(0xbc847343),
+	  SPH_C32(0xf7bb9293), SPH_C32(0x16444000), SPH_C32(0xc75d4a21),
+	  SPH_C32(0xef06b67b), SPH_C32(0xbd2871b0) },
+	{ SPH_C32(0xdb9dc000), SPH_C32(0x0515a765), SPH_C32(0x07588744),
+	  SPH_C32(0x274f3df2), SPH_C32(0xa9785000), SPH_C32(0x0d513b36),
+	  SPH_C32(0xdc275f57), SPH_C32(0x733a5c43) },
+	{ SPH_C32(0xf91ee000), SPH_C32(0x21651cf0), SPH_C32(0xad7e4914),
+	  SPH_C32(0xca7297b7), SPH_C32(0x81174000), SPH_C32(0xe71224f2),
+	  SPH_C32(0x98bf5e74), SPH_C32(0x1cc42f71) },
+	{ SPH_C32(0x32b7e000), SPH_C32(0xb1422b99), SPH_C32(0x16a2bd13),
+	  SPH_C32(0x1a8638d6), SPH_C32(0x3e2b5000), SPH_C32(0x2d1e55e5),
+	  SPH_C32(0xab9eb758), SPH_C32(0xd2d60282) },
+	{ SPH_C32(0x8767c000), SPH_C32(0xb57dfedf), SPH_C32(0xcb3d9b4c),
+	  SPH_C32(0x5657cc52), SPH_C32(0x683d6000), SPH_C32(0x5345a80e),
+	  SPH_C32(0x89456423), SPH_C32(0x210d2a55) },
+	{ SPH_C32(0x4ccec000), SPH_C32(0x255ac9b6), SPH_C32(0x70e16f4b),
+	  SPH_C32(0x86a36333), SPH_C32(0xd7017000), SPH_C32(0x9949d919),
+	  SPH_C32(0xba648d0f), SPH_C32(0xef1f07a6) },
+	{ SPH_C32(0x6e4de000), SPH_C32(0x012a7223), SPH_C32(0xdac7a11b),
+	  SPH_C32(0x6b9ec976), SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd),
+	  SPH_C32(0xfefc8c2c), SPH_C32(0x80e17494) },
+	{ SPH_C32(0xa5e4e000), SPH_C32(0x910d454a), SPH_C32(0x611b551c),
+	  SPH_C32(0xbb6a6617), SPH_C32(0x40527000), SPH_C32(0xb906b7ca),
+	  SPH_C32(0xcddd6500), SPH_C32(0x4ef35967) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0xcff60000), SPH_C32(0x0c6da4a0), SPH_C32(0xd9208dd7),
+	  SPH_C32(0xa3ea12a3), SPH_C32(0x5f1b9000), SPH_C32(0xd3d0911f),
+	  SPH_C32(0xe426b4ae), SPH_C32(0x94c0ceee) },
+	{ SPH_C32(0xed752000), SPH_C32(0x281d1f35), SPH_C32(0x73064387),
+	  SPH_C32(0x4ed7b8e6), SPH_C32(0x77748000), SPH_C32(0x39938edb),
+	  SPH_C32(0xa0beb58d), SPH_C32(0xfb3ebddc) },
+	{ SPH_C32(0x26dc2000), SPH_C32(0xb83a285c), SPH_C32(0xc8dab780),
+	  SPH_C32(0x9e231787), SPH_C32(0xc8489000), SPH_C32(0xf39fffcc),
+	  SPH_C32(0x939f5ca1), SPH_C32(0x352c902f) },
+	{ SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a), SPH_C32(0x154591df),
+	  SPH_C32(0xd2f2e303), SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227),
+	  SPH_C32(0xb1448fda), SPH_C32(0xc6f7b8f8) },
+	{ SPH_C32(0x58a50000), SPH_C32(0x2c22ca73), SPH_C32(0xae9965d8),
+	  SPH_C32(0x02064c62), SPH_C32(0x2162b000), SPH_C32(0x47c87330),
+	  SPH_C32(0x826566f6), SPH_C32(0x08e5950b) },
+	{ SPH_C32(0x7a262000), SPH_C32(0x085271e6), SPH_C32(0x04bfab88),
+	  SPH_C32(0xef3be627), SPH_C32(0x090da000), SPH_C32(0xad8b6cf4),
+	  SPH_C32(0xc6fd67d5), SPH_C32(0x671be639) },
+	{ SPH_C32(0xb18f2000), SPH_C32(0x9875468f), SPH_C32(0xbf635f8f),
+	  SPH_C32(0x3fcf4946), SPH_C32(0xb631b000), SPH_C32(0x67871de3),
+	  SPH_C32(0xf5dc8ef9), SPH_C32(0xa909cbca) },
+	{ SPH_C32(0x16444000), SPH_C32(0xc75d4a21), SPH_C32(0xef06b67b),
+	  SPH_C32(0xbd2871b0), SPH_C32(0x06708000), SPH_C32(0x526fda2d),
+	  SPH_C32(0x5382c538), SPH_C32(0x4a93e323) },
+	{ SPH_C32(0xdded4000), SPH_C32(0x577a7d48), SPH_C32(0x54da427c),
+	  SPH_C32(0x6ddcded1), SPH_C32(0xb94c9000), SPH_C32(0x9863ab3a),
+	  SPH_C32(0x60a32c14), SPH_C32(0x8481ced0) },
+	{ SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd), SPH_C32(0xfefc8c2c),
+	  SPH_C32(0x80e17494), SPH_C32(0x91238000), SPH_C32(0x7220b4fe),
+	  SPH_C32(0x243b2d37), SPH_C32(0xeb7fbde2) },
+	{ SPH_C32(0x34c76000), SPH_C32(0xe32df1b4), SPH_C32(0x4520782b),
+	  SPH_C32(0x5015dbf5), SPH_C32(0x2e1f9000), SPH_C32(0xb82cc5e9),
+	  SPH_C32(0x171ac41b), SPH_C32(0x256d9011) },
+	{ SPH_C32(0x81174000), SPH_C32(0xe71224f2), SPH_C32(0x98bf5e74),
+	  SPH_C32(0x1cc42f71), SPH_C32(0x7809a000), SPH_C32(0xc6773802),
+	  SPH_C32(0x35c11760), SPH_C32(0xd6b6b8c6) },
+	{ SPH_C32(0x4abe4000), SPH_C32(0x7735139b), SPH_C32(0x2363aa73),
+	  SPH_C32(0xcc308010), SPH_C32(0xc735b000), SPH_C32(0x0c7b4915),
+	  SPH_C32(0x06e0fe4c), SPH_C32(0x18a49535) },
+	{ SPH_C32(0x683d6000), SPH_C32(0x5345a80e), SPH_C32(0x89456423),
+	  SPH_C32(0x210d2a55), SPH_C32(0xef5aa000), SPH_C32(0xe63856d1),
+	  SPH_C32(0x4278ff6f), SPH_C32(0x775ae607) },
+	{ SPH_C32(0xa3946000), SPH_C32(0xc3629f67), SPH_C32(0x32999024),
+	  SPH_C32(0xf1f98534), SPH_C32(0x5066b000), SPH_C32(0x2c3427c6),
+	  SPH_C32(0x71591643), SPH_C32(0xb948cbf4) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0x29a10000), SPH_C32(0x47de9e85), SPH_C32(0x5da5156d),
+	  SPH_C32(0xb3ab129d), SPH_C32(0xab57d000), SPH_C32(0xc37472d2),
+	  SPH_C32(0xed59e3bf), SPH_C32(0x4ab702a2) },
+	{ SPH_C32(0x0b222000), SPH_C32(0x63ae2510), SPH_C32(0xf783db3d),
+	  SPH_C32(0x5e96b8d8), SPH_C32(0x8338c000), SPH_C32(0x29376d16),
+	  SPH_C32(0xa9c1e29c), SPH_C32(0x25497190) },
+	{ SPH_C32(0xc08b2000), SPH_C32(0xf3891279), SPH_C32(0x4c5f2f3a),
+	  SPH_C32(0x8e6217b9), SPH_C32(0x3c04d000), SPH_C32(0xe33b1c01),
+	  SPH_C32(0x9ae00bb0), SPH_C32(0xeb5b5c63) },
+	{ SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f), SPH_C32(0x91c00965),
+	  SPH_C32(0xc2b3e33d), SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea),
+	  SPH_C32(0xb83bd8cb), SPH_C32(0x188074b4) },
+	{ SPH_C32(0xbef20000), SPH_C32(0x6791f056), SPH_C32(0x2a1cfd62),
+	  SPH_C32(0x12474c5c), SPH_C32(0xd52ef000), SPH_C32(0x576c90fd),
+	  SPH_C32(0x8b1a31e7), SPH_C32(0xd6925947) },
+	{ SPH_C32(0x9c712000), SPH_C32(0x43e14bc3), SPH_C32(0x803a3332),
+	  SPH_C32(0xff7ae619), SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39),
+	  SPH_C32(0xcf8230c4), SPH_C32(0xb96c2a75) },
+	{ SPH_C32(0x57d82000), SPH_C32(0xd3c67caa), SPH_C32(0x3be6c735),
+	  SPH_C32(0x2f8e4978), SPH_C32(0x427df000), SPH_C32(0x7723fe2e),
+	  SPH_C32(0xfca3d9e8), SPH_C32(0x777e0786) },
+	{ SPH_C32(0xf0134000), SPH_C32(0x8cee7004), SPH_C32(0x6b832ec1),
+	  SPH_C32(0xad69718e), SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0),
+	  SPH_C32(0x5afd9229), SPH_C32(0x94e42f6f) },
+	{ SPH_C32(0x3bba4000), SPH_C32(0x1cc9476d), SPH_C32(0xd05fdac6),
+	  SPH_C32(0x7d9ddeef), SPH_C32(0x4d00d000), SPH_C32(0x88c748f7),
+	  SPH_C32(0x69dc7b05), SPH_C32(0x5af6029c) },
+	{ SPH_C32(0x19396000), SPH_C32(0x38b9fcf8), SPH_C32(0x7a791496),
+	  SPH_C32(0x90a074aa), SPH_C32(0x656fc000), SPH_C32(0x62845733),
+	  SPH_C32(0x2d447a26), SPH_C32(0x350871ae) },
+	{ SPH_C32(0xd2906000), SPH_C32(0xa89ecb91), SPH_C32(0xc1a5e091),
+	  SPH_C32(0x4054dbcb), SPH_C32(0xda53d000), SPH_C32(0xa8882624),
+	  SPH_C32(0x1e65930a), SPH_C32(0xfb1a5c5d) },
+	{ SPH_C32(0x67404000), SPH_C32(0xaca11ed7), SPH_C32(0x1c3ac6ce),
+	  SPH_C32(0x0c852f4f), SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf),
+	  SPH_C32(0x3cbe4071), SPH_C32(0x08c1748a) },
+	{ SPH_C32(0xace94000), SPH_C32(0x3c8629be), SPH_C32(0xa7e632c9),
+	  SPH_C32(0xdc71802e), SPH_C32(0x3379f000), SPH_C32(0x1cdfaad8),
+	  SPH_C32(0x0f9fa95d), SPH_C32(0xc6d35979) },
+	{ SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b), SPH_C32(0x0dc0fc99),
+	  SPH_C32(0x314c2a6b), SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c),
+	  SPH_C32(0x4b07a87e), SPH_C32(0xa92d2a4b) },
+	{ SPH_C32(0x45c36000), SPH_C32(0x88d1a542), SPH_C32(0xb61c089e),
+	  SPH_C32(0xe1b8850a), SPH_C32(0xa42af000), SPH_C32(0x3c90c40b),
+	  SPH_C32(0x78264152), SPH_C32(0x673f07b8) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0x2b8e8000), SPH_C32(0x89fbd761), SPH_C32(0x6cdba985),
+	  SPH_C32(0x8a264c7c), SPH_C32(0x5b449000), SPH_C32(0x4f9a02d6),
+	  SPH_C32(0x86dacd7e), SPH_C32(0xe7de732c) },
+	{ SPH_C32(0x090da000), SPH_C32(0xad8b6cf4), SPH_C32(0xc6fd67d5),
+	  SPH_C32(0x671be639), SPH_C32(0x732b8000), SPH_C32(0xa5d91d12),
+	  SPH_C32(0xc242cc5d), SPH_C32(0x8820001e) },
+	{ SPH_C32(0xc2a4a000), SPH_C32(0x3dac5b9d), SPH_C32(0x7d2193d2),
+	  SPH_C32(0xb7ef4958), SPH_C32(0xcc179000), SPH_C32(0x6fd56c05),
+	  SPH_C32(0xf1632571), SPH_C32(0x46322ded) },
+	{ SPH_C32(0x77748000), SPH_C32(0x39938edb), SPH_C32(0xa0beb58d),
+	  SPH_C32(0xfb3ebddc), SPH_C32(0x9a01a000), SPH_C32(0x118e91ee),
+	  SPH_C32(0xd3b8f60a), SPH_C32(0xb5e9053a) },
+	{ SPH_C32(0xbcdd8000), SPH_C32(0xa9b4b9b2), SPH_C32(0x1b62418a),
+	  SPH_C32(0x2bca12bd), SPH_C32(0x253db000), SPH_C32(0xdb82e0f9),
+	  SPH_C32(0xe0991f26), SPH_C32(0x7bfb28c9) },
+	{ SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227), SPH_C32(0xb1448fda),
+	  SPH_C32(0xc6f7b8f8), SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d),
+	  SPH_C32(0xa4011e05), SPH_C32(0x14055bfb) },
+	{ SPH_C32(0x55f7a000), SPH_C32(0x1de3354e), SPH_C32(0x0a987bdd),
+	  SPH_C32(0x16031799), SPH_C32(0xb26eb000), SPH_C32(0xfbcd8e2a),
+	  SPH_C32(0x9720f729), SPH_C32(0xda177608) },
+	{ SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0), SPH_C32(0x5afd9229),
+	  SPH_C32(0x94e42f6f), SPH_C32(0x022f8000), SPH_C32(0xce2549e4),
+	  SPH_C32(0x317ebce8), SPH_C32(0x398d5ee1) },
+	{ SPH_C32(0x3995c000), SPH_C32(0xd2ec0e89), SPH_C32(0xe121662e),
+	  SPH_C32(0x4410800e), SPH_C32(0xbd139000), SPH_C32(0x042938f3),
+	  SPH_C32(0x025f55c4), SPH_C32(0xf79f7312) },
+	{ SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c), SPH_C32(0x4b07a87e),
+	  SPH_C32(0xa92d2a4b), SPH_C32(0x957c8000), SPH_C32(0xee6a2737),
+	  SPH_C32(0x46c754e7), SPH_C32(0x98610020) },
+	{ SPH_C32(0xd0bfe000), SPH_C32(0x66bb8275), SPH_C32(0xf0db5c79),
+	  SPH_C32(0x79d9852a), SPH_C32(0x2a409000), SPH_C32(0x24665620),
+	  SPH_C32(0x75e6bdcb), SPH_C32(0x56732dd3) },
+	{ SPH_C32(0x656fc000), SPH_C32(0x62845733), SPH_C32(0x2d447a26),
+	  SPH_C32(0x350871ae), SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb),
+	  SPH_C32(0x573d6eb0), SPH_C32(0xa5a80504) },
+	{ SPH_C32(0xaec6c000), SPH_C32(0xf2a3605a), SPH_C32(0x96988e21),
+	  SPH_C32(0xe5fcdecf), SPH_C32(0xc36ab000), SPH_C32(0x9031dadc),
+	  SPH_C32(0x641c879c), SPH_C32(0x6bba28f7) },
+	{ SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf), SPH_C32(0x3cbe4071),
+	  SPH_C32(0x08c1748a), SPH_C32(0xeb05a000), SPH_C32(0x7a72c518),
+	  SPH_C32(0x208486bf), SPH_C32(0x04445bc5) },
+	{ SPH_C32(0x47ece000), SPH_C32(0x46f4eca6), SPH_C32(0x8762b476),
+	  SPH_C32(0xd835dbeb), SPH_C32(0x5439b000), SPH_C32(0xb07eb40f),
+	  SPH_C32(0x13a56f93), SPH_C32(0xca567636) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) },
+	{ SPH_C32(0xcdd98000), SPH_C32(0xc248ed44), SPH_C32(0xe85e313f),
+	  SPH_C32(0x9a674c42), SPH_C32(0xaf08d000), SPH_C32(0x5f3ee11b),
+	  SPH_C32(0x8fa59a6f), SPH_C32(0x39a9bf60) },
+	{ SPH_C32(0xef5aa000), SPH_C32(0xe63856d1), SPH_C32(0x4278ff6f),
+	  SPH_C32(0x775ae607), SPH_C32(0x8767c000), SPH_C32(0xb57dfedf),
+	  SPH_C32(0xcb3d9b4c), SPH_C32(0x5657cc52) },
+	{ SPH_C32(0x24f3a000), SPH_C32(0x761f61b8), SPH_C32(0xf9a40b68),
+	  SPH_C32(0xa7ae4966), SPH_C32(0x385bd000), SPH_C32(0x7f718fc8),
+	  SPH_C32(0xf81c7260), SPH_C32(0x9845e1a1) },
+	{ SPH_C32(0x91238000), SPH_C32(0x7220b4fe), SPH_C32(0x243b2d37),
+	  SPH_C32(0xeb7fbde2), SPH_C32(0x6e4de000), SPH_C32(0x012a7223),
+	  SPH_C32(0xdac7a11b), SPH_C32(0x6b9ec976) },
+	{ SPH_C32(0x5a8a8000), SPH_C32(0xe2078397), SPH_C32(0x9fe7d930),
+	  SPH_C32(0x3b8b1283), SPH_C32(0xd171f000), SPH_C32(0xcb260334),
+	  SPH_C32(0xe9e64837), SPH_C32(0xa58ce485) },
+	{ SPH_C32(0x7809a000), SPH_C32(0xc6773802), SPH_C32(0x35c11760),
+	  SPH_C32(0xd6b6b8c6), SPH_C32(0xf91ee000), SPH_C32(0x21651cf0),
+	  SPH_C32(0xad7e4914), SPH_C32(0xca7297b7) },
+	{ SPH_C32(0xb3a0a000), SPH_C32(0x56500f6b), SPH_C32(0x8e1de367),
+	  SPH_C32(0x064217a7), SPH_C32(0x4622f000), SPH_C32(0xeb696de7),
+	  SPH_C32(0x9e5fa038), SPH_C32(0x0460ba44) },
+	{ SPH_C32(0x146bc000), SPH_C32(0x097803c5), SPH_C32(0xde780a93),
+	  SPH_C32(0x84a52f51), SPH_C32(0xf663c000), SPH_C32(0xde81aa29),
+	  SPH_C32(0x3801ebf9), SPH_C32(0xe7fa92ad) },
+	{ SPH_C32(0xdfc2c000), SPH_C32(0x995f34ac), SPH_C32(0x65a4fe94),
+	  SPH_C32(0x54518030), SPH_C32(0x495fd000), SPH_C32(0x148ddb3e),
+	  SPH_C32(0x0b2002d5), SPH_C32(0x29e8bf5e) },
+	{ SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39), SPH_C32(0xcf8230c4),
+	  SPH_C32(0xb96c2a75), SPH_C32(0x6130c000), SPH_C32(0xfecec4fa),
+	  SPH_C32(0x4fb803f6), SPH_C32(0x4616cc6c) },
+	{ SPH_C32(0x36e8e000), SPH_C32(0x2d08b850), SPH_C32(0x745ec4c3),
+	  SPH_C32(0x69988514), SPH_C32(0xde0cd000), SPH_C32(0x34c2b5ed),
+	  SPH_C32(0x7c99eada), SPH_C32(0x8804e19f) },
+	{ SPH_C32(0x8338c000), SPH_C32(0x29376d16), SPH_C32(0xa9c1e29c),
+	  SPH_C32(0x25497190), SPH_C32(0x881ae000), SPH_C32(0x4a994806),
+	  SPH_C32(0x5e4239a1), SPH_C32(0x7bdfc948) },
+	{ SPH_C32(0x4891c000), SPH_C32(0xb9105a7f), SPH_C32(0x121d169b),
+	  SPH_C32(0xf5bddef1), SPH_C32(0x3726f000), SPH_C32(0x80953911),
+	  SPH_C32(0x6d63d08d), SPH_C32(0xb5cde4bb) },
+	{ SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea), SPH_C32(0xb83bd8cb),
+	  SPH_C32(0x188074b4), SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5),
+	  SPH_C32(0x29fbd1ae), SPH_C32(0xda339789) },
+	{ SPH_C32(0xa1bbe000), SPH_C32(0x0d47d683), SPH_C32(0x03e72ccc),
+	  SPH_C32(0xc874dbd5), SPH_C32(0xa075f000), SPH_C32(0xa0da57c2),
+	  SPH_C32(0x1ada3882), SPH_C32(0x1421ba7a) }
+};
+
+static const sph_u32 T256_7[128][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x28860600), SPH_C32(0x128f4c44), SPH_C32(0x0f20b113),
+	  SPH_C32(0x179959a0), SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1),
+	  SPH_C32(0xeab03334), SPH_C32(0x1f8c40ca) },
+	{ SPH_C32(0x61180400), SPH_C32(0x1fd6a049), SPH_C32(0xef079e6e),
+	  SPH_C32(0xb27e87fa), SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2),
+	  SPH_C32(0x8a55cac6), SPH_C32(0x819835bc) },
+	{ SPH_C32(0xc6a00600), SPH_C32(0x00c4247a), SPH_C32(0x8fe2679c),
+	  SPH_C32(0x2c6af28c), SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc),
+	  SPH_C32(0x0a971c49), SPH_C32(0xba6b9e90) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc), SPH_C32(0x0a971c49),
+	  SPH_C32(0xba6b9e90), SPH_C32(0x75a50400), SPH_C32(0x306c97b6),
+	  SPH_C32(0x85757bd5), SPH_C32(0x96016c1c) },
+	{ SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1), SPH_C32(0xeab03334),
+	  SPH_C32(0x1f8c40ca), SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385),
+	  SPH_C32(0xe5908227), SPH_C32(0x0815196a) },
+	{ SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2), SPH_C32(0x8a55cac6),
+	  SPH_C32(0x819835bc), SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb),
+	  SPH_C32(0x655254a8), SPH_C32(0x33e6b246) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb), SPH_C32(0x655254a8),
+	  SPH_C32(0x33e6b246), SPH_C32(0x61180400), SPH_C32(0x1fd6a049),
+	  SPH_C32(0xef079e6e), SPH_C32(0xb27e87fa) },
+	{ SPH_C32(0x75a50400), SPH_C32(0x306c97b6), SPH_C32(0x85757bd5),
+	  SPH_C32(0x96016c1c), SPH_C32(0xc6a00600), SPH_C32(0x00c4247a),
+	  SPH_C32(0x8fe2679c), SPH_C32(0x2c6af28c) },
+	{ SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385), SPH_C32(0xe5908227),
+	  SPH_C32(0x0815196a), SPH_C32(0x28860600), SPH_C32(0x128f4c44),
+	  SPH_C32(0x0f20b113), SPH_C32(0x179959a0) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0x798a0a00), SPH_C32(0x3791d4cd), SPH_C32(0x1160d335),
+	  SPH_C32(0x38abeae0), SPH_C32(0x0fad0000), SPH_C32(0x4612e043),
+	  SPH_C32(0x3fd0555c), SPH_C32(0x2095c15f) },
+	{ SPH_C32(0x30140800), SPH_C32(0x3ac838c0), SPH_C32(0xf147fc48),
+	  SPH_C32(0x9d4c34ba), SPH_C32(0xa8150200), SPH_C32(0x59006470),
+	  SPH_C32(0x5f35acae), SPH_C32(0xbe81b429) },
+	{ SPH_C32(0x97ac0a00), SPH_C32(0x25dabcf3), SPH_C32(0x91a205ba),
+	  SPH_C32(0x035841cc), SPH_C32(0x46330200), SPH_C32(0x4b4b0c4e),
+	  SPH_C32(0xdff77a21), SPH_C32(0x85721f05) },
+	{ SPH_C32(0x510c0c00), SPH_C32(0x251e9889), SPH_C32(0x1e406226),
+	  SPH_C32(0x2f32b340), SPH_C32(0xf5360000), SPH_C32(0x7be3bf82),
+	  SPH_C32(0xd5606668), SPH_C32(0x3f198195) },
+	{ SPH_C32(0xf6b40e00), SPH_C32(0x3a0c1cba), SPH_C32(0x7ea59bd4),
+	  SPH_C32(0xb126c636), SPH_C32(0x1b100000), SPH_C32(0x69a8d7bc),
+	  SPH_C32(0x55a2b0e7), SPH_C32(0x04ea2ab9) },
+	{ SPH_C32(0xbf2a0c00), SPH_C32(0x3755f0b7), SPH_C32(0x9e82b4a9),
+	  SPH_C32(0x14c1186c), SPH_C32(0xbca80200), SPH_C32(0x76ba538f),
+	  SPH_C32(0x35474915), SPH_C32(0x9afe5fcf) },
+	{ SPH_C32(0x18920e00), SPH_C32(0x28477484), SPH_C32(0xfe674d5b),
+	  SPH_C32(0x8ad56d1a), SPH_C32(0x528e0200), SPH_C32(0x64f13bb1),
+	  SPH_C32(0xb5859f9a), SPH_C32(0xa10df4e3) },
+	{ SPH_C32(0xca8f0800), SPH_C32(0x07396701), SPH_C32(0x1bf7cf7c),
+	  SPH_C32(0x82c07470), SPH_C32(0x7a080400), SPH_C32(0x767e77f5),
+	  SPH_C32(0xbaa52e89), SPH_C32(0xb694ad43) },
+	{ SPH_C32(0x6d370a00), SPH_C32(0x182be332), SPH_C32(0x7b12368e),
+	  SPH_C32(0x1cd40106), SPH_C32(0x942e0400), SPH_C32(0x64351fcb),
+	  SPH_C32(0x3a67f806), SPH_C32(0x8d67066f) },
+	{ SPH_C32(0x24a90800), SPH_C32(0x15720f3f), SPH_C32(0x9b3519f3),
+	  SPH_C32(0xb933df5c), SPH_C32(0x33960600), SPH_C32(0x7b279bf8),
+	  SPH_C32(0x5a8201f4), SPH_C32(0x13737319) },
+	{ SPH_C32(0x83110a00), SPH_C32(0x0a608b0c), SPH_C32(0xfbd0e001),
+	  SPH_C32(0x2727aa2a), SPH_C32(0xddb00600), SPH_C32(0x696cf3c6),
+	  SPH_C32(0xda40d77b), SPH_C32(0x2880d835) },
+	{ SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76), SPH_C32(0x7432879d),
+	  SPH_C32(0x0b4d58a6), SPH_C32(0x6eb50400), SPH_C32(0x59c4400a),
+	  SPH_C32(0xd0d7cb32), SPH_C32(0x92eb46a5) },
+	{ SPH_C32(0xe2090e00), SPH_C32(0x15b62b45), SPH_C32(0x14d77e6f),
+	  SPH_C32(0x95592dd0), SPH_C32(0x80930400), SPH_C32(0x4b8f2834),
+	  SPH_C32(0x50151dbd), SPH_C32(0xa918ed89) },
+	{ SPH_C32(0xab970c00), SPH_C32(0x18efc748), SPH_C32(0xf4f05112),
+	  SPH_C32(0x30bef38a), SPH_C32(0x272b0600), SPH_C32(0x549dac07),
+	  SPH_C32(0x30f0e44f), SPH_C32(0x370c98ff) },
+	{ SPH_C32(0x0c2f0e00), SPH_C32(0x07fd437b), SPH_C32(0x9415a8e0),
+	  SPH_C32(0xaeaa86fc), SPH_C32(0xc90d0600), SPH_C32(0x46d6c439),
+	  SPH_C32(0xb03232c0), SPH_C32(0x0cff33d3) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x46330200), SPH_C32(0x4b4b0c4e), SPH_C32(0xdff77a21),
+	  SPH_C32(0x85721f05), SPH_C32(0xd19f0800), SPH_C32(0x6e91b0bd),
+	  SPH_C32(0x4e557f9b), SPH_C32(0x862a5ec9) },
+	{ SPH_C32(0x0fad0000), SPH_C32(0x4612e043), SPH_C32(0x3fd0555c),
+	  SPH_C32(0x2095c15f), SPH_C32(0x76270a00), SPH_C32(0x7183348e),
+	  SPH_C32(0x2eb08669), SPH_C32(0x183e2bbf) },
+	{ SPH_C32(0xa8150200), SPH_C32(0x59006470), SPH_C32(0x5f35acae),
+	  SPH_C32(0xbe81b429), SPH_C32(0x98010a00), SPH_C32(0x63c85cb0),
+	  SPH_C32(0xae7250e6), SPH_C32(0x23cd8093) },
+	{ SPH_C32(0x6eb50400), SPH_C32(0x59c4400a), SPH_C32(0xd0d7cb32),
+	  SPH_C32(0x92eb46a5), SPH_C32(0x2b040800), SPH_C32(0x5360ef7c),
+	  SPH_C32(0xa4e54caf), SPH_C32(0x99a61e03) },
+	{ SPH_C32(0xc90d0600), SPH_C32(0x46d6c439), SPH_C32(0xb03232c0),
+	  SPH_C32(0x0cff33d3), SPH_C32(0xc5220800), SPH_C32(0x412b8742),
+	  SPH_C32(0x24279a20), SPH_C32(0xa255b52f) },
+	{ SPH_C32(0x80930400), SPH_C32(0x4b8f2834), SPH_C32(0x50151dbd),
+	  SPH_C32(0xa918ed89), SPH_C32(0x629a0a00), SPH_C32(0x5e390371),
+	  SPH_C32(0x44c263d2), SPH_C32(0x3c41c059) },
+	{ SPH_C32(0x272b0600), SPH_C32(0x549dac07), SPH_C32(0x30f0e44f),
+	  SPH_C32(0x370c98ff), SPH_C32(0x8cbc0a00), SPH_C32(0x4c726b4f),
+	  SPH_C32(0xc400b55d), SPH_C32(0x07b26b75) },
+	{ SPH_C32(0xf5360000), SPH_C32(0x7be3bf82), SPH_C32(0xd5606668),
+	  SPH_C32(0x3f198195), SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b),
+	  SPH_C32(0xcb20044e), SPH_C32(0x102b32d5) },
+	{ SPH_C32(0x528e0200), SPH_C32(0x64f13bb1), SPH_C32(0xb5859f9a),
+	  SPH_C32(0xa10df4e3), SPH_C32(0x4a1c0c00), SPH_C32(0x4cb64f35),
+	  SPH_C32(0x4be2d2c1), SPH_C32(0x2bd899f9) },
+	{ SPH_C32(0x1b100000), SPH_C32(0x69a8d7bc), SPH_C32(0x55a2b0e7),
+	  SPH_C32(0x04ea2ab9), SPH_C32(0xeda40e00), SPH_C32(0x53a4cb06),
+	  SPH_C32(0x2b072b33), SPH_C32(0xb5ccec8f) },
+	{ SPH_C32(0xbca80200), SPH_C32(0x76ba538f), SPH_C32(0x35474915),
+	  SPH_C32(0x9afe5fcf), SPH_C32(0x03820e00), SPH_C32(0x41efa338),
+	  SPH_C32(0xabc5fdbc), SPH_C32(0x8e3f47a3) },
+	{ SPH_C32(0x7a080400), SPH_C32(0x767e77f5), SPH_C32(0xbaa52e89),
+	  SPH_C32(0xb694ad43), SPH_C32(0xb0870c00), SPH_C32(0x714710f4),
+	  SPH_C32(0xa152e1f5), SPH_C32(0x3454d933) },
+	{ SPH_C32(0xddb00600), SPH_C32(0x696cf3c6), SPH_C32(0xda40d77b),
+	  SPH_C32(0x2880d835), SPH_C32(0x5ea10c00), SPH_C32(0x630c78ca),
+	  SPH_C32(0x2190377a), SPH_C32(0x0fa7721f) },
+	{ SPH_C32(0x942e0400), SPH_C32(0x64351fcb), SPH_C32(0x3a67f806),
+	  SPH_C32(0x8d67066f), SPH_C32(0xf9190e00), SPH_C32(0x7c1efcf9),
+	  SPH_C32(0x4175ce88), SPH_C32(0x91b30769) },
+	{ SPH_C32(0x33960600), SPH_C32(0x7b279bf8), SPH_C32(0x5a8201f4),
+	  SPH_C32(0x13737319), SPH_C32(0x173f0e00), SPH_C32(0x6e5594c7),
+	  SPH_C32(0xc1b71807), SPH_C32(0xaa40ac45) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) },
+	{ SPH_C32(0x98010a00), SPH_C32(0x63c85cb0), SPH_C32(0xae7250e6),
+	  SPH_C32(0x23cd8093), SPH_C32(0x30140800), SPH_C32(0x3ac838c0),
+	  SPH_C32(0xf147fc48), SPH_C32(0x9d4c34ba) },
+	{ SPH_C32(0xd19f0800), SPH_C32(0x6e91b0bd), SPH_C32(0x4e557f9b),
+	  SPH_C32(0x862a5ec9), SPH_C32(0x97ac0a00), SPH_C32(0x25dabcf3),
+	  SPH_C32(0x91a205ba), SPH_C32(0x035841cc) },
+	{ SPH_C32(0x76270a00), SPH_C32(0x7183348e), SPH_C32(0x2eb08669),
+	  SPH_C32(0x183e2bbf), SPH_C32(0x798a0a00), SPH_C32(0x3791d4cd),
+	  SPH_C32(0x1160d335), SPH_C32(0x38abeae0) },
+	{ SPH_C32(0xb0870c00), SPH_C32(0x714710f4), SPH_C32(0xa152e1f5),
+	  SPH_C32(0x3454d933), SPH_C32(0xca8f0800), SPH_C32(0x07396701),
+	  SPH_C32(0x1bf7cf7c), SPH_C32(0x82c07470) },
+	{ SPH_C32(0x173f0e00), SPH_C32(0x6e5594c7), SPH_C32(0xc1b71807),
+	  SPH_C32(0xaa40ac45), SPH_C32(0x24a90800), SPH_C32(0x15720f3f),
+	  SPH_C32(0x9b3519f3), SPH_C32(0xb933df5c) },
+	{ SPH_C32(0x5ea10c00), SPH_C32(0x630c78ca), SPH_C32(0x2190377a),
+	  SPH_C32(0x0fa7721f), SPH_C32(0x83110a00), SPH_C32(0x0a608b0c),
+	  SPH_C32(0xfbd0e001), SPH_C32(0x2727aa2a) },
+	{ SPH_C32(0xf9190e00), SPH_C32(0x7c1efcf9), SPH_C32(0x4175ce88),
+	  SPH_C32(0x91b30769), SPH_C32(0x6d370a00), SPH_C32(0x182be332),
+	  SPH_C32(0x7b12368e), SPH_C32(0x1cd40106) },
+	{ SPH_C32(0x2b040800), SPH_C32(0x5360ef7c), SPH_C32(0xa4e54caf),
+	  SPH_C32(0x99a61e03), SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76),
+	  SPH_C32(0x7432879d), SPH_C32(0x0b4d58a6) },
+	{ SPH_C32(0x8cbc0a00), SPH_C32(0x4c726b4f), SPH_C32(0xc400b55d),
+	  SPH_C32(0x07b26b75), SPH_C32(0xab970c00), SPH_C32(0x18efc748),
+	  SPH_C32(0xf4f05112), SPH_C32(0x30bef38a) },
+	{ SPH_C32(0xc5220800), SPH_C32(0x412b8742), SPH_C32(0x24279a20),
+	  SPH_C32(0xa255b52f), SPH_C32(0x0c2f0e00), SPH_C32(0x07fd437b),
+	  SPH_C32(0x9415a8e0), SPH_C32(0xaeaa86fc) },
+	{ SPH_C32(0x629a0a00), SPH_C32(0x5e390371), SPH_C32(0x44c263d2),
+	  SPH_C32(0x3c41c059), SPH_C32(0xe2090e00), SPH_C32(0x15b62b45),
+	  SPH_C32(0x14d77e6f), SPH_C32(0x95592dd0) },
+	{ SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b), SPH_C32(0xcb20044e),
+	  SPH_C32(0x102b32d5), SPH_C32(0x510c0c00), SPH_C32(0x251e9889),
+	  SPH_C32(0x1e406226), SPH_C32(0x2f32b340) },
+	{ SPH_C32(0x03820e00), SPH_C32(0x41efa338), SPH_C32(0xabc5fdbc),
+	  SPH_C32(0x8e3f47a3), SPH_C32(0xbf2a0c00), SPH_C32(0x3755f0b7),
+	  SPH_C32(0x9e82b4a9), SPH_C32(0x14c1186c) },
+	{ SPH_C32(0x4a1c0c00), SPH_C32(0x4cb64f35), SPH_C32(0x4be2d2c1),
+	  SPH_C32(0x2bd899f9), SPH_C32(0x18920e00), SPH_C32(0x28477484),
+	  SPH_C32(0xfe674d5b), SPH_C32(0x8ad56d1a) },
+	{ SPH_C32(0xeda40e00), SPH_C32(0x53a4cb06), SPH_C32(0x2b072b33),
+	  SPH_C32(0xb5ccec8f), SPH_C32(0xf6b40e00), SPH_C32(0x3a0c1cba),
+	  SPH_C32(0x7ea59bd4), SPH_C32(0xb126c636) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xd32d1200), SPH_C32(0x4539c24d), SPH_C32(0xe818e4d9),
+	  SPH_C32(0x80f2f7e4), SPH_C32(0x258f0000), SPH_C32(0x826c5f57),
+	  SPH_C32(0x3b1e2288), SPH_C32(0xeb07044d) },
+	{ SPH_C32(0x9ab31000), SPH_C32(0x48602e40), SPH_C32(0x083fcba4),
+	  SPH_C32(0x251529be), SPH_C32(0x82370200), SPH_C32(0x9d7edb64),
+	  SPH_C32(0x5bfbdb7a), SPH_C32(0x7513713b) },
+	{ SPH_C32(0x3d0b1200), SPH_C32(0x5772aa73), SPH_C32(0x68da3256),
+	  SPH_C32(0xbb015cc8), SPH_C32(0x6c110200), SPH_C32(0x8f35b35a),
+	  SPH_C32(0xdb390df5), SPH_C32(0x4ee0da17) },
+	{ SPH_C32(0xfbab1400), SPH_C32(0x57b68e09), SPH_C32(0xe73855ca),
+	  SPH_C32(0x976bae44), SPH_C32(0xdf140000), SPH_C32(0xbf9d0096),
+	  SPH_C32(0xd1ae11bc), SPH_C32(0xf48b4487) },
+	{ SPH_C32(0x5c131600), SPH_C32(0x48a40a3a), SPH_C32(0x87ddac38),
+	  SPH_C32(0x097fdb32), SPH_C32(0x31320000), SPH_C32(0xadd668a8),
+	  SPH_C32(0x516cc733), SPH_C32(0xcf78efab) },
+	{ SPH_C32(0x158d1400), SPH_C32(0x45fde637), SPH_C32(0x67fa8345),
+	  SPH_C32(0xac980568), SPH_C32(0x968a0200), SPH_C32(0xb2c4ec9b),
+	  SPH_C32(0x31893ec1), SPH_C32(0x516c9add) },
+	{ SPH_C32(0xb2351600), SPH_C32(0x5aef6204), SPH_C32(0x071f7ab7),
+	  SPH_C32(0x328c701e), SPH_C32(0x78ac0200), SPH_C32(0xa08f84a5),
+	  SPH_C32(0xb14be84e), SPH_C32(0x6a9f31f1) },
+	{ SPH_C32(0x60281000), SPH_C32(0x75917181), SPH_C32(0xe28ff890),
+	  SPH_C32(0x3a996974), SPH_C32(0x502a0400), SPH_C32(0xb200c8e1),
+	  SPH_C32(0xbe6b595d), SPH_C32(0x7d066851) },
+	{ SPH_C32(0xc7901200), SPH_C32(0x6a83f5b2), SPH_C32(0x826a0162),
+	  SPH_C32(0xa48d1c02), SPH_C32(0xbe0c0400), SPH_C32(0xa04ba0df),
+	  SPH_C32(0x3ea98fd2), SPH_C32(0x46f5c37d) },
+	{ SPH_C32(0x8e0e1000), SPH_C32(0x67da19bf), SPH_C32(0x624d2e1f),
+	  SPH_C32(0x016ac258), SPH_C32(0x19b40600), SPH_C32(0xbf5924ec),
+	  SPH_C32(0x5e4c7620), SPH_C32(0xd8e1b60b) },
+	{ SPH_C32(0x29b61200), SPH_C32(0x78c89d8c), SPH_C32(0x02a8d7ed),
+	  SPH_C32(0x9f7eb72e), SPH_C32(0xf7920600), SPH_C32(0xad124cd2),
+	  SPH_C32(0xde8ea0af), SPH_C32(0xe3121d27) },
+	{ SPH_C32(0xef161400), SPH_C32(0x780cb9f6), SPH_C32(0x8d4ab071),
+	  SPH_C32(0xb31445a2), SPH_C32(0x44970400), SPH_C32(0x9dbaff1e),
+	  SPH_C32(0xd419bce6), SPH_C32(0x597983b7) },
+	{ SPH_C32(0x48ae1600), SPH_C32(0x671e3dc5), SPH_C32(0xedaf4983),
+	  SPH_C32(0x2d0030d4), SPH_C32(0xaab10400), SPH_C32(0x8ff19720),
+	  SPH_C32(0x54db6a69), SPH_C32(0x628a289b) },
+	{ SPH_C32(0x01301400), SPH_C32(0x6a47d1c8), SPH_C32(0x0d8866fe),
+	  SPH_C32(0x88e7ee8e), SPH_C32(0x0d090600), SPH_C32(0x90e31313),
+	  SPH_C32(0x343e939b), SPH_C32(0xfc9e5ded) },
+	{ SPH_C32(0xa6881600), SPH_C32(0x755555fb), SPH_C32(0x6d6d9f0c),
+	  SPH_C32(0x16f39bf8), SPH_C32(0xe32f0600), SPH_C32(0x82a87b2d),
+	  SPH_C32(0xb4fc4514), SPH_C32(0xc76df6c1) },
+	{ SPH_C32(0xaaa71800), SPH_C32(0x72a81680), SPH_C32(0xf97837ec),
+	  SPH_C32(0xb8591d04), SPH_C32(0x2a220000), SPH_C32(0xc47ebf14),
+	  SPH_C32(0x04ce77d4), SPH_C32(0xcb92c512) },
+	{ SPH_C32(0x0d1f1a00), SPH_C32(0x6dba92b3), SPH_C32(0x999dce1e),
+	  SPH_C32(0x264d6872), SPH_C32(0xc4040000), SPH_C32(0xd635d72a),
+	  SPH_C32(0x840ca15b), SPH_C32(0xf0616e3e) },
+	{ SPH_C32(0x44811800), SPH_C32(0x60e37ebe), SPH_C32(0x79bae163),
+	  SPH_C32(0x83aab628), SPH_C32(0x63bc0200), SPH_C32(0xc9275319),
+	  SPH_C32(0xe4e958a9), SPH_C32(0x6e751b48) },
+	{ SPH_C32(0xe3391a00), SPH_C32(0x7ff1fa8d), SPH_C32(0x195f1891),
+	  SPH_C32(0x1dbec35e), SPH_C32(0x8d9a0200), SPH_C32(0xdb6c3b27),
+	  SPH_C32(0x642b8e26), SPH_C32(0x5586b064) },
+	{ SPH_C32(0x25991c00), SPH_C32(0x7f35def7), SPH_C32(0x96bd7f0d),
+	  SPH_C32(0x31d431d2), SPH_C32(0x3e9f0000), SPH_C32(0xebc488eb),
+	  SPH_C32(0x6ebc926f), SPH_C32(0xefed2ef4) },
+	{ SPH_C32(0x82211e00), SPH_C32(0x60275ac4), SPH_C32(0xf65886ff),
+	  SPH_C32(0xafc044a4), SPH_C32(0xd0b90000), SPH_C32(0xf98fe0d5),
+	  SPH_C32(0xee7e44e0), SPH_C32(0xd41e85d8) },
+	{ SPH_C32(0xcbbf1c00), SPH_C32(0x6d7eb6c9), SPH_C32(0x167fa982),
+	  SPH_C32(0x0a279afe), SPH_C32(0x77010200), SPH_C32(0xe69d64e6),
+	  SPH_C32(0x8e9bbd12), SPH_C32(0x4a0af0ae) },
+	{ SPH_C32(0x6c071e00), SPH_C32(0x726c32fa), SPH_C32(0x769a5070),
+	  SPH_C32(0x9433ef88), SPH_C32(0x99270200), SPH_C32(0xf4d60cd8),
+	  SPH_C32(0x0e596b9d), SPH_C32(0x71f95b82) },
+	{ SPH_C32(0xbe1a1800), SPH_C32(0x5d12217f), SPH_C32(0x930ad257),
+	  SPH_C32(0x9c26f6e2), SPH_C32(0xb1a10400), SPH_C32(0xe659409c),
+	  SPH_C32(0x0179da8e), SPH_C32(0x66600222) },
+	{ SPH_C32(0x19a21a00), SPH_C32(0x4200a54c), SPH_C32(0xf3ef2ba5),
+	  SPH_C32(0x02328394), SPH_C32(0x5f870400), SPH_C32(0xf41228a2),
+	  SPH_C32(0x81bb0c01), SPH_C32(0x5d93a90e) },
+	{ SPH_C32(0x503c1800), SPH_C32(0x4f594941), SPH_C32(0x13c804d8),
+	  SPH_C32(0xa7d55dce), SPH_C32(0xf83f0600), SPH_C32(0xeb00ac91),
+	  SPH_C32(0xe15ef5f3), SPH_C32(0xc387dc78) },
+	{ SPH_C32(0xf7841a00), SPH_C32(0x504bcd72), SPH_C32(0x732dfd2a),
+	  SPH_C32(0x39c128b8), SPH_C32(0x16190600), SPH_C32(0xf94bc4af),
+	  SPH_C32(0x619c237c), SPH_C32(0xf8747754) },
+	{ SPH_C32(0x31241c00), SPH_C32(0x508fe908), SPH_C32(0xfccf9ab6),
+	  SPH_C32(0x15abda34), SPH_C32(0xa51c0400), SPH_C32(0xc9e37763),
+	  SPH_C32(0x6b0b3f35), SPH_C32(0x421fe9c4) },
+	{ SPH_C32(0x969c1e00), SPH_C32(0x4f9d6d3b), SPH_C32(0x9c2a6344),
+	  SPH_C32(0x8bbfaf42), SPH_C32(0x4b3a0400), SPH_C32(0xdba81f5d),
+	  SPH_C32(0xebc9e9ba), SPH_C32(0x79ec42e8) },
+	{ SPH_C32(0xdf021c00), SPH_C32(0x42c48136), SPH_C32(0x7c0d4c39),
+	  SPH_C32(0x2e587118), SPH_C32(0xec820600), SPH_C32(0xc4ba9b6e),
+	  SPH_C32(0x8b2c1048), SPH_C32(0xe7f8379e) },
+	{ SPH_C32(0x78ba1e00), SPH_C32(0x5dd60505), SPH_C32(0x1ce8b5cb),
+	  SPH_C32(0xb04c046e), SPH_C32(0x02a40600), SPH_C32(0xd6f1f350),
+	  SPH_C32(0x0beec6c7), SPH_C32(0xdc0b9cb2) },
+	{ SPH_C32(0x951e1000), SPH_C32(0x0e72ce03), SPH_C32(0x37ef9ef8),
+	  SPH_C32(0x0580e8e1), SPH_C32(0xf4100800), SPH_C32(0xecfdefea),
+	  SPH_C32(0x754b5d13), SPH_C32(0x6d2d5a84) },
+	{ SPH_C32(0x32a61200), SPH_C32(0x11604a30), SPH_C32(0x570a670a),
+	  SPH_C32(0x9b949d97), SPH_C32(0x1a360800), SPH_C32(0xfeb687d4),
+	  SPH_C32(0xf5898b9c), SPH_C32(0x56def1a8) },
+	{ SPH_C32(0x7b381000), SPH_C32(0x1c39a63d), SPH_C32(0xb72d4877),
+	  SPH_C32(0x3e7343cd), SPH_C32(0xbd8e0a00), SPH_C32(0xe1a403e7),
+	  SPH_C32(0x956c726e), SPH_C32(0xc8ca84de) },
+	{ SPH_C32(0xdc801200), SPH_C32(0x032b220e), SPH_C32(0xd7c8b185),
+	  SPH_C32(0xa06736bb), SPH_C32(0x53a80a00), SPH_C32(0xf3ef6bd9),
+	  SPH_C32(0x15aea4e1), SPH_C32(0xf3392ff2) },
+	{ SPH_C32(0x1a201400), SPH_C32(0x03ef0674), SPH_C32(0x582ad619),
+	  SPH_C32(0x8c0dc437), SPH_C32(0xe0ad0800), SPH_C32(0xc347d815),
+	  SPH_C32(0x1f39b8a8), SPH_C32(0x4952b162) },
+	{ SPH_C32(0xbd981600), SPH_C32(0x1cfd8247), SPH_C32(0x38cf2feb),
+	  SPH_C32(0x1219b141), SPH_C32(0x0e8b0800), SPH_C32(0xd10cb02b),
+	  SPH_C32(0x9ffb6e27), SPH_C32(0x72a11a4e) },
+	{ SPH_C32(0xf4061400), SPH_C32(0x11a46e4a), SPH_C32(0xd8e80096),
+	  SPH_C32(0xb7fe6f1b), SPH_C32(0xa9330a00), SPH_C32(0xce1e3418),
+	  SPH_C32(0xff1e97d5), SPH_C32(0xecb56f38) },
+	{ SPH_C32(0x53be1600), SPH_C32(0x0eb6ea79), SPH_C32(0xb80df964),
+	  SPH_C32(0x29ea1a6d), SPH_C32(0x47150a00), SPH_C32(0xdc555c26),
+	  SPH_C32(0x7fdc415a), SPH_C32(0xd746c414) },
+	{ SPH_C32(0x81a31000), SPH_C32(0x21c8f9fc), SPH_C32(0x5d9d7b43),
+	  SPH_C32(0x21ff0307), SPH_C32(0x6f930c00), SPH_C32(0xceda1062),
+	  SPH_C32(0x70fcf049), SPH_C32(0xc0df9db4) },
+	{ SPH_C32(0x261b1200), SPH_C32(0x3eda7dcf), SPH_C32(0x3d7882b1),
+	  SPH_C32(0xbfeb7671), SPH_C32(0x81b50c00), SPH_C32(0xdc91785c),
+	  SPH_C32(0xf03e26c6), SPH_C32(0xfb2c3698) },
+	{ SPH_C32(0x6f851000), SPH_C32(0x338391c2), SPH_C32(0xdd5fadcc),
+	  SPH_C32(0x1a0ca82b), SPH_C32(0x260d0e00), SPH_C32(0xc383fc6f),
+	  SPH_C32(0x90dbdf34), SPH_C32(0x653843ee) },
+	{ SPH_C32(0xc83d1200), SPH_C32(0x2c9115f1), SPH_C32(0xbdba543e),
+	  SPH_C32(0x8418dd5d), SPH_C32(0xc82b0e00), SPH_C32(0xd1c89451),
+	  SPH_C32(0x101909bb), SPH_C32(0x5ecbe8c2) },
+	{ SPH_C32(0x0e9d1400), SPH_C32(0x2c55318b), SPH_C32(0x325833a2),
+	  SPH_C32(0xa8722fd1), SPH_C32(0x7b2e0c00), SPH_C32(0xe160279d),
+	  SPH_C32(0x1a8e15f2), SPH_C32(0xe4a07652) },
+	{ SPH_C32(0xa9251600), SPH_C32(0x3347b5b8), SPH_C32(0x52bdca50),
+	  SPH_C32(0x36665aa7), SPH_C32(0x95080c00), SPH_C32(0xf32b4fa3),
+	  SPH_C32(0x9a4cc37d), SPH_C32(0xdf53dd7e) },
+	{ SPH_C32(0xe0bb1400), SPH_C32(0x3e1e59b5), SPH_C32(0xb29ae52d),
+	  SPH_C32(0x938184fd), SPH_C32(0x32b00e00), SPH_C32(0xec39cb90),
+	  SPH_C32(0xfaa93a8f), SPH_C32(0x4147a808) },
+	{ SPH_C32(0x47031600), SPH_C32(0x210cdd86), SPH_C32(0xd27f1cdf),
+	  SPH_C32(0x0d95f18b), SPH_C32(0xdc960e00), SPH_C32(0xfe72a3ae),
+	  SPH_C32(0x7a6bec00), SPH_C32(0x7ab40324) },
+	{ SPH_C32(0x4b2c1800), SPH_C32(0x26f19efd), SPH_C32(0x466ab43f),
+	  SPH_C32(0xa33f7777), SPH_C32(0x159b0800), SPH_C32(0xb8a46797),
+	  SPH_C32(0xca59dec0), SPH_C32(0x764b30f7) },
+	{ SPH_C32(0xec941a00), SPH_C32(0x39e31ace), SPH_C32(0x268f4dcd),
+	  SPH_C32(0x3d2b0201), SPH_C32(0xfbbd0800), SPH_C32(0xaaef0fa9),
+	  SPH_C32(0x4a9b084f), SPH_C32(0x4db89bdb) },
+	{ SPH_C32(0xa50a1800), SPH_C32(0x34baf6c3), SPH_C32(0xc6a862b0),
+	  SPH_C32(0x98ccdc5b), SPH_C32(0x5c050a00), SPH_C32(0xb5fd8b9a),
+	  SPH_C32(0x2a7ef1bd), SPH_C32(0xd3aceead) },
+	{ SPH_C32(0x02b21a00), SPH_C32(0x2ba872f0), SPH_C32(0xa64d9b42),
+	  SPH_C32(0x06d8a92d), SPH_C32(0xb2230a00), SPH_C32(0xa7b6e3a4),
+	  SPH_C32(0xaabc2732), SPH_C32(0xe85f4581) },
+	{ SPH_C32(0xc4121c00), SPH_C32(0x2b6c568a), SPH_C32(0x29affcde),
+	  SPH_C32(0x2ab25ba1), SPH_C32(0x01260800), SPH_C32(0x971e5068),
+	  SPH_C32(0xa02b3b7b), SPH_C32(0x5234db11) },
+	{ SPH_C32(0x63aa1e00), SPH_C32(0x347ed2b9), SPH_C32(0x494a052c),
+	  SPH_C32(0xb4a62ed7), SPH_C32(0xef000800), SPH_C32(0x85553856),
+	  SPH_C32(0x20e9edf4), SPH_C32(0x69c7703d) },
+	{ SPH_C32(0x2a341c00), SPH_C32(0x39273eb4), SPH_C32(0xa96d2a51),
+	  SPH_C32(0x1141f08d), SPH_C32(0x48b80a00), SPH_C32(0x9a47bc65),
+	  SPH_C32(0x400c1406), SPH_C32(0xf7d3054b) },
+	{ SPH_C32(0x8d8c1e00), SPH_C32(0x2635ba87), SPH_C32(0xc988d3a3),
+	  SPH_C32(0x8f5585fb), SPH_C32(0xa69e0a00), SPH_C32(0x880cd45b),
+	  SPH_C32(0xc0cec289), SPH_C32(0xcc20ae67) },
+	{ SPH_C32(0x5f911800), SPH_C32(0x094ba902), SPH_C32(0x2c185184),
+	  SPH_C32(0x87409c91), SPH_C32(0x8e180c00), SPH_C32(0x9a83981f),
+	  SPH_C32(0xcfee739a), SPH_C32(0xdbb9f7c7) },
+	{ SPH_C32(0xf8291a00), SPH_C32(0x16592d31), SPH_C32(0x4cfda876),
+	  SPH_C32(0x1954e9e7), SPH_C32(0x603e0c00), SPH_C32(0x88c8f021),
+	  SPH_C32(0x4f2ca515), SPH_C32(0xe04a5ceb) },
+	{ SPH_C32(0xb1b71800), SPH_C32(0x1b00c13c), SPH_C32(0xacda870b),
+	  SPH_C32(0xbcb337bd), SPH_C32(0xc7860e00), SPH_C32(0x97da7412),
+	  SPH_C32(0x2fc95ce7), SPH_C32(0x7e5e299d) },
+	{ SPH_C32(0x160f1a00), SPH_C32(0x0412450f), SPH_C32(0xcc3f7ef9),
+	  SPH_C32(0x22a742cb), SPH_C32(0x29a00e00), SPH_C32(0x85911c2c),
+	  SPH_C32(0xaf0b8a68), SPH_C32(0x45ad82b1) },
+	{ SPH_C32(0xd0af1c00), SPH_C32(0x04d66175), SPH_C32(0x43dd1965),
+	  SPH_C32(0x0ecdb047), SPH_C32(0x9aa50c00), SPH_C32(0xb539afe0),
+	  SPH_C32(0xa59c9621), SPH_C32(0xffc61c21) },
+	{ SPH_C32(0x77171e00), SPH_C32(0x1bc4e546), SPH_C32(0x2338e097),
+	  SPH_C32(0x90d9c531), SPH_C32(0x74830c00), SPH_C32(0xa772c7de),
+	  SPH_C32(0x255e40ae), SPH_C32(0xc435b70d) },
+	{ SPH_C32(0x3e891c00), SPH_C32(0x169d094b), SPH_C32(0xc31fcfea),
+	  SPH_C32(0x353e1b6b), SPH_C32(0xd33b0e00), SPH_C32(0xb86043ed),
+	  SPH_C32(0x45bbb95c), SPH_C32(0x5a21c27b) },
+	{ SPH_C32(0x99311e00), SPH_C32(0x098f8d78), SPH_C32(0xa3fa3618),
+	  SPH_C32(0xab2a6e1d), SPH_C32(0x3d1d0e00), SPH_C32(0xaa2b2bd3),
+	  SPH_C32(0xc5796fd3), SPH_C32(0x61d26957) }
+};
+
+static const sph_u32 T256_14[128][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c), SPH_C32(0x4fcc6651),
+	  SPH_C32(0x408a1b7d), SPH_C32(0x86610020), SPH_C32(0xe89072d0),
+	  SPH_C32(0xdd3be10a), SPH_C32(0xf3310573) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x24d90000), SPH_C32(0x69779726), SPH_C32(0x24f5ad0e),
+	  SPH_C32(0x119ea5b3), SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae),
+	  SPH_C32(0xeb5e8aa2), SPH_C32(0xd0523f76) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x69170040), SPH_C32(0x522c7b58), SPH_C32(0x1290c6a6),
+	  SPH_C32(0x32fd9fb6), SPH_C32(0xb3040060), SPH_C32(0x7306c49a),
+	  SPH_C32(0xb6022a55), SPH_C32(0xa225bbbd) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x07a00080), SPH_C32(0x8cb5d5fe), SPH_C32(0xbb6d61ac),
+	  SPH_C32(0x908b934b), SPH_C32(0xc76c0020), SPH_C32(0x02ea7b0f),
+	  SPH_C32(0x512948b6), SPH_C32(0x36343593) },
+	{ SPH_C32(0x161c00c0), SPH_C32(0x7e54f492), SPH_C32(0xf4a107fd),
+	  SPH_C32(0xd0018836), SPH_C32(0x410d0000), SPH_C32(0xea7a09df),
+	  SPH_C32(0x8c12a9bc), SPH_C32(0xc50530e0) },
+	{ SPH_C32(0x4a6e00c0), SPH_C32(0xb7ee3980), SPH_C32(0x8d080a04),
+	  SPH_C32(0xb3e8a94e), SPH_C32(0xbfc70020), SPH_C32(0xa227213b),
+	  SPH_C32(0x0c75e841), SPH_C32(0x4443b158) },
+	{ SPH_C32(0x23790080), SPH_C32(0xe5c242d8), SPH_C32(0x9f98cca2),
+	  SPH_C32(0x811536f8), SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1),
+	  SPH_C32(0xba77c214), SPH_C32(0xe6660ae5) },
+	{ SPH_C32(0x7f0b0080), SPH_C32(0x2c788fca), SPH_C32(0xe631c15b),
+	  SPH_C32(0xe2fc1780), SPH_C32(0xf2090060), SPH_C32(0x997ccd45),
+	  SPH_C32(0x3a1083e9), SPH_C32(0x67208b5d) },
+	{ SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6), SPH_C32(0xa9fda70a),
+	  SPH_C32(0xa2760cfd), SPH_C32(0x74680040), SPH_C32(0x71ecbf95),
+	  SPH_C32(0xe72b62e3), SPH_C32(0x94118e2e) },
+	{ SPH_C32(0x32c500c0), SPH_C32(0x172363b4), SPH_C32(0xd054aaf3),
+	  SPH_C32(0xc19f2d85), SPH_C32(0x8aa20060), SPH_C32(0x39b19771),
+	  SPH_C32(0x674c231e), SPH_C32(0x15570f96) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x65d40000), SPH_C32(0x830d9ef9), SPH_C32(0xa8e704b2),
+	  SPH_C32(0xd49b9553), SPH_C32(0x9cbe00a0), SPH_C32(0x47e563e3),
+	  SPH_C32(0x93ed24e3), SPH_C32(0xc55687a0) },
+	{ SPH_C32(0x74680040), SPH_C32(0x71ecbf95), SPH_C32(0xe72b62e3),
+	  SPH_C32(0x94118e2e), SPH_C32(0x1adf0080), SPH_C32(0xaf751133),
+	  SPH_C32(0x4ed6c5e9), SPH_C32(0x366782d3) },
+	{ SPH_C32(0x281a0040), SPH_C32(0xb8567287), SPH_C32(0x9e826f1a),
+	  SPH_C32(0xf7f8af56), SPH_C32(0xe41500a0), SPH_C32(0xe72839d7),
+	  SPH_C32(0xceb18414), SPH_C32(0xb721036b) },
+	{ SPH_C32(0x410d0000), SPH_C32(0xea7a09df), SPH_C32(0x8c12a9bc),
+	  SPH_C32(0xc50530e0), SPH_C32(0x571100c0), SPH_C32(0x942efd4d),
+	  SPH_C32(0x78b3ae41), SPH_C32(0x1504b8d6) },
+	{ SPH_C32(0x1d7f0000), SPH_C32(0x23c0c4cd), SPH_C32(0xf5bba445),
+	  SPH_C32(0xa6ec1198), SPH_C32(0xa9db00e0), SPH_C32(0xdc73d5a9),
+	  SPH_C32(0xf8d4efbc), SPH_C32(0x9442396e) },
+	{ SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1), SPH_C32(0xba77c214),
+	  SPH_C32(0xe6660ae5), SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779),
+	  SPH_C32(0x25ef0eb6), SPH_C32(0x67733c1d) },
+	{ SPH_C32(0x50b10040), SPH_C32(0x189b28b3), SPH_C32(0xc3decfed),
+	  SPH_C32(0x858f2b9d), SPH_C32(0xd17000e0), SPH_C32(0x7cbe8f9d),
+	  SPH_C32(0xa5884f4b), SPH_C32(0xe635bda5) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0x3e060080), SPH_C32(0xc6028615), SPH_C32(0x6a2368e7),
+	  SPH_C32(0x27f92760), SPH_C32(0xa51800a0), SPH_C32(0x0d523008),
+	  SPH_C32(0x42a32da8), SPH_C32(0x7224338b) },
+	{ SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779), SPH_C32(0x25ef0eb6),
+	  SPH_C32(0x67733c1d), SPH_C32(0x23790080), SPH_C32(0xe5c242d8),
+	  SPH_C32(0x9f98cca2), SPH_C32(0x811536f8) },
+	{ SPH_C32(0x73c800c0), SPH_C32(0xfd596a6b), SPH_C32(0x5c46034f),
+	  SPH_C32(0x049a1d65), SPH_C32(0xddb300a0), SPH_C32(0xad9f6a3c),
+	  SPH_C32(0x1fff8d5f), SPH_C32(0x0053b740) },
+	{ SPH_C32(0x1adf0080), SPH_C32(0xaf751133), SPH_C32(0x4ed6c5e9),
+	  SPH_C32(0x366782d3), SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6),
+	  SPH_C32(0xa9fda70a), SPH_C32(0xa2760cfd) },
+	{ SPH_C32(0x46ad0080), SPH_C32(0x66cfdc21), SPH_C32(0x377fc810),
+	  SPH_C32(0x558ea3ab), SPH_C32(0x907d00e0), SPH_C32(0x96c48642),
+	  SPH_C32(0x299ae6f7), SPH_C32(0x23308d45) },
+	{ SPH_C32(0x571100c0), SPH_C32(0x942efd4d), SPH_C32(0x78b3ae41),
+	  SPH_C32(0x1504b8d6), SPH_C32(0x161c00c0), SPH_C32(0x7e54f492),
+	  SPH_C32(0xf4a107fd), SPH_C32(0xd0018836) },
+	{ SPH_C32(0x0b6300c0), SPH_C32(0x5d94305f), SPH_C32(0x011aa3b8),
+	  SPH_C32(0x76ed99ae), SPH_C32(0xe8d600e0), SPH_C32(0x3609dc76),
+	  SPH_C32(0x74c64600), SPH_C32(0x5147098e) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0xebd60100), SPH_C32(0x43a5fcca), SPH_C32(0xfc20d552),
+	  SPH_C32(0x852d451c), SPH_C32(0x8d860020), SPH_C32(0xdd328f32),
+	  SPH_C32(0x22fa536a), SPH_C32(0xefa3e9ec) },
+	{ SPH_C32(0xfa6a0140), SPH_C32(0xb144dda6), SPH_C32(0xb3ecb303),
+	  SPH_C32(0xc5a75e61), SPH_C32(0x0be70000), SPH_C32(0x35a2fde2),
+	  SPH_C32(0xffc1b260), SPH_C32(0x1c92ec9f) },
+	{ SPH_C32(0xa6180140), SPH_C32(0x78fe10b4), SPH_C32(0xca45befa),
+	  SPH_C32(0xa64e7f19), SPH_C32(0xf52d0020), SPH_C32(0x7dffd506),
+	  SPH_C32(0x7fa6f39d), SPH_C32(0x9dd46d27) },
+	{ SPH_C32(0xcf0f0100), SPH_C32(0x2ad26bec), SPH_C32(0xd8d5785c),
+	  SPH_C32(0x94b3e0af), SPH_C32(0x46290040), SPH_C32(0x0ef9119c),
+	  SPH_C32(0xc9a4d9c8), SPH_C32(0x3ff1d69a) },
+	{ SPH_C32(0x937d0100), SPH_C32(0xe368a6fe), SPH_C32(0xa17c75a5),
+	  SPH_C32(0xf75ac1d7), SPH_C32(0xb8e30060), SPH_C32(0x46a43978),
+	  SPH_C32(0x49c39835), SPH_C32(0xbeb75722) },
+	{ SPH_C32(0x82c10140), SPH_C32(0x11898792), SPH_C32(0xeeb013f4),
+	  SPH_C32(0xb7d0daaa), SPH_C32(0x3e820040), SPH_C32(0xae344ba8),
+	  SPH_C32(0x94f8793f), SPH_C32(0x4d865251) },
+	{ SPH_C32(0xdeb30140), SPH_C32(0xd8334a80), SPH_C32(0x97191e0d),
+	  SPH_C32(0xd439fbd2), SPH_C32(0xc0480060), SPH_C32(0xe669634c),
+	  SPH_C32(0x149f38c2), SPH_C32(0xccc0d3e9) },
+	{ SPH_C32(0xec760180), SPH_C32(0xcf102934), SPH_C32(0x474db4fe),
+	  SPH_C32(0x15a6d657), SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d),
+	  SPH_C32(0x73d31bdc), SPH_C32(0xd997dc7f) },
+	{ SPH_C32(0xb0040180), SPH_C32(0x06aae426), SPH_C32(0x3ee4b907),
+	  SPH_C32(0x764ff72f), SPH_C32(0xb4200020), SPH_C32(0x9785dcd9),
+	  SPH_C32(0xf3b45a21), SPH_C32(0x58d15dc7) },
+	{ SPH_C32(0xa1b801c0), SPH_C32(0xf44bc54a), SPH_C32(0x7128df56),
+	  SPH_C32(0x36c5ec52), SPH_C32(0x32410000), SPH_C32(0x7f15ae09),
+	  SPH_C32(0x2e8fbb2b), SPH_C32(0xabe058b4) },
+	{ SPH_C32(0xfdca01c0), SPH_C32(0x3df10858), SPH_C32(0x0881d2af),
+	  SPH_C32(0x552ccd2a), SPH_C32(0xcc8b0020), SPH_C32(0x374886ed),
+	  SPH_C32(0xaee8fad6), SPH_C32(0x2aa6d90c) },
+	{ SPH_C32(0x94dd0180), SPH_C32(0x6fdd7300), SPH_C32(0x1a111409),
+	  SPH_C32(0x67d1529c), SPH_C32(0x7f8f0040), SPH_C32(0x444e4277),
+	  SPH_C32(0x18ead083), SPH_C32(0x888362b1) },
+	{ SPH_C32(0xc8af0180), SPH_C32(0xa667be12), SPH_C32(0x63b819f0),
+	  SPH_C32(0x043873e4), SPH_C32(0x81450060), SPH_C32(0x0c136a93),
+	  SPH_C32(0x988d917e), SPH_C32(0x09c5e309) },
+	{ SPH_C32(0xd91301c0), SPH_C32(0x54869f7e), SPH_C32(0x2c747fa1),
+	  SPH_C32(0x44b26899), SPH_C32(0x07240040), SPH_C32(0xe4831843),
+	  SPH_C32(0x45b67074), SPH_C32(0xfaf4e67a) },
+	{ SPH_C32(0x856101c0), SPH_C32(0x9d3c526c), SPH_C32(0x55dd7258),
+	  SPH_C32(0x275b49e1), SPH_C32(0xf9ee0060), SPH_C32(0xacde30a7),
+	  SPH_C32(0xc5d13189), SPH_C32(0x7bb267c2) },
+	{ SPH_C32(0x8e020100), SPH_C32(0xc0a86233), SPH_C32(0x54c7d1e0),
+	  SPH_C32(0x51b6d04f), SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1),
+	  SPH_C32(0xb1177789), SPH_C32(0x2af56e4c) },
+	{ SPH_C32(0xd2700100), SPH_C32(0x0912af21), SPH_C32(0x2d6edc19),
+	  SPH_C32(0x325ff137), SPH_C32(0xeff200a0), SPH_C32(0xd28ac435),
+	  SPH_C32(0x31703674), SPH_C32(0xabb3eff4) },
+	{ SPH_C32(0xc3cc0140), SPH_C32(0xfbf38e4d), SPH_C32(0x62a2ba48),
+	  SPH_C32(0x72d5ea4a), SPH_C32(0x69930080), SPH_C32(0x3a1ab6e5),
+	  SPH_C32(0xec4bd77e), SPH_C32(0x5882ea87) },
+	{ SPH_C32(0x9fbe0140), SPH_C32(0x3249435f), SPH_C32(0x1b0bb7b1),
+	  SPH_C32(0x113ccb32), SPH_C32(0x975900a0), SPH_C32(0x72479e01),
+	  SPH_C32(0x6c2c9683), SPH_C32(0xd9c46b3f) },
+	{ SPH_C32(0xf6a90100), SPH_C32(0x60653807), SPH_C32(0x099b7117),
+	  SPH_C32(0x23c15484), SPH_C32(0x245d00c0), SPH_C32(0x01415a9b),
+	  SPH_C32(0xda2ebcd6), SPH_C32(0x7be1d082) },
+	{ SPH_C32(0xaadb0100), SPH_C32(0xa9dff515), SPH_C32(0x70327cee),
+	  SPH_C32(0x402875fc), SPH_C32(0xda9700e0), SPH_C32(0x491c727f),
+	  SPH_C32(0x5a49fd2b), SPH_C32(0xfaa7513a) },
+	{ SPH_C32(0xbb670140), SPH_C32(0x5b3ed479), SPH_C32(0x3ffe1abf),
+	  SPH_C32(0x00a26e81), SPH_C32(0x5cf600c0), SPH_C32(0xa18c00af),
+	  SPH_C32(0x87721c21), SPH_C32(0x09965449) },
+	{ SPH_C32(0xe7150140), SPH_C32(0x9284196b), SPH_C32(0x46571746),
+	  SPH_C32(0x634b4ff9), SPH_C32(0xa23c00e0), SPH_C32(0xe9d1284b),
+	  SPH_C32(0x07155ddc), SPH_C32(0x88d0d5f1) },
+	{ SPH_C32(0xd5d00180), SPH_C32(0x85a77adf), SPH_C32(0x9603bdb5),
+	  SPH_C32(0xa2d4627c), SPH_C32(0x289e0080), SPH_C32(0xd060bf3a),
+	  SPH_C32(0x60597ec2), SPH_C32(0x9d87da67) },
+	{ SPH_C32(0x89a20180), SPH_C32(0x4c1db7cd), SPH_C32(0xefaab04c),
+	  SPH_C32(0xc13d4304), SPH_C32(0xd65400a0), SPH_C32(0x983d97de),
+	  SPH_C32(0xe03e3f3f), SPH_C32(0x1cc15bdf) },
+	{ SPH_C32(0x981e01c0), SPH_C32(0xbefc96a1), SPH_C32(0xa066d61d),
+	  SPH_C32(0x81b75879), SPH_C32(0x50350080), SPH_C32(0x70ade50e),
+	  SPH_C32(0x3d05de35), SPH_C32(0xeff05eac) },
+	{ SPH_C32(0xc46c01c0), SPH_C32(0x77465bb3), SPH_C32(0xd9cfdbe4),
+	  SPH_C32(0xe25e7901), SPH_C32(0xaeff00a0), SPH_C32(0x38f0cdea),
+	  SPH_C32(0xbd629fc8), SPH_C32(0x6eb6df14) },
+	{ SPH_C32(0xad7b0180), SPH_C32(0x256a20eb), SPH_C32(0xcb5f1d42),
+	  SPH_C32(0xd0a3e6b7), SPH_C32(0x1dfb00c0), SPH_C32(0x4bf60970),
+	  SPH_C32(0x0b60b59d), SPH_C32(0xcc9364a9) },
+	{ SPH_C32(0xf1090180), SPH_C32(0xecd0edf9), SPH_C32(0xb2f610bb),
+	  SPH_C32(0xb34ac7cf), SPH_C32(0xe33100e0), SPH_C32(0x03ab2194),
+	  SPH_C32(0x8b07f460), SPH_C32(0x4dd5e511) },
+	{ SPH_C32(0xe0b501c0), SPH_C32(0x1e31cc95), SPH_C32(0xfd3a76ea),
+	  SPH_C32(0xf3c0dcb2), SPH_C32(0x655000c0), SPH_C32(0xeb3b5344),
+	  SPH_C32(0x563c156a), SPH_C32(0xbee4e062) },
+	{ SPH_C32(0xbcc701c0), SPH_C32(0xd78b0187), SPH_C32(0x84937b13),
+	  SPH_C32(0x9029fdca), SPH_C32(0x9b9a00e0), SPH_C32(0xa3667ba0),
+	  SPH_C32(0xd65b5497), SPH_C32(0x3fa261da) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0x2f3e0000), SPH_C32(0x5cd56ac4), SPH_C32(0xdb341f6e),
+	  SPH_C32(0x0d0c492c), SPH_C32(0x3a220120), SPH_C32(0x572dbeea),
+	  SPH_C32(0xa7738bc1), SPH_C32(0x09678d88) },
+	{ SPH_C32(0x3e820040), SPH_C32(0xae344ba8), SPH_C32(0x94f8793f),
+	  SPH_C32(0x4d865251), SPH_C32(0xbc430100), SPH_C32(0xbfbdcc3a),
+	  SPH_C32(0x7a486acb), SPH_C32(0xfa5688fb) },
+	{ SPH_C32(0x62f00040), SPH_C32(0x678e86ba), SPH_C32(0xed5174c6),
+	  SPH_C32(0x2e6f7329), SPH_C32(0x42890120), SPH_C32(0xf7e0e4de),
+	  SPH_C32(0xfa2f2b36), SPH_C32(0x7b100943) },
+	{ SPH_C32(0x0be70000), SPH_C32(0x35a2fde2), SPH_C32(0xffc1b260),
+	  SPH_C32(0x1c92ec9f), SPH_C32(0xf18d0140), SPH_C32(0x84e62044),
+	  SPH_C32(0x4c2d0163), SPH_C32(0xd935b2fe) },
+	{ SPH_C32(0x57950000), SPH_C32(0xfc1830f0), SPH_C32(0x8668bf99),
+	  SPH_C32(0x7f7bcde7), SPH_C32(0x0f470160), SPH_C32(0xccbb08a0),
+	  SPH_C32(0xcc4a409e), SPH_C32(0x58733346) },
+	{ SPH_C32(0x46290040), SPH_C32(0x0ef9119c), SPH_C32(0xc9a4d9c8),
+	  SPH_C32(0x3ff1d69a), SPH_C32(0x89260140), SPH_C32(0x242b7a70),
+	  SPH_C32(0x1171a194), SPH_C32(0xab423635) },
+	{ SPH_C32(0x1a5b0040), SPH_C32(0xc743dc8e), SPH_C32(0xb00dd431),
+	  SPH_C32(0x5c18f7e2), SPH_C32(0x77ec0160), SPH_C32(0x6c765294),
+	  SPH_C32(0x9116e069), SPH_C32(0x2a04b78d) },
+	{ SPH_C32(0x289e0080), SPH_C32(0xd060bf3a), SPH_C32(0x60597ec2),
+	  SPH_C32(0x9d87da67), SPH_C32(0xfd4e0100), SPH_C32(0x55c7c5e5),
+	  SPH_C32(0xf65ac377), SPH_C32(0x3f53b81b) },
+	{ SPH_C32(0x74ec0080), SPH_C32(0x19da7228), SPH_C32(0x19f0733b),
+	  SPH_C32(0xfe6efb1f), SPH_C32(0x03840120), SPH_C32(0x1d9aed01),
+	  SPH_C32(0x763d828a), SPH_C32(0xbe1539a3) },
+	{ SPH_C32(0x655000c0), SPH_C32(0xeb3b5344), SPH_C32(0x563c156a),
+	  SPH_C32(0xbee4e062), SPH_C32(0x85e50100), SPH_C32(0xf50a9fd1),
+	  SPH_C32(0xab066380), SPH_C32(0x4d243cd0) },
+	{ SPH_C32(0x392200c0), SPH_C32(0x22819e56), SPH_C32(0x2f951893),
+	  SPH_C32(0xdd0dc11a), SPH_C32(0x7b2f0120), SPH_C32(0xbd57b735),
+	  SPH_C32(0x2b61227d), SPH_C32(0xcc62bd68) },
+	{ SPH_C32(0x50350080), SPH_C32(0x70ade50e), SPH_C32(0x3d05de35),
+	  SPH_C32(0xeff05eac), SPH_C32(0xc82b0140), SPH_C32(0xce5173af),
+	  SPH_C32(0x9d630828), SPH_C32(0x6e4706d5) },
+	{ SPH_C32(0x0c470080), SPH_C32(0xb917281c), SPH_C32(0x44acd3cc),
+	  SPH_C32(0x8c197fd4), SPH_C32(0x36e10160), SPH_C32(0x860c5b4b),
+	  SPH_C32(0x1d0449d5), SPH_C32(0xef01876d) },
+	{ SPH_C32(0x1dfb00c0), SPH_C32(0x4bf60970), SPH_C32(0x0b60b59d),
+	  SPH_C32(0xcc9364a9), SPH_C32(0xb0800140), SPH_C32(0x6e9c299b),
+	  SPH_C32(0xc03fa8df), SPH_C32(0x1c30821e) },
+	{ SPH_C32(0x418900c0), SPH_C32(0x824cc462), SPH_C32(0x72c9b864),
+	  SPH_C32(0xaf7a45d1), SPH_C32(0x4e4a0160), SPH_C32(0x26c1017f),
+	  SPH_C32(0x4058e922), SPH_C32(0x9d7603a6) },
+	{ SPH_C32(0x4aea0000), SPH_C32(0xdfd8f43d), SPH_C32(0x73d31bdc),
+	  SPH_C32(0xd997dc7f), SPH_C32(0xa69c0180), SPH_C32(0x10c8dd09),
+	  SPH_C32(0x349eaf22), SPH_C32(0xcc310a28) },
+	{ SPH_C32(0x16980000), SPH_C32(0x1662392f), SPH_C32(0x0a7a1625),
+	  SPH_C32(0xba7efd07), SPH_C32(0x585601a0), SPH_C32(0x5895f5ed),
+	  SPH_C32(0xb4f9eedf), SPH_C32(0x4d778b90) },
+	{ SPH_C32(0x07240040), SPH_C32(0xe4831843), SPH_C32(0x45b67074),
+	  SPH_C32(0xfaf4e67a), SPH_C32(0xde370180), SPH_C32(0xb005873d),
+	  SPH_C32(0x69c20fd5), SPH_C32(0xbe468ee3) },
+	{ SPH_C32(0x5b560040), SPH_C32(0x2d39d551), SPH_C32(0x3c1f7d8d),
+	  SPH_C32(0x991dc702), SPH_C32(0x20fd01a0), SPH_C32(0xf858afd9),
+	  SPH_C32(0xe9a54e28), SPH_C32(0x3f000f5b) },
+	{ SPH_C32(0x32410000), SPH_C32(0x7f15ae09), SPH_C32(0x2e8fbb2b),
+	  SPH_C32(0xabe058b4), SPH_C32(0x93f901c0), SPH_C32(0x8b5e6b43),
+	  SPH_C32(0x5fa7647d), SPH_C32(0x9d25b4e6) },
+	{ SPH_C32(0x6e330000), SPH_C32(0xb6af631b), SPH_C32(0x5726b6d2),
+	  SPH_C32(0xc80979cc), SPH_C32(0x6d3301e0), SPH_C32(0xc30343a7),
+	  SPH_C32(0xdfc02580), SPH_C32(0x1c63355e) },
+	{ SPH_C32(0x7f8f0040), SPH_C32(0x444e4277), SPH_C32(0x18ead083),
+	  SPH_C32(0x888362b1), SPH_C32(0xeb5201c0), SPH_C32(0x2b933177),
+	  SPH_C32(0x02fbc48a), SPH_C32(0xef52302d) },
+	{ SPH_C32(0x23fd0040), SPH_C32(0x8df48f65), SPH_C32(0x6143dd7a),
+	  SPH_C32(0xeb6a43c9), SPH_C32(0x159801e0), SPH_C32(0x63ce1993),
+	  SPH_C32(0x829c8577), SPH_C32(0x6e14b195) },
+	{ SPH_C32(0x11380080), SPH_C32(0x9ad7ecd1), SPH_C32(0xb1177789),
+	  SPH_C32(0x2af56e4c), SPH_C32(0x9f3a0180), SPH_C32(0x5a7f8ee2),
+	  SPH_C32(0xe5d0a669), SPH_C32(0x7b43be03) },
+	{ SPH_C32(0x4d4a0080), SPH_C32(0x536d21c3), SPH_C32(0xc8be7a70),
+	  SPH_C32(0x491c4f34), SPH_C32(0x61f001a0), SPH_C32(0x1222a606),
+	  SPH_C32(0x65b7e794), SPH_C32(0xfa053fbb) },
+	{ SPH_C32(0x5cf600c0), SPH_C32(0xa18c00af), SPH_C32(0x87721c21),
+	  SPH_C32(0x09965449), SPH_C32(0xe7910180), SPH_C32(0xfab2d4d6),
+	  SPH_C32(0xb88c069e), SPH_C32(0x09343ac8) },
+	{ SPH_C32(0x008400c0), SPH_C32(0x6836cdbd), SPH_C32(0xfedb11d8),
+	  SPH_C32(0x6a7f7531), SPH_C32(0x195b01a0), SPH_C32(0xb2effc32),
+	  SPH_C32(0x38eb4763), SPH_C32(0x8872bb70) },
+	{ SPH_C32(0x69930080), SPH_C32(0x3a1ab6e5), SPH_C32(0xec4bd77e),
+	  SPH_C32(0x5882ea87), SPH_C32(0xaa5f01c0), SPH_C32(0xc1e938a8),
+	  SPH_C32(0x8ee96d36), SPH_C32(0x2a5700cd) },
+	{ SPH_C32(0x35e10080), SPH_C32(0xf3a07bf7), SPH_C32(0x95e2da87),
+	  SPH_C32(0x3b6bcbff), SPH_C32(0x549501e0), SPH_C32(0x89b4104c),
+	  SPH_C32(0x0e8e2ccb), SPH_C32(0xab118175) },
+	{ SPH_C32(0x245d00c0), SPH_C32(0x01415a9b), SPH_C32(0xda2ebcd6),
+	  SPH_C32(0x7be1d082), SPH_C32(0xd2f401c0), SPH_C32(0x6124629c),
+	  SPH_C32(0xd3b5cdc1), SPH_C32(0x58208406) },
+	{ SPH_C32(0x782f00c0), SPH_C32(0xc8fb9789), SPH_C32(0xa387b12f),
+	  SPH_C32(0x1808f1fa), SPH_C32(0x2c3e01e0), SPH_C32(0x29794a78),
+	  SPH_C32(0x53d28c3c), SPH_C32(0xd96605be) },
+	{ SPH_C32(0xc4e80100), SPH_C32(0x1f70960e), SPH_C32(0x2714ca3c),
+	  SPH_C32(0x88210c30), SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8),
+	  SPH_C32(0x8589d8ab), SPH_C32(0xe6c46464) },
+	{ SPH_C32(0x989a0100), SPH_C32(0xd6ca5b1c), SPH_C32(0x5ebdc7c5),
+	  SPH_C32(0xebc82d48), SPH_C32(0x496e0120), SPH_C32(0xc242193c),
+	  SPH_C32(0x05ee9956), SPH_C32(0x6782e5dc) },
+	{ SPH_C32(0x89260140), SPH_C32(0x242b7a70), SPH_C32(0x1171a194),
+	  SPH_C32(0xab423635), SPH_C32(0xcf0f0100), SPH_C32(0x2ad26bec),
+	  SPH_C32(0xd8d5785c), SPH_C32(0x94b3e0af) },
+	{ SPH_C32(0xd5540140), SPH_C32(0xed91b762), SPH_C32(0x68d8ac6d),
+	  SPH_C32(0xc8ab174d), SPH_C32(0x31c50120), SPH_C32(0x628f4308),
+	  SPH_C32(0x58b239a1), SPH_C32(0x15f56117) },
+	{ SPH_C32(0xbc430100), SPH_C32(0xbfbdcc3a), SPH_C32(0x7a486acb),
+	  SPH_C32(0xfa5688fb), SPH_C32(0x82c10140), SPH_C32(0x11898792),
+	  SPH_C32(0xeeb013f4), SPH_C32(0xb7d0daaa) },
+	{ SPH_C32(0xe0310100), SPH_C32(0x76070128), SPH_C32(0x03e16732),
+	  SPH_C32(0x99bfa983), SPH_C32(0x7c0b0160), SPH_C32(0x59d4af76),
+	  SPH_C32(0x6ed75209), SPH_C32(0x36965b12) },
+	{ SPH_C32(0xf18d0140), SPH_C32(0x84e62044), SPH_C32(0x4c2d0163),
+	  SPH_C32(0xd935b2fe), SPH_C32(0xfa6a0140), SPH_C32(0xb144dda6),
+	  SPH_C32(0xb3ecb303), SPH_C32(0xc5a75e61) },
+	{ SPH_C32(0xadff0140), SPH_C32(0x4d5ced56), SPH_C32(0x35840c9a),
+	  SPH_C32(0xbadc9386), SPH_C32(0x04a00160), SPH_C32(0xf919f542),
+	  SPH_C32(0x338bf2fe), SPH_C32(0x44e1dfd9) },
+	{ SPH_C32(0x9f3a0180), SPH_C32(0x5a7f8ee2), SPH_C32(0xe5d0a669),
+	  SPH_C32(0x7b43be03), SPH_C32(0x8e020100), SPH_C32(0xc0a86233),
+	  SPH_C32(0x54c7d1e0), SPH_C32(0x51b6d04f) },
+	{ SPH_C32(0xc3480180), SPH_C32(0x93c543f0), SPH_C32(0x9c79ab90),
+	  SPH_C32(0x18aa9f7b), SPH_C32(0x70c80120), SPH_C32(0x88f54ad7),
+	  SPH_C32(0xd4a0901d), SPH_C32(0xd0f051f7) },
+	{ SPH_C32(0xd2f401c0), SPH_C32(0x6124629c), SPH_C32(0xd3b5cdc1),
+	  SPH_C32(0x58208406), SPH_C32(0xf6a90100), SPH_C32(0x60653807),
+	  SPH_C32(0x099b7117), SPH_C32(0x23c15484) },
+	{ SPH_C32(0x8e8601c0), SPH_C32(0xa89eaf8e), SPH_C32(0xaa1cc038),
+	  SPH_C32(0x3bc9a57e), SPH_C32(0x08630120), SPH_C32(0x283810e3),
+	  SPH_C32(0x89fc30ea), SPH_C32(0xa287d53c) },
+	{ SPH_C32(0xe7910180), SPH_C32(0xfab2d4d6), SPH_C32(0xb88c069e),
+	  SPH_C32(0x09343ac8), SPH_C32(0xbb670140), SPH_C32(0x5b3ed479),
+	  SPH_C32(0x3ffe1abf), SPH_C32(0x00a26e81) },
+	{ SPH_C32(0xbbe30180), SPH_C32(0x330819c4), SPH_C32(0xc1250b67),
+	  SPH_C32(0x6add1bb0), SPH_C32(0x45ad0160), SPH_C32(0x1363fc9d),
+	  SPH_C32(0xbf995b42), SPH_C32(0x81e4ef39) },
+	{ SPH_C32(0xaa5f01c0), SPH_C32(0xc1e938a8), SPH_C32(0x8ee96d36),
+	  SPH_C32(0x2a5700cd), SPH_C32(0xc3cc0140), SPH_C32(0xfbf38e4d),
+	  SPH_C32(0x62a2ba48), SPH_C32(0x72d5ea4a) },
+	{ SPH_C32(0xf62d01c0), SPH_C32(0x0853f5ba), SPH_C32(0xf74060cf),
+	  SPH_C32(0x49be21b5), SPH_C32(0x3d060160), SPH_C32(0xb3aea6a9),
+	  SPH_C32(0xe2c5fbb5), SPH_C32(0xf3936bf2) },
+	{ SPH_C32(0xfd4e0100), SPH_C32(0x55c7c5e5), SPH_C32(0xf65ac377),
+	  SPH_C32(0x3f53b81b), SPH_C32(0xd5d00180), SPH_C32(0x85a77adf),
+	  SPH_C32(0x9603bdb5), SPH_C32(0xa2d4627c) },
+	{ SPH_C32(0xa13c0100), SPH_C32(0x9c7d08f7), SPH_C32(0x8ff3ce8e),
+	  SPH_C32(0x5cba9963), SPH_C32(0x2b1a01a0), SPH_C32(0xcdfa523b),
+	  SPH_C32(0x1664fc48), SPH_C32(0x2392e3c4) },
+	{ SPH_C32(0xb0800140), SPH_C32(0x6e9c299b), SPH_C32(0xc03fa8df),
+	  SPH_C32(0x1c30821e), SPH_C32(0xad7b0180), SPH_C32(0x256a20eb),
+	  SPH_C32(0xcb5f1d42), SPH_C32(0xd0a3e6b7) },
+	{ SPH_C32(0xecf20140), SPH_C32(0xa726e489), SPH_C32(0xb996a526),
+	  SPH_C32(0x7fd9a366), SPH_C32(0x53b101a0), SPH_C32(0x6d37080f),
+	  SPH_C32(0x4b385cbf), SPH_C32(0x51e5670f) },
+	{ SPH_C32(0x85e50100), SPH_C32(0xf50a9fd1), SPH_C32(0xab066380),
+	  SPH_C32(0x4d243cd0), SPH_C32(0xe0b501c0), SPH_C32(0x1e31cc95),
+	  SPH_C32(0xfd3a76ea), SPH_C32(0xf3c0dcb2) },
+	{ SPH_C32(0xd9970100), SPH_C32(0x3cb052c3), SPH_C32(0xd2af6e79),
+	  SPH_C32(0x2ecd1da8), SPH_C32(0x1e7f01e0), SPH_C32(0x566ce471),
+	  SPH_C32(0x7d5d3717), SPH_C32(0x72865d0a) },
+	{ SPH_C32(0xc82b0140), SPH_C32(0xce5173af), SPH_C32(0x9d630828),
+	  SPH_C32(0x6e4706d5), SPH_C32(0x981e01c0), SPH_C32(0xbefc96a1),
+	  SPH_C32(0xa066d61d), SPH_C32(0x81b75879) },
+	{ SPH_C32(0x94590140), SPH_C32(0x07ebbebd), SPH_C32(0xe4ca05d1),
+	  SPH_C32(0x0dae27ad), SPH_C32(0x66d401e0), SPH_C32(0xf6a1be45),
+	  SPH_C32(0x200197e0), SPH_C32(0x00f1d9c1) },
+	{ SPH_C32(0xa69c0180), SPH_C32(0x10c8dd09), SPH_C32(0x349eaf22),
+	  SPH_C32(0xcc310a28), SPH_C32(0xec760180), SPH_C32(0xcf102934),
+	  SPH_C32(0x474db4fe), SPH_C32(0x15a6d657) },
+	{ SPH_C32(0xfaee0180), SPH_C32(0xd972101b), SPH_C32(0x4d37a2db),
+	  SPH_C32(0xafd82b50), SPH_C32(0x12bc01a0), SPH_C32(0x874d01d0),
+	  SPH_C32(0xc72af503), SPH_C32(0x94e057ef) },
+	{ SPH_C32(0xeb5201c0), SPH_C32(0x2b933177), SPH_C32(0x02fbc48a),
+	  SPH_C32(0xef52302d), SPH_C32(0x94dd0180), SPH_C32(0x6fdd7300),
+	  SPH_C32(0x1a111409), SPH_C32(0x67d1529c) },
+	{ SPH_C32(0xb72001c0), SPH_C32(0xe229fc65), SPH_C32(0x7b52c973),
+	  SPH_C32(0x8cbb1155), SPH_C32(0x6a1701a0), SPH_C32(0x27805be4),
+	  SPH_C32(0x9a7655f4), SPH_C32(0xe697d324) },
+	{ SPH_C32(0xde370180), SPH_C32(0xb005873d), SPH_C32(0x69c20fd5),
+	  SPH_C32(0xbe468ee3), SPH_C32(0xd91301c0), SPH_C32(0x54869f7e),
+	  SPH_C32(0x2c747fa1), SPH_C32(0x44b26899) },
+	{ SPH_C32(0x82450180), SPH_C32(0x79bf4a2f), SPH_C32(0x106b022c),
+	  SPH_C32(0xddafaf9b), SPH_C32(0x27d901e0), SPH_C32(0x1cdbb79a),
+	  SPH_C32(0xac133e5c), SPH_C32(0xc5f4e921) },
+	{ SPH_C32(0x93f901c0), SPH_C32(0x8b5e6b43), SPH_C32(0x5fa7647d),
+	  SPH_C32(0x9d25b4e6), SPH_C32(0xa1b801c0), SPH_C32(0xf44bc54a),
+	  SPH_C32(0x7128df56), SPH_C32(0x36c5ec52) },
+	{ SPH_C32(0xcf8b01c0), SPH_C32(0x42e4a651), SPH_C32(0x260e6984),
+	  SPH_C32(0xfecc959e), SPH_C32(0x5f7201e0), SPH_C32(0xbc16edae),
+	  SPH_C32(0xf14f9eab), SPH_C32(0xb7836dea) }
+};
+
+static const sph_u32 T256_21[128][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a), SPH_C32(0x63b62351),
+	  SPH_C32(0x17e301eb), SPH_C32(0x7cb50000), SPH_C32(0xf285caee),
+	  SPH_C32(0x06589f43), SPH_C32(0x2e548f6c) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x130f000c), SPH_C32(0xece44fa0), SPH_C32(0xfb843f6c),
+	  SPH_C32(0x614fc6d8), SPH_C32(0xc7140004), SPH_C32(0x3e18bc33),
+	  SPH_C32(0x03af332e), SPH_C32(0xf7b26185) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0xc7140004), SPH_C32(0x3e18bc33), SPH_C32(0x03af332e),
+	  SPH_C32(0xf7b26185), SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393),
+	  SPH_C32(0xf82b0c42), SPH_C32(0x96fda75d) },
+	{ SPH_C32(0x7cb50000), SPH_C32(0xf285caee), SPH_C32(0x06589f43),
+	  SPH_C32(0x2e548f6c), SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4),
+	  SPH_C32(0x65eebc12), SPH_C32(0x39b78e87) },
+	{ SPH_C32(0xacbd0004), SPH_C32(0x7ef34599), SPH_C32(0x9b9d2f13),
+	  SPH_C32(0x811ea6b6), SPH_C32(0x6fba000c), SPH_C32(0x1e61854e),
+	  SPH_C32(0xfddca02f), SPH_C32(0x4f1b49b4) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) },
+	{ SPH_C32(0x6fba000c), SPH_C32(0x1e61854e), SPH_C32(0xfddca02f),
+	  SPH_C32(0x4f1b49b4), SPH_C32(0xc3070008), SPH_C32(0x6092c0d7),
+	  SPH_C32(0x66418f3c), SPH_C32(0xce05ef02) },
+	{ SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393), SPH_C32(0xf82b0c42),
+	  SPH_C32(0x96fda75d), SPH_C32(0x130f000c), SPH_C32(0xece44fa0),
+	  SPH_C32(0xfb843f6c), SPH_C32(0x614fc6d8) },
+	{ SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4), SPH_C32(0x65eebc12),
+	  SPH_C32(0x39b78e87), SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a),
+	  SPH_C32(0x63b62351), SPH_C32(0x17e301eb) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x81540014), SPH_C32(0xcc85fd8c), SPH_C32(0x61229652),
+	  SPH_C32(0xde1d79bb), SPH_C32(0x45900000), SPH_C32(0x24369f23),
+	  SPH_C32(0xa4e61ac1), SPH_C32(0xc758578f) },
+	{ SPH_C32(0x3af50010), SPH_C32(0x00188b51), SPH_C32(0x64d53a3f),
+	  SPH_C32(0x07fb9752), SPH_C32(0x95980004), SPH_C32(0xa8401054),
+	  SPH_C32(0x3923aa91), SPH_C32(0x68127e55) },
+	{ SPH_C32(0xeafd0014), SPH_C32(0x8c6e0426), SPH_C32(0xf9108a6f),
+	  SPH_C32(0xa8b1be88), SPH_C32(0xfe310004), SPH_C32(0xe8abe9fe),
+	  SPH_C32(0xa111b6ac), SPH_C32(0x1ebeb966) },
+	{ SPH_C32(0xf9f20018), SPH_C32(0x608a4b86), SPH_C32(0x0294b503),
+	  SPH_C32(0xc9fe7850), SPH_C32(0x39250000), SPH_C32(0xd6b355cd),
+	  SPH_C32(0xa2be8582), SPH_C32(0xe90cd8e3) },
+	{ SPH_C32(0x29fa001c), SPH_C32(0xecfcc4f1), SPH_C32(0x9f510553),
+	  SPH_C32(0x66b4518a), SPH_C32(0x528c0000), SPH_C32(0x9658ac67),
+	  SPH_C32(0x3a8c99bf), SPH_C32(0x9fa01fd0) },
+	{ SPH_C32(0x925b0018), SPH_C32(0x2061b22c), SPH_C32(0x9aa6a93e),
+	  SPH_C32(0xbf52bf63), SPH_C32(0x82840004), SPH_C32(0x1a2e2310),
+	  SPH_C32(0xa74929ef), SPH_C32(0x30ea360a) },
+	{ SPH_C32(0x4253001c), SPH_C32(0xac173d5b), SPH_C32(0x0763196e),
+	  SPH_C32(0x101896b9), SPH_C32(0xe92d0004), SPH_C32(0x5ac5daba),
+	  SPH_C32(0x3f7b35d2), SPH_C32(0x4646f139) },
+	{ SPH_C32(0x46400010), SPH_C32(0xf29d41bf), SPH_C32(0x628da57c),
+	  SPH_C32(0x29af183e), SPH_C32(0x918b0008), SPH_C32(0xf6ca6cb0),
+	  SPH_C32(0x5ccd1683), SPH_C32(0x51a5f0d2) },
+	{ SPH_C32(0x96480014), SPH_C32(0x7eebcec8), SPH_C32(0xff48152c),
+	  SPH_C32(0x86e531e4), SPH_C32(0xfa220008), SPH_C32(0xb621951a),
+	  SPH_C32(0xc4ff0abe), SPH_C32(0x270937e1) },
+	{ SPH_C32(0x2de90010), SPH_C32(0xb276b815), SPH_C32(0xfabfb941),
+	  SPH_C32(0x5f03df0d), SPH_C32(0x2a2a000c), SPH_C32(0x3a571a6d),
+	  SPH_C32(0x593abaee), SPH_C32(0x88431e3b) },
+	{ SPH_C32(0xfde10014), SPH_C32(0x3e003762), SPH_C32(0x677a0911),
+	  SPH_C32(0xf049f6d7), SPH_C32(0x4183000c), SPH_C32(0x7abce3c7),
+	  SPH_C32(0xc108a6d3), SPH_C32(0xfeefd908) },
+	{ SPH_C32(0xeeee0018), SPH_C32(0xd2e478c2), SPH_C32(0x9cfe367d),
+	  SPH_C32(0x9106300f), SPH_C32(0x86970008), SPH_C32(0x44a45ff4),
+	  SPH_C32(0xc2a795fd), SPH_C32(0x095db88d) },
+	{ SPH_C32(0x3ee6001c), SPH_C32(0x5e92f7b5), SPH_C32(0x013b862d),
+	  SPH_C32(0x3e4c19d5), SPH_C32(0xed3e0008), SPH_C32(0x044fa65e),
+	  SPH_C32(0x5a9589c0), SPH_C32(0x7ff17fbe) },
+	{ SPH_C32(0x85470018), SPH_C32(0x920f8168), SPH_C32(0x04cc2a40),
+	  SPH_C32(0xe7aaf73c), SPH_C32(0x3d36000c), SPH_C32(0x88392929),
+	  SPH_C32(0xc7503990), SPH_C32(0xd0bb5664) },
+	{ SPH_C32(0x554f001c), SPH_C32(0x1e790e1f), SPH_C32(0x99099a10),
+	  SPH_C32(0x48e0dee6), SPH_C32(0x569f000c), SPH_C32(0xc8d2d083),
+	  SPH_C32(0x5f6225ad), SPH_C32(0xa6179157) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0xfe310004), SPH_C32(0xe8abe9fe), SPH_C32(0xa111b6ac),
+	  SPH_C32(0x1ebeb966), SPH_C32(0x14cc0010), SPH_C32(0x64c5edd8),
+	  SPH_C32(0x58013cc3), SPH_C32(0xb60f07ee) },
+	{ SPH_C32(0x45900000), SPH_C32(0x24369f23), SPH_C32(0xa4e61ac1),
+	  SPH_C32(0xc758578f), SPH_C32(0xc4c40014), SPH_C32(0xe8b362af),
+	  SPH_C32(0xc5c48c93), SPH_C32(0x19452e34) },
+	{ SPH_C32(0x95980004), SPH_C32(0xa8401054), SPH_C32(0x3923aa91),
+	  SPH_C32(0x68127e55), SPH_C32(0xaf6d0014), SPH_C32(0xa8589b05),
+	  SPH_C32(0x5df690ae), SPH_C32(0x6fe9e907) },
+	{ SPH_C32(0x86970008), SPH_C32(0x44a45ff4), SPH_C32(0xc2a795fd),
+	  SPH_C32(0x095db88d), SPH_C32(0x68790010), SPH_C32(0x96402736),
+	  SPH_C32(0x5e59a380), SPH_C32(0x985b8882) },
+	{ SPH_C32(0x569f000c), SPH_C32(0xc8d2d083), SPH_C32(0x5f6225ad),
+	  SPH_C32(0xa6179157), SPH_C32(0x03d00010), SPH_C32(0xd6abde9c),
+	  SPH_C32(0xc66bbfbd), SPH_C32(0xeef74fb1) },
+	{ SPH_C32(0xed3e0008), SPH_C32(0x044fa65e), SPH_C32(0x5a9589c0),
+	  SPH_C32(0x7ff17fbe), SPH_C32(0xd3d80014), SPH_C32(0x5add51eb),
+	  SPH_C32(0x5bae0fed), SPH_C32(0x41bd666b) },
+	{ SPH_C32(0x3d36000c), SPH_C32(0x88392929), SPH_C32(0xc7503990),
+	  SPH_C32(0xd0bb5664), SPH_C32(0xb8710014), SPH_C32(0x1a36a841),
+	  SPH_C32(0xc39c13d0), SPH_C32(0x3711a158) },
+	{ SPH_C32(0x39250000), SPH_C32(0xd6b355cd), SPH_C32(0xa2be8582),
+	  SPH_C32(0xe90cd8e3), SPH_C32(0xc0d70018), SPH_C32(0xb6391e4b),
+	  SPH_C32(0xa02a3081), SPH_C32(0x20f2a0b3) },
+	{ SPH_C32(0xe92d0004), SPH_C32(0x5ac5daba), SPH_C32(0x3f7b35d2),
+	  SPH_C32(0x4646f139), SPH_C32(0xab7e0018), SPH_C32(0xf6d2e7e1),
+	  SPH_C32(0x38182cbc), SPH_C32(0x565e6780) },
+	{ SPH_C32(0x528c0000), SPH_C32(0x9658ac67), SPH_C32(0x3a8c99bf),
+	  SPH_C32(0x9fa01fd0), SPH_C32(0x7b76001c), SPH_C32(0x7aa46896),
+	  SPH_C32(0xa5dd9cec), SPH_C32(0xf9144e5a) },
+	{ SPH_C32(0x82840004), SPH_C32(0x1a2e2310), SPH_C32(0xa74929ef),
+	  SPH_C32(0x30ea360a), SPH_C32(0x10df001c), SPH_C32(0x3a4f913c),
+	  SPH_C32(0x3def80d1), SPH_C32(0x8fb88969) },
+	{ SPH_C32(0x918b0008), SPH_C32(0xf6ca6cb0), SPH_C32(0x5ccd1683),
+	  SPH_C32(0x51a5f0d2), SPH_C32(0xd7cb0018), SPH_C32(0x04572d0f),
+	  SPH_C32(0x3e40b3ff), SPH_C32(0x780ae8ec) },
+	{ SPH_C32(0x4183000c), SPH_C32(0x7abce3c7), SPH_C32(0xc108a6d3),
+	  SPH_C32(0xfeefd908), SPH_C32(0xbc620018), SPH_C32(0x44bcd4a5),
+	  SPH_C32(0xa672afc2), SPH_C32(0x0ea62fdf) },
+	{ SPH_C32(0xfa220008), SPH_C32(0xb621951a), SPH_C32(0xc4ff0abe),
+	  SPH_C32(0x270937e1), SPH_C32(0x6c6a001c), SPH_C32(0xc8ca5bd2),
+	  SPH_C32(0x3bb71f92), SPH_C32(0xa1ec0605) },
+	{ SPH_C32(0x2a2a000c), SPH_C32(0x3a571a6d), SPH_C32(0x593abaee),
+	  SPH_C32(0x88431e3b), SPH_C32(0x07c3001c), SPH_C32(0x8821a278),
+	  SPH_C32(0xa38503af), SPH_C32(0xd740c136) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0xaf6d0014), SPH_C32(0xa8589b05), SPH_C32(0x5df690ae),
+	  SPH_C32(0x6fe9e907), SPH_C32(0x3af50010), SPH_C32(0x00188b51),
+	  SPH_C32(0x64d53a3f), SPH_C32(0x07fb9752) },
+	{ SPH_C32(0x14cc0010), SPH_C32(0x64c5edd8), SPH_C32(0x58013cc3),
+	  SPH_C32(0xb60f07ee), SPH_C32(0xeafd0014), SPH_C32(0x8c6e0426),
+	  SPH_C32(0xf9108a6f), SPH_C32(0xa8b1be88) },
+	{ SPH_C32(0xc4c40014), SPH_C32(0xe8b362af), SPH_C32(0xc5c48c93),
+	  SPH_C32(0x19452e34), SPH_C32(0x81540014), SPH_C32(0xcc85fd8c),
+	  SPH_C32(0x61229652), SPH_C32(0xde1d79bb) },
+	{ SPH_C32(0xd7cb0018), SPH_C32(0x04572d0f), SPH_C32(0x3e40b3ff),
+	  SPH_C32(0x780ae8ec), SPH_C32(0x46400010), SPH_C32(0xf29d41bf),
+	  SPH_C32(0x628da57c), SPH_C32(0x29af183e) },
+	{ SPH_C32(0x07c3001c), SPH_C32(0x8821a278), SPH_C32(0xa38503af),
+	  SPH_C32(0xd740c136), SPH_C32(0x2de90010), SPH_C32(0xb276b815),
+	  SPH_C32(0xfabfb941), SPH_C32(0x5f03df0d) },
+	{ SPH_C32(0xbc620018), SPH_C32(0x44bcd4a5), SPH_C32(0xa672afc2),
+	  SPH_C32(0x0ea62fdf), SPH_C32(0xfde10014), SPH_C32(0x3e003762),
+	  SPH_C32(0x677a0911), SPH_C32(0xf049f6d7) },
+	{ SPH_C32(0x6c6a001c), SPH_C32(0xc8ca5bd2), SPH_C32(0x3bb71f92),
+	  SPH_C32(0xa1ec0605), SPH_C32(0x96480014), SPH_C32(0x7eebcec8),
+	  SPH_C32(0xff48152c), SPH_C32(0x86e531e4) },
+	{ SPH_C32(0x68790010), SPH_C32(0x96402736), SPH_C32(0x5e59a380),
+	  SPH_C32(0x985b8882), SPH_C32(0xeeee0018), SPH_C32(0xd2e478c2),
+	  SPH_C32(0x9cfe367d), SPH_C32(0x9106300f) },
+	{ SPH_C32(0xb8710014), SPH_C32(0x1a36a841), SPH_C32(0xc39c13d0),
+	  SPH_C32(0x3711a158), SPH_C32(0x85470018), SPH_C32(0x920f8168),
+	  SPH_C32(0x04cc2a40), SPH_C32(0xe7aaf73c) },
+	{ SPH_C32(0x03d00010), SPH_C32(0xd6abde9c), SPH_C32(0xc66bbfbd),
+	  SPH_C32(0xeef74fb1), SPH_C32(0x554f001c), SPH_C32(0x1e790e1f),
+	  SPH_C32(0x99099a10), SPH_C32(0x48e0dee6) },
+	{ SPH_C32(0xd3d80014), SPH_C32(0x5add51eb), SPH_C32(0x5bae0fed),
+	  SPH_C32(0x41bd666b), SPH_C32(0x3ee6001c), SPH_C32(0x5e92f7b5),
+	  SPH_C32(0x013b862d), SPH_C32(0x3e4c19d5) },
+	{ SPH_C32(0xc0d70018), SPH_C32(0xb6391e4b), SPH_C32(0xa02a3081),
+	  SPH_C32(0x20f2a0b3), SPH_C32(0xf9f20018), SPH_C32(0x608a4b86),
+	  SPH_C32(0x0294b503), SPH_C32(0xc9fe7850) },
+	{ SPH_C32(0x10df001c), SPH_C32(0x3a4f913c), SPH_C32(0x3def80d1),
+	  SPH_C32(0x8fb88969), SPH_C32(0x925b0018), SPH_C32(0x2061b22c),
+	  SPH_C32(0x9aa6a93e), SPH_C32(0xbf52bf63) },
+	{ SPH_C32(0xab7e0018), SPH_C32(0xf6d2e7e1), SPH_C32(0x38182cbc),
+	  SPH_C32(0x565e6780), SPH_C32(0x4253001c), SPH_C32(0xac173d5b),
+	  SPH_C32(0x0763196e), SPH_C32(0x101896b9) },
+	{ SPH_C32(0x7b76001c), SPH_C32(0x7aa46896), SPH_C32(0xa5dd9cec),
+	  SPH_C32(0xf9144e5a), SPH_C32(0x29fa001c), SPH_C32(0xecfcc4f1),
+	  SPH_C32(0x9f510553), SPH_C32(0x66b4518a) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0x72b00024), SPH_C32(0x0d916a81), SPH_C32(0x640bfc54),
+	  SPH_C32(0x4de5891a), SPH_C32(0x37db0000), SPH_C32(0x895134b8),
+	  SPH_C32(0xe19b11c4), SPH_C32(0x1545e64b) },
+	{ SPH_C32(0xc9110020), SPH_C32(0xc10c1c5c), SPH_C32(0x61fc5039),
+	  SPH_C32(0x940367f3), SPH_C32(0xe7d30004), SPH_C32(0x0527bbcf),
+	  SPH_C32(0x7c5ea194), SPH_C32(0xba0fcf91) },
+	{ SPH_C32(0x19190024), SPH_C32(0x4d7a932b), SPH_C32(0xfc39e069),
+	  SPH_C32(0x3b494e29), SPH_C32(0x8c7a0004), SPH_C32(0x45cc4265),
+	  SPH_C32(0xe46cbda9), SPH_C32(0xcca308a2) },
+	{ SPH_C32(0x0a160028), SPH_C32(0xa19edc8b), SPH_C32(0x07bddf05),
+	  SPH_C32(0x5a0688f1), SPH_C32(0x4b6e0000), SPH_C32(0x7bd4fe56),
+	  SPH_C32(0xe7c38e87), SPH_C32(0x3b116927) },
+	{ SPH_C32(0xda1e002c), SPH_C32(0x2de853fc), SPH_C32(0x9a786f55),
+	  SPH_C32(0xf54ca12b), SPH_C32(0x20c70000), SPH_C32(0x3b3f07fc),
+	  SPH_C32(0x7ff192ba), SPH_C32(0x4dbdae14) },
+	{ SPH_C32(0x61bf0028), SPH_C32(0xe1752521), SPH_C32(0x9f8fc338),
+	  SPH_C32(0x2caa4fc2), SPH_C32(0xf0cf0004), SPH_C32(0xb749888b),
+	  SPH_C32(0xe23422ea), SPH_C32(0xe2f787ce) },
+	{ SPH_C32(0xb1b7002c), SPH_C32(0x6d03aa56), SPH_C32(0x024a7368),
+	  SPH_C32(0x83e06618), SPH_C32(0x9b660004), SPH_C32(0xf7a27121),
+	  SPH_C32(0x7a063ed7), SPH_C32(0x945b40fd) },
+	{ SPH_C32(0xb5a40020), SPH_C32(0x3389d6b2), SPH_C32(0x67a4cf7a),
+	  SPH_C32(0xba57e89f), SPH_C32(0xe3c00008), SPH_C32(0x5badc72b),
+	  SPH_C32(0x19b01d86), SPH_C32(0x83b84116) },
+	{ SPH_C32(0x65ac0024), SPH_C32(0xbfff59c5), SPH_C32(0xfa617f2a),
+	  SPH_C32(0x151dc145), SPH_C32(0x88690008), SPH_C32(0x1b463e81),
+	  SPH_C32(0x818201bb), SPH_C32(0xf5148625) },
+	{ SPH_C32(0xde0d0020), SPH_C32(0x73622f18), SPH_C32(0xff96d347),
+	  SPH_C32(0xccfb2fac), SPH_C32(0x5861000c), SPH_C32(0x9730b1f6),
+	  SPH_C32(0x1c47b1eb), SPH_C32(0x5a5eafff) },
+	{ SPH_C32(0x0e050024), SPH_C32(0xff14a06f), SPH_C32(0x62536317),
+	  SPH_C32(0x63b10676), SPH_C32(0x33c8000c), SPH_C32(0xd7db485c),
+	  SPH_C32(0x8475add6), SPH_C32(0x2cf268cc) },
+	{ SPH_C32(0x1d0a0028), SPH_C32(0x13f0efcf), SPH_C32(0x99d75c7b),
+	  SPH_C32(0x02fec0ae), SPH_C32(0xf4dc0008), SPH_C32(0xe9c3f46f),
+	  SPH_C32(0x87da9ef8), SPH_C32(0xdb400949) },
+	{ SPH_C32(0xcd02002c), SPH_C32(0x9f8660b8), SPH_C32(0x0412ec2b),
+	  SPH_C32(0xadb4e974), SPH_C32(0x9f750008), SPH_C32(0xa9280dc5),
+	  SPH_C32(0x1fe882c5), SPH_C32(0xadecce7a) },
+	{ SPH_C32(0x76a30028), SPH_C32(0x531b1665), SPH_C32(0x01e54046),
+	  SPH_C32(0x7452079d), SPH_C32(0x4f7d000c), SPH_C32(0x255e82b2),
+	  SPH_C32(0x822d3295), SPH_C32(0x02a6e7a0) },
+	{ SPH_C32(0xa6ab002c), SPH_C32(0xdf6d9912), SPH_C32(0x9c20f016),
+	  SPH_C32(0xdb182e47), SPH_C32(0x24d4000c), SPH_C32(0x65b57b18),
+	  SPH_C32(0x1a1f2ea8), SPH_C32(0x740a2093) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0x23ec0034), SPH_C32(0x4d62187a), SPH_C32(0x98ecda56),
+	  SPH_C32(0x3cb2d97b), SPH_C32(0x19e20000), SPH_C32(0xed8c5231),
+	  SPH_C32(0xdd4f1738), SPH_C32(0xa4b176f7) },
+	{ SPH_C32(0x984d0030), SPH_C32(0x81ff6ea7), SPH_C32(0x9d1b763b),
+	  SPH_C32(0xe5543792), SPH_C32(0xc9ea0004), SPH_C32(0x61fadd46),
+	  SPH_C32(0x408aa768), SPH_C32(0x0bfb5f2d) },
+	{ SPH_C32(0x48450034), SPH_C32(0x0d89e1d0), SPH_C32(0x00dec66b),
+	  SPH_C32(0x4a1e1e48), SPH_C32(0xa2430004), SPH_C32(0x211124ec),
+	  SPH_C32(0xd8b8bb55), SPH_C32(0x7d57981e) },
+	{ SPH_C32(0x5b4a0038), SPH_C32(0xe16dae70), SPH_C32(0xfb5af907),
+	  SPH_C32(0x2b51d890), SPH_C32(0x65570000), SPH_C32(0x1f0998df),
+	  SPH_C32(0xdb17887b), SPH_C32(0x8ae5f99b) },
+	{ SPH_C32(0x8b42003c), SPH_C32(0x6d1b2107), SPH_C32(0x669f4957),
+	  SPH_C32(0x841bf14a), SPH_C32(0x0efe0000), SPH_C32(0x5fe26175),
+	  SPH_C32(0x43259446), SPH_C32(0xfc493ea8) },
+	{ SPH_C32(0x30e30038), SPH_C32(0xa18657da), SPH_C32(0x6368e53a),
+	  SPH_C32(0x5dfd1fa3), SPH_C32(0xdef60004), SPH_C32(0xd394ee02),
+	  SPH_C32(0xdee02416), SPH_C32(0x53031772) },
+	{ SPH_C32(0xe0eb003c), SPH_C32(0x2df0d8ad), SPH_C32(0xfead556a),
+	  SPH_C32(0xf2b73679), SPH_C32(0xb55f0004), SPH_C32(0x937f17a8),
+	  SPH_C32(0x46d2382b), SPH_C32(0x25afd041) },
+	{ SPH_C32(0xe4f80030), SPH_C32(0x737aa449), SPH_C32(0x9b43e978),
+	  SPH_C32(0xcb00b8fe), SPH_C32(0xcdf90008), SPH_C32(0x3f70a1a2),
+	  SPH_C32(0x25641b7a), SPH_C32(0x324cd1aa) },
+	{ SPH_C32(0x34f00034), SPH_C32(0xff0c2b3e), SPH_C32(0x06865928),
+	  SPH_C32(0x644a9124), SPH_C32(0xa6500008), SPH_C32(0x7f9b5808),
+	  SPH_C32(0xbd560747), SPH_C32(0x44e01699) },
+	{ SPH_C32(0x8f510030), SPH_C32(0x33915de3), SPH_C32(0x0371f545),
+	  SPH_C32(0xbdac7fcd), SPH_C32(0x7658000c), SPH_C32(0xf3edd77f),
+	  SPH_C32(0x2093b717), SPH_C32(0xebaa3f43) },
+	{ SPH_C32(0x5f590034), SPH_C32(0xbfe7d294), SPH_C32(0x9eb44515),
+	  SPH_C32(0x12e65617), SPH_C32(0x1df1000c), SPH_C32(0xb3062ed5),
+	  SPH_C32(0xb8a1ab2a), SPH_C32(0x9d06f870) },
+	{ SPH_C32(0x4c560038), SPH_C32(0x53039d34), SPH_C32(0x65307a79),
+	  SPH_C32(0x73a990cf), SPH_C32(0xdae50008), SPH_C32(0x8d1e92e6),
+	  SPH_C32(0xbb0e9804), SPH_C32(0x6ab499f5) },
+	{ SPH_C32(0x9c5e003c), SPH_C32(0xdf751243), SPH_C32(0xf8f5ca29),
+	  SPH_C32(0xdce3b915), SPH_C32(0xb14c0008), SPH_C32(0xcdf56b4c),
+	  SPH_C32(0x233c8439), SPH_C32(0x1c185ec6) },
+	{ SPH_C32(0x27ff0038), SPH_C32(0x13e8649e), SPH_C32(0xfd026644),
+	  SPH_C32(0x050557fc), SPH_C32(0x6144000c), SPH_C32(0x4183e43b),
+	  SPH_C32(0xbef93469), SPH_C32(0xb352771c) },
+	{ SPH_C32(0xf7f7003c), SPH_C32(0x9f9eebe9), SPH_C32(0x60c7d614),
+	  SPH_C32(0xaa4f7e26), SPH_C32(0x0aed000c), SPH_C32(0x01681d91),
+	  SPH_C32(0x26cb2854), SPH_C32(0xc5feb02f) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0x5c890024), SPH_C32(0x694c0c08), SPH_C32(0x58dffaa8),
+	  SPH_C32(0xfc1119a6), SPH_C32(0x48be0010), SPH_C32(0xad7f20ca),
+	  SPH_C32(0x21a8313a), SPH_C32(0xd5e62696) },
+	{ SPH_C32(0xe7280020), SPH_C32(0xa5d17ad5), SPH_C32(0x5d2856c5),
+	  SPH_C32(0x25f7f74f), SPH_C32(0x98b60014), SPH_C32(0x2109afbd),
+	  SPH_C32(0xbc6d816a), SPH_C32(0x7aac0f4c) },
+	{ SPH_C32(0x37200024), SPH_C32(0x29a7f5a2), SPH_C32(0xc0ede695),
+	  SPH_C32(0x8abdde95), SPH_C32(0xf31f0014), SPH_C32(0x61e25617),
+	  SPH_C32(0x245f9d57), SPH_C32(0x0c00c87f) },
+	{ SPH_C32(0x242f0028), SPH_C32(0xc543ba02), SPH_C32(0x3b69d9f9),
+	  SPH_C32(0xebf2184d), SPH_C32(0x340b0010), SPH_C32(0x5ffaea24),
+	  SPH_C32(0x27f0ae79), SPH_C32(0xfbb2a9fa) },
+	{ SPH_C32(0xf427002c), SPH_C32(0x49353575), SPH_C32(0xa6ac69a9),
+	  SPH_C32(0x44b83197), SPH_C32(0x5fa20010), SPH_C32(0x1f11138e),
+	  SPH_C32(0xbfc2b244), SPH_C32(0x8d1e6ec9) },
+	{ SPH_C32(0x4f860028), SPH_C32(0x85a843a8), SPH_C32(0xa35bc5c4),
+	  SPH_C32(0x9d5edf7e), SPH_C32(0x8faa0014), SPH_C32(0x93679cf9),
+	  SPH_C32(0x22070214), SPH_C32(0x22544713) },
+	{ SPH_C32(0x9f8e002c), SPH_C32(0x09deccdf), SPH_C32(0x3e9e7594),
+	  SPH_C32(0x3214f6a4), SPH_C32(0xe4030014), SPH_C32(0xd38c6553),
+	  SPH_C32(0xba351e29), SPH_C32(0x54f88020) },
+	{ SPH_C32(0x9b9d0020), SPH_C32(0x5754b03b), SPH_C32(0x5b70c986),
+	  SPH_C32(0x0ba37823), SPH_C32(0x9ca50018), SPH_C32(0x7f83d359),
+	  SPH_C32(0xd9833d78), SPH_C32(0x431b81cb) },
+	{ SPH_C32(0x4b950024), SPH_C32(0xdb223f4c), SPH_C32(0xc6b579d6),
+	  SPH_C32(0xa4e951f9), SPH_C32(0xf70c0018), SPH_C32(0x3f682af3),
+	  SPH_C32(0x41b12145), SPH_C32(0x35b746f8) },
+	{ SPH_C32(0xf0340020), SPH_C32(0x17bf4991), SPH_C32(0xc342d5bb),
+	  SPH_C32(0x7d0fbf10), SPH_C32(0x2704001c), SPH_C32(0xb31ea584),
+	  SPH_C32(0xdc749115), SPH_C32(0x9afd6f22) },
+	{ SPH_C32(0x203c0024), SPH_C32(0x9bc9c6e6), SPH_C32(0x5e8765eb),
+	  SPH_C32(0xd24596ca), SPH_C32(0x4cad001c), SPH_C32(0xf3f55c2e),
+	  SPH_C32(0x44468d28), SPH_C32(0xec51a811) },
+	{ SPH_C32(0x33330028), SPH_C32(0x772d8946), SPH_C32(0xa5035a87),
+	  SPH_C32(0xb30a5012), SPH_C32(0x8bb90018), SPH_C32(0xcdede01d),
+	  SPH_C32(0x47e9be06), SPH_C32(0x1be3c994) },
+	{ SPH_C32(0xe33b002c), SPH_C32(0xfb5b0631), SPH_C32(0x38c6ead7),
+	  SPH_C32(0x1c4079c8), SPH_C32(0xe0100018), SPH_C32(0x8d0619b7),
+	  SPH_C32(0xdfdba23b), SPH_C32(0x6d4f0ea7) },
+	{ SPH_C32(0x589a0028), SPH_C32(0x37c670ec), SPH_C32(0x3d3146ba),
+	  SPH_C32(0xc5a69721), SPH_C32(0x3018001c), SPH_C32(0x017096c0),
+	  SPH_C32(0x421e126b), SPH_C32(0xc205277d) },
+	{ SPH_C32(0x8892002c), SPH_C32(0xbbb0ff9b), SPH_C32(0xa0f4f6ea),
+	  SPH_C32(0x6aecbefb), SPH_C32(0x5bb1001c), SPH_C32(0x419b6f6a),
+	  SPH_C32(0xda2c0e56), SPH_C32(0xb4a9e04e) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) },
+	{ SPH_C32(0x0dd50034), SPH_C32(0x29bf7ef3), SPH_C32(0xa438dcaa),
+	  SPH_C32(0x8d4649c7), SPH_C32(0x66870010), SPH_C32(0xc9a24643),
+	  SPH_C32(0x1d7c37c6), SPH_C32(0x6412b62a) },
+	{ SPH_C32(0xb6740030), SPH_C32(0xe522082e), SPH_C32(0xa1cf70c7),
+	  SPH_C32(0x54a0a72e), SPH_C32(0xb68f0014), SPH_C32(0x45d4c934),
+	  SPH_C32(0x80b98796), SPH_C32(0xcb589ff0) },
+	{ SPH_C32(0x667c0034), SPH_C32(0x69548759), SPH_C32(0x3c0ac097),
+	  SPH_C32(0xfbea8ef4), SPH_C32(0xdd260014), SPH_C32(0x053f309e),
+	  SPH_C32(0x188b9bab), SPH_C32(0xbdf458c3) },
+	{ SPH_C32(0x75730038), SPH_C32(0x85b0c8f9), SPH_C32(0xc78efffb),
+	  SPH_C32(0x9aa5482c), SPH_C32(0x1a320010), SPH_C32(0x3b278cad),
+	  SPH_C32(0x1b24a885), SPH_C32(0x4a463946) },
+	{ SPH_C32(0xa57b003c), SPH_C32(0x09c6478e), SPH_C32(0x5a4b4fab),
+	  SPH_C32(0x35ef61f6), SPH_C32(0x719b0010), SPH_C32(0x7bcc7507),
+	  SPH_C32(0x8316b4b8), SPH_C32(0x3ceafe75) },
+	{ SPH_C32(0x1eda0038), SPH_C32(0xc55b3153), SPH_C32(0x5fbce3c6),
+	  SPH_C32(0xec098f1f), SPH_C32(0xa1930014), SPH_C32(0xf7bafa70),
+	  SPH_C32(0x1ed304e8), SPH_C32(0x93a0d7af) },
+	{ SPH_C32(0xced2003c), SPH_C32(0x492dbe24), SPH_C32(0xc2795396),
+	  SPH_C32(0x4343a6c5), SPH_C32(0xca3a0014), SPH_C32(0xb75103da),
+	  SPH_C32(0x86e118d5), SPH_C32(0xe50c109c) },
+	{ SPH_C32(0xcac10030), SPH_C32(0x17a7c2c0), SPH_C32(0xa797ef84),
+	  SPH_C32(0x7af42842), SPH_C32(0xb29c0018), SPH_C32(0x1b5eb5d0),
+	  SPH_C32(0xe5573b84), SPH_C32(0xf2ef1177) },
+	{ SPH_C32(0x1ac90034), SPH_C32(0x9bd14db7), SPH_C32(0x3a525fd4),
+	  SPH_C32(0xd5be0198), SPH_C32(0xd9350018), SPH_C32(0x5bb54c7a),
+	  SPH_C32(0x7d6527b9), SPH_C32(0x8443d644) },
+	{ SPH_C32(0xa1680030), SPH_C32(0x574c3b6a), SPH_C32(0x3fa5f3b9),
+	  SPH_C32(0x0c58ef71), SPH_C32(0x093d001c), SPH_C32(0xd7c3c30d),
+	  SPH_C32(0xe0a097e9), SPH_C32(0x2b09ff9e) },
+	{ SPH_C32(0x71600034), SPH_C32(0xdb3ab41d), SPH_C32(0xa26043e9),
+	  SPH_C32(0xa312c6ab), SPH_C32(0x6294001c), SPH_C32(0x97283aa7),
+	  SPH_C32(0x78928bd4), SPH_C32(0x5da538ad) },
+	{ SPH_C32(0x626f0038), SPH_C32(0x37defbbd), SPH_C32(0x59e47c85),
+	  SPH_C32(0xc25d0073), SPH_C32(0xa5800018), SPH_C32(0xa9308694),
+	  SPH_C32(0x7b3db8fa), SPH_C32(0xaa175928) },
+	{ SPH_C32(0xb267003c), SPH_C32(0xbba874ca), SPH_C32(0xc421ccd5),
+	  SPH_C32(0x6d1729a9), SPH_C32(0xce290018), SPH_C32(0xe9db7f3e),
+	  SPH_C32(0xe30fa4c7), SPH_C32(0xdcbb9e1b) },
+	{ SPH_C32(0x09c60038), SPH_C32(0x77350217), SPH_C32(0xc1d660b8),
+	  SPH_C32(0xb4f1c740), SPH_C32(0x1e21001c), SPH_C32(0x65adf049),
+	  SPH_C32(0x7eca1497), SPH_C32(0x73f1b7c1) },
+	{ SPH_C32(0xd9ce003c), SPH_C32(0xfb438d60), SPH_C32(0x5c13d0e8),
+	  SPH_C32(0x1bbbee9a), SPH_C32(0x7588001c), SPH_C32(0x254609e3),
+	  SPH_C32(0xe6f808aa), SPH_C32(0x055d70f2) }
+};
+
+static const sph_u32 T256_28[16][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3), SPH_C32(0x37eb3eaf),
+	  SPH_C32(0x38d131ca), SPH_C32(0x995d0000), SPH_C32(0x2ecee896),
+	  SPH_C32(0x121462e8), SPH_C32(0x410400f9) },
+	{ SPH_C32(0x40d20002), SPH_C32(0x54ca4031), SPH_C32(0xf213cd0e),
+	  SPH_C32(0xdee94a4e), SPH_C32(0x59130001), SPH_C32(0x1d772886),
+	  SPH_C32(0xbc1ad9ed), SPH_C32(0xf4a0c6c2) },
+	{ SPH_C32(0x809c0003), SPH_C32(0x67738021), SPH_C32(0x5c1d760b),
+	  SPH_C32(0x6b4d8c75), SPH_C32(0x91e20001), SPH_C32(0x165acf04),
+	  SPH_C32(0xd7ec9149), SPH_C32(0xa73c7b7d) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0x91e20001), SPH_C32(0x165acf04), SPH_C32(0xd7ec9149),
+	  SPH_C32(0xa73c7b7d), SPH_C32(0x117e0002), SPH_C32(0x71294f25),
+	  SPH_C32(0x8bf1e742), SPH_C32(0xcc71f708) },
+	{ SPH_C32(0x995d0000), SPH_C32(0x2ecee896), SPH_C32(0x121462e8),
+	  SPH_C32(0x410400f9), SPH_C32(0xd1300003), SPH_C32(0x42908f35),
+	  SPH_C32(0x25ff5c47), SPH_C32(0x79d53133) },
+	{ SPH_C32(0x59130001), SPH_C32(0x1d772886), SPH_C32(0xbc1ad9ed),
+	  SPH_C32(0xf4a0c6c2), SPH_C32(0x19c10003), SPH_C32(0x49bd68b7),
+	  SPH_C32(0x4e0914e3), SPH_C32(0x2a498c8c) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0x19c10003), SPH_C32(0x49bd68b7), SPH_C32(0x4e0914e3),
+	  SPH_C32(0x2a498c8c), SPH_C32(0x40d20002), SPH_C32(0x54ca4031),
+	  SPH_C32(0xf213cd0e), SPH_C32(0xdee94a4e) },
+	{ SPH_C32(0x117e0002), SPH_C32(0x71294f25), SPH_C32(0x8bf1e742),
+	  SPH_C32(0xcc71f708), SPH_C32(0x809c0003), SPH_C32(0x67738021),
+	  SPH_C32(0x5c1d760b), SPH_C32(0x6b4d8c75) },
+	{ SPH_C32(0xd1300003), SPH_C32(0x42908f35), SPH_C32(0x25ff5c47),
+	  SPH_C32(0x79d53133), SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3),
+	  SPH_C32(0x37eb3eaf), SPH_C32(0x38d131ca) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc >> 1][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T256_7[(acc >> 2) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T256_14[(acc >> 3) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = (acc << 8) | buf[3]; \
+		rp = &T256_21[(acc >> 4) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		rp = &T256_28[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_SMALL == 8
+
+static const sph_u32 T256_0[256][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x74951000), SPH_C32(0x5a2b467e), SPH_C32(0x88fd1d2b),
+	  SPH_C32(0x1ee68292), SPH_C32(0xcba90000), SPH_C32(0x90273769),
+	  SPH_C32(0xbbdcf407), SPH_C32(0xd0f4af61) },
+	{ SPH_C32(0xcba90000), SPH_C32(0x90273769), SPH_C32(0xbbdcf407),
+	  SPH_C32(0xd0f4af61), SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117),
+	  SPH_C32(0x3321e92c), SPH_C32(0xce122df3) },
+	{ SPH_C32(0xbf3c1000), SPH_C32(0xca0c7117), SPH_C32(0x3321e92c),
+	  SPH_C32(0xce122df3), SPH_C32(0x74951000), SPH_C32(0x5a2b467e),
+	  SPH_C32(0x88fd1d2b), SPH_C32(0x1ee68292) },
+	{ SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc), SPH_C32(0x11fa3a57),
+	  SPH_C32(0x3dc90524), SPH_C32(0x97530000), SPH_C32(0x204f6ed3),
+	  SPH_C32(0x77b9e80f), SPH_C32(0xa1ec5ec1) },
+	{ SPH_C32(0x9dbf3000), SPH_C32(0xee7cca82), SPH_C32(0x9907277c),
+	  SPH_C32(0x232f87b6), SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba),
+	  SPH_C32(0xcc651c08), SPH_C32(0x7118f1a0) },
+	{ SPH_C32(0x22832000), SPH_C32(0x2470bb95), SPH_C32(0xaa26ce50),
+	  SPH_C32(0xed3daa45), SPH_C32(0x286f1000), SPH_C32(0xea431fc4),
+	  SPH_C32(0x44980123), SPH_C32(0x6ffe7332) },
+	{ SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb), SPH_C32(0x22dbd37b),
+	  SPH_C32(0xf3db28d7), SPH_C32(0xe3c61000), SPH_C32(0x7a6428ad),
+	  SPH_C32(0xff44f524), SPH_C32(0xbf0adc53) },
+	{ SPH_C32(0x97530000), SPH_C32(0x204f6ed3), SPH_C32(0x77b9e80f),
+	  SPH_C32(0xa1ec5ec1), SPH_C32(0x7e792000), SPH_C32(0x9418e22f),
+	  SPH_C32(0x6643d258), SPH_C32(0x9c255be5) },
+	{ SPH_C32(0xe3c61000), SPH_C32(0x7a6428ad), SPH_C32(0xff44f524),
+	  SPH_C32(0xbf0adc53), SPH_C32(0xb5d02000), SPH_C32(0x043fd546),
+	  SPH_C32(0xdd9f265f), SPH_C32(0x4cd1f484) },
+	{ SPH_C32(0x5cfa0000), SPH_C32(0xb06859ba), SPH_C32(0xcc651c08),
+	  SPH_C32(0x7118f1a0), SPH_C32(0xc1453000), SPH_C32(0x5e149338),
+	  SPH_C32(0x55623b74), SPH_C32(0x52377616) },
+	{ SPH_C32(0x286f1000), SPH_C32(0xea431fc4), SPH_C32(0x44980123),
+	  SPH_C32(0x6ffe7332), SPH_C32(0x0aec3000), SPH_C32(0xce33a451),
+	  SPH_C32(0xeebecf73), SPH_C32(0x82c3d977) },
+	{ SPH_C32(0x7e792000), SPH_C32(0x9418e22f), SPH_C32(0x6643d258),
+	  SPH_C32(0x9c255be5), SPH_C32(0xe92a2000), SPH_C32(0xb4578cfc),
+	  SPH_C32(0x11fa3a57), SPH_C32(0x3dc90524) },
+	{ SPH_C32(0x0aec3000), SPH_C32(0xce33a451), SPH_C32(0xeebecf73),
+	  SPH_C32(0x82c3d977), SPH_C32(0x22832000), SPH_C32(0x2470bb95),
+	  SPH_C32(0xaa26ce50), SPH_C32(0xed3daa45) },
+	{ SPH_C32(0xb5d02000), SPH_C32(0x043fd546), SPH_C32(0xdd9f265f),
+	  SPH_C32(0x4cd1f484), SPH_C32(0x56163000), SPH_C32(0x7e5bfdeb),
+	  SPH_C32(0x22dbd37b), SPH_C32(0xf3db28d7) },
+	{ SPH_C32(0xc1453000), SPH_C32(0x5e149338), SPH_C32(0x55623b74),
+	  SPH_C32(0x52377616), SPH_C32(0x9dbf3000), SPH_C32(0xee7cca82),
+	  SPH_C32(0x9907277c), SPH_C32(0x232f87b6) },
+	{ SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8), SPH_C32(0x8dfacfab),
+	  SPH_C32(0xce36cc72), SPH_C32(0xe6570000), SPH_C32(0x4bb33a25),
+	  SPH_C32(0x848598ba), SPH_C32(0x1041003e) },
+	{ SPH_C32(0x668e5000), SPH_C32(0x013c9f96), SPH_C32(0x0507d280),
+	  SPH_C32(0xd0d04ee0), SPH_C32(0x2dfe0000), SPH_C32(0xdb940d4c),
+	  SPH_C32(0x3f596cbd), SPH_C32(0xc0b5af5f) },
+	{ SPH_C32(0xd9b24000), SPH_C32(0xcb30ee81), SPH_C32(0x36263bac),
+	  SPH_C32(0x1ec26313), SPH_C32(0x596b1000), SPH_C32(0x81bf4b32),
+	  SPH_C32(0xb7a47196), SPH_C32(0xde532dcd) },
+	{ SPH_C32(0xad275000), SPH_C32(0x911ba8ff), SPH_C32(0xbedb2687),
+	  SPH_C32(0x0024e181), SPH_C32(0x92c21000), SPH_C32(0x11987c5b),
+	  SPH_C32(0x0c788591), SPH_C32(0x0ea782ac) },
+	{ SPH_C32(0xfb316000), SPH_C32(0xef405514), SPH_C32(0x9c00f5fc),
+	  SPH_C32(0xf3ffc956), SPH_C32(0x71040000), SPH_C32(0x6bfc54f6),
+	  SPH_C32(0xf33c70b5), SPH_C32(0xb1ad5eff) },
+	{ SPH_C32(0x8fa47000), SPH_C32(0xb56b136a), SPH_C32(0x14fde8d7),
+	  SPH_C32(0xed194bc4), SPH_C32(0xbaad0000), SPH_C32(0xfbdb639f),
+	  SPH_C32(0x48e084b2), SPH_C32(0x6159f19e) },
+	{ SPH_C32(0x30986000), SPH_C32(0x7f67627d), SPH_C32(0x27dc01fb),
+	  SPH_C32(0x230b6637), SPH_C32(0xce381000), SPH_C32(0xa1f025e1),
+	  SPH_C32(0xc01d9999), SPH_C32(0x7fbf730c) },
+	{ SPH_C32(0x440d7000), SPH_C32(0x254c2403), SPH_C32(0xaf211cd0),
+	  SPH_C32(0x3dede4a5), SPH_C32(0x05911000), SPH_C32(0x31d71288),
+	  SPH_C32(0x7bc16d9e), SPH_C32(0xaf4bdc6d) },
+	{ SPH_C32(0x85484000), SPH_C32(0x7b58b73b), SPH_C32(0xfa4327a4),
+	  SPH_C32(0x6fda92b3), SPH_C32(0x982e2000), SPH_C32(0xdfabd80a),
+	  SPH_C32(0xe2c64ae2), SPH_C32(0x8c645bdb) },
+	{ SPH_C32(0xf1dd5000), SPH_C32(0x2173f145), SPH_C32(0x72be3a8f),
+	  SPH_C32(0x713c1021), SPH_C32(0x53872000), SPH_C32(0x4f8cef63),
+	  SPH_C32(0x591abee5), SPH_C32(0x5c90f4ba) },
+	{ SPH_C32(0x4ee14000), SPH_C32(0xeb7f8052), SPH_C32(0x419fd3a3),
+	  SPH_C32(0xbf2e3dd2), SPH_C32(0x27123000), SPH_C32(0x15a7a91d),
+	  SPH_C32(0xd1e7a3ce), SPH_C32(0x42767628) },
+	{ SPH_C32(0x3a745000), SPH_C32(0xb154c62c), SPH_C32(0xc962ce88),
+	  SPH_C32(0xa1c8bf40), SPH_C32(0xecbb3000), SPH_C32(0x85809e74),
+	  SPH_C32(0x6a3b57c9), SPH_C32(0x9282d949) },
+	{ SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7), SPH_C32(0xebb91df3),
+	  SPH_C32(0x52139797), SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9),
+	  SPH_C32(0x957fa2ed), SPH_C32(0x2d88051a) },
+	{ SPH_C32(0x18f77000), SPH_C32(0x95247db9), SPH_C32(0x634400d8),
+	  SPH_C32(0x4cf51505), SPH_C32(0xc4d42000), SPH_C32(0x6fc381b0),
+	  SPH_C32(0x2ea356ea), SPH_C32(0xfd7caa7b) },
+	{ SPH_C32(0xa7cb6000), SPH_C32(0x5f280cae), SPH_C32(0x5065e9f4),
+	  SPH_C32(0x82e738f6), SPH_C32(0xb0413000), SPH_C32(0x35e8c7ce),
+	  SPH_C32(0xa65e4bc1), SPH_C32(0xe39a28e9) },
+	{ SPH_C32(0xd35e7000), SPH_C32(0x05034ad0), SPH_C32(0xd898f4df),
+	  SPH_C32(0x9c01ba64), SPH_C32(0x7be83000), SPH_C32(0xa5cff0a7),
+	  SPH_C32(0x1d82bfc6), SPH_C32(0x336e8788) },
+	{ SPH_C32(0xe6570000), SPH_C32(0x4bb33a25), SPH_C32(0x848598ba),
+	  SPH_C32(0x1041003e), SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd),
+	  SPH_C32(0x097f5711), SPH_C32(0xde77cc4c) },
+	{ SPH_C32(0x92c21000), SPH_C32(0x11987c5b), SPH_C32(0x0c788591),
+	  SPH_C32(0x0ea782ac), SPH_C32(0x3fe54000), SPH_C32(0x8083d4a4),
+	  SPH_C32(0xb2a3a316), SPH_C32(0x0e83632d) },
+	{ SPH_C32(0x2dfe0000), SPH_C32(0xdb940d4c), SPH_C32(0x3f596cbd),
+	  SPH_C32(0xc0b5af5f), SPH_C32(0x4b705000), SPH_C32(0xdaa892da),
+	  SPH_C32(0x3a5ebe3d), SPH_C32(0x1065e1bf) },
+	{ SPH_C32(0x596b1000), SPH_C32(0x81bf4b32), SPH_C32(0xb7a47196),
+	  SPH_C32(0xde532dcd), SPH_C32(0x80d95000), SPH_C32(0x4a8fa5b3),
+	  SPH_C32(0x81824a3a), SPH_C32(0xc0914ede) },
+	{ SPH_C32(0x0f7d2000), SPH_C32(0xffe4b6d9), SPH_C32(0x957fa2ed),
+	  SPH_C32(0x2d88051a), SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e),
+	  SPH_C32(0x7ec6bf1e), SPH_C32(0x7f9b928d) },
+	{ SPH_C32(0x7be83000), SPH_C32(0xa5cff0a7), SPH_C32(0x1d82bfc6),
+	  SPH_C32(0x336e8788), SPH_C32(0xa8b64000), SPH_C32(0xa0ccba77),
+	  SPH_C32(0xc51a4b19), SPH_C32(0xaf6f3dec) },
+	{ SPH_C32(0xc4d42000), SPH_C32(0x6fc381b0), SPH_C32(0x2ea356ea),
+	  SPH_C32(0xfd7caa7b), SPH_C32(0xdc235000), SPH_C32(0xfae7fc09),
+	  SPH_C32(0x4de75632), SPH_C32(0xb189bf7e) },
+	{ SPH_C32(0xb0413000), SPH_C32(0x35e8c7ce), SPH_C32(0xa65e4bc1),
+	  SPH_C32(0xe39a28e9), SPH_C32(0x178a5000), SPH_C32(0x6ac0cb60),
+	  SPH_C32(0xf63ba235), SPH_C32(0x617d101f) },
+	{ SPH_C32(0x71040000), SPH_C32(0x6bfc54f6), SPH_C32(0xf33c70b5),
+	  SPH_C32(0xb1ad5eff), SPH_C32(0x8a356000), SPH_C32(0x84bc01e2),
+	  SPH_C32(0x6f3c8549), SPH_C32(0x425297a9) },
+	{ SPH_C32(0x05911000), SPH_C32(0x31d71288), SPH_C32(0x7bc16d9e),
+	  SPH_C32(0xaf4bdc6d), SPH_C32(0x419c6000), SPH_C32(0x149b368b),
+	  SPH_C32(0xd4e0714e), SPH_C32(0x92a638c8) },
+	{ SPH_C32(0xbaad0000), SPH_C32(0xfbdb639f), SPH_C32(0x48e084b2),
+	  SPH_C32(0x6159f19e), SPH_C32(0x35097000), SPH_C32(0x4eb070f5),
+	  SPH_C32(0x5c1d6c65), SPH_C32(0x8c40ba5a) },
+	{ SPH_C32(0xce381000), SPH_C32(0xa1f025e1), SPH_C32(0xc01d9999),
+	  SPH_C32(0x7fbf730c), SPH_C32(0xfea07000), SPH_C32(0xde97479c),
+	  SPH_C32(0xe7c19862), SPH_C32(0x5cb4153b) },
+	{ SPH_C32(0x982e2000), SPH_C32(0xdfabd80a), SPH_C32(0xe2c64ae2),
+	  SPH_C32(0x8c645bdb), SPH_C32(0x1d666000), SPH_C32(0xa4f36f31),
+	  SPH_C32(0x18856d46), SPH_C32(0xe3bec968) },
+	{ SPH_C32(0xecbb3000), SPH_C32(0x85809e74), SPH_C32(0x6a3b57c9),
+	  SPH_C32(0x9282d949), SPH_C32(0xd6cf6000), SPH_C32(0x34d45858),
+	  SPH_C32(0xa3599941), SPH_C32(0x334a6609) },
+	{ SPH_C32(0x53872000), SPH_C32(0x4f8cef63), SPH_C32(0x591abee5),
+	  SPH_C32(0x5c90f4ba), SPH_C32(0xa25a7000), SPH_C32(0x6eff1e26),
+	  SPH_C32(0x2ba4846a), SPH_C32(0x2dace49b) },
+	{ SPH_C32(0x27123000), SPH_C32(0x15a7a91d), SPH_C32(0xd1e7a3ce),
+	  SPH_C32(0x42767628), SPH_C32(0x69f37000), SPH_C32(0xfed8294f),
+	  SPH_C32(0x9078706d), SPH_C32(0xfd584bfa) },
+	{ SPH_C32(0xf44c4000), SPH_C32(0x10a4e3cd), SPH_C32(0x097f5711),
+	  SPH_C32(0xde77cc4c), SPH_C32(0x121b4000), SPH_C32(0x5b17d9e8),
+	  SPH_C32(0x8dfacfab), SPH_C32(0xce36cc72) },
+	{ SPH_C32(0x80d95000), SPH_C32(0x4a8fa5b3), SPH_C32(0x81824a3a),
+	  SPH_C32(0xc0914ede), SPH_C32(0xd9b24000), SPH_C32(0xcb30ee81),
+	  SPH_C32(0x36263bac), SPH_C32(0x1ec26313) },
+	{ SPH_C32(0x3fe54000), SPH_C32(0x8083d4a4), SPH_C32(0xb2a3a316),
+	  SPH_C32(0x0e83632d), SPH_C32(0xad275000), SPH_C32(0x911ba8ff),
+	  SPH_C32(0xbedb2687), SPH_C32(0x0024e181) },
+	{ SPH_C32(0x4b705000), SPH_C32(0xdaa892da), SPH_C32(0x3a5ebe3d),
+	  SPH_C32(0x1065e1bf), SPH_C32(0x668e5000), SPH_C32(0x013c9f96),
+	  SPH_C32(0x0507d280), SPH_C32(0xd0d04ee0) },
+	{ SPH_C32(0x1d666000), SPH_C32(0xa4f36f31), SPH_C32(0x18856d46),
+	  SPH_C32(0xe3bec968), SPH_C32(0x85484000), SPH_C32(0x7b58b73b),
+	  SPH_C32(0xfa4327a4), SPH_C32(0x6fda92b3) },
+	{ SPH_C32(0x69f37000), SPH_C32(0xfed8294f), SPH_C32(0x9078706d),
+	  SPH_C32(0xfd584bfa), SPH_C32(0x4ee14000), SPH_C32(0xeb7f8052),
+	  SPH_C32(0x419fd3a3), SPH_C32(0xbf2e3dd2) },
+	{ SPH_C32(0xd6cf6000), SPH_C32(0x34d45858), SPH_C32(0xa3599941),
+	  SPH_C32(0x334a6609), SPH_C32(0x3a745000), SPH_C32(0xb154c62c),
+	  SPH_C32(0xc962ce88), SPH_C32(0xa1c8bf40) },
+	{ SPH_C32(0xa25a7000), SPH_C32(0x6eff1e26), SPH_C32(0x2ba4846a),
+	  SPH_C32(0x2dace49b), SPH_C32(0xf1dd5000), SPH_C32(0x2173f145),
+	  SPH_C32(0x72be3a8f), SPH_C32(0x713c1021) },
+	{ SPH_C32(0x631f4000), SPH_C32(0x30eb8d1e), SPH_C32(0x7ec6bf1e),
+	  SPH_C32(0x7f9b928d), SPH_C32(0x6c626000), SPH_C32(0xcf0f3bc7),
+	  SPH_C32(0xebb91df3), SPH_C32(0x52139797) },
+	{ SPH_C32(0x178a5000), SPH_C32(0x6ac0cb60), SPH_C32(0xf63ba235),
+	  SPH_C32(0x617d101f), SPH_C32(0xa7cb6000), SPH_C32(0x5f280cae),
+	  SPH_C32(0x5065e9f4), SPH_C32(0x82e738f6) },
+	{ SPH_C32(0xa8b64000), SPH_C32(0xa0ccba77), SPH_C32(0xc51a4b19),
+	  SPH_C32(0xaf6f3dec), SPH_C32(0xd35e7000), SPH_C32(0x05034ad0),
+	  SPH_C32(0xd898f4df), SPH_C32(0x9c01ba64) },
+	{ SPH_C32(0xdc235000), SPH_C32(0xfae7fc09), SPH_C32(0x4de75632),
+	  SPH_C32(0xb189bf7e), SPH_C32(0x18f77000), SPH_C32(0x95247db9),
+	  SPH_C32(0x634400d8), SPH_C32(0x4cf51505) },
+	{ SPH_C32(0x8a356000), SPH_C32(0x84bc01e2), SPH_C32(0x6f3c8549),
+	  SPH_C32(0x425297a9), SPH_C32(0xfb316000), SPH_C32(0xef405514),
+	  SPH_C32(0x9c00f5fc), SPH_C32(0xf3ffc956) },
+	{ SPH_C32(0xfea07000), SPH_C32(0xde97479c), SPH_C32(0xe7c19862),
+	  SPH_C32(0x5cb4153b), SPH_C32(0x30986000), SPH_C32(0x7f67627d),
+	  SPH_C32(0x27dc01fb), SPH_C32(0x230b6637) },
+	{ SPH_C32(0x419c6000), SPH_C32(0x149b368b), SPH_C32(0xd4e0714e),
+	  SPH_C32(0x92a638c8), SPH_C32(0x440d7000), SPH_C32(0x254c2403),
+	  SPH_C32(0xaf211cd0), SPH_C32(0x3dede4a5) },
+	{ SPH_C32(0x35097000), SPH_C32(0x4eb070f5), SPH_C32(0x5c1d6c65),
+	  SPH_C32(0x8c40ba5a), SPH_C32(0x8fa47000), SPH_C32(0xb56b136a),
+	  SPH_C32(0x14fde8d7), SPH_C32(0xed194bc4) },
+	{ SPH_C32(0xe4788000), SPH_C32(0x859673c1), SPH_C32(0xb5fb2452),
+	  SPH_C32(0x29cc5edf), SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9),
+	  SPH_C32(0x62fc79d0), SPH_C32(0x731ebdc2) },
+	{ SPH_C32(0x90ed9000), SPH_C32(0xdfbd35bf), SPH_C32(0x3d063979),
+	  SPH_C32(0x372adc4d), SPH_C32(0xcff60000), SPH_C32(0x0c6da4a0),
+	  SPH_C32(0xd9208dd7), SPH_C32(0xa3ea12a3) },
+	{ SPH_C32(0x2fd18000), SPH_C32(0x15b144a8), SPH_C32(0x0e27d055),
+	  SPH_C32(0xf938f1be), SPH_C32(0xbb631000), SPH_C32(0x5646e2de),
+	  SPH_C32(0x51dd90fc), SPH_C32(0xbd0c9031) },
+	{ SPH_C32(0x5b449000), SPH_C32(0x4f9a02d6), SPH_C32(0x86dacd7e),
+	  SPH_C32(0xe7de732c), SPH_C32(0x70ca1000), SPH_C32(0xc661d5b7),
+	  SPH_C32(0xea0164fb), SPH_C32(0x6df83f50) },
+	{ SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d), SPH_C32(0xa4011e05),
+	  SPH_C32(0x14055bfb), SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a),
+	  SPH_C32(0x154591df), SPH_C32(0xd2f2e303) },
+	{ SPH_C32(0x79c7b000), SPH_C32(0x6beab943), SPH_C32(0x2cfc032e),
+	  SPH_C32(0x0ae3d969), SPH_C32(0x58a50000), SPH_C32(0x2c22ca73),
+	  SPH_C32(0xae9965d8), SPH_C32(0x02064c62) },
+	{ SPH_C32(0xc6fba000), SPH_C32(0xa1e6c854), SPH_C32(0x1fddea02),
+	  SPH_C32(0xc4f1f49a), SPH_C32(0x2c301000), SPH_C32(0x76098c0d),
+	  SPH_C32(0x266478f3), SPH_C32(0x1ce0cef0) },
+	{ SPH_C32(0xb26eb000), SPH_C32(0xfbcd8e2a), SPH_C32(0x9720f729),
+	  SPH_C32(0xda177608), SPH_C32(0xe7991000), SPH_C32(0xe62ebb64),
+	  SPH_C32(0x9db88cf4), SPH_C32(0xcc146191) },
+	{ SPH_C32(0x732b8000), SPH_C32(0xa5d91d12), SPH_C32(0xc242cc5d),
+	  SPH_C32(0x8820001e), SPH_C32(0x7a262000), SPH_C32(0x085271e6),
+	  SPH_C32(0x04bfab88), SPH_C32(0xef3be627) },
+	{ SPH_C32(0x07be9000), SPH_C32(0xfff25b6c), SPH_C32(0x4abfd176),
+	  SPH_C32(0x96c6828c), SPH_C32(0xb18f2000), SPH_C32(0x9875468f),
+	  SPH_C32(0xbf635f8f), SPH_C32(0x3fcf4946) },
+	{ SPH_C32(0xb8828000), SPH_C32(0x35fe2a7b), SPH_C32(0x799e385a),
+	  SPH_C32(0x58d4af7f), SPH_C32(0xc51a3000), SPH_C32(0xc25e00f1),
+	  SPH_C32(0x379e42a4), SPH_C32(0x2129cbd4) },
+	{ SPH_C32(0xcc179000), SPH_C32(0x6fd56c05), SPH_C32(0xf1632571),
+	  SPH_C32(0x46322ded), SPH_C32(0x0eb33000), SPH_C32(0x52793798),
+	  SPH_C32(0x8c42b6a3), SPH_C32(0xf1dd64b5) },
+	{ SPH_C32(0x9a01a000), SPH_C32(0x118e91ee), SPH_C32(0xd3b8f60a),
+	  SPH_C32(0xb5e9053a), SPH_C32(0xed752000), SPH_C32(0x281d1f35),
+	  SPH_C32(0x73064387), SPH_C32(0x4ed7b8e6) },
+	{ SPH_C32(0xee94b000), SPH_C32(0x4ba5d790), SPH_C32(0x5b45eb21),
+	  SPH_C32(0xab0f87a8), SPH_C32(0x26dc2000), SPH_C32(0xb83a285c),
+	  SPH_C32(0xc8dab780), SPH_C32(0x9e231787) },
+	{ SPH_C32(0x51a8a000), SPH_C32(0x81a9a687), SPH_C32(0x6864020d),
+	  SPH_C32(0x651daa5b), SPH_C32(0x52493000), SPH_C32(0xe2116e22),
+	  SPH_C32(0x4027aaab), SPH_C32(0x80c59515) },
+	{ SPH_C32(0x253db000), SPH_C32(0xdb82e0f9), SPH_C32(0xe0991f26),
+	  SPH_C32(0x7bfb28c9), SPH_C32(0x99e03000), SPH_C32(0x7236594b),
+	  SPH_C32(0xfbfb5eac), SPH_C32(0x50313a74) },
+	{ SPH_C32(0xf663c000), SPH_C32(0xde81aa29), SPH_C32(0x3801ebf9),
+	  SPH_C32(0xe7fa92ad), SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec),
+	  SPH_C32(0xe679e16a), SPH_C32(0x635fbdfc) },
+	{ SPH_C32(0x82f6d000), SPH_C32(0x84aaec57), SPH_C32(0xb0fcf6d2),
+	  SPH_C32(0xf91c103f), SPH_C32(0x29a10000), SPH_C32(0x47de9e85),
+	  SPH_C32(0x5da5156d), SPH_C32(0xb3ab129d) },
+	{ SPH_C32(0x3dcac000), SPH_C32(0x4ea69d40), SPH_C32(0x83dd1ffe),
+	  SPH_C32(0x370e3dcc), SPH_C32(0x5d341000), SPH_C32(0x1df5d8fb),
+	  SPH_C32(0xd5580846), SPH_C32(0xad4d900f) },
+	{ SPH_C32(0x495fd000), SPH_C32(0x148ddb3e), SPH_C32(0x0b2002d5),
+	  SPH_C32(0x29e8bf5e), SPH_C32(0x969d1000), SPH_C32(0x8dd2ef92),
+	  SPH_C32(0x6e84fc41), SPH_C32(0x7db93f6e) },
+	{ SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5), SPH_C32(0x29fbd1ae),
+	  SPH_C32(0xda339789), SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f),
+	  SPH_C32(0x91c00965), SPH_C32(0xc2b3e33d) },
+	{ SPH_C32(0x6bdcf000), SPH_C32(0x30fd60ab), SPH_C32(0xa106cc85),
+	  SPH_C32(0xc4d5151b), SPH_C32(0xbef20000), SPH_C32(0x6791f056),
+	  SPH_C32(0x2a1cfd62), SPH_C32(0x12474c5c) },
+	{ SPH_C32(0xd4e0e000), SPH_C32(0xfaf111bc), SPH_C32(0x922725a9),
+	  SPH_C32(0x0ac738e8), SPH_C32(0xca671000), SPH_C32(0x3dbab628),
+	  SPH_C32(0xa2e1e049), SPH_C32(0x0ca1cece) },
+	{ SPH_C32(0xa075f000), SPH_C32(0xa0da57c2), SPH_C32(0x1ada3882),
+	  SPH_C32(0x1421ba7a), SPH_C32(0x01ce1000), SPH_C32(0xad9d8141),
+	  SPH_C32(0x193d144e), SPH_C32(0xdc5561af) },
+	{ SPH_C32(0x6130c000), SPH_C32(0xfecec4fa), SPH_C32(0x4fb803f6),
+	  SPH_C32(0x4616cc6c), SPH_C32(0x9c712000), SPH_C32(0x43e14bc3),
+	  SPH_C32(0x803a3332), SPH_C32(0xff7ae619) },
+	{ SPH_C32(0x15a5d000), SPH_C32(0xa4e58284), SPH_C32(0xc7451edd),
+	  SPH_C32(0x58f04efe), SPH_C32(0x57d82000), SPH_C32(0xd3c67caa),
+	  SPH_C32(0x3be6c735), SPH_C32(0x2f8e4978) },
+	{ SPH_C32(0xaa99c000), SPH_C32(0x6ee9f393), SPH_C32(0xf464f7f1),
+	  SPH_C32(0x96e2630d), SPH_C32(0x234d3000), SPH_C32(0x89ed3ad4),
+	  SPH_C32(0xb31bda1e), SPH_C32(0x3168cbea) },
+	{ SPH_C32(0xde0cd000), SPH_C32(0x34c2b5ed), SPH_C32(0x7c99eada),
+	  SPH_C32(0x8804e19f), SPH_C32(0xe8e43000), SPH_C32(0x19ca0dbd),
+	  SPH_C32(0x08c72e19), SPH_C32(0xe19c648b) },
+	{ SPH_C32(0x881ae000), SPH_C32(0x4a994806), SPH_C32(0x5e4239a1),
+	  SPH_C32(0x7bdfc948), SPH_C32(0x0b222000), SPH_C32(0x63ae2510),
+	  SPH_C32(0xf783db3d), SPH_C32(0x5e96b8d8) },
+	{ SPH_C32(0xfc8ff000), SPH_C32(0x10b20e78), SPH_C32(0xd6bf248a),
+	  SPH_C32(0x65394bda), SPH_C32(0xc08b2000), SPH_C32(0xf3891279),
+	  SPH_C32(0x4c5f2f3a), SPH_C32(0x8e6217b9) },
+	{ SPH_C32(0x43b3e000), SPH_C32(0xdabe7f6f), SPH_C32(0xe59ecda6),
+	  SPH_C32(0xab2b6629), SPH_C32(0xb41e3000), SPH_C32(0xa9a25407),
+	  SPH_C32(0xc4a23211), SPH_C32(0x9084952b) },
+	{ SPH_C32(0x3726f000), SPH_C32(0x80953911), SPH_C32(0x6d63d08d),
+	  SPH_C32(0xb5cde4bb), SPH_C32(0x7fb73000), SPH_C32(0x3985636e),
+	  SPH_C32(0x7f7ec616), SPH_C32(0x40703a4a) },
+	{ SPH_C32(0x022f8000), SPH_C32(0xce2549e4), SPH_C32(0x317ebce8),
+	  SPH_C32(0x398d5ee1), SPH_C32(0xf0134000), SPH_C32(0x8cee7004),
+	  SPH_C32(0x6b832ec1), SPH_C32(0xad69718e) },
+	{ SPH_C32(0x76ba9000), SPH_C32(0x940e0f9a), SPH_C32(0xb983a1c3),
+	  SPH_C32(0x276bdc73), SPH_C32(0x3bba4000), SPH_C32(0x1cc9476d),
+	  SPH_C32(0xd05fdac6), SPH_C32(0x7d9ddeef) },
+	{ SPH_C32(0xc9868000), SPH_C32(0x5e027e8d), SPH_C32(0x8aa248ef),
+	  SPH_C32(0xe979f180), SPH_C32(0x4f2f5000), SPH_C32(0x46e20113),
+	  SPH_C32(0x58a2c7ed), SPH_C32(0x637b5c7d) },
+	{ SPH_C32(0xbd139000), SPH_C32(0x042938f3), SPH_C32(0x025f55c4),
+	  SPH_C32(0xf79f7312), SPH_C32(0x84865000), SPH_C32(0xd6c5367a),
+	  SPH_C32(0xe37e33ea), SPH_C32(0xb38ff31c) },
+	{ SPH_C32(0xeb05a000), SPH_C32(0x7a72c518), SPH_C32(0x208486bf),
+	  SPH_C32(0x04445bc5), SPH_C32(0x67404000), SPH_C32(0xaca11ed7),
+	  SPH_C32(0x1c3ac6ce), SPH_C32(0x0c852f4f) },
+	{ SPH_C32(0x9f90b000), SPH_C32(0x20598366), SPH_C32(0xa8799b94),
+	  SPH_C32(0x1aa2d957), SPH_C32(0xace94000), SPH_C32(0x3c8629be),
+	  SPH_C32(0xa7e632c9), SPH_C32(0xdc71802e) },
+	{ SPH_C32(0x20aca000), SPH_C32(0xea55f271), SPH_C32(0x9b5872b8),
+	  SPH_C32(0xd4b0f4a4), SPH_C32(0xd87c5000), SPH_C32(0x66ad6fc0),
+	  SPH_C32(0x2f1b2fe2), SPH_C32(0xc29702bc) },
+	{ SPH_C32(0x5439b000), SPH_C32(0xb07eb40f), SPH_C32(0x13a56f93),
+	  SPH_C32(0xca567636), SPH_C32(0x13d55000), SPH_C32(0xf68a58a9),
+	  SPH_C32(0x94c7dbe5), SPH_C32(0x1263addd) },
+	{ SPH_C32(0x957c8000), SPH_C32(0xee6a2737), SPH_C32(0x46c754e7),
+	  SPH_C32(0x98610020), SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b),
+	  SPH_C32(0x0dc0fc99), SPH_C32(0x314c2a6b) },
+	{ SPH_C32(0xe1e99000), SPH_C32(0xb4416149), SPH_C32(0xce3a49cc),
+	  SPH_C32(0x868782b2), SPH_C32(0x45c36000), SPH_C32(0x88d1a542),
+	  SPH_C32(0xb61c089e), SPH_C32(0xe1b8850a) },
+	{ SPH_C32(0x5ed58000), SPH_C32(0x7e4d105e), SPH_C32(0xfd1ba0e0),
+	  SPH_C32(0x4895af41), SPH_C32(0x31567000), SPH_C32(0xd2fae33c),
+	  SPH_C32(0x3ee115b5), SPH_C32(0xff5e0798) },
+	{ SPH_C32(0x2a409000), SPH_C32(0x24665620), SPH_C32(0x75e6bdcb),
+	  SPH_C32(0x56732dd3), SPH_C32(0xfaff7000), SPH_C32(0x42ddd455),
+	  SPH_C32(0x853de1b2), SPH_C32(0x2faaa8f9) },
+	{ SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb), SPH_C32(0x573d6eb0),
+	  SPH_C32(0xa5a80504), SPH_C32(0x19396000), SPH_C32(0x38b9fcf8),
+	  SPH_C32(0x7a791496), SPH_C32(0x90a074aa) },
+	{ SPH_C32(0x08c3b000), SPH_C32(0x0016edb5), SPH_C32(0xdfc0739b),
+	  SPH_C32(0xbb4e8796), SPH_C32(0xd2906000), SPH_C32(0xa89ecb91),
+	  SPH_C32(0xc1a5e091), SPH_C32(0x4054dbcb) },
+	{ SPH_C32(0xb7ffa000), SPH_C32(0xca1a9ca2), SPH_C32(0xece19ab7),
+	  SPH_C32(0x755caa65), SPH_C32(0xa6057000), SPH_C32(0xf2b58def),
+	  SPH_C32(0x4958fdba), SPH_C32(0x5eb25959) },
+	{ SPH_C32(0xc36ab000), SPH_C32(0x9031dadc), SPH_C32(0x641c879c),
+	  SPH_C32(0x6bba28f7), SPH_C32(0x6dac7000), SPH_C32(0x6292ba86),
+	  SPH_C32(0xf28409bd), SPH_C32(0x8e46f638) },
+	{ SPH_C32(0x1034c000), SPH_C32(0x9532900c), SPH_C32(0xbc847343),
+	  SPH_C32(0xf7bb9293), SPH_C32(0x16444000), SPH_C32(0xc75d4a21),
+	  SPH_C32(0xef06b67b), SPH_C32(0xbd2871b0) },
+	{ SPH_C32(0x64a1d000), SPH_C32(0xcf19d672), SPH_C32(0x34796e68),
+	  SPH_C32(0xe95d1001), SPH_C32(0xdded4000), SPH_C32(0x577a7d48),
+	  SPH_C32(0x54da427c), SPH_C32(0x6ddcded1) },
+	{ SPH_C32(0xdb9dc000), SPH_C32(0x0515a765), SPH_C32(0x07588744),
+	  SPH_C32(0x274f3df2), SPH_C32(0xa9785000), SPH_C32(0x0d513b36),
+	  SPH_C32(0xdc275f57), SPH_C32(0x733a5c43) },
+	{ SPH_C32(0xaf08d000), SPH_C32(0x5f3ee11b), SPH_C32(0x8fa59a6f),
+	  SPH_C32(0x39a9bf60), SPH_C32(0x62d15000), SPH_C32(0x9d760c5f),
+	  SPH_C32(0x67fbab50), SPH_C32(0xa3cef322) },
+	{ SPH_C32(0xf91ee000), SPH_C32(0x21651cf0), SPH_C32(0xad7e4914),
+	  SPH_C32(0xca7297b7), SPH_C32(0x81174000), SPH_C32(0xe71224f2),
+	  SPH_C32(0x98bf5e74), SPH_C32(0x1cc42f71) },
+	{ SPH_C32(0x8d8bf000), SPH_C32(0x7b4e5a8e), SPH_C32(0x2583543f),
+	  SPH_C32(0xd4941525), SPH_C32(0x4abe4000), SPH_C32(0x7735139b),
+	  SPH_C32(0x2363aa73), SPH_C32(0xcc308010) },
+	{ SPH_C32(0x32b7e000), SPH_C32(0xb1422b99), SPH_C32(0x16a2bd13),
+	  SPH_C32(0x1a8638d6), SPH_C32(0x3e2b5000), SPH_C32(0x2d1e55e5),
+	  SPH_C32(0xab9eb758), SPH_C32(0xd2d60282) },
+	{ SPH_C32(0x4622f000), SPH_C32(0xeb696de7), SPH_C32(0x9e5fa038),
+	  SPH_C32(0x0460ba44), SPH_C32(0xf5825000), SPH_C32(0xbd39628c),
+	  SPH_C32(0x1042435f), SPH_C32(0x0222ade3) },
+	{ SPH_C32(0x8767c000), SPH_C32(0xb57dfedf), SPH_C32(0xcb3d9b4c),
+	  SPH_C32(0x5657cc52), SPH_C32(0x683d6000), SPH_C32(0x5345a80e),
+	  SPH_C32(0x89456423), SPH_C32(0x210d2a55) },
+	{ SPH_C32(0xf3f2d000), SPH_C32(0xef56b8a1), SPH_C32(0x43c08667),
+	  SPH_C32(0x48b14ec0), SPH_C32(0xa3946000), SPH_C32(0xc3629f67),
+	  SPH_C32(0x32999024), SPH_C32(0xf1f98534) },
+	{ SPH_C32(0x4ccec000), SPH_C32(0x255ac9b6), SPH_C32(0x70e16f4b),
+	  SPH_C32(0x86a36333), SPH_C32(0xd7017000), SPH_C32(0x9949d919),
+	  SPH_C32(0xba648d0f), SPH_C32(0xef1f07a6) },
+	{ SPH_C32(0x385bd000), SPH_C32(0x7f718fc8), SPH_C32(0xf81c7260),
+	  SPH_C32(0x9845e1a1), SPH_C32(0x1ca87000), SPH_C32(0x096eee70),
+	  SPH_C32(0x01b87908), SPH_C32(0x3feba8c7) },
+	{ SPH_C32(0x6e4de000), SPH_C32(0x012a7223), SPH_C32(0xdac7a11b),
+	  SPH_C32(0x6b9ec976), SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd),
+	  SPH_C32(0xfefc8c2c), SPH_C32(0x80e17494) },
+	{ SPH_C32(0x1ad8f000), SPH_C32(0x5b01345d), SPH_C32(0x523abc30),
+	  SPH_C32(0x75784be4), SPH_C32(0x34c76000), SPH_C32(0xe32df1b4),
+	  SPH_C32(0x4520782b), SPH_C32(0x5015dbf5) },
+	{ SPH_C32(0xa5e4e000), SPH_C32(0x910d454a), SPH_C32(0x611b551c),
+	  SPH_C32(0xbb6a6617), SPH_C32(0x40527000), SPH_C32(0xb906b7ca),
+	  SPH_C32(0xcddd6500), SPH_C32(0x4ef35967) },
+	{ SPH_C32(0xd171f000), SPH_C32(0xcb260334), SPH_C32(0xe9e64837),
+	  SPH_C32(0xa58ce485), SPH_C32(0x8bfb7000), SPH_C32(0x292180a3),
+	  SPH_C32(0x76019107), SPH_C32(0x9e07f606) },
+	{ SPH_C32(0x045f0000), SPH_C32(0x9c4a93c9), SPH_C32(0x62fc79d0),
+	  SPH_C32(0x731ebdc2), SPH_C32(0xe0278000), SPH_C32(0x19dce008),
+	  SPH_C32(0xd7075d82), SPH_C32(0x5ad2e31d) },
+	{ SPH_C32(0x70ca1000), SPH_C32(0xc661d5b7), SPH_C32(0xea0164fb),
+	  SPH_C32(0x6df83f50), SPH_C32(0x2b8e8000), SPH_C32(0x89fbd761),
+	  SPH_C32(0x6cdba985), SPH_C32(0x8a264c7c) },
+	{ SPH_C32(0xcff60000), SPH_C32(0x0c6da4a0), SPH_C32(0xd9208dd7),
+	  SPH_C32(0xa3ea12a3), SPH_C32(0x5f1b9000), SPH_C32(0xd3d0911f),
+	  SPH_C32(0xe426b4ae), SPH_C32(0x94c0ceee) },
+	{ SPH_C32(0xbb631000), SPH_C32(0x5646e2de), SPH_C32(0x51dd90fc),
+	  SPH_C32(0xbd0c9031), SPH_C32(0x94b29000), SPH_C32(0x43f7a676),
+	  SPH_C32(0x5ffa40a9), SPH_C32(0x4434618f) },
+	{ SPH_C32(0xed752000), SPH_C32(0x281d1f35), SPH_C32(0x73064387),
+	  SPH_C32(0x4ed7b8e6), SPH_C32(0x77748000), SPH_C32(0x39938edb),
+	  SPH_C32(0xa0beb58d), SPH_C32(0xfb3ebddc) },
+	{ SPH_C32(0x99e03000), SPH_C32(0x7236594b), SPH_C32(0xfbfb5eac),
+	  SPH_C32(0x50313a74), SPH_C32(0xbcdd8000), SPH_C32(0xa9b4b9b2),
+	  SPH_C32(0x1b62418a), SPH_C32(0x2bca12bd) },
+	{ SPH_C32(0x26dc2000), SPH_C32(0xb83a285c), SPH_C32(0xc8dab780),
+	  SPH_C32(0x9e231787), SPH_C32(0xc8489000), SPH_C32(0xf39fffcc),
+	  SPH_C32(0x939f5ca1), SPH_C32(0x352c902f) },
+	{ SPH_C32(0x52493000), SPH_C32(0xe2116e22), SPH_C32(0x4027aaab),
+	  SPH_C32(0x80c59515), SPH_C32(0x03e19000), SPH_C32(0x63b8c8a5),
+	  SPH_C32(0x2843a8a6), SPH_C32(0xe5d83f4e) },
+	{ SPH_C32(0x930c0000), SPH_C32(0xbc05fd1a), SPH_C32(0x154591df),
+	  SPH_C32(0xd2f2e303), SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227),
+	  SPH_C32(0xb1448fda), SPH_C32(0xc6f7b8f8) },
+	{ SPH_C32(0xe7991000), SPH_C32(0xe62ebb64), SPH_C32(0x9db88cf4),
+	  SPH_C32(0xcc146191), SPH_C32(0x55f7a000), SPH_C32(0x1de3354e),
+	  SPH_C32(0x0a987bdd), SPH_C32(0x16031799) },
+	{ SPH_C32(0x58a50000), SPH_C32(0x2c22ca73), SPH_C32(0xae9965d8),
+	  SPH_C32(0x02064c62), SPH_C32(0x2162b000), SPH_C32(0x47c87330),
+	  SPH_C32(0x826566f6), SPH_C32(0x08e5950b) },
+	{ SPH_C32(0x2c301000), SPH_C32(0x76098c0d), SPH_C32(0x266478f3),
+	  SPH_C32(0x1ce0cef0), SPH_C32(0xeacbb000), SPH_C32(0xd7ef4459),
+	  SPH_C32(0x39b992f1), SPH_C32(0xd8113a6a) },
+	{ SPH_C32(0x7a262000), SPH_C32(0x085271e6), SPH_C32(0x04bfab88),
+	  SPH_C32(0xef3be627), SPH_C32(0x090da000), SPH_C32(0xad8b6cf4),
+	  SPH_C32(0xc6fd67d5), SPH_C32(0x671be639) },
+	{ SPH_C32(0x0eb33000), SPH_C32(0x52793798), SPH_C32(0x8c42b6a3),
+	  SPH_C32(0xf1dd64b5), SPH_C32(0xc2a4a000), SPH_C32(0x3dac5b9d),
+	  SPH_C32(0x7d2193d2), SPH_C32(0xb7ef4958) },
+	{ SPH_C32(0xb18f2000), SPH_C32(0x9875468f), SPH_C32(0xbf635f8f),
+	  SPH_C32(0x3fcf4946), SPH_C32(0xb631b000), SPH_C32(0x67871de3),
+	  SPH_C32(0xf5dc8ef9), SPH_C32(0xa909cbca) },
+	{ SPH_C32(0xc51a3000), SPH_C32(0xc25e00f1), SPH_C32(0x379e42a4),
+	  SPH_C32(0x2129cbd4), SPH_C32(0x7d98b000), SPH_C32(0xf7a02a8a),
+	  SPH_C32(0x4e007afe), SPH_C32(0x79fd64ab) },
+	{ SPH_C32(0x16444000), SPH_C32(0xc75d4a21), SPH_C32(0xef06b67b),
+	  SPH_C32(0xbd2871b0), SPH_C32(0x06708000), SPH_C32(0x526fda2d),
+	  SPH_C32(0x5382c538), SPH_C32(0x4a93e323) },
+	{ SPH_C32(0x62d15000), SPH_C32(0x9d760c5f), SPH_C32(0x67fbab50),
+	  SPH_C32(0xa3cef322), SPH_C32(0xcdd98000), SPH_C32(0xc248ed44),
+	  SPH_C32(0xe85e313f), SPH_C32(0x9a674c42) },
+	{ SPH_C32(0xdded4000), SPH_C32(0x577a7d48), SPH_C32(0x54da427c),
+	  SPH_C32(0x6ddcded1), SPH_C32(0xb94c9000), SPH_C32(0x9863ab3a),
+	  SPH_C32(0x60a32c14), SPH_C32(0x8481ced0) },
+	{ SPH_C32(0xa9785000), SPH_C32(0x0d513b36), SPH_C32(0xdc275f57),
+	  SPH_C32(0x733a5c43), SPH_C32(0x72e59000), SPH_C32(0x08449c53),
+	  SPH_C32(0xdb7fd813), SPH_C32(0x547561b1) },
+	{ SPH_C32(0xff6e6000), SPH_C32(0x730ac6dd), SPH_C32(0xfefc8c2c),
+	  SPH_C32(0x80e17494), SPH_C32(0x91238000), SPH_C32(0x7220b4fe),
+	  SPH_C32(0x243b2d37), SPH_C32(0xeb7fbde2) },
+	{ SPH_C32(0x8bfb7000), SPH_C32(0x292180a3), SPH_C32(0x76019107),
+	  SPH_C32(0x9e07f606), SPH_C32(0x5a8a8000), SPH_C32(0xe2078397),
+	  SPH_C32(0x9fe7d930), SPH_C32(0x3b8b1283) },
+	{ SPH_C32(0x34c76000), SPH_C32(0xe32df1b4), SPH_C32(0x4520782b),
+	  SPH_C32(0x5015dbf5), SPH_C32(0x2e1f9000), SPH_C32(0xb82cc5e9),
+	  SPH_C32(0x171ac41b), SPH_C32(0x256d9011) },
+	{ SPH_C32(0x40527000), SPH_C32(0xb906b7ca), SPH_C32(0xcddd6500),
+	  SPH_C32(0x4ef35967), SPH_C32(0xe5b69000), SPH_C32(0x280bf280),
+	  SPH_C32(0xacc6301c), SPH_C32(0xf5993f70) },
+	{ SPH_C32(0x81174000), SPH_C32(0xe71224f2), SPH_C32(0x98bf5e74),
+	  SPH_C32(0x1cc42f71), SPH_C32(0x7809a000), SPH_C32(0xc6773802),
+	  SPH_C32(0x35c11760), SPH_C32(0xd6b6b8c6) },
+	{ SPH_C32(0xf5825000), SPH_C32(0xbd39628c), SPH_C32(0x1042435f),
+	  SPH_C32(0x0222ade3), SPH_C32(0xb3a0a000), SPH_C32(0x56500f6b),
+	  SPH_C32(0x8e1de367), SPH_C32(0x064217a7) },
+	{ SPH_C32(0x4abe4000), SPH_C32(0x7735139b), SPH_C32(0x2363aa73),
+	  SPH_C32(0xcc308010), SPH_C32(0xc735b000), SPH_C32(0x0c7b4915),
+	  SPH_C32(0x06e0fe4c), SPH_C32(0x18a49535) },
+	{ SPH_C32(0x3e2b5000), SPH_C32(0x2d1e55e5), SPH_C32(0xab9eb758),
+	  SPH_C32(0xd2d60282), SPH_C32(0x0c9cb000), SPH_C32(0x9c5c7e7c),
+	  SPH_C32(0xbd3c0a4b), SPH_C32(0xc8503a54) },
+	{ SPH_C32(0x683d6000), SPH_C32(0x5345a80e), SPH_C32(0x89456423),
+	  SPH_C32(0x210d2a55), SPH_C32(0xef5aa000), SPH_C32(0xe63856d1),
+	  SPH_C32(0x4278ff6f), SPH_C32(0x775ae607) },
+	{ SPH_C32(0x1ca87000), SPH_C32(0x096eee70), SPH_C32(0x01b87908),
+	  SPH_C32(0x3feba8c7), SPH_C32(0x24f3a000), SPH_C32(0x761f61b8),
+	  SPH_C32(0xf9a40b68), SPH_C32(0xa7ae4966) },
+	{ SPH_C32(0xa3946000), SPH_C32(0xc3629f67), SPH_C32(0x32999024),
+	  SPH_C32(0xf1f98534), SPH_C32(0x5066b000), SPH_C32(0x2c3427c6),
+	  SPH_C32(0x71591643), SPH_C32(0xb948cbf4) },
+	{ SPH_C32(0xd7017000), SPH_C32(0x9949d919), SPH_C32(0xba648d0f),
+	  SPH_C32(0xef1f07a6), SPH_C32(0x9bcfb000), SPH_C32(0xbc1310af),
+	  SPH_C32(0xca85e244), SPH_C32(0x69bc6495) },
+	{ SPH_C32(0xe2080000), SPH_C32(0xd7f9a9ec), SPH_C32(0xe679e16a),
+	  SPH_C32(0x635fbdfc), SPH_C32(0x146bc000), SPH_C32(0x097803c5),
+	  SPH_C32(0xde780a93), SPH_C32(0x84a52f51) },
+	{ SPH_C32(0x969d1000), SPH_C32(0x8dd2ef92), SPH_C32(0x6e84fc41),
+	  SPH_C32(0x7db93f6e), SPH_C32(0xdfc2c000), SPH_C32(0x995f34ac),
+	  SPH_C32(0x65a4fe94), SPH_C32(0x54518030) },
+	{ SPH_C32(0x29a10000), SPH_C32(0x47de9e85), SPH_C32(0x5da5156d),
+	  SPH_C32(0xb3ab129d), SPH_C32(0xab57d000), SPH_C32(0xc37472d2),
+	  SPH_C32(0xed59e3bf), SPH_C32(0x4ab702a2) },
+	{ SPH_C32(0x5d341000), SPH_C32(0x1df5d8fb), SPH_C32(0xd5580846),
+	  SPH_C32(0xad4d900f), SPH_C32(0x60fed000), SPH_C32(0x535345bb),
+	  SPH_C32(0x568517b8), SPH_C32(0x9a43adc3) },
+	{ SPH_C32(0x0b222000), SPH_C32(0x63ae2510), SPH_C32(0xf783db3d),
+	  SPH_C32(0x5e96b8d8), SPH_C32(0x8338c000), SPH_C32(0x29376d16),
+	  SPH_C32(0xa9c1e29c), SPH_C32(0x25497190) },
+	{ SPH_C32(0x7fb73000), SPH_C32(0x3985636e), SPH_C32(0x7f7ec616),
+	  SPH_C32(0x40703a4a), SPH_C32(0x4891c000), SPH_C32(0xb9105a7f),
+	  SPH_C32(0x121d169b), SPH_C32(0xf5bddef1) },
+	{ SPH_C32(0xc08b2000), SPH_C32(0xf3891279), SPH_C32(0x4c5f2f3a),
+	  SPH_C32(0x8e6217b9), SPH_C32(0x3c04d000), SPH_C32(0xe33b1c01),
+	  SPH_C32(0x9ae00bb0), SPH_C32(0xeb5b5c63) },
+	{ SPH_C32(0xb41e3000), SPH_C32(0xa9a25407), SPH_C32(0xc4a23211),
+	  SPH_C32(0x9084952b), SPH_C32(0xf7add000), SPH_C32(0x731c2b68),
+	  SPH_C32(0x213cffb7), SPH_C32(0x3baff302) },
+	{ SPH_C32(0x755b0000), SPH_C32(0xf7b6c73f), SPH_C32(0x91c00965),
+	  SPH_C32(0xc2b3e33d), SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea),
+	  SPH_C32(0xb83bd8cb), SPH_C32(0x188074b4) },
+	{ SPH_C32(0x01ce1000), SPH_C32(0xad9d8141), SPH_C32(0x193d144e),
+	  SPH_C32(0xdc5561af), SPH_C32(0xa1bbe000), SPH_C32(0x0d47d683),
+	  SPH_C32(0x03e72ccc), SPH_C32(0xc874dbd5) },
+	{ SPH_C32(0xbef20000), SPH_C32(0x6791f056), SPH_C32(0x2a1cfd62),
+	  SPH_C32(0x12474c5c), SPH_C32(0xd52ef000), SPH_C32(0x576c90fd),
+	  SPH_C32(0x8b1a31e7), SPH_C32(0xd6925947) },
+	{ SPH_C32(0xca671000), SPH_C32(0x3dbab628), SPH_C32(0xa2e1e049),
+	  SPH_C32(0x0ca1cece), SPH_C32(0x1e87f000), SPH_C32(0xc74ba794),
+	  SPH_C32(0x30c6c5e0), SPH_C32(0x0666f626) },
+	{ SPH_C32(0x9c712000), SPH_C32(0x43e14bc3), SPH_C32(0x803a3332),
+	  SPH_C32(0xff7ae619), SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39),
+	  SPH_C32(0xcf8230c4), SPH_C32(0xb96c2a75) },
+	{ SPH_C32(0xe8e43000), SPH_C32(0x19ca0dbd), SPH_C32(0x08c72e19),
+	  SPH_C32(0xe19c648b), SPH_C32(0x36e8e000), SPH_C32(0x2d08b850),
+	  SPH_C32(0x745ec4c3), SPH_C32(0x69988514) },
+	{ SPH_C32(0x57d82000), SPH_C32(0xd3c67caa), SPH_C32(0x3be6c735),
+	  SPH_C32(0x2f8e4978), SPH_C32(0x427df000), SPH_C32(0x7723fe2e),
+	  SPH_C32(0xfca3d9e8), SPH_C32(0x777e0786) },
+	{ SPH_C32(0x234d3000), SPH_C32(0x89ed3ad4), SPH_C32(0xb31bda1e),
+	  SPH_C32(0x3168cbea), SPH_C32(0x89d4f000), SPH_C32(0xe704c947),
+	  SPH_C32(0x477f2def), SPH_C32(0xa78aa8e7) },
+	{ SPH_C32(0xf0134000), SPH_C32(0x8cee7004), SPH_C32(0x6b832ec1),
+	  SPH_C32(0xad69718e), SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0),
+	  SPH_C32(0x5afd9229), SPH_C32(0x94e42f6f) },
+	{ SPH_C32(0x84865000), SPH_C32(0xd6c5367a), SPH_C32(0xe37e33ea),
+	  SPH_C32(0xb38ff31c), SPH_C32(0x3995c000), SPH_C32(0xd2ec0e89),
+	  SPH_C32(0xe121662e), SPH_C32(0x4410800e) },
+	{ SPH_C32(0x3bba4000), SPH_C32(0x1cc9476d), SPH_C32(0xd05fdac6),
+	  SPH_C32(0x7d9ddeef), SPH_C32(0x4d00d000), SPH_C32(0x88c748f7),
+	  SPH_C32(0x69dc7b05), SPH_C32(0x5af6029c) },
+	{ SPH_C32(0x4f2f5000), SPH_C32(0x46e20113), SPH_C32(0x58a2c7ed),
+	  SPH_C32(0x637b5c7d), SPH_C32(0x86a9d000), SPH_C32(0x18e07f9e),
+	  SPH_C32(0xd2008f02), SPH_C32(0x8a02adfd) },
+	{ SPH_C32(0x19396000), SPH_C32(0x38b9fcf8), SPH_C32(0x7a791496),
+	  SPH_C32(0x90a074aa), SPH_C32(0x656fc000), SPH_C32(0x62845733),
+	  SPH_C32(0x2d447a26), SPH_C32(0x350871ae) },
+	{ SPH_C32(0x6dac7000), SPH_C32(0x6292ba86), SPH_C32(0xf28409bd),
+	  SPH_C32(0x8e46f638), SPH_C32(0xaec6c000), SPH_C32(0xf2a3605a),
+	  SPH_C32(0x96988e21), SPH_C32(0xe5fcdecf) },
+	{ SPH_C32(0xd2906000), SPH_C32(0xa89ecb91), SPH_C32(0xc1a5e091),
+	  SPH_C32(0x4054dbcb), SPH_C32(0xda53d000), SPH_C32(0xa8882624),
+	  SPH_C32(0x1e65930a), SPH_C32(0xfb1a5c5d) },
+	{ SPH_C32(0xa6057000), SPH_C32(0xf2b58def), SPH_C32(0x4958fdba),
+	  SPH_C32(0x5eb25959), SPH_C32(0x11fad000), SPH_C32(0x38af114d),
+	  SPH_C32(0xa5b9670d), SPH_C32(0x2beef33c) },
+	{ SPH_C32(0x67404000), SPH_C32(0xaca11ed7), SPH_C32(0x1c3ac6ce),
+	  SPH_C32(0x0c852f4f), SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf),
+	  SPH_C32(0x3cbe4071), SPH_C32(0x08c1748a) },
+	{ SPH_C32(0x13d55000), SPH_C32(0xf68a58a9), SPH_C32(0x94c7dbe5),
+	  SPH_C32(0x1263addd), SPH_C32(0x47ece000), SPH_C32(0x46f4eca6),
+	  SPH_C32(0x8762b476), SPH_C32(0xd835dbeb) },
+	{ SPH_C32(0xace94000), SPH_C32(0x3c8629be), SPH_C32(0xa7e632c9),
+	  SPH_C32(0xdc71802e), SPH_C32(0x3379f000), SPH_C32(0x1cdfaad8),
+	  SPH_C32(0x0f9fa95d), SPH_C32(0xc6d35979) },
+	{ SPH_C32(0xd87c5000), SPH_C32(0x66ad6fc0), SPH_C32(0x2f1b2fe2),
+	  SPH_C32(0xc29702bc), SPH_C32(0xf8d0f000), SPH_C32(0x8cf89db1),
+	  SPH_C32(0xb4435d5a), SPH_C32(0x1627f618) },
+	{ SPH_C32(0x8e6a6000), SPH_C32(0x18f6922b), SPH_C32(0x0dc0fc99),
+	  SPH_C32(0x314c2a6b), SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c),
+	  SPH_C32(0x4b07a87e), SPH_C32(0xa92d2a4b) },
+	{ SPH_C32(0xfaff7000), SPH_C32(0x42ddd455), SPH_C32(0x853de1b2),
+	  SPH_C32(0x2faaa8f9), SPH_C32(0xd0bfe000), SPH_C32(0x66bb8275),
+	  SPH_C32(0xf0db5c79), SPH_C32(0x79d9852a) },
+	{ SPH_C32(0x45c36000), SPH_C32(0x88d1a542), SPH_C32(0xb61c089e),
+	  SPH_C32(0xe1b8850a), SPH_C32(0xa42af000), SPH_C32(0x3c90c40b),
+	  SPH_C32(0x78264152), SPH_C32(0x673f07b8) },
+	{ SPH_C32(0x31567000), SPH_C32(0xd2fae33c), SPH_C32(0x3ee115b5),
+	  SPH_C32(0xff5e0798), SPH_C32(0x6f83f000), SPH_C32(0xacb7f362),
+	  SPH_C32(0xc3fab555), SPH_C32(0xb7cba8d9) },
+	{ SPH_C32(0xe0278000), SPH_C32(0x19dce008), SPH_C32(0xd7075d82),
+	  SPH_C32(0x5ad2e31d), SPH_C32(0xe4788000), SPH_C32(0x859673c1),
+	  SPH_C32(0xb5fb2452), SPH_C32(0x29cc5edf) },
+	{ SPH_C32(0x94b29000), SPH_C32(0x43f7a676), SPH_C32(0x5ffa40a9),
+	  SPH_C32(0x4434618f), SPH_C32(0x2fd18000), SPH_C32(0x15b144a8),
+	  SPH_C32(0x0e27d055), SPH_C32(0xf938f1be) },
+	{ SPH_C32(0x2b8e8000), SPH_C32(0x89fbd761), SPH_C32(0x6cdba985),
+	  SPH_C32(0x8a264c7c), SPH_C32(0x5b449000), SPH_C32(0x4f9a02d6),
+	  SPH_C32(0x86dacd7e), SPH_C32(0xe7de732c) },
+	{ SPH_C32(0x5f1b9000), SPH_C32(0xd3d0911f), SPH_C32(0xe426b4ae),
+	  SPH_C32(0x94c0ceee), SPH_C32(0x90ed9000), SPH_C32(0xdfbd35bf),
+	  SPH_C32(0x3d063979), SPH_C32(0x372adc4d) },
+	{ SPH_C32(0x090da000), SPH_C32(0xad8b6cf4), SPH_C32(0xc6fd67d5),
+	  SPH_C32(0x671be639), SPH_C32(0x732b8000), SPH_C32(0xa5d91d12),
+	  SPH_C32(0xc242cc5d), SPH_C32(0x8820001e) },
+	{ SPH_C32(0x7d98b000), SPH_C32(0xf7a02a8a), SPH_C32(0x4e007afe),
+	  SPH_C32(0x79fd64ab), SPH_C32(0xb8828000), SPH_C32(0x35fe2a7b),
+	  SPH_C32(0x799e385a), SPH_C32(0x58d4af7f) },
+	{ SPH_C32(0xc2a4a000), SPH_C32(0x3dac5b9d), SPH_C32(0x7d2193d2),
+	  SPH_C32(0xb7ef4958), SPH_C32(0xcc179000), SPH_C32(0x6fd56c05),
+	  SPH_C32(0xf1632571), SPH_C32(0x46322ded) },
+	{ SPH_C32(0xb631b000), SPH_C32(0x67871de3), SPH_C32(0xf5dc8ef9),
+	  SPH_C32(0xa909cbca), SPH_C32(0x07be9000), SPH_C32(0xfff25b6c),
+	  SPH_C32(0x4abfd176), SPH_C32(0x96c6828c) },
+	{ SPH_C32(0x77748000), SPH_C32(0x39938edb), SPH_C32(0xa0beb58d),
+	  SPH_C32(0xfb3ebddc), SPH_C32(0x9a01a000), SPH_C32(0x118e91ee),
+	  SPH_C32(0xd3b8f60a), SPH_C32(0xb5e9053a) },
+	{ SPH_C32(0x03e19000), SPH_C32(0x63b8c8a5), SPH_C32(0x2843a8a6),
+	  SPH_C32(0xe5d83f4e), SPH_C32(0x51a8a000), SPH_C32(0x81a9a687),
+	  SPH_C32(0x6864020d), SPH_C32(0x651daa5b) },
+	{ SPH_C32(0xbcdd8000), SPH_C32(0xa9b4b9b2), SPH_C32(0x1b62418a),
+	  SPH_C32(0x2bca12bd), SPH_C32(0x253db000), SPH_C32(0xdb82e0f9),
+	  SPH_C32(0xe0991f26), SPH_C32(0x7bfb28c9) },
+	{ SPH_C32(0xc8489000), SPH_C32(0xf39fffcc), SPH_C32(0x939f5ca1),
+	  SPH_C32(0x352c902f), SPH_C32(0xee94b000), SPH_C32(0x4ba5d790),
+	  SPH_C32(0x5b45eb21), SPH_C32(0xab0f87a8) },
+	{ SPH_C32(0x9e5ea000), SPH_C32(0x8dc40227), SPH_C32(0xb1448fda),
+	  SPH_C32(0xc6f7b8f8), SPH_C32(0x0d52a000), SPH_C32(0x31c1ff3d),
+	  SPH_C32(0xa4011e05), SPH_C32(0x14055bfb) },
+	{ SPH_C32(0xeacbb000), SPH_C32(0xd7ef4459), SPH_C32(0x39b992f1),
+	  SPH_C32(0xd8113a6a), SPH_C32(0xc6fba000), SPH_C32(0xa1e6c854),
+	  SPH_C32(0x1fddea02), SPH_C32(0xc4f1f49a) },
+	{ SPH_C32(0x55f7a000), SPH_C32(0x1de3354e), SPH_C32(0x0a987bdd),
+	  SPH_C32(0x16031799), SPH_C32(0xb26eb000), SPH_C32(0xfbcd8e2a),
+	  SPH_C32(0x9720f729), SPH_C32(0xda177608) },
+	{ SPH_C32(0x2162b000), SPH_C32(0x47c87330), SPH_C32(0x826566f6),
+	  SPH_C32(0x08e5950b), SPH_C32(0x79c7b000), SPH_C32(0x6beab943),
+	  SPH_C32(0x2cfc032e), SPH_C32(0x0ae3d969) },
+	{ SPH_C32(0xf23cc000), SPH_C32(0x42cb39e0), SPH_C32(0x5afd9229),
+	  SPH_C32(0x94e42f6f), SPH_C32(0x022f8000), SPH_C32(0xce2549e4),
+	  SPH_C32(0x317ebce8), SPH_C32(0x398d5ee1) },
+	{ SPH_C32(0x86a9d000), SPH_C32(0x18e07f9e), SPH_C32(0xd2008f02),
+	  SPH_C32(0x8a02adfd), SPH_C32(0xc9868000), SPH_C32(0x5e027e8d),
+	  SPH_C32(0x8aa248ef), SPH_C32(0xe979f180) },
+	{ SPH_C32(0x3995c000), SPH_C32(0xd2ec0e89), SPH_C32(0xe121662e),
+	  SPH_C32(0x4410800e), SPH_C32(0xbd139000), SPH_C32(0x042938f3),
+	  SPH_C32(0x025f55c4), SPH_C32(0xf79f7312) },
+	{ SPH_C32(0x4d00d000), SPH_C32(0x88c748f7), SPH_C32(0x69dc7b05),
+	  SPH_C32(0x5af6029c), SPH_C32(0x76ba9000), SPH_C32(0x940e0f9a),
+	  SPH_C32(0xb983a1c3), SPH_C32(0x276bdc73) },
+	{ SPH_C32(0x1b16e000), SPH_C32(0xf69cb51c), SPH_C32(0x4b07a87e),
+	  SPH_C32(0xa92d2a4b), SPH_C32(0x957c8000), SPH_C32(0xee6a2737),
+	  SPH_C32(0x46c754e7), SPH_C32(0x98610020) },
+	{ SPH_C32(0x6f83f000), SPH_C32(0xacb7f362), SPH_C32(0xc3fab555),
+	  SPH_C32(0xb7cba8d9), SPH_C32(0x5ed58000), SPH_C32(0x7e4d105e),
+	  SPH_C32(0xfd1ba0e0), SPH_C32(0x4895af41) },
+	{ SPH_C32(0xd0bfe000), SPH_C32(0x66bb8275), SPH_C32(0xf0db5c79),
+	  SPH_C32(0x79d9852a), SPH_C32(0x2a409000), SPH_C32(0x24665620),
+	  SPH_C32(0x75e6bdcb), SPH_C32(0x56732dd3) },
+	{ SPH_C32(0xa42af000), SPH_C32(0x3c90c40b), SPH_C32(0x78264152),
+	  SPH_C32(0x673f07b8), SPH_C32(0xe1e99000), SPH_C32(0xb4416149),
+	  SPH_C32(0xce3a49cc), SPH_C32(0x868782b2) },
+	{ SPH_C32(0x656fc000), SPH_C32(0x62845733), SPH_C32(0x2d447a26),
+	  SPH_C32(0x350871ae), SPH_C32(0x7c56a000), SPH_C32(0x5a3dabcb),
+	  SPH_C32(0x573d6eb0), SPH_C32(0xa5a80504) },
+	{ SPH_C32(0x11fad000), SPH_C32(0x38af114d), SPH_C32(0xa5b9670d),
+	  SPH_C32(0x2beef33c), SPH_C32(0xb7ffa000), SPH_C32(0xca1a9ca2),
+	  SPH_C32(0xece19ab7), SPH_C32(0x755caa65) },
+	{ SPH_C32(0xaec6c000), SPH_C32(0xf2a3605a), SPH_C32(0x96988e21),
+	  SPH_C32(0xe5fcdecf), SPH_C32(0xc36ab000), SPH_C32(0x9031dadc),
+	  SPH_C32(0x641c879c), SPH_C32(0x6bba28f7) },
+	{ SPH_C32(0xda53d000), SPH_C32(0xa8882624), SPH_C32(0x1e65930a),
+	  SPH_C32(0xfb1a5c5d), SPH_C32(0x08c3b000), SPH_C32(0x0016edb5),
+	  SPH_C32(0xdfc0739b), SPH_C32(0xbb4e8796) },
+	{ SPH_C32(0x8c45e000), SPH_C32(0xd6d3dbcf), SPH_C32(0x3cbe4071),
+	  SPH_C32(0x08c1748a), SPH_C32(0xeb05a000), SPH_C32(0x7a72c518),
+	  SPH_C32(0x208486bf), SPH_C32(0x04445bc5) },
+	{ SPH_C32(0xf8d0f000), SPH_C32(0x8cf89db1), SPH_C32(0xb4435d5a),
+	  SPH_C32(0x1627f618), SPH_C32(0x20aca000), SPH_C32(0xea55f271),
+	  SPH_C32(0x9b5872b8), SPH_C32(0xd4b0f4a4) },
+	{ SPH_C32(0x47ece000), SPH_C32(0x46f4eca6), SPH_C32(0x8762b476),
+	  SPH_C32(0xd835dbeb), SPH_C32(0x5439b000), SPH_C32(0xb07eb40f),
+	  SPH_C32(0x13a56f93), SPH_C32(0xca567636) },
+	{ SPH_C32(0x3379f000), SPH_C32(0x1cdfaad8), SPH_C32(0x0f9fa95d),
+	  SPH_C32(0xc6d35979), SPH_C32(0x9f90b000), SPH_C32(0x20598366),
+	  SPH_C32(0xa8799b94), SPH_C32(0x1aa2d957) },
+	{ SPH_C32(0x06708000), SPH_C32(0x526fda2d), SPH_C32(0x5382c538),
+	  SPH_C32(0x4a93e323), SPH_C32(0x1034c000), SPH_C32(0x9532900c),
+	  SPH_C32(0xbc847343), SPH_C32(0xf7bb9293) },
+	{ SPH_C32(0x72e59000), SPH_C32(0x08449c53), SPH_C32(0xdb7fd813),
+	  SPH_C32(0x547561b1), SPH_C32(0xdb9dc000), SPH_C32(0x0515a765),
+	  SPH_C32(0x07588744), SPH_C32(0x274f3df2) },
+	{ SPH_C32(0xcdd98000), SPH_C32(0xc248ed44), SPH_C32(0xe85e313f),
+	  SPH_C32(0x9a674c42), SPH_C32(0xaf08d000), SPH_C32(0x5f3ee11b),
+	  SPH_C32(0x8fa59a6f), SPH_C32(0x39a9bf60) },
+	{ SPH_C32(0xb94c9000), SPH_C32(0x9863ab3a), SPH_C32(0x60a32c14),
+	  SPH_C32(0x8481ced0), SPH_C32(0x64a1d000), SPH_C32(0xcf19d672),
+	  SPH_C32(0x34796e68), SPH_C32(0xe95d1001) },
+	{ SPH_C32(0xef5aa000), SPH_C32(0xe63856d1), SPH_C32(0x4278ff6f),
+	  SPH_C32(0x775ae607), SPH_C32(0x8767c000), SPH_C32(0xb57dfedf),
+	  SPH_C32(0xcb3d9b4c), SPH_C32(0x5657cc52) },
+	{ SPH_C32(0x9bcfb000), SPH_C32(0xbc1310af), SPH_C32(0xca85e244),
+	  SPH_C32(0x69bc6495), SPH_C32(0x4ccec000), SPH_C32(0x255ac9b6),
+	  SPH_C32(0x70e16f4b), SPH_C32(0x86a36333) },
+	{ SPH_C32(0x24f3a000), SPH_C32(0x761f61b8), SPH_C32(0xf9a40b68),
+	  SPH_C32(0xa7ae4966), SPH_C32(0x385bd000), SPH_C32(0x7f718fc8),
+	  SPH_C32(0xf81c7260), SPH_C32(0x9845e1a1) },
+	{ SPH_C32(0x5066b000), SPH_C32(0x2c3427c6), SPH_C32(0x71591643),
+	  SPH_C32(0xb948cbf4), SPH_C32(0xf3f2d000), SPH_C32(0xef56b8a1),
+	  SPH_C32(0x43c08667), SPH_C32(0x48b14ec0) },
+	{ SPH_C32(0x91238000), SPH_C32(0x7220b4fe), SPH_C32(0x243b2d37),
+	  SPH_C32(0xeb7fbde2), SPH_C32(0x6e4de000), SPH_C32(0x012a7223),
+	  SPH_C32(0xdac7a11b), SPH_C32(0x6b9ec976) },
+	{ SPH_C32(0xe5b69000), SPH_C32(0x280bf280), SPH_C32(0xacc6301c),
+	  SPH_C32(0xf5993f70), SPH_C32(0xa5e4e000), SPH_C32(0x910d454a),
+	  SPH_C32(0x611b551c), SPH_C32(0xbb6a6617) },
+	{ SPH_C32(0x5a8a8000), SPH_C32(0xe2078397), SPH_C32(0x9fe7d930),
+	  SPH_C32(0x3b8b1283), SPH_C32(0xd171f000), SPH_C32(0xcb260334),
+	  SPH_C32(0xe9e64837), SPH_C32(0xa58ce485) },
+	{ SPH_C32(0x2e1f9000), SPH_C32(0xb82cc5e9), SPH_C32(0x171ac41b),
+	  SPH_C32(0x256d9011), SPH_C32(0x1ad8f000), SPH_C32(0x5b01345d),
+	  SPH_C32(0x523abc30), SPH_C32(0x75784be4) },
+	{ SPH_C32(0x7809a000), SPH_C32(0xc6773802), SPH_C32(0x35c11760),
+	  SPH_C32(0xd6b6b8c6), SPH_C32(0xf91ee000), SPH_C32(0x21651cf0),
+	  SPH_C32(0xad7e4914), SPH_C32(0xca7297b7) },
+	{ SPH_C32(0x0c9cb000), SPH_C32(0x9c5c7e7c), SPH_C32(0xbd3c0a4b),
+	  SPH_C32(0xc8503a54), SPH_C32(0x32b7e000), SPH_C32(0xb1422b99),
+	  SPH_C32(0x16a2bd13), SPH_C32(0x1a8638d6) },
+	{ SPH_C32(0xb3a0a000), SPH_C32(0x56500f6b), SPH_C32(0x8e1de367),
+	  SPH_C32(0x064217a7), SPH_C32(0x4622f000), SPH_C32(0xeb696de7),
+	  SPH_C32(0x9e5fa038), SPH_C32(0x0460ba44) },
+	{ SPH_C32(0xc735b000), SPH_C32(0x0c7b4915), SPH_C32(0x06e0fe4c),
+	  SPH_C32(0x18a49535), SPH_C32(0x8d8bf000), SPH_C32(0x7b4e5a8e),
+	  SPH_C32(0x2583543f), SPH_C32(0xd4941525) },
+	{ SPH_C32(0x146bc000), SPH_C32(0x097803c5), SPH_C32(0xde780a93),
+	  SPH_C32(0x84a52f51), SPH_C32(0xf663c000), SPH_C32(0xde81aa29),
+	  SPH_C32(0x3801ebf9), SPH_C32(0xe7fa92ad) },
+	{ SPH_C32(0x60fed000), SPH_C32(0x535345bb), SPH_C32(0x568517b8),
+	  SPH_C32(0x9a43adc3), SPH_C32(0x3dcac000), SPH_C32(0x4ea69d40),
+	  SPH_C32(0x83dd1ffe), SPH_C32(0x370e3dcc) },
+	{ SPH_C32(0xdfc2c000), SPH_C32(0x995f34ac), SPH_C32(0x65a4fe94),
+	  SPH_C32(0x54518030), SPH_C32(0x495fd000), SPH_C32(0x148ddb3e),
+	  SPH_C32(0x0b2002d5), SPH_C32(0x29e8bf5e) },
+	{ SPH_C32(0xab57d000), SPH_C32(0xc37472d2), SPH_C32(0xed59e3bf),
+	  SPH_C32(0x4ab702a2), SPH_C32(0x82f6d000), SPH_C32(0x84aaec57),
+	  SPH_C32(0xb0fcf6d2), SPH_C32(0xf91c103f) },
+	{ SPH_C32(0xfd41e000), SPH_C32(0xbd2f8f39), SPH_C32(0xcf8230c4),
+	  SPH_C32(0xb96c2a75), SPH_C32(0x6130c000), SPH_C32(0xfecec4fa),
+	  SPH_C32(0x4fb803f6), SPH_C32(0x4616cc6c) },
+	{ SPH_C32(0x89d4f000), SPH_C32(0xe704c947), SPH_C32(0x477f2def),
+	  SPH_C32(0xa78aa8e7), SPH_C32(0xaa99c000), SPH_C32(0x6ee9f393),
+	  SPH_C32(0xf464f7f1), SPH_C32(0x96e2630d) },
+	{ SPH_C32(0x36e8e000), SPH_C32(0x2d08b850), SPH_C32(0x745ec4c3),
+	  SPH_C32(0x69988514), SPH_C32(0xde0cd000), SPH_C32(0x34c2b5ed),
+	  SPH_C32(0x7c99eada), SPH_C32(0x8804e19f) },
+	{ SPH_C32(0x427df000), SPH_C32(0x7723fe2e), SPH_C32(0xfca3d9e8),
+	  SPH_C32(0x777e0786), SPH_C32(0x15a5d000), SPH_C32(0xa4e58284),
+	  SPH_C32(0xc7451edd), SPH_C32(0x58f04efe) },
+	{ SPH_C32(0x8338c000), SPH_C32(0x29376d16), SPH_C32(0xa9c1e29c),
+	  SPH_C32(0x25497190), SPH_C32(0x881ae000), SPH_C32(0x4a994806),
+	  SPH_C32(0x5e4239a1), SPH_C32(0x7bdfc948) },
+	{ SPH_C32(0xf7add000), SPH_C32(0x731c2b68), SPH_C32(0x213cffb7),
+	  SPH_C32(0x3baff302), SPH_C32(0x43b3e000), SPH_C32(0xdabe7f6f),
+	  SPH_C32(0xe59ecda6), SPH_C32(0xab2b6629) },
+	{ SPH_C32(0x4891c000), SPH_C32(0xb9105a7f), SPH_C32(0x121d169b),
+	  SPH_C32(0xf5bddef1), SPH_C32(0x3726f000), SPH_C32(0x80953911),
+	  SPH_C32(0x6d63d08d), SPH_C32(0xb5cde4bb) },
+	{ SPH_C32(0x3c04d000), SPH_C32(0xe33b1c01), SPH_C32(0x9ae00bb0),
+	  SPH_C32(0xeb5b5c63), SPH_C32(0xfc8ff000), SPH_C32(0x10b20e78),
+	  SPH_C32(0xd6bf248a), SPH_C32(0x65394bda) },
+	{ SPH_C32(0x6a12e000), SPH_C32(0x9d60e1ea), SPH_C32(0xb83bd8cb),
+	  SPH_C32(0x188074b4), SPH_C32(0x1f49e000), SPH_C32(0x6ad626d5),
+	  SPH_C32(0x29fbd1ae), SPH_C32(0xda339789) },
+	{ SPH_C32(0x1e87f000), SPH_C32(0xc74ba794), SPH_C32(0x30c6c5e0),
+	  SPH_C32(0x0666f626), SPH_C32(0xd4e0e000), SPH_C32(0xfaf111bc),
+	  SPH_C32(0x922725a9), SPH_C32(0x0ac738e8) },
+	{ SPH_C32(0xa1bbe000), SPH_C32(0x0d47d683), SPH_C32(0x03e72ccc),
+	  SPH_C32(0xc874dbd5), SPH_C32(0xa075f000), SPH_C32(0xa0da57c2),
+	  SPH_C32(0x1ada3882), SPH_C32(0x1421ba7a) },
+	{ SPH_C32(0xd52ef000), SPH_C32(0x576c90fd), SPH_C32(0x8b1a31e7),
+	  SPH_C32(0xd6925947), SPH_C32(0x6bdcf000), SPH_C32(0x30fd60ab),
+	  SPH_C32(0xa106cc85), SPH_C32(0xc4d5151b) }
+};
+
+static const sph_u32 T256_8[256][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8), SPH_C32(0x8589d8ab),
+	  SPH_C32(0xe6c46464), SPH_C32(0x734c0000), SPH_C32(0x956fa7d6),
+	  SPH_C32(0xa29d1297), SPH_C32(0x6ee56854) },
+	{ SPH_C32(0x734c0000), SPH_C32(0x956fa7d6), SPH_C32(0xa29d1297),
+	  SPH_C32(0x6ee56854), SPH_C32(0xc4e80100), SPH_C32(0x1f70960e),
+	  SPH_C32(0x2714ca3c), SPH_C32(0x88210c30) },
+	{ SPH_C32(0xc4e80100), SPH_C32(0x1f70960e), SPH_C32(0x2714ca3c),
+	  SPH_C32(0x88210c30), SPH_C32(0xb7a40100), SPH_C32(0x8a1f31d8),
+	  SPH_C32(0x8589d8ab), SPH_C32(0xe6c46464) },
+	{ SPH_C32(0xa7b80200), SPH_C32(0x1f128433), SPH_C32(0x60e5f9f2),
+	  SPH_C32(0x9e147576), SPH_C32(0xee260000), SPH_C32(0x124b683e),
+	  SPH_C32(0x80c2d68f), SPH_C32(0x3bf3ab2c) },
+	{ SPH_C32(0x101c0300), SPH_C32(0x950db5eb), SPH_C32(0xe56c2159),
+	  SPH_C32(0x78d01112), SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8),
+	  SPH_C32(0x225fc418), SPH_C32(0x5516c378) },
+	{ SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5), SPH_C32(0xc278eb65),
+	  SPH_C32(0xf0f11d22), SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30),
+	  SPH_C32(0xa7d61cb3), SPH_C32(0xb3d2a71c) },
+	{ SPH_C32(0x63500300), SPH_C32(0x0062123d), SPH_C32(0x47f133ce),
+	  SPH_C32(0x16357946), SPH_C32(0x59820100), SPH_C32(0x985459e6),
+	  SPH_C32(0x054b0e24), SPH_C32(0xdd37cf48) },
+	{ SPH_C32(0xee260000), SPH_C32(0x124b683e), SPH_C32(0x80c2d68f),
+	  SPH_C32(0x3bf3ab2c), SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d),
+	  SPH_C32(0xe0272f7d), SPH_C32(0xa5e7de5a) },
+	{ SPH_C32(0x59820100), SPH_C32(0x985459e6), SPH_C32(0x054b0e24),
+	  SPH_C32(0xdd37cf48), SPH_C32(0x3ad20200), SPH_C32(0x98364bdb),
+	  SPH_C32(0x42ba3dea), SPH_C32(0xcb02b60e) },
+	{ SPH_C32(0x9d6a0000), SPH_C32(0x8724cfe8), SPH_C32(0x225fc418),
+	  SPH_C32(0x5516c378), SPH_C32(0x8d760300), SPH_C32(0x12297a03),
+	  SPH_C32(0xc733e541), SPH_C32(0x2dc6d26a) },
+	{ SPH_C32(0x2ace0100), SPH_C32(0x0d3bfe30), SPH_C32(0xa7d61cb3),
+	  SPH_C32(0xb3d2a71c), SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5),
+	  SPH_C32(0x65aef7d6), SPH_C32(0x4323ba3e) },
+	{ SPH_C32(0x499e0200), SPH_C32(0x0d59ec0d), SPH_C32(0xe0272f7d),
+	  SPH_C32(0xa5e7de5a), SPH_C32(0xa7b80200), SPH_C32(0x1f128433),
+	  SPH_C32(0x60e5f9f2), SPH_C32(0x9e147576) },
+	{ SPH_C32(0xfe3a0300), SPH_C32(0x8746ddd5), SPH_C32(0x65aef7d6),
+	  SPH_C32(0x4323ba3e), SPH_C32(0xd4f40200), SPH_C32(0x8a7d23e5),
+	  SPH_C32(0xc278eb65), SPH_C32(0xf0f11d22) },
+	{ SPH_C32(0x3ad20200), SPH_C32(0x98364bdb), SPH_C32(0x42ba3dea),
+	  SPH_C32(0xcb02b60e), SPH_C32(0x63500300), SPH_C32(0x0062123d),
+	  SPH_C32(0x47f133ce), SPH_C32(0x16357946) },
+	{ SPH_C32(0x8d760300), SPH_C32(0x12297a03), SPH_C32(0xc733e541),
+	  SPH_C32(0x2dc6d26a), SPH_C32(0x101c0300), SPH_C32(0x950db5eb),
+	  SPH_C32(0xe56c2159), SPH_C32(0x78d01112) },
+	{ SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877), SPH_C32(0x6fc548e1),
+	  SPH_C32(0x898d2cd6), SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff),
+	  SPH_C32(0x6a72e5bb), SPH_C32(0x247febe6) },
+	{ SPH_C32(0x389a0500), SPH_C32(0x8782f9af), SPH_C32(0xea4c904a),
+	  SPH_C32(0x6f4948b2), SPH_C32(0x67f10000), SPH_C32(0xbad59029),
+	  SPH_C32(0xc8eff72c), SPH_C32(0x4a9a83b2) },
+	{ SPH_C32(0xfc720400), SPH_C32(0x98f26fa1), SPH_C32(0xcd585a76),
+	  SPH_C32(0xe7684482), SPH_C32(0xd0550100), SPH_C32(0x30caa1f1),
+	  SPH_C32(0x4d662f87), SPH_C32(0xac5ee7d6) },
+	{ SPH_C32(0x4bd60500), SPH_C32(0x12ed5e79), SPH_C32(0x48d182dd),
+	  SPH_C32(0x01ac20e6), SPH_C32(0xa3190100), SPH_C32(0xa5a50627),
+	  SPH_C32(0xeffb3d10), SPH_C32(0xc2bb8f82) },
+	{ SPH_C32(0x28860600), SPH_C32(0x128f4c44), SPH_C32(0x0f20b113),
+	  SPH_C32(0x179959a0), SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1),
+	  SPH_C32(0xeab03334), SPH_C32(0x1f8c40ca) },
+	{ SPH_C32(0x9f220700), SPH_C32(0x98907d9c), SPH_C32(0x8aa969b8),
+	  SPH_C32(0xf15d3dc4), SPH_C32(0x89d70000), SPH_C32(0xa89ef817),
+	  SPH_C32(0x482d21a3), SPH_C32(0x7169289e) },
+	{ SPH_C32(0x5bca0600), SPH_C32(0x87e0eb92), SPH_C32(0xadbda384),
+	  SPH_C32(0x797c31f4), SPH_C32(0x3e730100), SPH_C32(0x2281c9cf),
+	  SPH_C32(0xcda4f908), SPH_C32(0x97ad4cfa) },
+	{ SPH_C32(0xec6e0700), SPH_C32(0x0dffda4a), SPH_C32(0x28347b2f),
+	  SPH_C32(0x9fb85590), SPH_C32(0x4d3f0100), SPH_C32(0xb7ee6e19),
+	  SPH_C32(0x6f39eb9f), SPH_C32(0xf94824ae) },
+	{ SPH_C32(0x61180400), SPH_C32(0x1fd6a049), SPH_C32(0xef079e6e),
+	  SPH_C32(0xb27e87fa), SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2),
+	  SPH_C32(0x8a55cac6), SPH_C32(0x819835bc) },
+	{ SPH_C32(0xd6bc0500), SPH_C32(0x95c99191), SPH_C32(0x6a8e46c5),
+	  SPH_C32(0x54bae39e), SPH_C32(0x2e6f0200), SPH_C32(0xb78c7c24),
+	  SPH_C32(0x28c8d851), SPH_C32(0xef7d5de8) },
+	{ SPH_C32(0x12540400), SPH_C32(0x8ab9079f), SPH_C32(0x4d9a8cf9),
+	  SPH_C32(0xdc9befae), SPH_C32(0x99cb0300), SPH_C32(0x3d934dfc),
+	  SPH_C32(0xad4100fa), SPH_C32(0x09b9398c) },
+	{ SPH_C32(0xa5f00500), SPH_C32(0x00a63647), SPH_C32(0xc8135452),
+	  SPH_C32(0x3a5f8bca), SPH_C32(0xea870300), SPH_C32(0xa8fcea2a),
+	  SPH_C32(0x0fdc126d), SPH_C32(0x675c51d8) },
+	{ SPH_C32(0xc6a00600), SPH_C32(0x00c4247a), SPH_C32(0x8fe2679c),
+	  SPH_C32(0x2c6af28c), SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc),
+	  SPH_C32(0x0a971c49), SPH_C32(0xba6b9e90) },
+	{ SPH_C32(0x71040700), SPH_C32(0x8adb15a2), SPH_C32(0x0a6bbf37),
+	  SPH_C32(0xcaae96e8), SPH_C32(0xc0490200), SPH_C32(0xa5c7141a),
+	  SPH_C32(0xa80a0ede), SPH_C32(0xd48ef6c4) },
+	{ SPH_C32(0xb5ec0600), SPH_C32(0x95ab83ac), SPH_C32(0x2d7f750b),
+	  SPH_C32(0x428f9ad8), SPH_C32(0x77ed0300), SPH_C32(0x2fd825c2),
+	  SPH_C32(0x2d83d675), SPH_C32(0x324a92a0) },
+	{ SPH_C32(0x02480700), SPH_C32(0x1fb4b274), SPH_C32(0xa8f6ada0),
+	  SPH_C32(0xa44bfebc), SPH_C32(0x04a10300), SPH_C32(0xbab78214),
+	  SPH_C32(0x8f1ec4e2), SPH_C32(0x5caffaf4) },
+	{ SPH_C32(0x14bd0000), SPH_C32(0x2fba37ff), SPH_C32(0x6a72e5bb),
+	  SPH_C32(0x247febe6), SPH_C32(0x9b830400), SPH_C32(0x2227ff88),
+	  SPH_C32(0x05b7ad5a), SPH_C32(0xadf2c730) },
+	{ SPH_C32(0xa3190100), SPH_C32(0xa5a50627), SPH_C32(0xeffb3d10),
+	  SPH_C32(0xc2bb8f82), SPH_C32(0xe8cf0400), SPH_C32(0xb748585e),
+	  SPH_C32(0xa72abfcd), SPH_C32(0xc317af64) },
+	{ SPH_C32(0x67f10000), SPH_C32(0xbad59029), SPH_C32(0xc8eff72c),
+	  SPH_C32(0x4a9a83b2), SPH_C32(0x5f6b0500), SPH_C32(0x3d576986),
+	  SPH_C32(0x22a36766), SPH_C32(0x25d3cb00) },
+	{ SPH_C32(0xd0550100), SPH_C32(0x30caa1f1), SPH_C32(0x4d662f87),
+	  SPH_C32(0xac5ee7d6), SPH_C32(0x2c270500), SPH_C32(0xa838ce50),
+	  SPH_C32(0x803e75f1), SPH_C32(0x4b36a354) },
+	{ SPH_C32(0xb3050200), SPH_C32(0x30a8b3cc), SPH_C32(0x0a971c49),
+	  SPH_C32(0xba6b9e90), SPH_C32(0x75a50400), SPH_C32(0x306c97b6),
+	  SPH_C32(0x85757bd5), SPH_C32(0x96016c1c) },
+	{ SPH_C32(0x04a10300), SPH_C32(0xbab78214), SPH_C32(0x8f1ec4e2),
+	  SPH_C32(0x5caffaf4), SPH_C32(0x06e90400), SPH_C32(0xa5033060),
+	  SPH_C32(0x27e86942), SPH_C32(0xf8e40448) },
+	{ SPH_C32(0xc0490200), SPH_C32(0xa5c7141a), SPH_C32(0xa80a0ede),
+	  SPH_C32(0xd48ef6c4), SPH_C32(0xb14d0500), SPH_C32(0x2f1c01b8),
+	  SPH_C32(0xa261b1e9), SPH_C32(0x1e20602c) },
+	{ SPH_C32(0x77ed0300), SPH_C32(0x2fd825c2), SPH_C32(0x2d83d675),
+	  SPH_C32(0x324a92a0), SPH_C32(0xc2010500), SPH_C32(0xba73a66e),
+	  SPH_C32(0x00fca37e), SPH_C32(0x70c50878) },
+	{ SPH_C32(0xfa9b0000), SPH_C32(0x3df15fc1), SPH_C32(0xeab03334),
+	  SPH_C32(0x1f8c40ca), SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385),
+	  SPH_C32(0xe5908227), SPH_C32(0x0815196a) },
+	{ SPH_C32(0x4d3f0100), SPH_C32(0xb7ee6e19), SPH_C32(0x6f39eb9f),
+	  SPH_C32(0xf94824ae), SPH_C32(0xa1510600), SPH_C32(0xba11b453),
+	  SPH_C32(0x470d90b0), SPH_C32(0x66f0713e) },
+	{ SPH_C32(0x89d70000), SPH_C32(0xa89ef817), SPH_C32(0x482d21a3),
+	  SPH_C32(0x7169289e), SPH_C32(0x16f50700), SPH_C32(0x300e858b),
+	  SPH_C32(0xc284481b), SPH_C32(0x8034155a) },
+	{ SPH_C32(0x3e730100), SPH_C32(0x2281c9cf), SPH_C32(0xcda4f908),
+	  SPH_C32(0x97ad4cfa), SPH_C32(0x65b90700), SPH_C32(0xa561225d),
+	  SPH_C32(0x60195a8c), SPH_C32(0xeed17d0e) },
+	{ SPH_C32(0x5d230200), SPH_C32(0x22e3dbf2), SPH_C32(0x8a55cac6),
+	  SPH_C32(0x819835bc), SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb),
+	  SPH_C32(0x655254a8), SPH_C32(0x33e6b246) },
+	{ SPH_C32(0xea870300), SPH_C32(0xa8fcea2a), SPH_C32(0x0fdc126d),
+	  SPH_C32(0x675c51d8), SPH_C32(0x4f770600), SPH_C32(0xa85adc6d),
+	  SPH_C32(0xc7cf463f), SPH_C32(0x5d03da12) },
+	{ SPH_C32(0x2e6f0200), SPH_C32(0xb78c7c24), SPH_C32(0x28c8d851),
+	  SPH_C32(0xef7d5de8), SPH_C32(0xf8d30700), SPH_C32(0x2245edb5),
+	  SPH_C32(0x42469e94), SPH_C32(0xbbc7be76) },
+	{ SPH_C32(0x99cb0300), SPH_C32(0x3d934dfc), SPH_C32(0xad4100fa),
+	  SPH_C32(0x09b9398c), SPH_C32(0x8b9f0700), SPH_C32(0xb72a4a63),
+	  SPH_C32(0xe0db8c03), SPH_C32(0xd522d622) },
+	{ SPH_C32(0x9b830400), SPH_C32(0x2227ff88), SPH_C32(0x05b7ad5a),
+	  SPH_C32(0xadf2c730), SPH_C32(0x8f3e0400), SPH_C32(0x0d9dc877),
+	  SPH_C32(0x6fc548e1), SPH_C32(0x898d2cd6) },
+	{ SPH_C32(0x2c270500), SPH_C32(0xa838ce50), SPH_C32(0x803e75f1),
+	  SPH_C32(0x4b36a354), SPH_C32(0xfc720400), SPH_C32(0x98f26fa1),
+	  SPH_C32(0xcd585a76), SPH_C32(0xe7684482) },
+	{ SPH_C32(0xe8cf0400), SPH_C32(0xb748585e), SPH_C32(0xa72abfcd),
+	  SPH_C32(0xc317af64), SPH_C32(0x4bd60500), SPH_C32(0x12ed5e79),
+	  SPH_C32(0x48d182dd), SPH_C32(0x01ac20e6) },
+	{ SPH_C32(0x5f6b0500), SPH_C32(0x3d576986), SPH_C32(0x22a36766),
+	  SPH_C32(0x25d3cb00), SPH_C32(0x389a0500), SPH_C32(0x8782f9af),
+	  SPH_C32(0xea4c904a), SPH_C32(0x6f4948b2) },
+	{ SPH_C32(0x3c3b0600), SPH_C32(0x3d357bbb), SPH_C32(0x655254a8),
+	  SPH_C32(0x33e6b246), SPH_C32(0x61180400), SPH_C32(0x1fd6a049),
+	  SPH_C32(0xef079e6e), SPH_C32(0xb27e87fa) },
+	{ SPH_C32(0x8b9f0700), SPH_C32(0xb72a4a63), SPH_C32(0xe0db8c03),
+	  SPH_C32(0xd522d622), SPH_C32(0x12540400), SPH_C32(0x8ab9079f),
+	  SPH_C32(0x4d9a8cf9), SPH_C32(0xdc9befae) },
+	{ SPH_C32(0x4f770600), SPH_C32(0xa85adc6d), SPH_C32(0xc7cf463f),
+	  SPH_C32(0x5d03da12), SPH_C32(0xa5f00500), SPH_C32(0x00a63647),
+	  SPH_C32(0xc8135452), SPH_C32(0x3a5f8bca) },
+	{ SPH_C32(0xf8d30700), SPH_C32(0x2245edb5), SPH_C32(0x42469e94),
+	  SPH_C32(0xbbc7be76), SPH_C32(0xd6bc0500), SPH_C32(0x95c99191),
+	  SPH_C32(0x6a8e46c5), SPH_C32(0x54bae39e) },
+	{ SPH_C32(0x75a50400), SPH_C32(0x306c97b6), SPH_C32(0x85757bd5),
+	  SPH_C32(0x96016c1c), SPH_C32(0xc6a00600), SPH_C32(0x00c4247a),
+	  SPH_C32(0x8fe2679c), SPH_C32(0x2c6af28c) },
+	{ SPH_C32(0xc2010500), SPH_C32(0xba73a66e), SPH_C32(0x00fca37e),
+	  SPH_C32(0x70c50878), SPH_C32(0xb5ec0600), SPH_C32(0x95ab83ac),
+	  SPH_C32(0x2d7f750b), SPH_C32(0x428f9ad8) },
+	{ SPH_C32(0x06e90400), SPH_C32(0xa5033060), SPH_C32(0x27e86942),
+	  SPH_C32(0xf8e40448), SPH_C32(0x02480700), SPH_C32(0x1fb4b274),
+	  SPH_C32(0xa8f6ada0), SPH_C32(0xa44bfebc) },
+	{ SPH_C32(0xb14d0500), SPH_C32(0x2f1c01b8), SPH_C32(0xa261b1e9),
+	  SPH_C32(0x1e20602c), SPH_C32(0x71040700), SPH_C32(0x8adb15a2),
+	  SPH_C32(0x0a6bbf37), SPH_C32(0xcaae96e8) },
+	{ SPH_C32(0xd21d0600), SPH_C32(0x2f7e1385), SPH_C32(0xe5908227),
+	  SPH_C32(0x0815196a), SPH_C32(0x28860600), SPH_C32(0x128f4c44),
+	  SPH_C32(0x0f20b113), SPH_C32(0x179959a0) },
+	{ SPH_C32(0x65b90700), SPH_C32(0xa561225d), SPH_C32(0x60195a8c),
+	  SPH_C32(0xeed17d0e), SPH_C32(0x5bca0600), SPH_C32(0x87e0eb92),
+	  SPH_C32(0xadbda384), SPH_C32(0x797c31f4) },
+	{ SPH_C32(0xa1510600), SPH_C32(0xba11b453), SPH_C32(0x470d90b0),
+	  SPH_C32(0x66f0713e), SPH_C32(0xec6e0700), SPH_C32(0x0dffda4a),
+	  SPH_C32(0x28347b2f), SPH_C32(0x9fb85590) },
+	{ SPH_C32(0x16f50700), SPH_C32(0x300e858b), SPH_C32(0xc284481b),
+	  SPH_C32(0x8034155a), SPH_C32(0x9f220700), SPH_C32(0x98907d9c),
+	  SPH_C32(0x8aa969b8), SPH_C32(0xf15d3dc4) },
+	{ SPH_C32(0xde320800), SPH_C32(0x288350fe), SPH_C32(0x71852ac7),
+	  SPH_C32(0xa6bf9f96), SPH_C32(0xe18b0000), SPH_C32(0x5459887d),
+	  SPH_C32(0xbf1283d3), SPH_C32(0x1b666a73) },
+	{ SPH_C32(0x69960900), SPH_C32(0xa29c6126), SPH_C32(0xf40cf26c),
+	  SPH_C32(0x407bfbf2), SPH_C32(0x92c70000), SPH_C32(0xc1362fab),
+	  SPH_C32(0x1d8f9144), SPH_C32(0x75830227) },
+	{ SPH_C32(0xad7e0800), SPH_C32(0xbdecf728), SPH_C32(0xd3183850),
+	  SPH_C32(0xc85af7c2), SPH_C32(0x25630100), SPH_C32(0x4b291e73),
+	  SPH_C32(0x980649ef), SPH_C32(0x93476643) },
+	{ SPH_C32(0x1ada0900), SPH_C32(0x37f3c6f0), SPH_C32(0x5691e0fb),
+	  SPH_C32(0x2e9e93a6), SPH_C32(0x562f0100), SPH_C32(0xde46b9a5),
+	  SPH_C32(0x3a9b5b78), SPH_C32(0xfda20e17) },
+	{ SPH_C32(0x798a0a00), SPH_C32(0x3791d4cd), SPH_C32(0x1160d335),
+	  SPH_C32(0x38abeae0), SPH_C32(0x0fad0000), SPH_C32(0x4612e043),
+	  SPH_C32(0x3fd0555c), SPH_C32(0x2095c15f) },
+	{ SPH_C32(0xce2e0b00), SPH_C32(0xbd8ee515), SPH_C32(0x94e90b9e),
+	  SPH_C32(0xde6f8e84), SPH_C32(0x7ce10000), SPH_C32(0xd37d4795),
+	  SPH_C32(0x9d4d47cb), SPH_C32(0x4e70a90b) },
+	{ SPH_C32(0x0ac60a00), SPH_C32(0xa2fe731b), SPH_C32(0xb3fdc1a2),
+	  SPH_C32(0x564e82b4), SPH_C32(0xcb450100), SPH_C32(0x5962764d),
+	  SPH_C32(0x18c49f60), SPH_C32(0xa8b4cd6f) },
+	{ SPH_C32(0xbd620b00), SPH_C32(0x28e142c3), SPH_C32(0x36741909),
+	  SPH_C32(0xb08ae6d0), SPH_C32(0xb8090100), SPH_C32(0xcc0dd19b),
+	  SPH_C32(0xba598df7), SPH_C32(0xc651a53b) },
+	{ SPH_C32(0x30140800), SPH_C32(0x3ac838c0), SPH_C32(0xf147fc48),
+	  SPH_C32(0x9d4c34ba), SPH_C32(0xa8150200), SPH_C32(0x59006470),
+	  SPH_C32(0x5f35acae), SPH_C32(0xbe81b429) },
+	{ SPH_C32(0x87b00900), SPH_C32(0xb0d70918), SPH_C32(0x74ce24e3),
+	  SPH_C32(0x7b8850de), SPH_C32(0xdb590200), SPH_C32(0xcc6fc3a6),
+	  SPH_C32(0xfda8be39), SPH_C32(0xd064dc7d) },
+	{ SPH_C32(0x43580800), SPH_C32(0xafa79f16), SPH_C32(0x53daeedf),
+	  SPH_C32(0xf3a95cee), SPH_C32(0x6cfd0300), SPH_C32(0x4670f27e),
+	  SPH_C32(0x78216692), SPH_C32(0x36a0b819) },
+	{ SPH_C32(0xf4fc0900), SPH_C32(0x25b8aece), SPH_C32(0xd6533674),
+	  SPH_C32(0x156d388a), SPH_C32(0x1fb10300), SPH_C32(0xd31f55a8),
+	  SPH_C32(0xdabc7405), SPH_C32(0x5845d04d) },
+	{ SPH_C32(0x97ac0a00), SPH_C32(0x25dabcf3), SPH_C32(0x91a205ba),
+	  SPH_C32(0x035841cc), SPH_C32(0x46330200), SPH_C32(0x4b4b0c4e),
+	  SPH_C32(0xdff77a21), SPH_C32(0x85721f05) },
+	{ SPH_C32(0x20080b00), SPH_C32(0xafc58d2b), SPH_C32(0x142bdd11),
+	  SPH_C32(0xe59c25a8), SPH_C32(0x357f0200), SPH_C32(0xde24ab98),
+	  SPH_C32(0x7d6a68b6), SPH_C32(0xeb977751) },
+	{ SPH_C32(0xe4e00a00), SPH_C32(0xb0b51b25), SPH_C32(0x333f172d),
+	  SPH_C32(0x6dbd2998), SPH_C32(0x82db0300), SPH_C32(0x543b9a40),
+	  SPH_C32(0xf8e3b01d), SPH_C32(0x0d531335) },
+	{ SPH_C32(0x53440b00), SPH_C32(0x3aaa2afd), SPH_C32(0xb6b6cf86),
+	  SPH_C32(0x8b794dfc), SPH_C32(0xf1970300), SPH_C32(0xc1543d96),
+	  SPH_C32(0x5a7ea28a), SPH_C32(0x63b67b61) },
+	{ SPH_C32(0x510c0c00), SPH_C32(0x251e9889), SPH_C32(0x1e406226),
+	  SPH_C32(0x2f32b340), SPH_C32(0xf5360000), SPH_C32(0x7be3bf82),
+	  SPH_C32(0xd5606668), SPH_C32(0x3f198195) },
+	{ SPH_C32(0xe6a80d00), SPH_C32(0xaf01a951), SPH_C32(0x9bc9ba8d),
+	  SPH_C32(0xc9f6d724), SPH_C32(0x867a0000), SPH_C32(0xee8c1854),
+	  SPH_C32(0x77fd74ff), SPH_C32(0x51fce9c1) },
+	{ SPH_C32(0x22400c00), SPH_C32(0xb0713f5f), SPH_C32(0xbcdd70b1),
+	  SPH_C32(0x41d7db14), SPH_C32(0x31de0100), SPH_C32(0x6493298c),
+	  SPH_C32(0xf274ac54), SPH_C32(0xb7388da5) },
+	{ SPH_C32(0x95e40d00), SPH_C32(0x3a6e0e87), SPH_C32(0x3954a81a),
+	  SPH_C32(0xa713bf70), SPH_C32(0x42920100), SPH_C32(0xf1fc8e5a),
+	  SPH_C32(0x50e9bec3), SPH_C32(0xd9dde5f1) },
+	{ SPH_C32(0xf6b40e00), SPH_C32(0x3a0c1cba), SPH_C32(0x7ea59bd4),
+	  SPH_C32(0xb126c636), SPH_C32(0x1b100000), SPH_C32(0x69a8d7bc),
+	  SPH_C32(0x55a2b0e7), SPH_C32(0x04ea2ab9) },
+	{ SPH_C32(0x41100f00), SPH_C32(0xb0132d62), SPH_C32(0xfb2c437f),
+	  SPH_C32(0x57e2a252), SPH_C32(0x685c0000), SPH_C32(0xfcc7706a),
+	  SPH_C32(0xf73fa270), SPH_C32(0x6a0f42ed) },
+	{ SPH_C32(0x85f80e00), SPH_C32(0xaf63bb6c), SPH_C32(0xdc388943),
+	  SPH_C32(0xdfc3ae62), SPH_C32(0xdff80100), SPH_C32(0x76d841b2),
+	  SPH_C32(0x72b67adb), SPH_C32(0x8ccb2689) },
+	{ SPH_C32(0x325c0f00), SPH_C32(0x257c8ab4), SPH_C32(0x59b151e8),
+	  SPH_C32(0x3907ca06), SPH_C32(0xacb40100), SPH_C32(0xe3b7e664),
+	  SPH_C32(0xd02b684c), SPH_C32(0xe22e4edd) },
+	{ SPH_C32(0xbf2a0c00), SPH_C32(0x3755f0b7), SPH_C32(0x9e82b4a9),
+	  SPH_C32(0x14c1186c), SPH_C32(0xbca80200), SPH_C32(0x76ba538f),
+	  SPH_C32(0x35474915), SPH_C32(0x9afe5fcf) },
+	{ SPH_C32(0x088e0d00), SPH_C32(0xbd4ac16f), SPH_C32(0x1b0b6c02),
+	  SPH_C32(0xf2057c08), SPH_C32(0xcfe40200), SPH_C32(0xe3d5f459),
+	  SPH_C32(0x97da5b82), SPH_C32(0xf41b379b) },
+	{ SPH_C32(0xcc660c00), SPH_C32(0xa23a5761), SPH_C32(0x3c1fa63e),
+	  SPH_C32(0x7a247038), SPH_C32(0x78400300), SPH_C32(0x69cac581),
+	  SPH_C32(0x12538329), SPH_C32(0x12df53ff) },
+	{ SPH_C32(0x7bc20d00), SPH_C32(0x282566b9), SPH_C32(0xb9967e95),
+	  SPH_C32(0x9ce0145c), SPH_C32(0x0b0c0300), SPH_C32(0xfca56257),
+	  SPH_C32(0xb0ce91be), SPH_C32(0x7c3a3bab) },
+	{ SPH_C32(0x18920e00), SPH_C32(0x28477484), SPH_C32(0xfe674d5b),
+	  SPH_C32(0x8ad56d1a), SPH_C32(0x528e0200), SPH_C32(0x64f13bb1),
+	  SPH_C32(0xb5859f9a), SPH_C32(0xa10df4e3) },
+	{ SPH_C32(0xaf360f00), SPH_C32(0xa258455c), SPH_C32(0x7bee95f0),
+	  SPH_C32(0x6c11097e), SPH_C32(0x21c20200), SPH_C32(0xf19e9c67),
+	  SPH_C32(0x17188d0d), SPH_C32(0xcfe89cb7) },
+	{ SPH_C32(0x6bde0e00), SPH_C32(0xbd28d352), SPH_C32(0x5cfa5fcc),
+	  SPH_C32(0xe430054e), SPH_C32(0x96660300), SPH_C32(0x7b81adbf),
+	  SPH_C32(0x929155a6), SPH_C32(0x292cf8d3) },
+	{ SPH_C32(0xdc7a0f00), SPH_C32(0x3737e28a), SPH_C32(0xd9738767),
+	  SPH_C32(0x02f4612a), SPH_C32(0xe52a0300), SPH_C32(0xeeee0a69),
+	  SPH_C32(0x300c4731), SPH_C32(0x47c99087) },
+	{ SPH_C32(0xca8f0800), SPH_C32(0x07396701), SPH_C32(0x1bf7cf7c),
+	  SPH_C32(0x82c07470), SPH_C32(0x7a080400), SPH_C32(0x767e77f5),
+	  SPH_C32(0xbaa52e89), SPH_C32(0xb694ad43) },
+	{ SPH_C32(0x7d2b0900), SPH_C32(0x8d2656d9), SPH_C32(0x9e7e17d7),
+	  SPH_C32(0x64041014), SPH_C32(0x09440400), SPH_C32(0xe311d023),
+	  SPH_C32(0x18383c1e), SPH_C32(0xd871c517) },
+	{ SPH_C32(0xb9c30800), SPH_C32(0x9256c0d7), SPH_C32(0xb96addeb),
+	  SPH_C32(0xec251c24), SPH_C32(0xbee00500), SPH_C32(0x690ee1fb),
+	  SPH_C32(0x9db1e4b5), SPH_C32(0x3eb5a173) },
+	{ SPH_C32(0x0e670900), SPH_C32(0x1849f10f), SPH_C32(0x3ce30540),
+	  SPH_C32(0x0ae17840), SPH_C32(0xcdac0500), SPH_C32(0xfc61462d),
+	  SPH_C32(0x3f2cf622), SPH_C32(0x5050c927) },
+	{ SPH_C32(0x6d370a00), SPH_C32(0x182be332), SPH_C32(0x7b12368e),
+	  SPH_C32(0x1cd40106), SPH_C32(0x942e0400), SPH_C32(0x64351fcb),
+	  SPH_C32(0x3a67f806), SPH_C32(0x8d67066f) },
+	{ SPH_C32(0xda930b00), SPH_C32(0x9234d2ea), SPH_C32(0xfe9bee25),
+	  SPH_C32(0xfa106562), SPH_C32(0xe7620400), SPH_C32(0xf15ab81d),
+	  SPH_C32(0x98faea91), SPH_C32(0xe3826e3b) },
+	{ SPH_C32(0x1e7b0a00), SPH_C32(0x8d4444e4), SPH_C32(0xd98f2419),
+	  SPH_C32(0x72316952), SPH_C32(0x50c60500), SPH_C32(0x7b4589c5),
+	  SPH_C32(0x1d73323a), SPH_C32(0x05460a5f) },
+	{ SPH_C32(0xa9df0b00), SPH_C32(0x075b753c), SPH_C32(0x5c06fcb2),
+	  SPH_C32(0x94f50d36), SPH_C32(0x238a0500), SPH_C32(0xee2a2e13),
+	  SPH_C32(0xbfee20ad), SPH_C32(0x6ba3620b) },
+	{ SPH_C32(0x24a90800), SPH_C32(0x15720f3f), SPH_C32(0x9b3519f3),
+	  SPH_C32(0xb933df5c), SPH_C32(0x33960600), SPH_C32(0x7b279bf8),
+	  SPH_C32(0x5a8201f4), SPH_C32(0x13737319) },
+	{ SPH_C32(0x930d0900), SPH_C32(0x9f6d3ee7), SPH_C32(0x1ebcc158),
+	  SPH_C32(0x5ff7bb38), SPH_C32(0x40da0600), SPH_C32(0xee483c2e),
+	  SPH_C32(0xf81f1363), SPH_C32(0x7d961b4d) },
+	{ SPH_C32(0x57e50800), SPH_C32(0x801da8e9), SPH_C32(0x39a80b64),
+	  SPH_C32(0xd7d6b708), SPH_C32(0xf77e0700), SPH_C32(0x64570df6),
+	  SPH_C32(0x7d96cbc8), SPH_C32(0x9b527f29) },
+	{ SPH_C32(0xe0410900), SPH_C32(0x0a029931), SPH_C32(0xbc21d3cf),
+	  SPH_C32(0x3112d36c), SPH_C32(0x84320700), SPH_C32(0xf138aa20),
+	  SPH_C32(0xdf0bd95f), SPH_C32(0xf5b7177d) },
+	{ SPH_C32(0x83110a00), SPH_C32(0x0a608b0c), SPH_C32(0xfbd0e001),
+	  SPH_C32(0x2727aa2a), SPH_C32(0xddb00600), SPH_C32(0x696cf3c6),
+	  SPH_C32(0xda40d77b), SPH_C32(0x2880d835) },
+	{ SPH_C32(0x34b50b00), SPH_C32(0x807fbad4), SPH_C32(0x7e5938aa),
+	  SPH_C32(0xc1e3ce4e), SPH_C32(0xaefc0600), SPH_C32(0xfc035410),
+	  SPH_C32(0x78ddc5ec), SPH_C32(0x4665b061) },
+	{ SPH_C32(0xf05d0a00), SPH_C32(0x9f0f2cda), SPH_C32(0x594df296),
+	  SPH_C32(0x49c2c27e), SPH_C32(0x19580700), SPH_C32(0x761c65c8),
+	  SPH_C32(0xfd541d47), SPH_C32(0xa0a1d405) },
+	{ SPH_C32(0x47f90b00), SPH_C32(0x15101d02), SPH_C32(0xdcc42a3d),
+	  SPH_C32(0xaf06a61a), SPH_C32(0x6a140700), SPH_C32(0xe373c21e),
+	  SPH_C32(0x5fc90fd0), SPH_C32(0xce44bc51) },
+	{ SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76), SPH_C32(0x7432879d),
+	  SPH_C32(0x0b4d58a6), SPH_C32(0x6eb50400), SPH_C32(0x59c4400a),
+	  SPH_C32(0xd0d7cb32), SPH_C32(0x92eb46a5) },
+	{ SPH_C32(0xf2150d00), SPH_C32(0x80bb9eae), SPH_C32(0xf1bb5f36),
+	  SPH_C32(0xed893cc2), SPH_C32(0x1df90400), SPH_C32(0xccabe7dc),
+	  SPH_C32(0x724ad9a5), SPH_C32(0xfc0e2ef1) },
+	{ SPH_C32(0x36fd0c00), SPH_C32(0x9fcb08a0), SPH_C32(0xd6af950a),
+	  SPH_C32(0x65a830f2), SPH_C32(0xaa5d0500), SPH_C32(0x46b4d604),
+	  SPH_C32(0xf7c3010e), SPH_C32(0x1aca4a95) },
+	{ SPH_C32(0x81590d00), SPH_C32(0x15d43978), SPH_C32(0x53264da1),
+	  SPH_C32(0x836c5496), SPH_C32(0xd9110500), SPH_C32(0xd3db71d2),
+	  SPH_C32(0x555e1399), SPH_C32(0x742f22c1) },
+	{ SPH_C32(0xe2090e00), SPH_C32(0x15b62b45), SPH_C32(0x14d77e6f),
+	  SPH_C32(0x95592dd0), SPH_C32(0x80930400), SPH_C32(0x4b8f2834),
+	  SPH_C32(0x50151dbd), SPH_C32(0xa918ed89) },
+	{ SPH_C32(0x55ad0f00), SPH_C32(0x9fa91a9d), SPH_C32(0x915ea6c4),
+	  SPH_C32(0x739d49b4), SPH_C32(0xf3df0400), SPH_C32(0xdee08fe2),
+	  SPH_C32(0xf2880f2a), SPH_C32(0xc7fd85dd) },
+	{ SPH_C32(0x91450e00), SPH_C32(0x80d98c93), SPH_C32(0xb64a6cf8),
+	  SPH_C32(0xfbbc4584), SPH_C32(0x447b0500), SPH_C32(0x54ffbe3a),
+	  SPH_C32(0x7701d781), SPH_C32(0x2139e1b9) },
+	{ SPH_C32(0x26e10f00), SPH_C32(0x0ac6bd4b), SPH_C32(0x33c3b453),
+	  SPH_C32(0x1d7821e0), SPH_C32(0x37370500), SPH_C32(0xc19019ec),
+	  SPH_C32(0xd59cc516), SPH_C32(0x4fdc89ed) },
+	{ SPH_C32(0xab970c00), SPH_C32(0x18efc748), SPH_C32(0xf4f05112),
+	  SPH_C32(0x30bef38a), SPH_C32(0x272b0600), SPH_C32(0x549dac07),
+	  SPH_C32(0x30f0e44f), SPH_C32(0x370c98ff) },
+	{ SPH_C32(0x1c330d00), SPH_C32(0x92f0f690), SPH_C32(0x717989b9),
+	  SPH_C32(0xd67a97ee), SPH_C32(0x54670600), SPH_C32(0xc1f20bd1),
+	  SPH_C32(0x926df6d8), SPH_C32(0x59e9f0ab) },
+	{ SPH_C32(0xd8db0c00), SPH_C32(0x8d80609e), SPH_C32(0x566d4385),
+	  SPH_C32(0x5e5b9bde), SPH_C32(0xe3c30700), SPH_C32(0x4bed3a09),
+	  SPH_C32(0x17e42e73), SPH_C32(0xbf2d94cf) },
+	{ SPH_C32(0x6f7f0d00), SPH_C32(0x079f5146), SPH_C32(0xd3e49b2e),
+	  SPH_C32(0xb89fffba), SPH_C32(0x908f0700), SPH_C32(0xde829ddf),
+	  SPH_C32(0xb5793ce4), SPH_C32(0xd1c8fc9b) },
+	{ SPH_C32(0x0c2f0e00), SPH_C32(0x07fd437b), SPH_C32(0x9415a8e0),
+	  SPH_C32(0xaeaa86fc), SPH_C32(0xc90d0600), SPH_C32(0x46d6c439),
+	  SPH_C32(0xb03232c0), SPH_C32(0x0cff33d3) },
+	{ SPH_C32(0xbb8b0f00), SPH_C32(0x8de272a3), SPH_C32(0x119c704b),
+	  SPH_C32(0x486ee298), SPH_C32(0xba410600), SPH_C32(0xd3b963ef),
+	  SPH_C32(0x12af2057), SPH_C32(0x621a5b87) },
+	{ SPH_C32(0x7f630e00), SPH_C32(0x9292e4ad), SPH_C32(0x3688ba77),
+	  SPH_C32(0xc04feea8), SPH_C32(0x0de50700), SPH_C32(0x59a65237),
+	  SPH_C32(0x9726f8fc), SPH_C32(0x84de3fe3) },
+	{ SPH_C32(0xc8c70f00), SPH_C32(0x188dd575), SPH_C32(0xb30162dc),
+	  SPH_C32(0x268b8acc), SPH_C32(0x7ea90700), SPH_C32(0xccc9f5e1),
+	  SPH_C32(0x35bbea6b), SPH_C32(0xea3b57b7) },
+	{ SPH_C32(0xe18b0000), SPH_C32(0x5459887d), SPH_C32(0xbf1283d3),
+	  SPH_C32(0x1b666a73), SPH_C32(0x3fb90800), SPH_C32(0x7cdad883),
+	  SPH_C32(0xce97a914), SPH_C32(0xbdd9f5e5) },
+	{ SPH_C32(0x562f0100), SPH_C32(0xde46b9a5), SPH_C32(0x3a9b5b78),
+	  SPH_C32(0xfda20e17), SPH_C32(0x4cf50800), SPH_C32(0xe9b57f55),
+	  SPH_C32(0x6c0abb83), SPH_C32(0xd33c9db1) },
+	{ SPH_C32(0x92c70000), SPH_C32(0xc1362fab), SPH_C32(0x1d8f9144),
+	  SPH_C32(0x75830227), SPH_C32(0xfb510900), SPH_C32(0x63aa4e8d),
+	  SPH_C32(0xe9836328), SPH_C32(0x35f8f9d5) },
+	{ SPH_C32(0x25630100), SPH_C32(0x4b291e73), SPH_C32(0x980649ef),
+	  SPH_C32(0x93476643), SPH_C32(0x881d0900), SPH_C32(0xf6c5e95b),
+	  SPH_C32(0x4b1e71bf), SPH_C32(0x5b1d9181) },
+	{ SPH_C32(0x46330200), SPH_C32(0x4b4b0c4e), SPH_C32(0xdff77a21),
+	  SPH_C32(0x85721f05), SPH_C32(0xd19f0800), SPH_C32(0x6e91b0bd),
+	  SPH_C32(0x4e557f9b), SPH_C32(0x862a5ec9) },
+	{ SPH_C32(0xf1970300), SPH_C32(0xc1543d96), SPH_C32(0x5a7ea28a),
+	  SPH_C32(0x63b67b61), SPH_C32(0xa2d30800), SPH_C32(0xfbfe176b),
+	  SPH_C32(0xecc86d0c), SPH_C32(0xe8cf369d) },
+	{ SPH_C32(0x357f0200), SPH_C32(0xde24ab98), SPH_C32(0x7d6a68b6),
+	  SPH_C32(0xeb977751), SPH_C32(0x15770900), SPH_C32(0x71e126b3),
+	  SPH_C32(0x6941b5a7), SPH_C32(0x0e0b52f9) },
+	{ SPH_C32(0x82db0300), SPH_C32(0x543b9a40), SPH_C32(0xf8e3b01d),
+	  SPH_C32(0x0d531335), SPH_C32(0x663b0900), SPH_C32(0xe48e8165),
+	  SPH_C32(0xcbdca730), SPH_C32(0x60ee3aad) },
+	{ SPH_C32(0x0fad0000), SPH_C32(0x4612e043), SPH_C32(0x3fd0555c),
+	  SPH_C32(0x2095c15f), SPH_C32(0x76270a00), SPH_C32(0x7183348e),
+	  SPH_C32(0x2eb08669), SPH_C32(0x183e2bbf) },
+	{ SPH_C32(0xb8090100), SPH_C32(0xcc0dd19b), SPH_C32(0xba598df7),
+	  SPH_C32(0xc651a53b), SPH_C32(0x056b0a00), SPH_C32(0xe4ec9358),
+	  SPH_C32(0x8c2d94fe), SPH_C32(0x76db43eb) },
+	{ SPH_C32(0x7ce10000), SPH_C32(0xd37d4795), SPH_C32(0x9d4d47cb),
+	  SPH_C32(0x4e70a90b), SPH_C32(0xb2cf0b00), SPH_C32(0x6ef3a280),
+	  SPH_C32(0x09a44c55), SPH_C32(0x901f278f) },
+	{ SPH_C32(0xcb450100), SPH_C32(0x5962764d), SPH_C32(0x18c49f60),
+	  SPH_C32(0xa8b4cd6f), SPH_C32(0xc1830b00), SPH_C32(0xfb9c0556),
+	  SPH_C32(0xab395ec2), SPH_C32(0xfefa4fdb) },
+	{ SPH_C32(0xa8150200), SPH_C32(0x59006470), SPH_C32(0x5f35acae),
+	  SPH_C32(0xbe81b429), SPH_C32(0x98010a00), SPH_C32(0x63c85cb0),
+	  SPH_C32(0xae7250e6), SPH_C32(0x23cd8093) },
+	{ SPH_C32(0x1fb10300), SPH_C32(0xd31f55a8), SPH_C32(0xdabc7405),
+	  SPH_C32(0x5845d04d), SPH_C32(0xeb4d0a00), SPH_C32(0xf6a7fb66),
+	  SPH_C32(0x0cef4271), SPH_C32(0x4d28e8c7) },
+	{ SPH_C32(0xdb590200), SPH_C32(0xcc6fc3a6), SPH_C32(0xfda8be39),
+	  SPH_C32(0xd064dc7d), SPH_C32(0x5ce90b00), SPH_C32(0x7cb8cabe),
+	  SPH_C32(0x89669ada), SPH_C32(0xabec8ca3) },
+	{ SPH_C32(0x6cfd0300), SPH_C32(0x4670f27e), SPH_C32(0x78216692),
+	  SPH_C32(0x36a0b819), SPH_C32(0x2fa50b00), SPH_C32(0xe9d76d68),
+	  SPH_C32(0x2bfb884d), SPH_C32(0xc509e4f7) },
+	{ SPH_C32(0x6eb50400), SPH_C32(0x59c4400a), SPH_C32(0xd0d7cb32),
+	  SPH_C32(0x92eb46a5), SPH_C32(0x2b040800), SPH_C32(0x5360ef7c),
+	  SPH_C32(0xa4e54caf), SPH_C32(0x99a61e03) },
+	{ SPH_C32(0xd9110500), SPH_C32(0xd3db71d2), SPH_C32(0x555e1399),
+	  SPH_C32(0x742f22c1), SPH_C32(0x58480800), SPH_C32(0xc60f48aa),
+	  SPH_C32(0x06785e38), SPH_C32(0xf7437657) },
+	{ SPH_C32(0x1df90400), SPH_C32(0xccabe7dc), SPH_C32(0x724ad9a5),
+	  SPH_C32(0xfc0e2ef1), SPH_C32(0xefec0900), SPH_C32(0x4c107972),
+	  SPH_C32(0x83f18693), SPH_C32(0x11871233) },
+	{ SPH_C32(0xaa5d0500), SPH_C32(0x46b4d604), SPH_C32(0xf7c3010e),
+	  SPH_C32(0x1aca4a95), SPH_C32(0x9ca00900), SPH_C32(0xd97fdea4),
+	  SPH_C32(0x216c9404), SPH_C32(0x7f627a67) },
+	{ SPH_C32(0xc90d0600), SPH_C32(0x46d6c439), SPH_C32(0xb03232c0),
+	  SPH_C32(0x0cff33d3), SPH_C32(0xc5220800), SPH_C32(0x412b8742),
+	  SPH_C32(0x24279a20), SPH_C32(0xa255b52f) },
+	{ SPH_C32(0x7ea90700), SPH_C32(0xccc9f5e1), SPH_C32(0x35bbea6b),
+	  SPH_C32(0xea3b57b7), SPH_C32(0xb66e0800), SPH_C32(0xd4442094),
+	  SPH_C32(0x86ba88b7), SPH_C32(0xccb0dd7b) },
+	{ SPH_C32(0xba410600), SPH_C32(0xd3b963ef), SPH_C32(0x12af2057),
+	  SPH_C32(0x621a5b87), SPH_C32(0x01ca0900), SPH_C32(0x5e5b114c),
+	  SPH_C32(0x0333501c), SPH_C32(0x2a74b91f) },
+	{ SPH_C32(0x0de50700), SPH_C32(0x59a65237), SPH_C32(0x9726f8fc),
+	  SPH_C32(0x84de3fe3), SPH_C32(0x72860900), SPH_C32(0xcb34b69a),
+	  SPH_C32(0xa1ae428b), SPH_C32(0x4491d14b) },
+	{ SPH_C32(0x80930400), SPH_C32(0x4b8f2834), SPH_C32(0x50151dbd),
+	  SPH_C32(0xa918ed89), SPH_C32(0x629a0a00), SPH_C32(0x5e390371),
+	  SPH_C32(0x44c263d2), SPH_C32(0x3c41c059) },
+	{ SPH_C32(0x37370500), SPH_C32(0xc19019ec), SPH_C32(0xd59cc516),
+	  SPH_C32(0x4fdc89ed), SPH_C32(0x11d60a00), SPH_C32(0xcb56a4a7),
+	  SPH_C32(0xe65f7145), SPH_C32(0x52a4a80d) },
+	{ SPH_C32(0xf3df0400), SPH_C32(0xdee08fe2), SPH_C32(0xf2880f2a),
+	  SPH_C32(0xc7fd85dd), SPH_C32(0xa6720b00), SPH_C32(0x4149957f),
+	  SPH_C32(0x63d6a9ee), SPH_C32(0xb460cc69) },
+	{ SPH_C32(0x447b0500), SPH_C32(0x54ffbe3a), SPH_C32(0x7701d781),
+	  SPH_C32(0x2139e1b9), SPH_C32(0xd53e0b00), SPH_C32(0xd42632a9),
+	  SPH_C32(0xc14bbb79), SPH_C32(0xda85a43d) },
+	{ SPH_C32(0x272b0600), SPH_C32(0x549dac07), SPH_C32(0x30f0e44f),
+	  SPH_C32(0x370c98ff), SPH_C32(0x8cbc0a00), SPH_C32(0x4c726b4f),
+	  SPH_C32(0xc400b55d), SPH_C32(0x07b26b75) },
+	{ SPH_C32(0x908f0700), SPH_C32(0xde829ddf), SPH_C32(0xb5793ce4),
+	  SPH_C32(0xd1c8fc9b), SPH_C32(0xfff00a00), SPH_C32(0xd91dcc99),
+	  SPH_C32(0x669da7ca), SPH_C32(0x69570321) },
+	{ SPH_C32(0x54670600), SPH_C32(0xc1f20bd1), SPH_C32(0x926df6d8),
+	  SPH_C32(0x59e9f0ab), SPH_C32(0x48540b00), SPH_C32(0x5302fd41),
+	  SPH_C32(0xe3147f61), SPH_C32(0x8f936745) },
+	{ SPH_C32(0xe3c30700), SPH_C32(0x4bed3a09), SPH_C32(0x17e42e73),
+	  SPH_C32(0xbf2d94cf), SPH_C32(0x3b180b00), SPH_C32(0xc66d5a97),
+	  SPH_C32(0x41896df6), SPH_C32(0xe1760f11) },
+	{ SPH_C32(0xf5360000), SPH_C32(0x7be3bf82), SPH_C32(0xd5606668),
+	  SPH_C32(0x3f198195), SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b),
+	  SPH_C32(0xcb20044e), SPH_C32(0x102b32d5) },
+	{ SPH_C32(0x42920100), SPH_C32(0xf1fc8e5a), SPH_C32(0x50e9bec3),
+	  SPH_C32(0xd9dde5f1), SPH_C32(0xd7760c00), SPH_C32(0xcb9280dd),
+	  SPH_C32(0x69bd16d9), SPH_C32(0x7ece5a81) },
+	{ SPH_C32(0x867a0000), SPH_C32(0xee8c1854), SPH_C32(0x77fd74ff),
+	  SPH_C32(0x51fce9c1), SPH_C32(0x60d20d00), SPH_C32(0x418db105),
+	  SPH_C32(0xec34ce72), SPH_C32(0x980a3ee5) },
+	{ SPH_C32(0x31de0100), SPH_C32(0x6493298c), SPH_C32(0xf274ac54),
+	  SPH_C32(0xb7388da5), SPH_C32(0x139e0d00), SPH_C32(0xd4e216d3),
+	  SPH_C32(0x4ea9dce5), SPH_C32(0xf6ef56b1) },
+	{ SPH_C32(0x528e0200), SPH_C32(0x64f13bb1), SPH_C32(0xb5859f9a),
+	  SPH_C32(0xa10df4e3), SPH_C32(0x4a1c0c00), SPH_C32(0x4cb64f35),
+	  SPH_C32(0x4be2d2c1), SPH_C32(0x2bd899f9) },
+	{ SPH_C32(0xe52a0300), SPH_C32(0xeeee0a69), SPH_C32(0x300c4731),
+	  SPH_C32(0x47c99087), SPH_C32(0x39500c00), SPH_C32(0xd9d9e8e3),
+	  SPH_C32(0xe97fc056), SPH_C32(0x453df1ad) },
+	{ SPH_C32(0x21c20200), SPH_C32(0xf19e9c67), SPH_C32(0x17188d0d),
+	  SPH_C32(0xcfe89cb7), SPH_C32(0x8ef40d00), SPH_C32(0x53c6d93b),
+	  SPH_C32(0x6cf618fd), SPH_C32(0xa3f995c9) },
+	{ SPH_C32(0x96660300), SPH_C32(0x7b81adbf), SPH_C32(0x929155a6),
+	  SPH_C32(0x292cf8d3), SPH_C32(0xfdb80d00), SPH_C32(0xc6a97eed),
+	  SPH_C32(0xce6b0a6a), SPH_C32(0xcd1cfd9d) },
+	{ SPH_C32(0x1b100000), SPH_C32(0x69a8d7bc), SPH_C32(0x55a2b0e7),
+	  SPH_C32(0x04ea2ab9), SPH_C32(0xeda40e00), SPH_C32(0x53a4cb06),
+	  SPH_C32(0x2b072b33), SPH_C32(0xb5ccec8f) },
+	{ SPH_C32(0xacb40100), SPH_C32(0xe3b7e664), SPH_C32(0xd02b684c),
+	  SPH_C32(0xe22e4edd), SPH_C32(0x9ee80e00), SPH_C32(0xc6cb6cd0),
+	  SPH_C32(0x899a39a4), SPH_C32(0xdb2984db) },
+	{ SPH_C32(0x685c0000), SPH_C32(0xfcc7706a), SPH_C32(0xf73fa270),
+	  SPH_C32(0x6a0f42ed), SPH_C32(0x294c0f00), SPH_C32(0x4cd45d08),
+	  SPH_C32(0x0c13e10f), SPH_C32(0x3dede0bf) },
+	{ SPH_C32(0xdff80100), SPH_C32(0x76d841b2), SPH_C32(0x72b67adb),
+	  SPH_C32(0x8ccb2689), SPH_C32(0x5a000f00), SPH_C32(0xd9bbfade),
+	  SPH_C32(0xae8ef398), SPH_C32(0x530888eb) },
+	{ SPH_C32(0xbca80200), SPH_C32(0x76ba538f), SPH_C32(0x35474915),
+	  SPH_C32(0x9afe5fcf), SPH_C32(0x03820e00), SPH_C32(0x41efa338),
+	  SPH_C32(0xabc5fdbc), SPH_C32(0x8e3f47a3) },
+	{ SPH_C32(0x0b0c0300), SPH_C32(0xfca56257), SPH_C32(0xb0ce91be),
+	  SPH_C32(0x7c3a3bab), SPH_C32(0x70ce0e00), SPH_C32(0xd48004ee),
+	  SPH_C32(0x0958ef2b), SPH_C32(0xe0da2ff7) },
+	{ SPH_C32(0xcfe40200), SPH_C32(0xe3d5f459), SPH_C32(0x97da5b82),
+	  SPH_C32(0xf41b379b), SPH_C32(0xc76a0f00), SPH_C32(0x5e9f3536),
+	  SPH_C32(0x8cd13780), SPH_C32(0x061e4b93) },
+	{ SPH_C32(0x78400300), SPH_C32(0x69cac581), SPH_C32(0x12538329),
+	  SPH_C32(0x12df53ff), SPH_C32(0xb4260f00), SPH_C32(0xcbf092e0),
+	  SPH_C32(0x2e4c2517), SPH_C32(0x68fb23c7) },
+	{ SPH_C32(0x7a080400), SPH_C32(0x767e77f5), SPH_C32(0xbaa52e89),
+	  SPH_C32(0xb694ad43), SPH_C32(0xb0870c00), SPH_C32(0x714710f4),
+	  SPH_C32(0xa152e1f5), SPH_C32(0x3454d933) },
+	{ SPH_C32(0xcdac0500), SPH_C32(0xfc61462d), SPH_C32(0x3f2cf622),
+	  SPH_C32(0x5050c927), SPH_C32(0xc3cb0c00), SPH_C32(0xe428b722),
+	  SPH_C32(0x03cff362), SPH_C32(0x5ab1b167) },
+	{ SPH_C32(0x09440400), SPH_C32(0xe311d023), SPH_C32(0x18383c1e),
+	  SPH_C32(0xd871c517), SPH_C32(0x746f0d00), SPH_C32(0x6e3786fa),
+	  SPH_C32(0x86462bc9), SPH_C32(0xbc75d503) },
+	{ SPH_C32(0xbee00500), SPH_C32(0x690ee1fb), SPH_C32(0x9db1e4b5),
+	  SPH_C32(0x3eb5a173), SPH_C32(0x07230d00), SPH_C32(0xfb58212c),
+	  SPH_C32(0x24db395e), SPH_C32(0xd290bd57) },
+	{ SPH_C32(0xddb00600), SPH_C32(0x696cf3c6), SPH_C32(0xda40d77b),
+	  SPH_C32(0x2880d835), SPH_C32(0x5ea10c00), SPH_C32(0x630c78ca),
+	  SPH_C32(0x2190377a), SPH_C32(0x0fa7721f) },
+	{ SPH_C32(0x6a140700), SPH_C32(0xe373c21e), SPH_C32(0x5fc90fd0),
+	  SPH_C32(0xce44bc51), SPH_C32(0x2ded0c00), SPH_C32(0xf663df1c),
+	  SPH_C32(0x830d25ed), SPH_C32(0x61421a4b) },
+	{ SPH_C32(0xaefc0600), SPH_C32(0xfc035410), SPH_C32(0x78ddc5ec),
+	  SPH_C32(0x4665b061), SPH_C32(0x9a490d00), SPH_C32(0x7c7ceec4),
+	  SPH_C32(0x0684fd46), SPH_C32(0x87867e2f) },
+	{ SPH_C32(0x19580700), SPH_C32(0x761c65c8), SPH_C32(0xfd541d47),
+	  SPH_C32(0xa0a1d405), SPH_C32(0xe9050d00), SPH_C32(0xe9134912),
+	  SPH_C32(0xa419efd1), SPH_C32(0xe963167b) },
+	{ SPH_C32(0x942e0400), SPH_C32(0x64351fcb), SPH_C32(0x3a67f806),
+	  SPH_C32(0x8d67066f), SPH_C32(0xf9190e00), SPH_C32(0x7c1efcf9),
+	  SPH_C32(0x4175ce88), SPH_C32(0x91b30769) },
+	{ SPH_C32(0x238a0500), SPH_C32(0xee2a2e13), SPH_C32(0xbfee20ad),
+	  SPH_C32(0x6ba3620b), SPH_C32(0x8a550e00), SPH_C32(0xe9715b2f),
+	  SPH_C32(0xe3e8dc1f), SPH_C32(0xff566f3d) },
+	{ SPH_C32(0xe7620400), SPH_C32(0xf15ab81d), SPH_C32(0x98faea91),
+	  SPH_C32(0xe3826e3b), SPH_C32(0x3df10f00), SPH_C32(0x636e6af7),
+	  SPH_C32(0x666104b4), SPH_C32(0x19920b59) },
+	{ SPH_C32(0x50c60500), SPH_C32(0x7b4589c5), SPH_C32(0x1d73323a),
+	  SPH_C32(0x05460a5f), SPH_C32(0x4ebd0f00), SPH_C32(0xf601cd21),
+	  SPH_C32(0xc4fc1623), SPH_C32(0x7777630d) },
+	{ SPH_C32(0x33960600), SPH_C32(0x7b279bf8), SPH_C32(0x5a8201f4),
+	  SPH_C32(0x13737319), SPH_C32(0x173f0e00), SPH_C32(0x6e5594c7),
+	  SPH_C32(0xc1b71807), SPH_C32(0xaa40ac45) },
+	{ SPH_C32(0x84320700), SPH_C32(0xf138aa20), SPH_C32(0xdf0bd95f),
+	  SPH_C32(0xf5b7177d), SPH_C32(0x64730e00), SPH_C32(0xfb3a3311),
+	  SPH_C32(0x632a0a90), SPH_C32(0xc4a5c411) },
+	{ SPH_C32(0x40da0600), SPH_C32(0xee483c2e), SPH_C32(0xf81f1363),
+	  SPH_C32(0x7d961b4d), SPH_C32(0xd3d70f00), SPH_C32(0x712502c9),
+	  SPH_C32(0xe6a3d23b), SPH_C32(0x2261a075) },
+	{ SPH_C32(0xf77e0700), SPH_C32(0x64570df6), SPH_C32(0x7d96cbc8),
+	  SPH_C32(0x9b527f29), SPH_C32(0xa09b0f00), SPH_C32(0xe44aa51f),
+	  SPH_C32(0x443ec0ac), SPH_C32(0x4c84c821) },
+	{ SPH_C32(0x3fb90800), SPH_C32(0x7cdad883), SPH_C32(0xce97a914),
+	  SPH_C32(0xbdd9f5e5), SPH_C32(0xde320800), SPH_C32(0x288350fe),
+	  SPH_C32(0x71852ac7), SPH_C32(0xa6bf9f96) },
+	{ SPH_C32(0x881d0900), SPH_C32(0xf6c5e95b), SPH_C32(0x4b1e71bf),
+	  SPH_C32(0x5b1d9181), SPH_C32(0xad7e0800), SPH_C32(0xbdecf728),
+	  SPH_C32(0xd3183850), SPH_C32(0xc85af7c2) },
+	{ SPH_C32(0x4cf50800), SPH_C32(0xe9b57f55), SPH_C32(0x6c0abb83),
+	  SPH_C32(0xd33c9db1), SPH_C32(0x1ada0900), SPH_C32(0x37f3c6f0),
+	  SPH_C32(0x5691e0fb), SPH_C32(0x2e9e93a6) },
+	{ SPH_C32(0xfb510900), SPH_C32(0x63aa4e8d), SPH_C32(0xe9836328),
+	  SPH_C32(0x35f8f9d5), SPH_C32(0x69960900), SPH_C32(0xa29c6126),
+	  SPH_C32(0xf40cf26c), SPH_C32(0x407bfbf2) },
+	{ SPH_C32(0x98010a00), SPH_C32(0x63c85cb0), SPH_C32(0xae7250e6),
+	  SPH_C32(0x23cd8093), SPH_C32(0x30140800), SPH_C32(0x3ac838c0),
+	  SPH_C32(0xf147fc48), SPH_C32(0x9d4c34ba) },
+	{ SPH_C32(0x2fa50b00), SPH_C32(0xe9d76d68), SPH_C32(0x2bfb884d),
+	  SPH_C32(0xc509e4f7), SPH_C32(0x43580800), SPH_C32(0xafa79f16),
+	  SPH_C32(0x53daeedf), SPH_C32(0xf3a95cee) },
+	{ SPH_C32(0xeb4d0a00), SPH_C32(0xf6a7fb66), SPH_C32(0x0cef4271),
+	  SPH_C32(0x4d28e8c7), SPH_C32(0xf4fc0900), SPH_C32(0x25b8aece),
+	  SPH_C32(0xd6533674), SPH_C32(0x156d388a) },
+	{ SPH_C32(0x5ce90b00), SPH_C32(0x7cb8cabe), SPH_C32(0x89669ada),
+	  SPH_C32(0xabec8ca3), SPH_C32(0x87b00900), SPH_C32(0xb0d70918),
+	  SPH_C32(0x74ce24e3), SPH_C32(0x7b8850de) },
+	{ SPH_C32(0xd19f0800), SPH_C32(0x6e91b0bd), SPH_C32(0x4e557f9b),
+	  SPH_C32(0x862a5ec9), SPH_C32(0x97ac0a00), SPH_C32(0x25dabcf3),
+	  SPH_C32(0x91a205ba), SPH_C32(0x035841cc) },
+	{ SPH_C32(0x663b0900), SPH_C32(0xe48e8165), SPH_C32(0xcbdca730),
+	  SPH_C32(0x60ee3aad), SPH_C32(0xe4e00a00), SPH_C32(0xb0b51b25),
+	  SPH_C32(0x333f172d), SPH_C32(0x6dbd2998) },
+	{ SPH_C32(0xa2d30800), SPH_C32(0xfbfe176b), SPH_C32(0xecc86d0c),
+	  SPH_C32(0xe8cf369d), SPH_C32(0x53440b00), SPH_C32(0x3aaa2afd),
+	  SPH_C32(0xb6b6cf86), SPH_C32(0x8b794dfc) },
+	{ SPH_C32(0x15770900), SPH_C32(0x71e126b3), SPH_C32(0x6941b5a7),
+	  SPH_C32(0x0e0b52f9), SPH_C32(0x20080b00), SPH_C32(0xafc58d2b),
+	  SPH_C32(0x142bdd11), SPH_C32(0xe59c25a8) },
+	{ SPH_C32(0x76270a00), SPH_C32(0x7183348e), SPH_C32(0x2eb08669),
+	  SPH_C32(0x183e2bbf), SPH_C32(0x798a0a00), SPH_C32(0x3791d4cd),
+	  SPH_C32(0x1160d335), SPH_C32(0x38abeae0) },
+	{ SPH_C32(0xc1830b00), SPH_C32(0xfb9c0556), SPH_C32(0xab395ec2),
+	  SPH_C32(0xfefa4fdb), SPH_C32(0x0ac60a00), SPH_C32(0xa2fe731b),
+	  SPH_C32(0xb3fdc1a2), SPH_C32(0x564e82b4) },
+	{ SPH_C32(0x056b0a00), SPH_C32(0xe4ec9358), SPH_C32(0x8c2d94fe),
+	  SPH_C32(0x76db43eb), SPH_C32(0xbd620b00), SPH_C32(0x28e142c3),
+	  SPH_C32(0x36741909), SPH_C32(0xb08ae6d0) },
+	{ SPH_C32(0xb2cf0b00), SPH_C32(0x6ef3a280), SPH_C32(0x09a44c55),
+	  SPH_C32(0x901f278f), SPH_C32(0xce2e0b00), SPH_C32(0xbd8ee515),
+	  SPH_C32(0x94e90b9e), SPH_C32(0xde6f8e84) },
+	{ SPH_C32(0xb0870c00), SPH_C32(0x714710f4), SPH_C32(0xa152e1f5),
+	  SPH_C32(0x3454d933), SPH_C32(0xca8f0800), SPH_C32(0x07396701),
+	  SPH_C32(0x1bf7cf7c), SPH_C32(0x82c07470) },
+	{ SPH_C32(0x07230d00), SPH_C32(0xfb58212c), SPH_C32(0x24db395e),
+	  SPH_C32(0xd290bd57), SPH_C32(0xb9c30800), SPH_C32(0x9256c0d7),
+	  SPH_C32(0xb96addeb), SPH_C32(0xec251c24) },
+	{ SPH_C32(0xc3cb0c00), SPH_C32(0xe428b722), SPH_C32(0x03cff362),
+	  SPH_C32(0x5ab1b167), SPH_C32(0x0e670900), SPH_C32(0x1849f10f),
+	  SPH_C32(0x3ce30540), SPH_C32(0x0ae17840) },
+	{ SPH_C32(0x746f0d00), SPH_C32(0x6e3786fa), SPH_C32(0x86462bc9),
+	  SPH_C32(0xbc75d503), SPH_C32(0x7d2b0900), SPH_C32(0x8d2656d9),
+	  SPH_C32(0x9e7e17d7), SPH_C32(0x64041014) },
+	{ SPH_C32(0x173f0e00), SPH_C32(0x6e5594c7), SPH_C32(0xc1b71807),
+	  SPH_C32(0xaa40ac45), SPH_C32(0x24a90800), SPH_C32(0x15720f3f),
+	  SPH_C32(0x9b3519f3), SPH_C32(0xb933df5c) },
+	{ SPH_C32(0xa09b0f00), SPH_C32(0xe44aa51f), SPH_C32(0x443ec0ac),
+	  SPH_C32(0x4c84c821), SPH_C32(0x57e50800), SPH_C32(0x801da8e9),
+	  SPH_C32(0x39a80b64), SPH_C32(0xd7d6b708) },
+	{ SPH_C32(0x64730e00), SPH_C32(0xfb3a3311), SPH_C32(0x632a0a90),
+	  SPH_C32(0xc4a5c411), SPH_C32(0xe0410900), SPH_C32(0x0a029931),
+	  SPH_C32(0xbc21d3cf), SPH_C32(0x3112d36c) },
+	{ SPH_C32(0xd3d70f00), SPH_C32(0x712502c9), SPH_C32(0xe6a3d23b),
+	  SPH_C32(0x2261a075), SPH_C32(0x930d0900), SPH_C32(0x9f6d3ee7),
+	  SPH_C32(0x1ebcc158), SPH_C32(0x5ff7bb38) },
+	{ SPH_C32(0x5ea10c00), SPH_C32(0x630c78ca), SPH_C32(0x2190377a),
+	  SPH_C32(0x0fa7721f), SPH_C32(0x83110a00), SPH_C32(0x0a608b0c),
+	  SPH_C32(0xfbd0e001), SPH_C32(0x2727aa2a) },
+	{ SPH_C32(0xe9050d00), SPH_C32(0xe9134912), SPH_C32(0xa419efd1),
+	  SPH_C32(0xe963167b), SPH_C32(0xf05d0a00), SPH_C32(0x9f0f2cda),
+	  SPH_C32(0x594df296), SPH_C32(0x49c2c27e) },
+	{ SPH_C32(0x2ded0c00), SPH_C32(0xf663df1c), SPH_C32(0x830d25ed),
+	  SPH_C32(0x61421a4b), SPH_C32(0x47f90b00), SPH_C32(0x15101d02),
+	  SPH_C32(0xdcc42a3d), SPH_C32(0xaf06a61a) },
+	{ SPH_C32(0x9a490d00), SPH_C32(0x7c7ceec4), SPH_C32(0x0684fd46),
+	  SPH_C32(0x87867e2f), SPH_C32(0x34b50b00), SPH_C32(0x807fbad4),
+	  SPH_C32(0x7e5938aa), SPH_C32(0xc1e3ce4e) },
+	{ SPH_C32(0xf9190e00), SPH_C32(0x7c1efcf9), SPH_C32(0x4175ce88),
+	  SPH_C32(0x91b30769), SPH_C32(0x6d370a00), SPH_C32(0x182be332),
+	  SPH_C32(0x7b12368e), SPH_C32(0x1cd40106) },
+	{ SPH_C32(0x4ebd0f00), SPH_C32(0xf601cd21), SPH_C32(0xc4fc1623),
+	  SPH_C32(0x7777630d), SPH_C32(0x1e7b0a00), SPH_C32(0x8d4444e4),
+	  SPH_C32(0xd98f2419), SPH_C32(0x72316952) },
+	{ SPH_C32(0x8a550e00), SPH_C32(0xe9715b2f), SPH_C32(0xe3e8dc1f),
+	  SPH_C32(0xff566f3d), SPH_C32(0xa9df0b00), SPH_C32(0x075b753c),
+	  SPH_C32(0x5c06fcb2), SPH_C32(0x94f50d36) },
+	{ SPH_C32(0x3df10f00), SPH_C32(0x636e6af7), SPH_C32(0x666104b4),
+	  SPH_C32(0x19920b59), SPH_C32(0xda930b00), SPH_C32(0x9234d2ea),
+	  SPH_C32(0xfe9bee25), SPH_C32(0xfa106562) },
+	{ SPH_C32(0x2b040800), SPH_C32(0x5360ef7c), SPH_C32(0xa4e54caf),
+	  SPH_C32(0x99a61e03), SPH_C32(0x45b10c00), SPH_C32(0x0aa4af76),
+	  SPH_C32(0x7432879d), SPH_C32(0x0b4d58a6) },
+	{ SPH_C32(0x9ca00900), SPH_C32(0xd97fdea4), SPH_C32(0x216c9404),
+	  SPH_C32(0x7f627a67), SPH_C32(0x36fd0c00), SPH_C32(0x9fcb08a0),
+	  SPH_C32(0xd6af950a), SPH_C32(0x65a830f2) },
+	{ SPH_C32(0x58480800), SPH_C32(0xc60f48aa), SPH_C32(0x06785e38),
+	  SPH_C32(0xf7437657), SPH_C32(0x81590d00), SPH_C32(0x15d43978),
+	  SPH_C32(0x53264da1), SPH_C32(0x836c5496) },
+	{ SPH_C32(0xefec0900), SPH_C32(0x4c107972), SPH_C32(0x83f18693),
+	  SPH_C32(0x11871233), SPH_C32(0xf2150d00), SPH_C32(0x80bb9eae),
+	  SPH_C32(0xf1bb5f36), SPH_C32(0xed893cc2) },
+	{ SPH_C32(0x8cbc0a00), SPH_C32(0x4c726b4f), SPH_C32(0xc400b55d),
+	  SPH_C32(0x07b26b75), SPH_C32(0xab970c00), SPH_C32(0x18efc748),
+	  SPH_C32(0xf4f05112), SPH_C32(0x30bef38a) },
+	{ SPH_C32(0x3b180b00), SPH_C32(0xc66d5a97), SPH_C32(0x41896df6),
+	  SPH_C32(0xe1760f11), SPH_C32(0xd8db0c00), SPH_C32(0x8d80609e),
+	  SPH_C32(0x566d4385), SPH_C32(0x5e5b9bde) },
+	{ SPH_C32(0xfff00a00), SPH_C32(0xd91dcc99), SPH_C32(0x669da7ca),
+	  SPH_C32(0x69570321), SPH_C32(0x6f7f0d00), SPH_C32(0x079f5146),
+	  SPH_C32(0xd3e49b2e), SPH_C32(0xb89fffba) },
+	{ SPH_C32(0x48540b00), SPH_C32(0x5302fd41), SPH_C32(0xe3147f61),
+	  SPH_C32(0x8f936745), SPH_C32(0x1c330d00), SPH_C32(0x92f0f690),
+	  SPH_C32(0x717989b9), SPH_C32(0xd67a97ee) },
+	{ SPH_C32(0xc5220800), SPH_C32(0x412b8742), SPH_C32(0x24279a20),
+	  SPH_C32(0xa255b52f), SPH_C32(0x0c2f0e00), SPH_C32(0x07fd437b),
+	  SPH_C32(0x9415a8e0), SPH_C32(0xaeaa86fc) },
+	{ SPH_C32(0x72860900), SPH_C32(0xcb34b69a), SPH_C32(0xa1ae428b),
+	  SPH_C32(0x4491d14b), SPH_C32(0x7f630e00), SPH_C32(0x9292e4ad),
+	  SPH_C32(0x3688ba77), SPH_C32(0xc04feea8) },
+	{ SPH_C32(0xb66e0800), SPH_C32(0xd4442094), SPH_C32(0x86ba88b7),
+	  SPH_C32(0xccb0dd7b), SPH_C32(0xc8c70f00), SPH_C32(0x188dd575),
+	  SPH_C32(0xb30162dc), SPH_C32(0x268b8acc) },
+	{ SPH_C32(0x01ca0900), SPH_C32(0x5e5b114c), SPH_C32(0x0333501c),
+	  SPH_C32(0x2a74b91f), SPH_C32(0xbb8b0f00), SPH_C32(0x8de272a3),
+	  SPH_C32(0x119c704b), SPH_C32(0x486ee298) },
+	{ SPH_C32(0x629a0a00), SPH_C32(0x5e390371), SPH_C32(0x44c263d2),
+	  SPH_C32(0x3c41c059), SPH_C32(0xe2090e00), SPH_C32(0x15b62b45),
+	  SPH_C32(0x14d77e6f), SPH_C32(0x95592dd0) },
+	{ SPH_C32(0xd53e0b00), SPH_C32(0xd42632a9), SPH_C32(0xc14bbb79),
+	  SPH_C32(0xda85a43d), SPH_C32(0x91450e00), SPH_C32(0x80d98c93),
+	  SPH_C32(0xb64a6cf8), SPH_C32(0xfbbc4584) },
+	{ SPH_C32(0x11d60a00), SPH_C32(0xcb56a4a7), SPH_C32(0xe65f7145),
+	  SPH_C32(0x52a4a80d), SPH_C32(0x26e10f00), SPH_C32(0x0ac6bd4b),
+	  SPH_C32(0x33c3b453), SPH_C32(0x1d7821e0) },
+	{ SPH_C32(0xa6720b00), SPH_C32(0x4149957f), SPH_C32(0x63d6a9ee),
+	  SPH_C32(0xb460cc69), SPH_C32(0x55ad0f00), SPH_C32(0x9fa91a9d),
+	  SPH_C32(0x915ea6c4), SPH_C32(0x739d49b4) },
+	{ SPH_C32(0xa43a0c00), SPH_C32(0x5efd270b), SPH_C32(0xcb20044e),
+	  SPH_C32(0x102b32d5), SPH_C32(0x510c0c00), SPH_C32(0x251e9889),
+	  SPH_C32(0x1e406226), SPH_C32(0x2f32b340) },
+	{ SPH_C32(0x139e0d00), SPH_C32(0xd4e216d3), SPH_C32(0x4ea9dce5),
+	  SPH_C32(0xf6ef56b1), SPH_C32(0x22400c00), SPH_C32(0xb0713f5f),
+	  SPH_C32(0xbcdd70b1), SPH_C32(0x41d7db14) },
+	{ SPH_C32(0xd7760c00), SPH_C32(0xcb9280dd), SPH_C32(0x69bd16d9),
+	  SPH_C32(0x7ece5a81), SPH_C32(0x95e40d00), SPH_C32(0x3a6e0e87),
+	  SPH_C32(0x3954a81a), SPH_C32(0xa713bf70) },
+	{ SPH_C32(0x60d20d00), SPH_C32(0x418db105), SPH_C32(0xec34ce72),
+	  SPH_C32(0x980a3ee5), SPH_C32(0xe6a80d00), SPH_C32(0xaf01a951),
+	  SPH_C32(0x9bc9ba8d), SPH_C32(0xc9f6d724) },
+	{ SPH_C32(0x03820e00), SPH_C32(0x41efa338), SPH_C32(0xabc5fdbc),
+	  SPH_C32(0x8e3f47a3), SPH_C32(0xbf2a0c00), SPH_C32(0x3755f0b7),
+	  SPH_C32(0x9e82b4a9), SPH_C32(0x14c1186c) },
+	{ SPH_C32(0xb4260f00), SPH_C32(0xcbf092e0), SPH_C32(0x2e4c2517),
+	  SPH_C32(0x68fb23c7), SPH_C32(0xcc660c00), SPH_C32(0xa23a5761),
+	  SPH_C32(0x3c1fa63e), SPH_C32(0x7a247038) },
+	{ SPH_C32(0x70ce0e00), SPH_C32(0xd48004ee), SPH_C32(0x0958ef2b),
+	  SPH_C32(0xe0da2ff7), SPH_C32(0x7bc20d00), SPH_C32(0x282566b9),
+	  SPH_C32(0xb9967e95), SPH_C32(0x9ce0145c) },
+	{ SPH_C32(0xc76a0f00), SPH_C32(0x5e9f3536), SPH_C32(0x8cd13780),
+	  SPH_C32(0x061e4b93), SPH_C32(0x088e0d00), SPH_C32(0xbd4ac16f),
+	  SPH_C32(0x1b0b6c02), SPH_C32(0xf2057c08) },
+	{ SPH_C32(0x4a1c0c00), SPH_C32(0x4cb64f35), SPH_C32(0x4be2d2c1),
+	  SPH_C32(0x2bd899f9), SPH_C32(0x18920e00), SPH_C32(0x28477484),
+	  SPH_C32(0xfe674d5b), SPH_C32(0x8ad56d1a) },
+	{ SPH_C32(0xfdb80d00), SPH_C32(0xc6a97eed), SPH_C32(0xce6b0a6a),
+	  SPH_C32(0xcd1cfd9d), SPH_C32(0x6bde0e00), SPH_C32(0xbd28d352),
+	  SPH_C32(0x5cfa5fcc), SPH_C32(0xe430054e) },
+	{ SPH_C32(0x39500c00), SPH_C32(0xd9d9e8e3), SPH_C32(0xe97fc056),
+	  SPH_C32(0x453df1ad), SPH_C32(0xdc7a0f00), SPH_C32(0x3737e28a),
+	  SPH_C32(0xd9738767), SPH_C32(0x02f4612a) },
+	{ SPH_C32(0x8ef40d00), SPH_C32(0x53c6d93b), SPH_C32(0x6cf618fd),
+	  SPH_C32(0xa3f995c9), SPH_C32(0xaf360f00), SPH_C32(0xa258455c),
+	  SPH_C32(0x7bee95f0), SPH_C32(0x6c11097e) },
+	{ SPH_C32(0xeda40e00), SPH_C32(0x53a4cb06), SPH_C32(0x2b072b33),
+	  SPH_C32(0xb5ccec8f), SPH_C32(0xf6b40e00), SPH_C32(0x3a0c1cba),
+	  SPH_C32(0x7ea59bd4), SPH_C32(0xb126c636) },
+	{ SPH_C32(0x5a000f00), SPH_C32(0xd9bbfade), SPH_C32(0xae8ef398),
+	  SPH_C32(0x530888eb), SPH_C32(0x85f80e00), SPH_C32(0xaf63bb6c),
+	  SPH_C32(0xdc388943), SPH_C32(0xdfc3ae62) },
+	{ SPH_C32(0x9ee80e00), SPH_C32(0xc6cb6cd0), SPH_C32(0x899a39a4),
+	  SPH_C32(0xdb2984db), SPH_C32(0x325c0f00), SPH_C32(0x257c8ab4),
+	  SPH_C32(0x59b151e8), SPH_C32(0x3907ca06) },
+	{ SPH_C32(0x294c0f00), SPH_C32(0x4cd45d08), SPH_C32(0x0c13e10f),
+	  SPH_C32(0x3dede0bf), SPH_C32(0x41100f00), SPH_C32(0xb0132d62),
+	  SPH_C32(0xfb2c437f), SPH_C32(0x57e2a252) }
+};
+
+static const sph_u32 T256_16[256][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0x515c0010), SPH_C32(0x40f372fb), SPH_C32(0xfce72602),
+	  SPH_C32(0x71575061), SPH_C32(0x2e390000), SPH_C32(0x64dd6689),
+	  SPH_C32(0x3cd406fc), SPH_C32(0xb1f490bc) },
+	{ SPH_C32(0x2e390000), SPH_C32(0x64dd6689), SPH_C32(0x3cd406fc),
+	  SPH_C32(0xb1f490bc), SPH_C32(0x7f650010), SPH_C32(0x242e1472),
+	  SPH_C32(0xc03320fe), SPH_C32(0xc0a3c0dd) },
+	{ SPH_C32(0x7f650010), SPH_C32(0x242e1472), SPH_C32(0xc03320fe),
+	  SPH_C32(0xc0a3c0dd), SPH_C32(0x515c0010), SPH_C32(0x40f372fb),
+	  SPH_C32(0xfce72602), SPH_C32(0x71575061) },
+	{ SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6), SPH_C32(0xf9ce4c04),
+	  SPH_C32(0xe2afa0c0), SPH_C32(0x5c720000), SPH_C32(0xc9bacd12),
+	  SPH_C32(0x79a90df9), SPH_C32(0x63e92178) },
+	{ SPH_C32(0xf3e40030), SPH_C32(0xc114970d), SPH_C32(0x05296a06),
+	  SPH_C32(0x93f8f0a1), SPH_C32(0x724b0000), SPH_C32(0xad67ab9b),
+	  SPH_C32(0x457d0b05), SPH_C32(0xd21db1c4) },
+	{ SPH_C32(0x8c810020), SPH_C32(0xe53a837f), SPH_C32(0xc51a4af8),
+	  SPH_C32(0x535b307c), SPH_C32(0x23170010), SPH_C32(0xed94d960),
+	  SPH_C32(0xb99a2d07), SPH_C32(0xa34ae1a5) },
+	{ SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184), SPH_C32(0x39fd6cfa),
+	  SPH_C32(0x220c601d), SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9),
+	  SPH_C32(0x854e2bfb), SPH_C32(0x12be7119) },
+	{ SPH_C32(0x5c720000), SPH_C32(0xc9bacd12), SPH_C32(0x79a90df9),
+	  SPH_C32(0x63e92178), SPH_C32(0xfeca0020), SPH_C32(0x485d28e4),
+	  SPH_C32(0x806741fd), SPH_C32(0x814681b8) },
+	{ SPH_C32(0x0d2e0010), SPH_C32(0x8949bfe9), SPH_C32(0x854e2bfb),
+	  SPH_C32(0x12be7119), SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d),
+	  SPH_C32(0xbcb34701), SPH_C32(0x30b21104) },
+	{ SPH_C32(0x724b0000), SPH_C32(0xad67ab9b), SPH_C32(0x457d0b05),
+	  SPH_C32(0xd21db1c4), SPH_C32(0x81af0030), SPH_C32(0x6c733c96),
+	  SPH_C32(0x40546103), SPH_C32(0x41e54165) },
+	{ SPH_C32(0x23170010), SPH_C32(0xed94d960), SPH_C32(0xb99a2d07),
+	  SPH_C32(0xa34ae1a5), SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f),
+	  SPH_C32(0x7c8067ff), SPH_C32(0xf011d1d9) },
+	{ SPH_C32(0xfeca0020), SPH_C32(0x485d28e4), SPH_C32(0x806741fd),
+	  SPH_C32(0x814681b8), SPH_C32(0xa2b80020), SPH_C32(0x81e7e5f6),
+	  SPH_C32(0xf9ce4c04), SPH_C32(0xe2afa0c0) },
+	{ SPH_C32(0xaf960030), SPH_C32(0x08ae5a1f), SPH_C32(0x7c8067ff),
+	  SPH_C32(0xf011d1d9), SPH_C32(0x8c810020), SPH_C32(0xe53a837f),
+	  SPH_C32(0xc51a4af8), SPH_C32(0x535b307c) },
+	{ SPH_C32(0xd0f30020), SPH_C32(0x2c804e6d), SPH_C32(0xbcb34701),
+	  SPH_C32(0x30b21104), SPH_C32(0xdddd0030), SPH_C32(0xa5c9f184),
+	  SPH_C32(0x39fd6cfa), SPH_C32(0x220c601d) },
+	{ SPH_C32(0x81af0030), SPH_C32(0x6c733c96), SPH_C32(0x40546103),
+	  SPH_C32(0x41e54165), SPH_C32(0xf3e40030), SPH_C32(0xc114970d),
+	  SPH_C32(0x05296a06), SPH_C32(0x93f8f0a1) },
+	{ SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e), SPH_C32(0x36656ba8),
+	  SPH_C32(0x23633a05), SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34),
+	  SPH_C32(0x5d5ca0f7), SPH_C32(0x727784cb) },
+	{ SPH_C32(0x1c920050), SPH_C32(0x7ba89e85), SPH_C32(0xca824daa),
+	  SPH_C32(0x52346a64), SPH_C32(0x56920000), SPH_C32(0xc4103cbd),
+	  SPH_C32(0x6188a60b), SPH_C32(0xc3831477) },
+	{ SPH_C32(0x63f70040), SPH_C32(0x5f868af7), SPH_C32(0x0ab16d54),
+	  SPH_C32(0x9297aab9), SPH_C32(0x07ce0010), SPH_C32(0x84e34e46),
+	  SPH_C32(0x9d6f8009), SPH_C32(0xb2d44416) },
+	{ SPH_C32(0x32ab0050), SPH_C32(0x1f75f80c), SPH_C32(0xf6564b56),
+	  SPH_C32(0xe3c0fad8), SPH_C32(0x29f70010), SPH_C32(0xe03e28cf),
+	  SPH_C32(0xa1bb86f5), SPH_C32(0x0320d4aa) },
+	{ SPH_C32(0xef760060), SPH_C32(0xbabc0988), SPH_C32(0xcfab27ac),
+	  SPH_C32(0xc1cc9ac5), SPH_C32(0x24d90000), SPH_C32(0x69779726),
+	  SPH_C32(0x24f5ad0e), SPH_C32(0x119ea5b3) },
+	{ SPH_C32(0xbe2a0070), SPH_C32(0xfa4f7b73), SPH_C32(0x334c01ae),
+	  SPH_C32(0xb09bcaa4), SPH_C32(0x0ae00000), SPH_C32(0x0daaf1af),
+	  SPH_C32(0x1821abf2), SPH_C32(0xa06a350f) },
+	{ SPH_C32(0xc14f0060), SPH_C32(0xde616f01), SPH_C32(0xf37f2150),
+	  SPH_C32(0x70380a79), SPH_C32(0x5bbc0010), SPH_C32(0x4d598354),
+	  SPH_C32(0xe4c68df0), SPH_C32(0xd13d656e) },
+	{ SPH_C32(0x90130070), SPH_C32(0x9e921dfa), SPH_C32(0x0f980752),
+	  SPH_C32(0x016f5a18), SPH_C32(0x75850010), SPH_C32(0x2984e5dd),
+	  SPH_C32(0xd8128b0c), SPH_C32(0x60c9f5d2) },
+	{ SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c), SPH_C32(0x4fcc6651),
+	  SPH_C32(0x408a1b7d), SPH_C32(0x86610020), SPH_C32(0xe89072d0),
+	  SPH_C32(0xdd3be10a), SPH_C32(0xf3310573) },
+	{ SPH_C32(0x40e00050), SPH_C32(0xb2125397), SPH_C32(0xb32b4053),
+	  SPH_C32(0x31dd4b1c), SPH_C32(0xa8580020), SPH_C32(0x8c4d1459),
+	  SPH_C32(0xe1efe7f6), SPH_C32(0x42c595cf) },
+	{ SPH_C32(0x3f850040), SPH_C32(0x963c47e5), SPH_C32(0x731860ad),
+	  SPH_C32(0xf17e8bc1), SPH_C32(0xf9040030), SPH_C32(0xccbe66a2),
+	  SPH_C32(0x1d08c1f4), SPH_C32(0x3392c5ae) },
+	{ SPH_C32(0x6ed90050), SPH_C32(0xd6cf351e), SPH_C32(0x8fff46af),
+	  SPH_C32(0x8029dba0), SPH_C32(0xd73d0030), SPH_C32(0xa863002b),
+	  SPH_C32(0x21dcc708), SPH_C32(0x82665512) },
+	{ SPH_C32(0xb3040060), SPH_C32(0x7306c49a), SPH_C32(0xb6022a55),
+	  SPH_C32(0xa225bbbd), SPH_C32(0xda130020), SPH_C32(0x212abfc2),
+	  SPH_C32(0xa492ecf3), SPH_C32(0x90d8240b) },
+	{ SPH_C32(0xe2580070), SPH_C32(0x33f5b661), SPH_C32(0x4ae50c57),
+	  SPH_C32(0xd372ebdc), SPH_C32(0xf42a0020), SPH_C32(0x45f7d94b),
+	  SPH_C32(0x9846ea0f), SPH_C32(0x212cb4b7) },
+	{ SPH_C32(0x9d3d0060), SPH_C32(0x17dba213), SPH_C32(0x8ad62ca9),
+	  SPH_C32(0x13d12b01), SPH_C32(0xa5760030), SPH_C32(0x0504abb0),
+	  SPH_C32(0x64a1cc0d), SPH_C32(0x507be4d6) },
+	{ SPH_C32(0xcc610070), SPH_C32(0x5728d0e8), SPH_C32(0x76310aab),
+	  SPH_C32(0x62867b60), SPH_C32(0x8b4f0030), SPH_C32(0x61d9cd39),
+	  SPH_C32(0x5875caf1), SPH_C32(0xe18f746a) },
+	{ SPH_C32(0x78ab0000), SPH_C32(0xa0cd5a34), SPH_C32(0x5d5ca0f7),
+	  SPH_C32(0x727784cb), SPH_C32(0x35650040), SPH_C32(0x9b96b64a),
+	  SPH_C32(0x6b39cb5f), SPH_C32(0x5114bece) },
+	{ SPH_C32(0x29f70010), SPH_C32(0xe03e28cf), SPH_C32(0xa1bb86f5),
+	  SPH_C32(0x0320d4aa), SPH_C32(0x1b5c0040), SPH_C32(0xff4bd0c3),
+	  SPH_C32(0x57edcda3), SPH_C32(0xe0e02e72) },
+	{ SPH_C32(0x56920000), SPH_C32(0xc4103cbd), SPH_C32(0x6188a60b),
+	  SPH_C32(0xc3831477), SPH_C32(0x4a000050), SPH_C32(0xbfb8a238),
+	  SPH_C32(0xab0aeba1), SPH_C32(0x91b77e13) },
+	{ SPH_C32(0x07ce0010), SPH_C32(0x84e34e46), SPH_C32(0x9d6f8009),
+	  SPH_C32(0xb2d44416), SPH_C32(0x64390050), SPH_C32(0xdb65c4b1),
+	  SPH_C32(0x97deed5d), SPH_C32(0x2043eeaf) },
+	{ SPH_C32(0xda130020), SPH_C32(0x212abfc2), SPH_C32(0xa492ecf3),
+	  SPH_C32(0x90d8240b), SPH_C32(0x69170040), SPH_C32(0x522c7b58),
+	  SPH_C32(0x1290c6a6), SPH_C32(0x32fd9fb6) },
+	{ SPH_C32(0x8b4f0030), SPH_C32(0x61d9cd39), SPH_C32(0x5875caf1),
+	  SPH_C32(0xe18f746a), SPH_C32(0x472e0040), SPH_C32(0x36f11dd1),
+	  SPH_C32(0x2e44c05a), SPH_C32(0x83090f0a) },
+	{ SPH_C32(0xf42a0020), SPH_C32(0x45f7d94b), SPH_C32(0x9846ea0f),
+	  SPH_C32(0x212cb4b7), SPH_C32(0x16720050), SPH_C32(0x76026f2a),
+	  SPH_C32(0xd2a3e658), SPH_C32(0xf25e5f6b) },
+	{ SPH_C32(0xa5760030), SPH_C32(0x0504abb0), SPH_C32(0x64a1cc0d),
+	  SPH_C32(0x507be4d6), SPH_C32(0x384b0050), SPH_C32(0x12df09a3),
+	  SPH_C32(0xee77e0a4), SPH_C32(0x43aacfd7) },
+	{ SPH_C32(0x24d90000), SPH_C32(0x69779726), SPH_C32(0x24f5ad0e),
+	  SPH_C32(0x119ea5b3), SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae),
+	  SPH_C32(0xeb5e8aa2), SPH_C32(0xd0523f76) },
+	{ SPH_C32(0x75850010), SPH_C32(0x2984e5dd), SPH_C32(0xd8128b0c),
+	  SPH_C32(0x60c9f5d2), SPH_C32(0xe5960060), SPH_C32(0xb716f827),
+	  SPH_C32(0xd78a8c5e), SPH_C32(0x61a6afca) },
+	{ SPH_C32(0x0ae00000), SPH_C32(0x0daaf1af), SPH_C32(0x1821abf2),
+	  SPH_C32(0xa06a350f), SPH_C32(0xb4ca0070), SPH_C32(0xf7e58adc),
+	  SPH_C32(0x2b6daa5c), SPH_C32(0x10f1ffab) },
+	{ SPH_C32(0x5bbc0010), SPH_C32(0x4d598354), SPH_C32(0xe4c68df0),
+	  SPH_C32(0xd13d656e), SPH_C32(0x9af30070), SPH_C32(0x9338ec55),
+	  SPH_C32(0x17b9aca0), SPH_C32(0xa1056f17) },
+	{ SPH_C32(0x86610020), SPH_C32(0xe89072d0), SPH_C32(0xdd3be10a),
+	  SPH_C32(0xf3310573), SPH_C32(0x97dd0060), SPH_C32(0x1a7153bc),
+	  SPH_C32(0x92f7875b), SPH_C32(0xb3bb1e0e) },
+	{ SPH_C32(0xd73d0030), SPH_C32(0xa863002b), SPH_C32(0x21dcc708),
+	  SPH_C32(0x82665512), SPH_C32(0xb9e40060), SPH_C32(0x7eac3535),
+	  SPH_C32(0xae2381a7), SPH_C32(0x024f8eb2) },
+	{ SPH_C32(0xa8580020), SPH_C32(0x8c4d1459), SPH_C32(0xe1efe7f6),
+	  SPH_C32(0x42c595cf), SPH_C32(0xe8b80070), SPH_C32(0x3e5f47ce),
+	  SPH_C32(0x52c4a7a5), SPH_C32(0x7318ded3) },
+	{ SPH_C32(0xf9040030), SPH_C32(0xccbe66a2), SPH_C32(0x1d08c1f4),
+	  SPH_C32(0x3392c5ae), SPH_C32(0xc6810070), SPH_C32(0x5a822147),
+	  SPH_C32(0x6e10a159), SPH_C32(0xc2ec4e6f) },
+	{ SPH_C32(0x35650040), SPH_C32(0x9b96b64a), SPH_C32(0x6b39cb5f),
+	  SPH_C32(0x5114bece), SPH_C32(0x4dce0040), SPH_C32(0x3b5bec7e),
+	  SPH_C32(0x36656ba8), SPH_C32(0x23633a05) },
+	{ SPH_C32(0x64390050), SPH_C32(0xdb65c4b1), SPH_C32(0x97deed5d),
+	  SPH_C32(0x2043eeaf), SPH_C32(0x63f70040), SPH_C32(0x5f868af7),
+	  SPH_C32(0x0ab16d54), SPH_C32(0x9297aab9) },
+	{ SPH_C32(0x1b5c0040), SPH_C32(0xff4bd0c3), SPH_C32(0x57edcda3),
+	  SPH_C32(0xe0e02e72), SPH_C32(0x32ab0050), SPH_C32(0x1f75f80c),
+	  SPH_C32(0xf6564b56), SPH_C32(0xe3c0fad8) },
+	{ SPH_C32(0x4a000050), SPH_C32(0xbfb8a238), SPH_C32(0xab0aeba1),
+	  SPH_C32(0x91b77e13), SPH_C32(0x1c920050), SPH_C32(0x7ba89e85),
+	  SPH_C32(0xca824daa), SPH_C32(0x52346a64) },
+	{ SPH_C32(0x97dd0060), SPH_C32(0x1a7153bc), SPH_C32(0x92f7875b),
+	  SPH_C32(0xb3bb1e0e), SPH_C32(0x11bc0040), SPH_C32(0xf2e1216c),
+	  SPH_C32(0x4fcc6651), SPH_C32(0x408a1b7d) },
+	{ SPH_C32(0xc6810070), SPH_C32(0x5a822147), SPH_C32(0x6e10a159),
+	  SPH_C32(0xc2ec4e6f), SPH_C32(0x3f850040), SPH_C32(0x963c47e5),
+	  SPH_C32(0x731860ad), SPH_C32(0xf17e8bc1) },
+	{ SPH_C32(0xb9e40060), SPH_C32(0x7eac3535), SPH_C32(0xae2381a7),
+	  SPH_C32(0x024f8eb2), SPH_C32(0x6ed90050), SPH_C32(0xd6cf351e),
+	  SPH_C32(0x8fff46af), SPH_C32(0x8029dba0) },
+	{ SPH_C32(0xe8b80070), SPH_C32(0x3e5f47ce), SPH_C32(0x52c4a7a5),
+	  SPH_C32(0x7318ded3), SPH_C32(0x40e00050), SPH_C32(0xb2125397),
+	  SPH_C32(0xb32b4053), SPH_C32(0x31dd4b1c) },
+	{ SPH_C32(0x69170040), SPH_C32(0x522c7b58), SPH_C32(0x1290c6a6),
+	  SPH_C32(0x32fd9fb6), SPH_C32(0xb3040060), SPH_C32(0x7306c49a),
+	  SPH_C32(0xb6022a55), SPH_C32(0xa225bbbd) },
+	{ SPH_C32(0x384b0050), SPH_C32(0x12df09a3), SPH_C32(0xee77e0a4),
+	  SPH_C32(0x43aacfd7), SPH_C32(0x9d3d0060), SPH_C32(0x17dba213),
+	  SPH_C32(0x8ad62ca9), SPH_C32(0x13d12b01) },
+	{ SPH_C32(0x472e0040), SPH_C32(0x36f11dd1), SPH_C32(0x2e44c05a),
+	  SPH_C32(0x83090f0a), SPH_C32(0xcc610070), SPH_C32(0x5728d0e8),
+	  SPH_C32(0x76310aab), SPH_C32(0x62867b60) },
+	{ SPH_C32(0x16720050), SPH_C32(0x76026f2a), SPH_C32(0xd2a3e658),
+	  SPH_C32(0xf25e5f6b), SPH_C32(0xe2580070), SPH_C32(0x33f5b661),
+	  SPH_C32(0x4ae50c57), SPH_C32(0xd372ebdc) },
+	{ SPH_C32(0xcbaf0060), SPH_C32(0xd3cb9eae), SPH_C32(0xeb5e8aa2),
+	  SPH_C32(0xd0523f76), SPH_C32(0xef760060), SPH_C32(0xbabc0988),
+	  SPH_C32(0xcfab27ac), SPH_C32(0xc1cc9ac5) },
+	{ SPH_C32(0x9af30070), SPH_C32(0x9338ec55), SPH_C32(0x17b9aca0),
+	  SPH_C32(0xa1056f17), SPH_C32(0xc14f0060), SPH_C32(0xde616f01),
+	  SPH_C32(0xf37f2150), SPH_C32(0x70380a79) },
+	{ SPH_C32(0xe5960060), SPH_C32(0xb716f827), SPH_C32(0xd78a8c5e),
+	  SPH_C32(0x61a6afca), SPH_C32(0x90130070), SPH_C32(0x9e921dfa),
+	  SPH_C32(0x0f980752), SPH_C32(0x016f5a18) },
+	{ SPH_C32(0xb4ca0070), SPH_C32(0xf7e58adc), SPH_C32(0x2b6daa5c),
+	  SPH_C32(0x10f1ffab), SPH_C32(0xbe2a0070), SPH_C32(0xfa4f7b73),
+	  SPH_C32(0x334c01ae), SPH_C32(0xb09bcaa4) },
+	{ SPH_C32(0x5bd20080), SPH_C32(0x450f18ec), SPH_C32(0xc2c46c55),
+	  SPH_C32(0xf362b233), SPH_C32(0x39a60000), SPH_C32(0x4ab753eb),
+	  SPH_C32(0xd14e094b), SPH_C32(0xb772b42b) },
+	{ SPH_C32(0x0a8e0090), SPH_C32(0x05fc6a17), SPH_C32(0x3e234a57),
+	  SPH_C32(0x8235e252), SPH_C32(0x179f0000), SPH_C32(0x2e6a3562),
+	  SPH_C32(0xed9a0fb7), SPH_C32(0x06862497) },
+	{ SPH_C32(0x75eb0080), SPH_C32(0x21d27e65), SPH_C32(0xfe106aa9),
+	  SPH_C32(0x4296228f), SPH_C32(0x46c30010), SPH_C32(0x6e994799),
+	  SPH_C32(0x117d29b5), SPH_C32(0x77d174f6) },
+	{ SPH_C32(0x24b70090), SPH_C32(0x61210c9e), SPH_C32(0x02f74cab),
+	  SPH_C32(0x33c172ee), SPH_C32(0x68fa0010), SPH_C32(0x0a442110),
+	  SPH_C32(0x2da92f49), SPH_C32(0xc625e44a) },
+	{ SPH_C32(0xf96a00a0), SPH_C32(0xc4e8fd1a), SPH_C32(0x3b0a2051),
+	  SPH_C32(0x11cd12f3), SPH_C32(0x65d40000), SPH_C32(0x830d9ef9),
+	  SPH_C32(0xa8e704b2), SPH_C32(0xd49b9553) },
+	{ SPH_C32(0xa83600b0), SPH_C32(0x841b8fe1), SPH_C32(0xc7ed0653),
+	  SPH_C32(0x609a4292), SPH_C32(0x4bed0000), SPH_C32(0xe7d0f870),
+	  SPH_C32(0x9433024e), SPH_C32(0x656f05ef) },
+	{ SPH_C32(0xd75300a0), SPH_C32(0xa0359b93), SPH_C32(0x07de26ad),
+	  SPH_C32(0xa039824f), SPH_C32(0x1ab10010), SPH_C32(0xa7238a8b),
+	  SPH_C32(0x68d4244c), SPH_C32(0x1438558e) },
+	{ SPH_C32(0x860f00b0), SPH_C32(0xe0c6e968), SPH_C32(0xfb3900af),
+	  SPH_C32(0xd16ed22e), SPH_C32(0x34880010), SPH_C32(0xc3feec02),
+	  SPH_C32(0x540022b0), SPH_C32(0xa5ccc532) },
+	{ SPH_C32(0x07a00080), SPH_C32(0x8cb5d5fe), SPH_C32(0xbb6d61ac),
+	  SPH_C32(0x908b934b), SPH_C32(0xc76c0020), SPH_C32(0x02ea7b0f),
+	  SPH_C32(0x512948b6), SPH_C32(0x36343593) },
+	{ SPH_C32(0x56fc0090), SPH_C32(0xcc46a705), SPH_C32(0x478a47ae),
+	  SPH_C32(0xe1dcc32a), SPH_C32(0xe9550020), SPH_C32(0x66371d86),
+	  SPH_C32(0x6dfd4e4a), SPH_C32(0x87c0a52f) },
+	{ SPH_C32(0x29990080), SPH_C32(0xe868b377), SPH_C32(0x87b96750),
+	  SPH_C32(0x217f03f7), SPH_C32(0xb8090030), SPH_C32(0x26c46f7d),
+	  SPH_C32(0x911a6848), SPH_C32(0xf697f54e) },
+	{ SPH_C32(0x78c50090), SPH_C32(0xa89bc18c), SPH_C32(0x7b5e4152),
+	  SPH_C32(0x50285396), SPH_C32(0x96300030), SPH_C32(0x421909f4),
+	  SPH_C32(0xadce6eb4), SPH_C32(0x476365f2) },
+	{ SPH_C32(0xa51800a0), SPH_C32(0x0d523008), SPH_C32(0x42a32da8),
+	  SPH_C32(0x7224338b), SPH_C32(0x9b1e0020), SPH_C32(0xcb50b61d),
+	  SPH_C32(0x2880454f), SPH_C32(0x55dd14eb) },
+	{ SPH_C32(0xf44400b0), SPH_C32(0x4da142f3), SPH_C32(0xbe440baa),
+	  SPH_C32(0x037363ea), SPH_C32(0xb5270020), SPH_C32(0xaf8dd094),
+	  SPH_C32(0x145443b3), SPH_C32(0xe4298457) },
+	{ SPH_C32(0x8b2100a0), SPH_C32(0x698f5681), SPH_C32(0x7e772b54),
+	  SPH_C32(0xc3d0a337), SPH_C32(0xe47b0030), SPH_C32(0xef7ea26f),
+	  SPH_C32(0xe8b365b1), SPH_C32(0x957ed436) },
+	{ SPH_C32(0xda7d00b0), SPH_C32(0x297c247a), SPH_C32(0x82900d56),
+	  SPH_C32(0xb287f356), SPH_C32(0xca420030), SPH_C32(0x8ba3c4e6),
+	  SPH_C32(0xd467634d), SPH_C32(0x248a448a) },
+	{ SPH_C32(0x161c00c0), SPH_C32(0x7e54f492), SPH_C32(0xf4a107fd),
+	  SPH_C32(0xd0018836), SPH_C32(0x410d0000), SPH_C32(0xea7a09df),
+	  SPH_C32(0x8c12a9bc), SPH_C32(0xc50530e0) },
+	{ SPH_C32(0x474000d0), SPH_C32(0x3ea78669), SPH_C32(0x084621ff),
+	  SPH_C32(0xa156d857), SPH_C32(0x6f340000), SPH_C32(0x8ea76f56),
+	  SPH_C32(0xb0c6af40), SPH_C32(0x74f1a05c) },
+	{ SPH_C32(0x382500c0), SPH_C32(0x1a89921b), SPH_C32(0xc8750101),
+	  SPH_C32(0x61f5188a), SPH_C32(0x3e680010), SPH_C32(0xce541dad),
+	  SPH_C32(0x4c218942), SPH_C32(0x05a6f03d) },
+	{ SPH_C32(0x697900d0), SPH_C32(0x5a7ae0e0), SPH_C32(0x34922703),
+	  SPH_C32(0x10a248eb), SPH_C32(0x10510010), SPH_C32(0xaa897b24),
+	  SPH_C32(0x70f58fbe), SPH_C32(0xb4526081) },
+	{ SPH_C32(0xb4a400e0), SPH_C32(0xffb31164), SPH_C32(0x0d6f4bf9),
+	  SPH_C32(0x32ae28f6), SPH_C32(0x1d7f0000), SPH_C32(0x23c0c4cd),
+	  SPH_C32(0xf5bba445), SPH_C32(0xa6ec1198) },
+	{ SPH_C32(0xe5f800f0), SPH_C32(0xbf40639f), SPH_C32(0xf1886dfb),
+	  SPH_C32(0x43f97897), SPH_C32(0x33460000), SPH_C32(0x471da244),
+	  SPH_C32(0xc96fa2b9), SPH_C32(0x17188124) },
+	{ SPH_C32(0x9a9d00e0), SPH_C32(0x9b6e77ed), SPH_C32(0x31bb4d05),
+	  SPH_C32(0x835ab84a), SPH_C32(0x621a0010), SPH_C32(0x07eed0bf),
+	  SPH_C32(0x358884bb), SPH_C32(0x664fd145) },
+	{ SPH_C32(0xcbc100f0), SPH_C32(0xdb9d0516), SPH_C32(0xcd5c6b07),
+	  SPH_C32(0xf20de82b), SPH_C32(0x4c230010), SPH_C32(0x6333b636),
+	  SPH_C32(0x095c8247), SPH_C32(0xd7bb41f9) },
+	{ SPH_C32(0x4a6e00c0), SPH_C32(0xb7ee3980), SPH_C32(0x8d080a04),
+	  SPH_C32(0xb3e8a94e), SPH_C32(0xbfc70020), SPH_C32(0xa227213b),
+	  SPH_C32(0x0c75e841), SPH_C32(0x4443b158) },
+	{ SPH_C32(0x1b3200d0), SPH_C32(0xf71d4b7b), SPH_C32(0x71ef2c06),
+	  SPH_C32(0xc2bff92f), SPH_C32(0x91fe0020), SPH_C32(0xc6fa47b2),
+	  SPH_C32(0x30a1eebd), SPH_C32(0xf5b721e4) },
+	{ SPH_C32(0x645700c0), SPH_C32(0xd3335f09), SPH_C32(0xb1dc0cf8),
+	  SPH_C32(0x021c39f2), SPH_C32(0xc0a20030), SPH_C32(0x86093549),
+	  SPH_C32(0xcc46c8bf), SPH_C32(0x84e07185) },
+	{ SPH_C32(0x350b00d0), SPH_C32(0x93c02df2), SPH_C32(0x4d3b2afa),
+	  SPH_C32(0x734b6993), SPH_C32(0xee9b0030), SPH_C32(0xe2d453c0),
+	  SPH_C32(0xf092ce43), SPH_C32(0x3514e139) },
+	{ SPH_C32(0xe8d600e0), SPH_C32(0x3609dc76), SPH_C32(0x74c64600),
+	  SPH_C32(0x5147098e), SPH_C32(0xe3b50020), SPH_C32(0x6b9dec29),
+	  SPH_C32(0x75dce5b8), SPH_C32(0x27aa9020) },
+	{ SPH_C32(0xb98a00f0), SPH_C32(0x76faae8d), SPH_C32(0x88216002),
+	  SPH_C32(0x201059ef), SPH_C32(0xcd8c0020), SPH_C32(0x0f408aa0),
+	  SPH_C32(0x4908e344), SPH_C32(0x965e009c) },
+	{ SPH_C32(0xc6ef00e0), SPH_C32(0x52d4baff), SPH_C32(0x481240fc),
+	  SPH_C32(0xe0b39932), SPH_C32(0x9cd00030), SPH_C32(0x4fb3f85b),
+	  SPH_C32(0xb5efc546), SPH_C32(0xe70950fd) },
+	{ SPH_C32(0x97b300f0), SPH_C32(0x1227c804), SPH_C32(0xb4f566fe),
+	  SPH_C32(0x91e4c953), SPH_C32(0xb2e90030), SPH_C32(0x2b6e9ed2),
+	  SPH_C32(0x893bc3ba), SPH_C32(0x56fdc041) },
+	{ SPH_C32(0x23790080), SPH_C32(0xe5c242d8), SPH_C32(0x9f98cca2),
+	  SPH_C32(0x811536f8), SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1),
+	  SPH_C32(0xba77c214), SPH_C32(0xe6660ae5) },
+	{ SPH_C32(0x72250090), SPH_C32(0xa5313023), SPH_C32(0x637feaa0),
+	  SPH_C32(0xf0426699), SPH_C32(0x22fa0040), SPH_C32(0xb5fc8328),
+	  SPH_C32(0x86a3c4e8), SPH_C32(0x57929a59) },
+	{ SPH_C32(0x0d400080), SPH_C32(0x811f2451), SPH_C32(0xa34cca5e),
+	  SPH_C32(0x30e1a644), SPH_C32(0x73a60050), SPH_C32(0xf50ff1d3),
+	  SPH_C32(0x7a44e2ea), SPH_C32(0x26c5ca38) },
+	{ SPH_C32(0x5c1c0090), SPH_C32(0xc1ec56aa), SPH_C32(0x5fabec5c),
+	  SPH_C32(0x41b6f625), SPH_C32(0x5d9f0050), SPH_C32(0x91d2975a),
+	  SPH_C32(0x4690e416), SPH_C32(0x97315a84) },
+	{ SPH_C32(0x81c100a0), SPH_C32(0x6425a72e), SPH_C32(0x665680a6),
+	  SPH_C32(0x63ba9638), SPH_C32(0x50b10040), SPH_C32(0x189b28b3),
+	  SPH_C32(0xc3decfed), SPH_C32(0x858f2b9d) },
+	{ SPH_C32(0xd09d00b0), SPH_C32(0x24d6d5d5), SPH_C32(0x9ab1a6a4),
+	  SPH_C32(0x12edc659), SPH_C32(0x7e880040), SPH_C32(0x7c464e3a),
+	  SPH_C32(0xff0ac911), SPH_C32(0x347bbb21) },
+	{ SPH_C32(0xaff800a0), SPH_C32(0x00f8c1a7), SPH_C32(0x5a82865a),
+	  SPH_C32(0xd24e0684), SPH_C32(0x2fd40050), SPH_C32(0x3cb53cc1),
+	  SPH_C32(0x03edef13), SPH_C32(0x452ceb40) },
+	{ SPH_C32(0xfea400b0), SPH_C32(0x400bb35c), SPH_C32(0xa665a058),
+	  SPH_C32(0xa31956e5), SPH_C32(0x01ed0050), SPH_C32(0x58685a48),
+	  SPH_C32(0x3f39e9ef), SPH_C32(0xf4d87bfc) },
+	{ SPH_C32(0x7f0b0080), SPH_C32(0x2c788fca), SPH_C32(0xe631c15b),
+	  SPH_C32(0xe2fc1780), SPH_C32(0xf2090060), SPH_C32(0x997ccd45),
+	  SPH_C32(0x3a1083e9), SPH_C32(0x67208b5d) },
+	{ SPH_C32(0x2e570090), SPH_C32(0x6c8bfd31), SPH_C32(0x1ad6e759),
+	  SPH_C32(0x93ab47e1), SPH_C32(0xdc300060), SPH_C32(0xfda1abcc),
+	  SPH_C32(0x06c48515), SPH_C32(0xd6d41be1) },
+	{ SPH_C32(0x51320080), SPH_C32(0x48a5e943), SPH_C32(0xdae5c7a7),
+	  SPH_C32(0x5308873c), SPH_C32(0x8d6c0070), SPH_C32(0xbd52d937),
+	  SPH_C32(0xfa23a317), SPH_C32(0xa7834b80) },
+	{ SPH_C32(0x006e0090), SPH_C32(0x08569bb8), SPH_C32(0x2602e1a5),
+	  SPH_C32(0x225fd75d), SPH_C32(0xa3550070), SPH_C32(0xd98fbfbe),
+	  SPH_C32(0xc6f7a5eb), SPH_C32(0x1677db3c) },
+	{ SPH_C32(0xddb300a0), SPH_C32(0xad9f6a3c), SPH_C32(0x1fff8d5f),
+	  SPH_C32(0x0053b740), SPH_C32(0xae7b0060), SPH_C32(0x50c60057),
+	  SPH_C32(0x43b98e10), SPH_C32(0x04c9aa25) },
+	{ SPH_C32(0x8cef00b0), SPH_C32(0xed6c18c7), SPH_C32(0xe318ab5d),
+	  SPH_C32(0x7104e721), SPH_C32(0x80420060), SPH_C32(0x341b66de),
+	  SPH_C32(0x7f6d88ec), SPH_C32(0xb53d3a99) },
+	{ SPH_C32(0xf38a00a0), SPH_C32(0xc9420cb5), SPH_C32(0x232b8ba3),
+	  SPH_C32(0xb1a727fc), SPH_C32(0xd11e0070), SPH_C32(0x74e81425),
+	  SPH_C32(0x838aaeee), SPH_C32(0xc46a6af8) },
+	{ SPH_C32(0xa2d600b0), SPH_C32(0x89b17e4e), SPH_C32(0xdfccada1),
+	  SPH_C32(0xc0f0779d), SPH_C32(0xff270070), SPH_C32(0x103572ac),
+	  SPH_C32(0xbf5ea812), SPH_C32(0x759efa44) },
+	{ SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6), SPH_C32(0xa9fda70a),
+	  SPH_C32(0xa2760cfd), SPH_C32(0x74680040), SPH_C32(0x71ecbf95),
+	  SPH_C32(0xe72b62e3), SPH_C32(0x94118e2e) },
+	{ SPH_C32(0x3feb00d0), SPH_C32(0x9e6adc5d), SPH_C32(0x551a8108),
+	  SPH_C32(0xd3215c9c), SPH_C32(0x5a510040), SPH_C32(0x1531d91c),
+	  SPH_C32(0xdbff641f), SPH_C32(0x25e51e92) },
+	{ SPH_C32(0x408e00c0), SPH_C32(0xba44c82f), SPH_C32(0x9529a1f6),
+	  SPH_C32(0x13829c41), SPH_C32(0x0b0d0050), SPH_C32(0x55c2abe7),
+	  SPH_C32(0x2718421d), SPH_C32(0x54b24ef3) },
+	{ SPH_C32(0x11d200d0), SPH_C32(0xfab7bad4), SPH_C32(0x69ce87f4),
+	  SPH_C32(0x62d5cc20), SPH_C32(0x25340050), SPH_C32(0x311fcd6e),
+	  SPH_C32(0x1bcc44e1), SPH_C32(0xe546de4f) },
+	{ SPH_C32(0xcc0f00e0), SPH_C32(0x5f7e4b50), SPH_C32(0x5033eb0e),
+	  SPH_C32(0x40d9ac3d), SPH_C32(0x281a0040), SPH_C32(0xb8567287),
+	  SPH_C32(0x9e826f1a), SPH_C32(0xf7f8af56) },
+	{ SPH_C32(0x9d5300f0), SPH_C32(0x1f8d39ab), SPH_C32(0xacd4cd0c),
+	  SPH_C32(0x318efc5c), SPH_C32(0x06230040), SPH_C32(0xdc8b140e),
+	  SPH_C32(0xa25669e6), SPH_C32(0x460c3fea) },
+	{ SPH_C32(0xe23600e0), SPH_C32(0x3ba32dd9), SPH_C32(0x6ce7edf2),
+	  SPH_C32(0xf12d3c81), SPH_C32(0x577f0050), SPH_C32(0x9c7866f5),
+	  SPH_C32(0x5eb14fe4), SPH_C32(0x375b6f8b) },
+	{ SPH_C32(0xb36a00f0), SPH_C32(0x7b505f22), SPH_C32(0x9000cbf0),
+	  SPH_C32(0x807a6ce0), SPH_C32(0x79460050), SPH_C32(0xf8a5007c),
+	  SPH_C32(0x62654918), SPH_C32(0x86afff37) },
+	{ SPH_C32(0x32c500c0), SPH_C32(0x172363b4), SPH_C32(0xd054aaf3),
+	  SPH_C32(0xc19f2d85), SPH_C32(0x8aa20060), SPH_C32(0x39b19771),
+	  SPH_C32(0x674c231e), SPH_C32(0x15570f96) },
+	{ SPH_C32(0x639900d0), SPH_C32(0x57d0114f), SPH_C32(0x2cb38cf1),
+	  SPH_C32(0xb0c87de4), SPH_C32(0xa49b0060), SPH_C32(0x5d6cf1f8),
+	  SPH_C32(0x5b9825e2), SPH_C32(0xa4a39f2a) },
+	{ SPH_C32(0x1cfc00c0), SPH_C32(0x73fe053d), SPH_C32(0xec80ac0f),
+	  SPH_C32(0x706bbd39), SPH_C32(0xf5c70070), SPH_C32(0x1d9f8303),
+	  SPH_C32(0xa77f03e0), SPH_C32(0xd5f4cf4b) },
+	{ SPH_C32(0x4da000d0), SPH_C32(0x330d77c6), SPH_C32(0x10678a0d),
+	  SPH_C32(0x013ced58), SPH_C32(0xdbfe0070), SPH_C32(0x7942e58a),
+	  SPH_C32(0x9bab051c), SPH_C32(0x64005ff7) },
+	{ SPH_C32(0x907d00e0), SPH_C32(0x96c48642), SPH_C32(0x299ae6f7),
+	  SPH_C32(0x23308d45), SPH_C32(0xd6d00060), SPH_C32(0xf00b5a63),
+	  SPH_C32(0x1ee52ee7), SPH_C32(0x76be2eee) },
+	{ SPH_C32(0xc12100f0), SPH_C32(0xd637f4b9), SPH_C32(0xd57dc0f5),
+	  SPH_C32(0x5267dd24), SPH_C32(0xf8e90060), SPH_C32(0x94d63cea),
+	  SPH_C32(0x2231281b), SPH_C32(0xc74abe52) },
+	{ SPH_C32(0xbe4400e0), SPH_C32(0xf219e0cb), SPH_C32(0x154ee00b),
+	  SPH_C32(0x92c41df9), SPH_C32(0xa9b50070), SPH_C32(0xd4254e11),
+	  SPH_C32(0xded60e19), SPH_C32(0xb61dee33) },
+	{ SPH_C32(0xef1800f0), SPH_C32(0xb2ea9230), SPH_C32(0xe9a9c609),
+	  SPH_C32(0xe3934d98), SPH_C32(0x878c0070), SPH_C32(0xb0f82898),
+	  SPH_C32(0xe20208e5), SPH_C32(0x07e97e8f) },
+	{ SPH_C32(0x39a60000), SPH_C32(0x4ab753eb), SPH_C32(0xd14e094b),
+	  SPH_C32(0xb772b42b), SPH_C32(0x62740080), SPH_C32(0x0fb84b07),
+	  SPH_C32(0x138a651e), SPH_C32(0x44100618) },
+	{ SPH_C32(0x68fa0010), SPH_C32(0x0a442110), SPH_C32(0x2da92f49),
+	  SPH_C32(0xc625e44a), SPH_C32(0x4c4d0080), SPH_C32(0x6b652d8e),
+	  SPH_C32(0x2f5e63e2), SPH_C32(0xf5e496a4) },
+	{ SPH_C32(0x179f0000), SPH_C32(0x2e6a3562), SPH_C32(0xed9a0fb7),
+	  SPH_C32(0x06862497), SPH_C32(0x1d110090), SPH_C32(0x2b965f75),
+	  SPH_C32(0xd3b945e0), SPH_C32(0x84b3c6c5) },
+	{ SPH_C32(0x46c30010), SPH_C32(0x6e994799), SPH_C32(0x117d29b5),
+	  SPH_C32(0x77d174f6), SPH_C32(0x33280090), SPH_C32(0x4f4b39fc),
+	  SPH_C32(0xef6d431c), SPH_C32(0x35475679) },
+	{ SPH_C32(0x9b1e0020), SPH_C32(0xcb50b61d), SPH_C32(0x2880454f),
+	  SPH_C32(0x55dd14eb), SPH_C32(0x3e060080), SPH_C32(0xc6028615),
+	  SPH_C32(0x6a2368e7), SPH_C32(0x27f92760) },
+	{ SPH_C32(0xca420030), SPH_C32(0x8ba3c4e6), SPH_C32(0xd467634d),
+	  SPH_C32(0x248a448a), SPH_C32(0x103f0080), SPH_C32(0xa2dfe09c),
+	  SPH_C32(0x56f76e1b), SPH_C32(0x960db7dc) },
+	{ SPH_C32(0xb5270020), SPH_C32(0xaf8dd094), SPH_C32(0x145443b3),
+	  SPH_C32(0xe4298457), SPH_C32(0x41630090), SPH_C32(0xe22c9267),
+	  SPH_C32(0xaa104819), SPH_C32(0xe75ae7bd) },
+	{ SPH_C32(0xe47b0030), SPH_C32(0xef7ea26f), SPH_C32(0xe8b365b1),
+	  SPH_C32(0x957ed436), SPH_C32(0x6f5a0090), SPH_C32(0x86f1f4ee),
+	  SPH_C32(0x96c44ee5), SPH_C32(0x56ae7701) },
+	{ SPH_C32(0x65d40000), SPH_C32(0x830d9ef9), SPH_C32(0xa8e704b2),
+	  SPH_C32(0xd49b9553), SPH_C32(0x9cbe00a0), SPH_C32(0x47e563e3),
+	  SPH_C32(0x93ed24e3), SPH_C32(0xc55687a0) },
+	{ SPH_C32(0x34880010), SPH_C32(0xc3feec02), SPH_C32(0x540022b0),
+	  SPH_C32(0xa5ccc532), SPH_C32(0xb28700a0), SPH_C32(0x2338056a),
+	  SPH_C32(0xaf39221f), SPH_C32(0x74a2171c) },
+	{ SPH_C32(0x4bed0000), SPH_C32(0xe7d0f870), SPH_C32(0x9433024e),
+	  SPH_C32(0x656f05ef), SPH_C32(0xe3db00b0), SPH_C32(0x63cb7791),
+	  SPH_C32(0x53de041d), SPH_C32(0x05f5477d) },
+	{ SPH_C32(0x1ab10010), SPH_C32(0xa7238a8b), SPH_C32(0x68d4244c),
+	  SPH_C32(0x1438558e), SPH_C32(0xcde200b0), SPH_C32(0x07161118),
+	  SPH_C32(0x6f0a02e1), SPH_C32(0xb401d7c1) },
+	{ SPH_C32(0xc76c0020), SPH_C32(0x02ea7b0f), SPH_C32(0x512948b6),
+	  SPH_C32(0x36343593), SPH_C32(0xc0cc00a0), SPH_C32(0x8e5faef1),
+	  SPH_C32(0xea44291a), SPH_C32(0xa6bfa6d8) },
+	{ SPH_C32(0x96300030), SPH_C32(0x421909f4), SPH_C32(0xadce6eb4),
+	  SPH_C32(0x476365f2), SPH_C32(0xeef500a0), SPH_C32(0xea82c878),
+	  SPH_C32(0xd6902fe6), SPH_C32(0x174b3664) },
+	{ SPH_C32(0xe9550020), SPH_C32(0x66371d86), SPH_C32(0x6dfd4e4a),
+	  SPH_C32(0x87c0a52f), SPH_C32(0xbfa900b0), SPH_C32(0xaa71ba83),
+	  SPH_C32(0x2a7709e4), SPH_C32(0x661c6605) },
+	{ SPH_C32(0xb8090030), SPH_C32(0x26c46f7d), SPH_C32(0x911a6848),
+	  SPH_C32(0xf697f54e), SPH_C32(0x919000b0), SPH_C32(0xceacdc0a),
+	  SPH_C32(0x16a30f18), SPH_C32(0xd7e8f6b9) },
+	{ SPH_C32(0x74680040), SPH_C32(0x71ecbf95), SPH_C32(0xe72b62e3),
+	  SPH_C32(0x94118e2e), SPH_C32(0x1adf0080), SPH_C32(0xaf751133),
+	  SPH_C32(0x4ed6c5e9), SPH_C32(0x366782d3) },
+	{ SPH_C32(0x25340050), SPH_C32(0x311fcd6e), SPH_C32(0x1bcc44e1),
+	  SPH_C32(0xe546de4f), SPH_C32(0x34e60080), SPH_C32(0xcba877ba),
+	  SPH_C32(0x7202c315), SPH_C32(0x8793126f) },
+	{ SPH_C32(0x5a510040), SPH_C32(0x1531d91c), SPH_C32(0xdbff641f),
+	  SPH_C32(0x25e51e92), SPH_C32(0x65ba0090), SPH_C32(0x8b5b0541),
+	  SPH_C32(0x8ee5e517), SPH_C32(0xf6c4420e) },
+	{ SPH_C32(0x0b0d0050), SPH_C32(0x55c2abe7), SPH_C32(0x2718421d),
+	  SPH_C32(0x54b24ef3), SPH_C32(0x4b830090), SPH_C32(0xef8663c8),
+	  SPH_C32(0xb231e3eb), SPH_C32(0x4730d2b2) },
+	{ SPH_C32(0xd6d00060), SPH_C32(0xf00b5a63), SPH_C32(0x1ee52ee7),
+	  SPH_C32(0x76be2eee), SPH_C32(0x46ad0080), SPH_C32(0x66cfdc21),
+	  SPH_C32(0x377fc810), SPH_C32(0x558ea3ab) },
+	{ SPH_C32(0x878c0070), SPH_C32(0xb0f82898), SPH_C32(0xe20208e5),
+	  SPH_C32(0x07e97e8f), SPH_C32(0x68940080), SPH_C32(0x0212baa8),
+	  SPH_C32(0x0babceec), SPH_C32(0xe47a3317) },
+	{ SPH_C32(0xf8e90060), SPH_C32(0x94d63cea), SPH_C32(0x2231281b),
+	  SPH_C32(0xc74abe52), SPH_C32(0x39c80090), SPH_C32(0x42e1c853),
+	  SPH_C32(0xf74ce8ee), SPH_C32(0x952d6376) },
+	{ SPH_C32(0xa9b50070), SPH_C32(0xd4254e11), SPH_C32(0xded60e19),
+	  SPH_C32(0xb61dee33), SPH_C32(0x17f10090), SPH_C32(0x263caeda),
+	  SPH_C32(0xcb98ee12), SPH_C32(0x24d9f3ca) },
+	{ SPH_C32(0x281a0040), SPH_C32(0xb8567287), SPH_C32(0x9e826f1a),
+	  SPH_C32(0xf7f8af56), SPH_C32(0xe41500a0), SPH_C32(0xe72839d7),
+	  SPH_C32(0xceb18414), SPH_C32(0xb721036b) },
+	{ SPH_C32(0x79460050), SPH_C32(0xf8a5007c), SPH_C32(0x62654918),
+	  SPH_C32(0x86afff37), SPH_C32(0xca2c00a0), SPH_C32(0x83f55f5e),
+	  SPH_C32(0xf26582e8), SPH_C32(0x06d593d7) },
+	{ SPH_C32(0x06230040), SPH_C32(0xdc8b140e), SPH_C32(0xa25669e6),
+	  SPH_C32(0x460c3fea), SPH_C32(0x9b7000b0), SPH_C32(0xc3062da5),
+	  SPH_C32(0x0e82a4ea), SPH_C32(0x7782c3b6) },
+	{ SPH_C32(0x577f0050), SPH_C32(0x9c7866f5), SPH_C32(0x5eb14fe4),
+	  SPH_C32(0x375b6f8b), SPH_C32(0xb54900b0), SPH_C32(0xa7db4b2c),
+	  SPH_C32(0x3256a216), SPH_C32(0xc676530a) },
+	{ SPH_C32(0x8aa20060), SPH_C32(0x39b19771), SPH_C32(0x674c231e),
+	  SPH_C32(0x15570f96), SPH_C32(0xb86700a0), SPH_C32(0x2e92f4c5),
+	  SPH_C32(0xb71889ed), SPH_C32(0xd4c82213) },
+	{ SPH_C32(0xdbfe0070), SPH_C32(0x7942e58a), SPH_C32(0x9bab051c),
+	  SPH_C32(0x64005ff7), SPH_C32(0x965e00a0), SPH_C32(0x4a4f924c),
+	  SPH_C32(0x8bcc8f11), SPH_C32(0x653cb2af) },
+	{ SPH_C32(0xa49b0060), SPH_C32(0x5d6cf1f8), SPH_C32(0x5b9825e2),
+	  SPH_C32(0xa4a39f2a), SPH_C32(0xc70200b0), SPH_C32(0x0abce0b7),
+	  SPH_C32(0x772ba913), SPH_C32(0x146be2ce) },
+	{ SPH_C32(0xf5c70070), SPH_C32(0x1d9f8303), SPH_C32(0xa77f03e0),
+	  SPH_C32(0xd5f4cf4b), SPH_C32(0xe93b00b0), SPH_C32(0x6e61863e),
+	  SPH_C32(0x4bffafef), SPH_C32(0xa59f7272) },
+	{ SPH_C32(0x410d0000), SPH_C32(0xea7a09df), SPH_C32(0x8c12a9bc),
+	  SPH_C32(0xc50530e0), SPH_C32(0x571100c0), SPH_C32(0x942efd4d),
+	  SPH_C32(0x78b3ae41), SPH_C32(0x1504b8d6) },
+	{ SPH_C32(0x10510010), SPH_C32(0xaa897b24), SPH_C32(0x70f58fbe),
+	  SPH_C32(0xb4526081), SPH_C32(0x792800c0), SPH_C32(0xf0f39bc4),
+	  SPH_C32(0x4467a8bd), SPH_C32(0xa4f0286a) },
+	{ SPH_C32(0x6f340000), SPH_C32(0x8ea76f56), SPH_C32(0xb0c6af40),
+	  SPH_C32(0x74f1a05c), SPH_C32(0x287400d0), SPH_C32(0xb000e93f),
+	  SPH_C32(0xb8808ebf), SPH_C32(0xd5a7780b) },
+	{ SPH_C32(0x3e680010), SPH_C32(0xce541dad), SPH_C32(0x4c218942),
+	  SPH_C32(0x05a6f03d), SPH_C32(0x064d00d0), SPH_C32(0xd4dd8fb6),
+	  SPH_C32(0x84548843), SPH_C32(0x6453e8b7) },
+	{ SPH_C32(0xe3b50020), SPH_C32(0x6b9dec29), SPH_C32(0x75dce5b8),
+	  SPH_C32(0x27aa9020), SPH_C32(0x0b6300c0), SPH_C32(0x5d94305f),
+	  SPH_C32(0x011aa3b8), SPH_C32(0x76ed99ae) },
+	{ SPH_C32(0xb2e90030), SPH_C32(0x2b6e9ed2), SPH_C32(0x893bc3ba),
+	  SPH_C32(0x56fdc041), SPH_C32(0x255a00c0), SPH_C32(0x394956d6),
+	  SPH_C32(0x3dcea544), SPH_C32(0xc7190912) },
+	{ SPH_C32(0xcd8c0020), SPH_C32(0x0f408aa0), SPH_C32(0x4908e344),
+	  SPH_C32(0x965e009c), SPH_C32(0x740600d0), SPH_C32(0x79ba242d),
+	  SPH_C32(0xc1298346), SPH_C32(0xb64e5973) },
+	{ SPH_C32(0x9cd00030), SPH_C32(0x4fb3f85b), SPH_C32(0xb5efc546),
+	  SPH_C32(0xe70950fd), SPH_C32(0x5a3f00d0), SPH_C32(0x1d6742a4),
+	  SPH_C32(0xfdfd85ba), SPH_C32(0x07bac9cf) },
+	{ SPH_C32(0x1d7f0000), SPH_C32(0x23c0c4cd), SPH_C32(0xf5bba445),
+	  SPH_C32(0xa6ec1198), SPH_C32(0xa9db00e0), SPH_C32(0xdc73d5a9),
+	  SPH_C32(0xf8d4efbc), SPH_C32(0x9442396e) },
+	{ SPH_C32(0x4c230010), SPH_C32(0x6333b636), SPH_C32(0x095c8247),
+	  SPH_C32(0xd7bb41f9), SPH_C32(0x87e200e0), SPH_C32(0xb8aeb320),
+	  SPH_C32(0xc400e940), SPH_C32(0x25b6a9d2) },
+	{ SPH_C32(0x33460000), SPH_C32(0x471da244), SPH_C32(0xc96fa2b9),
+	  SPH_C32(0x17188124), SPH_C32(0xd6be00f0), SPH_C32(0xf85dc1db),
+	  SPH_C32(0x38e7cf42), SPH_C32(0x54e1f9b3) },
+	{ SPH_C32(0x621a0010), SPH_C32(0x07eed0bf), SPH_C32(0x358884bb),
+	  SPH_C32(0x664fd145), SPH_C32(0xf88700f0), SPH_C32(0x9c80a752),
+	  SPH_C32(0x0433c9be), SPH_C32(0xe515690f) },
+	{ SPH_C32(0xbfc70020), SPH_C32(0xa227213b), SPH_C32(0x0c75e841),
+	  SPH_C32(0x4443b158), SPH_C32(0xf5a900e0), SPH_C32(0x15c918bb),
+	  SPH_C32(0x817de245), SPH_C32(0xf7ab1816) },
+	{ SPH_C32(0xee9b0030), SPH_C32(0xe2d453c0), SPH_C32(0xf092ce43),
+	  SPH_C32(0x3514e139), SPH_C32(0xdb9000e0), SPH_C32(0x71147e32),
+	  SPH_C32(0xbda9e4b9), SPH_C32(0x465f88aa) },
+	{ SPH_C32(0x91fe0020), SPH_C32(0xc6fa47b2), SPH_C32(0x30a1eebd),
+	  SPH_C32(0xf5b721e4), SPH_C32(0x8acc00f0), SPH_C32(0x31e70cc9),
+	  SPH_C32(0x414ec2bb), SPH_C32(0x3708d8cb) },
+	{ SPH_C32(0xc0a20030), SPH_C32(0x86093549), SPH_C32(0xcc46c8bf),
+	  SPH_C32(0x84e07185), SPH_C32(0xa4f500f0), SPH_C32(0x553a6a40),
+	  SPH_C32(0x7d9ac447), SPH_C32(0x86fc4877) },
+	{ SPH_C32(0x0cc30040), SPH_C32(0xd121e5a1), SPH_C32(0xba77c214),
+	  SPH_C32(0xe6660ae5), SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779),
+	  SPH_C32(0x25ef0eb6), SPH_C32(0x67733c1d) },
+	{ SPH_C32(0x5d9f0050), SPH_C32(0x91d2975a), SPH_C32(0x4690e416),
+	  SPH_C32(0x97315a84), SPH_C32(0x018300c0), SPH_C32(0x503ec1f0),
+	  SPH_C32(0x193b084a), SPH_C32(0xd687aca1) },
+	{ SPH_C32(0x22fa0040), SPH_C32(0xb5fc8328), SPH_C32(0x86a3c4e8),
+	  SPH_C32(0x57929a59), SPH_C32(0x50df00d0), SPH_C32(0x10cdb30b),
+	  SPH_C32(0xe5dc2e48), SPH_C32(0xa7d0fcc0) },
+	{ SPH_C32(0x73a60050), SPH_C32(0xf50ff1d3), SPH_C32(0x7a44e2ea),
+	  SPH_C32(0x26c5ca38), SPH_C32(0x7ee600d0), SPH_C32(0x7410d582),
+	  SPH_C32(0xd90828b4), SPH_C32(0x16246c7c) },
+	{ SPH_C32(0xae7b0060), SPH_C32(0x50c60057), SPH_C32(0x43b98e10),
+	  SPH_C32(0x04c9aa25), SPH_C32(0x73c800c0), SPH_C32(0xfd596a6b),
+	  SPH_C32(0x5c46034f), SPH_C32(0x049a1d65) },
+	{ SPH_C32(0xff270070), SPH_C32(0x103572ac), SPH_C32(0xbf5ea812),
+	  SPH_C32(0x759efa44), SPH_C32(0x5df100c0), SPH_C32(0x99840ce2),
+	  SPH_C32(0x609205b3), SPH_C32(0xb56e8dd9) },
+	{ SPH_C32(0x80420060), SPH_C32(0x341b66de), SPH_C32(0x7f6d88ec),
+	  SPH_C32(0xb53d3a99), SPH_C32(0x0cad00d0), SPH_C32(0xd9777e19),
+	  SPH_C32(0x9c7523b1), SPH_C32(0xc439ddb8) },
+	{ SPH_C32(0xd11e0070), SPH_C32(0x74e81425), SPH_C32(0x838aaeee),
+	  SPH_C32(0xc46a6af8), SPH_C32(0x229400d0), SPH_C32(0xbdaa1890),
+	  SPH_C32(0xa0a1254d), SPH_C32(0x75cd4d04) },
+	{ SPH_C32(0x50b10040), SPH_C32(0x189b28b3), SPH_C32(0xc3decfed),
+	  SPH_C32(0x858f2b9d), SPH_C32(0xd17000e0), SPH_C32(0x7cbe8f9d),
+	  SPH_C32(0xa5884f4b), SPH_C32(0xe635bda5) },
+	{ SPH_C32(0x01ed0050), SPH_C32(0x58685a48), SPH_C32(0x3f39e9ef),
+	  SPH_C32(0xf4d87bfc), SPH_C32(0xff4900e0), SPH_C32(0x1863e914),
+	  SPH_C32(0x995c49b7), SPH_C32(0x57c12d19) },
+	{ SPH_C32(0x7e880040), SPH_C32(0x7c464e3a), SPH_C32(0xff0ac911),
+	  SPH_C32(0x347bbb21), SPH_C32(0xae1500f0), SPH_C32(0x58909bef),
+	  SPH_C32(0x65bb6fb5), SPH_C32(0x26967d78) },
+	{ SPH_C32(0x2fd40050), SPH_C32(0x3cb53cc1), SPH_C32(0x03edef13),
+	  SPH_C32(0x452ceb40), SPH_C32(0x802c00f0), SPH_C32(0x3c4dfd66),
+	  SPH_C32(0x596f6949), SPH_C32(0x9762edc4) },
+	{ SPH_C32(0xf2090060), SPH_C32(0x997ccd45), SPH_C32(0x3a1083e9),
+	  SPH_C32(0x67208b5d), SPH_C32(0x8d0200e0), SPH_C32(0xb504428f),
+	  SPH_C32(0xdc2142b2), SPH_C32(0x85dc9cdd) },
+	{ SPH_C32(0xa3550070), SPH_C32(0xd98fbfbe), SPH_C32(0xc6f7a5eb),
+	  SPH_C32(0x1677db3c), SPH_C32(0xa33b00e0), SPH_C32(0xd1d92406),
+	  SPH_C32(0xe0f5444e), SPH_C32(0x34280c61) },
+	{ SPH_C32(0xdc300060), SPH_C32(0xfda1abcc), SPH_C32(0x06c48515),
+	  SPH_C32(0xd6d41be1), SPH_C32(0xf26700f0), SPH_C32(0x912a56fd),
+	  SPH_C32(0x1c12624c), SPH_C32(0x457f5c00) },
+	{ SPH_C32(0x8d6c0070), SPH_C32(0xbd52d937), SPH_C32(0xfa23a317),
+	  SPH_C32(0xa7834b80), SPH_C32(0xdc5e00f0), SPH_C32(0xf5f73074),
+	  SPH_C32(0x20c664b0), SPH_C32(0xf48bccbc) },
+	{ SPH_C32(0x62740080), SPH_C32(0x0fb84b07), SPH_C32(0x138a651e),
+	  SPH_C32(0x44100618), SPH_C32(0x5bd20080), SPH_C32(0x450f18ec),
+	  SPH_C32(0xc2c46c55), SPH_C32(0xf362b233) },
+	{ SPH_C32(0x33280090), SPH_C32(0x4f4b39fc), SPH_C32(0xef6d431c),
+	  SPH_C32(0x35475679), SPH_C32(0x75eb0080), SPH_C32(0x21d27e65),
+	  SPH_C32(0xfe106aa9), SPH_C32(0x4296228f) },
+	{ SPH_C32(0x4c4d0080), SPH_C32(0x6b652d8e), SPH_C32(0x2f5e63e2),
+	  SPH_C32(0xf5e496a4), SPH_C32(0x24b70090), SPH_C32(0x61210c9e),
+	  SPH_C32(0x02f74cab), SPH_C32(0x33c172ee) },
+	{ SPH_C32(0x1d110090), SPH_C32(0x2b965f75), SPH_C32(0xd3b945e0),
+	  SPH_C32(0x84b3c6c5), SPH_C32(0x0a8e0090), SPH_C32(0x05fc6a17),
+	  SPH_C32(0x3e234a57), SPH_C32(0x8235e252) },
+	{ SPH_C32(0xc0cc00a0), SPH_C32(0x8e5faef1), SPH_C32(0xea44291a),
+	  SPH_C32(0xa6bfa6d8), SPH_C32(0x07a00080), SPH_C32(0x8cb5d5fe),
+	  SPH_C32(0xbb6d61ac), SPH_C32(0x908b934b) },
+	{ SPH_C32(0x919000b0), SPH_C32(0xceacdc0a), SPH_C32(0x16a30f18),
+	  SPH_C32(0xd7e8f6b9), SPH_C32(0x29990080), SPH_C32(0xe868b377),
+	  SPH_C32(0x87b96750), SPH_C32(0x217f03f7) },
+	{ SPH_C32(0xeef500a0), SPH_C32(0xea82c878), SPH_C32(0xd6902fe6),
+	  SPH_C32(0x174b3664), SPH_C32(0x78c50090), SPH_C32(0xa89bc18c),
+	  SPH_C32(0x7b5e4152), SPH_C32(0x50285396) },
+	{ SPH_C32(0xbfa900b0), SPH_C32(0xaa71ba83), SPH_C32(0x2a7709e4),
+	  SPH_C32(0x661c6605), SPH_C32(0x56fc0090), SPH_C32(0xcc46a705),
+	  SPH_C32(0x478a47ae), SPH_C32(0xe1dcc32a) },
+	{ SPH_C32(0x3e060080), SPH_C32(0xc6028615), SPH_C32(0x6a2368e7),
+	  SPH_C32(0x27f92760), SPH_C32(0xa51800a0), SPH_C32(0x0d523008),
+	  SPH_C32(0x42a32da8), SPH_C32(0x7224338b) },
+	{ SPH_C32(0x6f5a0090), SPH_C32(0x86f1f4ee), SPH_C32(0x96c44ee5),
+	  SPH_C32(0x56ae7701), SPH_C32(0x8b2100a0), SPH_C32(0x698f5681),
+	  SPH_C32(0x7e772b54), SPH_C32(0xc3d0a337) },
+	{ SPH_C32(0x103f0080), SPH_C32(0xa2dfe09c), SPH_C32(0x56f76e1b),
+	  SPH_C32(0x960db7dc), SPH_C32(0xda7d00b0), SPH_C32(0x297c247a),
+	  SPH_C32(0x82900d56), SPH_C32(0xb287f356) },
+	{ SPH_C32(0x41630090), SPH_C32(0xe22c9267), SPH_C32(0xaa104819),
+	  SPH_C32(0xe75ae7bd), SPH_C32(0xf44400b0), SPH_C32(0x4da142f3),
+	  SPH_C32(0xbe440baa), SPH_C32(0x037363ea) },
+	{ SPH_C32(0x9cbe00a0), SPH_C32(0x47e563e3), SPH_C32(0x93ed24e3),
+	  SPH_C32(0xc55687a0), SPH_C32(0xf96a00a0), SPH_C32(0xc4e8fd1a),
+	  SPH_C32(0x3b0a2051), SPH_C32(0x11cd12f3) },
+	{ SPH_C32(0xcde200b0), SPH_C32(0x07161118), SPH_C32(0x6f0a02e1),
+	  SPH_C32(0xb401d7c1), SPH_C32(0xd75300a0), SPH_C32(0xa0359b93),
+	  SPH_C32(0x07de26ad), SPH_C32(0xa039824f) },
+	{ SPH_C32(0xb28700a0), SPH_C32(0x2338056a), SPH_C32(0xaf39221f),
+	  SPH_C32(0x74a2171c), SPH_C32(0x860f00b0), SPH_C32(0xe0c6e968),
+	  SPH_C32(0xfb3900af), SPH_C32(0xd16ed22e) },
+	{ SPH_C32(0xe3db00b0), SPH_C32(0x63cb7791), SPH_C32(0x53de041d),
+	  SPH_C32(0x05f5477d), SPH_C32(0xa83600b0), SPH_C32(0x841b8fe1),
+	  SPH_C32(0xc7ed0653), SPH_C32(0x609a4292) },
+	{ SPH_C32(0x2fba00c0), SPH_C32(0x34e3a779), SPH_C32(0x25ef0eb6),
+	  SPH_C32(0x67733c1d), SPH_C32(0x23790080), SPH_C32(0xe5c242d8),
+	  SPH_C32(0x9f98cca2), SPH_C32(0x811536f8) },
+	{ SPH_C32(0x7ee600d0), SPH_C32(0x7410d582), SPH_C32(0xd90828b4),
+	  SPH_C32(0x16246c7c), SPH_C32(0x0d400080), SPH_C32(0x811f2451),
+	  SPH_C32(0xa34cca5e), SPH_C32(0x30e1a644) },
+	{ SPH_C32(0x018300c0), SPH_C32(0x503ec1f0), SPH_C32(0x193b084a),
+	  SPH_C32(0xd687aca1), SPH_C32(0x5c1c0090), SPH_C32(0xc1ec56aa),
+	  SPH_C32(0x5fabec5c), SPH_C32(0x41b6f625) },
+	{ SPH_C32(0x50df00d0), SPH_C32(0x10cdb30b), SPH_C32(0xe5dc2e48),
+	  SPH_C32(0xa7d0fcc0), SPH_C32(0x72250090), SPH_C32(0xa5313023),
+	  SPH_C32(0x637feaa0), SPH_C32(0xf0426699) },
+	{ SPH_C32(0x8d0200e0), SPH_C32(0xb504428f), SPH_C32(0xdc2142b2),
+	  SPH_C32(0x85dc9cdd), SPH_C32(0x7f0b0080), SPH_C32(0x2c788fca),
+	  SPH_C32(0xe631c15b), SPH_C32(0xe2fc1780) },
+	{ SPH_C32(0xdc5e00f0), SPH_C32(0xf5f73074), SPH_C32(0x20c664b0),
+	  SPH_C32(0xf48bccbc), SPH_C32(0x51320080), SPH_C32(0x48a5e943),
+	  SPH_C32(0xdae5c7a7), SPH_C32(0x5308873c) },
+	{ SPH_C32(0xa33b00e0), SPH_C32(0xd1d92406), SPH_C32(0xe0f5444e),
+	  SPH_C32(0x34280c61), SPH_C32(0x006e0090), SPH_C32(0x08569bb8),
+	  SPH_C32(0x2602e1a5), SPH_C32(0x225fd75d) },
+	{ SPH_C32(0xf26700f0), SPH_C32(0x912a56fd), SPH_C32(0x1c12624c),
+	  SPH_C32(0x457f5c00), SPH_C32(0x2e570090), SPH_C32(0x6c8bfd31),
+	  SPH_C32(0x1ad6e759), SPH_C32(0x93ab47e1) },
+	{ SPH_C32(0x73c800c0), SPH_C32(0xfd596a6b), SPH_C32(0x5c46034f),
+	  SPH_C32(0x049a1d65), SPH_C32(0xddb300a0), SPH_C32(0xad9f6a3c),
+	  SPH_C32(0x1fff8d5f), SPH_C32(0x0053b740) },
+	{ SPH_C32(0x229400d0), SPH_C32(0xbdaa1890), SPH_C32(0xa0a1254d),
+	  SPH_C32(0x75cd4d04), SPH_C32(0xf38a00a0), SPH_C32(0xc9420cb5),
+	  SPH_C32(0x232b8ba3), SPH_C32(0xb1a727fc) },
+	{ SPH_C32(0x5df100c0), SPH_C32(0x99840ce2), SPH_C32(0x609205b3),
+	  SPH_C32(0xb56e8dd9), SPH_C32(0xa2d600b0), SPH_C32(0x89b17e4e),
+	  SPH_C32(0xdfccada1), SPH_C32(0xc0f0779d) },
+	{ SPH_C32(0x0cad00d0), SPH_C32(0xd9777e19), SPH_C32(0x9c7523b1),
+	  SPH_C32(0xc439ddb8), SPH_C32(0x8cef00b0), SPH_C32(0xed6c18c7),
+	  SPH_C32(0xe318ab5d), SPH_C32(0x7104e721) },
+	{ SPH_C32(0xd17000e0), SPH_C32(0x7cbe8f9d), SPH_C32(0xa5884f4b),
+	  SPH_C32(0xe635bda5), SPH_C32(0x81c100a0), SPH_C32(0x6425a72e),
+	  SPH_C32(0x665680a6), SPH_C32(0x63ba9638) },
+	{ SPH_C32(0x802c00f0), SPH_C32(0x3c4dfd66), SPH_C32(0x596f6949),
+	  SPH_C32(0x9762edc4), SPH_C32(0xaff800a0), SPH_C32(0x00f8c1a7),
+	  SPH_C32(0x5a82865a), SPH_C32(0xd24e0684) },
+	{ SPH_C32(0xff4900e0), SPH_C32(0x1863e914), SPH_C32(0x995c49b7),
+	  SPH_C32(0x57c12d19), SPH_C32(0xfea400b0), SPH_C32(0x400bb35c),
+	  SPH_C32(0xa665a058), SPH_C32(0xa31956e5) },
+	{ SPH_C32(0xae1500f0), SPH_C32(0x58909bef), SPH_C32(0x65bb6fb5),
+	  SPH_C32(0x26967d78), SPH_C32(0xd09d00b0), SPH_C32(0x24d6d5d5),
+	  SPH_C32(0x9ab1a6a4), SPH_C32(0x12edc659) },
+	{ SPH_C32(0x1adf0080), SPH_C32(0xaf751133), SPH_C32(0x4ed6c5e9),
+	  SPH_C32(0x366782d3), SPH_C32(0x6eb700c0), SPH_C32(0xde99aea6),
+	  SPH_C32(0xa9fda70a), SPH_C32(0xa2760cfd) },
+	{ SPH_C32(0x4b830090), SPH_C32(0xef8663c8), SPH_C32(0xb231e3eb),
+	  SPH_C32(0x4730d2b2), SPH_C32(0x408e00c0), SPH_C32(0xba44c82f),
+	  SPH_C32(0x9529a1f6), SPH_C32(0x13829c41) },
+	{ SPH_C32(0x34e60080), SPH_C32(0xcba877ba), SPH_C32(0x7202c315),
+	  SPH_C32(0x8793126f), SPH_C32(0x11d200d0), SPH_C32(0xfab7bad4),
+	  SPH_C32(0x69ce87f4), SPH_C32(0x62d5cc20) },
+	{ SPH_C32(0x65ba0090), SPH_C32(0x8b5b0541), SPH_C32(0x8ee5e517),
+	  SPH_C32(0xf6c4420e), SPH_C32(0x3feb00d0), SPH_C32(0x9e6adc5d),
+	  SPH_C32(0x551a8108), SPH_C32(0xd3215c9c) },
+	{ SPH_C32(0xb86700a0), SPH_C32(0x2e92f4c5), SPH_C32(0xb71889ed),
+	  SPH_C32(0xd4c82213), SPH_C32(0x32c500c0), SPH_C32(0x172363b4),
+	  SPH_C32(0xd054aaf3), SPH_C32(0xc19f2d85) },
+	{ SPH_C32(0xe93b00b0), SPH_C32(0x6e61863e), SPH_C32(0x4bffafef),
+	  SPH_C32(0xa59f7272), SPH_C32(0x1cfc00c0), SPH_C32(0x73fe053d),
+	  SPH_C32(0xec80ac0f), SPH_C32(0x706bbd39) },
+	{ SPH_C32(0x965e00a0), SPH_C32(0x4a4f924c), SPH_C32(0x8bcc8f11),
+	  SPH_C32(0x653cb2af), SPH_C32(0x4da000d0), SPH_C32(0x330d77c6),
+	  SPH_C32(0x10678a0d), SPH_C32(0x013ced58) },
+	{ SPH_C32(0xc70200b0), SPH_C32(0x0abce0b7), SPH_C32(0x772ba913),
+	  SPH_C32(0x146be2ce), SPH_C32(0x639900d0), SPH_C32(0x57d0114f),
+	  SPH_C32(0x2cb38cf1), SPH_C32(0xb0c87de4) },
+	{ SPH_C32(0x46ad0080), SPH_C32(0x66cfdc21), SPH_C32(0x377fc810),
+	  SPH_C32(0x558ea3ab), SPH_C32(0x907d00e0), SPH_C32(0x96c48642),
+	  SPH_C32(0x299ae6f7), SPH_C32(0x23308d45) },
+	{ SPH_C32(0x17f10090), SPH_C32(0x263caeda), SPH_C32(0xcb98ee12),
+	  SPH_C32(0x24d9f3ca), SPH_C32(0xbe4400e0), SPH_C32(0xf219e0cb),
+	  SPH_C32(0x154ee00b), SPH_C32(0x92c41df9) },
+	{ SPH_C32(0x68940080), SPH_C32(0x0212baa8), SPH_C32(0x0babceec),
+	  SPH_C32(0xe47a3317), SPH_C32(0xef1800f0), SPH_C32(0xb2ea9230),
+	  SPH_C32(0xe9a9c609), SPH_C32(0xe3934d98) },
+	{ SPH_C32(0x39c80090), SPH_C32(0x42e1c853), SPH_C32(0xf74ce8ee),
+	  SPH_C32(0x952d6376), SPH_C32(0xc12100f0), SPH_C32(0xd637f4b9),
+	  SPH_C32(0xd57dc0f5), SPH_C32(0x5267dd24) },
+	{ SPH_C32(0xe41500a0), SPH_C32(0xe72839d7), SPH_C32(0xceb18414),
+	  SPH_C32(0xb721036b), SPH_C32(0xcc0f00e0), SPH_C32(0x5f7e4b50),
+	  SPH_C32(0x5033eb0e), SPH_C32(0x40d9ac3d) },
+	{ SPH_C32(0xb54900b0), SPH_C32(0xa7db4b2c), SPH_C32(0x3256a216),
+	  SPH_C32(0xc676530a), SPH_C32(0xe23600e0), SPH_C32(0x3ba32dd9),
+	  SPH_C32(0x6ce7edf2), SPH_C32(0xf12d3c81) },
+	{ SPH_C32(0xca2c00a0), SPH_C32(0x83f55f5e), SPH_C32(0xf26582e8),
+	  SPH_C32(0x06d593d7), SPH_C32(0xb36a00f0), SPH_C32(0x7b505f22),
+	  SPH_C32(0x9000cbf0), SPH_C32(0x807a6ce0) },
+	{ SPH_C32(0x9b7000b0), SPH_C32(0xc3062da5), SPH_C32(0x0e82a4ea),
+	  SPH_C32(0x7782c3b6), SPH_C32(0x9d5300f0), SPH_C32(0x1f8d39ab),
+	  SPH_C32(0xacd4cd0c), SPH_C32(0x318efc5c) },
+	{ SPH_C32(0x571100c0), SPH_C32(0x942efd4d), SPH_C32(0x78b3ae41),
+	  SPH_C32(0x1504b8d6), SPH_C32(0x161c00c0), SPH_C32(0x7e54f492),
+	  SPH_C32(0xf4a107fd), SPH_C32(0xd0018836) },
+	{ SPH_C32(0x064d00d0), SPH_C32(0xd4dd8fb6), SPH_C32(0x84548843),
+	  SPH_C32(0x6453e8b7), SPH_C32(0x382500c0), SPH_C32(0x1a89921b),
+	  SPH_C32(0xc8750101), SPH_C32(0x61f5188a) },
+	{ SPH_C32(0x792800c0), SPH_C32(0xf0f39bc4), SPH_C32(0x4467a8bd),
+	  SPH_C32(0xa4f0286a), SPH_C32(0x697900d0), SPH_C32(0x5a7ae0e0),
+	  SPH_C32(0x34922703), SPH_C32(0x10a248eb) },
+	{ SPH_C32(0x287400d0), SPH_C32(0xb000e93f), SPH_C32(0xb8808ebf),
+	  SPH_C32(0xd5a7780b), SPH_C32(0x474000d0), SPH_C32(0x3ea78669),
+	  SPH_C32(0x084621ff), SPH_C32(0xa156d857) },
+	{ SPH_C32(0xf5a900e0), SPH_C32(0x15c918bb), SPH_C32(0x817de245),
+	  SPH_C32(0xf7ab1816), SPH_C32(0x4a6e00c0), SPH_C32(0xb7ee3980),
+	  SPH_C32(0x8d080a04), SPH_C32(0xb3e8a94e) },
+	{ SPH_C32(0xa4f500f0), SPH_C32(0x553a6a40), SPH_C32(0x7d9ac447),
+	  SPH_C32(0x86fc4877), SPH_C32(0x645700c0), SPH_C32(0xd3335f09),
+	  SPH_C32(0xb1dc0cf8), SPH_C32(0x021c39f2) },
+	{ SPH_C32(0xdb9000e0), SPH_C32(0x71147e32), SPH_C32(0xbda9e4b9),
+	  SPH_C32(0x465f88aa), SPH_C32(0x350b00d0), SPH_C32(0x93c02df2),
+	  SPH_C32(0x4d3b2afa), SPH_C32(0x734b6993) },
+	{ SPH_C32(0x8acc00f0), SPH_C32(0x31e70cc9), SPH_C32(0x414ec2bb),
+	  SPH_C32(0x3708d8cb), SPH_C32(0x1b3200d0), SPH_C32(0xf71d4b7b),
+	  SPH_C32(0x71ef2c06), SPH_C32(0xc2bff92f) },
+	{ SPH_C32(0x0b6300c0), SPH_C32(0x5d94305f), SPH_C32(0x011aa3b8),
+	  SPH_C32(0x76ed99ae), SPH_C32(0xe8d600e0), SPH_C32(0x3609dc76),
+	  SPH_C32(0x74c64600), SPH_C32(0x5147098e) },
+	{ SPH_C32(0x5a3f00d0), SPH_C32(0x1d6742a4), SPH_C32(0xfdfd85ba),
+	  SPH_C32(0x07bac9cf), SPH_C32(0xc6ef00e0), SPH_C32(0x52d4baff),
+	  SPH_C32(0x481240fc), SPH_C32(0xe0b39932) },
+	{ SPH_C32(0x255a00c0), SPH_C32(0x394956d6), SPH_C32(0x3dcea544),
+	  SPH_C32(0xc7190912), SPH_C32(0x97b300f0), SPH_C32(0x1227c804),
+	  SPH_C32(0xb4f566fe), SPH_C32(0x91e4c953) },
+	{ SPH_C32(0x740600d0), SPH_C32(0x79ba242d), SPH_C32(0xc1298346),
+	  SPH_C32(0xb64e5973), SPH_C32(0xb98a00f0), SPH_C32(0x76faae8d),
+	  SPH_C32(0x88216002), SPH_C32(0x201059ef) },
+	{ SPH_C32(0xa9db00e0), SPH_C32(0xdc73d5a9), SPH_C32(0xf8d4efbc),
+	  SPH_C32(0x9442396e), SPH_C32(0xb4a400e0), SPH_C32(0xffb31164),
+	  SPH_C32(0x0d6f4bf9), SPH_C32(0x32ae28f6) },
+	{ SPH_C32(0xf88700f0), SPH_C32(0x9c80a752), SPH_C32(0x0433c9be),
+	  SPH_C32(0xe515690f), SPH_C32(0x9a9d00e0), SPH_C32(0x9b6e77ed),
+	  SPH_C32(0x31bb4d05), SPH_C32(0x835ab84a) },
+	{ SPH_C32(0x87e200e0), SPH_C32(0xb8aeb320), SPH_C32(0xc400e940),
+	  SPH_C32(0x25b6a9d2), SPH_C32(0xcbc100f0), SPH_C32(0xdb9d0516),
+	  SPH_C32(0xcd5c6b07), SPH_C32(0xf20de82b) },
+	{ SPH_C32(0xd6be00f0), SPH_C32(0xf85dc1db), SPH_C32(0x38e7cf42),
+	  SPH_C32(0x54e1f9b3), SPH_C32(0xe5f800f0), SPH_C32(0xbf40639f),
+	  SPH_C32(0xf1886dfb), SPH_C32(0x43f97897) }
+};
+
+static const sph_u32 T256_24[256][8] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000) },
+	{ SPH_C32(0xc04e0001), SPH_C32(0x33b9c010), SPH_C32(0xae0ebb05),
+	  SPH_C32(0xb5a4c63b), SPH_C32(0xc8f10000), SPH_C32(0x0b2de782),
+	  SPH_C32(0x6bf648a4), SPH_C32(0x539cbdbf) },
+	{ SPH_C32(0xc8f10000), SPH_C32(0x0b2de782), SPH_C32(0x6bf648a4),
+	  SPH_C32(0x539cbdbf), SPH_C32(0x08bf0001), SPH_C32(0x38942792),
+	  SPH_C32(0xc5f8f3a1), SPH_C32(0xe6387b84) },
+	{ SPH_C32(0x08bf0001), SPH_C32(0x38942792), SPH_C32(0xc5f8f3a1),
+	  SPH_C32(0xe6387b84), SPH_C32(0xc04e0001), SPH_C32(0x33b9c010),
+	  SPH_C32(0xae0ebb05), SPH_C32(0xb5a4c63b) },
+	{ SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3), SPH_C32(0x99e585aa),
+	  SPH_C32(0x8d75f7f1), SPH_C32(0x51ac0000), SPH_C32(0x25e30f14),
+	  SPH_C32(0x79e22a4c), SPH_C32(0x1298bd46) },
+	{ SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3), SPH_C32(0x37eb3eaf),
+	  SPH_C32(0x38d131ca), SPH_C32(0x995d0000), SPH_C32(0x2ecee896),
+	  SPH_C32(0x121462e8), SPH_C32(0x410400f9) },
+	{ SPH_C32(0x40d20002), SPH_C32(0x54ca4031), SPH_C32(0xf213cd0e),
+	  SPH_C32(0xdee94a4e), SPH_C32(0x59130001), SPH_C32(0x1d772886),
+	  SPH_C32(0xbc1ad9ed), SPH_C32(0xf4a0c6c2) },
+	{ SPH_C32(0x809c0003), SPH_C32(0x67738021), SPH_C32(0x5c1d760b),
+	  SPH_C32(0x6b4d8c75), SPH_C32(0x91e20001), SPH_C32(0x165acf04),
+	  SPH_C32(0xd7ec9149), SPH_C32(0xa73c7b7d) },
+	{ SPH_C32(0x51ac0000), SPH_C32(0x25e30f14), SPH_C32(0x79e22a4c),
+	  SPH_C32(0x1298bd46), SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7),
+	  SPH_C32(0xe007afe6), SPH_C32(0x9fed4ab7) },
+	{ SPH_C32(0x91e20001), SPH_C32(0x165acf04), SPH_C32(0xd7ec9149),
+	  SPH_C32(0xa73c7b7d), SPH_C32(0x117e0002), SPH_C32(0x71294f25),
+	  SPH_C32(0x8bf1e742), SPH_C32(0xcc71f708) },
+	{ SPH_C32(0x995d0000), SPH_C32(0x2ecee896), SPH_C32(0x121462e8),
+	  SPH_C32(0x410400f9), SPH_C32(0xd1300003), SPH_C32(0x42908f35),
+	  SPH_C32(0x25ff5c47), SPH_C32(0x79d53133) },
+	{ SPH_C32(0x59130001), SPH_C32(0x1d772886), SPH_C32(0xbc1ad9ed),
+	  SPH_C32(0xf4a0c6c2), SPH_C32(0x19c10003), SPH_C32(0x49bd68b7),
+	  SPH_C32(0x4e0914e3), SPH_C32(0x2a498c8c) },
+	{ SPH_C32(0xd98f0002), SPH_C32(0x7a04a8a7), SPH_C32(0xe007afe6),
+	  SPH_C32(0x9fed4ab7), SPH_C32(0x88230002), SPH_C32(0x5fe7a7b3),
+	  SPH_C32(0x99e585aa), SPH_C32(0x8d75f7f1) },
+	{ SPH_C32(0x19c10003), SPH_C32(0x49bd68b7), SPH_C32(0x4e0914e3),
+	  SPH_C32(0x2a498c8c), SPH_C32(0x40d20002), SPH_C32(0x54ca4031),
+	  SPH_C32(0xf213cd0e), SPH_C32(0xdee94a4e) },
+	{ SPH_C32(0x117e0002), SPH_C32(0x71294f25), SPH_C32(0x8bf1e742),
+	  SPH_C32(0xcc71f708), SPH_C32(0x809c0003), SPH_C32(0x67738021),
+	  SPH_C32(0x5c1d760b), SPH_C32(0x6b4d8c75) },
+	{ SPH_C32(0xd1300003), SPH_C32(0x42908f35), SPH_C32(0x25ff5c47),
+	  SPH_C32(0x79d53133), SPH_C32(0x486d0003), SPH_C32(0x6c5e67a3),
+	  SPH_C32(0x37eb3eaf), SPH_C32(0x38d131ca) },
+	{ SPH_C32(0xd0080004), SPH_C32(0x8c768f77), SPH_C32(0x9dc5b050),
+	  SPH_C32(0xaf4a29da), SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa),
+	  SPH_C32(0x98321c3d), SPH_C32(0x76acc733) },
+	{ SPH_C32(0x10460005), SPH_C32(0xbfcf4f67), SPH_C32(0x33cb0b55),
+	  SPH_C32(0x1aeeefe1), SPH_C32(0xa3580000), SPH_C32(0x4bc61e28),
+	  SPH_C32(0xf3c45499), SPH_C32(0x25307a8c) },
+	{ SPH_C32(0x18f90004), SPH_C32(0x875b68f5), SPH_C32(0xf633f8f4),
+	  SPH_C32(0xfcd69465), SPH_C32(0x63160001), SPH_C32(0x787fde38),
+	  SPH_C32(0x5dcaef9c), SPH_C32(0x9094bcb7) },
+	{ SPH_C32(0xd8b70005), SPH_C32(0xb4e2a8e5), SPH_C32(0x583d43f1),
+	  SPH_C32(0x4972525e), SPH_C32(0xabe70001), SPH_C32(0x735239ba),
+	  SPH_C32(0x363ca738), SPH_C32(0xc3080108) },
+	{ SPH_C32(0x582b0006), SPH_C32(0xd39128c4), SPH_C32(0x042035fa),
+	  SPH_C32(0x223fde2b), SPH_C32(0x3a050000), SPH_C32(0x6508f6be),
+	  SPH_C32(0xe1d03671), SPH_C32(0x64347a75) },
+	{ SPH_C32(0x98650007), SPH_C32(0xe028e8d4), SPH_C32(0xaa2e8eff),
+	  SPH_C32(0x979b1810), SPH_C32(0xf2f40000), SPH_C32(0x6e25113c),
+	  SPH_C32(0x8a267ed5), SPH_C32(0x37a8c7ca) },
+	{ SPH_C32(0x90da0006), SPH_C32(0xd8bccf46), SPH_C32(0x6fd67d5e),
+	  SPH_C32(0x71a36394), SPH_C32(0x32ba0001), SPH_C32(0x5d9cd12c),
+	  SPH_C32(0x2428c5d0), SPH_C32(0x820c01f1) },
+	{ SPH_C32(0x50940007), SPH_C32(0xeb050f56), SPH_C32(0xc1d8c65b),
+	  SPH_C32(0xc407a5af), SPH_C32(0xfa4b0001), SPH_C32(0x56b136ae),
+	  SPH_C32(0x4fde8d74), SPH_C32(0xd190bc4e) },
+	{ SPH_C32(0x81a40004), SPH_C32(0xa9958063), SPH_C32(0xe4279a1c),
+	  SPH_C32(0xbdd2949c), SPH_C32(0xb2260002), SPH_C32(0x3aef510d),
+	  SPH_C32(0x7835b3db), SPH_C32(0xe9418d84) },
+	{ SPH_C32(0x41ea0005), SPH_C32(0x9a2c4073), SPH_C32(0x4a292119),
+	  SPH_C32(0x087652a7), SPH_C32(0x7ad70002), SPH_C32(0x31c2b68f),
+	  SPH_C32(0x13c3fb7f), SPH_C32(0xbadd303b) },
+	{ SPH_C32(0x49550004), SPH_C32(0xa2b867e1), SPH_C32(0x8fd1d2b8),
+	  SPH_C32(0xee4e2923), SPH_C32(0xba990003), SPH_C32(0x027b769f),
+	  SPH_C32(0xbdcd407a), SPH_C32(0x0f79f600) },
+	{ SPH_C32(0x891b0005), SPH_C32(0x9101a7f1), SPH_C32(0x21df69bd),
+	  SPH_C32(0x5beaef18), SPH_C32(0x72680003), SPH_C32(0x0956911d),
+	  SPH_C32(0xd63b08de), SPH_C32(0x5ce54bbf) },
+	{ SPH_C32(0x09870006), SPH_C32(0xf67227d0), SPH_C32(0x7dc21fb6),
+	  SPH_C32(0x30a7636d), SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19),
+	  SPH_C32(0x01d79997), SPH_C32(0xfbd930c2) },
+	{ SPH_C32(0xc9c90007), SPH_C32(0xc5cbe7c0), SPH_C32(0xd3cca4b3),
+	  SPH_C32(0x8503a556), SPH_C32(0x2b7b0002), SPH_C32(0x1421b99b),
+	  SPH_C32(0x6a21d133), SPH_C32(0xa8458d7d) },
+	{ SPH_C32(0xc1760006), SPH_C32(0xfd5fc052), SPH_C32(0x16345712),
+	  SPH_C32(0x633bded2), SPH_C32(0xeb350003), SPH_C32(0x2798798b),
+	  SPH_C32(0xc42f6a36), SPH_C32(0x1de14b46) },
+	{ SPH_C32(0x01380007), SPH_C32(0xcee60042), SPH_C32(0xb83aec17),
+	  SPH_C32(0xd69f18e9), SPH_C32(0x23c40003), SPH_C32(0x2cb59e09),
+	  SPH_C32(0xafd92292), SPH_C32(0x4e7df6f9) },
+	{ SPH_C32(0x6ba90000), SPH_C32(0x40ebf9aa), SPH_C32(0x98321c3d),
+	  SPH_C32(0x76acc733), SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd),
+	  SPH_C32(0x05f7ac6d), SPH_C32(0xd9e6eee9) },
+	{ SPH_C32(0xabe70001), SPH_C32(0x735239ba), SPH_C32(0x363ca738),
+	  SPH_C32(0xc3080108), SPH_C32(0x73500004), SPH_C32(0xc7b0915f),
+	  SPH_C32(0x6e01e4c9), SPH_C32(0x8a7a5356) },
+	{ SPH_C32(0xa3580000), SPH_C32(0x4bc61e28), SPH_C32(0xf3c45499),
+	  SPH_C32(0x25307a8c), SPH_C32(0xb31e0005), SPH_C32(0xf409514f),
+	  SPH_C32(0xc00f5fcc), SPH_C32(0x3fde956d) },
+	{ SPH_C32(0x63160001), SPH_C32(0x787fde38), SPH_C32(0x5dcaef9c),
+	  SPH_C32(0x9094bcb7), SPH_C32(0x7bef0005), SPH_C32(0xff24b6cd),
+	  SPH_C32(0xabf91768), SPH_C32(0x6c4228d2) },
+	{ SPH_C32(0xe38a0002), SPH_C32(0x1f0c5e19), SPH_C32(0x01d79997),
+	  SPH_C32(0xfbd930c2), SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9),
+	  SPH_C32(0x7c158621), SPH_C32(0xcb7e53af) },
+	{ SPH_C32(0x23c40003), SPH_C32(0x2cb59e09), SPH_C32(0xafd92292),
+	  SPH_C32(0x4e7df6f9), SPH_C32(0x22fc0004), SPH_C32(0xe2539e4b),
+	  SPH_C32(0x17e3ce85), SPH_C32(0x98e2ee10) },
+	{ SPH_C32(0x2b7b0002), SPH_C32(0x1421b99b), SPH_C32(0x6a21d133),
+	  SPH_C32(0xa8458d7d), SPH_C32(0xe2b20005), SPH_C32(0xd1ea5e5b),
+	  SPH_C32(0xb9ed7580), SPH_C32(0x2d46282b) },
+	{ SPH_C32(0xeb350003), SPH_C32(0x2798798b), SPH_C32(0xc42f6a36),
+	  SPH_C32(0x1de14b46), SPH_C32(0x2a430005), SPH_C32(0xdac7b9d9),
+	  SPH_C32(0xd21b3d24), SPH_C32(0x7eda9594) },
+	{ SPH_C32(0x3a050000), SPH_C32(0x6508f6be), SPH_C32(0xe1d03671),
+	  SPH_C32(0x64347a75), SPH_C32(0x622e0006), SPH_C32(0xb699de7a),
+	  SPH_C32(0xe5f0038b), SPH_C32(0x460ba45e) },
+	{ SPH_C32(0xfa4b0001), SPH_C32(0x56b136ae), SPH_C32(0x4fde8d74),
+	  SPH_C32(0xd190bc4e), SPH_C32(0xaadf0006), SPH_C32(0xbdb439f8),
+	  SPH_C32(0x8e064b2f), SPH_C32(0x159719e1) },
+	{ SPH_C32(0xf2f40000), SPH_C32(0x6e25113c), SPH_C32(0x8a267ed5),
+	  SPH_C32(0x37a8c7ca), SPH_C32(0x6a910007), SPH_C32(0x8e0df9e8),
+	  SPH_C32(0x2008f02a), SPH_C32(0xa033dfda) },
+	{ SPH_C32(0x32ba0001), SPH_C32(0x5d9cd12c), SPH_C32(0x2428c5d0),
+	  SPH_C32(0x820c01f1), SPH_C32(0xa2600007), SPH_C32(0x85201e6a),
+	  SPH_C32(0x4bfeb88e), SPH_C32(0xf3af6265) },
+	{ SPH_C32(0xb2260002), SPH_C32(0x3aef510d), SPH_C32(0x7835b3db),
+	  SPH_C32(0xe9418d84), SPH_C32(0x33820006), SPH_C32(0x937ad16e),
+	  SPH_C32(0x9c1229c7), SPH_C32(0x54931918) },
+	{ SPH_C32(0x72680003), SPH_C32(0x0956911d), SPH_C32(0xd63b08de),
+	  SPH_C32(0x5ce54bbf), SPH_C32(0xfb730006), SPH_C32(0x985736ec),
+	  SPH_C32(0xf7e46163), SPH_C32(0x070fa4a7) },
+	{ SPH_C32(0x7ad70002), SPH_C32(0x31c2b68f), SPH_C32(0x13c3fb7f),
+	  SPH_C32(0xbadd303b), SPH_C32(0x3b3d0007), SPH_C32(0xabeef6fc),
+	  SPH_C32(0x59eada66), SPH_C32(0xb2ab629c) },
+	{ SPH_C32(0xba990003), SPH_C32(0x027b769f), SPH_C32(0xbdcd407a),
+	  SPH_C32(0x0f79f600), SPH_C32(0xf3cc0007), SPH_C32(0xa0c3117e),
+	  SPH_C32(0x321c92c2), SPH_C32(0xe137df23) },
+	{ SPH_C32(0xbba10004), SPH_C32(0xcc9d76dd), SPH_C32(0x05f7ac6d),
+	  SPH_C32(0xd9e6eee9), SPH_C32(0xd0080004), SPH_C32(0x8c768f77),
+	  SPH_C32(0x9dc5b050), SPH_C32(0xaf4a29da) },
+	{ SPH_C32(0x7bef0005), SPH_C32(0xff24b6cd), SPH_C32(0xabf91768),
+	  SPH_C32(0x6c4228d2), SPH_C32(0x18f90004), SPH_C32(0x875b68f5),
+	  SPH_C32(0xf633f8f4), SPH_C32(0xfcd69465) },
+	{ SPH_C32(0x73500004), SPH_C32(0xc7b0915f), SPH_C32(0x6e01e4c9),
+	  SPH_C32(0x8a7a5356), SPH_C32(0xd8b70005), SPH_C32(0xb4e2a8e5),
+	  SPH_C32(0x583d43f1), SPH_C32(0x4972525e) },
+	{ SPH_C32(0xb31e0005), SPH_C32(0xf409514f), SPH_C32(0xc00f5fcc),
+	  SPH_C32(0x3fde956d), SPH_C32(0x10460005), SPH_C32(0xbfcf4f67),
+	  SPH_C32(0x33cb0b55), SPH_C32(0x1aeeefe1) },
+	{ SPH_C32(0x33820006), SPH_C32(0x937ad16e), SPH_C32(0x9c1229c7),
+	  SPH_C32(0x54931918), SPH_C32(0x81a40004), SPH_C32(0xa9958063),
+	  SPH_C32(0xe4279a1c), SPH_C32(0xbdd2949c) },
+	{ SPH_C32(0xf3cc0007), SPH_C32(0xa0c3117e), SPH_C32(0x321c92c2),
+	  SPH_C32(0xe137df23), SPH_C32(0x49550004), SPH_C32(0xa2b867e1),
+	  SPH_C32(0x8fd1d2b8), SPH_C32(0xee4e2923) },
+	{ SPH_C32(0xfb730006), SPH_C32(0x985736ec), SPH_C32(0xf7e46163),
+	  SPH_C32(0x070fa4a7), SPH_C32(0x891b0005), SPH_C32(0x9101a7f1),
+	  SPH_C32(0x21df69bd), SPH_C32(0x5beaef18) },
+	{ SPH_C32(0x3b3d0007), SPH_C32(0xabeef6fc), SPH_C32(0x59eada66),
+	  SPH_C32(0xb2ab629c), SPH_C32(0x41ea0005), SPH_C32(0x9a2c4073),
+	  SPH_C32(0x4a292119), SPH_C32(0x087652a7) },
+	{ SPH_C32(0xea0d0004), SPH_C32(0xe97e79c9), SPH_C32(0x7c158621),
+	  SPH_C32(0xcb7e53af), SPH_C32(0x09870006), SPH_C32(0xf67227d0),
+	  SPH_C32(0x7dc21fb6), SPH_C32(0x30a7636d) },
+	{ SPH_C32(0x2a430005), SPH_C32(0xdac7b9d9), SPH_C32(0xd21b3d24),
+	  SPH_C32(0x7eda9594), SPH_C32(0xc1760006), SPH_C32(0xfd5fc052),
+	  SPH_C32(0x16345712), SPH_C32(0x633bded2) },
+	{ SPH_C32(0x22fc0004), SPH_C32(0xe2539e4b), SPH_C32(0x17e3ce85),
+	  SPH_C32(0x98e2ee10), SPH_C32(0x01380007), SPH_C32(0xcee60042),
+	  SPH_C32(0xb83aec17), SPH_C32(0xd69f18e9) },
+	{ SPH_C32(0xe2b20005), SPH_C32(0xd1ea5e5b), SPH_C32(0xb9ed7580),
+	  SPH_C32(0x2d46282b), SPH_C32(0xc9c90007), SPH_C32(0xc5cbe7c0),
+	  SPH_C32(0xd3cca4b3), SPH_C32(0x8503a556) },
+	{ SPH_C32(0x622e0006), SPH_C32(0xb699de7a), SPH_C32(0xe5f0038b),
+	  SPH_C32(0x460ba45e), SPH_C32(0x582b0006), SPH_C32(0xd39128c4),
+	  SPH_C32(0x042035fa), SPH_C32(0x223fde2b) },
+	{ SPH_C32(0xa2600007), SPH_C32(0x85201e6a), SPH_C32(0x4bfeb88e),
+	  SPH_C32(0xf3af6265), SPH_C32(0x90da0006), SPH_C32(0xd8bccf46),
+	  SPH_C32(0x6fd67d5e), SPH_C32(0x71a36394) },
+	{ SPH_C32(0xaadf0006), SPH_C32(0xbdb439f8), SPH_C32(0x8e064b2f),
+	  SPH_C32(0x159719e1), SPH_C32(0x50940007), SPH_C32(0xeb050f56),
+	  SPH_C32(0xc1d8c65b), SPH_C32(0xc407a5af) },
+	{ SPH_C32(0x6a910007), SPH_C32(0x8e0df9e8), SPH_C32(0x2008f02a),
+	  SPH_C32(0xa033dfda), SPH_C32(0x98650007), SPH_C32(0xe028e8d4),
+	  SPH_C32(0xaa2e8eff), SPH_C32(0x979b1810) },
+	{ SPH_C32(0xa8ae0008), SPH_C32(0x2079397d), SPH_C32(0xfe739301),
+	  SPH_C32(0xb8a92831), SPH_C32(0x171c0000), SPH_C32(0xb26e3344),
+	  SPH_C32(0x9e6a837e), SPH_C32(0x58f8485f) },
+	{ SPH_C32(0x68e00009), SPH_C32(0x13c0f96d), SPH_C32(0x507d2804),
+	  SPH_C32(0x0d0dee0a), SPH_C32(0xdfed0000), SPH_C32(0xb943d4c6),
+	  SPH_C32(0xf59ccbda), SPH_C32(0x0b64f5e0) },
+	{ SPH_C32(0x605f0008), SPH_C32(0x2b54deff), SPH_C32(0x9585dba5),
+	  SPH_C32(0xeb35958e), SPH_C32(0x1fa30001), SPH_C32(0x8afa14d6),
+	  SPH_C32(0x5b9270df), SPH_C32(0xbec033db) },
+	{ SPH_C32(0xa0110009), SPH_C32(0x18ed1eef), SPH_C32(0x3b8b60a0),
+	  SPH_C32(0x5e9153b5), SPH_C32(0xd7520001), SPH_C32(0x81d7f354),
+	  SPH_C32(0x3064387b), SPH_C32(0xed5c8e64) },
+	{ SPH_C32(0x208d000a), SPH_C32(0x7f9e9ece), SPH_C32(0x679616ab),
+	  SPH_C32(0x35dcdfc0), SPH_C32(0x46b00000), SPH_C32(0x978d3c50),
+	  SPH_C32(0xe788a932), SPH_C32(0x4a60f519) },
+	{ SPH_C32(0xe0c3000b), SPH_C32(0x4c275ede), SPH_C32(0xc998adae),
+	  SPH_C32(0x807819fb), SPH_C32(0x8e410000), SPH_C32(0x9ca0dbd2),
+	  SPH_C32(0x8c7ee196), SPH_C32(0x19fc48a6) },
+	{ SPH_C32(0xe87c000a), SPH_C32(0x74b3794c), SPH_C32(0x0c605e0f),
+	  SPH_C32(0x6640627f), SPH_C32(0x4e0f0001), SPH_C32(0xaf191bc2),
+	  SPH_C32(0x22705a93), SPH_C32(0xac588e9d) },
+	{ SPH_C32(0x2832000b), SPH_C32(0x470ab95c), SPH_C32(0xa26ee50a),
+	  SPH_C32(0xd3e4a444), SPH_C32(0x86fe0001), SPH_C32(0xa434fc40),
+	  SPH_C32(0x49861237), SPH_C32(0xffc43322) },
+	{ SPH_C32(0xf9020008), SPH_C32(0x059a3669), SPH_C32(0x8791b94d),
+	  SPH_C32(0xaa319577), SPH_C32(0xce930002), SPH_C32(0xc86a9be3),
+	  SPH_C32(0x7e6d2c98), SPH_C32(0xc71502e8) },
+	{ SPH_C32(0x394c0009), SPH_C32(0x3623f679), SPH_C32(0x299f0248),
+	  SPH_C32(0x1f95534c), SPH_C32(0x06620002), SPH_C32(0xc3477c61),
+	  SPH_C32(0x159b643c), SPH_C32(0x9489bf57) },
+	{ SPH_C32(0x31f30008), SPH_C32(0x0eb7d1eb), SPH_C32(0xec67f1e9),
+	  SPH_C32(0xf9ad28c8), SPH_C32(0xc62c0003), SPH_C32(0xf0febc71),
+	  SPH_C32(0xbb95df39), SPH_C32(0x212d796c) },
+	{ SPH_C32(0xf1bd0009), SPH_C32(0x3d0e11fb), SPH_C32(0x42694aec),
+	  SPH_C32(0x4c09eef3), SPH_C32(0x0edd0003), SPH_C32(0xfbd35bf3),
+	  SPH_C32(0xd063979d), SPH_C32(0x72b1c4d3) },
+	{ SPH_C32(0x7121000a), SPH_C32(0x5a7d91da), SPH_C32(0x1e743ce7),
+	  SPH_C32(0x27446286), SPH_C32(0x9f3f0002), SPH_C32(0xed8994f7),
+	  SPH_C32(0x078f06d4), SPH_C32(0xd58dbfae) },
+	{ SPH_C32(0xb16f000b), SPH_C32(0x69c451ca), SPH_C32(0xb07a87e2),
+	  SPH_C32(0x92e0a4bd), SPH_C32(0x57ce0002), SPH_C32(0xe6a47375),
+	  SPH_C32(0x6c794e70), SPH_C32(0x86110211) },
+	{ SPH_C32(0xb9d0000a), SPH_C32(0x51507658), SPH_C32(0x75827443),
+	  SPH_C32(0x74d8df39), SPH_C32(0x97800003), SPH_C32(0xd51db365),
+	  SPH_C32(0xc277f575), SPH_C32(0x33b5c42a) },
+	{ SPH_C32(0x799e000b), SPH_C32(0x62e9b648), SPH_C32(0xdb8ccf46),
+	  SPH_C32(0xc17c1902), SPH_C32(0x5f710003), SPH_C32(0xde3054e7),
+	  SPH_C32(0xa981bdd1), SPH_C32(0x60297995) },
+	{ SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a), SPH_C32(0x63b62351),
+	  SPH_C32(0x17e301eb), SPH_C32(0x7cb50000), SPH_C32(0xf285caee),
+	  SPH_C32(0x06589f43), SPH_C32(0x2e548f6c) },
+	{ SPH_C32(0xb8e8000d), SPH_C32(0x9fb6761a), SPH_C32(0xcdb89854),
+	  SPH_C32(0xa247c7d0), SPH_C32(0xb4440000), SPH_C32(0xf9a82d6c),
+	  SPH_C32(0x6daed7e7), SPH_C32(0x7dc832d3) },
+	{ SPH_C32(0xb057000c), SPH_C32(0xa7225188), SPH_C32(0x08406bf5),
+	  SPH_C32(0x447fbc54), SPH_C32(0x740a0001), SPH_C32(0xca11ed7c),
+	  SPH_C32(0xc3a06ce2), SPH_C32(0xc86cf4e8) },
+	{ SPH_C32(0x7019000d), SPH_C32(0x949b9198), SPH_C32(0xa64ed0f0),
+	  SPH_C32(0xf1db7a6f), SPH_C32(0xbcfb0001), SPH_C32(0xc13c0afe),
+	  SPH_C32(0xa8562446), SPH_C32(0x9bf04957) },
+	{ SPH_C32(0xf085000e), SPH_C32(0xf3e811b9), SPH_C32(0xfa53a6fb),
+	  SPH_C32(0x9a96f61a), SPH_C32(0x2d190000), SPH_C32(0xd766c5fa),
+	  SPH_C32(0x7fbab50f), SPH_C32(0x3ccc322a) },
+	{ SPH_C32(0x30cb000f), SPH_C32(0xc051d1a9), SPH_C32(0x545d1dfe),
+	  SPH_C32(0x2f323021), SPH_C32(0xe5e80000), SPH_C32(0xdc4b2278),
+	  SPH_C32(0x144cfdab), SPH_C32(0x6f508f95) },
+	{ SPH_C32(0x3874000e), SPH_C32(0xf8c5f63b), SPH_C32(0x91a5ee5f),
+	  SPH_C32(0xc90a4ba5), SPH_C32(0x25a60001), SPH_C32(0xeff2e268),
+	  SPH_C32(0xba4246ae), SPH_C32(0xdaf449ae) },
+	{ SPH_C32(0xf83a000f), SPH_C32(0xcb7c362b), SPH_C32(0x3fab555a),
+	  SPH_C32(0x7cae8d9e), SPH_C32(0xed570001), SPH_C32(0xe4df05ea),
+	  SPH_C32(0xd1b40e0a), SPH_C32(0x8968f411) },
+	{ SPH_C32(0x290a000c), SPH_C32(0x89ecb91e), SPH_C32(0x1a54091d),
+	  SPH_C32(0x057bbcad), SPH_C32(0xa53a0002), SPH_C32(0x88816249),
+	  SPH_C32(0xe65f30a5), SPH_C32(0xb1b9c5db) },
+	{ SPH_C32(0xe944000d), SPH_C32(0xba55790e), SPH_C32(0xb45ab218),
+	  SPH_C32(0xb0df7a96), SPH_C32(0x6dcb0002), SPH_C32(0x83ac85cb),
+	  SPH_C32(0x8da97801), SPH_C32(0xe2257864) },
+	{ SPH_C32(0xe1fb000c), SPH_C32(0x82c15e9c), SPH_C32(0x71a241b9),
+	  SPH_C32(0x56e70112), SPH_C32(0xad850003), SPH_C32(0xb01545db),
+	  SPH_C32(0x23a7c304), SPH_C32(0x5781be5f) },
+	{ SPH_C32(0x21b5000d), SPH_C32(0xb1789e8c), SPH_C32(0xdfacfabc),
+	  SPH_C32(0xe343c729), SPH_C32(0x65740003), SPH_C32(0xbb38a259),
+	  SPH_C32(0x48518ba0), SPH_C32(0x041d03e0) },
+	{ SPH_C32(0xa129000e), SPH_C32(0xd60b1ead), SPH_C32(0x83b18cb7),
+	  SPH_C32(0x880e4b5c), SPH_C32(0xf4960002), SPH_C32(0xad626d5d),
+	  SPH_C32(0x9fbd1ae9), SPH_C32(0xa321789d) },
+	{ SPH_C32(0x6167000f), SPH_C32(0xe5b2debd), SPH_C32(0x2dbf37b2),
+	  SPH_C32(0x3daa8d67), SPH_C32(0x3c670002), SPH_C32(0xa64f8adf),
+	  SPH_C32(0xf44b524d), SPH_C32(0xf0bdc522) },
+	{ SPH_C32(0x69d8000e), SPH_C32(0xdd26f92f), SPH_C32(0xe847c413),
+	  SPH_C32(0xdb92f6e3), SPH_C32(0xfc290003), SPH_C32(0x95f64acf),
+	  SPH_C32(0x5a45e948), SPH_C32(0x45190319) },
+	{ SPH_C32(0xa996000f), SPH_C32(0xee9f393f), SPH_C32(0x46497f16),
+	  SPH_C32(0x6e3630d8), SPH_C32(0x34d80003), SPH_C32(0x9edbad4d),
+	  SPH_C32(0x31b3a1ec), SPH_C32(0x1685bea6) },
+	{ SPH_C32(0xc3070008), SPH_C32(0x6092c0d7), SPH_C32(0x66418f3c),
+	  SPH_C32(0xce05ef02), SPH_C32(0xacbd0004), SPH_C32(0x7ef34599),
+	  SPH_C32(0x9b9d2f13), SPH_C32(0x811ea6b6) },
+	{ SPH_C32(0x03490009), SPH_C32(0x532b00c7), SPH_C32(0xc84f3439),
+	  SPH_C32(0x7ba12939), SPH_C32(0x644c0004), SPH_C32(0x75dea21b),
+	  SPH_C32(0xf06b67b7), SPH_C32(0xd2821b09) },
+	{ SPH_C32(0x0bf60008), SPH_C32(0x6bbf2755), SPH_C32(0x0db7c798),
+	  SPH_C32(0x9d9952bd), SPH_C32(0xa4020005), SPH_C32(0x4667620b),
+	  SPH_C32(0x5e65dcb2), SPH_C32(0x6726dd32) },
+	{ SPH_C32(0xcbb80009), SPH_C32(0x5806e745), SPH_C32(0xa3b97c9d),
+	  SPH_C32(0x283d9486), SPH_C32(0x6cf30005), SPH_C32(0x4d4a8589),
+	  SPH_C32(0x35939416), SPH_C32(0x34ba608d) },
+	{ SPH_C32(0x4b24000a), SPH_C32(0x3f756764), SPH_C32(0xffa40a96),
+	  SPH_C32(0x437018f3), SPH_C32(0xfd110004), SPH_C32(0x5b104a8d),
+	  SPH_C32(0xe27f055f), SPH_C32(0x93861bf0) },
+	{ SPH_C32(0x8b6a000b), SPH_C32(0x0ccca774), SPH_C32(0x51aab193),
+	  SPH_C32(0xf6d4dec8), SPH_C32(0x35e00004), SPH_C32(0x503dad0f),
+	  SPH_C32(0x89894dfb), SPH_C32(0xc01aa64f) },
+	{ SPH_C32(0x83d5000a), SPH_C32(0x345880e6), SPH_C32(0x94524232),
+	  SPH_C32(0x10eca54c), SPH_C32(0xf5ae0005), SPH_C32(0x63846d1f),
+	  SPH_C32(0x2787f6fe), SPH_C32(0x75be6074) },
+	{ SPH_C32(0x439b000b), SPH_C32(0x07e140f6), SPH_C32(0x3a5cf937),
+	  SPH_C32(0xa5486377), SPH_C32(0x3d5f0005), SPH_C32(0x68a98a9d),
+	  SPH_C32(0x4c71be5a), SPH_C32(0x2622ddcb) },
+	{ SPH_C32(0x92ab0008), SPH_C32(0x4571cfc3), SPH_C32(0x1fa3a570),
+	  SPH_C32(0xdc9d5244), SPH_C32(0x75320006), SPH_C32(0x04f7ed3e),
+	  SPH_C32(0x7b9a80f5), SPH_C32(0x1ef3ec01) },
+	{ SPH_C32(0x52e50009), SPH_C32(0x76c80fd3), SPH_C32(0xb1ad1e75),
+	  SPH_C32(0x6939947f), SPH_C32(0xbdc30006), SPH_C32(0x0fda0abc),
+	  SPH_C32(0x106cc851), SPH_C32(0x4d6f51be) },
+	{ SPH_C32(0x5a5a0008), SPH_C32(0x4e5c2841), SPH_C32(0x7455edd4),
+	  SPH_C32(0x8f01effb), SPH_C32(0x7d8d0007), SPH_C32(0x3c63caac),
+	  SPH_C32(0xbe627354), SPH_C32(0xf8cb9785) },
+	{ SPH_C32(0x9a140009), SPH_C32(0x7de5e851), SPH_C32(0xda5b56d1),
+	  SPH_C32(0x3aa529c0), SPH_C32(0xb57c0007), SPH_C32(0x374e2d2e),
+	  SPH_C32(0xd5943bf0), SPH_C32(0xab572a3a) },
+	{ SPH_C32(0x1a88000a), SPH_C32(0x1a966870), SPH_C32(0x864620da),
+	  SPH_C32(0x51e8a5b5), SPH_C32(0x249e0006), SPH_C32(0x2114e22a),
+	  SPH_C32(0x0278aab9), SPH_C32(0x0c6b5147) },
+	{ SPH_C32(0xdac6000b), SPH_C32(0x292fa860), SPH_C32(0x28489bdf),
+	  SPH_C32(0xe44c638e), SPH_C32(0xec6f0006), SPH_C32(0x2a3905a8),
+	  SPH_C32(0x698ee21d), SPH_C32(0x5ff7ecf8) },
+	{ SPH_C32(0xd279000a), SPH_C32(0x11bb8ff2), SPH_C32(0xedb0687e),
+	  SPH_C32(0x0274180a), SPH_C32(0x2c210007), SPH_C32(0x1980c5b8),
+	  SPH_C32(0xc7805918), SPH_C32(0xea532ac3) },
+	{ SPH_C32(0x1237000b), SPH_C32(0x22024fe2), SPH_C32(0x43bed37b),
+	  SPH_C32(0xb7d0de31), SPH_C32(0xe4d00007), SPH_C32(0x12ad223a),
+	  SPH_C32(0xac7611bc), SPH_C32(0xb9cf977c) },
+	{ SPH_C32(0x130f000c), SPH_C32(0xece44fa0), SPH_C32(0xfb843f6c),
+	  SPH_C32(0x614fc6d8), SPH_C32(0xc7140004), SPH_C32(0x3e18bc33),
+	  SPH_C32(0x03af332e), SPH_C32(0xf7b26185) },
+	{ SPH_C32(0xd341000d), SPH_C32(0xdf5d8fb0), SPH_C32(0x558a8469),
+	  SPH_C32(0xd4eb00e3), SPH_C32(0x0fe50004), SPH_C32(0x35355bb1),
+	  SPH_C32(0x68597b8a), SPH_C32(0xa42edc3a) },
+	{ SPH_C32(0xdbfe000c), SPH_C32(0xe7c9a822), SPH_C32(0x907277c8),
+	  SPH_C32(0x32d37b67), SPH_C32(0xcfab0005), SPH_C32(0x068c9ba1),
+	  SPH_C32(0xc657c08f), SPH_C32(0x118a1a01) },
+	{ SPH_C32(0x1bb0000d), SPH_C32(0xd4706832), SPH_C32(0x3e7ccccd),
+	  SPH_C32(0x8777bd5c), SPH_C32(0x075a0005), SPH_C32(0x0da17c23),
+	  SPH_C32(0xada1882b), SPH_C32(0x4216a7be) },
+	{ SPH_C32(0x9b2c000e), SPH_C32(0xb303e813), SPH_C32(0x6261bac6),
+	  SPH_C32(0xec3a3129), SPH_C32(0x96b80004), SPH_C32(0x1bfbb327),
+	  SPH_C32(0x7a4d1962), SPH_C32(0xe52adcc3) },
+	{ SPH_C32(0x5b62000f), SPH_C32(0x80ba2803), SPH_C32(0xcc6f01c3),
+	  SPH_C32(0x599ef712), SPH_C32(0x5e490004), SPH_C32(0x10d654a5),
+	  SPH_C32(0x11bb51c6), SPH_C32(0xb6b6617c) },
+	{ SPH_C32(0x53dd000e), SPH_C32(0xb82e0f91), SPH_C32(0x0997f262),
+	  SPH_C32(0xbfa68c96), SPH_C32(0x9e070005), SPH_C32(0x236f94b5),
+	  SPH_C32(0xbfb5eac3), SPH_C32(0x0312a747) },
+	{ SPH_C32(0x9393000f), SPH_C32(0x8b97cf81), SPH_C32(0xa7994967),
+	  SPH_C32(0x0a024aad), SPH_C32(0x56f60005), SPH_C32(0x28427337),
+	  SPH_C32(0xd443a267), SPH_C32(0x508e1af8) },
+	{ SPH_C32(0x42a3000c), SPH_C32(0xc90740b4), SPH_C32(0x82661520),
+	  SPH_C32(0x73d77b9e), SPH_C32(0x1e9b0006), SPH_C32(0x441c1494),
+	  SPH_C32(0xe3a89cc8), SPH_C32(0x685f2b32) },
+	{ SPH_C32(0x82ed000d), SPH_C32(0xfabe80a4), SPH_C32(0x2c68ae25),
+	  SPH_C32(0xc673bda5), SPH_C32(0xd66a0006), SPH_C32(0x4f31f316),
+	  SPH_C32(0x885ed46c), SPH_C32(0x3bc3968d) },
+	{ SPH_C32(0x8a52000c), SPH_C32(0xc22aa736), SPH_C32(0xe9905d84),
+	  SPH_C32(0x204bc621), SPH_C32(0x16240007), SPH_C32(0x7c883306),
+	  SPH_C32(0x26506f69), SPH_C32(0x8e6750b6) },
+	{ SPH_C32(0x4a1c000d), SPH_C32(0xf1936726), SPH_C32(0x479ee681),
+	  SPH_C32(0x95ef001a), SPH_C32(0xded50007), SPH_C32(0x77a5d484),
+	  SPH_C32(0x4da627cd), SPH_C32(0xddfbed09) },
+	{ SPH_C32(0xca80000e), SPH_C32(0x96e0e707), SPH_C32(0x1b83908a),
+	  SPH_C32(0xfea28c6f), SPH_C32(0x4f370006), SPH_C32(0x61ff1b80),
+	  SPH_C32(0x9a4ab684), SPH_C32(0x7ac79674) },
+	{ SPH_C32(0x0ace000f), SPH_C32(0xa5592717), SPH_C32(0xb58d2b8f),
+	  SPH_C32(0x4b064a54), SPH_C32(0x87c60006), SPH_C32(0x6ad2fc02),
+	  SPH_C32(0xf1bcfe20), SPH_C32(0x295b2bcb) },
+	{ SPH_C32(0x0271000e), SPH_C32(0x9dcd0085), SPH_C32(0x7075d82e),
+	  SPH_C32(0xad3e31d0), SPH_C32(0x47880007), SPH_C32(0x596b3c12),
+	  SPH_C32(0x5fb24525), SPH_C32(0x9cffedf0) },
+	{ SPH_C32(0xc23f000f), SPH_C32(0xae74c095), SPH_C32(0xde7b632b),
+	  SPH_C32(0x189af7eb), SPH_C32(0x8f790007), SPH_C32(0x5246db90),
+	  SPH_C32(0x34440d81), SPH_C32(0xcf63504f) },
+	{ SPH_C32(0x171c0000), SPH_C32(0xb26e3344), SPH_C32(0x9e6a837e),
+	  SPH_C32(0x58f8485f), SPH_C32(0xbfb20008), SPH_C32(0x92170a39),
+	  SPH_C32(0x6019107f), SPH_C32(0xe051606e) },
+	{ SPH_C32(0xd7520001), SPH_C32(0x81d7f354), SPH_C32(0x3064387b),
+	  SPH_C32(0xed5c8e64), SPH_C32(0x77430008), SPH_C32(0x993aedbb),
+	  SPH_C32(0x0bef58db), SPH_C32(0xb3cdddd1) },
+	{ SPH_C32(0xdfed0000), SPH_C32(0xb943d4c6), SPH_C32(0xf59ccbda),
+	  SPH_C32(0x0b64f5e0), SPH_C32(0xb70d0009), SPH_C32(0xaa832dab),
+	  SPH_C32(0xa5e1e3de), SPH_C32(0x06691bea) },
+	{ SPH_C32(0x1fa30001), SPH_C32(0x8afa14d6), SPH_C32(0x5b9270df),
+	  SPH_C32(0xbec033db), SPH_C32(0x7ffc0009), SPH_C32(0xa1aeca29),
+	  SPH_C32(0xce17ab7a), SPH_C32(0x55f5a655) },
+	{ SPH_C32(0x9f3f0002), SPH_C32(0xed8994f7), SPH_C32(0x078f06d4),
+	  SPH_C32(0xd58dbfae), SPH_C32(0xee1e0008), SPH_C32(0xb7f4052d),
+	  SPH_C32(0x19fb3a33), SPH_C32(0xf2c9dd28) },
+	{ SPH_C32(0x5f710003), SPH_C32(0xde3054e7), SPH_C32(0xa981bdd1),
+	  SPH_C32(0x60297995), SPH_C32(0x26ef0008), SPH_C32(0xbcd9e2af),
+	  SPH_C32(0x720d7297), SPH_C32(0xa1556097) },
+	{ SPH_C32(0x57ce0002), SPH_C32(0xe6a47375), SPH_C32(0x6c794e70),
+	  SPH_C32(0x86110211), SPH_C32(0xe6a10009), SPH_C32(0x8f6022bf),
+	  SPH_C32(0xdc03c992), SPH_C32(0x14f1a6ac) },
+	{ SPH_C32(0x97800003), SPH_C32(0xd51db365), SPH_C32(0xc277f575),
+	  SPH_C32(0x33b5c42a), SPH_C32(0x2e500009), SPH_C32(0x844dc53d),
+	  SPH_C32(0xb7f58136), SPH_C32(0x476d1b13) },
+	{ SPH_C32(0x46b00000), SPH_C32(0x978d3c50), SPH_C32(0xe788a932),
+	  SPH_C32(0x4a60f519), SPH_C32(0x663d000a), SPH_C32(0xe813a29e),
+	  SPH_C32(0x801ebf99), SPH_C32(0x7fbc2ad9) },
+	{ SPH_C32(0x86fe0001), SPH_C32(0xa434fc40), SPH_C32(0x49861237),
+	  SPH_C32(0xffc43322), SPH_C32(0xaecc000a), SPH_C32(0xe33e451c),
+	  SPH_C32(0xebe8f73d), SPH_C32(0x2c209766) },
+	{ SPH_C32(0x8e410000), SPH_C32(0x9ca0dbd2), SPH_C32(0x8c7ee196),
+	  SPH_C32(0x19fc48a6), SPH_C32(0x6e82000b), SPH_C32(0xd087850c),
+	  SPH_C32(0x45e64c38), SPH_C32(0x9984515d) },
+	{ SPH_C32(0x4e0f0001), SPH_C32(0xaf191bc2), SPH_C32(0x22705a93),
+	  SPH_C32(0xac588e9d), SPH_C32(0xa673000b), SPH_C32(0xdbaa628e),
+	  SPH_C32(0x2e10049c), SPH_C32(0xca18ece2) },
+	{ SPH_C32(0xce930002), SPH_C32(0xc86a9be3), SPH_C32(0x7e6d2c98),
+	  SPH_C32(0xc71502e8), SPH_C32(0x3791000a), SPH_C32(0xcdf0ad8a),
+	  SPH_C32(0xf9fc95d5), SPH_C32(0x6d24979f) },
+	{ SPH_C32(0x0edd0003), SPH_C32(0xfbd35bf3), SPH_C32(0xd063979d),
+	  SPH_C32(0x72b1c4d3), SPH_C32(0xff60000a), SPH_C32(0xc6dd4a08),
+	  SPH_C32(0x920add71), SPH_C32(0x3eb82a20) },
+	{ SPH_C32(0x06620002), SPH_C32(0xc3477c61), SPH_C32(0x159b643c),
+	  SPH_C32(0x9489bf57), SPH_C32(0x3f2e000b), SPH_C32(0xf5648a18),
+	  SPH_C32(0x3c046674), SPH_C32(0x8b1cec1b) },
+	{ SPH_C32(0xc62c0003), SPH_C32(0xf0febc71), SPH_C32(0xbb95df39),
+	  SPH_C32(0x212d796c), SPH_C32(0xf7df000b), SPH_C32(0xfe496d9a),
+	  SPH_C32(0x57f22ed0), SPH_C32(0xd88051a4) },
+	{ SPH_C32(0xc7140004), SPH_C32(0x3e18bc33), SPH_C32(0x03af332e),
+	  SPH_C32(0xf7b26185), SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393),
+	  SPH_C32(0xf82b0c42), SPH_C32(0x96fda75d) },
+	{ SPH_C32(0x075a0005), SPH_C32(0x0da17c23), SPH_C32(0xada1882b),
+	  SPH_C32(0x4216a7be), SPH_C32(0x1cea0008), SPH_C32(0xd9d11411),
+	  SPH_C32(0x93dd44e6), SPH_C32(0xc5611ae2) },
+	{ SPH_C32(0x0fe50004), SPH_C32(0x35355bb1), SPH_C32(0x68597b8a),
+	  SPH_C32(0xa42edc3a), SPH_C32(0xdca40009), SPH_C32(0xea68d401),
+	  SPH_C32(0x3dd3ffe3), SPH_C32(0x70c5dcd9) },
+	{ SPH_C32(0xcfab0005), SPH_C32(0x068c9ba1), SPH_C32(0xc657c08f),
+	  SPH_C32(0x118a1a01), SPH_C32(0x14550009), SPH_C32(0xe1453383),
+	  SPH_C32(0x5625b747), SPH_C32(0x23596166) },
+	{ SPH_C32(0x4f370006), SPH_C32(0x61ff1b80), SPH_C32(0x9a4ab684),
+	  SPH_C32(0x7ac79674), SPH_C32(0x85b70008), SPH_C32(0xf71ffc87),
+	  SPH_C32(0x81c9260e), SPH_C32(0x84651a1b) },
+	{ SPH_C32(0x8f790007), SPH_C32(0x5246db90), SPH_C32(0x34440d81),
+	  SPH_C32(0xcf63504f), SPH_C32(0x4d460008), SPH_C32(0xfc321b05),
+	  SPH_C32(0xea3f6eaa), SPH_C32(0xd7f9a7a4) },
+	{ SPH_C32(0x87c60006), SPH_C32(0x6ad2fc02), SPH_C32(0xf1bcfe20),
+	  SPH_C32(0x295b2bcb), SPH_C32(0x8d080009), SPH_C32(0xcf8bdb15),
+	  SPH_C32(0x4431d5af), SPH_C32(0x625d619f) },
+	{ SPH_C32(0x47880007), SPH_C32(0x596b3c12), SPH_C32(0x5fb24525),
+	  SPH_C32(0x9cffedf0), SPH_C32(0x45f90009), SPH_C32(0xc4a63c97),
+	  SPH_C32(0x2fc79d0b), SPH_C32(0x31c1dc20) },
+	{ SPH_C32(0x96b80004), SPH_C32(0x1bfbb327), SPH_C32(0x7a4d1962),
+	  SPH_C32(0xe52adcc3), SPH_C32(0x0d94000a), SPH_C32(0xa8f85b34),
+	  SPH_C32(0x182ca3a4), SPH_C32(0x0910edea) },
+	{ SPH_C32(0x56f60005), SPH_C32(0x28427337), SPH_C32(0xd443a267),
+	  SPH_C32(0x508e1af8), SPH_C32(0xc565000a), SPH_C32(0xa3d5bcb6),
+	  SPH_C32(0x73daeb00), SPH_C32(0x5a8c5055) },
+	{ SPH_C32(0x5e490004), SPH_C32(0x10d654a5), SPH_C32(0x11bb51c6),
+	  SPH_C32(0xb6b6617c), SPH_C32(0x052b000b), SPH_C32(0x906c7ca6),
+	  SPH_C32(0xddd45005), SPH_C32(0xef28966e) },
+	{ SPH_C32(0x9e070005), SPH_C32(0x236f94b5), SPH_C32(0xbfb5eac3),
+	  SPH_C32(0x0312a747), SPH_C32(0xcdda000b), SPH_C32(0x9b419b24),
+	  SPH_C32(0xb62218a1), SPH_C32(0xbcb42bd1) },
+	{ SPH_C32(0x1e9b0006), SPH_C32(0x441c1494), SPH_C32(0xe3a89cc8),
+	  SPH_C32(0x685f2b32), SPH_C32(0x5c38000a), SPH_C32(0x8d1b5420),
+	  SPH_C32(0x61ce89e8), SPH_C32(0x1b8850ac) },
+	{ SPH_C32(0xded50007), SPH_C32(0x77a5d484), SPH_C32(0x4da627cd),
+	  SPH_C32(0xddfbed09), SPH_C32(0x94c9000a), SPH_C32(0x8636b3a2),
+	  SPH_C32(0x0a38c14c), SPH_C32(0x4814ed13) },
+	{ SPH_C32(0xd66a0006), SPH_C32(0x4f31f316), SPH_C32(0x885ed46c),
+	  SPH_C32(0x3bc3968d), SPH_C32(0x5487000b), SPH_C32(0xb58f73b2),
+	  SPH_C32(0xa4367a49), SPH_C32(0xfdb02b28) },
+	{ SPH_C32(0x16240007), SPH_C32(0x7c883306), SPH_C32(0x26506f69),
+	  SPH_C32(0x8e6750b6), SPH_C32(0x9c76000b), SPH_C32(0xbea29430),
+	  SPH_C32(0xcfc032ed), SPH_C32(0xae2c9697) },
+	{ SPH_C32(0x7cb50000), SPH_C32(0xf285caee), SPH_C32(0x06589f43),
+	  SPH_C32(0x2e548f6c), SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4),
+	  SPH_C32(0x65eebc12), SPH_C32(0x39b78e87) },
+	{ SPH_C32(0xbcfb0001), SPH_C32(0xc13c0afe), SPH_C32(0xa8562446),
+	  SPH_C32(0x9bf04957), SPH_C32(0xcce2000c), SPH_C32(0x55a79b66),
+	  SPH_C32(0x0e18f4b6), SPH_C32(0x6a2b3338) },
+	{ SPH_C32(0xb4440000), SPH_C32(0xf9a82d6c), SPH_C32(0x6daed7e7),
+	  SPH_C32(0x7dc832d3), SPH_C32(0x0cac000d), SPH_C32(0x661e5b76),
+	  SPH_C32(0xa0164fb3), SPH_C32(0xdf8ff503) },
+	{ SPH_C32(0x740a0001), SPH_C32(0xca11ed7c), SPH_C32(0xc3a06ce2),
+	  SPH_C32(0xc86cf4e8), SPH_C32(0xc45d000d), SPH_C32(0x6d33bcf4),
+	  SPH_C32(0xcbe00717), SPH_C32(0x8c1348bc) },
+	{ SPH_C32(0xf4960002), SPH_C32(0xad626d5d), SPH_C32(0x9fbd1ae9),
+	  SPH_C32(0xa321789d), SPH_C32(0x55bf000c), SPH_C32(0x7b6973f0),
+	  SPH_C32(0x1c0c965e), SPH_C32(0x2b2f33c1) },
+	{ SPH_C32(0x34d80003), SPH_C32(0x9edbad4d), SPH_C32(0x31b3a1ec),
+	  SPH_C32(0x1685bea6), SPH_C32(0x9d4e000c), SPH_C32(0x70449472),
+	  SPH_C32(0x77fadefa), SPH_C32(0x78b38e7e) },
+	{ SPH_C32(0x3c670002), SPH_C32(0xa64f8adf), SPH_C32(0xf44b524d),
+	  SPH_C32(0xf0bdc522), SPH_C32(0x5d00000d), SPH_C32(0x43fd5462),
+	  SPH_C32(0xd9f465ff), SPH_C32(0xcd174845) },
+	{ SPH_C32(0xfc290003), SPH_C32(0x95f64acf), SPH_C32(0x5a45e948),
+	  SPH_C32(0x45190319), SPH_C32(0x95f1000d), SPH_C32(0x48d0b3e0),
+	  SPH_C32(0xb2022d5b), SPH_C32(0x9e8bf5fa) },
+	{ SPH_C32(0x2d190000), SPH_C32(0xd766c5fa), SPH_C32(0x7fbab50f),
+	  SPH_C32(0x3ccc322a), SPH_C32(0xdd9c000e), SPH_C32(0x248ed443),
+	  SPH_C32(0x85e913f4), SPH_C32(0xa65ac430) },
+	{ SPH_C32(0xed570001), SPH_C32(0xe4df05ea), SPH_C32(0xd1b40e0a),
+	  SPH_C32(0x8968f411), SPH_C32(0x156d000e), SPH_C32(0x2fa333c1),
+	  SPH_C32(0xee1f5b50), SPH_C32(0xf5c6798f) },
+	{ SPH_C32(0xe5e80000), SPH_C32(0xdc4b2278), SPH_C32(0x144cfdab),
+	  SPH_C32(0x6f508f95), SPH_C32(0xd523000f), SPH_C32(0x1c1af3d1),
+	  SPH_C32(0x4011e055), SPH_C32(0x4062bfb4) },
+	{ SPH_C32(0x25a60001), SPH_C32(0xeff2e268), SPH_C32(0xba4246ae),
+	  SPH_C32(0xdaf449ae), SPH_C32(0x1dd2000f), SPH_C32(0x17371453),
+	  SPH_C32(0x2be7a8f1), SPH_C32(0x13fe020b) },
+	{ SPH_C32(0xa53a0002), SPH_C32(0x88816249), SPH_C32(0xe65f30a5),
+	  SPH_C32(0xb1b9c5db), SPH_C32(0x8c30000e), SPH_C32(0x016ddb57),
+	  SPH_C32(0xfc0b39b8), SPH_C32(0xb4c27976) },
+	{ SPH_C32(0x65740003), SPH_C32(0xbb38a259), SPH_C32(0x48518ba0),
+	  SPH_C32(0x041d03e0), SPH_C32(0x44c1000e), SPH_C32(0x0a403cd5),
+	  SPH_C32(0x97fd711c), SPH_C32(0xe75ec4c9) },
+	{ SPH_C32(0x6dcb0002), SPH_C32(0x83ac85cb), SPH_C32(0x8da97801),
+	  SPH_C32(0xe2257864), SPH_C32(0x848f000f), SPH_C32(0x39f9fcc5),
+	  SPH_C32(0x39f3ca19), SPH_C32(0x52fa02f2) },
+	{ SPH_C32(0xad850003), SPH_C32(0xb01545db), SPH_C32(0x23a7c304),
+	  SPH_C32(0x5781be5f), SPH_C32(0x4c7e000f), SPH_C32(0x32d41b47),
+	  SPH_C32(0x520582bd), SPH_C32(0x0166bf4d) },
+	{ SPH_C32(0xacbd0004), SPH_C32(0x7ef34599), SPH_C32(0x9b9d2f13),
+	  SPH_C32(0x811ea6b6), SPH_C32(0x6fba000c), SPH_C32(0x1e61854e),
+	  SPH_C32(0xfddca02f), SPH_C32(0x4f1b49b4) },
+	{ SPH_C32(0x6cf30005), SPH_C32(0x4d4a8589), SPH_C32(0x35939416),
+	  SPH_C32(0x34ba608d), SPH_C32(0xa74b000c), SPH_C32(0x154c62cc),
+	  SPH_C32(0x962ae88b), SPH_C32(0x1c87f40b) },
+	{ SPH_C32(0x644c0004), SPH_C32(0x75dea21b), SPH_C32(0xf06b67b7),
+	  SPH_C32(0xd2821b09), SPH_C32(0x6705000d), SPH_C32(0x26f5a2dc),
+	  SPH_C32(0x3824538e), SPH_C32(0xa9233230) },
+	{ SPH_C32(0xa4020005), SPH_C32(0x4667620b), SPH_C32(0x5e65dcb2),
+	  SPH_C32(0x6726dd32), SPH_C32(0xaff4000d), SPH_C32(0x2dd8455e),
+	  SPH_C32(0x53d21b2a), SPH_C32(0xfabf8f8f) },
+	{ SPH_C32(0x249e0006), SPH_C32(0x2114e22a), SPH_C32(0x0278aab9),
+	  SPH_C32(0x0c6b5147), SPH_C32(0x3e16000c), SPH_C32(0x3b828a5a),
+	  SPH_C32(0x843e8a63), SPH_C32(0x5d83f4f2) },
+	{ SPH_C32(0xe4d00007), SPH_C32(0x12ad223a), SPH_C32(0xac7611bc),
+	  SPH_C32(0xb9cf977c), SPH_C32(0xf6e7000c), SPH_C32(0x30af6dd8),
+	  SPH_C32(0xefc8c2c7), SPH_C32(0x0e1f494d) },
+	{ SPH_C32(0xec6f0006), SPH_C32(0x2a3905a8), SPH_C32(0x698ee21d),
+	  SPH_C32(0x5ff7ecf8), SPH_C32(0x36a9000d), SPH_C32(0x0316adc8),
+	  SPH_C32(0x41c679c2), SPH_C32(0xbbbb8f76) },
+	{ SPH_C32(0x2c210007), SPH_C32(0x1980c5b8), SPH_C32(0xc7805918),
+	  SPH_C32(0xea532ac3), SPH_C32(0xfe58000d), SPH_C32(0x083b4a4a),
+	  SPH_C32(0x2a303166), SPH_C32(0xe82732c9) },
+	{ SPH_C32(0xfd110004), SPH_C32(0x5b104a8d), SPH_C32(0xe27f055f),
+	  SPH_C32(0x93861bf0), SPH_C32(0xb635000e), SPH_C32(0x64652de9),
+	  SPH_C32(0x1ddb0fc9), SPH_C32(0xd0f60303) },
+	{ SPH_C32(0x3d5f0005), SPH_C32(0x68a98a9d), SPH_C32(0x4c71be5a),
+	  SPH_C32(0x2622ddcb), SPH_C32(0x7ec4000e), SPH_C32(0x6f48ca6b),
+	  SPH_C32(0x762d476d), SPH_C32(0x836abebc) },
+	{ SPH_C32(0x35e00004), SPH_C32(0x503dad0f), SPH_C32(0x89894dfb),
+	  SPH_C32(0xc01aa64f), SPH_C32(0xbe8a000f), SPH_C32(0x5cf10a7b),
+	  SPH_C32(0xd823fc68), SPH_C32(0x36ce7887) },
+	{ SPH_C32(0xf5ae0005), SPH_C32(0x63846d1f), SPH_C32(0x2787f6fe),
+	  SPH_C32(0x75be6074), SPH_C32(0x767b000f), SPH_C32(0x57dcedf9),
+	  SPH_C32(0xb3d5b4cc), SPH_C32(0x6552c538) },
+	{ SPH_C32(0x75320006), SPH_C32(0x04f7ed3e), SPH_C32(0x7b9a80f5),
+	  SPH_C32(0x1ef3ec01), SPH_C32(0xe799000e), SPH_C32(0x418622fd),
+	  SPH_C32(0x64392585), SPH_C32(0xc26ebe45) },
+	{ SPH_C32(0xb57c0007), SPH_C32(0x374e2d2e), SPH_C32(0xd5943bf0),
+	  SPH_C32(0xab572a3a), SPH_C32(0x2f68000e), SPH_C32(0x4aabc57f),
+	  SPH_C32(0x0fcf6d21), SPH_C32(0x91f203fa) },
+	{ SPH_C32(0xbdc30006), SPH_C32(0x0fda0abc), SPH_C32(0x106cc851),
+	  SPH_C32(0x4d6f51be), SPH_C32(0xef26000f), SPH_C32(0x7912056f),
+	  SPH_C32(0xa1c1d624), SPH_C32(0x2456c5c1) },
+	{ SPH_C32(0x7d8d0007), SPH_C32(0x3c63caac), SPH_C32(0xbe627354),
+	  SPH_C32(0xf8cb9785), SPH_C32(0x27d7000f), SPH_C32(0x723fe2ed),
+	  SPH_C32(0xca379e80), SPH_C32(0x77ca787e) },
+	{ SPH_C32(0xbfb20008), SPH_C32(0x92170a39), SPH_C32(0x6019107f),
+	  SPH_C32(0xe051606e), SPH_C32(0xa8ae0008), SPH_C32(0x2079397d),
+	  SPH_C32(0xfe739301), SPH_C32(0xb8a92831) },
+	{ SPH_C32(0x7ffc0009), SPH_C32(0xa1aeca29), SPH_C32(0xce17ab7a),
+	  SPH_C32(0x55f5a655), SPH_C32(0x605f0008), SPH_C32(0x2b54deff),
+	  SPH_C32(0x9585dba5), SPH_C32(0xeb35958e) },
+	{ SPH_C32(0x77430008), SPH_C32(0x993aedbb), SPH_C32(0x0bef58db),
+	  SPH_C32(0xb3cdddd1), SPH_C32(0xa0110009), SPH_C32(0x18ed1eef),
+	  SPH_C32(0x3b8b60a0), SPH_C32(0x5e9153b5) },
+	{ SPH_C32(0xb70d0009), SPH_C32(0xaa832dab), SPH_C32(0xa5e1e3de),
+	  SPH_C32(0x06691bea), SPH_C32(0x68e00009), SPH_C32(0x13c0f96d),
+	  SPH_C32(0x507d2804), SPH_C32(0x0d0dee0a) },
+	{ SPH_C32(0x3791000a), SPH_C32(0xcdf0ad8a), SPH_C32(0xf9fc95d5),
+	  SPH_C32(0x6d24979f), SPH_C32(0xf9020008), SPH_C32(0x059a3669),
+	  SPH_C32(0x8791b94d), SPH_C32(0xaa319577) },
+	{ SPH_C32(0xf7df000b), SPH_C32(0xfe496d9a), SPH_C32(0x57f22ed0),
+	  SPH_C32(0xd88051a4), SPH_C32(0x31f30008), SPH_C32(0x0eb7d1eb),
+	  SPH_C32(0xec67f1e9), SPH_C32(0xf9ad28c8) },
+	{ SPH_C32(0xff60000a), SPH_C32(0xc6dd4a08), SPH_C32(0x920add71),
+	  SPH_C32(0x3eb82a20), SPH_C32(0xf1bd0009), SPH_C32(0x3d0e11fb),
+	  SPH_C32(0x42694aec), SPH_C32(0x4c09eef3) },
+	{ SPH_C32(0x3f2e000b), SPH_C32(0xf5648a18), SPH_C32(0x3c046674),
+	  SPH_C32(0x8b1cec1b), SPH_C32(0x394c0009), SPH_C32(0x3623f679),
+	  SPH_C32(0x299f0248), SPH_C32(0x1f95534c) },
+	{ SPH_C32(0xee1e0008), SPH_C32(0xb7f4052d), SPH_C32(0x19fb3a33),
+	  SPH_C32(0xf2c9dd28), SPH_C32(0x7121000a), SPH_C32(0x5a7d91da),
+	  SPH_C32(0x1e743ce7), SPH_C32(0x27446286) },
+	{ SPH_C32(0x2e500009), SPH_C32(0x844dc53d), SPH_C32(0xb7f58136),
+	  SPH_C32(0x476d1b13), SPH_C32(0xb9d0000a), SPH_C32(0x51507658),
+	  SPH_C32(0x75827443), SPH_C32(0x74d8df39) },
+	{ SPH_C32(0x26ef0008), SPH_C32(0xbcd9e2af), SPH_C32(0x720d7297),
+	  SPH_C32(0xa1556097), SPH_C32(0x799e000b), SPH_C32(0x62e9b648),
+	  SPH_C32(0xdb8ccf46), SPH_C32(0xc17c1902) },
+	{ SPH_C32(0xe6a10009), SPH_C32(0x8f6022bf), SPH_C32(0xdc03c992),
+	  SPH_C32(0x14f1a6ac), SPH_C32(0xb16f000b), SPH_C32(0x69c451ca),
+	  SPH_C32(0xb07a87e2), SPH_C32(0x92e0a4bd) },
+	{ SPH_C32(0x663d000a), SPH_C32(0xe813a29e), SPH_C32(0x801ebf99),
+	  SPH_C32(0x7fbc2ad9), SPH_C32(0x208d000a), SPH_C32(0x7f9e9ece),
+	  SPH_C32(0x679616ab), SPH_C32(0x35dcdfc0) },
+	{ SPH_C32(0xa673000b), SPH_C32(0xdbaa628e), SPH_C32(0x2e10049c),
+	  SPH_C32(0xca18ece2), SPH_C32(0xe87c000a), SPH_C32(0x74b3794c),
+	  SPH_C32(0x0c605e0f), SPH_C32(0x6640627f) },
+	{ SPH_C32(0xaecc000a), SPH_C32(0xe33e451c), SPH_C32(0xebe8f73d),
+	  SPH_C32(0x2c209766), SPH_C32(0x2832000b), SPH_C32(0x470ab95c),
+	  SPH_C32(0xa26ee50a), SPH_C32(0xd3e4a444) },
+	{ SPH_C32(0x6e82000b), SPH_C32(0xd087850c), SPH_C32(0x45e64c38),
+	  SPH_C32(0x9984515d), SPH_C32(0xe0c3000b), SPH_C32(0x4c275ede),
+	  SPH_C32(0xc998adae), SPH_C32(0x807819fb) },
+	{ SPH_C32(0x6fba000c), SPH_C32(0x1e61854e), SPH_C32(0xfddca02f),
+	  SPH_C32(0x4f1b49b4), SPH_C32(0xc3070008), SPH_C32(0x6092c0d7),
+	  SPH_C32(0x66418f3c), SPH_C32(0xce05ef02) },
+	{ SPH_C32(0xaff4000d), SPH_C32(0x2dd8455e), SPH_C32(0x53d21b2a),
+	  SPH_C32(0xfabf8f8f), SPH_C32(0x0bf60008), SPH_C32(0x6bbf2755),
+	  SPH_C32(0x0db7c798), SPH_C32(0x9d9952bd) },
+	{ SPH_C32(0xa74b000c), SPH_C32(0x154c62cc), SPH_C32(0x962ae88b),
+	  SPH_C32(0x1c87f40b), SPH_C32(0xcbb80009), SPH_C32(0x5806e745),
+	  SPH_C32(0xa3b97c9d), SPH_C32(0x283d9486) },
+	{ SPH_C32(0x6705000d), SPH_C32(0x26f5a2dc), SPH_C32(0x3824538e),
+	  SPH_C32(0xa9233230), SPH_C32(0x03490009), SPH_C32(0x532b00c7),
+	  SPH_C32(0xc84f3439), SPH_C32(0x7ba12939) },
+	{ SPH_C32(0xe799000e), SPH_C32(0x418622fd), SPH_C32(0x64392585),
+	  SPH_C32(0xc26ebe45), SPH_C32(0x92ab0008), SPH_C32(0x4571cfc3),
+	  SPH_C32(0x1fa3a570), SPH_C32(0xdc9d5244) },
+	{ SPH_C32(0x27d7000f), SPH_C32(0x723fe2ed), SPH_C32(0xca379e80),
+	  SPH_C32(0x77ca787e), SPH_C32(0x5a5a0008), SPH_C32(0x4e5c2841),
+	  SPH_C32(0x7455edd4), SPH_C32(0x8f01effb) },
+	{ SPH_C32(0x2f68000e), SPH_C32(0x4aabc57f), SPH_C32(0x0fcf6d21),
+	  SPH_C32(0x91f203fa), SPH_C32(0x9a140009), SPH_C32(0x7de5e851),
+	  SPH_C32(0xda5b56d1), SPH_C32(0x3aa529c0) },
+	{ SPH_C32(0xef26000f), SPH_C32(0x7912056f), SPH_C32(0xa1c1d624),
+	  SPH_C32(0x2456c5c1), SPH_C32(0x52e50009), SPH_C32(0x76c80fd3),
+	  SPH_C32(0xb1ad1e75), SPH_C32(0x6939947f) },
+	{ SPH_C32(0x3e16000c), SPH_C32(0x3b828a5a), SPH_C32(0x843e8a63),
+	  SPH_C32(0x5d83f4f2), SPH_C32(0x1a88000a), SPH_C32(0x1a966870),
+	  SPH_C32(0x864620da), SPH_C32(0x51e8a5b5) },
+	{ SPH_C32(0xfe58000d), SPH_C32(0x083b4a4a), SPH_C32(0x2a303166),
+	  SPH_C32(0xe82732c9), SPH_C32(0xd279000a), SPH_C32(0x11bb8ff2),
+	  SPH_C32(0xedb0687e), SPH_C32(0x0274180a) },
+	{ SPH_C32(0xf6e7000c), SPH_C32(0x30af6dd8), SPH_C32(0xefc8c2c7),
+	  SPH_C32(0x0e1f494d), SPH_C32(0x1237000b), SPH_C32(0x22024fe2),
+	  SPH_C32(0x43bed37b), SPH_C32(0xb7d0de31) },
+	{ SPH_C32(0x36a9000d), SPH_C32(0x0316adc8), SPH_C32(0x41c679c2),
+	  SPH_C32(0xbbbb8f76), SPH_C32(0xdac6000b), SPH_C32(0x292fa860),
+	  SPH_C32(0x28489bdf), SPH_C32(0xe44c638e) },
+	{ SPH_C32(0xb635000e), SPH_C32(0x64652de9), SPH_C32(0x1ddb0fc9),
+	  SPH_C32(0xd0f60303), SPH_C32(0x4b24000a), SPH_C32(0x3f756764),
+	  SPH_C32(0xffa40a96), SPH_C32(0x437018f3) },
+	{ SPH_C32(0x767b000f), SPH_C32(0x57dcedf9), SPH_C32(0xb3d5b4cc),
+	  SPH_C32(0x6552c538), SPH_C32(0x83d5000a), SPH_C32(0x345880e6),
+	  SPH_C32(0x94524232), SPH_C32(0x10eca54c) },
+	{ SPH_C32(0x7ec4000e), SPH_C32(0x6f48ca6b), SPH_C32(0x762d476d),
+	  SPH_C32(0x836abebc), SPH_C32(0x439b000b), SPH_C32(0x07e140f6),
+	  SPH_C32(0x3a5cf937), SPH_C32(0xa5486377) },
+	{ SPH_C32(0xbe8a000f), SPH_C32(0x5cf10a7b), SPH_C32(0xd823fc68),
+	  SPH_C32(0x36ce7887), SPH_C32(0x8b6a000b), SPH_C32(0x0ccca774),
+	  SPH_C32(0x51aab193), SPH_C32(0xf6d4dec8) },
+	{ SPH_C32(0xd41b0008), SPH_C32(0xd2fcf393), SPH_C32(0xf82b0c42),
+	  SPH_C32(0x96fda75d), SPH_C32(0x130f000c), SPH_C32(0xece44fa0),
+	  SPH_C32(0xfb843f6c), SPH_C32(0x614fc6d8) },
+	{ SPH_C32(0x14550009), SPH_C32(0xe1453383), SPH_C32(0x5625b747),
+	  SPH_C32(0x23596166), SPH_C32(0xdbfe000c), SPH_C32(0xe7c9a822),
+	  SPH_C32(0x907277c8), SPH_C32(0x32d37b67) },
+	{ SPH_C32(0x1cea0008), SPH_C32(0xd9d11411), SPH_C32(0x93dd44e6),
+	  SPH_C32(0xc5611ae2), SPH_C32(0x1bb0000d), SPH_C32(0xd4706832),
+	  SPH_C32(0x3e7ccccd), SPH_C32(0x8777bd5c) },
+	{ SPH_C32(0xdca40009), SPH_C32(0xea68d401), SPH_C32(0x3dd3ffe3),
+	  SPH_C32(0x70c5dcd9), SPH_C32(0xd341000d), SPH_C32(0xdf5d8fb0),
+	  SPH_C32(0x558a8469), SPH_C32(0xd4eb00e3) },
+	{ SPH_C32(0x5c38000a), SPH_C32(0x8d1b5420), SPH_C32(0x61ce89e8),
+	  SPH_C32(0x1b8850ac), SPH_C32(0x42a3000c), SPH_C32(0xc90740b4),
+	  SPH_C32(0x82661520), SPH_C32(0x73d77b9e) },
+	{ SPH_C32(0x9c76000b), SPH_C32(0xbea29430), SPH_C32(0xcfc032ed),
+	  SPH_C32(0xae2c9697), SPH_C32(0x8a52000c), SPH_C32(0xc22aa736),
+	  SPH_C32(0xe9905d84), SPH_C32(0x204bc621) },
+	{ SPH_C32(0x94c9000a), SPH_C32(0x8636b3a2), SPH_C32(0x0a38c14c),
+	  SPH_C32(0x4814ed13), SPH_C32(0x4a1c000d), SPH_C32(0xf1936726),
+	  SPH_C32(0x479ee681), SPH_C32(0x95ef001a) },
+	{ SPH_C32(0x5487000b), SPH_C32(0xb58f73b2), SPH_C32(0xa4367a49),
+	  SPH_C32(0xfdb02b28), SPH_C32(0x82ed000d), SPH_C32(0xfabe80a4),
+	  SPH_C32(0x2c68ae25), SPH_C32(0xc673bda5) },
+	{ SPH_C32(0x85b70008), SPH_C32(0xf71ffc87), SPH_C32(0x81c9260e),
+	  SPH_C32(0x84651a1b), SPH_C32(0xca80000e), SPH_C32(0x96e0e707),
+	  SPH_C32(0x1b83908a), SPH_C32(0xfea28c6f) },
+	{ SPH_C32(0x45f90009), SPH_C32(0xc4a63c97), SPH_C32(0x2fc79d0b),
+	  SPH_C32(0x31c1dc20), SPH_C32(0x0271000e), SPH_C32(0x9dcd0085),
+	  SPH_C32(0x7075d82e), SPH_C32(0xad3e31d0) },
+	{ SPH_C32(0x4d460008), SPH_C32(0xfc321b05), SPH_C32(0xea3f6eaa),
+	  SPH_C32(0xd7f9a7a4), SPH_C32(0xc23f000f), SPH_C32(0xae74c095),
+	  SPH_C32(0xde7b632b), SPH_C32(0x189af7eb) },
+	{ SPH_C32(0x8d080009), SPH_C32(0xcf8bdb15), SPH_C32(0x4431d5af),
+	  SPH_C32(0x625d619f), SPH_C32(0x0ace000f), SPH_C32(0xa5592717),
+	  SPH_C32(0xb58d2b8f), SPH_C32(0x4b064a54) },
+	{ SPH_C32(0x0d94000a), SPH_C32(0xa8f85b34), SPH_C32(0x182ca3a4),
+	  SPH_C32(0x0910edea), SPH_C32(0x9b2c000e), SPH_C32(0xb303e813),
+	  SPH_C32(0x6261bac6), SPH_C32(0xec3a3129) },
+	{ SPH_C32(0xcdda000b), SPH_C32(0x9b419b24), SPH_C32(0xb62218a1),
+	  SPH_C32(0xbcb42bd1), SPH_C32(0x53dd000e), SPH_C32(0xb82e0f91),
+	  SPH_C32(0x0997f262), SPH_C32(0xbfa68c96) },
+	{ SPH_C32(0xc565000a), SPH_C32(0xa3d5bcb6), SPH_C32(0x73daeb00),
+	  SPH_C32(0x5a8c5055), SPH_C32(0x9393000f), SPH_C32(0x8b97cf81),
+	  SPH_C32(0xa7994967), SPH_C32(0x0a024aad) },
+	{ SPH_C32(0x052b000b), SPH_C32(0x906c7ca6), SPH_C32(0xddd45005),
+	  SPH_C32(0xef28966e), SPH_C32(0x5b62000f), SPH_C32(0x80ba2803),
+	  SPH_C32(0xcc6f01c3), SPH_C32(0x599ef712) },
+	{ SPH_C32(0x0413000c), SPH_C32(0x5e8a7ce4), SPH_C32(0x65eebc12),
+	  SPH_C32(0x39b78e87), SPH_C32(0x78a6000c), SPH_C32(0xac0fb60a),
+	  SPH_C32(0x63b62351), SPH_C32(0x17e301eb) },
+	{ SPH_C32(0xc45d000d), SPH_C32(0x6d33bcf4), SPH_C32(0xcbe00717),
+	  SPH_C32(0x8c1348bc), SPH_C32(0xb057000c), SPH_C32(0xa7225188),
+	  SPH_C32(0x08406bf5), SPH_C32(0x447fbc54) },
+	{ SPH_C32(0xcce2000c), SPH_C32(0x55a79b66), SPH_C32(0x0e18f4b6),
+	  SPH_C32(0x6a2b3338), SPH_C32(0x7019000d), SPH_C32(0x949b9198),
+	  SPH_C32(0xa64ed0f0), SPH_C32(0xf1db7a6f) },
+	{ SPH_C32(0x0cac000d), SPH_C32(0x661e5b76), SPH_C32(0xa0164fb3),
+	  SPH_C32(0xdf8ff503), SPH_C32(0xb8e8000d), SPH_C32(0x9fb6761a),
+	  SPH_C32(0xcdb89854), SPH_C32(0xa247c7d0) },
+	{ SPH_C32(0x8c30000e), SPH_C32(0x016ddb57), SPH_C32(0xfc0b39b8),
+	  SPH_C32(0xb4c27976), SPH_C32(0x290a000c), SPH_C32(0x89ecb91e),
+	  SPH_C32(0x1a54091d), SPH_C32(0x057bbcad) },
+	{ SPH_C32(0x4c7e000f), SPH_C32(0x32d41b47), SPH_C32(0x520582bd),
+	  SPH_C32(0x0166bf4d), SPH_C32(0xe1fb000c), SPH_C32(0x82c15e9c),
+	  SPH_C32(0x71a241b9), SPH_C32(0x56e70112) },
+	{ SPH_C32(0x44c1000e), SPH_C32(0x0a403cd5), SPH_C32(0x97fd711c),
+	  SPH_C32(0xe75ec4c9), SPH_C32(0x21b5000d), SPH_C32(0xb1789e8c),
+	  SPH_C32(0xdfacfabc), SPH_C32(0xe343c729) },
+	{ SPH_C32(0x848f000f), SPH_C32(0x39f9fcc5), SPH_C32(0x39f3ca19),
+	  SPH_C32(0x52fa02f2), SPH_C32(0xe944000d), SPH_C32(0xba55790e),
+	  SPH_C32(0xb45ab218), SPH_C32(0xb0df7a96) },
+	{ SPH_C32(0x55bf000c), SPH_C32(0x7b6973f0), SPH_C32(0x1c0c965e),
+	  SPH_C32(0x2b2f33c1), SPH_C32(0xa129000e), SPH_C32(0xd60b1ead),
+	  SPH_C32(0x83b18cb7), SPH_C32(0x880e4b5c) },
+	{ SPH_C32(0x95f1000d), SPH_C32(0x48d0b3e0), SPH_C32(0xb2022d5b),
+	  SPH_C32(0x9e8bf5fa), SPH_C32(0x69d8000e), SPH_C32(0xdd26f92f),
+	  SPH_C32(0xe847c413), SPH_C32(0xdb92f6e3) },
+	{ SPH_C32(0x9d4e000c), SPH_C32(0x70449472), SPH_C32(0x77fadefa),
+	  SPH_C32(0x78b38e7e), SPH_C32(0xa996000f), SPH_C32(0xee9f393f),
+	  SPH_C32(0x46497f16), SPH_C32(0x6e3630d8) },
+	{ SPH_C32(0x5d00000d), SPH_C32(0x43fd5462), SPH_C32(0xd9f465ff),
+	  SPH_C32(0xcd174845), SPH_C32(0x6167000f), SPH_C32(0xe5b2debd),
+	  SPH_C32(0x2dbf37b2), SPH_C32(0x3daa8d67) },
+	{ SPH_C32(0xdd9c000e), SPH_C32(0x248ed443), SPH_C32(0x85e913f4),
+	  SPH_C32(0xa65ac430), SPH_C32(0xf085000e), SPH_C32(0xf3e811b9),
+	  SPH_C32(0xfa53a6fb), SPH_C32(0x9a96f61a) },
+	{ SPH_C32(0x1dd2000f), SPH_C32(0x17371453), SPH_C32(0x2be7a8f1),
+	  SPH_C32(0x13fe020b), SPH_C32(0x3874000e), SPH_C32(0xf8c5f63b),
+	  SPH_C32(0x91a5ee5f), SPH_C32(0xc90a4ba5) },
+	{ SPH_C32(0x156d000e), SPH_C32(0x2fa333c1), SPH_C32(0xee1f5b50),
+	  SPH_C32(0xf5c6798f), SPH_C32(0xf83a000f), SPH_C32(0xcb7c362b),
+	  SPH_C32(0x3fab555a), SPH_C32(0x7cae8d9e) },
+	{ SPH_C32(0xd523000f), SPH_C32(0x1c1af3d1), SPH_C32(0x4011e055),
+	  SPH_C32(0x4062bfb4), SPH_C32(0x30cb000f), SPH_C32(0xc051d1a9),
+	  SPH_C32(0x545d1dfe), SPH_C32(0x2f323021) }
+};
+
+#define INPUT_SMALL   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T256_0[acc][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		acc = buf[1]; \
+		rp = &T256_8[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[2]; \
+		rp = &T256_16[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		acc = buf[3]; \
+		rp = &T256_24[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 1
+
+/* Note: this table lists bits within each byte from least
+   siginificant to most significant. */
+static const sph_u32 T512[64][16] = {
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) }
+};
+
+#define INPUT_BIG   do { \
+		const sph_u32 *tp = &T512[0][0]; \
+		unsigned u, v; \
+		m0 = 0; \
+		m1 = 0; \
+		m2 = 0; \
+		m3 = 0; \
+		m4 = 0; \
+		m5 = 0; \
+		m6 = 0; \
+		m7 = 0; \
+		m8 = 0; \
+		m9 = 0; \
+		mA = 0; \
+		mB = 0; \
+		mC = 0; \
+		mD = 0; \
+		mE = 0; \
+		mF = 0; \
+		for (u = 0; u < 8; u ++) { \
+			unsigned db = buf[u]; \
+			for (v = 0; v < 8; v ++, db >>= 1) { \
+				sph_u32 dm = SPH_T32(-(sph_u32)(db & 1)); \
+				m0 ^= dm & *tp ++; \
+				m1 ^= dm & *tp ++; \
+				m2 ^= dm & *tp ++; \
+				m3 ^= dm & *tp ++; \
+				m4 ^= dm & *tp ++; \
+				m5 ^= dm & *tp ++; \
+				m6 ^= dm & *tp ++; \
+				m7 ^= dm & *tp ++; \
+				m8 ^= dm & *tp ++; \
+				m9 ^= dm & *tp ++; \
+				mA ^= dm & *tp ++; \
+				mB ^= dm & *tp ++; \
+				mC ^= dm & *tp ++; \
+				mD ^= dm & *tp ++; \
+				mE ^= dm & *tp ++; \
+				mF ^= dm & *tp ++; \
+			} \
+		} \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 2
+
+static const sph_u32 T512_0[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) }
+};
+
+static const sph_u32 T512_2[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) }
+};
+
+static const sph_u32 T512_4[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) }
+};
+
+static const sph_u32 T512_6[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) }
+};
+
+static const sph_u32 T512_8[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) }
+};
+
+static const sph_u32 T512_10[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) }
+};
+
+static const sph_u32 T512_12[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) }
+};
+
+static const sph_u32 T512_14[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0x50ff0004), SPH_C32(0x45744000), SPH_C32(0x3dfb0000),
+	  SPH_C32(0x19e60000), SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d),
+	  SPH_C32(0xe1a8cc96), SPH_C32(0x7b1bd6b9), SPH_C32(0xf6800005),
+	  SPH_C32(0x3443c000), SPH_C32(0x24070000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae), SPH_C32(0xcdc58b19),
+	  SPH_C32(0xd795ba31) }
+};
+
+static const sph_u32 T512_16[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) }
+};
+
+static const sph_u32 T512_18[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) }
+};
+
+static const sph_u32 T512_20[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0xfd250000), SPH_C32(0xb3c41100), SPH_C32(0xcef00000),
+	  SPH_C32(0xcef90000), SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493),
+	  SPH_C32(0x7098b0a6), SPH_C32(0x1af21fe1), SPH_C32(0x45180000),
+	  SPH_C32(0xa5b51700), SPH_C32(0xf96a0000), SPH_C32(0x3b480000),
+	  SPH_C32(0x1ecc142c), SPH_C32(0x231395d6), SPH_C32(0x16bca6b0),
+	  SPH_C32(0xdf33f4df) }
+};
+
+static const sph_u32 T512_22[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) }
+};
+
+static const sph_u32 T512_24[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) }
+};
+
+static const sph_u32 T512_26[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) }
+};
+
+static const sph_u32 T512_28[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) }
+};
+
+static const sph_u32 T512_30[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) }
+};
+
+static const sph_u32 T512_32[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) }
+};
+
+static const sph_u32 T512_34[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xb2060000), SPH_C32(0xc5690000), SPH_C32(0x28031200),
+	  SPH_C32(0x74670000), SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8),
+	  SPH_C32(0x33d1dfec), SPH_C32(0x094e3198), SPH_C32(0xac480000),
+	  SPH_C32(0x1ba60000), SPH_C32(0x45fb1380), SPH_C32(0x03430000),
+	  SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6), SPH_C32(0xfe72c7fe),
+	  SPH_C32(0x91e478f6) }
+};
+
+static const sph_u32 T512_36[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) }
+};
+
+static const sph_u32 T512_38[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) }
+};
+
+static const sph_u32 T512_40[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) }
+};
+
+static const sph_u32 T512_42[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) }
+};
+
+static const sph_u32 T512_44[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0xa2d60000), SPH_C32(0xa6760000), SPH_C32(0xc9440014),
+	  SPH_C32(0xeba30000), SPH_C32(0xccec2e7b), SPH_C32(0x3018c499),
+	  SPH_C32(0x03490afa), SPH_C32(0x9b6ef888), SPH_C32(0xa53b0000),
+	  SPH_C32(0x14260000), SPH_C32(0x4e30001e), SPH_C32(0x7cae0000),
+	  SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d), SPH_C32(0xf73168d8),
+	  SPH_C32(0x0b1b4946) }
+};
+
+static const sph_u32 T512_46[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) }
+};
+
+static const sph_u32 T512_48[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) }
+};
+
+static const sph_u32 T512_50[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) }
+};
+
+static const sph_u32 T512_52[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) }
+};
+
+static const sph_u32 T512_54[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) }
+};
+
+static const sph_u32 T512_56[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) }
+};
+
+static const sph_u32 T512_58[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) }
+};
+
+static const sph_u32 T512_60[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) }
+};
+
+static const sph_u32 T512_62[4][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0xabe70000), SPH_C32(0x9e0d0000), SPH_C32(0xaf270000),
+	  SPH_C32(0x3d180005), SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695),
+	  SPH_C32(0xb5c347eb), SPH_C32(0x3c5dfffe), SPH_C32(0x033d0000),
+	  SPH_C32(0x08b30000), SPH_C32(0xf33a0000), SPH_C32(0x3ac20007),
+	  SPH_C32(0x51298a50), SPH_C32(0x6b6e661f), SPH_C32(0x0ea5cfe3),
+	  SPH_C32(0xe6da7ffe) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 6][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		rp = &T512_2[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_4[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_6[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[1]; \
+		rp = &T512_8[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_10[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_12[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_14[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[2]; \
+		rp = &T512_16[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_18[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_20[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_22[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[3]; \
+		rp = &T512_24[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_26[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_28[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_30[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[4]; \
+		rp = &T512_32[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_34[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_36[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_38[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[5]; \
+		rp = &T512_40[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_42[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_44[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_46[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[6]; \
+		rp = &T512_48[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_50[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_52[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_54[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[7]; \
+		rp = &T512_56[acc >> 6][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_58[(acc >> 4) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_60[(acc >> 2) & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_62[acc & 0x03][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 3
+
+static const sph_u32 T512_0[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) }
+};
+
+static const sph_u32 T512_3[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x40726000), SPH_C32(0x53040000), SPH_C32(0xa4f10000),
+	  SPH_C32(0x50a40000), SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999),
+	  SPH_C32(0x2c1926bd), SPH_C32(0xb4951347), SPH_C32(0xbfdc0c00),
+	  SPH_C32(0x786a0000), SPH_C32(0x66960000), SPH_C32(0x16e60000),
+	  SPH_C32(0x2af76720), SPH_C32(0x19b270bd), SPH_C32(0x41c239e5),
+	  SPH_C32(0xa4ee2836) },
+	{ SPH_C32(0x774f4800), SPH_C32(0x22540000), SPH_C32(0x31110000),
+	  SPH_C32(0x5ab00000), SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8),
+	  SPH_C32(0x69744ba2), SPH_C32(0x893fd19d), SPH_C32(0xab863000),
+	  SPH_C32(0xc1830000), SPH_C32(0x07b10000), SPH_C32(0xe7870000),
+	  SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5), SPH_C32(0x066b5ec5),
+	  SPH_C32(0x45600cf3) },
+	{ SPH_C32(0x63157400), SPH_C32(0x9bbd0000), SPH_C32(0x50360000),
+	  SPH_C32(0xabd10000), SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0),
+	  SPH_C32(0x2edd2c82), SPH_C32(0x68b1f558), SPH_C32(0x88e12400),
+	  SPH_C32(0x093a0000), SPH_C32(0xf3760000), SPH_C32(0x1cf20000),
+	  SPH_C32(0x975b7e29), SPH_C32(0x515de88c), SPH_C32(0x04af54fa),
+	  SPH_C32(0x9944eaec) }
+};
+
+static const sph_u32 T512_6[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0x5b3c0210), SPH_C32(0x36b10000), SPH_C32(0x0b6c0000),
+	  SPH_C32(0x35e70000), SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc),
+	  SPH_C32(0x7d22556c), SPH_C32(0x619b0a52), SPH_C32(0x95db0120),
+	  SPH_C32(0x761b0000), SPH_C32(0x6b9d0000), SPH_C32(0xaec30000),
+	  SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51), SPH_C32(0x055183a1),
+	  SPH_C32(0x0c35eb81) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x7d5c0050), SPH_C32(0xeb690000), SPH_C32(0x79460000),
+	  SPH_C32(0x7ae10000), SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912),
+	  SPH_C32(0x4ba936b9), SPH_C32(0x6dbdf830), SPH_C32(0x7ad00350),
+	  SPH_C32(0x4ce60000), SPH_C32(0x36330000), SPH_C32(0xc78a0000),
+	  SPH_C32(0xf5ba13e7), SPH_C32(0xbbe659a8), SPH_C32(0x634589f0),
+	  SPH_C32(0x9e7ab68b) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) },
+	{ SPH_C32(0x92570220), SPH_C32(0xd1940000), SPH_C32(0x24e80000),
+	  SPH_C32(0x13a80000), SPH_C32(0x073278c0), SPH_C32(0x12c7bceb),
+	  SPH_C32(0x2dbd3ce8), SPH_C32(0xfff2a53a), SPH_C32(0xb3bb0360),
+	  SPH_C32(0xabc30000), SPH_C32(0x19b70000), SPH_C32(0xe1c50000),
+	  SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f), SPH_C32(0x33dae074),
+	  SPH_C32(0x001319e3) }
+};
+
+static const sph_u32 T512_9[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0x9fc30180), SPH_C32(0x6c280000), SPH_C32(0xe7690000),
+	  SPH_C32(0xe0360000), SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966),
+	  SPH_C32(0x453b7806), SPH_C32(0xaebf667a), SPH_C32(0x405b0030),
+	  SPH_C32(0x9a540000), SPH_C32(0x42670000), SPH_C32(0x5fb10000),
+	  SPH_C32(0xd6c06187), SPH_C32(0x5d81863c), SPH_C32(0x87922fef),
+	  SPH_C32(0x79e0422c) },
+	{ SPH_C32(0x1ceb0120), SPH_C32(0x0b6a0000), SPH_C32(0x067e0000),
+	  SPH_C32(0xd73d0000), SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a),
+	  SPH_C32(0xd25cc5ca), SPH_C32(0xebbc06c5), SPH_C32(0x371f00c0),
+	  SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000), SPH_C32(0x6ba50000),
+	  SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19), SPH_C32(0x8c51e2f1),
+	  SPH_C32(0xb6d737e7) },
+	{ SPH_C32(0x6baf01d0), SPH_C32(0xfa300000), SPH_C32(0xf3cc0000),
+	  SPH_C32(0xe3290000), SPH_C32(0x392b6b13), SPH_C32(0x9515777f),
+	  SPH_C32(0xd99f08d4), SPH_C32(0x248b730e), SPH_C32(0xc3730090),
+	  SPH_C32(0xfd160000), SPH_C32(0xa3700000), SPH_C32(0x68ba0000),
+	  SPH_C32(0x1d6361b3), SPH_C32(0x61b51400), SPH_C32(0x10f59223),
+	  SPH_C32(0x3ce32293) }
+};
+
+static const sph_u32 T512_12[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0x510a0008), SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000),
+	  SPH_C32(0x92490000), SPH_C32(0x381e7454), SPH_C32(0x13229849),
+	  SPH_C32(0x56eab6c1), SPH_C32(0x3298f492), SPH_C32(0x84950004),
+	  SPH_C32(0xc8bc8000), SPH_C32(0x98540000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31), SPH_C32(0x799e5a92),
+	  SPH_C32(0x8c5d1599) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x72150001), SPH_C32(0xfcff4000), SPH_C32(0xbc530000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xc6c52f87), SPH_C32(0x227e289f),
+	  SPH_C32(0xb45bd18b), SPH_C32(0x5bc8afa8), SPH_C32(0x73e0000d),
+	  SPH_C32(0x07804000), SPH_C32(0x5b820000), SPH_C32(0x575d0000),
+	  SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b), SPH_C32(0x0319abdc),
+	  SPH_C32(0x124b8d83) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0x85600008), SPH_C32(0x33c38000), SPH_C32(0x7f850000),
+	  SPH_C32(0xd8600000), SPH_C32(0xc450362e), SPH_C32(0xda961e25),
+	  SPH_C32(0xcedc20c5), SPH_C32(0xc5de37b2), SPH_C32(0xa78a000d),
+	  SPH_C32(0x8a488000), SPH_C32(0xfe2d0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x19294faf), SPH_C32(0x199a4de7), SPH_C32(0x9b2f3dd8),
+	  SPH_C32(0xe50d4ea3) }
+};
+
+static const sph_u32 T512_15[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0x83490006), SPH_C32(0x3a530000), SPH_C32(0xf5270000),
+	  SPH_C32(0x35d70000), SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9),
+	  SPH_C32(0x76edfd04), SPH_C32(0xd722941a), SPH_C32(0x48b00000),
+	  SPH_C32(0x1e61c000), SPH_C32(0xeac20000), SPH_C32(0x31450000),
+	  SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536), SPH_C32(0x66560735),
+	  SPH_C32(0x52259edc) },
+	{ SPH_C32(0x184f0004), SPH_C32(0x5b158000), SPH_C32(0xd7390000),
+	  SPH_C32(0x28a30000), SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b),
+	  SPH_C32(0x87fecba3), SPH_C32(0x293e4865), SPH_C32(0x3d790003),
+	  SPH_C32(0x10710000), SPH_C32(0x3be20000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261), SPH_C32(0xdd7e7128),
+	  SPH_C32(0x5292b0f7) },
+	{ SPH_C32(0x6d860007), SPH_C32(0x55054000), SPH_C32(0x06190000),
+	  SPH_C32(0x92490000), SPH_C32(0x174666dc), SPH_C32(0x3af1893c),
+	  SPH_C32(0x3cd6bdbe), SPH_C32(0x2989664e), SPH_C32(0xd3b60002),
+	  SPH_C32(0x7f274000), SPH_C32(0xc8dc0000), SPH_C32(0x2c310000),
+	  SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4), SPH_C32(0x97453192),
+	  SPH_C32(0xac3942a3) }
+};
+
+static const sph_u32 T512_18[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xcd990000), SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000),
+	  SPH_C32(0x65440000), SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb),
+	  SPH_C32(0x7143d295), SPH_C32(0x6b1e8d40), SPH_C32(0x2c430000),
+	  SPH_C32(0xa8781200), SPH_C32(0x501c0000), SPH_C32(0x386d0000),
+	  SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861), SPH_C32(0xc4dbabb1),
+	  SPH_C32(0x9f8d23ca) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0x695b0000), SPH_C32(0x0dcd0500), SPH_C32(0xa9760000),
+	  SPH_C32(0x03250000), SPH_C32(0x2183248b), SPH_C32(0x61380db7),
+	  SPH_C32(0xd2670d01), SPH_C32(0x40bed715), SPH_C32(0x59e70000),
+	  SPH_C32(0x6af33500), SPH_C32(0xc4b80000), SPH_C32(0xa8980000),
+	  SPH_C32(0xc4376747), SPH_C32(0x0be593cf), SPH_C32(0xd3bc6f32),
+	  SPH_C32(0x315245b4) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0x1cff0000), SPH_C32(0xcf462200), SPH_C32(0x3dd20000),
+	  SPH_C32(0x93d00000), SPH_C32(0xdafb736b), SPH_C32(0x28f60619),
+	  SPH_C32(0xc500c982), SPH_C32(0xee61b16b), SPH_C32(0x88810000),
+	  SPH_C32(0x714f3600), SPH_C32(0x5a540000), SPH_C32(0x5e0c0000),
+	  SPH_C32(0xc7352260), SPH_C32(0xc4956f3d), SPH_C32(0x67ff7425),
+	  SPH_C32(0xb42d799f) }
+};
+
+static const sph_u32 T512_21[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) }
+};
+
+static const sph_u32 T512_24[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0x7afe0000), SPH_C32(0x53b60014), SPH_C32(0xbd420000),
+	  SPH_C32(0xf0860000), SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979),
+	  SPH_C32(0x1d3a76bf), SPH_C32(0x1bb6813d), SPH_C32(0x47ff0000),
+	  SPH_C32(0x812600d4), SPH_C32(0x5bcf0000), SPH_C32(0x36b70000),
+	  SPH_C32(0x47392832), SPH_C32(0x935f59b7), SPH_C32(0x256c4600),
+	  SPH_C32(0xd9267fe4) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x87570088), SPH_C32(0x7e610000),
+	  SPH_C32(0x5ca90000), SPH_C32(0x699c66ed), SPH_C32(0xf511dca5),
+	  SPH_C32(0x9ad65ec3), SPH_C32(0xa75722f3), SPH_C32(0x818c0000),
+	  SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000), SPH_C32(0x173a0000),
+	  SPH_C32(0x64283db5), SPH_C32(0xea4c0898), SPH_C32(0x3844ea88),
+	  SPH_C32(0xeeabae97) }
+};
+
+static const sph_u32 T512_27[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0x40490000), SPH_C32(0x25bb0060), SPH_C32(0x75710000),
+	  SPH_C32(0x2ea80000), SPH_C32(0x35c9296f), SPH_C32(0x5abd2967),
+	  SPH_C32(0xde5c0873), SPH_C32(0xa5bb8697), SPH_C32(0x5fce0000),
+	  SPH_C32(0xc675000c), SPH_C32(0xeb450000), SPH_C32(0x7b450000),
+	  SPH_C32(0x75063a62), SPH_C32(0x67cd2643), SPH_C32(0x122f6b61),
+	  SPH_C32(0x1675c999) },
+	{ SPH_C32(0xb7130000), SPH_C32(0x3c3f0048), SPH_C32(0xd7680000),
+	  SPH_C32(0xc0500000), SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07),
+	  SPH_C32(0xad87a995), SPH_C32(0x443fc4c0), SPH_C32(0x4bd70000),
+	  SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000), SPH_C32(0x3ff30000),
+	  SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36), SPH_C32(0x73c97bd1),
+	  SPH_C32(0xcdbf1219) },
+	{ SPH_C32(0xa30a0000), SPH_C32(0x1ff50074), SPH_C32(0x87b70000),
+	  SPH_C32(0x84e60000), SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772),
+	  SPH_C32(0xcc61b925), SPH_C32(0x9ff51f40), SPH_C32(0xa8940000),
+	  SPH_C32(0xdff10024), SPH_C32(0x495c0000), SPH_C32(0x95bd0000),
+	  SPH_C32(0xb5741f74), SPH_C32(0x7e553423), SPH_C32(0x61f4ca87),
+	  SPH_C32(0xf7f18bce) }
+};
+
+static const sph_u32 T512_30[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x5d5c0000), SPH_C32(0x36100002), SPH_C32(0xa8302000),
+	  SPH_C32(0x19b70000), SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb),
+	  SPH_C32(0x908b2232), SPH_C32(0xfe716097), SPH_C32(0x45510000),
+	  SPH_C32(0x70b60001), SPH_C32(0xc48f4000), SPH_C32(0xef300000),
+	  SPH_C32(0xec8a2380), SPH_C32(0x5c931767), SPH_C32(0xc96b3d13),
+	  SPH_C32(0xfbdbf461) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0xeb920000), SPH_C32(0xecf90000), SPH_C32(0xbd5ea000),
+	  SPH_C32(0xc3250000), SPH_C32(0xa9465633), SPH_C32(0x3ac3a051),
+	  SPH_C32(0x62f9ca9c), SPH_C32(0x58c9a21a), SPH_C32(0xc3280000),
+	  SPH_C32(0x4f8f0003), SPH_C32(0x2515a000), SPH_C32(0x77660000),
+	  SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d), SPH_C32(0x1ab67457),
+	  SPH_C32(0xedc62ed8) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0x6deb0000), SPH_C32(0xd3c00002), SPH_C32(0x5cc44000),
+	  SPH_C32(0x5b730000), SPH_C32(0x3c23313d), SPH_C32(0x744b68bb),
+	  SPH_C32(0xb12483d8), SPH_C32(0x4ed478a3), SPH_C32(0xf39f0000),
+	  SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000), SPH_C32(0x35a20000),
+	  SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed), SPH_C32(0x3b19d5bd),
+	  SPH_C32(0x5d6336ec) }
+};
+
+static const sph_u32 T512_33[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xb2060000), SPH_C32(0xc5690000), SPH_C32(0x28031200),
+	  SPH_C32(0x74670000), SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8),
+	  SPH_C32(0x33d1dfec), SPH_C32(0x094e3198), SPH_C32(0xac480000),
+	  SPH_C32(0x1ba60000), SPH_C32(0x45fb1380), SPH_C32(0x03430000),
+	  SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6), SPH_C32(0xfe72c7fe),
+	  SPH_C32(0x91e478f6) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0x028b0000), SPH_C32(0x87e90001), SPH_C32(0x3c2af380),
+	  SPH_C32(0x2f560000), SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780),
+	  SPH_C32(0x55e03071), SPH_C32(0x32f62e8d), SPH_C32(0xc56b0000),
+	  SPH_C32(0xd7e60000), SPH_C32(0x2452c180), SPH_C32(0xf6c50000),
+	  SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f), SPH_C32(0x8ef57364),
+	  SPH_C32(0x70c6f340) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0x1cc50000), SPH_C32(0x59260001), SPH_C32(0x51d2f200),
+	  SPH_C32(0x58720000), SPH_C32(0xf30e4347), SPH_C32(0x8d428ece),
+	  SPH_C32(0x98432863), SPH_C32(0xaa5c67e3), SPH_C32(0x776d0000),
+	  SPH_C32(0x128f0000), SPH_C32(0x0c51d380), SPH_C32(0x82a20000),
+	  SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487), SPH_C32(0xbd24ac88),
+	  SPH_C32(0x7988c2d8) }
+};
+
+static const sph_u32 T512_36[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) }
+};
+
+static const sph_u32 T512_39[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x9e440000), SPH_C32(0x8c370000), SPH_C32(0x30d807ce),
+	  SPH_C32(0xcbaf0000), SPH_C32(0xd1e16d13), SPH_C32(0xc2b875d6),
+	  SPH_C32(0xa615c724), SPH_C32(0x995994f1), SPH_C32(0xd2130000),
+	  SPH_C32(0x45ab0000), SPH_C32(0xf8c50286), SPH_C32(0xc30c0000),
+	  SPH_C32(0x574d284c), SPH_C32(0xda31f145), SPH_C32(0x4f1ee235),
+	  SPH_C32(0xf1f0e16b) },
+	{ SPH_C32(0x9f990000), SPH_C32(0x0c9f0000), SPH_C32(0xc44e0786),
+	  SPH_C32(0x6daf0000), SPH_C32(0x413413b1), SPH_C32(0x155ef9e1),
+	  SPH_C32(0xc00708d9), SPH_C32(0xb5cdd16f), SPH_C32(0x80430000),
+	  SPH_C32(0x6cff0000), SPH_C32(0x92a402c8), SPH_C32(0x33f30000),
+	  SPH_C32(0xcd7c56a0), SPH_C32(0x9f12b08b), SPH_C32(0x80486dd0),
+	  SPH_C32(0xa2f3f264) },
+	{ SPH_C32(0xcdc90000), SPH_C32(0x25cb0000), SPH_C32(0xae2f07c8),
+	  SPH_C32(0x9d500000), SPH_C32(0xdb056d5d), SPH_C32(0x507db82f),
+	  SPH_C32(0x0f51873c), SPH_C32(0xe6cec260), SPH_C32(0xd3ce0000),
+	  SPH_C32(0xc5030000), SPH_C32(0x0c5302ce), SPH_C32(0x650c0000),
+	  SPH_C32(0xc79856ee), SPH_C32(0x0dd77d72), SPH_C32(0x290c2dc8),
+	  SPH_C32(0xdd64a4f5) }
+};
+
+static const sph_u32 T512_42[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x8f750000), SPH_C32(0xadc40000), SPH_C32(0xf8bb0024),
+	  SPH_C32(0x6c430000), SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3),
+	  SPH_C32(0x5ced124e), SPH_C32(0x7665c55a), SPH_C32(0xa9140000),
+	  SPH_C32(0x7d150000), SPH_C32(0xb7cc0018), SPH_C32(0xfe250000),
+	  SPH_C32(0x5d116688), SPH_C32(0x45997fda), SPH_C32(0xf7294e64),
+	  SPH_C32(0x43d8eceb) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x0c2f0000), SPH_C32(0x69330000), SPH_C32(0xf9fc0006),
+	  SPH_C32(0x828b0000), SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7),
+	  SPH_C32(0x001826bc), SPH_C32(0x48c3a5ad), SPH_C32(0x218c0000),
+	  SPH_C32(0x62810000), SPH_C32(0xc8030036), SPH_C32(0x056b0000),
+	  SPH_C32(0xac496112), SPH_C32(0x2437eebd), SPH_C32(0x5fbc3e08),
+	  SPH_C32(0xa5c8987f) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0x84b70000), SPH_C32(0x76a70000), SPH_C32(0x86330028),
+	  SPH_C32(0x79c50000), SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480),
+	  SPH_C32(0xa88d56d0), SPH_C32(0xaed3d139), SPH_C32(0x2a4e0000),
+	  SPH_C32(0xb9e20000), SPH_C32(0xb68b003a), SPH_C32(0x10ed0000),
+	  SPH_C32(0x3db429e1), SPH_C32(0x51b655fe), SPH_C32(0xabdc7a96),
+	  SPH_C32(0x7d7e8c1c) }
+};
+
+static const sph_u32 T512_45[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) }
+};
+
+static const sph_u32 T512_48[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0xa4b10000), SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000),
+	  SPH_C32(0x4b9e9000), SPH_C32(0xf30107fb), SPH_C32(0xbde710e0),
+	  SPH_C32(0x805696dc), SPH_C32(0x93b1da1b), SPH_C32(0x2a790000),
+	  SPH_C32(0xaff60000), SPH_C32(0xda890000), SPH_C32(0xfcf56000),
+	  SPH_C32(0x686d3607), SPH_C32(0xdadc8975), SPH_C32(0x9fc49d77),
+	  SPH_C32(0x66db1921) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x288b0000), SPH_C32(0x0d770000), SPH_C32(0x5db60000),
+	  SPH_C32(0x1f991800), SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3),
+	  SPH_C32(0x5b06af40), SPH_C32(0x19e93cbf), SPH_C32(0x34150000),
+	  SPH_C32(0x6bb40000), SPH_C32(0x50a70000), SPH_C32(0x4043d800),
+	  SPH_C32(0x442925b1), SPH_C32(0x51215aaf), SPH_C32(0xf5c886bf),
+	  SPH_C32(0xdf46dbca) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) },
+	{ SPH_C32(0x36e70000), SPH_C32(0xc9350000), SPH_C32(0xd7980000),
+	  SPH_C32(0xa32fa000), SPH_C32(0x5a34515e), SPH_C32(0x561c7179),
+	  SPH_C32(0x310ab488), SPH_C32(0xa074fe54), SPH_C32(0xa6430000),
+	  SPH_C32(0x756e0000), SPH_C32(0xbaf60000), SPH_C32(0xa8f2e800),
+	  SPH_C32(0xed1c7314), SPH_C32(0xbada3b36), SPH_C32(0x4494a4eb),
+	  SPH_C32(0xec83ff85) }
+};
+
+static const sph_u32 T512_51[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xb6c30000), SPH_C32(0xd5b20000), SPH_C32(0x36620000),
+	  SPH_C32(0x9cbc7ce0), SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b),
+	  SPH_C32(0x1694e6be), SPH_C32(0x315d5140), SPH_C32(0x59db0000),
+	  SPH_C32(0xae6c0000), SPH_C32(0x30f40000), SPH_C32(0x48da2860),
+	  SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b), SPH_C32(0x999f2612),
+	  SPH_C32(0x71fa0dc9) },
+	{ SPH_C32(0xe1f40000), SPH_C32(0x1f400000), SPH_C32(0x002c0000),
+	  SPH_C32(0x5c9e7860), SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87),
+	  SPH_C32(0xb7079931), SPH_C32(0x24e430a7), SPH_C32(0xedea0000),
+	  SPH_C32(0xd95f0000), SPH_C32(0x81a90000), SPH_C32(0x370a2c80),
+	  SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736), SPH_C32(0x4bc9f29b),
+	  SPH_C32(0x3f957917) },
+	{ SPH_C32(0x55c50000), SPH_C32(0x68730000), SPH_C32(0xb1710000),
+	  SPH_C32(0x234e7c80), SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda),
+	  SPH_C32(0x65514db8), SPH_C32(0x6a8b4479), SPH_C32(0x0eec0000),
+	  SPH_C32(0x649e0000), SPH_C32(0x06ba0000), SPH_C32(0x88f82ce0),
+	  SPH_C32(0xa7e77575), SPH_C32(0xe70c0067), SPH_C32(0x380c599d),
+	  SPH_C32(0x64436c2e) }
+};
+
+static const sph_u32 T512_54[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0x9d000000), SPH_C32(0x1b090000), SPH_C32(0x01b00000),
+	  SPH_C32(0xb0930240), SPH_C32(0x46ba7497), SPH_C32(0xf53e2561),
+	  SPH_C32(0x0f6d3db7), SPH_C32(0x10a52867), SPH_C32(0x657e0000),
+	  SPH_C32(0xd8660000), SPH_C32(0x7ea60000), SPH_C32(0xa9560180),
+	  SPH_C32(0x31e76a62), SPH_C32(0x94183875), SPH_C32(0xa929e66b),
+	  SPH_C32(0xb147bb0b) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0x8bed0000), SPH_C32(0x0e610000), SPH_C32(0xec670000),
+	  SPH_C32(0x82ce0060), SPH_C32(0xa5b6421e), SPH_C32(0xaf74c322),
+	  SPH_C32(0xec18c51f), SPH_C32(0x9158d16f), SPH_C32(0x83560000),
+	  SPH_C32(0x942d0000), SPH_C32(0xd6f30000), SPH_C32(0x7a860360),
+	  SPH_C32(0xe9865ada), SPH_C32(0x0cbf88af), SPH_C32(0x81bce0df),
+	  SPH_C32(0x661df39c) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) },
+	{ SPH_C32(0x6dc50000), SPH_C32(0x422a0000), SPH_C32(0x44320000),
+	  SPH_C32(0x511e0280), SPH_C32(0x7dd772a6), SPH_C32(0x37d373f8),
+	  SPH_C32(0xc48dc3ab), SPH_C32(0x460299f8), SPH_C32(0x73930000),
+	  SPH_C32(0xcd0e0000), SPH_C32(0x93710000), SPH_C32(0x9b0b03a0),
+	  SPH_C32(0xd2eb5ceb), SPH_C32(0xce52de36), SPH_C32(0x4a5c1ec3),
+	  SPH_C32(0x30ba4203) }
+};
+
+static const sph_u32 T512_57[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) }
+};
+
+static const sph_u32 T512_60[8][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) }
+};
+
+static const sph_u32 T512_63[2][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 5][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		rp = &T512_3[(acc >> 2) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T512_6[(acc >> 7) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_9[(acc >> 4) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_12[(acc >> 1) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T512_15[(acc >> 6) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_18[(acc >> 3) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_21[acc & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[3]; \
+		rp = &T512_24[acc >> 5][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_27[(acc >> 2) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[4]; \
+		rp = &T512_30[(acc >> 7) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_33[(acc >> 4) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_36[(acc >> 1) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[5]; \
+		rp = &T512_39[(acc >> 6) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_42[(acc >> 3) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_45[acc & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[6]; \
+		rp = &T512_48[acc >> 5][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_51[(acc >> 2) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[7]; \
+		rp = &T512_54[(acc >> 7) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_57[(acc >> 4) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_60[(acc >> 1) & 0x07][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_63[acc & 0x01][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 4
+
+static const sph_u32 T512_0[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0x7d6cc000), SPH_C32(0x8e0a0000), SPH_C32(0x379d0000),
+	  SPH_C32(0x63360000), SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4),
+	  SPH_C32(0x985003c4), SPH_C32(0xd816a946), SPH_C32(0xdad61400),
+	  SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000), SPH_C32(0x574e0000),
+	  SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67), SPH_C32(0x628cfdb5),
+	  SPH_C32(0xc7e6c5cb) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0xe1d7d800), SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000),
+	  SPH_C32(0x8ea50000), SPH_C32(0xe4466aba), SPH_C32(0x23732650),
+	  SPH_C32(0xdb56301e), SPH_C32(0xa0dc676f), SPH_C32(0x12455000),
+	  SPH_C32(0xe28f0000), SPH_C32(0x188b0000), SPH_C32(0x1b180000),
+	  SPH_C32(0xd9301e32), SPH_C32(0xd0baef72), SPH_C32(0x4a3a8ff2),
+	  SPH_C32(0xea373c60) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0x12455000), SPH_C32(0xe28f0000), SPH_C32(0x188b0000),
+	  SPH_C32(0x1b180000), SPH_C32(0xd9301e32), SPH_C32(0xd0baef72),
+	  SPH_C32(0x4a3a8ff2), SPH_C32(0xea373c60), SPH_C32(0xf3928800),
+	  SPH_C32(0xdc560000), SPH_C32(0xbd470000), SPH_C32(0x95bd0000),
+	  SPH_C32(0x3d767488), SPH_C32(0xf3c9c922), SPH_C32(0x916cbfec),
+	  SPH_C32(0x4aeb5b0f) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0x8efe4800), SPH_C32(0x525c0000), SPH_C32(0x8ada0000),
+	  SPH_C32(0xf68b0000), SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86),
+	  SPH_C32(0x093cbc28), SPH_C32(0x92fdf249), SPH_C32(0x3b01cc00),
+	  SPH_C32(0x86680000), SPH_C32(0xeac00000), SPH_C32(0xd9eb0000),
+	  SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837), SPH_C32(0xb9dacdab),
+	  SPH_C32(0x673aa2a4) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0x3b01cc00), SPH_C32(0x86680000), SPH_C32(0xeac00000),
+	  SPH_C32(0xd9eb0000), SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837),
+	  SPH_C32(0xb9dacdab), SPH_C32(0x673aa2a4), SPH_C32(0xb5ff8400),
+	  SPH_C32(0xd4340000), SPH_C32(0x601a0000), SPH_C32(0x2f600000),
+	  SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1), SPH_C32(0xb0e67183),
+	  SPH_C32(0xf5c750ed) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) },
+	{ SPH_C32(0xa7bad400), SPH_C32(0x36bb0000), SPH_C32(0x78910000),
+	  SPH_C32(0x34780000), SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3),
+	  SPH_C32(0xfadcfe71), SPH_C32(0x1ff06c8d), SPH_C32(0x7d6cc000),
+	  SPH_C32(0x8e0a0000), SPH_C32(0x379d0000), SPH_C32(0x63360000),
+	  SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4), SPH_C32(0x985003c4),
+	  SPH_C32(0xd816a946) }
+};
+
+static const sph_u32 T512_4[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0xfb513e70), SPH_C32(0x83140000), SPH_C32(0x3c890000),
+	  SPH_C32(0x98280000), SPH_C32(0x556e016a), SPH_C32(0xf44c8881),
+	  SPH_C32(0x21bd6d71), SPH_C32(0x73c179cf), SPH_C32(0xea0c1430),
+	  SPH_C32(0x2f9c0000), SPH_C32(0xdb430000), SPH_C32(0xdd3a0000),
+	  SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e), SPH_C32(0x525b63bb),
+	  SPH_C32(0x424d4977) },
+	{ SPH_C32(0xdd313c30), SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000),
+	  SPH_C32(0xd72e0000), SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f),
+	  SPH_C32(0x17360ea4), SPH_C32(0x7fe78bad), SPH_C32(0x05071640),
+	  SPH_C32(0x15610000), SPH_C32(0x86ed0000), SPH_C32(0xb4730000),
+	  SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187), SPH_C32(0x344f69ea),
+	  SPH_C32(0xd002147d) },
+	{ SPH_C32(0x323a3e40), SPH_C32(0x64310000), SPH_C32(0x130d0000),
+	  SPH_C32(0xbe670000), SPH_C32(0x5d075a93), SPH_C32(0x99b079b6),
+	  SPH_C32(0x712204f5), SPH_C32(0xeda8d6a7), SPH_C32(0xcc6c1670),
+	  SPH_C32(0xf2440000), SPH_C32(0xa9690000), SPH_C32(0x923c0000),
+	  SPH_C32(0xe8c21863), SPH_C32(0xbca310b0), SPH_C32(0x64d0006e),
+	  SPH_C32(0x4e6bbb15) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0xcc6c1670), SPH_C32(0xf2440000), SPH_C32(0xa9690000),
+	  SPH_C32(0x923c0000), SPH_C32(0xe8c21863), SPH_C32(0xbca310b0),
+	  SPH_C32(0x64d0006e), SPH_C32(0x4e6bbb15), SPH_C32(0xfe562830),
+	  SPH_C32(0x96750000), SPH_C32(0xba640000), SPH_C32(0x2c5b0000),
+	  SPH_C32(0xb5c542f0), SPH_C32(0x25136906), SPH_C32(0x15f2049b),
+	  SPH_C32(0xa3c36db2) },
+	{ SPH_C32(0xea0c1430), SPH_C32(0x2f9c0000), SPH_C32(0xdb430000),
+	  SPH_C32(0xdd3a0000), SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e),
+	  SPH_C32(0x525b63bb), SPH_C32(0x424d4977), SPH_C32(0x115d2a40),
+	  SPH_C32(0xac880000), SPH_C32(0xe7ca0000), SPH_C32(0x45120000),
+	  SPH_C32(0x2eca7ef6), SPH_C32(0x6116dcff), SPH_C32(0x73e60eca),
+	  SPH_C32(0x318c30b8) },
+	{ SPH_C32(0x05071640), SPH_C32(0x15610000), SPH_C32(0x86ed0000),
+	  SPH_C32(0xb4730000), SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187),
+	  SPH_C32(0x344f69ea), SPH_C32(0xd002147d), SPH_C32(0xd8362a70),
+	  SPH_C32(0x4bad0000), SPH_C32(0xc84e0000), SPH_C32(0x635d0000),
+	  SPH_C32(0x26a3250f), SPH_C32(0x0cea2dc8), SPH_C32(0x2379674e),
+	  SPH_C32(0xafe59fd0) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) },
+	{ SPH_C32(0xd8362a70), SPH_C32(0x4bad0000), SPH_C32(0xc84e0000),
+	  SPH_C32(0x635d0000), SPH_C32(0x26a3250f), SPH_C32(0x0cea2dc8),
+	  SPH_C32(0x2379674e), SPH_C32(0xafe59fd0), SPH_C32(0xdd313c30),
+	  SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000), SPH_C32(0xd72e0000),
+	  SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f), SPH_C32(0x17360ea4),
+	  SPH_C32(0x7fe78bad) },
+	{ SPH_C32(0xfe562830), SPH_C32(0x96750000), SPH_C32(0xba640000),
+	  SPH_C32(0x2c5b0000), SPH_C32(0xb5c542f0), SPH_C32(0x25136906),
+	  SPH_C32(0x15f2049b), SPH_C32(0xa3c36db2), SPH_C32(0x323a3e40),
+	  SPH_C32(0x64310000), SPH_C32(0x130d0000), SPH_C32(0xbe670000),
+	  SPH_C32(0x5d075a93), SPH_C32(0x99b079b6), SPH_C32(0x712204f5),
+	  SPH_C32(0xeda8d6a7) },
+	{ SPH_C32(0x115d2a40), SPH_C32(0xac880000), SPH_C32(0xe7ca0000),
+	  SPH_C32(0x45120000), SPH_C32(0x2eca7ef6), SPH_C32(0x6116dcff),
+	  SPH_C32(0x73e60eca), SPH_C32(0x318c30b8), SPH_C32(0xfb513e70),
+	  SPH_C32(0x83140000), SPH_C32(0x3c890000), SPH_C32(0x98280000),
+	  SPH_C32(0x556e016a), SPH_C32(0xf44c8881), SPH_C32(0x21bd6d71),
+	  SPH_C32(0x73c179cf) }
+};
+
+static const sph_u32 T512_8[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0x9fc30180), SPH_C32(0x6c280000), SPH_C32(0xe7690000),
+	  SPH_C32(0xe0360000), SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966),
+	  SPH_C32(0x453b7806), SPH_C32(0xaebf667a), SPH_C32(0x405b0030),
+	  SPH_C32(0x9a540000), SPH_C32(0x42670000), SPH_C32(0x5fb10000),
+	  SPH_C32(0xd6c06187), SPH_C32(0x5d81863c), SPH_C32(0x87922fef),
+	  SPH_C32(0x79e0422c) },
+	{ SPH_C32(0x1ceb0120), SPH_C32(0x0b6a0000), SPH_C32(0x067e0000),
+	  SPH_C32(0xd73d0000), SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a),
+	  SPH_C32(0xd25cc5ca), SPH_C32(0xebbc06c5), SPH_C32(0x371f00c0),
+	  SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000), SPH_C32(0x6ba50000),
+	  SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19), SPH_C32(0x8c51e2f1),
+	  SPH_C32(0xb6d737e7) },
+	{ SPH_C32(0x6baf01d0), SPH_C32(0xfa300000), SPH_C32(0xf3cc0000),
+	  SPH_C32(0xe3290000), SPH_C32(0x392b6b13), SPH_C32(0x9515777f),
+	  SPH_C32(0xd99f08d4), SPH_C32(0x248b730e), SPH_C32(0xc3730090),
+	  SPH_C32(0xfd160000), SPH_C32(0xa3700000), SPH_C32(0x68ba0000),
+	  SPH_C32(0x1d6361b3), SPH_C32(0x61b51400), SPH_C32(0x10f59223),
+	  SPH_C32(0x3ce32293) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0xc3730090), SPH_C32(0xfd160000), SPH_C32(0xa3700000),
+	  SPH_C32(0x68ba0000), SPH_C32(0x1d6361b3), SPH_C32(0x61b51400),
+	  SPH_C32(0x10f59223), SPH_C32(0x3ce32293), SPH_C32(0xa8dc0140),
+	  SPH_C32(0x07260000), SPH_C32(0x50bc0000), SPH_C32(0x8b930000),
+	  SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f), SPH_C32(0xc96a9af7),
+	  SPH_C32(0x1868519d) },
+	{ SPH_C32(0x405b0030), SPH_C32(0x9a540000), SPH_C32(0x42670000),
+	  SPH_C32(0x5fb10000), SPH_C32(0xd6c06187), SPH_C32(0x5d81863c),
+	  SPH_C32(0x87922fef), SPH_C32(0x79e0422c), SPH_C32(0xdf9801b0),
+	  SPH_C32(0xf67c0000), SPH_C32(0xa50e0000), SPH_C32(0xbf870000),
+	  SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a), SPH_C32(0xc2a957e9),
+	  SPH_C32(0xd75f2456) },
+	{ SPH_C32(0x371f00c0), SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000),
+	  SPH_C32(0x6ba50000), SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19),
+	  SPH_C32(0x8c51e2f1), SPH_C32(0xb6d737e7), SPH_C32(0x2bf401e0),
+	  SPH_C32(0x60640000), SPH_C32(0xb1ab0000), SPH_C32(0xbc980000),
+	  SPH_C32(0xefeb0a94), SPH_C32(0xc894f143), SPH_C32(0x5e0d273b),
+	  SPH_C32(0x5d6b3122) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) },
+	{ SPH_C32(0x2bf401e0), SPH_C32(0x60640000), SPH_C32(0xb1ab0000),
+	  SPH_C32(0xbc980000), SPH_C32(0xefeb0a94), SPH_C32(0xc894f143),
+	  SPH_C32(0x5e0d273b), SPH_C32(0x5d6b3122), SPH_C32(0x1ceb0120),
+	  SPH_C32(0x0b6a0000), SPH_C32(0x067e0000), SPH_C32(0xd73d0000),
+	  SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a), SPH_C32(0xd25cc5ca),
+	  SPH_C32(0xebbc06c5) },
+	{ SPH_C32(0xa8dc0140), SPH_C32(0x07260000), SPH_C32(0x50bc0000),
+	  SPH_C32(0x8b930000), SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f),
+	  SPH_C32(0xc96a9af7), SPH_C32(0x1868519d), SPH_C32(0x6baf01d0),
+	  SPH_C32(0xfa300000), SPH_C32(0xf3cc0000), SPH_C32(0xe3290000),
+	  SPH_C32(0x392b6b13), SPH_C32(0x9515777f), SPH_C32(0xd99f08d4),
+	  SPH_C32(0x248b730e) },
+	{ SPH_C32(0xdf9801b0), SPH_C32(0xf67c0000), SPH_C32(0xa50e0000),
+	  SPH_C32(0xbf870000), SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a),
+	  SPH_C32(0xc2a957e9), SPH_C32(0xd75f2456), SPH_C32(0x9fc30180),
+	  SPH_C32(0x6c280000), SPH_C32(0xe7690000), SPH_C32(0xe0360000),
+	  SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966), SPH_C32(0x453b7806),
+	  SPH_C32(0xaebf667a) }
+};
+
+static const sph_u32 T512_12[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0x50ff0004), SPH_C32(0x45744000), SPH_C32(0x3dfb0000),
+	  SPH_C32(0x19e60000), SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d),
+	  SPH_C32(0xe1a8cc96), SPH_C32(0x7b1bd6b9), SPH_C32(0xf6800005),
+	  SPH_C32(0x3443c000), SPH_C32(0x24070000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae), SPH_C32(0xcdc58b19),
+	  SPH_C32(0xd795ba31) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0x01f5000c), SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000),
+	  SPH_C32(0x8baf0000), SPH_C32(0x23a22252), SPH_C32(0xf250e314),
+	  SPH_C32(0xb7427a57), SPH_C32(0x4983222b), SPH_C32(0x72150001),
+	  SPH_C32(0xfcff4000), SPH_C32(0xbc530000), SPH_C32(0xdcf20000),
+	  SPH_C32(0xc6c52f87), SPH_C32(0x227e289f), SPH_C32(0xb45bd18b),
+	  SPH_C32(0x5bc8afa8) },
+	{ SPH_C32(0x510a0008), SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000),
+	  SPH_C32(0x92490000), SPH_C32(0x381e7454), SPH_C32(0x13229849),
+	  SPH_C32(0x56eab6c1), SPH_C32(0x3298f492), SPH_C32(0x84950004),
+	  SPH_C32(0xc8bc8000), SPH_C32(0x98540000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31), SPH_C32(0x799e5a92),
+	  SPH_C32(0x8c5d1599) },
+	{ SPH_C32(0xa78a000d), SPH_C32(0x8a488000), SPH_C32(0xfe2d0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x19294faf), SPH_C32(0x199a4de7),
+	  SPH_C32(0x9b2f3dd8), SPH_C32(0xe50d4ea3), SPH_C32(0x22ea0005),
+	  SPH_C32(0xb98b0000), SPH_C32(0x81a80000), SPH_C32(0xc5140000),
+	  SPH_C32(0xdd797981), SPH_C32(0xc30c53c2), SPH_C32(0x55f31d1d),
+	  SPH_C32(0x20d37911) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x22ea0005), SPH_C32(0xb98b0000), SPH_C32(0x81a80000),
+	  SPH_C32(0xc5140000), SPH_C32(0xdd797981), SPH_C32(0xc30c53c2),
+	  SPH_C32(0x55f31d1d), SPH_C32(0x20d37911), SPH_C32(0x85600008),
+	  SPH_C32(0x33c38000), SPH_C32(0x7f850000), SPH_C32(0xd8600000),
+	  SPH_C32(0xc450362e), SPH_C32(0xda961e25), SPH_C32(0xcedc20c5),
+	  SPH_C32(0xc5de37b2) },
+	{ SPH_C32(0x72150001), SPH_C32(0xfcff4000), SPH_C32(0xbc530000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xc6c52f87), SPH_C32(0x227e289f),
+	  SPH_C32(0xb45bd18b), SPH_C32(0x5bc8afa8), SPH_C32(0x73e0000d),
+	  SPH_C32(0x07804000), SPH_C32(0x5b820000), SPH_C32(0x575d0000),
+	  SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b), SPH_C32(0x0319abdc),
+	  SPH_C32(0x124b8d83) },
+	{ SPH_C32(0x84950004), SPH_C32(0xc8bc8000), SPH_C32(0x98540000),
+	  SPH_C32(0x53cf0000), SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31),
+	  SPH_C32(0x799e5a92), SPH_C32(0x8c5d1599), SPH_C32(0xd59f000c),
+	  SPH_C32(0x76b7c000), SPH_C32(0x427e0000), SPH_C32(0xc1860000),
+	  SPH_C32(0xdfec6028), SPH_C32(0x3be46578), SPH_C32(0x2f74ec53),
+	  SPH_C32(0xbec5e10b) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0xd59f000c), SPH_C32(0x76b7c000), SPH_C32(0x427e0000),
+	  SPH_C32(0xc1860000), SPH_C32(0xdfec6028), SPH_C32(0x3be46578),
+	  SPH_C32(0x2f74ec53), SPH_C32(0xbec5e10b), SPH_C32(0x510a0008),
+	  SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000), SPH_C32(0x92490000),
+	  SPH_C32(0x381e7454), SPH_C32(0x13229849), SPH_C32(0x56eab6c1),
+	  SPH_C32(0x3298f492) },
+	{ SPH_C32(0x85600008), SPH_C32(0x33c38000), SPH_C32(0x7f850000),
+	  SPH_C32(0xd8600000), SPH_C32(0xc450362e), SPH_C32(0xda961e25),
+	  SPH_C32(0xcedc20c5), SPH_C32(0xc5de37b2), SPH_C32(0xa78a000d),
+	  SPH_C32(0x8a488000), SPH_C32(0xfe2d0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x19294faf), SPH_C32(0x199a4de7), SPH_C32(0x9b2f3dd8),
+	  SPH_C32(0xe50d4ea3) },
+	{ SPH_C32(0x73e0000d), SPH_C32(0x07804000), SPH_C32(0x5b820000),
+	  SPH_C32(0x575d0000), SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b),
+	  SPH_C32(0x0319abdc), SPH_C32(0x124b8d83), SPH_C32(0x01f5000c),
+	  SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x23a22252), SPH_C32(0xf250e314), SPH_C32(0xb7427a57),
+	  SPH_C32(0x4983222b) }
+};
+
+static const sph_u32 T512_16[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0x006d0003), SPH_C32(0xcc9be700), SPH_C32(0x45840000),
+	  SPH_C32(0x2a1f0000), SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9),
+	  SPH_C32(0xac4fb29e), SPH_C32(0xae684855), SPH_C32(0x3fa90001),
+	  SPH_C32(0x74ea4300), SPH_C32(0x6dd20000), SPH_C32(0x510a0000),
+	  SPH_C32(0xbeb7373e), SPH_C32(0x78611737), SPH_C32(0xfe785bad),
+	  SPH_C32(0x7bd4ce7f) },
+	{ SPH_C32(0xa4af0003), SPH_C32(0x15acc300), SPH_C32(0x4fcc0000),
+	  SPH_C32(0x4c7e0000), SPH_C32(0x88c66a19), SPH_C32(0x48284ba5),
+	  SPH_C32(0x0f6b6d0a), SPH_C32(0x85c81200), SPH_C32(0x4a0d0001),
+	  SPH_C32(0xb6616400), SPH_C32(0xf9760000), SPH_C32(0xc1ff0000),
+	  SPH_C32(0x45cf60de), SPH_C32(0x31af1c99), SPH_C32(0xe91f9f2e),
+	  SPH_C32(0xd50ba801) },
+	{ SPH_C32(0xd10b0003), SPH_C32(0xd727e400), SPH_C32(0xdb680000),
+	  SPH_C32(0xdc8b0000), SPH_C32(0x73be3df9), SPH_C32(0x01e6400b),
+	  SPH_C32(0x180ca989), SPH_C32(0x2b17747e), SPH_C32(0x9b6b0001),
+	  SPH_C32(0xaddd6700), SPH_C32(0x679a0000), SPH_C32(0x376b0000),
+	  SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b), SPH_C32(0x5d5c8439),
+	  SPH_C32(0x5074942a) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x9b6b0001), SPH_C32(0xaddd6700), SPH_C32(0x679a0000),
+	  SPH_C32(0x376b0000), SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b),
+	  SPH_C32(0x5d5c8439), SPH_C32(0x5074942a), SPH_C32(0x4a600002),
+	  SPH_C32(0x7afa8300), SPH_C32(0xbcf20000), SPH_C32(0xebe00000),
+	  SPH_C32(0x35731800), SPH_C32(0xff39a060), SPH_C32(0x45502db0),
+	  SPH_C32(0x7b63e054) },
+	{ SPH_C32(0x3fa90001), SPH_C32(0x74ea4300), SPH_C32(0x6dd20000),
+	  SPH_C32(0x510a0000), SPH_C32(0xbeb7373e), SPH_C32(0x78611737),
+	  SPH_C32(0xfe785bad), SPH_C32(0x7bd4ce7f), SPH_C32(0x3fc40002),
+	  SPH_C32(0xb871a400), SPH_C32(0x28560000), SPH_C32(0x7b150000),
+	  SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce), SPH_C32(0x5237e933),
+	  SPH_C32(0xd5bc862a) },
+	{ SPH_C32(0x4a0d0001), SPH_C32(0xb6616400), SPH_C32(0xf9760000),
+	  SPH_C32(0xc1ff0000), SPH_C32(0x45cf60de), SPH_C32(0x31af1c99),
+	  SPH_C32(0xe91f9f2e), SPH_C32(0xd50ba801), SPH_C32(0xeea20002),
+	  SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000), SPH_C32(0x8d810000),
+	  SPH_C32(0xcd090ac7), SPH_C32(0x7987573c), SPH_C32(0xe674f224),
+	  SPH_C32(0x50c3ba01) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0xeea20002), SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000),
+	  SPH_C32(0x8d810000), SPH_C32(0xcd090ac7), SPH_C32(0x7987573c),
+	  SPH_C32(0xe674f224), SPH_C32(0x50c3ba01), SPH_C32(0xa4af0003),
+	  SPH_C32(0x15acc300), SPH_C32(0x4fcc0000), SPH_C32(0x4c7e0000),
+	  SPH_C32(0x88c66a19), SPH_C32(0x48284ba5), SPH_C32(0x0f6b6d0a),
+	  SPH_C32(0x85c81200) },
+	{ SPH_C32(0x4a600002), SPH_C32(0x7afa8300), SPH_C32(0xbcf20000),
+	  SPH_C32(0xebe00000), SPH_C32(0x35731800), SPH_C32(0xff39a060),
+	  SPH_C32(0x45502db0), SPH_C32(0x7b63e054), SPH_C32(0xd10b0003),
+	  SPH_C32(0xd727e400), SPH_C32(0xdb680000), SPH_C32(0xdc8b0000),
+	  SPH_C32(0x73be3df9), SPH_C32(0x01e6400b), SPH_C32(0x180ca989),
+	  SPH_C32(0x2b17747e) },
+	{ SPH_C32(0x3fc40002), SPH_C32(0xb871a400), SPH_C32(0x28560000),
+	  SPH_C32(0x7b150000), SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce),
+	  SPH_C32(0x5237e933), SPH_C32(0xd5bc862a), SPH_C32(0x006d0003),
+	  SPH_C32(0xcc9be700), SPH_C32(0x45840000), SPH_C32(0x2a1f0000),
+	  SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9), SPH_C32(0xac4fb29e),
+	  SPH_C32(0xae684855) }
+};
+
+static const sph_u32 T512_20[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0xb44f0000), SPH_C32(0x5f940900), SPH_C32(0x75e30000),
+	  SPH_C32(0xa95b0000), SPH_C32(0x112b51b6), SPH_C32(0xbbcad451),
+	  SPH_C32(0xf3875d6d), SPH_C32(0x718aebae), SPH_C32(0x03070000),
+	  SPH_C32(0x149c1400), SPH_C32(0xeb210000), SPH_C32(0x39990000),
+	  SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3), SPH_C32(0x3e4813b3),
+	  SPH_C32(0xbbd1e07e) },
+	{ SPH_C32(0x461f0000), SPH_C32(0xb1290300), SPH_C32(0x124b0000),
+	  SPH_C32(0x02d10000), SPH_C32(0xabb01976), SPH_C32(0xb19c0925),
+	  SPH_C32(0x28f4b503), SPH_C32(0x64e214a1), SPH_C32(0x0f750000),
+	  SPH_C32(0x5d791b00), SPH_C32(0xa9580000), SPH_C32(0x65730000),
+	  SPH_C32(0x86d63d40), SPH_C32(0x870db9e7), SPH_C32(0xabeb58c8),
+	  SPH_C32(0x0f9ae0ee) },
+	{ SPH_C32(0x4a6d0000), SPH_C32(0xf8cc0c00), SPH_C32(0x50320000),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x981a296c), SPH_C32(0xa41e2c31),
+	  SPH_C32(0xbd57fe78), SPH_C32(0xd0a91431), SPH_C32(0xf1570000),
+	  SPH_C32(0xfa211e00), SPH_C32(0x8c890000), SPH_C32(0x92130000),
+	  SPH_C32(0x0fe7459a), SPH_C32(0x98d94187), SPH_C32(0xe53bfbdd),
+	  SPH_C32(0xaeb91f71) },
+	{ SPH_C32(0xfd250000), SPH_C32(0xb3c41100), SPH_C32(0xcef00000),
+	  SPH_C32(0xcef90000), SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493),
+	  SPH_C32(0x7098b0a6), SPH_C32(0x1af21fe1), SPH_C32(0x45180000),
+	  SPH_C32(0xa5b51700), SPH_C32(0xf96a0000), SPH_C32(0x3b480000),
+	  SPH_C32(0x1ecc142c), SPH_C32(0x231395d6), SPH_C32(0x16bca6b0),
+	  SPH_C32(0xdf33f4df) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfa211e00), SPH_C32(0x8c890000),
+	  SPH_C32(0x92130000), SPH_C32(0x0fe7459a), SPH_C32(0x98d94187),
+	  SPH_C32(0xe53bfbdd), SPH_C32(0xaeb91f71), SPH_C32(0xbb3a0000),
+	  SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000), SPH_C32(0xcc280000),
+	  SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6), SPH_C32(0x586c05a5),
+	  SPH_C32(0x7e100b40) },
+	{ SPH_C32(0x03070000), SPH_C32(0x149c1400), SPH_C32(0xeb210000),
+	  SPH_C32(0x39990000), SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3),
+	  SPH_C32(0x3e4813b3), SPH_C32(0xbbd1e07e), SPH_C32(0xb7480000),
+	  SPH_C32(0x4b081d00), SPH_C32(0x9ec20000), SPH_C32(0x90c20000),
+	  SPH_C32(0xa4575cec), SPH_C32(0x294548a2), SPH_C32(0xcdcf4ede),
+	  SPH_C32(0xca5b0bd0) },
+	{ SPH_C32(0x0f750000), SPH_C32(0x5d791b00), SPH_C32(0xa9580000),
+	  SPH_C32(0x65730000), SPH_C32(0x86d63d40), SPH_C32(0x870db9e7),
+	  SPH_C32(0xabeb58c8), SPH_C32(0x0f9ae0ee), SPH_C32(0x496a0000),
+	  SPH_C32(0xec501800), SPH_C32(0xbb130000), SPH_C32(0x67a20000),
+	  SPH_C32(0x2d662436), SPH_C32(0x3691b0c2), SPH_C32(0x831fedcb),
+	  SPH_C32(0x6b78f44f) }
+};
+
+static const sph_u32 T512_24[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0x3d010000), SPH_C32(0xd29000c0), SPH_C32(0xe68d0000),
+	  SPH_C32(0xc6310000), SPH_C32(0xca304571), SPH_C32(0xa8ea90ce),
+	  SPH_C32(0x385630bf), SPH_C32(0xc290fed9), SPH_C32(0x7afe0000),
+	  SPH_C32(0x53b60014), SPH_C32(0xbd420000), SPH_C32(0xf0860000),
+	  SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979), SPH_C32(0x1d3a76bf),
+	  SPH_C32(0x1bb6813d) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0x818c0000), SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000),
+	  SPH_C32(0x173a0000), SPH_C32(0x64283db5), SPH_C32(0xea4c0898),
+	  SPH_C32(0x3844ea88), SPH_C32(0xeeabae97), SPH_C32(0x92230000),
+	  SPH_C32(0xa9fc0050), SPH_C32(0x816f0000), SPH_C32(0x4b930000),
+	  SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d), SPH_C32(0xa292b44b),
+	  SPH_C32(0x49fc8c64) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0x92230000), SPH_C32(0xa9fc0050), SPH_C32(0x816f0000),
+	  SPH_C32(0x4b930000), SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d),
+	  SPH_C32(0xa292b44b), SPH_C32(0x49fc8c64), SPH_C32(0x13af0000),
+	  SPH_C32(0x87570088), SPH_C32(0x7e610000), SPH_C32(0x5ca90000),
+	  SPH_C32(0x699c66ed), SPH_C32(0xf511dca5), SPH_C32(0x9ad65ec3),
+	  SPH_C32(0xa75722f3) },
+	{ SPH_C32(0x7afe0000), SPH_C32(0x53b60014), SPH_C32(0xbd420000),
+	  SPH_C32(0xf0860000), SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979),
+	  SPH_C32(0x1d3a76bf), SPH_C32(0x1bb6813d), SPH_C32(0x47ff0000),
+	  SPH_C32(0x812600d4), SPH_C32(0x5bcf0000), SPH_C32(0x36b70000),
+	  SPH_C32(0x47392832), SPH_C32(0x935f59b7), SPH_C32(0x256c4600),
+	  SPH_C32(0xd9267fe4) },
+	{ SPH_C32(0x2eae0000), SPH_C32(0x55c70048), SPH_C32(0x98ec0000),
+	  SPH_C32(0x9a980000), SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b),
+	  SPH_C32(0xa2806e7c), SPH_C32(0x65c7dc2a), SPH_C32(0xfb720000),
+	  SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000), SPH_C32(0xe7bc0000),
+	  SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1), SPH_C32(0x257e9c37),
+	  SPH_C32(0xf51d2faa) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) },
+	{ SPH_C32(0xfb720000), SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000),
+	  SPH_C32(0xe7bc0000), SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1),
+	  SPH_C32(0x257e9c37), SPH_C32(0xf51d2faa), SPH_C32(0xd5dc0000),
+	  SPH_C32(0x28da0084), SPH_C32(0xdaa00000), SPH_C32(0x7d240000),
+	  SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a), SPH_C32(0x87fef24b),
+	  SPH_C32(0x90daf380) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x87570088), SPH_C32(0x7e610000),
+	  SPH_C32(0x5ca90000), SPH_C32(0x699c66ed), SPH_C32(0xf511dca5),
+	  SPH_C32(0x9ad65ec3), SPH_C32(0xa75722f3), SPH_C32(0x818c0000),
+	  SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000), SPH_C32(0x173a0000),
+	  SPH_C32(0x64283db5), SPH_C32(0xea4c0898), SPH_C32(0x3844ea88),
+	  SPH_C32(0xeeabae97) },
+	{ SPH_C32(0x47ff0000), SPH_C32(0x812600d4), SPH_C32(0x5bcf0000),
+	  SPH_C32(0x36b70000), SPH_C32(0x47392832), SPH_C32(0x935f59b7),
+	  SPH_C32(0x256c4600), SPH_C32(0xd9267fe4), SPH_C32(0x3d010000),
+	  SPH_C32(0xd29000c0), SPH_C32(0xe68d0000), SPH_C32(0xc6310000),
+	  SPH_C32(0xca304571), SPH_C32(0xa8ea90ce), SPH_C32(0x385630bf),
+	  SPH_C32(0xc290fed9) }
+};
+
+static const sph_u32 T512_28[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0x92600000), SPH_C32(0x1cf3003e), SPH_C32(0xb145e000),
+	  SPH_C32(0xdce00000), SPH_C32(0x8e0900be), SPH_C32(0x727b649f),
+	  SPH_C32(0xb23b59f4), SPH_C32(0xcdd70139), SPH_C32(0xd3f40000),
+	  SPH_C32(0xdf9e0014), SPH_C32(0x06326000), SPH_C32(0xe88a0000),
+	  SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75), SPH_C32(0x339210bc),
+	  SPH_C32(0x8aeb81e3) },
+	{ SPH_C32(0x24ae0000), SPH_C32(0xc61a003c), SPH_C32(0xa42b6000),
+	  SPH_C32(0x06720000), SPH_C32(0x78d45ada), SPH_C32(0x44493815),
+	  SPH_C32(0x4049b15a), SPH_C32(0x6b6fc3b4), SPH_C32(0x558d0000),
+	  SPH_C32(0xe0a70016), SPH_C32(0xe7a88000), SPH_C32(0x70dc0000),
+	  SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f), SPH_C32(0xe04f59f8),
+	  SPH_C32(0x9cf65b5a) },
+	{ SPH_C32(0xa2d70000), SPH_C32(0xf923003e), SPH_C32(0x45b18000),
+	  SPH_C32(0x9e240000), SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff),
+	  SPH_C32(0x9394f81e), SPH_C32(0x7d72190d), SPH_C32(0x653a0000),
+	  SPH_C32(0x05770016), SPH_C32(0x135ce000), SPH_C32(0x32180000),
+	  SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff), SPH_C32(0xc1e0f812),
+	  SPH_C32(0x2c53436e) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0x653a0000), SPH_C32(0x05770016), SPH_C32(0x135ce000),
+	  SPH_C32(0x32180000), SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff),
+	  SPH_C32(0xc1e0f812), SPH_C32(0x2c53436e), SPH_C32(0xc7ed0000),
+	  SPH_C32(0xfc540028), SPH_C32(0x56ed6000), SPH_C32(0xac3c0000),
+	  SPH_C32(0xa3ca187c), SPH_C32(0x61228600), SPH_C32(0x5274000c),
+	  SPH_C32(0x51215a63) },
+	{ SPH_C32(0xd3f40000), SPH_C32(0xdf9e0014), SPH_C32(0x06326000),
+	  SPH_C32(0xe88a0000), SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75),
+	  SPH_C32(0x339210bc), SPH_C32(0x8aeb81e3), SPH_C32(0x41940000),
+	  SPH_C32(0xc36d002a), SPH_C32(0xb7778000), SPH_C32(0x346a0000),
+	  SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea), SPH_C32(0x81a94948),
+	  SPH_C32(0x473c80da) },
+	{ SPH_C32(0x558d0000), SPH_C32(0xe0a70016), SPH_C32(0xe7a88000),
+	  SPH_C32(0x70dc0000), SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f),
+	  SPH_C32(0xe04f59f8), SPH_C32(0x9cf65b5a), SPH_C32(0x71230000),
+	  SPH_C32(0x26bd002a), SPH_C32(0x4383e000), SPH_C32(0x76ae0000),
+	  SPH_C32(0x55174218), SPH_C32(0x5710da8a), SPH_C32(0xa006e8a2),
+	  SPH_C32(0xf79998ee) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0x71230000), SPH_C32(0x26bd002a), SPH_C32(0x4383e000),
+	  SPH_C32(0x76ae0000), SPH_C32(0x55174218), SPH_C32(0x5710da8a),
+	  SPH_C32(0xa006e8a2), SPH_C32(0xf79998ee), SPH_C32(0x24ae0000),
+	  SPH_C32(0xc61a003c), SPH_C32(0xa42b6000), SPH_C32(0x06720000),
+	  SPH_C32(0x78d45ada), SPH_C32(0x44493815), SPH_C32(0x4049b15a),
+	  SPH_C32(0x6b6fc3b4) },
+	{ SPH_C32(0xc7ed0000), SPH_C32(0xfc540028), SPH_C32(0x56ed6000),
+	  SPH_C32(0xac3c0000), SPH_C32(0xa3ca187c), SPH_C32(0x61228600),
+	  SPH_C32(0x5274000c), SPH_C32(0x51215a63), SPH_C32(0xa2d70000),
+	  SPH_C32(0xf923003e), SPH_C32(0x45b18000), SPH_C32(0x9e240000),
+	  SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff), SPH_C32(0x9394f81e),
+	  SPH_C32(0x7d72190d) },
+	{ SPH_C32(0x41940000), SPH_C32(0xc36d002a), SPH_C32(0xb7778000),
+	  SPH_C32(0x346a0000), SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea),
+	  SPH_C32(0x81a94948), SPH_C32(0x473c80da), SPH_C32(0x92600000),
+	  SPH_C32(0x1cf3003e), SPH_C32(0xb145e000), SPH_C32(0xdce00000),
+	  SPH_C32(0x8e0900be), SPH_C32(0x727b649f), SPH_C32(0xb23b59f4),
+	  SPH_C32(0xcdd70139) }
+};
+
+static const sph_u32 T512_32[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xb2060000), SPH_C32(0xc5690000), SPH_C32(0x28031200),
+	  SPH_C32(0x74670000), SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8),
+	  SPH_C32(0x33d1dfec), SPH_C32(0x094e3198), SPH_C32(0xac480000),
+	  SPH_C32(0x1ba60000), SPH_C32(0x45fb1380), SPH_C32(0x03430000),
+	  SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6), SPH_C32(0xfe72c7fe),
+	  SPH_C32(0x91e478f6) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0x028b0000), SPH_C32(0x87e90001), SPH_C32(0x3c2af380),
+	  SPH_C32(0x2f560000), SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780),
+	  SPH_C32(0x55e03071), SPH_C32(0x32f62e8d), SPH_C32(0xc56b0000),
+	  SPH_C32(0xd7e60000), SPH_C32(0x2452c180), SPH_C32(0xf6c50000),
+	  SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f), SPH_C32(0x8ef57364),
+	  SPH_C32(0x70c6f340) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0x1cc50000), SPH_C32(0x59260001), SPH_C32(0x51d2f200),
+	  SPH_C32(0x58720000), SPH_C32(0xf30e4347), SPH_C32(0x8d428ece),
+	  SPH_C32(0x98432863), SPH_C32(0xaa5c67e3), SPH_C32(0x776d0000),
+	  SPH_C32(0x128f0000), SPH_C32(0x0c51d380), SPH_C32(0x82a20000),
+	  SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487), SPH_C32(0xbd24ac88),
+	  SPH_C32(0x7988c2d8) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x776d0000), SPH_C32(0x128f0000), SPH_C32(0x0c51d380),
+	  SPH_C32(0x82a20000), SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487),
+	  SPH_C32(0xbd24ac88), SPH_C32(0x7988c2d8), SPH_C32(0x6ba80000),
+	  SPH_C32(0x4ba90001), SPH_C32(0x5d832180), SPH_C32(0xdad00000),
+	  SPH_C32(0x63751974), SPH_C32(0xd089ea49), SPH_C32(0x256784eb),
+	  SPH_C32(0xd3d4a53b) },
+	{ SPH_C32(0xc56b0000), SPH_C32(0xd7e60000), SPH_C32(0x2452c180),
+	  SPH_C32(0xf6c50000), SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f),
+	  SPH_C32(0x8ef57364), SPH_C32(0x70c6f340), SPH_C32(0xc7e00000),
+	  SPH_C32(0x500f0001), SPH_C32(0x18783200), SPH_C32(0xd9930000),
+	  SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff), SPH_C32(0xdb154315),
+	  SPH_C32(0x4230ddcd) },
+	{ SPH_C32(0x69230000), SPH_C32(0xcc400000), SPH_C32(0x61a9d200),
+	  SPH_C32(0xf5860000), SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9),
+	  SPH_C32(0x7087b49a), SPH_C32(0xe1228bb6), SPH_C32(0xd9ae0000),
+	  SPH_C32(0x8ec00001), SPH_C32(0x75803380), SPH_C32(0xaeb70000),
+	  SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1), SPH_C32(0x16b65b07),
+	  SPH_C32(0xda9a94a3) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) },
+	{ SPH_C32(0xd9ae0000), SPH_C32(0x8ec00001), SPH_C32(0x75803380),
+	  SPH_C32(0xaeb70000), SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1),
+	  SPH_C32(0x16b65b07), SPH_C32(0xda9a94a3), SPH_C32(0xb08d0000),
+	  SPH_C32(0x42800001), SPH_C32(0x1429e180), SPH_C32(0x5b310000),
+	  SPH_C32(0xa98b722d), SPH_C32(0x92f0de78), SPH_C32(0x6631ef9d),
+	  SPH_C32(0x3bb81f15) },
+	{ SPH_C32(0x6ba80000), SPH_C32(0x4ba90001), SPH_C32(0x5d832180),
+	  SPH_C32(0xdad00000), SPH_C32(0x63751974), SPH_C32(0xd089ea49),
+	  SPH_C32(0x256784eb), SPH_C32(0xd3d4a53b), SPH_C32(0x1cc50000),
+	  SPH_C32(0x59260001), SPH_C32(0x51d2f200), SPH_C32(0x58720000),
+	  SPH_C32(0xf30e4347), SPH_C32(0x8d428ece), SPH_C32(0x98432863),
+	  SPH_C32(0xaa5c67e3) },
+	{ SPH_C32(0xc7e00000), SPH_C32(0x500f0001), SPH_C32(0x18783200),
+	  SPH_C32(0xd9930000), SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff),
+	  SPH_C32(0xdb154315), SPH_C32(0x4230ddcd), SPH_C32(0x028b0000),
+	  SPH_C32(0x87e90001), SPH_C32(0x3c2af380), SPH_C32(0x2f560000),
+	  SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780), SPH_C32(0x55e03071),
+	  SPH_C32(0x32f62e8d) }
+};
+
+static const sph_u32 T512_36[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xb79f0000), SPH_C32(0xf3830c00),
+	  SPH_C32(0xabf50000), SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c),
+	  SPH_C32(0x99cfe8a3), SPH_C32(0xa9350c55), SPH_C32(0x83310000),
+	  SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180), SPH_C32(0xc36b0000),
+	  SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb), SPH_C32(0x4f06b6b7),
+	  SPH_C32(0x7a915d81) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0x35a90000), SPH_C32(0x5bc80000), SPH_C32(0x95b10e80),
+	  SPH_C32(0x3e060000), SPH_C32(0x67471384), SPH_C32(0xb1868180),
+	  SPH_C32(0x7f954a8e), SPH_C32(0x2752bbaf), SPH_C32(0xcebb0000),
+	  SPH_C32(0x124b0000), SPH_C32(0xe0a50480), SPH_C32(0x6dc80000),
+	  SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f), SPH_C32(0xc01f5c5b),
+	  SPH_C32(0x3eac6d85) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0xcebb0000), SPH_C32(0x124b0000), SPH_C32(0xe0a50480),
+	  SPH_C32(0x6dc80000), SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f),
+	  SPH_C32(0xc01f5c5b), SPH_C32(0x3eac6d85), SPH_C32(0xfb120000),
+	  SPH_C32(0x49830000), SPH_C32(0x75140a00), SPH_C32(0x53ce0000),
+	  SPH_C32(0x961a45a8), SPH_C32(0xb65573ff), SPH_C32(0xbf8a16d5),
+	  SPH_C32(0x19fed62a) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0x4f250000), SPH_C32(0xfe1c0000), SPH_C32(0x86970600),
+	  SPH_C32(0xf83b0000), SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3),
+	  SPH_C32(0x2645fe76), SPH_C32(0xb0cbda7f), SPH_C32(0xb6980000),
+	  SPH_C32(0x00b70000), SPH_C32(0x499f0f00), SPH_C32(0xfd6d0000),
+	  SPH_C32(0x80637e55), SPH_C32(0x793a7b5b), SPH_C32(0x3093fc39),
+	  SPH_C32(0x5dc3e62e) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0xb6980000), SPH_C32(0x00b70000), SPH_C32(0x499f0f00),
+	  SPH_C32(0xfd6d0000), SPH_C32(0x80637e55), SPH_C32(0x793a7b5b),
+	  SPH_C32(0x3093fc39), SPH_C32(0x5dc3e62e), SPH_C32(0xf9bd0000),
+	  SPH_C32(0xfeab0000), SPH_C32(0xcf080900), SPH_C32(0x05560000),
+	  SPH_C32(0x2c97007b), SPH_C32(0x361db598), SPH_C32(0x16d6024f),
+	  SPH_C32(0xed083c51) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) },
+	{ SPH_C32(0x37060000), SPH_C32(0xece00000), SPH_C32(0x2fad0d80),
+	  SPH_C32(0x689e0000), SPH_C32(0xddca5657), SPH_C32(0x31ce47e7),
+	  SPH_C32(0xd6c95e14), SPH_C32(0xd3a451d4), SPH_C32(0xb4370000),
+	  SPH_C32(0xb79f0000), SPH_C32(0xf3830c00), SPH_C32(0xabf50000),
+	  SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c), SPH_C32(0x99cfe8a3),
+	  SPH_C32(0xa9350c55) }
+};
+
+static const sph_u32 T512_40[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0xdac80000), SPH_C32(0x36c00000), SPH_C32(0x15ae0060),
+	  SPH_C32(0x0bb10000), SPH_C32(0x6b697976), SPH_C32(0x248dd0a9),
+	  SPH_C32(0x67c3ff89), SPH_C32(0xb513679b), SPH_C32(0x584f0000),
+	  SPH_C32(0x729f0000), SPH_C32(0xe07f000a), SPH_C32(0x43790000),
+	  SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba), SPH_C32(0x5d240486),
+	  SPH_C32(0xa72142f2) },
+	{ SPH_C32(0x59920000), SPH_C32(0xf2370000), SPH_C32(0x14e90042),
+	  SPH_C32(0xe5790000), SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d),
+	  SPH_C32(0x3b36cb7b), SPH_C32(0x8bb5076c), SPH_C32(0xd0d70000),
+	  SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024), SPH_C32(0xb8370000),
+	  SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd), SPH_C32(0xf5b174ea),
+	  SPH_C32(0x41313666) },
+	{ SPH_C32(0xd10a0000), SPH_C32(0xeda30000), SPH_C32(0x6b26006c),
+	  SPH_C32(0x1e370000), SPH_C32(0xfa943185), SPH_C32(0x510c6bea),
+	  SPH_C32(0x93a3bb17), SPH_C32(0x6da573f8), SPH_C32(0xdb150000),
+	  SPH_C32(0xb6680000), SPH_C32(0xe1380028), SPH_C32(0xadb10000),
+	  SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e), SPH_C32(0x01d13074),
+	  SPH_C32(0x99872205) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0xdb150000), SPH_C32(0xb6680000), SPH_C32(0xe1380028),
+	  SPH_C32(0xadb10000), SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e),
+	  SPH_C32(0x01d13074), SPH_C32(0x99872205), SPH_C32(0x0a1f0000),
+	  SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044), SPH_C32(0xb3860000),
+	  SPH_C32(0x01283651), SPH_C32(0xa2673774), SPH_C32(0x92728b63),
+	  SPH_C32(0xf42251fd) },
+	{ SPH_C32(0x584f0000), SPH_C32(0x729f0000), SPH_C32(0xe07f000a),
+	  SPH_C32(0x43790000), SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba),
+	  SPH_C32(0x5d240486), SPH_C32(0xa72142f2), SPH_C32(0x82870000),
+	  SPH_C32(0x445f0000), SPH_C32(0xf5d1006a), SPH_C32(0x48c80000),
+	  SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613), SPH_C32(0x3ae7fb0f),
+	  SPH_C32(0x12322569) },
+	{ SPH_C32(0xd0d70000), SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024),
+	  SPH_C32(0xb8370000), SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd),
+	  SPH_C32(0xf5b174ea), SPH_C32(0x41313666), SPH_C32(0x89450000),
+	  SPH_C32(0x9f3c0000), SPH_C32(0x8b590066), SPH_C32(0x5d4e0000),
+	  SPH_C32(0x618d7938), SPH_C32(0xb6481d50), SPH_C32(0xce87bf91),
+	  SPH_C32(0xca84310a) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0x89450000), SPH_C32(0x9f3c0000), SPH_C32(0x8b590066),
+	  SPH_C32(0x5d4e0000), SPH_C32(0x618d7938), SPH_C32(0xb6481d50),
+	  SPH_C32(0xce87bf91), SPH_C32(0xca84310a), SPH_C32(0x59920000),
+	  SPH_C32(0xf2370000), SPH_C32(0x14e90042), SPH_C32(0xe5790000),
+	  SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d), SPH_C32(0x3b36cb7b),
+	  SPH_C32(0x8bb5076c) },
+	{ SPH_C32(0x0a1f0000), SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044),
+	  SPH_C32(0xb3860000), SPH_C32(0x01283651), SPH_C32(0xa2673774),
+	  SPH_C32(0x92728b63), SPH_C32(0xf42251fd), SPH_C32(0xd10a0000),
+	  SPH_C32(0xeda30000), SPH_C32(0x6b26006c), SPH_C32(0x1e370000),
+	  SPH_C32(0xfa943185), SPH_C32(0x510c6bea), SPH_C32(0x93a3bb17),
+	  SPH_C32(0x6da573f8) },
+	{ SPH_C32(0x82870000), SPH_C32(0x445f0000), SPH_C32(0xf5d1006a),
+	  SPH_C32(0x48c80000), SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613),
+	  SPH_C32(0x3ae7fb0f), SPH_C32(0x12322569), SPH_C32(0xdac80000),
+	  SPH_C32(0x36c00000), SPH_C32(0x15ae0060), SPH_C32(0x0bb10000),
+	  SPH_C32(0x6b697976), SPH_C32(0x248dd0a9), SPH_C32(0x67c3ff89),
+	  SPH_C32(0xb513679b) }
+};
+
+static const sph_u32 T512_44[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x5fae0000), SPH_C32(0x322e0000), SPH_C32(0xff47000b),
+	  SPH_C32(0x51663800), SPH_C32(0xa4457f72), SPH_C32(0x316a5179),
+	  SPH_C32(0x580b9c4d), SPH_C32(0xaa31c87f), SPH_C32(0xbf8c0000),
+	  SPH_C32(0x8d040000), SPH_C32(0x81c90014), SPH_C32(0x44c21800),
+	  SPH_C32(0xe92700be), SPH_C32(0xf8617b49), SPH_C32(0x82eb0ed3),
+	  SPH_C32(0x851bce2e) },
+	{ SPH_C32(0x1ab70000), SPH_C32(0x99220000), SPH_C32(0xcff9000a),
+	  SPH_C32(0x386c1800), SPH_C32(0x66b90d6b), SPH_C32(0x80bed174),
+	  SPH_C32(0x75da660b), SPH_C32(0x8e008768), SPH_C32(0xe7cf0000),
+	  SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015), SPH_C32(0x82a92000),
+	  SPH_C32(0x0e105c62), SPH_C32(0x81cc4494), SPH_C32(0x2e98f0bc),
+	  SPH_C32(0xbf5fb79f) },
+	{ SPH_C32(0x42f40000), SPH_C32(0x195c0000), SPH_C32(0xb7ca000b),
+	  SPH_C32(0xfe072000), SPH_C32(0x818e51b7), SPH_C32(0xf913eea9),
+	  SPH_C32(0xd9a99864), SPH_C32(0xb444fed9), SPH_C32(0xfa950000),
+	  SPH_C32(0x26080000), SPH_C32(0xb1770015), SPH_C32(0x2dc83800),
+	  SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44), SPH_C32(0xaf3af495),
+	  SPH_C32(0xa12a8139) },
+	{ SPH_C32(0xa2d60000), SPH_C32(0xa6760000), SPH_C32(0xc9440014),
+	  SPH_C32(0xeba30000), SPH_C32(0xccec2e7b), SPH_C32(0x3018c499),
+	  SPH_C32(0x03490afa), SPH_C32(0x9b6ef888), SPH_C32(0xa53b0000),
+	  SPH_C32(0x14260000), SPH_C32(0x4e30001e), SPH_C32(0x7cae0000),
+	  SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d), SPH_C32(0xf73168d8),
+	  SPH_C32(0x0b1b4946) },
+	{ SPH_C32(0xfa950000), SPH_C32(0x26080000), SPH_C32(0xb1770015),
+	  SPH_C32(0x2dc83800), SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44),
+	  SPH_C32(0xaf3af495), SPH_C32(0xa12a8139), SPH_C32(0xb8610000),
+	  SPH_C32(0x3f540000), SPH_C32(0x06bd001e), SPH_C32(0xd3cf1800),
+	  SPH_C32(0xaa552310), SPH_C32(0xb0a615ed), SPH_C32(0x76936cf1),
+	  SPH_C32(0x156e7fe0) },
+	{ SPH_C32(0xbf8c0000), SPH_C32(0x8d040000), SPH_C32(0x81c90014),
+	  SPH_C32(0x44c21800), SPH_C32(0xe92700be), SPH_C32(0xf8617b49),
+	  SPH_C32(0x82eb0ed3), SPH_C32(0x851bce2e), SPH_C32(0xe0220000),
+	  SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f), SPH_C32(0x15a42000),
+	  SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30), SPH_C32(0xdae0929e),
+	  SPH_C32(0x2f2a0651) },
+	{ SPH_C32(0xe7cf0000), SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015),
+	  SPH_C32(0x82a92000), SPH_C32(0x0e105c62), SPH_C32(0x81cc4494),
+	  SPH_C32(0x2e98f0bc), SPH_C32(0xbf5fb79f), SPH_C32(0xfd780000),
+	  SPH_C32(0x94580000), SPH_C32(0x3603001f), SPH_C32(0xbac53800),
+	  SPH_C32(0x68a95109), SPH_C32(0x017295e0), SPH_C32(0x5b4296b7),
+	  SPH_C32(0x315f30f7) }
+};
+
+static const sph_u32 T512_48[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0x1c9e0000), SPH_C32(0x66c30000), SPH_C32(0x0d110000),
+	  SPH_C32(0x5fdac000), SPH_C32(0x32596759), SPH_C32(0x8cc0f80c),
+	  SPH_C32(0xaece29ff), SPH_C32(0xc6afe775), SPH_C32(0x288b0000),
+	  SPH_C32(0x0d770000), SPH_C32(0x5db60000), SPH_C32(0x1f991800),
+	  SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3), SPH_C32(0x5b06af40),
+	  SPH_C32(0x19e93cbf) },
+	{ SPH_C32(0xa4b10000), SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000),
+	  SPH_C32(0x4b9e9000), SPH_C32(0xf30107fb), SPH_C32(0xbde710e0),
+	  SPH_C32(0x805696dc), SPH_C32(0x93b1da1b), SPH_C32(0x2a790000),
+	  SPH_C32(0xaff60000), SPH_C32(0xda890000), SPH_C32(0xfcf56000),
+	  SPH_C32(0x686d3607), SPH_C32(0xdadc8975), SPH_C32(0x9fc49d77),
+	  SPH_C32(0x66db1921) },
+	{ SPH_C32(0xa6430000), SPH_C32(0x756e0000), SPH_C32(0xbaf60000),
+	  SPH_C32(0xa8f2e800), SPH_C32(0xed1c7314), SPH_C32(0xbada3b36),
+	  SPH_C32(0x4494a4eb), SPH_C32(0xec83ff85), SPH_C32(0x90a40000),
+	  SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000), SPH_C32(0x0bdd4800),
+	  SPH_C32(0xb728224a), SPH_C32(0xecc64a4f), SPH_C32(0x759e1063),
+	  SPH_C32(0x4cf701d1) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x90a40000), SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000),
+	  SPH_C32(0x0bdd4800), SPH_C32(0xb728224a), SPH_C32(0xecc64a4f),
+	  SPH_C32(0x759e1063), SPH_C32(0x4cf701d1), SPH_C32(0x36e70000),
+	  SPH_C32(0xc9350000), SPH_C32(0xd7980000), SPH_C32(0xa32fa000),
+	  SPH_C32(0x5a34515e), SPH_C32(0x561c7179), SPH_C32(0x310ab488),
+	  SPH_C32(0xa074fe54) },
+	{ SPH_C32(0x288b0000), SPH_C32(0x0d770000), SPH_C32(0x5db60000),
+	  SPH_C32(0x1f991800), SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3),
+	  SPH_C32(0x5b06af40), SPH_C32(0x19e93cbf), SPH_C32(0x34150000),
+	  SPH_C32(0x6bb40000), SPH_C32(0x50a70000), SPH_C32(0x4043d800),
+	  SPH_C32(0x442925b1), SPH_C32(0x51215aaf), SPH_C32(0xf5c886bf),
+	  SPH_C32(0xdf46dbca) },
+	{ SPH_C32(0x2a790000), SPH_C32(0xaff60000), SPH_C32(0xda890000),
+	  SPH_C32(0xfcf56000), SPH_C32(0x686d3607), SPH_C32(0xdadc8975),
+	  SPH_C32(0x9fc49d77), SPH_C32(0x66db1921), SPH_C32(0x8ec80000),
+	  SPH_C32(0x78190000), SPH_C32(0xe7400000), SPH_C32(0xb76bf000),
+	  SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995), SPH_C32(0x1f920bab),
+	  SPH_C32(0xf56ac33a) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) },
+	{ SPH_C32(0x8ec80000), SPH_C32(0x78190000), SPH_C32(0xe7400000),
+	  SPH_C32(0xb76bf000), SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995),
+	  SPH_C32(0x1f920bab), SPH_C32(0xf56ac33a), SPH_C32(0xa4b10000),
+	  SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000), SPH_C32(0x4b9e9000),
+	  SPH_C32(0xf30107fb), SPH_C32(0xbde710e0), SPH_C32(0x805696dc),
+	  SPH_C32(0x93b1da1b) },
+	{ SPH_C32(0x36e70000), SPH_C32(0xc9350000), SPH_C32(0xd7980000),
+	  SPH_C32(0xa32fa000), SPH_C32(0x5a34515e), SPH_C32(0x561c7179),
+	  SPH_C32(0x310ab488), SPH_C32(0xa074fe54), SPH_C32(0xa6430000),
+	  SPH_C32(0x756e0000), SPH_C32(0xbaf60000), SPH_C32(0xa8f2e800),
+	  SPH_C32(0xed1c7314), SPH_C32(0xbada3b36), SPH_C32(0x4494a4eb),
+	  SPH_C32(0xec83ff85) },
+	{ SPH_C32(0x34150000), SPH_C32(0x6bb40000), SPH_C32(0x50a70000),
+	  SPH_C32(0x4043d800), SPH_C32(0x442925b1), SPH_C32(0x51215aaf),
+	  SPH_C32(0xf5c886bf), SPH_C32(0xdf46dbca), SPH_C32(0x1c9e0000),
+	  SPH_C32(0x66c30000), SPH_C32(0x0d110000), SPH_C32(0x5fdac000),
+	  SPH_C32(0x32596759), SPH_C32(0x8cc0f80c), SPH_C32(0xaece29ff),
+	  SPH_C32(0xc6afe775) }
+};
+
+static const sph_u32 T512_52[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0x52190000), SPH_C32(0x3b780000), SPH_C32(0x19080000),
+	  SPH_C32(0xac000600), SPH_C32(0xa0c35180), SPH_C32(0x49b17387),
+	  SPH_C32(0xfac3d23d), SPH_C32(0x99353c49), SPH_C32(0x13c30000),
+	  SPH_C32(0xe4e20000), SPH_C32(0xc2910000), SPH_C32(0x5e7f00a0),
+	  SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8), SPH_C32(0xb825551a),
+	  SPH_C32(0x0d71a4a6) },
+	{ SPH_C32(0x44f40000), SPH_C32(0x2e100000), SPH_C32(0xf4df0000),
+	  SPH_C32(0x9e5d0420), SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4),
+	  SPH_C32(0x19b62a95), SPH_C32(0x18c8c541), SPH_C32(0xf5eb0000),
+	  SPH_C32(0xa8a90000), SPH_C32(0x6ac40000), SPH_C32(0x8daf0240),
+	  SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112), SPH_C32(0x90b053ae),
+	  SPH_C32(0xda2bec31) },
+	{ SPH_C32(0xa2dc0000), SPH_C32(0x625b0000), SPH_C32(0x5c8a0000),
+	  SPH_C32(0x4d8d06c0), SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e),
+	  SPH_C32(0x31232c21), SPH_C32(0xcf928dd6), SPH_C32(0x052e0000),
+	  SPH_C32(0xf18a0000), SPH_C32(0x2f460000), SPH_C32(0x6c220280),
+	  SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b), SPH_C32(0x5b50adb2),
+	  SPH_C32(0x8c8c5dae) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x052e0000), SPH_C32(0xf18a0000), SPH_C32(0x2f460000),
+	  SPH_C32(0x6c220280), SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b),
+	  SPH_C32(0x5b50adb2), SPH_C32(0x8c8c5dae), SPH_C32(0xa7f20000),
+	  SPH_C32(0x93d10000), SPH_C32(0x73cc0000), SPH_C32(0x21af0440),
+	  SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295), SPH_C32(0x6a738193),
+	  SPH_C32(0x431ed078) },
+	{ SPH_C32(0x13c30000), SPH_C32(0xe4e20000), SPH_C32(0xc2910000),
+	  SPH_C32(0x5e7f00a0), SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8),
+	  SPH_C32(0xb825551a), SPH_C32(0x0d71a4a6), SPH_C32(0x41da0000),
+	  SPH_C32(0xdf9a0000), SPH_C32(0xdb990000), SPH_C32(0xf27f06a0),
+	  SPH_C32(0xb5145dab), SPH_C32(0x06e9124f), SPH_C32(0x42e68727),
+	  SPH_C32(0x944498ef) },
+	{ SPH_C32(0xf5eb0000), SPH_C32(0xa8a90000), SPH_C32(0x6ac40000),
+	  SPH_C32(0x8daf0240), SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112),
+	  SPH_C32(0x90b053ae), SPH_C32(0xda2bec31), SPH_C32(0xb11f0000),
+	  SPH_C32(0x86b90000), SPH_C32(0x9e1b0000), SPH_C32(0x13f20660),
+	  SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6), SPH_C32(0x8906793b),
+	  SPH_C32(0xc2e32970) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0xb11f0000), SPH_C32(0x86b90000), SPH_C32(0x9e1b0000),
+	  SPH_C32(0x13f20660), SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6),
+	  SPH_C32(0x8906793b), SPH_C32(0xc2e32970), SPH_C32(0x44f40000),
+	  SPH_C32(0x2e100000), SPH_C32(0xf4df0000), SPH_C32(0x9e5d0420),
+	  SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4), SPH_C32(0x19b62a95),
+	  SPH_C32(0x18c8c541) },
+	{ SPH_C32(0xa7f20000), SPH_C32(0x93d10000), SPH_C32(0x73cc0000),
+	  SPH_C32(0x21af0440), SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295),
+	  SPH_C32(0x6a738193), SPH_C32(0x431ed078), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x625b0000), SPH_C32(0x5c8a0000), SPH_C32(0x4d8d06c0),
+	  SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e), SPH_C32(0x31232c21),
+	  SPH_C32(0xcf928dd6) },
+	{ SPH_C32(0x41da0000), SPH_C32(0xdf9a0000), SPH_C32(0xdb990000),
+	  SPH_C32(0xf27f06a0), SPH_C32(0xb5145dab), SPH_C32(0x06e9124f),
+	  SPH_C32(0x42e68727), SPH_C32(0x944498ef), SPH_C32(0x52190000),
+	  SPH_C32(0x3b780000), SPH_C32(0x19080000), SPH_C32(0xac000600),
+	  SPH_C32(0xa0c35180), SPH_C32(0x49b17387), SPH_C32(0xfac3d23d),
+	  SPH_C32(0x99353c49) }
+};
+
+static const sph_u32 T512_56[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0x24800000), SPH_C32(0x01410000), SPH_C32(0xea4b0000),
+	  SPH_C32(0x07b000b3), SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5),
+	  SPH_C32(0x73e6aebc), SPH_C32(0x495bbb99), SPH_C32(0x95ff0000),
+	  SPH_C32(0xfe0d0000), SPH_C32(0xe1580000), SPH_C32(0x62f80141),
+	  SPH_C32(0x3127a59f), SPH_C32(0xff43f26b), SPH_C32(0x61c38617),
+	  SPH_C32(0x59ea6d0a) },
+	{ SPH_C32(0x7b6c0000), SPH_C32(0x280a0000), SPH_C32(0x73990000),
+	  SPH_C32(0x496000a1), SPH_C32(0xa5768de3), SPH_C32(0xc42f093c),
+	  SPH_C32(0x24f2a563), SPH_C32(0x79f5076e), SPH_C32(0xca570000),
+	  SPH_C32(0xa80e0000), SPH_C32(0xa2f60000), SPH_C32(0x060b0152),
+	  SPH_C32(0x14592320), SPH_C32(0xec526625), SPH_C32(0x35dd13a8),
+	  SPH_C32(0xd74eb663) },
+	{ SPH_C32(0x24c40000), SPH_C32(0x7e090000), SPH_C32(0x30370000),
+	  SPH_C32(0x2d9300b2), SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72),
+	  SPH_C32(0x70ec30dc), SPH_C32(0xf751dc07), SPH_C32(0xca130000),
+	  SPH_C32(0xd7460000), SPH_C32(0x788a0000), SPH_C32(0x2c280153),
+	  SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2), SPH_C32(0x36d78dc8),
+	  SPH_C32(0x6944d1fd) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) },
+	{ SPH_C32(0xca130000), SPH_C32(0xd7460000), SPH_C32(0x788a0000),
+	  SPH_C32(0x2c280153), SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2),
+	  SPH_C32(0x36d78dc8), SPH_C32(0x6944d1fd), SPH_C32(0xeed70000),
+	  SPH_C32(0xa94f0000), SPH_C32(0x48bd0000), SPH_C32(0x01bb01e1),
+	  SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0), SPH_C32(0x463bbd14),
+	  SPH_C32(0x9e150dfa) },
+	{ SPH_C32(0x95ff0000), SPH_C32(0xfe0d0000), SPH_C32(0xe1580000),
+	  SPH_C32(0x62f80141), SPH_C32(0x3127a59f), SPH_C32(0xff43f26b),
+	  SPH_C32(0x61c38617), SPH_C32(0x59ea6d0a), SPH_C32(0xb17f0000),
+	  SPH_C32(0xff4c0000), SPH_C32(0x0b130000), SPH_C32(0x654801f2),
+	  SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e), SPH_C32(0x122528ab),
+	  SPH_C32(0x10b1d693) },
+	{ SPH_C32(0xca570000), SPH_C32(0xa80e0000), SPH_C32(0xa2f60000),
+	  SPH_C32(0x060b0152), SPH_C32(0x14592320), SPH_C32(0xec526625),
+	  SPH_C32(0x35dd13a8), SPH_C32(0xd74eb663), SPH_C32(0xb13b0000),
+	  SPH_C32(0x80040000), SPH_C32(0xd16f0000), SPH_C32(0x4f6b01f3),
+	  SPH_C32(0xb12faec3), SPH_C32(0x287d6f19), SPH_C32(0x112fb6cb),
+	  SPH_C32(0xaebbb10d) }
+};
+
+static const sph_u32 T512_60[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0xabe70000), SPH_C32(0x9e0d0000), SPH_C32(0xaf270000),
+	  SPH_C32(0x3d180005), SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695),
+	  SPH_C32(0xb5c347eb), SPH_C32(0x3c5dfffe), SPH_C32(0x033d0000),
+	  SPH_C32(0x08b30000), SPH_C32(0xf33a0000), SPH_C32(0x3ac20007),
+	  SPH_C32(0x51298a50), SPH_C32(0x6b6e661f), SPH_C32(0x0ea5cfe3),
+	  SPH_C32(0xe6da7ffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x02ae0000), SPH_C32(0xef310000), SPH_C32(0x1ec10000),
+	  SPH_C32(0xf5ce000c), SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231),
+	  SPH_C32(0x0893ae02), SPH_C32(0xb5b5e185), SPH_C32(0x3af20000),
+	  SPH_C32(0x4a3b0000), SPH_C32(0x0be70000), SPH_C32(0x51060001),
+	  SPH_C32(0xc78fb695), SPH_C32(0x4577d386), SPH_C32(0x2ba87f5a),
+	  SPH_C32(0xa191f5d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0xaa740000), SPH_C32(0x798f0000), SPH_C32(0x42dc0000),
+	  SPH_C32(0xf214000e), SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb),
+	  SPH_C32(0xb3f5260a), SPH_C32(0x6f326185), SPH_C32(0x91150000),
+	  SPH_C32(0xd4360000), SPH_C32(0xa4c00000), SPH_C32(0x6c1e0004),
+	  SPH_C32(0xebc0a946), SPH_C32(0x3181c513), SPH_C32(0x9e6b38b1),
+	  SPH_C32(0x9dcc0a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x91150000), SPH_C32(0xd4360000), SPH_C32(0xa4c00000),
+	  SPH_C32(0x6c1e0004), SPH_C32(0xebc0a946), SPH_C32(0x3181c513),
+	  SPH_C32(0x9e6b38b1), SPH_C32(0x9dcc0a29), SPH_C32(0x3b610000),
+	  SPH_C32(0xadb90000), SPH_C32(0xe61c0000), SPH_C32(0x9e0a000a),
+	  SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8), SPH_C32(0x2d9e1ebb),
+	  SPH_C32(0xf2fe6bac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x39cf0000), SPH_C32(0x42880000), SPH_C32(0xf8dd0000),
+	  SPH_C32(0x6bc40006), SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599),
+	  SPH_C32(0x250db0b9), SPH_C32(0x474b8a29), SPH_C32(0x90860000),
+	  SPH_C32(0x33b40000), SPH_C32(0x493b0000), SPH_C32(0xa312000f),
+	  SPH_C32(0x6610241e), SPH_C32(0x8d22713d), SPH_C32(0x985d5950),
+	  SPH_C32(0xcea39452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x90860000), SPH_C32(0x33b40000), SPH_C32(0x493b0000),
+	  SPH_C32(0xa312000f), SPH_C32(0x6610241e), SPH_C32(0x8d22713d),
+	  SPH_C32(0x985d5950), SPH_C32(0xcea39452), SPH_C32(0xa9490000),
+	  SPH_C32(0x713c0000), SPH_C32(0xb1e60000), SPH_C32(0xc8d60009),
+	  SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4), SPH_C32(0xbd50e9e9),
+	  SPH_C32(0x89e81e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) },
+	{ SPH_C32(0x385c0000), SPH_C32(0xa50a0000), SPH_C32(0x15260000),
+	  SPH_C32(0xa4c8000d), SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7),
+	  SPH_C32(0x233bd158), SPH_C32(0x14241452), SPH_C32(0x02ae0000),
+	  SPH_C32(0xef310000), SPH_C32(0x1ec10000), SPH_C32(0xf5ce000c),
+	  SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231), SPH_C32(0x0893ae02),
+	  SPH_C32(0xb5b5e185) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 4][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		rp = &T512_4[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[1]; \
+		rp = &T512_8[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_12[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[2]; \
+		rp = &T512_16[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_20[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[3]; \
+		rp = &T512_24[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_28[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[4]; \
+		rp = &T512_32[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_36[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[5]; \
+		rp = &T512_40[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_44[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[6]; \
+		rp = &T512_48[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_52[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[7]; \
+		rp = &T512_56[acc >> 4][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_60[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 5
+
+static const sph_u32 T512_0[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x774f4800), SPH_C32(0x22540000), SPH_C32(0x31110000),
+	  SPH_C32(0x5ab00000), SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8),
+	  SPH_C32(0x69744ba2), SPH_C32(0x893fd19d), SPH_C32(0xab863000),
+	  SPH_C32(0xc1830000), SPH_C32(0x07b10000), SPH_C32(0xe7870000),
+	  SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5), SPH_C32(0x066b5ec5),
+	  SPH_C32(0x45600cf3) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0xbfdc0c00), SPH_C32(0x786a0000), SPH_C32(0x66960000),
+	  SPH_C32(0x16e60000), SPH_C32(0x2af76720), SPH_C32(0x19b270bd),
+	  SPH_C32(0x41c239e5), SPH_C32(0xa4ee2836), SPH_C32(0xffae6c00),
+	  SPH_C32(0x2b6e0000), SPH_C32(0xc2670000), SPH_C32(0x46420000),
+	  SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924), SPH_C32(0x6ddb1f58),
+	  SPH_C32(0x107b3b71) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) },
+	{ SPH_C32(0xebf45000), SPH_C32(0x92870000), SPH_C32(0xa3400000),
+	  SPH_C32(0xb7230000), SPH_C32(0x99550050), SPH_C32(0x8d17b45c),
+	  SPH_C32(0x2a727878), SPH_C32(0xf1f51fb4), SPH_C32(0x63157400),
+	  SPH_C32(0x9bbd0000), SPH_C32(0x50360000), SPH_C32(0xabd10000),
+	  SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0), SPH_C32(0x2edd2c82),
+	  SPH_C32(0x68b1f558) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0x0a238800), SPH_C32(0xac5e0000), SPH_C32(0x068c0000),
+	  SPH_C32(0x39860000), SPH_C32(0x7d136aea), SPH_C32(0xae64920c),
+	  SPH_C32(0xf1244866), SPH_C32(0x512978db), SPH_C32(0x71502400),
+	  SPH_C32(0x79320000), SPH_C32(0x48bd0000), SPH_C32(0xb0c90000),
+	  SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2), SPH_C32(0x64e7a370),
+	  SPH_C32(0x8286c938) },
+	{ SPH_C32(0x7d6cc000), SPH_C32(0x8e0a0000), SPH_C32(0x379d0000),
+	  SPH_C32(0x63360000), SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4),
+	  SPH_C32(0x985003c4), SPH_C32(0xd816a946), SPH_C32(0xdad61400),
+	  SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000), SPH_C32(0x574e0000),
+	  SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67), SPH_C32(0x628cfdb5),
+	  SPH_C32(0xc7e6c5cb) },
+	{ SPH_C32(0x5e0bd400), SPH_C32(0x46b30000), SPH_C32(0xc35a0000),
+	  SPH_C32(0x98430000), SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed),
+	  SPH_C32(0x9a9409fb), SPH_C32(0x04324f59), SPH_C32(0xedeb3c00),
+	  SPH_C32(0xc9e10000), SPH_C32(0xdaec0000), SPH_C32(0x5d5a0000),
+	  SPH_C32(0x8e04230e), SPH_C32(0xede46656), SPH_C32(0x27e190aa),
+	  SPH_C32(0xfa4c0711) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0x96989000), SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000),
+	  SPH_C32(0xd4150000), SPH_C32(0x242929af), SPH_C32(0x4f7047f8),
+	  SPH_C32(0xb2227bbc), SPH_C32(0x29e3b6f2), SPH_C32(0xb9c36000),
+	  SPH_C32(0x230c0000), SPH_C32(0x1f3a0000), SPH_C32(0xfc9f0000),
+	  SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7), SPH_C32(0x4c51d137),
+	  SPH_C32(0xaf573093) },
+	{ SPH_C32(0xe1d7d800), SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000),
+	  SPH_C32(0x8ea50000), SPH_C32(0xe4466aba), SPH_C32(0x23732650),
+	  SPH_C32(0xdb56301e), SPH_C32(0xa0dc676f), SPH_C32(0x12455000),
+	  SPH_C32(0xe28f0000), SPH_C32(0x188b0000), SPH_C32(0x1b180000),
+	  SPH_C32(0xd9301e32), SPH_C32(0xd0baef72), SPH_C32(0x4a3a8ff2),
+	  SPH_C32(0xea373c60) },
+	{ SPH_C32(0xc2b0cc00), SPH_C32(0xf6600000), SPH_C32(0x510b0000),
+	  SPH_C32(0x75d00000), SPH_C32(0x978b4edf), SPH_C32(0xdbd58319),
+	  SPH_C32(0xd9923a21), SPH_C32(0x7cf88170), SPH_C32(0x25787800),
+	  SPH_C32(0x93df0000), SPH_C32(0x8d6b0000), SPH_C32(0x110c0000),
+	  SPH_C32(0x649c073b), SPH_C32(0x98557743), SPH_C32(0x0f57e2ed),
+	  SPH_C32(0xd79dfeba) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0x650a1800), SPH_C32(0xc0db0000), SPH_C32(0x299a0000),
+	  SPH_C32(0x41a80000), SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda),
+	  SPH_C32(0x234ec450), SPH_C32(0x6308edfd), SPH_C32(0x5814b800),
+	  SPH_C32(0x1dd50000), SPH_C32(0xbaf60000), SPH_C32(0x723a0000),
+	  SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7), SPH_C32(0x9707e129),
+	  SPH_C32(0x0f8b57fc) },
+	{ SPH_C32(0x12455000), SPH_C32(0xe28f0000), SPH_C32(0x188b0000),
+	  SPH_C32(0x1b180000), SPH_C32(0xd9301e32), SPH_C32(0xd0baef72),
+	  SPH_C32(0x4a3a8ff2), SPH_C32(0xea373c60), SPH_C32(0xf3928800),
+	  SPH_C32(0xdc560000), SPH_C32(0xbd470000), SPH_C32(0x95bd0000),
+	  SPH_C32(0x3d767488), SPH_C32(0xf3c9c922), SPH_C32(0x916cbfec),
+	  SPH_C32(0x4aeb5b0f) },
+	{ SPH_C32(0x31224400), SPH_C32(0x2a360000), SPH_C32(0xec4c0000),
+	  SPH_C32(0xe06d0000), SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b),
+	  SPH_C32(0x48fe85cd), SPH_C32(0x3613da7f), SPH_C32(0xc4afa000),
+	  SPH_C32(0xad060000), SPH_C32(0x28a70000), SPH_C32(0x9fa90000),
+	  SPH_C32(0x80da6d81), SPH_C32(0xbb265113), SPH_C32(0xd401d2f3),
+	  SPH_C32(0x774199d5) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0xf9b10000), SPH_C32(0x70080000), SPH_C32(0xbbcb0000),
+	  SPH_C32(0xac3b0000), SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e),
+	  SPH_C32(0x6048f78a), SPH_C32(0x1bc223d4), SPH_C32(0x9087fc00),
+	  SPH_C32(0x47eb0000), SPH_C32(0xed710000), SPH_C32(0x3e6c0000),
+	  SPH_C32(0x33780af1), SPH_C32(0x2f8395f2), SPH_C32(0xbfb1936e),
+	  SPH_C32(0x225aae57) },
+	{ SPH_C32(0x8efe4800), SPH_C32(0x525c0000), SPH_C32(0x8ada0000),
+	  SPH_C32(0xf68b0000), SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86),
+	  SPH_C32(0x093cbc28), SPH_C32(0x92fdf249), SPH_C32(0x3b01cc00),
+	  SPH_C32(0x86680000), SPH_C32(0xeac00000), SPH_C32(0xd9eb0000),
+	  SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837), SPH_C32(0xb9dacdab),
+	  SPH_C32(0x673aa2a4) },
+	{ SPH_C32(0xad995c00), SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000),
+	  SPH_C32(0x0dfe0000), SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf),
+	  SPH_C32(0x0bf8b617), SPH_C32(0x4ed91456), SPH_C32(0x0c3ce400),
+	  SPH_C32(0xf7380000), SPH_C32(0x7f200000), SPH_C32(0xd3ff0000),
+	  SPH_C32(0x6a4249b4), SPH_C32(0xce974006), SPH_C32(0xfcb7a0b4),
+	  SPH_C32(0x5a90607e) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0x4c4e8400), SPH_C32(0xa43c0000), SPH_C32(0xdbd10000),
+	  SPH_C32(0x835b0000), SPH_C32(0x178113a8), SPH_C32(0xea7bb99f),
+	  SPH_C32(0xd0ae8609), SPH_C32(0xee057339), SPH_C32(0x1e79b400),
+	  SPH_C32(0x15b70000), SPH_C32(0x67ab0000), SPH_C32(0xc8e70000),
+	  SPH_C32(0xb3725786), SPH_C32(0x1e2daf74), SPH_C32(0xb68d2f46),
+	  SPH_C32(0xb0a75c1e) },
+	{ SPH_C32(0x3b01cc00), SPH_C32(0x86680000), SPH_C32(0xeac00000),
+	  SPH_C32(0xd9eb0000), SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837),
+	  SPH_C32(0xb9dacdab), SPH_C32(0x673aa2a4), SPH_C32(0xb5ff8400),
+	  SPH_C32(0xd4340000), SPH_C32(0x601a0000), SPH_C32(0x2f600000),
+	  SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1), SPH_C32(0xb0e67183),
+	  SPH_C32(0xf5c750ed) },
+	{ SPH_C32(0x1866d800), SPH_C32(0x4ed10000), SPH_C32(0x1e070000),
+	  SPH_C32(0x229e0000), SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e),
+	  SPH_C32(0xbb1ec794), SPH_C32(0xbb1e44bb), SPH_C32(0x82c2ac00),
+	  SPH_C32(0xa5640000), SPH_C32(0xf5fa0000), SPH_C32(0x25740000),
+	  SPH_C32(0xea4814c3), SPH_C32(0xff397a80), SPH_C32(0xf58b1c9c),
+	  SPH_C32(0xc86d9237) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) },
+	{ SPH_C32(0xd0f59c00), SPH_C32(0x14ef0000), SPH_C32(0x49800000),
+	  SPH_C32(0x6ec80000), SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b),
+	  SPH_C32(0x93a8b5d3), SPH_C32(0x96cfbd10), SPH_C32(0xd6eaf000),
+	  SPH_C32(0x4f890000), SPH_C32(0x302c0000), SPH_C32(0x84b10000),
+	  SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61), SPH_C32(0x9e3b5d01),
+	  SPH_C32(0x9d76a5b5) },
+	{ SPH_C32(0xa7bad400), SPH_C32(0x36bb0000), SPH_C32(0x78910000),
+	  SPH_C32(0x34780000), SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3),
+	  SPH_C32(0xfadcfe71), SPH_C32(0x1ff06c8d), SPH_C32(0x7d6cc000),
+	  SPH_C32(0x8e0a0000), SPH_C32(0x379d0000), SPH_C32(0x63360000),
+	  SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4), SPH_C32(0x985003c4),
+	  SPH_C32(0xd816a946) },
+	{ SPH_C32(0x84ddc000), SPH_C32(0xfe020000), SPH_C32(0x8c560000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a),
+	  SPH_C32(0xf818f44e), SPH_C32(0xc3d48a92), SPH_C32(0x4a51e800),
+	  SPH_C32(0xff5a0000), SPH_C32(0xa27d0000), SPH_C32(0x69220000),
+	  SPH_C32(0x00d030f6), SPH_C32(0x8a886b95), SPH_C32(0xdd3d6edb),
+	  SPH_C32(0xe5bc6b9c) }
+};
+
+static const sph_u32 T512_5[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0x078c0300), SPH_C32(0xa78f0000), SPH_C32(0x4f750000),
+	  SPH_C32(0xbd6b0000), SPH_C32(0x69875721), SPH_C32(0xed2450ba),
+	  SPH_C32(0x28ecbf49), SPH_C32(0xf3c74ebb), SPH_C32(0x7d5c0050),
+	  SPH_C32(0xeb690000), SPH_C32(0x79460000), SPH_C32(0x7ae10000),
+	  SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912), SPH_C32(0x4ba936b9),
+	  SPH_C32(0x6dbdf830) },
+	{ SPH_C32(0x5b3c0210), SPH_C32(0x36b10000), SPH_C32(0x0b6c0000),
+	  SPH_C32(0x35e70000), SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc),
+	  SPH_C32(0x7d22556c), SPH_C32(0x619b0a52), SPH_C32(0x95db0120),
+	  SPH_C32(0x761b0000), SPH_C32(0x6b9d0000), SPH_C32(0xaec30000),
+	  SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51), SPH_C32(0x055183a1),
+	  SPH_C32(0x0c35eb81) },
+	{ SPH_C32(0xb3bb0360), SPH_C32(0xabc30000), SPH_C32(0x19b70000),
+	  SPH_C32(0xe1c50000), SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f),
+	  SPH_C32(0x33dae074), SPH_C32(0x001319e3), SPH_C32(0x21ec0140),
+	  SPH_C32(0x7a570000), SPH_C32(0x3d5f0000), SPH_C32(0xf26d0000),
+	  SPH_C32(0xfae130de), SPH_C32(0xc4dd1474), SPH_C32(0x1e67dc9c),
+	  SPH_C32(0xffe1bcd9) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x21ec0140), SPH_C32(0x7a570000), SPH_C32(0x3d5f0000),
+	  SPH_C32(0xf26d0000), SPH_C32(0xfae130de), SPH_C32(0xc4dd1474),
+	  SPH_C32(0x1e67dc9c), SPH_C32(0xffe1bcd9), SPH_C32(0x92570220),
+	  SPH_C32(0xd1940000), SPH_C32(0x24e80000), SPH_C32(0x13a80000),
+	  SPH_C32(0x073278c0), SPH_C32(0x12c7bceb), SPH_C32(0x2dbd3ce8),
+	  SPH_C32(0xfff2a53a) },
+	{ SPH_C32(0x7d5c0050), SPH_C32(0xeb690000), SPH_C32(0x79460000),
+	  SPH_C32(0x7ae10000), SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912),
+	  SPH_C32(0x4ba936b9), SPH_C32(0x6dbdf830), SPH_C32(0x7ad00350),
+	  SPH_C32(0x4ce60000), SPH_C32(0x36330000), SPH_C32(0xc78a0000),
+	  SPH_C32(0xf5ba13e7), SPH_C32(0xbbe659a8), SPH_C32(0x634589f0),
+	  SPH_C32(0x9e7ab68b) },
+	{ SPH_C32(0x95db0120), SPH_C32(0x761b0000), SPH_C32(0x6b9d0000),
+	  SPH_C32(0xaec30000), SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51),
+	  SPH_C32(0x055183a1), SPH_C32(0x0c35eb81), SPH_C32(0xcee70330),
+	  SPH_C32(0x40aa0000), SPH_C32(0x60f10000), SPH_C32(0x9b240000),
+	  SPH_C32(0x61ee0cd8), SPH_C32(0x80d8a18d), SPH_C32(0x7873d6cd),
+	  SPH_C32(0x6daee1d3) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) },
+	{ SPH_C32(0xcee70330), SPH_C32(0x40aa0000), SPH_C32(0x60f10000),
+	  SPH_C32(0x9b240000), SPH_C32(0x61ee0cd8), SPH_C32(0x80d8a18d),
+	  SPH_C32(0x7873d6cd), SPH_C32(0x6daee1d3), SPH_C32(0x5b3c0210),
+	  SPH_C32(0x36b10000), SPH_C32(0x0b6c0000), SPH_C32(0x35e70000),
+	  SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc), SPH_C32(0x7d22556c),
+	  SPH_C32(0x619b0a52) },
+	{ SPH_C32(0x92570220), SPH_C32(0xd1940000), SPH_C32(0x24e80000),
+	  SPH_C32(0x13a80000), SPH_C32(0x073278c0), SPH_C32(0x12c7bceb),
+	  SPH_C32(0x2dbd3ce8), SPH_C32(0xfff2a53a), SPH_C32(0xb3bb0360),
+	  SPH_C32(0xabc30000), SPH_C32(0x19b70000), SPH_C32(0xe1c50000),
+	  SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f), SPH_C32(0x33dae074),
+	  SPH_C32(0x001319e3) },
+	{ SPH_C32(0x7ad00350), SPH_C32(0x4ce60000), SPH_C32(0x36330000),
+	  SPH_C32(0xc78a0000), SPH_C32(0xf5ba13e7), SPH_C32(0xbbe659a8),
+	  SPH_C32(0x634589f0), SPH_C32(0x9e7ab68b), SPH_C32(0x078c0300),
+	  SPH_C32(0xa78f0000), SPH_C32(0x4f750000), SPH_C32(0xbd6b0000),
+	  SPH_C32(0x69875721), SPH_C32(0xed2450ba), SPH_C32(0x28ecbf49),
+	  SPH_C32(0xf3c74ebb) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0xfcdd3d70), SPH_C32(0x249b0000), SPH_C32(0x73fc0000),
+	  SPH_C32(0x25430000), SPH_C32(0x3ce9564b), SPH_C32(0x1968d83b),
+	  SPH_C32(0x0951d238), SPH_C32(0x80063774), SPH_C32(0x97501460),
+	  SPH_C32(0xc4f50000), SPH_C32(0xa2050000), SPH_C32(0xa7db0000),
+	  SPH_C32(0xe7993b5a), SPH_C32(0xc3985d6c), SPH_C32(0x19f25502),
+	  SPH_C32(0x2ff0b147) },
+	{ SPH_C32(0xa06d3c60), SPH_C32(0xb5a50000), SPH_C32(0x37e50000),
+	  SPH_C32(0xadcf0000), SPH_C32(0x5a352253), SPH_C32(0x8b77c55d),
+	  SPH_C32(0x5c9f381d), SPH_C32(0x125a739d), SPH_C32(0x7fd71510),
+	  SPH_C32(0x59870000), SPH_C32(0xb0de0000), SPH_C32(0x73f90000),
+	  SPH_C32(0x1511507d), SPH_C32(0x6ab9b82f), SPH_C32(0x570ae01a),
+	  SPH_C32(0x4e78a2f6) },
+	{ SPH_C32(0x48ea3d10), SPH_C32(0x28d70000), SPH_C32(0x253e0000),
+	  SPH_C32(0x79ed0000), SPH_C32(0xa8bd4974), SPH_C32(0x2256201e),
+	  SPH_C32(0x12678d05), SPH_C32(0x73d2602c), SPH_C32(0xcbe01570),
+	  SPH_C32(0x55cb0000), SPH_C32(0xe61c0000), SPH_C32(0x2f570000),
+	  SPH_C32(0x81454f42), SPH_C32(0x5187400a), SPH_C32(0x4c3cbf27),
+	  SPH_C32(0xbdacf5ae) },
+	{ SPH_C32(0xfb513e70), SPH_C32(0x83140000), SPH_C32(0x3c890000),
+	  SPH_C32(0x98280000), SPH_C32(0x556e016a), SPH_C32(0xf44c8881),
+	  SPH_C32(0x21bd6d71), SPH_C32(0x73c179cf), SPH_C32(0xea0c1430),
+	  SPH_C32(0x2f9c0000), SPH_C32(0xdb430000), SPH_C32(0xdd3a0000),
+	  SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e), SPH_C32(0x525b63bb),
+	  SPH_C32(0x424d4977) },
+	{ SPH_C32(0x13d63f00), SPH_C32(0x1e660000), SPH_C32(0x2e520000),
+	  SPH_C32(0x4c0a0000), SPH_C32(0xa7e66a4d), SPH_C32(0x5d6d6dc2),
+	  SPH_C32(0x6f45d869), SPH_C32(0x12496a7e), SPH_C32(0x5e3b1450),
+	  SPH_C32(0x23d00000), SPH_C32(0x8d810000), SPH_C32(0x81940000),
+	  SPH_C32(0xeff060a3), SPH_C32(0xae64ac5b), SPH_C32(0x496d3c86),
+	  SPH_C32(0xb1991e2f) },
+	{ SPH_C32(0x4f663e10), SPH_C32(0x8f580000), SPH_C32(0x6a4b0000),
+	  SPH_C32(0xc4860000), SPH_C32(0xc13a1e55), SPH_C32(0xcf7270a4),
+	  SPH_C32(0x3a8b324c), SPH_C32(0x80152e97), SPH_C32(0xb6bc1520),
+	  SPH_C32(0xbea20000), SPH_C32(0x9f5a0000), SPH_C32(0x55b60000),
+	  SPH_C32(0x1d780b84), SPH_C32(0x07454918), SPH_C32(0x0795899e),
+	  SPH_C32(0xd0110d9e) },
+	{ SPH_C32(0xa7e13f60), SPH_C32(0x122a0000), SPH_C32(0x78900000),
+	  SPH_C32(0x10a40000), SPH_C32(0x33b27572), SPH_C32(0x665395e7),
+	  SPH_C32(0x74738754), SPH_C32(0xe19d3d26), SPH_C32(0x028b1540),
+	  SPH_C32(0xb2ee0000), SPH_C32(0xc9980000), SPH_C32(0x09180000),
+	  SPH_C32(0x892c14bb), SPH_C32(0x3c7bb13d), SPH_C32(0x1ca3d6a3),
+	  SPH_C32(0x23c55ac6) },
+	{ SPH_C32(0xdd313c30), SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000),
+	  SPH_C32(0xd72e0000), SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f),
+	  SPH_C32(0x17360ea4), SPH_C32(0x7fe78bad), SPH_C32(0x05071640),
+	  SPH_C32(0x15610000), SPH_C32(0x86ed0000), SPH_C32(0xb4730000),
+	  SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187), SPH_C32(0x344f69ea),
+	  SPH_C32(0xd002147d) },
+	{ SPH_C32(0x35b63d40), SPH_C32(0xc3be0000), SPH_C32(0x5c780000),
+	  SPH_C32(0x030c0000), SPH_C32(0x34800db2), SPH_C32(0x7494290c),
+	  SPH_C32(0x59cebbbc), SPH_C32(0x1e6f981c), SPH_C32(0xb1301620),
+	  SPH_C32(0x192d0000), SPH_C32(0xd02f0000), SPH_C32(0xe8dd0000),
+	  SPH_C32(0x74ff5ca5), SPH_C32(0xea6119a2), SPH_C32(0x2f7936d7),
+	  SPH_C32(0x23d64325) },
+	{ SPH_C32(0x69063c50), SPH_C32(0x52800000), SPH_C32(0x18610000),
+	  SPH_C32(0x8b800000), SPH_C32(0x525c79aa), SPH_C32(0xe68b346a),
+	  SPH_C32(0x0c005199), SPH_C32(0x8c33dcf5), SPH_C32(0x59b71750),
+	  SPH_C32(0x845f0000), SPH_C32(0xc2f40000), SPH_C32(0x3cff0000),
+	  SPH_C32(0x86773782), SPH_C32(0x4340fce1), SPH_C32(0x618183cf),
+	  SPH_C32(0x425e5094) },
+	{ SPH_C32(0x81813d20), SPH_C32(0xcff20000), SPH_C32(0x0aba0000),
+	  SPH_C32(0x5fa20000), SPH_C32(0xa0d4128d), SPH_C32(0x4faad129),
+	  SPH_C32(0x42f8e481), SPH_C32(0xedbbcf44), SPH_C32(0xed801730),
+	  SPH_C32(0x88130000), SPH_C32(0x94360000), SPH_C32(0x60510000),
+	  SPH_C32(0x122328bd), SPH_C32(0x787e04c4), SPH_C32(0x7ab7dcf2),
+	  SPH_C32(0xb18a07cc) },
+	{ SPH_C32(0x323a3e40), SPH_C32(0x64310000), SPH_C32(0x130d0000),
+	  SPH_C32(0xbe670000), SPH_C32(0x5d075a93), SPH_C32(0x99b079b6),
+	  SPH_C32(0x712204f5), SPH_C32(0xeda8d6a7), SPH_C32(0xcc6c1670),
+	  SPH_C32(0xf2440000), SPH_C32(0xa9690000), SPH_C32(0x923c0000),
+	  SPH_C32(0xe8c21863), SPH_C32(0xbca310b0), SPH_C32(0x64d0006e),
+	  SPH_C32(0x4e6bbb15) },
+	{ SPH_C32(0xdabd3f30), SPH_C32(0xf9430000), SPH_C32(0x01d60000),
+	  SPH_C32(0x6a450000), SPH_C32(0xaf8f31b4), SPH_C32(0x30919cf5),
+	  SPH_C32(0x3fdab1ed), SPH_C32(0x8c20c516), SPH_C32(0x785b1610),
+	  SPH_C32(0xfe080000), SPH_C32(0xffab0000), SPH_C32(0xce920000),
+	  SPH_C32(0x7c96075c), SPH_C32(0x879de895), SPH_C32(0x7fe65f53),
+	  SPH_C32(0xbdbfec4d) },
+	{ SPH_C32(0x860d3e20), SPH_C32(0x687d0000), SPH_C32(0x45cf0000),
+	  SPH_C32(0xe2c90000), SPH_C32(0xc95345ac), SPH_C32(0xa28e8193),
+	  SPH_C32(0x6a145bc8), SPH_C32(0x1e7c81ff), SPH_C32(0x90dc1760),
+	  SPH_C32(0x637a0000), SPH_C32(0xed700000), SPH_C32(0x1ab00000),
+	  SPH_C32(0x8e1e6c7b), SPH_C32(0x2ebc0dd6), SPH_C32(0x311eea4b),
+	  SPH_C32(0xdc37fffc) },
+	{ SPH_C32(0x6e8a3f50), SPH_C32(0xf50f0000), SPH_C32(0x57140000),
+	  SPH_C32(0x36eb0000), SPH_C32(0x3bdb2e8b), SPH_C32(0x0baf64d0),
+	  SPH_C32(0x24eceed0), SPH_C32(0x7ff4924e), SPH_C32(0x24eb1700),
+	  SPH_C32(0x6f360000), SPH_C32(0xbbb20000), SPH_C32(0x461e0000),
+	  SPH_C32(0x1a4a7344), SPH_C32(0x1582f5f3), SPH_C32(0x2a28b576),
+	  SPH_C32(0x2fe3a8a4) }
+};
+
+static const sph_u32 T512_10[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0x510a0008), SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000),
+	  SPH_C32(0x92490000), SPH_C32(0x381e7454), SPH_C32(0x13229849),
+	  SPH_C32(0x56eab6c1), SPH_C32(0x3298f492), SPH_C32(0x84950004),
+	  SPH_C32(0xc8bc8000), SPH_C32(0x98540000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31), SPH_C32(0x799e5a92),
+	  SPH_C32(0x8c5d1599) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x72150001), SPH_C32(0xfcff4000), SPH_C32(0xbc530000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xc6c52f87), SPH_C32(0x227e289f),
+	  SPH_C32(0xb45bd18b), SPH_C32(0x5bc8afa8), SPH_C32(0x73e0000d),
+	  SPH_C32(0x07804000), SPH_C32(0x5b820000), SPH_C32(0x575d0000),
+	  SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b), SPH_C32(0x0319abdc),
+	  SPH_C32(0x124b8d83) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0x85600008), SPH_C32(0x33c38000), SPH_C32(0x7f850000),
+	  SPH_C32(0xd8600000), SPH_C32(0xc450362e), SPH_C32(0xda961e25),
+	  SPH_C32(0xcedc20c5), SPH_C32(0xc5de37b2), SPH_C32(0xa78a000d),
+	  SPH_C32(0x8a488000), SPH_C32(0xfe2d0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x19294faf), SPH_C32(0x199a4de7), SPH_C32(0x9b2f3dd8),
+	  SPH_C32(0xe50d4ea3) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xd13b00f1), SPH_C32(0x806d8000), SPH_C32(0xec4e0000),
+	  SPH_C32(0xa2cf0000), SPH_C32(0xb3bc1371), SPH_C32(0xb14142d6),
+	  SPH_C32(0x27ae8a91), SPH_C32(0x63b91943), SPH_C32(0xa4930054),
+	  SPH_C32(0xd36c4000), SPH_C32(0x295e0000), SPH_C32(0x1af90000),
+	  SPH_C32(0x592828be), SPH_C32(0x87cd0544), SPH_C32(0x7d0cbc44),
+	  SPH_C32(0xf12fc3cd) },
+	{ SPH_C32(0x803100f9), SPH_C32(0x3e66c000), SPH_C32(0x36640000),
+	  SPH_C32(0x30860000), SPH_C32(0x8ba26725), SPH_C32(0xa263da9f),
+	  SPH_C32(0x71443c50), SPH_C32(0x5121edd1), SPH_C32(0x20060050),
+	  SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000), SPH_C32(0x49360000),
+	  SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875), SPH_C32(0x0492e6d6),
+	  SPH_C32(0x7d72d654) },
+	{ SPH_C32(0x264e00f8), SPH_C32(0x4f514000), SPH_C32(0x2f980000),
+	  SPH_C32(0xa65d0000), SPH_C32(0xb1290ad8), SPH_C32(0x49a9746c),
+	  SPH_C32(0x5d297bdf), SPH_C32(0xfdaf8159), SPH_C32(0x70f90054),
+	  SPH_C32(0x5ea48000), SPH_C32(0x8cf10000), SPH_C32(0x50d00000),
+	  SPH_C32(0xa5666ac4), SPH_C32(0x4e798328), SPH_C32(0xe53a2a40),
+	  SPH_C32(0x066900ed) },
+	{ SPH_C32(0xa32e00f0), SPH_C32(0x7c92c000), SPH_C32(0x501d0000),
+	  SPH_C32(0x7e3d0000), SPH_C32(0x75793cf6), SPH_C32(0x933f6a49),
+	  SPH_C32(0x93f55b1a), SPH_C32(0x3871b6eb), SPH_C32(0xd7730059),
+	  SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000), SPH_C32(0x4da40000),
+	  SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf), SPH_C32(0x7e151798),
+	  SPH_C32(0xe3644e4e) },
+	{ SPH_C32(0x055100f1), SPH_C32(0x0da54000), SPH_C32(0x49e10000),
+	  SPH_C32(0xe8e60000), SPH_C32(0x4ff2510b), SPH_C32(0x78f5c4ba),
+	  SPH_C32(0xbf981c95), SPH_C32(0x94ffda63), SPH_C32(0x878c005d),
+	  SPH_C32(0x91984000), SPH_C32(0x4f270000), SPH_C32(0x54420000),
+	  SPH_C32(0xa7f3736d), SPH_C32(0xb691b592), SPH_C32(0x9fbddb0e),
+	  SPH_C32(0x987f98f7) },
+	{ SPH_C32(0x545b00f9), SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000),
+	  SPH_C32(0x7aaf0000), SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3),
+	  SPH_C32(0xe972aa54), SPH_C32(0xa6672ef1), SPH_C32(0x03190059),
+	  SPH_C32(0x5924c000), SPH_C32(0xd7730000), SPH_C32(0x078d0000),
+	  SPH_C32(0x40016711), SPH_C32(0x9e5748a3), SPH_C32(0xe623819c),
+	  SPH_C32(0x14228d6e) },
+	{ SPH_C32(0xf22400f8), SPH_C32(0xc2998000), SPH_C32(0x8a370000),
+	  SPH_C32(0xec740000), SPH_C32(0x4d6748a2), SPH_C32(0x801df200),
+	  SPH_C32(0xc51feddb), SPH_C32(0x0ae94279), SPH_C32(0x53e6005d),
+	  SPH_C32(0x1c508000), SPH_C32(0xea880000), SPH_C32(0x1e6b0000),
+	  SPH_C32(0x5bbd3117), SPH_C32(0x7f2533fe), SPH_C32(0x078b4d0a),
+	  SPH_C32(0x6f395bd7) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x52130051), SPH_C32(0xe72f8000), SPH_C32(0x0d590000),
+	  SPH_C32(0x95c40000), SPH_C32(0x781f1345), SPH_C32(0x8d75d0ea),
+	  SPH_C32(0xb0c9375d), SPH_C32(0x26ba79fc), SPH_C32(0xd3d700a4),
+	  SPH_C32(0x22364000), SPH_C32(0xdcec0000), SPH_C32(0x2eed0000),
+	  SPH_C32(0xd01f5632), SPH_C32(0xdd46e961), SPH_C32(0x76cf715a),
+	  SPH_C32(0x3e18b606) },
+	{ SPH_C32(0x03190059), SPH_C32(0x5924c000), SPH_C32(0xd7730000),
+	  SPH_C32(0x078d0000), SPH_C32(0x40016711), SPH_C32(0x9e5748a3),
+	  SPH_C32(0xe623819c), SPH_C32(0x14228d6e), SPH_C32(0x574200a0),
+	  SPH_C32(0xea8ac000), SPH_C32(0x44b80000), SPH_C32(0x7d220000),
+	  SPH_C32(0x37ed424e), SPH_C32(0xf5801450), SPH_C32(0x0f512bc8),
+	  SPH_C32(0xb245a39f) },
+	{ SPH_C32(0xa5660058), SPH_C32(0x28134000), SPH_C32(0xce8f0000),
+	  SPH_C32(0x91560000), SPH_C32(0x7a8a0aec), SPH_C32(0x759de650),
+	  SPH_C32(0xca4ec613), SPH_C32(0xb8ace1e6), SPH_C32(0x07bd00a4),
+	  SPH_C32(0xaffe8000), SPH_C32(0x79430000), SPH_C32(0x64c40000),
+	  SPH_C32(0x2c511448), SPH_C32(0x14f26f0d), SPH_C32(0xeef9e75e),
+	  SPH_C32(0xc95e7526) },
+	{ SPH_C32(0x20060050), SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000),
+	  SPH_C32(0x49360000), SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875),
+	  SPH_C32(0x0492e6d6), SPH_C32(0x7d72d654), SPH_C32(0xa03700a9),
+	  SPH_C32(0x25b60000), SPH_C32(0x876e0000), SPH_C32(0x79b00000),
+	  SPH_C32(0x35785be7), SPH_C32(0x0d6822ea), SPH_C32(0x75d6da86),
+	  SPH_C32(0x2c533b85) },
+	{ SPH_C32(0x86790051), SPH_C32(0x6ae74000), SPH_C32(0xa8f60000),
+	  SPH_C32(0xdfed0000), SPH_C32(0x8451513f), SPH_C32(0x44c15686),
+	  SPH_C32(0x28ffa159), SPH_C32(0xd1fcbadc), SPH_C32(0xf0c800ad),
+	  SPH_C32(0x60c24000), SPH_C32(0xba950000), SPH_C32(0x60560000),
+	  SPH_C32(0x2ec40de1), SPH_C32(0xec1a59b7), SPH_C32(0x947e1610),
+	  SPH_C32(0x5748ed3c) },
+	{ SPH_C32(0xd7730059), SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000),
+	  SPH_C32(0x4da40000), SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf),
+	  SPH_C32(0x7e151798), SPH_C32(0xe3644e4e), SPH_C32(0x745d00a9),
+	  SPH_C32(0xa87ec000), SPH_C32(0x22c10000), SPH_C32(0x33990000),
+	  SPH_C32(0xc936199d), SPH_C32(0xc4dca486), SPH_C32(0xede04c82),
+	  SPH_C32(0xdb15f8a5) },
+	{ SPH_C32(0x710c0058), SPH_C32(0xa5db8000), SPH_C32(0x6b200000),
+	  SPH_C32(0xdb7f0000), SPH_C32(0x86c44896), SPH_C32(0xbc29603c),
+	  SPH_C32(0x52785017), SPH_C32(0x4fea22c6), SPH_C32(0x24a200ad),
+	  SPH_C32(0xed0a8000), SPH_C32(0x1f3a0000), SPH_C32(0x2a7f0000),
+	  SPH_C32(0xd28a4f9b), SPH_C32(0x25aedfdb), SPH_C32(0x0c488014),
+	  SPH_C32(0xa00e2e1c) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0x255700a1), SPH_C32(0x16758000), SPH_C32(0xf8eb0000),
+	  SPH_C32(0xa1d00000), SPH_C32(0xf1286dc9), SPH_C32(0xd7fe3ccf),
+	  SPH_C32(0xbb0afa43), SPH_C32(0xe98d0c37), SPH_C32(0x27bb00f4),
+	  SPH_C32(0xb42e4000), SPH_C32(0xc8490000), SPH_C32(0x2df20000),
+	  SPH_C32(0x928b288a), SPH_C32(0xbbf99778), SPH_C32(0xea6b0188),
+	  SPH_C32(0xb42ca372) },
+	{ SPH_C32(0x745d00a9), SPH_C32(0xa87ec000), SPH_C32(0x22c10000),
+	  SPH_C32(0x33990000), SPH_C32(0xc936199d), SPH_C32(0xc4dca486),
+	  SPH_C32(0xede04c82), SPH_C32(0xdb15f8a5), SPH_C32(0xa32e00f0),
+	  SPH_C32(0x7c92c000), SPH_C32(0x501d0000), SPH_C32(0x7e3d0000),
+	  SPH_C32(0x75793cf6), SPH_C32(0x933f6a49), SPH_C32(0x93f55b1a),
+	  SPH_C32(0x3871b6eb) },
+	{ SPH_C32(0xd22200a8), SPH_C32(0xd9494000), SPH_C32(0x3b3d0000),
+	  SPH_C32(0xa5420000), SPH_C32(0xf3bd7460), SPH_C32(0x2f160a75),
+	  SPH_C32(0xc18d0b0d), SPH_C32(0x779b942d), SPH_C32(0xf3d100f4),
+	  SPH_C32(0x39e68000), SPH_C32(0x6de60000), SPH_C32(0x67db0000),
+	  SPH_C32(0x6ec56af0), SPH_C32(0x724d1114), SPH_C32(0x725d978c),
+	  SPH_C32(0x436a6052) },
+	{ SPH_C32(0x574200a0), SPH_C32(0xea8ac000), SPH_C32(0x44b80000),
+	  SPH_C32(0x7d220000), SPH_C32(0x37ed424e), SPH_C32(0xf5801450),
+	  SPH_C32(0x0f512bc8), SPH_C32(0xb245a39f), SPH_C32(0x545b00f9),
+	  SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000), SPH_C32(0x7aaf0000),
+	  SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3), SPH_C32(0xe972aa54),
+	  SPH_C32(0xa6672ef1) },
+	{ SPH_C32(0xf13d00a1), SPH_C32(0x9bbd4000), SPH_C32(0x5d440000),
+	  SPH_C32(0xebf90000), SPH_C32(0x0d662fb3), SPH_C32(0x1e4abaa3),
+	  SPH_C32(0x233c6c47), SPH_C32(0x1ecbcf17), SPH_C32(0x04a400fd),
+	  SPH_C32(0xf6da4000), SPH_C32(0xae300000), SPH_C32(0x63490000),
+	  SPH_C32(0x6c507359), SPH_C32(0x8aa527ae), SPH_C32(0x08da66c2),
+	  SPH_C32(0xdd7cf848) },
+	{ SPH_C32(0xa03700a9), SPH_C32(0x25b60000), SPH_C32(0x876e0000),
+	  SPH_C32(0x79b00000), SPH_C32(0x35785be7), SPH_C32(0x0d6822ea),
+	  SPH_C32(0x75d6da86), SPH_C32(0x2c533b85), SPH_C32(0x803100f9),
+	  SPH_C32(0x3e66c000), SPH_C32(0x36640000), SPH_C32(0x30860000),
+	  SPH_C32(0x8ba26725), SPH_C32(0xa263da9f), SPH_C32(0x71443c50),
+	  SPH_C32(0x5121edd1) },
+	{ SPH_C32(0x064800a8), SPH_C32(0x54818000), SPH_C32(0x9e920000),
+	  SPH_C32(0xef6b0000), SPH_C32(0x0ff3361a), SPH_C32(0xe6a28c19),
+	  SPH_C32(0x59bb9d09), SPH_C32(0x80dd570d), SPH_C32(0xd0ce00fd),
+	  SPH_C32(0x7b128000), SPH_C32(0x0b9f0000), SPH_C32(0x29600000),
+	  SPH_C32(0x901e3123), SPH_C32(0x4311a1c2), SPH_C32(0x90ecf0c6),
+	  SPH_C32(0x2a3a3b68) }
+};
+
+static const sph_u32 T512_15[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0x006d0003), SPH_C32(0xcc9be700), SPH_C32(0x45840000),
+	  SPH_C32(0x2a1f0000), SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9),
+	  SPH_C32(0xac4fb29e), SPH_C32(0xae684855), SPH_C32(0x3fa90001),
+	  SPH_C32(0x74ea4300), SPH_C32(0x6dd20000), SPH_C32(0x510a0000),
+	  SPH_C32(0xbeb7373e), SPH_C32(0x78611737), SPH_C32(0xfe785bad),
+	  SPH_C32(0x7bd4ce7f) },
+	{ SPH_C32(0xa4af0003), SPH_C32(0x15acc300), SPH_C32(0x4fcc0000),
+	  SPH_C32(0x4c7e0000), SPH_C32(0x88c66a19), SPH_C32(0x48284ba5),
+	  SPH_C32(0x0f6b6d0a), SPH_C32(0x85c81200), SPH_C32(0x4a0d0001),
+	  SPH_C32(0xb6616400), SPH_C32(0xf9760000), SPH_C32(0xc1ff0000),
+	  SPH_C32(0x45cf60de), SPH_C32(0x31af1c99), SPH_C32(0xe91f9f2e),
+	  SPH_C32(0xd50ba801) },
+	{ SPH_C32(0xd10b0003), SPH_C32(0xd727e400), SPH_C32(0xdb680000),
+	  SPH_C32(0xdc8b0000), SPH_C32(0x73be3df9), SPH_C32(0x01e6400b),
+	  SPH_C32(0x180ca989), SPH_C32(0x2b17747e), SPH_C32(0x9b6b0001),
+	  SPH_C32(0xaddd6700), SPH_C32(0x679a0000), SPH_C32(0x376b0000),
+	  SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b), SPH_C32(0x5d5c8439),
+	  SPH_C32(0x5074942a) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x9b6b0001), SPH_C32(0xaddd6700), SPH_C32(0x679a0000),
+	  SPH_C32(0x376b0000), SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b),
+	  SPH_C32(0x5d5c8439), SPH_C32(0x5074942a), SPH_C32(0x4a600002),
+	  SPH_C32(0x7afa8300), SPH_C32(0xbcf20000), SPH_C32(0xebe00000),
+	  SPH_C32(0x35731800), SPH_C32(0xff39a060), SPH_C32(0x45502db0),
+	  SPH_C32(0x7b63e054) },
+	{ SPH_C32(0x3fa90001), SPH_C32(0x74ea4300), SPH_C32(0x6dd20000),
+	  SPH_C32(0x510a0000), SPH_C32(0xbeb7373e), SPH_C32(0x78611737),
+	  SPH_C32(0xfe785bad), SPH_C32(0x7bd4ce7f), SPH_C32(0x3fc40002),
+	  SPH_C32(0xb871a400), SPH_C32(0x28560000), SPH_C32(0x7b150000),
+	  SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce), SPH_C32(0x5237e933),
+	  SPH_C32(0xd5bc862a) },
+	{ SPH_C32(0x4a0d0001), SPH_C32(0xb6616400), SPH_C32(0xf9760000),
+	  SPH_C32(0xc1ff0000), SPH_C32(0x45cf60de), SPH_C32(0x31af1c99),
+	  SPH_C32(0xe91f9f2e), SPH_C32(0xd50ba801), SPH_C32(0xeea20002),
+	  SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000), SPH_C32(0x8d810000),
+	  SPH_C32(0xcd090ac7), SPH_C32(0x7987573c), SPH_C32(0xe674f224),
+	  SPH_C32(0x50c3ba01) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0xeea20002), SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000),
+	  SPH_C32(0x8d810000), SPH_C32(0xcd090ac7), SPH_C32(0x7987573c),
+	  SPH_C32(0xe674f224), SPH_C32(0x50c3ba01), SPH_C32(0xa4af0003),
+	  SPH_C32(0x15acc300), SPH_C32(0x4fcc0000), SPH_C32(0x4c7e0000),
+	  SPH_C32(0x88c66a19), SPH_C32(0x48284ba5), SPH_C32(0x0f6b6d0a),
+	  SPH_C32(0x85c81200) },
+	{ SPH_C32(0x4a600002), SPH_C32(0x7afa8300), SPH_C32(0xbcf20000),
+	  SPH_C32(0xebe00000), SPH_C32(0x35731800), SPH_C32(0xff39a060),
+	  SPH_C32(0x45502db0), SPH_C32(0x7b63e054), SPH_C32(0xd10b0003),
+	  SPH_C32(0xd727e400), SPH_C32(0xdb680000), SPH_C32(0xdc8b0000),
+	  SPH_C32(0x73be3df9), SPH_C32(0x01e6400b), SPH_C32(0x180ca989),
+	  SPH_C32(0x2b17747e) },
+	{ SPH_C32(0x3fc40002), SPH_C32(0xb871a400), SPH_C32(0x28560000),
+	  SPH_C32(0x7b150000), SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce),
+	  SPH_C32(0x5237e933), SPH_C32(0xd5bc862a), SPH_C32(0x006d0003),
+	  SPH_C32(0xcc9be700), SPH_C32(0x45840000), SPH_C32(0x2a1f0000),
+	  SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9), SPH_C32(0xac4fb29e),
+	  SPH_C32(0xae684855) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0x83240005), SPH_C32(0xf6c8e700), SPH_C32(0xb0a30000),
+	  SPH_C32(0x1fc80000), SPH_C32(0xda4f6c1b), SPH_C32(0x4376de00),
+	  SPH_C32(0xdaa24f9a), SPH_C32(0x794adc4f), SPH_C32(0x77190001),
+	  SPH_C32(0x6a8b8300), SPH_C32(0x87100000), SPH_C32(0x604f0000),
+	  SPH_C32(0x398928da), SPH_C32(0x24ba5201), SPH_C32(0x982e5c98),
+	  SPH_C32(0x29f150a3) },
+	{ SPH_C32(0x27e60005), SPH_C32(0x2fffc300), SPH_C32(0xbaeb0000),
+	  SPH_C32(0x79a90000), SPH_C32(0x22357edc), SPH_C32(0xc5c8295c),
+	  SPH_C32(0x7986900e), SPH_C32(0x52ea861a), SPH_C32(0x02bd0001),
+	  SPH_C32(0xa800a400), SPH_C32(0x13b40000), SPH_C32(0xf0ba0000),
+	  SPH_C32(0xc2f17f3a), SPH_C32(0x6d7459af), SPH_C32(0x8f49981b),
+	  SPH_C32(0x872e36dd) },
+	{ SPH_C32(0x52420005), SPH_C32(0xed74e400), SPH_C32(0x2e4f0000),
+	  SPH_C32(0xe95c0000), SPH_C32(0xd94d293c), SPH_C32(0x8c0622f2),
+	  SPH_C32(0x6ee1548d), SPH_C32(0xfc35e064), SPH_C32(0xd3db0001),
+	  SPH_C32(0xb3bca700), SPH_C32(0x8d580000), SPH_C32(0x062e0000),
+	  SPH_C32(0xc1f33a1d), SPH_C32(0xa204a55d), SPH_C32(0x3b0a830c),
+	  SPH_C32(0x02510af6) },
+	{ SPH_C32(0x83490006), SPH_C32(0x3a530000), SPH_C32(0xf5270000),
+	  SPH_C32(0x35d70000), SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9),
+	  SPH_C32(0x76edfd04), SPH_C32(0xd722941a), SPH_C32(0x48b00000),
+	  SPH_C32(0x1e61c000), SPH_C32(0xeac20000), SPH_C32(0x31450000),
+	  SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536), SPH_C32(0x66560735),
+	  SPH_C32(0x52259edc) },
+	{ SPH_C32(0xf6ed0006), SPH_C32(0xf8d82700), SPH_C32(0x61830000),
+	  SPH_C32(0xa5220000), SPH_C32(0x518b4325), SPH_C32(0xc42e6957),
+	  SPH_C32(0x618a3987), SPH_C32(0x79fdf264), SPH_C32(0x99d60000),
+	  SPH_C32(0x05ddc300), SPH_C32(0x742e0000), SPH_C32(0xc7d10000),
+	  SPH_C32(0x843c5ac3), SPH_C32(0x93abb9c4), SPH_C32(0xd2151c22),
+	  SPH_C32(0xd75aa2f7) },
+	{ SPH_C32(0x522f0006), SPH_C32(0x21ef0300), SPH_C32(0x6bcb0000),
+	  SPH_C32(0xc3430000), SPH_C32(0xa9f151e2), SPH_C32(0x42909e0b),
+	  SPH_C32(0xc2aee613), SPH_C32(0x525da831), SPH_C32(0xec720000),
+	  SPH_C32(0xc756e400), SPH_C32(0xe08a0000), SPH_C32(0x57240000),
+	  SPH_C32(0x7f440d23), SPH_C32(0xda65b26a), SPH_C32(0xc572d8a1),
+	  SPH_C32(0x7985c489) },
+	{ SPH_C32(0x278b0006), SPH_C32(0xe3642400), SPH_C32(0xff6f0000),
+	  SPH_C32(0x53b60000), SPH_C32(0x52890602), SPH_C32(0x0b5e95a5),
+	  SPH_C32(0xd5c92290), SPH_C32(0xfc82ce4f), SPH_C32(0x3d140000),
+	  SPH_C32(0xdceae700), SPH_C32(0x7e660000), SPH_C32(0xa1b00000),
+	  SPH_C32(0x7c464804), SPH_C32(0x15154e98), SPH_C32(0x7131c3b6),
+	  SPH_C32(0xfcfaf8a2) },
+	{ SPH_C32(0x184f0004), SPH_C32(0x5b158000), SPH_C32(0xd7390000),
+	  SPH_C32(0x28a30000), SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b),
+	  SPH_C32(0x87fecba3), SPH_C32(0x293e4865), SPH_C32(0x3d790003),
+	  SPH_C32(0x10710000), SPH_C32(0x3be20000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261), SPH_C32(0xdd7e7128),
+	  SPH_C32(0x5292b0f7) },
+	{ SPH_C32(0x6deb0004), SPH_C32(0x999ea700), SPH_C32(0x439d0000),
+	  SPH_C32(0xb8560000), SPH_C32(0x67fa1e02), SPH_C32(0xf46735c5),
+	  SPH_C32(0x90990f20), SPH_C32(0x87e12e1b), SPH_C32(0xec1f0003),
+	  SPH_C32(0x0bcd0300), SPH_C32(0xa50e0000), SPH_C32(0x7d3b0000),
+	  SPH_C32(0x0ff875fd), SPH_C32(0x14f30e93), SPH_C32(0x693d6a3f),
+	  SPH_C32(0xd7ed8cdc) },
+	{ SPH_C32(0xc9290004), SPH_C32(0x40a98300), SPH_C32(0x49d50000),
+	  SPH_C32(0xde370000), SPH_C32(0x9f800cc5), SPH_C32(0x72d9c299),
+	  SPH_C32(0x33bdd0b4), SPH_C32(0xac41744e), SPH_C32(0x99bb0003),
+	  SPH_C32(0xc9462400), SPH_C32(0x31aa0000), SPH_C32(0xedce0000),
+	  SPH_C32(0xf480221d), SPH_C32(0x5d3d053d), SPH_C32(0x7e5aaebc),
+	  SPH_C32(0x7932eaa2) },
+	{ SPH_C32(0xbc8d0004), SPH_C32(0x8222a400), SPH_C32(0xdd710000),
+	  SPH_C32(0x4ec20000), SPH_C32(0x64f85b25), SPH_C32(0x3b17c937),
+	  SPH_C32(0x24da1437), SPH_C32(0x029e1230), SPH_C32(0x48dd0003),
+	  SPH_C32(0xd2fa2700), SPH_C32(0xaf460000), SPH_C32(0x1b5a0000),
+	  SPH_C32(0xf782673a), SPH_C32(0x924df9cf), SPH_C32(0xca19b5ab),
+	  SPH_C32(0xfc4dd689) },
+	{ SPH_C32(0x6d860007), SPH_C32(0x55054000), SPH_C32(0x06190000),
+	  SPH_C32(0x92490000), SPH_C32(0x174666dc), SPH_C32(0x3af1893c),
+	  SPH_C32(0x3cd6bdbe), SPH_C32(0x2989664e), SPH_C32(0xd3b60002),
+	  SPH_C32(0x7f274000), SPH_C32(0xc8dc0000), SPH_C32(0x2c310000),
+	  SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4), SPH_C32(0x97453192),
+	  SPH_C32(0xac3942a3) },
+	{ SPH_C32(0x18220007), SPH_C32(0x978e6700), SPH_C32(0x92bd0000),
+	  SPH_C32(0x02bc0000), SPH_C32(0xec3e313c), SPH_C32(0x733f8292),
+	  SPH_C32(0x2bb1793d), SPH_C32(0x87560030), SPH_C32(0x02d00002),
+	  SPH_C32(0x649b4300), SPH_C32(0x56300000), SPH_C32(0xdaa50000),
+	  SPH_C32(0xb24d07e4), SPH_C32(0xa3e2e556), SPH_C32(0x23062a85),
+	  SPH_C32(0x29467e88) },
+	{ SPH_C32(0xbce00007), SPH_C32(0x4eb94300), SPH_C32(0x98f50000),
+	  SPH_C32(0x64dd0000), SPH_C32(0x144423fb), SPH_C32(0xf58175ce),
+	  SPH_C32(0x8895a6a9), SPH_C32(0xacf65a65), SPH_C32(0x77740002),
+	  SPH_C32(0xa6106400), SPH_C32(0xc2940000), SPH_C32(0x4a500000),
+	  SPH_C32(0x49355004), SPH_C32(0xea2ceef8), SPH_C32(0x3461ee06),
+	  SPH_C32(0x879918f6) },
+	{ SPH_C32(0xc9440007), SPH_C32(0x8c326400), SPH_C32(0x0c510000),
+	  SPH_C32(0xf4280000), SPH_C32(0xef3c741b), SPH_C32(0xbc4f7e60),
+	  SPH_C32(0x9ff2622a), SPH_C32(0x02293c1b), SPH_C32(0xa6120002),
+	  SPH_C32(0xbdac6700), SPH_C32(0x5c780000), SPH_C32(0xbcc40000),
+	  SPH_C32(0x4a371523), SPH_C32(0x255c120a), SPH_C32(0x8022f511),
+	  SPH_C32(0x02e624dd) }
+};
+
+static const sph_u32 T512_20[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xca010000), SPH_C32(0xe6680f0c), SPH_C32(0xe6b80000),
+	  SPH_C32(0x7d670000), SPH_C32(0x10bb259d), SPH_C32(0x6c91743b),
+	  SPH_C32(0x888be7f3), SPH_C32(0x83c6d1e3), SPH_C32(0x51000000),
+	  SPH_C32(0xdc340590), SPH_C32(0x42330000), SPH_C32(0x7ac20000),
+	  SPH_C32(0x4eb566f3), SPH_C32(0xa863bc93), SPH_C32(0xd41427e1),
+	  SPH_C32(0x2a4f8d22) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0x38510000), SPH_C32(0x08d5050c), SPH_C32(0x81100000),
+	  SPH_C32(0xd6ed0000), SPH_C32(0xaa206d5d), SPH_C32(0x66c7a94f),
+	  SPH_C32(0x53f80f9d), SPH_C32(0x96ae2eec), SPH_C32(0x5d720000),
+	  SPH_C32(0x95d10a90), SPH_C32(0x004a0000), SPH_C32(0x26280000),
+	  SPH_C32(0x7d1f56e9), SPH_C32(0xbde19987), SPH_C32(0x41b76c9a),
+	  SPH_C32(0x9e048db2) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0x34230000), SPH_C32(0x41300a0c), SPH_C32(0xc3690000),
+	  SPH_C32(0x8a070000), SPH_C32(0x998a5d47), SPH_C32(0x73458c5b),
+	  SPH_C32(0xc65b44e6), SPH_C32(0x22e52e7c), SPH_C32(0xa3500000),
+	  SPH_C32(0x32890f90), SPH_C32(0x259b0000), SPH_C32(0xd1480000),
+	  SPH_C32(0xf42e2e33), SPH_C32(0xa23561e7), SPH_C32(0x0f67cf8f),
+	  SPH_C32(0x3f27722d) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x836b0000), SPH_C32(0x0a38170c), SPH_C32(0x5dab0000),
+	  SPH_C32(0x1ac50000), SPH_C32(0x3ddd01ab), SPH_C32(0x5a00c4f9),
+	  SPH_C32(0x0b940a38), SPH_C32(0xe8be25ac), SPH_C32(0x171f0000),
+	  SPH_C32(0x6d1d0690), SPH_C32(0x50780000), SPH_C32(0x78130000),
+	  SPH_C32(0xe5057f85), SPH_C32(0x19ffb5b6), SPH_C32(0xfce092e2),
+	  SPH_C32(0x4ead9983) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0x8f190000), SPH_C32(0x43dd180c), SPH_C32(0x1fd20000),
+	  SPH_C32(0x462f0000), SPH_C32(0x0e7731b1), SPH_C32(0x4f82e1ed),
+	  SPH_C32(0x9e374143), SPH_C32(0x5cf5253c), SPH_C32(0xe93d0000),
+	  SPH_C32(0xca450390), SPH_C32(0x75a90000), SPH_C32(0x8f730000),
+	  SPH_C32(0x6c34075f), SPH_C32(0x062b4dd6), SPH_C32(0xb23031f7),
+	  SPH_C32(0xef8e661c) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0x7d490000), SPH_C32(0xad60120c), SPH_C32(0x787a0000),
+	  SPH_C32(0xeda50000), SPH_C32(0xb4ec7971), SPH_C32(0x45d43c99),
+	  SPH_C32(0x4544a92d), SPH_C32(0x499dda33), SPH_C32(0xe54f0000),
+	  SPH_C32(0x83a00c90), SPH_C32(0x37d00000), SPH_C32(0xd3990000),
+	  SPH_C32(0x5f9e3745), SPH_C32(0x13a968c2), SPH_C32(0x27937a8c),
+	  SPH_C32(0x5bc5668c) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) },
+	{ SPH_C32(0x713b0000), SPH_C32(0xe4851d0c), SPH_C32(0x3a030000),
+	  SPH_C32(0xb14f0000), SPH_C32(0x8746496b), SPH_C32(0x5056198d),
+	  SPH_C32(0xd0e7e256), SPH_C32(0xfdd6daa3), SPH_C32(0x1b6d0000),
+	  SPH_C32(0x24f80990), SPH_C32(0x12010000), SPH_C32(0x24f90000),
+	  SPH_C32(0xd6af4f9f), SPH_C32(0x0c7d90a2), SPH_C32(0x6943d999),
+	  SPH_C32(0xfae69913) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0x7e4e0000), SPH_C32(0xb9fc060c), SPH_C32(0x935b0000),
+	  SPH_C32(0xd43c0000), SPH_C32(0x0190742b), SPH_C32(0xd75ba06a),
+	  SPH_C32(0x7b0cba9e), SPH_C32(0xf24c3a4d), SPH_C32(0x52070000),
+	  SPH_C32(0xc8a81190), SPH_C32(0xa9120000), SPH_C32(0x435b0000),
+	  SPH_C32(0xfbc96ba9), SPH_C32(0x3aec2060), SPH_C32(0xea5c3452),
+	  SPH_C32(0x919e6d5c) },
+	{ SPH_C32(0xb44f0000), SPH_C32(0x5f940900), SPH_C32(0x75e30000),
+	  SPH_C32(0xa95b0000), SPH_C32(0x112b51b6), SPH_C32(0xbbcad451),
+	  SPH_C32(0xf3875d6d), SPH_C32(0x718aebae), SPH_C32(0x03070000),
+	  SPH_C32(0x149c1400), SPH_C32(0xeb210000), SPH_C32(0x39990000),
+	  SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3), SPH_C32(0x3e4813b3),
+	  SPH_C32(0xbbd1e07e) },
+	{ SPH_C32(0x723c0000), SPH_C32(0xf019090c), SPH_C32(0xd1220000),
+	  SPH_C32(0x88d60000), SPH_C32(0x323a4431), SPH_C32(0xc2d9857e),
+	  SPH_C32(0xeeaff1e5), SPH_C32(0x46073add), SPH_C32(0xac250000),
+	  SPH_C32(0x6ff01490), SPH_C32(0x8cc30000), SPH_C32(0xb43b0000),
+	  SPH_C32(0x72f81373), SPH_C32(0x2538d800), SPH_C32(0xa48c9747),
+	  SPH_C32(0x30bd92c3) },
+	{ SPH_C32(0x461f0000), SPH_C32(0xb1290300), SPH_C32(0x124b0000),
+	  SPH_C32(0x02d10000), SPH_C32(0xabb01976), SPH_C32(0xb19c0925),
+	  SPH_C32(0x28f4b503), SPH_C32(0x64e214a1), SPH_C32(0x0f750000),
+	  SPH_C32(0x5d791b00), SPH_C32(0xa9580000), SPH_C32(0x65730000),
+	  SPH_C32(0x86d63d40), SPH_C32(0x870db9e7), SPH_C32(0xabeb58c8),
+	  SPH_C32(0x0f9ae0ee) },
+	{ SPH_C32(0x806c0000), SPH_C32(0x1ea4030c), SPH_C32(0xb68a0000),
+	  SPH_C32(0x235c0000), SPH_C32(0x88a10cf1), SPH_C32(0xc88f580a),
+	  SPH_C32(0x35dc198b), SPH_C32(0x536fc5d2), SPH_C32(0xa0570000),
+	  SPH_C32(0x26151b90), SPH_C32(0xceba0000), SPH_C32(0xe8d10000),
+	  SPH_C32(0x41522369), SPH_C32(0x30bafd14), SPH_C32(0x312fdc3c),
+	  SPH_C32(0x84f69253) },
+	{ SPH_C32(0x4a6d0000), SPH_C32(0xf8cc0c00), SPH_C32(0x50320000),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x981a296c), SPH_C32(0xa41e2c31),
+	  SPH_C32(0xbd57fe78), SPH_C32(0xd0a91431), SPH_C32(0xf1570000),
+	  SPH_C32(0xfa211e00), SPH_C32(0x8c890000), SPH_C32(0x92130000),
+	  SPH_C32(0x0fe7459a), SPH_C32(0x98d94187), SPH_C32(0xe53bfbdd),
+	  SPH_C32(0xaeb91f71) },
+	{ SPH_C32(0x8c1e0000), SPH_C32(0x57410c0c), SPH_C32(0xf4f30000),
+	  SPH_C32(0x7fb60000), SPH_C32(0xbb0b3ceb), SPH_C32(0xdd0d7d1e),
+	  SPH_C32(0xa07f52f0), SPH_C32(0xe724c542), SPH_C32(0x5e750000),
+	  SPH_C32(0x814d1e90), SPH_C32(0xeb6b0000), SPH_C32(0x1fb10000),
+	  SPH_C32(0xc8635bb3), SPH_C32(0x2f6e0574), SPH_C32(0x7fff7f29),
+	  SPH_C32(0x25d56dcc) },
+	{ SPH_C32(0xfd250000), SPH_C32(0xb3c41100), SPH_C32(0xcef00000),
+	  SPH_C32(0xcef90000), SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493),
+	  SPH_C32(0x7098b0a6), SPH_C32(0x1af21fe1), SPH_C32(0x45180000),
+	  SPH_C32(0xa5b51700), SPH_C32(0xf96a0000), SPH_C32(0x3b480000),
+	  SPH_C32(0x1ecc142c), SPH_C32(0x231395d6), SPH_C32(0x16bca6b0),
+	  SPH_C32(0xdf33f4df) },
+	{ SPH_C32(0x3b560000), SPH_C32(0x1c49110c), SPH_C32(0x6a310000),
+	  SPH_C32(0xef740000), SPH_C32(0x1f5c6007), SPH_C32(0xf44835bc),
+	  SPH_C32(0x6db01c2e), SPH_C32(0x2d7fce92), SPH_C32(0xea3a0000),
+	  SPH_C32(0xded91790), SPH_C32(0x9e880000), SPH_C32(0xb6ea0000),
+	  SPH_C32(0xd9480a05), SPH_C32(0x94a4d125), SPH_C32(0x8c782244),
+	  SPH_C32(0x545f8662) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfa211e00), SPH_C32(0x8c890000),
+	  SPH_C32(0x92130000), SPH_C32(0x0fe7459a), SPH_C32(0x98d94187),
+	  SPH_C32(0xe53bfbdd), SPH_C32(0xaeb91f71), SPH_C32(0xbb3a0000),
+	  SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000), SPH_C32(0xcc280000),
+	  SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6), SPH_C32(0x586c05a5),
+	  SPH_C32(0x7e100b40) },
+	{ SPH_C32(0x37240000), SPH_C32(0x55ac1e0c), SPH_C32(0x28480000),
+	  SPH_C32(0xb39e0000), SPH_C32(0x2cf6501d), SPH_C32(0xe1ca10a8),
+	  SPH_C32(0xf8135755), SPH_C32(0x9934ce02), SPH_C32(0x14180000),
+	  SPH_C32(0x79811290), SPH_C32(0xbb590000), SPH_C32(0x418a0000),
+	  SPH_C32(0x507972df), SPH_C32(0x8b702945), SPH_C32(0xc2a88151),
+	  SPH_C32(0xf57c79fd) },
+	{ SPH_C32(0x03070000), SPH_C32(0x149c1400), SPH_C32(0xeb210000),
+	  SPH_C32(0x39990000), SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3),
+	  SPH_C32(0x3e4813b3), SPH_C32(0xbbd1e07e), SPH_C32(0xb7480000),
+	  SPH_C32(0x4b081d00), SPH_C32(0x9ec20000), SPH_C32(0x90c20000),
+	  SPH_C32(0xa4575cec), SPH_C32(0x294548a2), SPH_C32(0xcdcf4ede),
+	  SPH_C32(0xca5b0bd0) },
+	{ SPH_C32(0xc5740000), SPH_C32(0xbb11140c), SPH_C32(0x4fe00000),
+	  SPH_C32(0x18140000), SPH_C32(0x966d18dd), SPH_C32(0xeb9ccddc),
+	  SPH_C32(0x2360bf3b), SPH_C32(0x8c5c310d), SPH_C32(0x186a0000),
+	  SPH_C32(0x30641d90), SPH_C32(0xf9200000), SPH_C32(0x1d600000),
+	  SPH_C32(0x63d342c5), SPH_C32(0x9ef20c51), SPH_C32(0x570bca2a),
+	  SPH_C32(0x4137796d) },
+	{ SPH_C32(0x0f750000), SPH_C32(0x5d791b00), SPH_C32(0xa9580000),
+	  SPH_C32(0x65730000), SPH_C32(0x86d63d40), SPH_C32(0x870db9e7),
+	  SPH_C32(0xabeb58c8), SPH_C32(0x0f9ae0ee), SPH_C32(0x496a0000),
+	  SPH_C32(0xec501800), SPH_C32(0xbb130000), SPH_C32(0x67a20000),
+	  SPH_C32(0x2d662436), SPH_C32(0x3691b0c2), SPH_C32(0x831fedcb),
+	  SPH_C32(0x6b78f44f) },
+	{ SPH_C32(0xc9060000), SPH_C32(0xf2f41b0c), SPH_C32(0x0d990000),
+	  SPH_C32(0x44fe0000), SPH_C32(0xa5c728c7), SPH_C32(0xfe1ee8c8),
+	  SPH_C32(0xb6c3f440), SPH_C32(0x3817319d), SPH_C32(0xe6480000),
+	  SPH_C32(0x973c1890), SPH_C32(0xdcf10000), SPH_C32(0xea000000),
+	  SPH_C32(0xeae23a1f), SPH_C32(0x8126f431), SPH_C32(0x19db693f),
+	  SPH_C32(0xe01486f2) }
+};
+
+static const sph_u32 T512_25[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0x40490000), SPH_C32(0x25bb0060), SPH_C32(0x75710000),
+	  SPH_C32(0x2ea80000), SPH_C32(0x35c9296f), SPH_C32(0x5abd2967),
+	  SPH_C32(0xde5c0873), SPH_C32(0xa5bb8697), SPH_C32(0x5fce0000),
+	  SPH_C32(0xc675000c), SPH_C32(0xeb450000), SPH_C32(0x7b450000),
+	  SPH_C32(0x75063a62), SPH_C32(0x67cd2643), SPH_C32(0x122f6b61),
+	  SPH_C32(0x1675c999) },
+	{ SPH_C32(0xb7130000), SPH_C32(0x3c3f0048), SPH_C32(0xd7680000),
+	  SPH_C32(0xc0500000), SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07),
+	  SPH_C32(0xad87a995), SPH_C32(0x443fc4c0), SPH_C32(0x4bd70000),
+	  SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000), SPH_C32(0x3ff30000),
+	  SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36), SPH_C32(0x73c97bd1),
+	  SPH_C32(0xcdbf1219) },
+	{ SPH_C32(0xa30a0000), SPH_C32(0x1ff50074), SPH_C32(0x87b70000),
+	  SPH_C32(0x84e60000), SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772),
+	  SPH_C32(0xcc61b925), SPH_C32(0x9ff51f40), SPH_C32(0xa8940000),
+	  SPH_C32(0xdff10024), SPH_C32(0x495c0000), SPH_C32(0x95bd0000),
+	  SPH_C32(0xb5741f74), SPH_C32(0x7e553423), SPH_C32(0x61f4ca87),
+	  SPH_C32(0xf7f18bce) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0xa8940000), SPH_C32(0xdff10024), SPH_C32(0x495c0000),
+	  SPH_C32(0x95bd0000), SPH_C32(0xb5741f74), SPH_C32(0x7e553423),
+	  SPH_C32(0x61f4ca87), SPH_C32(0xf7f18bce), SPH_C32(0x0b9e0000),
+	  SPH_C32(0xc0040050), SPH_C32(0xceeb0000), SPH_C32(0x115b0000),
+	  SPH_C32(0x5ba374bd), SPH_C32(0x0183a351), SPH_C32(0xad9573a2),
+	  SPH_C32(0x6804948e) },
+	{ SPH_C32(0x5fce0000), SPH_C32(0xc675000c), SPH_C32(0xeb450000),
+	  SPH_C32(0x7b450000), SPH_C32(0x75063a62), SPH_C32(0x67cd2643),
+	  SPH_C32(0x122f6b61), SPH_C32(0x1675c999), SPH_C32(0x1f870000),
+	  SPH_C32(0xe3ce006c), SPH_C32(0x9e340000), SPH_C32(0x55ed0000),
+	  SPH_C32(0x40cf130d), SPH_C32(0x3d700f24), SPH_C32(0xcc736312),
+	  SPH_C32(0xb3ce4f0e) },
+	{ SPH_C32(0x4bd70000), SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000),
+	  SPH_C32(0x3ff30000), SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36),
+	  SPH_C32(0x73c97bd1), SPH_C32(0xcdbf1219), SPH_C32(0xfcc40000),
+	  SPH_C32(0xd9800078), SPH_C32(0x6cf20000), SPH_C32(0xffa30000),
+	  SPH_C32(0x9bd151ab), SPH_C32(0x181bb131), SPH_C32(0xde4ed244),
+	  SPH_C32(0x8980d6d9) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) },
+	{ SPH_C32(0xfcc40000), SPH_C32(0xd9800078), SPH_C32(0x6cf20000),
+	  SPH_C32(0xffa30000), SPH_C32(0x9bd151ab), SPH_C32(0x181bb131),
+	  SPH_C32(0xde4ed244), SPH_C32(0x8980d6d9), SPH_C32(0xb7130000),
+	  SPH_C32(0x3c3f0048), SPH_C32(0xd7680000), SPH_C32(0xc0500000),
+	  SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07), SPH_C32(0xad87a995),
+	  SPH_C32(0x443fc4c0) },
+	{ SPH_C32(0x0b9e0000), SPH_C32(0xc0040050), SPH_C32(0xceeb0000),
+	  SPH_C32(0x115b0000), SPH_C32(0x5ba374bd), SPH_C32(0x0183a351),
+	  SPH_C32(0xad9573a2), SPH_C32(0x6804948e), SPH_C32(0xa30a0000),
+	  SPH_C32(0x1ff50074), SPH_C32(0x87b70000), SPH_C32(0x84e60000),
+	  SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772), SPH_C32(0xcc61b925),
+	  SPH_C32(0x9ff51f40) },
+	{ SPH_C32(0x1f870000), SPH_C32(0xe3ce006c), SPH_C32(0x9e340000),
+	  SPH_C32(0x55ed0000), SPH_C32(0x40cf130d), SPH_C32(0x3d700f24),
+	  SPH_C32(0xcc736312), SPH_C32(0xb3ce4f0e), SPH_C32(0x40490000),
+	  SPH_C32(0x25bb0060), SPH_C32(0x75710000), SPH_C32(0x2ea80000),
+	  SPH_C32(0x35c9296f), SPH_C32(0x5abd2967), SPH_C32(0xde5c0873),
+	  SPH_C32(0xa5bb8697) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0x7d480000), SPH_C32(0xf72b00a0), SPH_C32(0x93fc0000),
+	  SPH_C32(0xe8990000), SPH_C32(0xfff96c1e), SPH_C32(0xf257b9a9),
+	  SPH_C32(0xe60a38cc), SPH_C32(0x672b784e), SPH_C32(0x25300000),
+	  SPH_C32(0x95c30018), SPH_C32(0x56070000), SPH_C32(0x8bc30000),
+	  SPH_C32(0xf80f5721), SPH_C32(0x5c78ef3a), SPH_C32(0x0f151dde),
+	  SPH_C32(0x0dc348a4) },
+	{ SPH_C32(0x8a120000), SPH_C32(0xeeaf0088), SPH_C32(0x31e50000),
+	  SPH_C32(0x06610000), SPH_C32(0x3f8b4908), SPH_C32(0xebcfabc9),
+	  SPH_C32(0x95d1992a), SPH_C32(0x86af3a19), SPH_C32(0x31290000),
+	  SPH_C32(0xb6090024), SPH_C32(0x06d80000), SPH_C32(0xcf750000),
+	  SPH_C32(0xe3633091), SPH_C32(0x608b434f), SPH_C32(0x6ef30d6e),
+	  SPH_C32(0xd6099324) },
+	{ SPH_C32(0x9e0b0000), SPH_C32(0xcd6500b4), SPH_C32(0x613a0000),
+	  SPH_C32(0x42d70000), SPH_C32(0x24e72eb8), SPH_C32(0xd73c07bc),
+	  SPH_C32(0xf437899a), SPH_C32(0x5d65e199), SPH_C32(0xd26a0000),
+	  SPH_C32(0x8c470030), SPH_C32(0xf41e0000), SPH_C32(0x653b0000),
+	  SPH_C32(0x387d7237), SPH_C32(0x45e0fd5a), SPH_C32(0x7ccebc38),
+	  SPH_C32(0xec470af3) },
+	{ SPH_C32(0x3d010000), SPH_C32(0xd29000c0), SPH_C32(0xe68d0000),
+	  SPH_C32(0xc6310000), SPH_C32(0xca304571), SPH_C32(0xa8ea90ce),
+	  SPH_C32(0x385630bf), SPH_C32(0xc290fed9), SPH_C32(0x7afe0000),
+	  SPH_C32(0x53b60014), SPH_C32(0xbd420000), SPH_C32(0xf0860000),
+	  SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979), SPH_C32(0x1d3a76bf),
+	  SPH_C32(0x1bb6813d) },
+	{ SPH_C32(0x29180000), SPH_C32(0xf15a00fc), SPH_C32(0xb6520000),
+	  SPH_C32(0x82870000), SPH_C32(0xd15c22c1), SPH_C32(0x94193cbb),
+	  SPH_C32(0x59b0200f), SPH_C32(0x195a2559), SPH_C32(0x99bd0000),
+	  SPH_C32(0x69f80000), SPH_C32(0x4f840000), SPH_C32(0x5ac80000),
+	  SPH_C32(0x56172fe5), SPH_C32(0x1ede776c), SPH_C32(0x0f07c7e9),
+	  SPH_C32(0x21f818ea) },
+	{ SPH_C32(0xde420000), SPH_C32(0xe8de00d4), SPH_C32(0x144b0000),
+	  SPH_C32(0x6c7f0000), SPH_C32(0x112e07d7), SPH_C32(0x8d812edb),
+	  SPH_C32(0x2a6b81e9), SPH_C32(0xf8de670e), SPH_C32(0x8da40000),
+	  SPH_C32(0x4a32003c), SPH_C32(0x1f5b0000), SPH_C32(0x1e7e0000),
+	  SPH_C32(0x4d7b4855), SPH_C32(0x222ddb19), SPH_C32(0x6ee1d759),
+	  SPH_C32(0xfa32c36a) },
+	{ SPH_C32(0xca5b0000), SPH_C32(0xcb1400e8), SPH_C32(0x44940000),
+	  SPH_C32(0x28c90000), SPH_C32(0x0a426067), SPH_C32(0xb17282ae),
+	  SPH_C32(0x4b8d9159), SPH_C32(0x2314bc8e), SPH_C32(0x6ee70000),
+	  SPH_C32(0x707c0028), SPH_C32(0xed9d0000), SPH_C32(0xb4300000),
+	  SPH_C32(0x96650af3), SPH_C32(0x0746650c), SPH_C32(0x7cdc660f),
+	  SPH_C32(0xc07c5abd) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0xc1c50000), SPH_C32(0x0b1000b8), SPH_C32(0x8a7f0000),
+	  SPH_C32(0x39920000), SPH_C32(0x51e114da), SPH_C32(0xb0f121ff),
+	  SPH_C32(0xe618e2fb), SPH_C32(0x4b102800), SPH_C32(0xcded0000),
+	  SPH_C32(0x6f89005c), SPH_C32(0x6a2a0000), SPH_C32(0x30d60000),
+	  SPH_C32(0x78b2613a), SPH_C32(0x7890f27e), SPH_C32(0xb0bddf2a),
+	  SPH_C32(0x5f8945fd) },
+	{ SPH_C32(0x369f0000), SPH_C32(0x12940090), SPH_C32(0x28660000),
+	  SPH_C32(0xd76a0000), SPH_C32(0x919331cc), SPH_C32(0xa969339f),
+	  SPH_C32(0x95c3431d), SPH_C32(0xaa946a57), SPH_C32(0xd9f40000),
+	  SPH_C32(0x4c430060), SPH_C32(0x3af50000), SPH_C32(0x74600000),
+	  SPH_C32(0x63de068a), SPH_C32(0x44635e0b), SPH_C32(0xd15bcf9a),
+	  SPH_C32(0x84439e7d) },
+	{ SPH_C32(0x22860000), SPH_C32(0x315e00ac), SPH_C32(0x78b90000),
+	  SPH_C32(0x93dc0000), SPH_C32(0x8aff567c), SPH_C32(0x959a9fea),
+	  SPH_C32(0xf42553ad), SPH_C32(0x715eb1d7), SPH_C32(0x3ab70000),
+	  SPH_C32(0x760d0074), SPH_C32(0xc8330000), SPH_C32(0xde2e0000),
+	  SPH_C32(0xb8c0442c), SPH_C32(0x6108e01e), SPH_C32(0xc3667ecc),
+	  SPH_C32(0xbe0d07aa) },
+	{ SPH_C32(0x818c0000), SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000),
+	  SPH_C32(0x173a0000), SPH_C32(0x64283db5), SPH_C32(0xea4c0898),
+	  SPH_C32(0x3844ea88), SPH_C32(0xeeabae97), SPH_C32(0x92230000),
+	  SPH_C32(0xa9fc0050), SPH_C32(0x816f0000), SPH_C32(0x4b930000),
+	  SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d), SPH_C32(0xa292b44b),
+	  SPH_C32(0x49fc8c64) },
+	{ SPH_C32(0x95950000), SPH_C32(0x0d6100e4), SPH_C32(0xafd10000),
+	  SPH_C32(0x538c0000), SPH_C32(0x7f445a05), SPH_C32(0xd6bfa4ed),
+	  SPH_C32(0x59a2fa38), SPH_C32(0x35617517), SPH_C32(0x71600000),
+	  SPH_C32(0x93b20044), SPH_C32(0x73a90000), SPH_C32(0xe1dd0000),
+	  SPH_C32(0xd6aa19fe), SPH_C32(0x3a366a28), SPH_C32(0xb0af051d),
+	  SPH_C32(0x73b215b3) },
+	{ SPH_C32(0x62cf0000), SPH_C32(0x14e500cc), SPH_C32(0x0dc80000),
+	  SPH_C32(0xbd740000), SPH_C32(0xbf367f13), SPH_C32(0xcf27b68d),
+	  SPH_C32(0x2a795bde), SPH_C32(0xd4e53740), SPH_C32(0x65790000),
+	  SPH_C32(0xb0780078), SPH_C32(0x23760000), SPH_C32(0xa56b0000),
+	  SPH_C32(0xcdc67e4e), SPH_C32(0x06c5c65d), SPH_C32(0xd14915ad),
+	  SPH_C32(0xa878ce33) },
+	{ SPH_C32(0x76d60000), SPH_C32(0x372f00f0), SPH_C32(0x5d170000),
+	  SPH_C32(0xf9c20000), SPH_C32(0xa45a18a3), SPH_C32(0xf3d41af8),
+	  SPH_C32(0x4b9f4b6e), SPH_C32(0x0f2fecc0), SPH_C32(0x863a0000),
+	  SPH_C32(0x8a36006c), SPH_C32(0xd1b00000), SPH_C32(0x0f250000),
+	  SPH_C32(0x16d83ce8), SPH_C32(0x23ae7848), SPH_C32(0xc374a4fb),
+	  SPH_C32(0x923657e4) }
+};
+
+static const sph_u32 T512_30[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0xc56b0000), SPH_C32(0xd7e60000), SPH_C32(0x2452c180),
+	  SPH_C32(0xf6c50000), SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f),
+	  SPH_C32(0x8ef57364), SPH_C32(0x70c6f340), SPH_C32(0xc7e00000),
+	  SPH_C32(0x500f0001), SPH_C32(0x18783200), SPH_C32(0xd9930000),
+	  SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff), SPH_C32(0xdb154315),
+	  SPH_C32(0x4230ddcd) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) },
+	{ SPH_C32(0x6ba80000), SPH_C32(0x4ba90001), SPH_C32(0x5d832180),
+	  SPH_C32(0xdad00000), SPH_C32(0x63751974), SPH_C32(0xd089ea49),
+	  SPH_C32(0x256784eb), SPH_C32(0xd3d4a53b), SPH_C32(0x1cc50000),
+	  SPH_C32(0x59260001), SPH_C32(0x51d2f200), SPH_C32(0x58720000),
+	  SPH_C32(0xf30e4347), SPH_C32(0x8d428ece), SPH_C32(0x98432863),
+	  SPH_C32(0xaa5c67e3) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x98370000), SPH_C32(0xe1f60002), SPH_C32(0x8c62e180),
+	  SPH_C32(0xef720000), SPH_C32(0x79226090), SPH_C32(0xba28a1a4),
+	  SPH_C32(0x1e7e5156), SPH_C32(0x8eb793d7), SPH_C32(0x82b10000),
+	  SPH_C32(0x20b90000), SPH_C32(0xdcf77200), SPH_C32(0x36a30000),
+	  SPH_C32(0xd57a0b9e), SPH_C32(0x93a8ad98), SPH_C32(0x127e7e06),
+	  SPH_C32(0xb9eb29ac) },
+	{ SPH_C32(0x28ba0000), SPH_C32(0xa3760003), SPH_C32(0x984b0000),
+	  SPH_C32(0xb4430000), SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc),
+	  SPH_C32(0x784fbecb), SPH_C32(0xb50f8cc2), SPH_C32(0xeb920000),
+	  SPH_C32(0xecf90000), SPH_C32(0xbd5ea000), SPH_C32(0xc3250000),
+	  SPH_C32(0xa9465633), SPH_C32(0x3ac3a051), SPH_C32(0x62f9ca9c),
+	  SPH_C32(0x58c9a21a) },
+	{ SPH_C32(0x36f40000), SPH_C32(0x7db90003), SPH_C32(0xf5b30180),
+	  SPH_C32(0xc3670000), SPH_C32(0x3cee1523), SPH_C32(0xdc781692),
+	  SPH_C32(0xb5eca6d9), SPH_C32(0x2da5c5ac), SPH_C32(0x59940000),
+	  SPH_C32(0x29900000), SPH_C32(0x955db200), SPH_C32(0xb7420000),
+	  SPH_C32(0x1f8460c7), SPH_C32(0xd1d199a9), SPH_C32(0x51281570),
+	  SPH_C32(0x51879382) },
+	{ SPH_C32(0x5d5c0000), SPH_C32(0x36100002), SPH_C32(0xa8302000),
+	  SPH_C32(0x19b70000), SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb),
+	  SPH_C32(0x908b2232), SPH_C32(0xfe716097), SPH_C32(0x45510000),
+	  SPH_C32(0x70b60001), SPH_C32(0xc48f4000), SPH_C32(0xef300000),
+	  SPH_C32(0xec8a2380), SPH_C32(0x5c931767), SPH_C32(0xc96b3d13),
+	  SPH_C32(0xfbdbf461) },
+	{ SPH_C32(0x43120000), SPH_C32(0xe8df0002), SPH_C32(0xc5c82180),
+	  SPH_C32(0x6e930000), SPH_C32(0xb3dc0bc9), SPH_C32(0xf8519595),
+	  SPH_C32(0x5d283a20), SPH_C32(0x66db29f9), SPH_C32(0xf7570000),
+	  SPH_C32(0xb5df0001), SPH_C32(0xec8c5200), SPH_C32(0x9b570000),
+	  SPH_C32(0x5a481574), SPH_C32(0xb7812e9f), SPH_C32(0xfabae2ff),
+	  SPH_C32(0xf295c5f9) },
+	{ SPH_C32(0xf39f0000), SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000),
+	  SPH_C32(0x35a20000), SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed),
+	  SPH_C32(0x3b19d5bd), SPH_C32(0x5d6336ec), SPH_C32(0x9e740000),
+	  SPH_C32(0x799f0001), SPH_C32(0x8d258000), SPH_C32(0x6ed10000),
+	  SPH_C32(0x267448d9), SPH_C32(0x1eea2356), SPH_C32(0x8a3d5665),
+	  SPH_C32(0x13b74e4f) },
+	{ SPH_C32(0xedd10000), SPH_C32(0x74900003), SPH_C32(0xbc19c180),
+	  SPH_C32(0x42860000), SPH_C32(0xf6107e7a), SPH_C32(0x9e0122a3),
+	  SPH_C32(0xf6bacdaf), SPH_C32(0xc5c97f82), SPH_C32(0x2c720000),
+	  SPH_C32(0xbcf60001), SPH_C32(0xa5269200), SPH_C32(0x1ab60000),
+	  SPH_C32(0x90b67e2d), SPH_C32(0xf5f81aae), SPH_C32(0xb9ec8989),
+	  SPH_C32(0x1af97fd7) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0x2ef90000), SPH_C32(0x3b1f0000), SPH_C32(0x990c6180),
+	  SPH_C32(0x35e00000), SPH_C32(0x8fff3af4), SPH_C32(0x8c1afd2e),
+	  SPH_C32(0xec0cb9f8), SPH_C32(0x280f515a), SPH_C32(0x04c80000),
+	  SPH_C32(0x1f800002), SPH_C32(0x3d6d9200), SPH_C32(0xaef50000),
+	  SPH_C32(0x401f6c90), SPH_C32(0xdd206572), SPH_C32(0xc1a33742),
+	  SPH_C32(0xaff6f315) },
+	{ SPH_C32(0x9e740000), SPH_C32(0x799f0001), SPH_C32(0x8d258000),
+	  SPH_C32(0x6ed10000), SPH_C32(0x267448d9), SPH_C32(0x1eea2356),
+	  SPH_C32(0x8a3d5665), SPH_C32(0x13b74e4f), SPH_C32(0x6deb0000),
+	  SPH_C32(0xd3c00002), SPH_C32(0x5cc44000), SPH_C32(0x5b730000),
+	  SPH_C32(0x3c23313d), SPH_C32(0x744b68bb), SPH_C32(0xb12483d8),
+	  SPH_C32(0x4ed478a3) },
+	{ SPH_C32(0x803a0000), SPH_C32(0xa7500001), SPH_C32(0xe0dd8180),
+	  SPH_C32(0x19f50000), SPH_C32(0xca334f47), SPH_C32(0xea4a4a18),
+	  SPH_C32(0x479e4e77), SPH_C32(0x8b1d0721), SPH_C32(0xdfed0000),
+	  SPH_C32(0x16a90002), SPH_C32(0x74c75200), SPH_C32(0x2f140000),
+	  SPH_C32(0x8ae107c9), SPH_C32(0x9f595143), SPH_C32(0x82f55c34),
+	  SPH_C32(0x479a493b) },
+	{ SPH_C32(0xeb920000), SPH_C32(0xecf90000), SPH_C32(0xbd5ea000),
+	  SPH_C32(0xc3250000), SPH_C32(0xa9465633), SPH_C32(0x3ac3a051),
+	  SPH_C32(0x62f9ca9c), SPH_C32(0x58c9a21a), SPH_C32(0xc3280000),
+	  SPH_C32(0x4f8f0003), SPH_C32(0x2515a000), SPH_C32(0x77660000),
+	  SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d), SPH_C32(0x1ab67457),
+	  SPH_C32(0xedc62ed8) },
+	{ SPH_C32(0xf5dc0000), SPH_C32(0x32360000), SPH_C32(0xd0a6a180),
+	  SPH_C32(0xb4010000), SPH_C32(0x450151ad), SPH_C32(0xce63c91f),
+	  SPH_C32(0xaf5ad28e), SPH_C32(0xc063eb74), SPH_C32(0x712e0000),
+	  SPH_C32(0x8ae60003), SPH_C32(0x0d16b200), SPH_C32(0x03010000),
+	  SPH_C32(0xcf2d727a), SPH_C32(0xf909e675), SPH_C32(0x2967abbb),
+	  SPH_C32(0xe4881f40) },
+	{ SPH_C32(0x45510000), SPH_C32(0x70b60001), SPH_C32(0xc48f4000),
+	  SPH_C32(0xef300000), SPH_C32(0xec8a2380), SPH_C32(0x5c931767),
+	  SPH_C32(0xc96b3d13), SPH_C32(0xfbdbf461), SPH_C32(0x180d0000),
+	  SPH_C32(0x46a60003), SPH_C32(0x6cbf6000), SPH_C32(0xf6870000),
+	  SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc), SPH_C32(0x59e01f21),
+	  SPH_C32(0x05aa94f6) },
+	{ SPH_C32(0x5b1f0000), SPH_C32(0xae790001), SPH_C32(0xa9774180),
+	  SPH_C32(0x98140000), SPH_C32(0x00cd241e), SPH_C32(0xa8337e29),
+	  SPH_C32(0x04c82501), SPH_C32(0x6371bd0f), SPH_C32(0xaa0b0000),
+	  SPH_C32(0x83cf0003), SPH_C32(0x44bc7200), SPH_C32(0x82e00000),
+	  SPH_C32(0x05d31923), SPH_C32(0xbb70d244), SPH_C32(0x6a31c0cd),
+	  SPH_C32(0x0ce4a56e) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0xa8800000), SPH_C32(0x04260002), SPH_C32(0x78968180),
+	  SPH_C32(0xadb60000), SPH_C32(0x1a9a5dfa), SPH_C32(0xc29235c4),
+	  SPH_C32(0x3fd1f0bc), SPH_C32(0x3e128be3), SPH_C32(0x347f0000),
+	  SPH_C32(0xfa500002), SPH_C32(0xc999f200), SPH_C32(0xec310000),
+	  SPH_C32(0x23a751fa), SPH_C32(0xa59af112), SPH_C32(0xe00c96a8),
+	  SPH_C32(0x1f53eb21) },
+	{ SPH_C32(0x180d0000), SPH_C32(0x46a60003), SPH_C32(0x6cbf6000),
+	  SPH_C32(0xf6870000), SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc),
+	  SPH_C32(0x59e01f21), SPH_C32(0x05aa94f6), SPH_C32(0x5d5c0000),
+	  SPH_C32(0x36100002), SPH_C32(0xa8302000), SPH_C32(0x19b70000),
+	  SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb), SPH_C32(0x908b2232),
+	  SPH_C32(0xfe716097) },
+	{ SPH_C32(0x06430000), SPH_C32(0x98690003), SPH_C32(0x01476180),
+	  SPH_C32(0x81a30000), SPH_C32(0x5f562849), SPH_C32(0xa4c282f2),
+	  SPH_C32(0x94430733), SPH_C32(0x9d00dd98), SPH_C32(0xef5a0000),
+	  SPH_C32(0xf3790002), SPH_C32(0x80333200), SPH_C32(0x6dd00000),
+	  SPH_C32(0xe9593aa3), SPH_C32(0xe7e3c523), SPH_C32(0xa35afdde),
+	  SPH_C32(0xf73f510f) },
+	{ SPH_C32(0x6deb0000), SPH_C32(0xd3c00002), SPH_C32(0x5cc44000),
+	  SPH_C32(0x5b730000), SPH_C32(0x3c23313d), SPH_C32(0x744b68bb),
+	  SPH_C32(0xb12483d8), SPH_C32(0x4ed478a3), SPH_C32(0xf39f0000),
+	  SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000), SPH_C32(0x35a20000),
+	  SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed), SPH_C32(0x3b19d5bd),
+	  SPH_C32(0x5d6336ec) },
+	{ SPH_C32(0x73a50000), SPH_C32(0x0d0f0002), SPH_C32(0x313c4180),
+	  SPH_C32(0x2c570000), SPH_C32(0xd06436a3), SPH_C32(0x80eb01f5),
+	  SPH_C32(0x7c879bca), SPH_C32(0xd67e31cd), SPH_C32(0x41990000),
+	  SPH_C32(0x6f360003), SPH_C32(0xf9e2d200), SPH_C32(0x41c50000),
+	  SPH_C32(0xac954f10), SPH_C32(0x81b37215), SPH_C32(0x08c80a51),
+	  SPH_C32(0x542d0774) },
+	{ SPH_C32(0xc3280000), SPH_C32(0x4f8f0003), SPH_C32(0x2515a000),
+	  SPH_C32(0x77660000), SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d),
+	  SPH_C32(0x1ab67457), SPH_C32(0xedc62ed8), SPH_C32(0x28ba0000),
+	  SPH_C32(0xa3760003), SPH_C32(0x984b0000), SPH_C32(0xb4430000),
+	  SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc), SPH_C32(0x784fbecb),
+	  SPH_C32(0xb50f8cc2) },
+	{ SPH_C32(0xdd660000), SPH_C32(0x91400003), SPH_C32(0x48eda180),
+	  SPH_C32(0x00420000), SPH_C32(0x95a84310), SPH_C32(0xe6bbb6c3),
+	  SPH_C32(0xd7156c45), SPH_C32(0x756c67b6), SPH_C32(0x9abc0000),
+	  SPH_C32(0x661f0003), SPH_C32(0xb0481200), SPH_C32(0xc0240000),
+	  SPH_C32(0x666b2449), SPH_C32(0xc3ca4624), SPH_C32(0x4b9e6127),
+	  SPH_C32(0xbc41bd5a) }
+};
+
+static const sph_u32 T512_35[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xb79f0000), SPH_C32(0xf3830c00),
+	  SPH_C32(0xabf50000), SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c),
+	  SPH_C32(0x99cfe8a3), SPH_C32(0xa9350c55), SPH_C32(0x83310000),
+	  SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180), SPH_C32(0xc36b0000),
+	  SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb), SPH_C32(0x4f06b6b7),
+	  SPH_C32(0x7a915d81) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0x35a90000), SPH_C32(0x5bc80000), SPH_C32(0x95b10e80),
+	  SPH_C32(0x3e060000), SPH_C32(0x67471384), SPH_C32(0xb1868180),
+	  SPH_C32(0x7f954a8e), SPH_C32(0x2752bbaf), SPH_C32(0xcebb0000),
+	  SPH_C32(0x124b0000), SPH_C32(0xe0a50480), SPH_C32(0x6dc80000),
+	  SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f), SPH_C32(0xc01f5c5b),
+	  SPH_C32(0x3eac6d85) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0xcebb0000), SPH_C32(0x124b0000), SPH_C32(0xe0a50480),
+	  SPH_C32(0x6dc80000), SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f),
+	  SPH_C32(0xc01f5c5b), SPH_C32(0x3eac6d85), SPH_C32(0xfb120000),
+	  SPH_C32(0x49830000), SPH_C32(0x75140a00), SPH_C32(0x53ce0000),
+	  SPH_C32(0x961a45a8), SPH_C32(0xb65573ff), SPH_C32(0xbf8a16d5),
+	  SPH_C32(0x19fed62a) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0x4f250000), SPH_C32(0xfe1c0000), SPH_C32(0x86970600),
+	  SPH_C32(0xf83b0000), SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3),
+	  SPH_C32(0x2645fe76), SPH_C32(0xb0cbda7f), SPH_C32(0xb6980000),
+	  SPH_C32(0x00b70000), SPH_C32(0x499f0f00), SPH_C32(0xfd6d0000),
+	  SPH_C32(0x80637e55), SPH_C32(0x793a7b5b), SPH_C32(0x3093fc39),
+	  SPH_C32(0x5dc3e62e) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0xb6980000), SPH_C32(0x00b70000), SPH_C32(0x499f0f00),
+	  SPH_C32(0xfd6d0000), SPH_C32(0x80637e55), SPH_C32(0x793a7b5b),
+	  SPH_C32(0x3093fc39), SPH_C32(0x5dc3e62e), SPH_C32(0xf9bd0000),
+	  SPH_C32(0xfeab0000), SPH_C32(0xcf080900), SPH_C32(0x05560000),
+	  SPH_C32(0x2c97007b), SPH_C32(0x361db598), SPH_C32(0x16d6024f),
+	  SPH_C32(0xed083c51) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) },
+	{ SPH_C32(0x37060000), SPH_C32(0xece00000), SPH_C32(0x2fad0d80),
+	  SPH_C32(0x689e0000), SPH_C32(0xddca5657), SPH_C32(0x31ce47e7),
+	  SPH_C32(0xd6c95e14), SPH_C32(0xd3a451d4), SPH_C32(0xb4370000),
+	  SPH_C32(0xb79f0000), SPH_C32(0xf3830c00), SPH_C32(0xabf50000),
+	  SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c), SPH_C32(0x99cfe8a3),
+	  SPH_C32(0xa9350c55) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x605c0000), SPH_C32(0xbec50000), SPH_C32(0x1f421400),
+	  SPH_C32(0x38130000), SPH_C32(0x11552295), SPH_C32(0x982964ae),
+	  SPH_C32(0x97318f3f), SPH_C32(0x5bbeff08), SPH_C32(0x9fd00000),
+	  SPH_C32(0x32980000), SPH_C32(0x0bca0300), SPH_C32(0xe2d70000),
+	  SPH_C32(0xb1ee2f9c), SPH_C32(0xbc5455f2), SPH_C32(0x2bf9ba3f),
+	  SPH_C32(0x16cdfe94) },
+	{ SPH_C32(0x2dd60000), SPH_C32(0xf7f10000), SPH_C32(0x23c91100),
+	  SPH_C32(0x96b00000), SPH_C32(0x072c1968), SPH_C32(0x57466c0a),
+	  SPH_C32(0x182865d3), SPH_C32(0x1f83cf0c), SPH_C32(0x53c40000),
+	  SPH_C32(0x97fb0000), SPH_C32(0x51730480), SPH_C32(0xd9870000),
+	  SPH_C32(0xfa3e3c63), SPH_C32(0x3bcf61ea), SPH_C32(0x42baf2fe),
+	  SPH_C32(0xdc97796a) },
+	{ SPH_C32(0xe1c20000), SPH_C32(0x52920000), SPH_C32(0x79701680),
+	  SPH_C32(0xade00000), SPH_C32(0x4cfc0a97), SPH_C32(0xd0dd5812),
+	  SPH_C32(0x716b2d12), SPH_C32(0xd5d948f2), SPH_C32(0xd25a0000),
+	  SPH_C32(0x7bac0000), SPH_C32(0x37410600), SPH_C32(0x4c740000),
+	  SPH_C32(0xa7971461), SPH_C32(0x733b5d56), SPH_C32(0xa4e050d3),
+	  SPH_C32(0x52f0ce90) },
+	{ SPH_C32(0xd46b0000), SPH_C32(0x095a0000), SPH_C32(0xecc11800),
+	  SPH_C32(0x93e60000), SPH_C32(0x2bbb1913), SPH_C32(0x615bd992),
+	  SPH_C32(0x0efe679c), SPH_C32(0xf28bf35d), SPH_C32(0x1ce10000),
+	  SPH_C32(0x69e70000), SPH_C32(0xd7e40280), SPH_C32(0x21bc0000),
+	  SPH_C32(0x56ca424d), SPH_C32(0x74e8af29), SPH_C32(0x64ff0c88),
+	  SPH_C32(0x6c5ca315) },
+	{ SPH_C32(0x187f0000), SPH_C32(0xac390000), SPH_C32(0xb6781f80),
+	  SPH_C32(0xa8b60000), SPH_C32(0x606b0aec), SPH_C32(0xe6c0ed8a),
+	  SPH_C32(0x67bd2f5d), SPH_C32(0x38d174a3), SPH_C32(0x9d7f0000),
+	  SPH_C32(0x85b00000), SPH_C32(0xb1d60000), SPH_C32(0xb44f0000),
+	  SPH_C32(0x0b636a4f), SPH_C32(0x3c1c9395), SPH_C32(0x82a5aea5),
+	  SPH_C32(0xe23b14ef) },
+	{ SPH_C32(0x55f50000), SPH_C32(0xe50d0000), SPH_C32(0x8af31a80),
+	  SPH_C32(0x06150000), SPH_C32(0x76123111), SPH_C32(0x29afe52e),
+	  SPH_C32(0xe8a4c5b1), SPH_C32(0x7cec44a7), SPH_C32(0x516b0000),
+	  SPH_C32(0x20d30000), SPH_C32(0xeb6f0780), SPH_C32(0x8f1f0000),
+	  SPH_C32(0x40b379b0), SPH_C32(0xbb87a78d), SPH_C32(0xebe6e664),
+	  SPH_C32(0x28619311) },
+	{ SPH_C32(0x99e10000), SPH_C32(0x406e0000), SPH_C32(0xd04a1d00),
+	  SPH_C32(0x3d450000), SPH_C32(0x3dc222ee), SPH_C32(0xae34d136),
+	  SPH_C32(0x81e78d70), SPH_C32(0xb6b6c359), SPH_C32(0xd0f50000),
+	  SPH_C32(0xcc840000), SPH_C32(0x8d5d0500), SPH_C32(0x1aec0000),
+	  SPH_C32(0x1d1a51b2), SPH_C32(0xf3739b31), SPH_C32(0x0dbc4449),
+	  SPH_C32(0xa60624eb) },
+	{ SPH_C32(0xaee70000), SPH_C32(0xac8e0000), SPH_C32(0xffe71080),
+	  SPH_C32(0x55db0000), SPH_C32(0xe00874b9), SPH_C32(0x9ffa96d1),
+	  SPH_C32(0x572ed364), SPH_C32(0x6512928d), SPH_C32(0x64c20000),
+	  SPH_C32(0x7b1b0000), SPH_C32(0x7ede0900), SPH_C32(0xb1190000),
+	  SPH_C32(0x27f46a34), SPH_C32(0x0a01260d), SPH_C32(0x9473acea),
+	  SPH_C32(0x0f3328be) },
+	{ SPH_C32(0x62f30000), SPH_C32(0x09ed0000), SPH_C32(0xa55e1700),
+	  SPH_C32(0x6e8b0000), SPH_C32(0xabd86746), SPH_C32(0x1861a2c9),
+	  SPH_C32(0x3e6d9ba5), SPH_C32(0xaf481573), SPH_C32(0xe55c0000),
+	  SPH_C32(0x974c0000), SPH_C32(0x18ec0b80), SPH_C32(0x24ea0000),
+	  SPH_C32(0x7a5d4236), SPH_C32(0x42f51ab1), SPH_C32(0x72290ec7),
+	  SPH_C32(0x81549f44) },
+	{ SPH_C32(0x2f790000), SPH_C32(0x40d90000), SPH_C32(0x99d51200),
+	  SPH_C32(0xc0280000), SPH_C32(0xbda15cbb), SPH_C32(0xd70eaa6d),
+	  SPH_C32(0xb1747149), SPH_C32(0xeb752577), SPH_C32(0x29480000),
+	  SPH_C32(0x322f0000), SPH_C32(0x42550c00), SPH_C32(0x1fba0000),
+	  SPH_C32(0x318d51c9), SPH_C32(0xc56e2ea9), SPH_C32(0x1b6a4606),
+	  SPH_C32(0x4b0e18ba) },
+	{ SPH_C32(0xe36d0000), SPH_C32(0xe5ba0000), SPH_C32(0xc36c1580),
+	  SPH_C32(0xfb780000), SPH_C32(0xf6714f44), SPH_C32(0x50959e75),
+	  SPH_C32(0xd8373988), SPH_C32(0x212fa289), SPH_C32(0xa8d60000),
+	  SPH_C32(0xde780000), SPH_C32(0x24670e80), SPH_C32(0x8a490000),
+	  SPH_C32(0x6c2479cb), SPH_C32(0x8d9a1215), SPH_C32(0xfd30e42b),
+	  SPH_C32(0xc569af40) },
+	{ SPH_C32(0xd6c40000), SPH_C32(0xbe720000), SPH_C32(0x56dd1b00),
+	  SPH_C32(0xc57e0000), SPH_C32(0x91365cc0), SPH_C32(0xe1131ff5),
+	  SPH_C32(0xa7a27306), SPH_C32(0x067d1926), SPH_C32(0x666d0000),
+	  SPH_C32(0xcc330000), SPH_C32(0xc4c20a00), SPH_C32(0xe7810000),
+	  SPH_C32(0x9d792fe7), SPH_C32(0x8a49e06a), SPH_C32(0x3d2fb870),
+	  SPH_C32(0xfbc5c2c5) },
+	{ SPH_C32(0x1ad00000), SPH_C32(0x1b110000), SPH_C32(0x0c641c80),
+	  SPH_C32(0xfe2e0000), SPH_C32(0xdae64f3f), SPH_C32(0x66882bed),
+	  SPH_C32(0xcee13bc7), SPH_C32(0xcc279ed8), SPH_C32(0xe7f30000),
+	  SPH_C32(0x20640000), SPH_C32(0xa2f00880), SPH_C32(0x72720000),
+	  SPH_C32(0xc0d007e5), SPH_C32(0xc2bddcd6), SPH_C32(0xdb751a5d),
+	  SPH_C32(0x75a2753f) },
+	{ SPH_C32(0x575a0000), SPH_C32(0x52250000), SPH_C32(0x30ef1980),
+	  SPH_C32(0x508d0000), SPH_C32(0xcc9f74c2), SPH_C32(0xa9e72349),
+	  SPH_C32(0x41f8d12b), SPH_C32(0x881aaedc), SPH_C32(0x2be70000),
+	  SPH_C32(0x85070000), SPH_C32(0xf8490f00), SPH_C32(0x49220000),
+	  SPH_C32(0x8b00141a), SPH_C32(0x4526e8ce), SPH_C32(0xb236529c),
+	  SPH_C32(0xbff8f2c1) },
+	{ SPH_C32(0x9b4e0000), SPH_C32(0xf7460000), SPH_C32(0x6a561e00),
+	  SPH_C32(0x6bdd0000), SPH_C32(0x874f673d), SPH_C32(0x2e7c1751),
+	  SPH_C32(0x28bb99ea), SPH_C32(0x42402922), SPH_C32(0xaa790000),
+	  SPH_C32(0x69500000), SPH_C32(0x9e7b0d80), SPH_C32(0xdcd10000),
+	  SPH_C32(0xd6a93c18), SPH_C32(0x0dd2d472), SPH_C32(0x546cf0b1),
+	  SPH_C32(0x319f453b) }
+};
+
+static const sph_u32 T512_40[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x8f750000), SPH_C32(0xadc40000), SPH_C32(0xf8bb0024),
+	  SPH_C32(0x6c430000), SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3),
+	  SPH_C32(0x5ced124e), SPH_C32(0x7665c55a), SPH_C32(0xa9140000),
+	  SPH_C32(0x7d150000), SPH_C32(0xb7cc0018), SPH_C32(0xfe250000),
+	  SPH_C32(0x5d116688), SPH_C32(0x45997fda), SPH_C32(0xf7294e64),
+	  SPH_C32(0x43d8eceb) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x0c2f0000), SPH_C32(0x69330000), SPH_C32(0xf9fc0006),
+	  SPH_C32(0x828b0000), SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7),
+	  SPH_C32(0x001826bc), SPH_C32(0x48c3a5ad), SPH_C32(0x218c0000),
+	  SPH_C32(0x62810000), SPH_C32(0xc8030036), SPH_C32(0x056b0000),
+	  SPH_C32(0xac496112), SPH_C32(0x2437eebd), SPH_C32(0x5fbc3e08),
+	  SPH_C32(0xa5c8987f) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0x84b70000), SPH_C32(0x76a70000), SPH_C32(0x86330028),
+	  SPH_C32(0x79c50000), SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480),
+	  SPH_C32(0xa88d56d0), SPH_C32(0xaed3d139), SPH_C32(0x2a4e0000),
+	  SPH_C32(0xb9e20000), SPH_C32(0xb68b003a), SPH_C32(0x10ed0000),
+	  SPH_C32(0x3db429e1), SPH_C32(0x51b655fe), SPH_C32(0xabdc7a96),
+	  SPH_C32(0x7d7e8c1c) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x55bd0000), SPH_C32(0x9b040000), SPH_C32(0xed150044),
+	  SPH_C32(0x67f20000), SPH_C32(0xd9435d42), SPH_C32(0x0de42f6a),
+	  SPH_C32(0x3b2eedc7), SPH_C32(0xc376a2c1), SPH_C32(0xf15b0000),
+	  SPH_C32(0x0f8a0000), SPH_C32(0x57b30012), SPH_C32(0xbd5c0000),
+	  SPH_C32(0xc6082e35), SPH_C32(0xa2dd0960), SPH_C32(0xaa0d4ae2),
+	  SPH_C32(0xe4f9ae19) },
+	{ SPH_C32(0xdac80000), SPH_C32(0x36c00000), SPH_C32(0x15ae0060),
+	  SPH_C32(0x0bb10000), SPH_C32(0x6b697976), SPH_C32(0x248dd0a9),
+	  SPH_C32(0x67c3ff89), SPH_C32(0xb513679b), SPH_C32(0x584f0000),
+	  SPH_C32(0x729f0000), SPH_C32(0xe07f000a), SPH_C32(0x43790000),
+	  SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba), SPH_C32(0x5d240486),
+	  SPH_C32(0xa72142f2) },
+	{ SPH_C32(0xdd250000), SPH_C32(0x84900000), SPH_C32(0x92da006a),
+	  SPH_C32(0x9cbc0000), SPH_C32(0x281b5ad8), SPH_C32(0x6c4abe0d),
+	  SPH_C32(0x93bb9dab), SPH_C32(0x2566d655), SPH_C32(0xfa990000),
+	  SPH_C32(0xd4e90000), SPH_C32(0x293b001e), SPH_C32(0xa8da0000),
+	  SPH_C32(0x57f566c6), SPH_C32(0xd75cb223), SPH_C32(0x5e6d0e7c),
+	  SPH_C32(0x3c4fba7a) },
+	{ SPH_C32(0x59920000), SPH_C32(0xf2370000), SPH_C32(0x14e90042),
+	  SPH_C32(0xe5790000), SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d),
+	  SPH_C32(0x3b36cb7b), SPH_C32(0x8bb5076c), SPH_C32(0xd0d70000),
+	  SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024), SPH_C32(0xb8370000),
+	  SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd), SPH_C32(0xf5b174ea),
+	  SPH_C32(0x41313666) },
+	{ SPH_C32(0x5e7f0000), SPH_C32(0x40670000), SPH_C32(0x939d0048),
+	  SPH_C32(0x72740000), SPH_C32(0x48be15b1), SPH_C32(0x78659429),
+	  SPH_C32(0xcf4ea959), SPH_C32(0x1bc0b6a2), SPH_C32(0x72010000),
+	  SPH_C32(0xcb7d0000), SPH_C32(0x56f40030), SPH_C32(0x53940000),
+	  SPH_C32(0xa6ad615c), SPH_C32(0xb6f22344), SPH_C32(0xf6f87e10),
+	  SPH_C32(0xda5fceee) },
+	{ SPH_C32(0xd10a0000), SPH_C32(0xeda30000), SPH_C32(0x6b26006c),
+	  SPH_C32(0x1e370000), SPH_C32(0xfa943185), SPH_C32(0x510c6bea),
+	  SPH_C32(0x93a3bb17), SPH_C32(0x6da573f8), SPH_C32(0xdb150000),
+	  SPH_C32(0xb6680000), SPH_C32(0xe1380028), SPH_C32(0xadb10000),
+	  SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e), SPH_C32(0x01d13074),
+	  SPH_C32(0x99872205) },
+	{ SPH_C32(0xd6e70000), SPH_C32(0x5ff30000), SPH_C32(0xec520066),
+	  SPH_C32(0x893a0000), SPH_C32(0xb9e6122b), SPH_C32(0x19cb054e),
+	  SPH_C32(0x67dbd935), SPH_C32(0xfdd0c236), SPH_C32(0x79c30000),
+	  SPH_C32(0x101e0000), SPH_C32(0x287c003c), SPH_C32(0x46120000),
+	  SPH_C32(0x375029af), SPH_C32(0xc3739807), SPH_C32(0x02983a8e),
+	  SPH_C32(0x02e9da8d) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x54600000), SPH_C32(0x1bac0000), SPH_C32(0x1983000c),
+	  SPH_C32(0xc1f20000), SPH_C32(0x499623e0), SPH_C32(0xda02a35d),
+	  SPH_C32(0x5d3c223a), SPH_C32(0xefe2e75f), SPH_C32(0xa30b0000),
+	  SPH_C32(0x26de0000), SPH_C32(0x3dd2005c), SPH_C32(0x4da30000),
+	  SPH_C32(0x5c3950d9), SPH_C32(0xe7fe48ae), SPH_C32(0x655bc507),
+	  SPH_C32(0xb7fabd16) },
+	{ SPH_C32(0xdb150000), SPH_C32(0xb6680000), SPH_C32(0xe1380028),
+	  SPH_C32(0xadb10000), SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e),
+	  SPH_C32(0x01d13074), SPH_C32(0x99872205), SPH_C32(0x0a1f0000),
+	  SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044), SPH_C32(0xb3860000),
+	  SPH_C32(0x01283651), SPH_C32(0xa2673774), SPH_C32(0x92728b63),
+	  SPH_C32(0xf42251fd) },
+	{ SPH_C32(0xdcf80000), SPH_C32(0x04380000), SPH_C32(0x664c0022),
+	  SPH_C32(0x3abc0000), SPH_C32(0xb8ce247a), SPH_C32(0xbbac323a),
+	  SPH_C32(0xf5a95256), SPH_C32(0x09f293cb), SPH_C32(0xa8c90000),
+	  SPH_C32(0xfdbd0000), SPH_C32(0x435a0050), SPH_C32(0x58250000),
+	  SPH_C32(0xcdc4182a), SPH_C32(0x927ff3ed), SPH_C32(0x913b8199),
+	  SPH_C32(0x6f4ca975) },
+	{ SPH_C32(0x584f0000), SPH_C32(0x729f0000), SPH_C32(0xe07f000a),
+	  SPH_C32(0x43790000), SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba),
+	  SPH_C32(0x5d240486), SPH_C32(0xa72142f2), SPH_C32(0x82870000),
+	  SPH_C32(0x445f0000), SPH_C32(0xf5d1006a), SPH_C32(0x48c80000),
+	  SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613), SPH_C32(0x3ae7fb0f),
+	  SPH_C32(0x12322569) },
+	{ SPH_C32(0x5fa20000), SPH_C32(0xc0cf0000), SPH_C32(0x670b0000),
+	  SPH_C32(0xd4740000), SPH_C32(0xd86b6b13), SPH_C32(0xaf83181e),
+	  SPH_C32(0xa95c66a4), SPH_C32(0x3754f33c), SPH_C32(0x20510000),
+	  SPH_C32(0xe2290000), SPH_C32(0x3c95007e), SPH_C32(0xa36b0000),
+	  SPH_C32(0x3c9c1fb0), SPH_C32(0xf3d1628a), SPH_C32(0x39aef1f5),
+	  SPH_C32(0x895cdde1) },
+	{ SPH_C32(0xd0d70000), SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024),
+	  SPH_C32(0xb8370000), SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd),
+	  SPH_C32(0xf5b174ea), SPH_C32(0x41313666), SPH_C32(0x89450000),
+	  SPH_C32(0x9f3c0000), SPH_C32(0x8b590066), SPH_C32(0x5d4e0000),
+	  SPH_C32(0x618d7938), SPH_C32(0xb6481d50), SPH_C32(0xce87bf91),
+	  SPH_C32(0xca84310a) },
+	{ SPH_C32(0xd73a0000), SPH_C32(0xdf5b0000), SPH_C32(0x18c4002e),
+	  SPH_C32(0x2f3a0000), SPH_C32(0x29336c89), SPH_C32(0xce2d8979),
+	  SPH_C32(0x01c916c8), SPH_C32(0xd14487a8), SPH_C32(0x2b930000),
+	  SPH_C32(0x394a0000), SPH_C32(0x421d0072), SPH_C32(0xb6ed0000),
+	  SPH_C32(0xad615743), SPH_C32(0x8650d9c9), SPH_C32(0xcdceb56b),
+	  SPH_C32(0x51eac982) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0x06300000), SPH_C32(0x32f80000), SPH_C32(0x73e20042),
+	  SPH_C32(0x310d0000), SPH_C32(0xd3a75d0c), SPH_C32(0x9f21e293),
+	  SPH_C32(0x926aaddf), SPH_C32(0xbce1f450), SPH_C32(0xf0860000),
+	  SPH_C32(0x8f220000), SPH_C32(0xa325005a), SPH_C32(0x1b5c0000),
+	  SPH_C32(0x56dd5097), SPH_C32(0x753b8557), SPH_C32(0xcc1f851f),
+	  SPH_C32(0xc86deb87) },
+	{ SPH_C32(0x89450000), SPH_C32(0x9f3c0000), SPH_C32(0x8b590066),
+	  SPH_C32(0x5d4e0000), SPH_C32(0x618d7938), SPH_C32(0xb6481d50),
+	  SPH_C32(0xce87bf91), SPH_C32(0xca84310a), SPH_C32(0x59920000),
+	  SPH_C32(0xf2370000), SPH_C32(0x14e90042), SPH_C32(0xe5790000),
+	  SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d), SPH_C32(0x3b36cb7b),
+	  SPH_C32(0x8bb5076c) },
+	{ SPH_C32(0x8ea80000), SPH_C32(0x2d6c0000), SPH_C32(0x0c2d006c),
+	  SPH_C32(0xca430000), SPH_C32(0x22ff5a96), SPH_C32(0xfe8f73f4),
+	  SPH_C32(0x3affddb3), SPH_C32(0x5af180c4), SPH_C32(0xfb440000),
+	  SPH_C32(0x54410000), SPH_C32(0xddad0056), SPH_C32(0x0eda0000),
+	  SPH_C32(0xc7201864), SPH_C32(0x00ba3e14), SPH_C32(0x387fc181),
+	  SPH_C32(0x10dbffe4) },
+	{ SPH_C32(0x0a1f0000), SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044),
+	  SPH_C32(0xb3860000), SPH_C32(0x01283651), SPH_C32(0xa2673774),
+	  SPH_C32(0x92728b63), SPH_C32(0xf42251fd), SPH_C32(0xd10a0000),
+	  SPH_C32(0xeda30000), SPH_C32(0x6b26006c), SPH_C32(0x1e370000),
+	  SPH_C32(0xfa943185), SPH_C32(0x510c6bea), SPH_C32(0x93a3bb17),
+	  SPH_C32(0x6da573f8) },
+	{ SPH_C32(0x0df20000), SPH_C32(0xe99b0000), SPH_C32(0x0d6a004e),
+	  SPH_C32(0x248b0000), SPH_C32(0x425a15ff), SPH_C32(0xeaa059d0),
+	  SPH_C32(0x660ae941), SPH_C32(0x6457e033), SPH_C32(0x73dc0000),
+	  SPH_C32(0x4bd50000), SPH_C32(0xa2620078), SPH_C32(0xf5940000),
+	  SPH_C32(0x36781ffe), SPH_C32(0x6114af73), SPH_C32(0x90eab1ed),
+	  SPH_C32(0xf6cb8b70) },
+	{ SPH_C32(0x82870000), SPH_C32(0x445f0000), SPH_C32(0xf5d1006a),
+	  SPH_C32(0x48c80000), SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613),
+	  SPH_C32(0x3ae7fb0f), SPH_C32(0x12322569), SPH_C32(0xdac80000),
+	  SPH_C32(0x36c00000), SPH_C32(0x15ae0060), SPH_C32(0x0bb10000),
+	  SPH_C32(0x6b697976), SPH_C32(0x248dd0a9), SPH_C32(0x67c3ff89),
+	  SPH_C32(0xb513679b) },
+	{ SPH_C32(0x856a0000), SPH_C32(0xf60f0000), SPH_C32(0x72a50060),
+	  SPH_C32(0xdfc50000), SPH_C32(0xb3021265), SPH_C32(0x8b0ec8b7),
+	  SPH_C32(0xce9f992d), SPH_C32(0x824794a7), SPH_C32(0x781e0000),
+	  SPH_C32(0x90b60000), SPH_C32(0xdcea0074), SPH_C32(0xe0120000),
+	  SPH_C32(0xa785570d), SPH_C32(0x14951430), SPH_C32(0x648af573),
+	  SPH_C32(0x2e7d9f13) }
+};
+
+static const sph_u32 T512_45[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x462f0000), SPH_C32(0x443c0000), SPH_C32(0xf21d0001),
+	  SPH_C32(0x7add8000), SPH_C32(0xcb734f6a), SPH_C32(0xf250ec07),
+	  SPH_C32(0xc67fe5a7), SPH_C32(0x83d9bb5a), SPH_C32(0x8f0c0000),
+	  SPH_C32(0x35a80000), SPH_C32(0xa2dc0000), SPH_C32(0x47d02800),
+	  SPH_C32(0x8cfe7860), SPH_C32(0x2382de49), SPH_C32(0x30fe267d),
+	  SPH_C32(0x2db012e9) },
+	{ SPH_C32(0xca150000), SPH_C32(0x9ea40000), SPH_C32(0x92620001),
+	  SPH_C32(0x2eda0800), SPH_C32(0x4e020a79), SPH_C32(0x92565e44),
+	  SPH_C32(0x1d2fdc3b), SPH_C32(0x09815dfe), SPH_C32(0x91600000),
+	  SPH_C32(0xf1ea0000), SPH_C32(0x28f20000), SPH_C32(0xfb669000),
+	  SPH_C32(0xa0ba6bd6), SPH_C32(0xa87f0d93), SPH_C32(0x5af23db5),
+	  SPH_C32(0x942dd002) },
+	{ SPH_C32(0xd4790000), SPH_C32(0x5ae60000), SPH_C32(0x184c0001),
+	  SPH_C32(0x926cb000), SPH_C32(0x624619cf), SPH_C32(0x19ab8d9e),
+	  SPH_C32(0x7723c7f3), SPH_C32(0xb01c9f15), SPH_C32(0x03360000),
+	  SPH_C32(0xef300000), SPH_C32(0xc2a30000), SPH_C32(0x13d7a000),
+	  SPH_C32(0x098f3d73), SPH_C32(0x43846c0a), SPH_C32(0xebae1fe1),
+	  SPH_C32(0xa7e8f44d) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x03360000), SPH_C32(0xef300000), SPH_C32(0xc2a30000),
+	  SPH_C32(0x13d7a000), SPH_C32(0x098f3d73), SPH_C32(0x43846c0a),
+	  SPH_C32(0xebae1fe1), SPH_C32(0xa7e8f44d), SPH_C32(0xd74f0000),
+	  SPH_C32(0xb5d60000), SPH_C32(0xdaef0001), SPH_C32(0x81bb1000),
+	  SPH_C32(0x6bc924bc), SPH_C32(0x5a2fe194), SPH_C32(0x9c8dd812),
+	  SPH_C32(0x17f46b58) },
+	{ SPH_C32(0x8f0c0000), SPH_C32(0x35a80000), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x47d02800), SPH_C32(0x8cfe7860), SPH_C32(0x2382de49),
+	  SPH_C32(0x30fe267d), SPH_C32(0x2db012e9), SPH_C32(0xc9230000),
+	  SPH_C32(0x71940000), SPH_C32(0x50c10001), SPH_C32(0x3d0da800),
+	  SPH_C32(0x478d370a), SPH_C32(0xd1d2324e), SPH_C32(0xf681c3da),
+	  SPH_C32(0xae69a9b3) },
+	{ SPH_C32(0x91600000), SPH_C32(0xf1ea0000), SPH_C32(0x28f20000),
+	  SPH_C32(0xfb669000), SPH_C32(0xa0ba6bd6), SPH_C32(0xa87f0d93),
+	  SPH_C32(0x5af23db5), SPH_C32(0x942dd002), SPH_C32(0x5b750000),
+	  SPH_C32(0x6f4e0000), SPH_C32(0xba900001), SPH_C32(0xd5bc9800),
+	  SPH_C32(0xeeb861af), SPH_C32(0x3a2953d7), SPH_C32(0x47dde18e),
+	  SPH_C32(0x9dac8dfc) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0x5b750000), SPH_C32(0x6f4e0000), SPH_C32(0xba900001),
+	  SPH_C32(0xd5bc9800), SPH_C32(0xeeb861af), SPH_C32(0x3a2953d7),
+	  SPH_C32(0x47dde18e), SPH_C32(0x9dac8dfc), SPH_C32(0xca150000),
+	  SPH_C32(0x9ea40000), SPH_C32(0x92620001), SPH_C32(0x2eda0800),
+	  SPH_C32(0x4e020a79), SPH_C32(0x92565e44), SPH_C32(0x1d2fdc3b),
+	  SPH_C32(0x09815dfe) },
+	{ SPH_C32(0xd74f0000), SPH_C32(0xb5d60000), SPH_C32(0xdaef0001),
+	  SPH_C32(0x81bb1000), SPH_C32(0x6bc924bc), SPH_C32(0x5a2fe194),
+	  SPH_C32(0x9c8dd812), SPH_C32(0x17f46b58), SPH_C32(0xd4790000),
+	  SPH_C32(0x5ae60000), SPH_C32(0x184c0001), SPH_C32(0x926cb000),
+	  SPH_C32(0x624619cf), SPH_C32(0x19ab8d9e), SPH_C32(0x7723c7f3),
+	  SPH_C32(0xb01c9f15) },
+	{ SPH_C32(0xc9230000), SPH_C32(0x71940000), SPH_C32(0x50c10001),
+	  SPH_C32(0x3d0da800), SPH_C32(0x478d370a), SPH_C32(0xd1d2324e),
+	  SPH_C32(0xf681c3da), SPH_C32(0xae69a9b3), SPH_C32(0x462f0000),
+	  SPH_C32(0x443c0000), SPH_C32(0xf21d0001), SPH_C32(0x7add8000),
+	  SPH_C32(0xcb734f6a), SPH_C32(0xf250ec07), SPH_C32(0xc67fe5a7),
+	  SPH_C32(0x83d9bb5a) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0xbb570000), SPH_C32(0xd0640000), SPH_C32(0xc41e001e),
+	  SPH_C32(0xc018b800), SPH_C32(0xa3da1e63), SPH_C32(0xf32279e7),
+	  SPH_C32(0x9d3d7310), SPH_C32(0xb2868bad), SPH_C32(0x95bb0000),
+	  SPH_C32(0xac8a0000), SPH_C32(0x6d25000a), SPH_C32(0x7fbc3000),
+	  SPH_C32(0xea47750b), SPH_C32(0xa33c0f3d), SPH_C32(0x45244076),
+	  SPH_C32(0xa3b09581) },
+	{ SPH_C32(0x376d0000), SPH_C32(0x0afc0000), SPH_C32(0xa461001e),
+	  SPH_C32(0x941f3000), SPH_C32(0x26ab5b70), SPH_C32(0x9324cba4),
+	  SPH_C32(0x466d4a8c), SPH_C32(0x38de6d09), SPH_C32(0x8bd70000),
+	  SPH_C32(0x68c80000), SPH_C32(0xe70b000a), SPH_C32(0xc30a8800),
+	  SPH_C32(0xc60366bd), SPH_C32(0x28c1dce7), SPH_C32(0x2f285bbe),
+	  SPH_C32(0x1a2d576a) },
+	{ SPH_C32(0x29010000), SPH_C32(0xcebe0000), SPH_C32(0x2e4f001e),
+	  SPH_C32(0x28a98800), SPH_C32(0x0aef48c6), SPH_C32(0x18d9187e),
+	  SPH_C32(0x2c615144), SPH_C32(0x8143afe2), SPH_C32(0x19810000),
+	  SPH_C32(0x76120000), SPH_C32(0x0d5a000a), SPH_C32(0x2bbbb800),
+	  SPH_C32(0x6f363018), SPH_C32(0xc33abd7e), SPH_C32(0x9e7479ea),
+	  SPH_C32(0x29e87325) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0xe3140000), SPH_C32(0x501a0000), SPH_C32(0xbc2d001f),
+	  SPH_C32(0x06738000), SPH_C32(0x44ed42bf), SPH_C32(0x8a8f463a),
+	  SPH_C32(0x314e8d7f), SPH_C32(0x88c2f21c), SPH_C32(0x88e10000),
+	  SPH_C32(0x87f80000), SPH_C32(0x25a8000a), SPH_C32(0xd0dd2800),
+	  SPH_C32(0xcf8c5bce), SPH_C32(0x6b45b0ed), SPH_C32(0xc486445f),
+	  SPH_C32(0xbdc5a327) },
+	{ SPH_C32(0x6f2e0000), SPH_C32(0x8a820000), SPH_C32(0xdc52001f),
+	  SPH_C32(0x52740800), SPH_C32(0xc19c07ac), SPH_C32(0xea89f479),
+	  SPH_C32(0xea1eb4e3), SPH_C32(0x029a14b8), SPH_C32(0x968d0000),
+	  SPH_C32(0x43ba0000), SPH_C32(0xaf86000a), SPH_C32(0x6c6b9000),
+	  SPH_C32(0xe3c84878), SPH_C32(0xe0b86337), SPH_C32(0xae8a5f97),
+	  SPH_C32(0x045861cc) },
+	{ SPH_C32(0x71420000), SPH_C32(0x4ec00000), SPH_C32(0x567c001f),
+	  SPH_C32(0xeec2b000), SPH_C32(0xedd8141a), SPH_C32(0x617427a3),
+	  SPH_C32(0x8012af2b), SPH_C32(0xbb07d653), SPH_C32(0x04db0000),
+	  SPH_C32(0x5d600000), SPH_C32(0x45d7000a), SPH_C32(0x84daa000),
+	  SPH_C32(0x4afd1edd), SPH_C32(0x0b4302ae), SPH_C32(0x1fd67dc3),
+	  SPH_C32(0x379d4583) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0xa60d0000), SPH_C32(0xfb160000), SPH_C32(0x8c93001e),
+	  SPH_C32(0x6f79a000), SPH_C32(0x861130a6), SPH_C32(0x3b5bc637),
+	  SPH_C32(0x1c9f7739), SPH_C32(0xacf3bd0b), SPH_C32(0xd0a20000),
+	  SPH_C32(0x07860000), SPH_C32(0x5d9b000b), SPH_C32(0x16b61000),
+	  SPH_C32(0x28bb0712), SPH_C32(0x12e88f30), SPH_C32(0x68f5ba30),
+	  SPH_C32(0x8781da96) },
+	{ SPH_C32(0x2a370000), SPH_C32(0x218e0000), SPH_C32(0xecec001e),
+	  SPH_C32(0x3b7e2800), SPH_C32(0x036075b5), SPH_C32(0x5b5d7474),
+	  SPH_C32(0xc7cf4ea5), SPH_C32(0x26ab5baf), SPH_C32(0xcece0000),
+	  SPH_C32(0xc3c40000), SPH_C32(0xd7b5000b), SPH_C32(0xaa00a800),
+	  SPH_C32(0x04ff14a4), SPH_C32(0x99155cea), SPH_C32(0x02f9a1f8),
+	  SPH_C32(0x3e1c187d) },
+	{ SPH_C32(0x345b0000), SPH_C32(0xe5cc0000), SPH_C32(0x66c2001e),
+	  SPH_C32(0x87c89000), SPH_C32(0x2f246603), SPH_C32(0xd0a0a7ae),
+	  SPH_C32(0xadc3556d), SPH_C32(0x9f369944), SPH_C32(0x5c980000),
+	  SPH_C32(0xdd1e0000), SPH_C32(0x3de4000b), SPH_C32(0x42b19800),
+	  SPH_C32(0xadca4201), SPH_C32(0x72ee3d73), SPH_C32(0xb3a583ac),
+	  SPH_C32(0x0dd93c32) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) },
+	{ SPH_C32(0xfe4e0000), SPH_C32(0x7b680000), SPH_C32(0xf4a0001f),
+	  SPH_C32(0xa9129800), SPH_C32(0x61266c7a), SPH_C32(0x42f6f9ea),
+	  SPH_C32(0xb0ec8956), SPH_C32(0x96b7c4ba), SPH_C32(0xcdf80000),
+	  SPH_C32(0x2cf40000), SPH_C32(0x1516000b), SPH_C32(0xb9d70800),
+	  SPH_C32(0x0d7029d7), SPH_C32(0xda9130e0), SPH_C32(0xe957be19),
+	  SPH_C32(0x99f4ec30) },
+	{ SPH_C32(0x72740000), SPH_C32(0xa1f00000), SPH_C32(0x94df001f),
+	  SPH_C32(0xfd151000), SPH_C32(0xe4572969), SPH_C32(0x22f04ba9),
+	  SPH_C32(0x6bbcb0ca), SPH_C32(0x1cef221e), SPH_C32(0xd3940000),
+	  SPH_C32(0xe8b60000), SPH_C32(0x9f38000b), SPH_C32(0x0561b000),
+	  SPH_C32(0x21343a61), SPH_C32(0x516ce33a), SPH_C32(0x835ba5d1),
+	  SPH_C32(0x20692edb) },
+	{ SPH_C32(0x6c180000), SPH_C32(0x65b20000), SPH_C32(0x1ef1001f),
+	  SPH_C32(0x41a3a800), SPH_C32(0xc8133adf), SPH_C32(0xa90d9873),
+	  SPH_C32(0x01b0ab02), SPH_C32(0xa572e0f5), SPH_C32(0x41c20000),
+	  SPH_C32(0xf66c0000), SPH_C32(0x7569000b), SPH_C32(0xedd08000),
+	  SPH_C32(0x88016cc4), SPH_C32(0xba9782a3), SPH_C32(0x32078785),
+	  SPH_C32(0x13ac0a94) }
+};
+
+static const sph_u32 T512_50[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0x44f40000), SPH_C32(0x2e100000), SPH_C32(0xf4df0000),
+	  SPH_C32(0x9e5d0420), SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4),
+	  SPH_C32(0x19b62a95), SPH_C32(0x18c8c541), SPH_C32(0xf5eb0000),
+	  SPH_C32(0xa8a90000), SPH_C32(0x6ac40000), SPH_C32(0x8daf0240),
+	  SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112), SPH_C32(0x90b053ae),
+	  SPH_C32(0xda2bec31) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x13c30000), SPH_C32(0xe4e20000), SPH_C32(0xc2910000),
+	  SPH_C32(0x5e7f00a0), SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8),
+	  SPH_C32(0xb825551a), SPH_C32(0x0d71a4a6), SPH_C32(0x41da0000),
+	  SPH_C32(0xdf9a0000), SPH_C32(0xdb990000), SPH_C32(0xf27f06a0),
+	  SPH_C32(0xb5145dab), SPH_C32(0x06e9124f), SPH_C32(0x42e68727),
+	  SPH_C32(0x944498ef) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0xa7f20000), SPH_C32(0x93d10000), SPH_C32(0x73cc0000),
+	  SPH_C32(0x21af0440), SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295),
+	  SPH_C32(0x6a738193), SPH_C32(0x431ed078), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x625b0000), SPH_C32(0x5c8a0000), SPH_C32(0x4d8d06c0),
+	  SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e), SPH_C32(0x31232c21),
+	  SPH_C32(0xcf928dd6) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xf2370000), SPH_C32(0xfba20000), SPH_C32(0xc2bd0000),
+	  SPH_C32(0x02e178c0), SPH_C32(0x257072de), SPH_C32(0xc5d07d4f),
+	  SPH_C32(0x0f22cc2b), SPH_C32(0x29959401), SPH_C32(0xac300000),
+	  SPH_C32(0x06c50000), SPH_C32(0x5a300000), SPH_C32(0xc5752a20),
+	  SPH_C32(0x3c4922c4), SPH_C32(0x6c502579), SPH_C32(0x092f75bc),
+	  SPH_C32(0xabd1e1f8) },
+	{ SPH_C32(0xb6c30000), SPH_C32(0xd5b20000), SPH_C32(0x36620000),
+	  SPH_C32(0x9cbc7ce0), SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b),
+	  SPH_C32(0x1694e6be), SPH_C32(0x315d5140), SPH_C32(0x59db0000),
+	  SPH_C32(0xae6c0000), SPH_C32(0x30f40000), SPH_C32(0x48da2860),
+	  SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b), SPH_C32(0x999f2612),
+	  SPH_C32(0x71fa0dc9) },
+	{ SPH_C32(0x46060000), SPH_C32(0x8c910000), SPH_C32(0x73e00000),
+	  SPH_C32(0x7d317c20), SPH_C32(0x5dd213e6), SPH_C32(0x14c6be12),
+	  SPH_C32(0xdd7418a2), SPH_C32(0x67fae0df), SPH_C32(0x4f360000),
+	  SPH_C32(0xbb040000), SPH_C32(0xdd230000), SPH_C32(0x7a872a40),
+	  SPH_C32(0x12f328de), SPH_C32(0xe1e51228), SPH_C32(0x7aeadeba),
+	  SPH_C32(0xf007f4c1) },
+	{ SPH_C32(0xe1f40000), SPH_C32(0x1f400000), SPH_C32(0x002c0000),
+	  SPH_C32(0x5c9e7860), SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87),
+	  SPH_C32(0xb7079931), SPH_C32(0x24e430a7), SPH_C32(0xedea0000),
+	  SPH_C32(0xd95f0000), SPH_C32(0x81a90000), SPH_C32(0x370a2c80),
+	  SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736), SPH_C32(0x4bc9f29b),
+	  SPH_C32(0x3f957917) },
+	{ SPH_C32(0x11310000), SPH_C32(0x46630000), SPH_C32(0x45ae0000),
+	  SPH_C32(0xbd1378a0), SPH_C32(0x0bca78c4), SPH_C32(0x48654a1e),
+	  SPH_C32(0x7ce7672d), SPH_C32(0x72438138), SPH_C32(0xfb070000),
+	  SPH_C32(0xcc370000), SPH_C32(0x6c7e0000), SPH_C32(0x05572ea0),
+	  SPH_C32(0x6a5149e6), SPH_C32(0x30f3d175), SPH_C32(0xa8bc0a33),
+	  SPH_C32(0xbe68801f) },
+	{ SPH_C32(0x55c50000), SPH_C32(0x68730000), SPH_C32(0xb1710000),
+	  SPH_C32(0x234e7c80), SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda),
+	  SPH_C32(0x65514db8), SPH_C32(0x6a8b4479), SPH_C32(0x0eec0000),
+	  SPH_C32(0x649e0000), SPH_C32(0x06ba0000), SPH_C32(0x88f82ce0),
+	  SPH_C32(0xa7e77575), SPH_C32(0xe70c0067), SPH_C32(0x380c599d),
+	  SPH_C32(0x64436c2e) },
+	{ SPH_C32(0xa5000000), SPH_C32(0x31500000), SPH_C32(0xf4f30000),
+	  SPH_C32(0xc2c37c40), SPH_C32(0x736819fc), SPH_C32(0x99738943),
+	  SPH_C32(0xaeb1b3a4), SPH_C32(0x3c2cf5e6), SPH_C32(0x18010000),
+	  SPH_C32(0x71f60000), SPH_C32(0xeb6d0000), SPH_C32(0xbaa52ec0),
+	  SPH_C32(0x44eb43fc), SPH_C32(0xbd46e624), SPH_C32(0xdb79a135),
+	  SPH_C32(0xe5be9526) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x4a180000), SPH_C32(0x4a8e0000), SPH_C32(0xf2650000),
+	  SPH_C32(0x16a528c0), SPH_C32(0xe428127c), SPH_C32(0xf4f795a3),
+	  SPH_C32(0x21ba7308), SPH_C32(0x7c8ba96f), SPH_C32(0xaec20000),
+	  SPH_C32(0xa4440000), SPH_C32(0xdd0f0000), SPH_C32(0x26195220),
+	  SPH_C32(0x2254562b), SPH_C32(0x6b6d0eaf), SPH_C32(0xcded478b),
+	  SPH_C32(0xd4e3c466) },
+	{ SPH_C32(0x0eec0000), SPH_C32(0x649e0000), SPH_C32(0x06ba0000),
+	  SPH_C32(0x88f82ce0), SPH_C32(0xa7e77575), SPH_C32(0xe70c0067),
+	  SPH_C32(0x380c599d), SPH_C32(0x64436c2e), SPH_C32(0x5b290000),
+	  SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000), SPH_C32(0xabb65060),
+	  SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd), SPH_C32(0x5d5d1425),
+	  SPH_C32(0x0ec82857) },
+	{ SPH_C32(0xfe290000), SPH_C32(0x3dbd0000), SPH_C32(0x43380000),
+	  SPH_C32(0x69752c20), SPH_C32(0x9c8a7344), SPH_C32(0x25e156fe),
+	  SPH_C32(0xf3eca781), SPH_C32(0x32e4ddb1), SPH_C32(0x4dc40000),
+	  SPH_C32(0x19850000), SPH_C32(0x5a1c0000), SPH_C32(0x99eb5240),
+	  SPH_C32(0x0cee5c31), SPH_C32(0xe6d839fe), SPH_C32(0xbe28ec8d),
+	  SPH_C32(0x8f35d15f) },
+	{ SPH_C32(0x59db0000), SPH_C32(0xae6c0000), SPH_C32(0x30f40000),
+	  SPH_C32(0x48da2860), SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b),
+	  SPH_C32(0x999f2612), SPH_C32(0x71fa0dc9), SPH_C32(0xef180000),
+	  SPH_C32(0x7bde0000), SPH_C32(0x06960000), SPH_C32(0xd4665480),
+	  SPH_C32(0x97400b80), SPH_C32(0x6d841ce0), SPH_C32(0x8f0bc0ac),
+	  SPH_C32(0x40a75c89) },
+	{ SPH_C32(0xa91e0000), SPH_C32(0xf74f0000), SPH_C32(0x75760000),
+	  SPH_C32(0xa95728a0), SPH_C32(0xca921866), SPH_C32(0x7942a2f2),
+	  SPH_C32(0x527fd80e), SPH_C32(0x275dbc56), SPH_C32(0xf9f50000),
+	  SPH_C32(0x6eb60000), SPH_C32(0xeb410000), SPH_C32(0xe63b56a0),
+	  SPH_C32(0x744c3d09), SPH_C32(0x37cefaa3), SPH_C32(0x6c7e3804),
+	  SPH_C32(0xc15aa581) },
+	{ SPH_C32(0xedea0000), SPH_C32(0xd95f0000), SPH_C32(0x81a90000),
+	  SPH_C32(0x370a2c80), SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736),
+	  SPH_C32(0x4bc9f29b), SPH_C32(0x3f957917), SPH_C32(0x0c1e0000),
+	  SPH_C32(0xc61f0000), SPH_C32(0x81850000), SPH_C32(0x6b9454e0),
+	  SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1), SPH_C32(0xfcce6baa),
+	  SPH_C32(0x1b7149b0) },
+	{ SPH_C32(0x1d2f0000), SPH_C32(0x807c0000), SPH_C32(0xc42b0000),
+	  SPH_C32(0xd6872c40), SPH_C32(0xb230795e), SPH_C32(0xa85461af),
+	  SPH_C32(0x80290c87), SPH_C32(0x6932c888), SPH_C32(0x1af30000),
+	  SPH_C32(0xd3770000), SPH_C32(0x6c520000), SPH_C32(0x59c956c0),
+	  SPH_C32(0x5af63713), SPH_C32(0xba7bcdf2), SPH_C32(0x1fbb9302),
+	  SPH_C32(0x9a8cb0b8) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) },
+	{ SPH_C32(0x48ea0000), SPH_C32(0xe80f0000), SPH_C32(0x755a0000),
+	  SPH_C32(0xf5c950c0), SPH_C32(0xfa356693), SPH_C32(0xf3cabe75),
+	  SPH_C32(0xe578413f), SPH_C32(0x03b98cf1), SPH_C32(0x141f0000),
+	  SPH_C32(0xb7e90000), SPH_C32(0x6ae80000), SPH_C32(0xd1317a20),
+	  SPH_C32(0xfd114266), SPH_C32(0x5d77cd95), SPH_C32(0x27b7ca9f),
+	  SPH_C32(0xfecfdc96) },
+	{ SPH_C32(0x0c1e0000), SPH_C32(0xc61f0000), SPH_C32(0x81850000),
+	  SPH_C32(0x6b9454e0), SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1),
+	  SPH_C32(0xfcce6baa), SPH_C32(0x1b7149b0), SPH_C32(0xe1f40000),
+	  SPH_C32(0x1f400000), SPH_C32(0x002c0000), SPH_C32(0x5c9e7860),
+	  SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87), SPH_C32(0xb7079931),
+	  SPH_C32(0x24e430a7) },
+	{ SPH_C32(0xfcdb0000), SPH_C32(0x9f3c0000), SPH_C32(0xc4070000),
+	  SPH_C32(0x8a195420), SPH_C32(0x829707ab), SPH_C32(0x22dc7d28),
+	  SPH_C32(0x372e95b6), SPH_C32(0x4dd6f82f), SPH_C32(0xf7190000),
+	  SPH_C32(0x0a280000), SPH_C32(0xedfb0000), SPH_C32(0x6ec37a40),
+	  SPH_C32(0xd3ab487c), SPH_C32(0xd0c2fac4), SPH_C32(0x54726199),
+	  SPH_C32(0xa519c9af) },
+	{ SPH_C32(0x5b290000), SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000),
+	  SPH_C32(0xabb65060), SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd),
+	  SPH_C32(0x5d5d1425), SPH_C32(0x0ec82857), SPH_C32(0x55c50000),
+	  SPH_C32(0x68730000), SPH_C32(0xb1710000), SPH_C32(0x234e7c80),
+	  SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda), SPH_C32(0x65514db8),
+	  SPH_C32(0x6a8b4479) },
+	{ SPH_C32(0xabec0000), SPH_C32(0x55ce0000), SPH_C32(0xf2490000),
+	  SPH_C32(0x4a3b50a0), SPH_C32(0xd48f6c89), SPH_C32(0x7e7f8924),
+	  SPH_C32(0x96bdea39), SPH_C32(0x586f99c8), SPH_C32(0x43280000),
+	  SPH_C32(0x7d1b0000), SPH_C32(0x5ca60000), SPH_C32(0x11137ea0),
+	  SPH_C32(0xab092944), SPH_C32(0x01d43999), SPH_C32(0x8624b510),
+	  SPH_C32(0xeb76bd71) },
+	{ SPH_C32(0xef180000), SPH_C32(0x7bde0000), SPH_C32(0x06960000),
+	  SPH_C32(0xd4665480), SPH_C32(0x97400b80), SPH_C32(0x6d841ce0),
+	  SPH_C32(0x8f0bc0ac), SPH_C32(0x40a75c89), SPH_C32(0xb6c30000),
+	  SPH_C32(0xd5b20000), SPH_C32(0x36620000), SPH_C32(0x9cbc7ce0),
+	  SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b), SPH_C32(0x1694e6be),
+	  SPH_C32(0x315d5140) },
+	{ SPH_C32(0x1fdd0000), SPH_C32(0x22fd0000), SPH_C32(0x43140000),
+	  SPH_C32(0x35eb5440), SPH_C32(0xac2d0db1), SPH_C32(0xaf694a79),
+	  SPH_C32(0x44eb3eb0), SPH_C32(0x1600ed16), SPH_C32(0xa02e0000),
+	  SPH_C32(0xc0da0000), SPH_C32(0xdbb50000), SPH_C32(0xaee17ec0),
+	  SPH_C32(0x85b3235e), SPH_C32(0x8c610ec8), SPH_C32(0xf5e11e16),
+	  SPH_C32(0xb0a0a848) }
+};
+
+static const sph_u32 T512_55[32][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0x24800000), SPH_C32(0x01410000), SPH_C32(0xea4b0000),
+	  SPH_C32(0x07b000b3), SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5),
+	  SPH_C32(0x73e6aebc), SPH_C32(0x495bbb99), SPH_C32(0x95ff0000),
+	  SPH_C32(0xfe0d0000), SPH_C32(0xe1580000), SPH_C32(0x62f80141),
+	  SPH_C32(0x3127a59f), SPH_C32(0xff43f26b), SPH_C32(0x61c38617),
+	  SPH_C32(0x59ea6d0a) },
+	{ SPH_C32(0x7b6c0000), SPH_C32(0x280a0000), SPH_C32(0x73990000),
+	  SPH_C32(0x496000a1), SPH_C32(0xa5768de3), SPH_C32(0xc42f093c),
+	  SPH_C32(0x24f2a563), SPH_C32(0x79f5076e), SPH_C32(0xca570000),
+	  SPH_C32(0xa80e0000), SPH_C32(0xa2f60000), SPH_C32(0x060b0152),
+	  SPH_C32(0x14592320), SPH_C32(0xec526625), SPH_C32(0x35dd13a8),
+	  SPH_C32(0xd74eb663) },
+	{ SPH_C32(0x24c40000), SPH_C32(0x7e090000), SPH_C32(0x30370000),
+	  SPH_C32(0x2d9300b2), SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72),
+	  SPH_C32(0x70ec30dc), SPH_C32(0xf751dc07), SPH_C32(0xca130000),
+	  SPH_C32(0xd7460000), SPH_C32(0x788a0000), SPH_C32(0x2c280153),
+	  SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2), SPH_C32(0x36d78dc8),
+	  SPH_C32(0x6944d1fd) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) },
+	{ SPH_C32(0xca130000), SPH_C32(0xd7460000), SPH_C32(0x788a0000),
+	  SPH_C32(0x2c280153), SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2),
+	  SPH_C32(0x36d78dc8), SPH_C32(0x6944d1fd), SPH_C32(0xeed70000),
+	  SPH_C32(0xa94f0000), SPH_C32(0x48bd0000), SPH_C32(0x01bb01e1),
+	  SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0), SPH_C32(0x463bbd14),
+	  SPH_C32(0x9e150dfa) },
+	{ SPH_C32(0x95ff0000), SPH_C32(0xfe0d0000), SPH_C32(0xe1580000),
+	  SPH_C32(0x62f80141), SPH_C32(0x3127a59f), SPH_C32(0xff43f26b),
+	  SPH_C32(0x61c38617), SPH_C32(0x59ea6d0a), SPH_C32(0xb17f0000),
+	  SPH_C32(0xff4c0000), SPH_C32(0x0b130000), SPH_C32(0x654801f2),
+	  SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e), SPH_C32(0x122528ab),
+	  SPH_C32(0x10b1d693) },
+	{ SPH_C32(0xca570000), SPH_C32(0xa80e0000), SPH_C32(0xa2f60000),
+	  SPH_C32(0x060b0152), SPH_C32(0x14592320), SPH_C32(0xec526625),
+	  SPH_C32(0x35dd13a8), SPH_C32(0xd74eb663), SPH_C32(0xb13b0000),
+	  SPH_C32(0x80040000), SPH_C32(0xd16f0000), SPH_C32(0x4f6b01f3),
+	  SPH_C32(0xb12faec3), SPH_C32(0x287d6f19), SPH_C32(0x112fb6cb),
+	  SPH_C32(0xaebbb10d) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xb9800000), SPH_C32(0x1a480000), SPH_C32(0xebfb0000),
+	  SPH_C32(0xb72302f3), SPH_C32(0xfd1fb607), SPH_C32(0x8bb62494),
+	  SPH_C32(0x7c8b930b), SPH_C32(0x59fe93fe), SPH_C32(0xf0810000),
+	  SPH_C32(0x266b0000), SPH_C32(0x9ffe0000), SPH_C32(0xcbae00c1),
+	  SPH_C32(0x00c0cffd), SPH_C32(0x6b5bca1e), SPH_C32(0xc8ea607c),
+	  SPH_C32(0xe8add601) },
+	{ SPH_C32(0xe66c0000), SPH_C32(0x33030000), SPH_C32(0x72290000),
+	  SPH_C32(0xf9f302e1), SPH_C32(0xe3ccf974), SPH_C32(0x31112c5d),
+	  SPH_C32(0x2b9f98d4), SPH_C32(0x69502f09), SPH_C32(0xaf290000),
+	  SPH_C32(0x70680000), SPH_C32(0xdc500000), SPH_C32(0xaf5d00d2),
+	  SPH_C32(0x25be4942), SPH_C32(0x784a5e50), SPH_C32(0x9cf4f5c3),
+	  SPH_C32(0x66090d68) },
+	{ SPH_C32(0xb9c40000), SPH_C32(0x65000000), SPH_C32(0x31870000),
+	  SPH_C32(0x9d0002f2), SPH_C32(0xc6b27fcb), SPH_C32(0x2200b813),
+	  SPH_C32(0x7f810d6b), SPH_C32(0xe7f4f460), SPH_C32(0xaf6d0000),
+	  SPH_C32(0x0f200000), SPH_C32(0x062c0000), SPH_C32(0x857e00d3),
+	  SPH_C32(0x1e13808e), SPH_C32(0xd1fcc2d7), SPH_C32(0x9ffe6ba3),
+	  SPH_C32(0xd8036af6) },
+	{ SPH_C32(0x08bb0000), SPH_C32(0x9a4c0000), SPH_C32(0x3a940000),
+	  SPH_C32(0xf8480300), SPH_C32(0x4c3018c4), SPH_C32(0xa3cb4b8d),
+	  SPH_C32(0x6da425c0), SPH_C32(0xf74522f3), SPH_C32(0x8bed0000),
+	  SPH_C32(0x0e610000), SPH_C32(0xec670000), SPH_C32(0x82ce0060),
+	  SPH_C32(0xa5b6421e), SPH_C32(0xaf74c322), SPH_C32(0xec18c51f),
+	  SPH_C32(0x9158d16f) },
+	{ SPH_C32(0x57130000), SPH_C32(0xcc4f0000), SPH_C32(0x793a0000),
+	  SPH_C32(0x9cbb0313), SPH_C32(0x694e9e7b), SPH_C32(0xb0dadfc3),
+	  SPH_C32(0x39bab07f), SPH_C32(0x79e1f99a), SPH_C32(0x8ba90000),
+	  SPH_C32(0x71290000), SPH_C32(0x361b0000), SPH_C32(0xa8ed0061),
+	  SPH_C32(0x9e1b8bd2), SPH_C32(0x06c25fa5), SPH_C32(0xef125b7f),
+	  SPH_C32(0x2f52b6f1) },
+	{ SPH_C32(0x08ff0000), SPH_C32(0xe5040000), SPH_C32(0xe0e80000),
+	  SPH_C32(0xd26b0301), SPH_C32(0x779dd108), SPH_C32(0x0a7dd70a),
+	  SPH_C32(0x6eaebba0), SPH_C32(0x494f456d), SPH_C32(0xd4010000),
+	  SPH_C32(0x272a0000), SPH_C32(0x75b50000), SPH_C32(0xcc1e0072),
+	  SPH_C32(0xbb650d6d), SPH_C32(0x15d3cbeb), SPH_C32(0xbb0ccec0),
+	  SPH_C32(0xa1f66d98) },
+	{ SPH_C32(0x57570000), SPH_C32(0xb3070000), SPH_C32(0xa3460000),
+	  SPH_C32(0xb6980312), SPH_C32(0x52e357b7), SPH_C32(0x196c4344),
+	  SPH_C32(0x3ab02e1f), SPH_C32(0xc7eb9e04), SPH_C32(0xd4450000),
+	  SPH_C32(0x58620000), SPH_C32(0xafc90000), SPH_C32(0xe63d0073),
+	  SPH_C32(0x80c8c4a1), SPH_C32(0xbc65576c), SPH_C32(0xb80650a0),
+	  SPH_C32(0x1ffc0a06) },
+	{ SPH_C32(0x9d000000), SPH_C32(0x1b090000), SPH_C32(0x01b00000),
+	  SPH_C32(0xb0930240), SPH_C32(0x46ba7497), SPH_C32(0xf53e2561),
+	  SPH_C32(0x0f6d3db7), SPH_C32(0x10a52867), SPH_C32(0x657e0000),
+	  SPH_C32(0xd8660000), SPH_C32(0x7ea60000), SPH_C32(0xa9560180),
+	  SPH_C32(0x31e76a62), SPH_C32(0x94183875), SPH_C32(0xa929e66b),
+	  SPH_C32(0xb147bb0b) },
+	{ SPH_C32(0xc2a80000), SPH_C32(0x4d0a0000), SPH_C32(0x421e0000),
+	  SPH_C32(0xd4600253), SPH_C32(0x63c4f228), SPH_C32(0xe62fb12f),
+	  SPH_C32(0x5b73a808), SPH_C32(0x9e01f30e), SPH_C32(0x653a0000),
+	  SPH_C32(0xa72e0000), SPH_C32(0xa4da0000), SPH_C32(0x83750181),
+	  SPH_C32(0x0a4aa3ae), SPH_C32(0x3daea4f2), SPH_C32(0xaa23780b),
+	  SPH_C32(0x0f4ddc95) },
+	{ SPH_C32(0x9d440000), SPH_C32(0x64410000), SPH_C32(0xdbcc0000),
+	  SPH_C32(0x9ab00241), SPH_C32(0x7d17bd5b), SPH_C32(0x5c88b9e6),
+	  SPH_C32(0x0c67a3d7), SPH_C32(0xaeaf4ff9), SPH_C32(0x3a920000),
+	  SPH_C32(0xf12d0000), SPH_C32(0xe7740000), SPH_C32(0xe7860192),
+	  SPH_C32(0x2f342511), SPH_C32(0x2ebf30bc), SPH_C32(0xfe3dedb4),
+	  SPH_C32(0x81e907fc) },
+	{ SPH_C32(0xc2ec0000), SPH_C32(0x32420000), SPH_C32(0x98620000),
+	  SPH_C32(0xfe430252), SPH_C32(0x58693be4), SPH_C32(0x4f992da8),
+	  SPH_C32(0x58793668), SPH_C32(0x200b9490), SPH_C32(0x3ad60000),
+	  SPH_C32(0x8e650000), SPH_C32(0x3d080000), SPH_C32(0xcda50193),
+	  SPH_C32(0x1499ecdd), SPH_C32(0x8709ac3b), SPH_C32(0xfd3773d4),
+	  SPH_C32(0x3fe36062) },
+	{ SPH_C32(0x73930000), SPH_C32(0xcd0e0000), SPH_C32(0x93710000),
+	  SPH_C32(0x9b0b03a0), SPH_C32(0xd2eb5ceb), SPH_C32(0xce52de36),
+	  SPH_C32(0x4a5c1ec3), SPH_C32(0x30ba4203), SPH_C32(0x1e560000),
+	  SPH_C32(0x8f240000), SPH_C32(0xd7430000), SPH_C32(0xca150120),
+	  SPH_C32(0xaf3c2e4d), SPH_C32(0xf981adce), SPH_C32(0x8ed1dd68),
+	  SPH_C32(0x76b8dbfb) },
+	{ SPH_C32(0x2c3b0000), SPH_C32(0x9b0d0000), SPH_C32(0xd0df0000),
+	  SPH_C32(0xfff803b3), SPH_C32(0xf795da54), SPH_C32(0xdd434a78),
+	  SPH_C32(0x1e428b7c), SPH_C32(0xbe1e996a), SPH_C32(0x1e120000),
+	  SPH_C32(0xf06c0000), SPH_C32(0x0d3f0000), SPH_C32(0xe0360121),
+	  SPH_C32(0x9491e781), SPH_C32(0x50373149), SPH_C32(0x8ddb4308),
+	  SPH_C32(0xc8b2bc65) },
+	{ SPH_C32(0x73d70000), SPH_C32(0xb2460000), SPH_C32(0x490d0000),
+	  SPH_C32(0xb12803a1), SPH_C32(0xe9469527), SPH_C32(0x67e442b1),
+	  SPH_C32(0x495680a3), SPH_C32(0x8eb0259d), SPH_C32(0x41ba0000),
+	  SPH_C32(0xa66f0000), SPH_C32(0x4e910000), SPH_C32(0x84c50132),
+	  SPH_C32(0xb1ef613e), SPH_C32(0x4326a507), SPH_C32(0xd9c5d6b7),
+	  SPH_C32(0x4616670c) },
+	{ SPH_C32(0x2c7f0000), SPH_C32(0xe4450000), SPH_C32(0x0aa30000),
+	  SPH_C32(0xd5db03b2), SPH_C32(0xcc381398), SPH_C32(0x74f5d6ff),
+	  SPH_C32(0x1d48151c), SPH_C32(0x0014fef4), SPH_C32(0x41fe0000),
+	  SPH_C32(0xd9270000), SPH_C32(0x94ed0000), SPH_C32(0xaee60133),
+	  SPH_C32(0x8a42a8f2), SPH_C32(0xea903980), SPH_C32(0xdacf48d7),
+	  SPH_C32(0xf81c0092) }
+};
+
+static const sph_u32 T512_60[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0xabe70000), SPH_C32(0x9e0d0000), SPH_C32(0xaf270000),
+	  SPH_C32(0x3d180005), SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695),
+	  SPH_C32(0xb5c347eb), SPH_C32(0x3c5dfffe), SPH_C32(0x033d0000),
+	  SPH_C32(0x08b30000), SPH_C32(0xf33a0000), SPH_C32(0x3ac20007),
+	  SPH_C32(0x51298a50), SPH_C32(0x6b6e661f), SPH_C32(0x0ea5cfe3),
+	  SPH_C32(0xe6da7ffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x02ae0000), SPH_C32(0xef310000), SPH_C32(0x1ec10000),
+	  SPH_C32(0xf5ce000c), SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231),
+	  SPH_C32(0x0893ae02), SPH_C32(0xb5b5e185), SPH_C32(0x3af20000),
+	  SPH_C32(0x4a3b0000), SPH_C32(0x0be70000), SPH_C32(0x51060001),
+	  SPH_C32(0xc78fb695), SPH_C32(0x4577d386), SPH_C32(0x2ba87f5a),
+	  SPH_C32(0xa191f5d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0xaa740000), SPH_C32(0x798f0000), SPH_C32(0x42dc0000),
+	  SPH_C32(0xf214000e), SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb),
+	  SPH_C32(0xb3f5260a), SPH_C32(0x6f326185), SPH_C32(0x91150000),
+	  SPH_C32(0xd4360000), SPH_C32(0xa4c00000), SPH_C32(0x6c1e0004),
+	  SPH_C32(0xebc0a946), SPH_C32(0x3181c513), SPH_C32(0x9e6b38b1),
+	  SPH_C32(0x9dcc0a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x91150000), SPH_C32(0xd4360000), SPH_C32(0xa4c00000),
+	  SPH_C32(0x6c1e0004), SPH_C32(0xebc0a946), SPH_C32(0x3181c513),
+	  SPH_C32(0x9e6b38b1), SPH_C32(0x9dcc0a29), SPH_C32(0x3b610000),
+	  SPH_C32(0xadb90000), SPH_C32(0xe61c0000), SPH_C32(0x9e0a000a),
+	  SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8), SPH_C32(0x2d9e1ebb),
+	  SPH_C32(0xf2fe6bac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x39cf0000), SPH_C32(0x42880000), SPH_C32(0xf8dd0000),
+	  SPH_C32(0x6bc40006), SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599),
+	  SPH_C32(0x250db0b9), SPH_C32(0x474b8a29), SPH_C32(0x90860000),
+	  SPH_C32(0x33b40000), SPH_C32(0x493b0000), SPH_C32(0xa312000f),
+	  SPH_C32(0x6610241e), SPH_C32(0x8d22713d), SPH_C32(0x985d5950),
+	  SPH_C32(0xcea39452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x90860000), SPH_C32(0x33b40000), SPH_C32(0x493b0000),
+	  SPH_C32(0xa312000f), SPH_C32(0x6610241e), SPH_C32(0x8d22713d),
+	  SPH_C32(0x985d5950), SPH_C32(0xcea39452), SPH_C32(0xa9490000),
+	  SPH_C32(0x713c0000), SPH_C32(0xb1e60000), SPH_C32(0xc8d60009),
+	  SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4), SPH_C32(0xbd50e9e9),
+	  SPH_C32(0x89e81e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) },
+	{ SPH_C32(0x385c0000), SPH_C32(0xa50a0000), SPH_C32(0x15260000),
+	  SPH_C32(0xa4c8000d), SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7),
+	  SPH_C32(0x233bd158), SPH_C32(0x14241452), SPH_C32(0x02ae0000),
+	  SPH_C32(0xef310000), SPH_C32(0x1ec10000), SPH_C32(0xf5ce000c),
+	  SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231), SPH_C32(0x0893ae02),
+	  SPH_C32(0xb5b5e185) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 3][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T512_5[(acc >> 6) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_10[(acc >> 1) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T512_15[(acc >> 4) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[3]; \
+		rp = &T512_20[(acc >> 7) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_25[(acc >> 2) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[4]; \
+		rp = &T512_30[(acc >> 5) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_35[acc & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[5]; \
+		rp = &T512_40[acc >> 3][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[6]; \
+		rp = &T512_45[(acc >> 6) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_50[(acc >> 1) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[7]; \
+		rp = &T512_55[(acc >> 4) & 0x1f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_60[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 6
+
+static const sph_u32 T512_0[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x40726000), SPH_C32(0x53040000), SPH_C32(0xa4f10000),
+	  SPH_C32(0x50a40000), SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999),
+	  SPH_C32(0x2c1926bd), SPH_C32(0xb4951347), SPH_C32(0xbfdc0c00),
+	  SPH_C32(0x786a0000), SPH_C32(0x66960000), SPH_C32(0x16e60000),
+	  SPH_C32(0x2af76720), SPH_C32(0x19b270bd), SPH_C32(0x41c239e5),
+	  SPH_C32(0xa4ee2836) },
+	{ SPH_C32(0x774f4800), SPH_C32(0x22540000), SPH_C32(0x31110000),
+	  SPH_C32(0x5ab00000), SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8),
+	  SPH_C32(0x69744ba2), SPH_C32(0x893fd19d), SPH_C32(0xab863000),
+	  SPH_C32(0xc1830000), SPH_C32(0x07b10000), SPH_C32(0xe7870000),
+	  SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5), SPH_C32(0x066b5ec5),
+	  SPH_C32(0x45600cf3) },
+	{ SPH_C32(0x63157400), SPH_C32(0x9bbd0000), SPH_C32(0x50360000),
+	  SPH_C32(0xabd10000), SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0),
+	  SPH_C32(0x2edd2c82), SPH_C32(0x68b1f558), SPH_C32(0x88e12400),
+	  SPH_C32(0x093a0000), SPH_C32(0xf3760000), SPH_C32(0x1cf20000),
+	  SPH_C32(0x975b7e29), SPH_C32(0x515de88c), SPH_C32(0x04af54fa),
+	  SPH_C32(0x9944eaec) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0x88e12400), SPH_C32(0x093a0000), SPH_C32(0xf3760000),
+	  SPH_C32(0x1cf20000), SPH_C32(0x975b7e29), SPH_C32(0x515de88c),
+	  SPH_C32(0x04af54fa), SPH_C32(0x9944eaec), SPH_C32(0xebf45000),
+	  SPH_C32(0x92870000), SPH_C32(0xa3400000), SPH_C32(0xb7230000),
+	  SPH_C32(0x99550050), SPH_C32(0x8d17b45c), SPH_C32(0x2a727878),
+	  SPH_C32(0xf1f51fb4) },
+	{ SPH_C32(0xbfdc0c00), SPH_C32(0x786a0000), SPH_C32(0x66960000),
+	  SPH_C32(0x16e60000), SPH_C32(0x2af76720), SPH_C32(0x19b270bd),
+	  SPH_C32(0x41c239e5), SPH_C32(0xa4ee2836), SPH_C32(0xffae6c00),
+	  SPH_C32(0x2b6e0000), SPH_C32(0xc2670000), SPH_C32(0x46420000),
+	  SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924), SPH_C32(0x6ddb1f58),
+	  SPH_C32(0x107b3b71) },
+	{ SPH_C32(0xab863000), SPH_C32(0xc1830000), SPH_C32(0x07b10000),
+	  SPH_C32(0xe7870000), SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5),
+	  SPH_C32(0x066b5ec5), SPH_C32(0x45600cf3), SPH_C32(0xdcc97800),
+	  SPH_C32(0xe3d70000), SPH_C32(0x36a00000), SPH_C32(0xbd370000),
+	  SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d), SPH_C32(0x6f1f1567),
+	  SPH_C32(0xcc5fdd6e) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) },
+	{ SPH_C32(0xdcc97800), SPH_C32(0xe3d70000), SPH_C32(0x36a00000),
+	  SPH_C32(0xbd370000), SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d),
+	  SPH_C32(0x6f1f1567), SPH_C32(0xcc5fdd6e), SPH_C32(0x774f4800),
+	  SPH_C32(0x22540000), SPH_C32(0x31110000), SPH_C32(0x5ab00000),
+	  SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8), SPH_C32(0x69744ba2),
+	  SPH_C32(0x893fd19d) },
+	{ SPH_C32(0xebf45000), SPH_C32(0x92870000), SPH_C32(0xa3400000),
+	  SPH_C32(0xb7230000), SPH_C32(0x99550050), SPH_C32(0x8d17b45c),
+	  SPH_C32(0x2a727878), SPH_C32(0xf1f51fb4), SPH_C32(0x63157400),
+	  SPH_C32(0x9bbd0000), SPH_C32(0x50360000), SPH_C32(0xabd10000),
+	  SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0), SPH_C32(0x2edd2c82),
+	  SPH_C32(0x68b1f558) },
+	{ SPH_C32(0xffae6c00), SPH_C32(0x2b6e0000), SPH_C32(0xc2670000),
+	  SPH_C32(0x46420000), SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924),
+	  SPH_C32(0x6ddb1f58), SPH_C32(0x107b3b71), SPH_C32(0x40726000),
+	  SPH_C32(0x53040000), SPH_C32(0xa4f10000), SPH_C32(0x50a40000),
+	  SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999), SPH_C32(0x2c1926bd),
+	  SPH_C32(0xb4951347) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0x3d1ea000), SPH_C32(0xdd0e0000), SPH_C32(0x936c0000),
+	  SPH_C32(0x33920000), SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d),
+	  SPH_C32(0xb4492579), SPH_C32(0x6c83ba01), SPH_C32(0x650a1800),
+	  SPH_C32(0xc0db0000), SPH_C32(0x299a0000), SPH_C32(0x41a80000),
+	  SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda), SPH_C32(0x234ec450),
+	  SPH_C32(0x6308edfd) },
+	{ SPH_C32(0x0a238800), SPH_C32(0xac5e0000), SPH_C32(0x068c0000),
+	  SPH_C32(0x39860000), SPH_C32(0x7d136aea), SPH_C32(0xae64920c),
+	  SPH_C32(0xf1244866), SPH_C32(0x512978db), SPH_C32(0x71502400),
+	  SPH_C32(0x79320000), SPH_C32(0x48bd0000), SPH_C32(0xb0c90000),
+	  SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2), SPH_C32(0x64e7a370),
+	  SPH_C32(0x8286c938) },
+	{ SPH_C32(0x1e79b400), SPH_C32(0x15b70000), SPH_C32(0x67ab0000),
+	  SPH_C32(0xc8e70000), SPH_C32(0xb3725786), SPH_C32(0x1e2daf74),
+	  SPH_C32(0xb68d2f46), SPH_C32(0xb0a75c1e), SPH_C32(0x52373000),
+	  SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000), SPH_C32(0x4bbc0000),
+	  SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb), SPH_C32(0x6623a94f),
+	  SPH_C32(0x5ea22f27) },
+	{ SPH_C32(0x7d6cc000), SPH_C32(0x8e0a0000), SPH_C32(0x379d0000),
+	  SPH_C32(0x63360000), SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4),
+	  SPH_C32(0x985003c4), SPH_C32(0xd816a946), SPH_C32(0xdad61400),
+	  SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000), SPH_C32(0x574e0000),
+	  SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67), SPH_C32(0x628cfdb5),
+	  SPH_C32(0xc7e6c5cb) },
+	{ SPH_C32(0x6936fc00), SPH_C32(0x37e30000), SPH_C32(0x56ba0000),
+	  SPH_C32(0x92570000), SPH_C32(0x731d1493), SPH_C32(0x722ecedc),
+	  SPH_C32(0xdff964e4), SPH_C32(0x39988d83), SPH_C32(0xf9b10000),
+	  SPH_C32(0x70080000), SPH_C32(0xbbcb0000), SPH_C32(0xac3b0000),
+	  SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e), SPH_C32(0x6048f78a),
+	  SPH_C32(0x1bc223d4) },
+	{ SPH_C32(0x5e0bd400), SPH_C32(0x46b30000), SPH_C32(0xc35a0000),
+	  SPH_C32(0x98430000), SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed),
+	  SPH_C32(0x9a9409fb), SPH_C32(0x04324f59), SPH_C32(0xedeb3c00),
+	  SPH_C32(0xc9e10000), SPH_C32(0xdaec0000), SPH_C32(0x5d5a0000),
+	  SPH_C32(0x8e04230e), SPH_C32(0xede46656), SPH_C32(0x27e190aa),
+	  SPH_C32(0xfa4c0711) },
+	{ SPH_C32(0x4a51e800), SPH_C32(0xff5a0000), SPH_C32(0xa27d0000),
+	  SPH_C32(0x69220000), SPH_C32(0x00d030f6), SPH_C32(0x8a886b95),
+	  SPH_C32(0xdd3d6edb), SPH_C32(0xe5bc6b9c), SPH_C32(0xce8c2800),
+	  SPH_C32(0x01580000), SPH_C32(0x2e2b0000), SPH_C32(0xa62f0000),
+	  SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f), SPH_C32(0x25259a95),
+	  SPH_C32(0x2668e10e) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0xa1a5b800), SPH_C32(0x6ddd0000), SPH_C32(0x013d0000),
+	  SPH_C32(0xde010000), SPH_C32(0x998530a6), SPH_C32(0x079fdfc9),
+	  SPH_C32(0xf74f16a3), SPH_C32(0x14497428), SPH_C32(0xad995c00),
+	  SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000), SPH_C32(0x0dfe0000),
+	  SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf), SPH_C32(0x0bf8b617),
+	  SPH_C32(0x4ed91456) },
+	{ SPH_C32(0x96989000), SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000),
+	  SPH_C32(0xd4150000), SPH_C32(0x242929af), SPH_C32(0x4f7047f8),
+	  SPH_C32(0xb2227bbc), SPH_C32(0x29e3b6f2), SPH_C32(0xb9c36000),
+	  SPH_C32(0x230c0000), SPH_C32(0x1f3a0000), SPH_C32(0xfc9f0000),
+	  SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7), SPH_C32(0x4c51d137),
+	  SPH_C32(0xaf573093) },
+	{ SPH_C32(0x82c2ac00), SPH_C32(0xa5640000), SPH_C32(0xf5fa0000),
+	  SPH_C32(0x25740000), SPH_C32(0xea4814c3), SPH_C32(0xff397a80),
+	  SPH_C32(0xf58b1c9c), SPH_C32(0xc86d9237), SPH_C32(0x9aa47400),
+	  SPH_C32(0xebb50000), SPH_C32(0xebfd0000), SPH_C32(0x07ea0000),
+	  SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe), SPH_C32(0x4e95db08),
+	  SPH_C32(0x7373d68c) },
+	{ SPH_C32(0xe1d7d800), SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000),
+	  SPH_C32(0x8ea50000), SPH_C32(0xe4466aba), SPH_C32(0x23732650),
+	  SPH_C32(0xdb56301e), SPH_C32(0xa0dc676f), SPH_C32(0x12455000),
+	  SPH_C32(0xe28f0000), SPH_C32(0x188b0000), SPH_C32(0x1b180000),
+	  SPH_C32(0xd9301e32), SPH_C32(0xd0baef72), SPH_C32(0x4a3a8ff2),
+	  SPH_C32(0xea373c60) },
+	{ SPH_C32(0xf58de400), SPH_C32(0x87300000), SPH_C32(0xc4eb0000),
+	  SPH_C32(0x7fc40000), SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28),
+	  SPH_C32(0x9cff573e), SPH_C32(0x415243aa), SPH_C32(0x31224400),
+	  SPH_C32(0x2a360000), SPH_C32(0xec4c0000), SPH_C32(0xe06d0000),
+	  SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b), SPH_C32(0x48fe85cd),
+	  SPH_C32(0x3613da7f) },
+	{ SPH_C32(0xc2b0cc00), SPH_C32(0xf6600000), SPH_C32(0x510b0000),
+	  SPH_C32(0x75d00000), SPH_C32(0x978b4edf), SPH_C32(0xdbd58319),
+	  SPH_C32(0xd9923a21), SPH_C32(0x7cf88170), SPH_C32(0x25787800),
+	  SPH_C32(0x93df0000), SPH_C32(0x8d6b0000), SPH_C32(0x110c0000),
+	  SPH_C32(0x649c073b), SPH_C32(0x98557743), SPH_C32(0x0f57e2ed),
+	  SPH_C32(0xd79dfeba) },
+	{ SPH_C32(0xd6eaf000), SPH_C32(0x4f890000), SPH_C32(0x302c0000),
+	  SPH_C32(0x84b10000), SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61),
+	  SPH_C32(0x9e3b5d01), SPH_C32(0x9d76a5b5), SPH_C32(0x061f6c00),
+	  SPH_C32(0x5b660000), SPH_C32(0x79ac0000), SPH_C32(0xea790000),
+	  SPH_C32(0x1751235e), SPH_C32(0x60f3d20a), SPH_C32(0x0d93e8d2),
+	  SPH_C32(0x0bb918a5) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0x52373000), SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000),
+	  SPH_C32(0x4bbc0000), SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb),
+	  SPH_C32(0x6623a94f), SPH_C32(0x5ea22f27), SPH_C32(0x4c4e8400),
+	  SPH_C32(0xa43c0000), SPH_C32(0xdbd10000), SPH_C32(0x835b0000),
+	  SPH_C32(0x178113a8), SPH_C32(0xea7bb99f), SPH_C32(0xd0ae8609),
+	  SPH_C32(0xee057339) },
+	{ SPH_C32(0x650a1800), SPH_C32(0xc0db0000), SPH_C32(0x299a0000),
+	  SPH_C32(0x41a80000), SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda),
+	  SPH_C32(0x234ec450), SPH_C32(0x6308edfd), SPH_C32(0x5814b800),
+	  SPH_C32(0x1dd50000), SPH_C32(0xbaf60000), SPH_C32(0x723a0000),
+	  SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7), SPH_C32(0x9707e129),
+	  SPH_C32(0x0f8b57fc) },
+	{ SPH_C32(0x71502400), SPH_C32(0x79320000), SPH_C32(0x48bd0000),
+	  SPH_C32(0xb0c90000), SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2),
+	  SPH_C32(0x64e7a370), SPH_C32(0x8286c938), SPH_C32(0x7b73ac00),
+	  SPH_C32(0xd56c0000), SPH_C32(0x4e310000), SPH_C32(0x894f0000),
+	  SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae), SPH_C32(0x95c3eb16),
+	  SPH_C32(0xd3afb1e3) },
+	{ SPH_C32(0x12455000), SPH_C32(0xe28f0000), SPH_C32(0x188b0000),
+	  SPH_C32(0x1b180000), SPH_C32(0xd9301e32), SPH_C32(0xd0baef72),
+	  SPH_C32(0x4a3a8ff2), SPH_C32(0xea373c60), SPH_C32(0xf3928800),
+	  SPH_C32(0xdc560000), SPH_C32(0xbd470000), SPH_C32(0x95bd0000),
+	  SPH_C32(0x3d767488), SPH_C32(0xf3c9c922), SPH_C32(0x916cbfec),
+	  SPH_C32(0x4aeb5b0f) },
+	{ SPH_C32(0x061f6c00), SPH_C32(0x5b660000), SPH_C32(0x79ac0000),
+	  SPH_C32(0xea790000), SPH_C32(0x1751235e), SPH_C32(0x60f3d20a),
+	  SPH_C32(0x0d93e8d2), SPH_C32(0x0bb918a5), SPH_C32(0xd0f59c00),
+	  SPH_C32(0x14ef0000), SPH_C32(0x49800000), SPH_C32(0x6ec80000),
+	  SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b), SPH_C32(0x93a8b5d3),
+	  SPH_C32(0x96cfbd10) },
+	{ SPH_C32(0x31224400), SPH_C32(0x2a360000), SPH_C32(0xec4c0000),
+	  SPH_C32(0xe06d0000), SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b),
+	  SPH_C32(0x48fe85cd), SPH_C32(0x3613da7f), SPH_C32(0xc4afa000),
+	  SPH_C32(0xad060000), SPH_C32(0x28a70000), SPH_C32(0x9fa90000),
+	  SPH_C32(0x80da6d81), SPH_C32(0xbb265113), SPH_C32(0xd401d2f3),
+	  SPH_C32(0x774199d5) },
+	{ SPH_C32(0x25787800), SPH_C32(0x93df0000), SPH_C32(0x8d6b0000),
+	  SPH_C32(0x110c0000), SPH_C32(0x649c073b), SPH_C32(0x98557743),
+	  SPH_C32(0x0f57e2ed), SPH_C32(0xd79dfeba), SPH_C32(0xe7c8b400),
+	  SPH_C32(0x65bf0000), SPH_C32(0xdc600000), SPH_C32(0x64dc0000),
+	  SPH_C32(0xf31749e4), SPH_C32(0x4380f45a), SPH_C32(0xd6c5d8cc),
+	  SPH_C32(0xab657fca) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0xce8c2800), SPH_C32(0x01580000), SPH_C32(0x2e2b0000),
+	  SPH_C32(0xa62f0000), SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f),
+	  SPH_C32(0x25259a95), SPH_C32(0x2668e10e), SPH_C32(0x84ddc000),
+	  SPH_C32(0xfe020000), SPH_C32(0x8c560000), SPH_C32(0xcf0d0000),
+	  SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a), SPH_C32(0xf818f44e),
+	  SPH_C32(0xc3d48a92) },
+	{ SPH_C32(0xf9b10000), SPH_C32(0x70080000), SPH_C32(0xbbcb0000),
+	  SPH_C32(0xac3b0000), SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e),
+	  SPH_C32(0x6048f78a), SPH_C32(0x1bc223d4), SPH_C32(0x9087fc00),
+	  SPH_C32(0x47eb0000), SPH_C32(0xed710000), SPH_C32(0x3e6c0000),
+	  SPH_C32(0x33780af1), SPH_C32(0x2f8395f2), SPH_C32(0xbfb1936e),
+	  SPH_C32(0x225aae57) },
+	{ SPH_C32(0xedeb3c00), SPH_C32(0xc9e10000), SPH_C32(0xdaec0000),
+	  SPH_C32(0x5d5a0000), SPH_C32(0x8e04230e), SPH_C32(0xede46656),
+	  SPH_C32(0x27e190aa), SPH_C32(0xfa4c0711), SPH_C32(0xb3e0e800),
+	  SPH_C32(0x8f520000), SPH_C32(0x19b60000), SPH_C32(0xc5190000),
+	  SPH_C32(0x40b52e94), SPH_C32(0xd72530bb), SPH_C32(0xbd759951),
+	  SPH_C32(0xfe7e4848) },
+	{ SPH_C32(0x8efe4800), SPH_C32(0x525c0000), SPH_C32(0x8ada0000),
+	  SPH_C32(0xf68b0000), SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86),
+	  SPH_C32(0x093cbc28), SPH_C32(0x92fdf249), SPH_C32(0x3b01cc00),
+	  SPH_C32(0x86680000), SPH_C32(0xeac00000), SPH_C32(0xd9eb0000),
+	  SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837), SPH_C32(0xb9dacdab),
+	  SPH_C32(0x673aa2a4) },
+	{ SPH_C32(0x9aa47400), SPH_C32(0xebb50000), SPH_C32(0xebfd0000),
+	  SPH_C32(0x07ea0000), SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe),
+	  SPH_C32(0x4e95db08), SPH_C32(0x7373d68c), SPH_C32(0x1866d800),
+	  SPH_C32(0x4ed10000), SPH_C32(0x1e070000), SPH_C32(0x229e0000),
+	  SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e), SPH_C32(0xbb1ec794),
+	  SPH_C32(0xbb1e44bb) },
+	{ SPH_C32(0xad995c00), SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000),
+	  SPH_C32(0x0dfe0000), SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf),
+	  SPH_C32(0x0bf8b617), SPH_C32(0x4ed91456), SPH_C32(0x0c3ce400),
+	  SPH_C32(0xf7380000), SPH_C32(0x7f200000), SPH_C32(0xd3ff0000),
+	  SPH_C32(0x6a4249b4), SPH_C32(0xce974006), SPH_C32(0xfcb7a0b4),
+	  SPH_C32(0x5a90607e) },
+	{ SPH_C32(0xb9c36000), SPH_C32(0x230c0000), SPH_C32(0x1f3a0000),
+	  SPH_C32(0xfc9f0000), SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7),
+	  SPH_C32(0x4c51d137), SPH_C32(0xaf573093), SPH_C32(0x2f5bf000),
+	  SPH_C32(0x3f810000), SPH_C32(0x8be70000), SPH_C32(0x288a0000),
+	  SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f), SPH_C32(0xfe73aa8b),
+	  SPH_C32(0x86b48661) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0x7b73ac00), SPH_C32(0xd56c0000), SPH_C32(0x4e310000),
+	  SPH_C32(0x894f0000), SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae),
+	  SPH_C32(0x95c3eb16), SPH_C32(0xd3afb1e3), SPH_C32(0x0a238800),
+	  SPH_C32(0xac5e0000), SPH_C32(0x068c0000), SPH_C32(0x39860000),
+	  SPH_C32(0x7d136aea), SPH_C32(0xae64920c), SPH_C32(0xf1244866),
+	  SPH_C32(0x512978db) },
+	{ SPH_C32(0x4c4e8400), SPH_C32(0xa43c0000), SPH_C32(0xdbd10000),
+	  SPH_C32(0x835b0000), SPH_C32(0x178113a8), SPH_C32(0xea7bb99f),
+	  SPH_C32(0xd0ae8609), SPH_C32(0xee057339), SPH_C32(0x1e79b400),
+	  SPH_C32(0x15b70000), SPH_C32(0x67ab0000), SPH_C32(0xc8e70000),
+	  SPH_C32(0xb3725786), SPH_C32(0x1e2daf74), SPH_C32(0xb68d2f46),
+	  SPH_C32(0xb0a75c1e) },
+	{ SPH_C32(0x5814b800), SPH_C32(0x1dd50000), SPH_C32(0xbaf60000),
+	  SPH_C32(0x723a0000), SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7),
+	  SPH_C32(0x9707e129), SPH_C32(0x0f8b57fc), SPH_C32(0x3d1ea000),
+	  SPH_C32(0xdd0e0000), SPH_C32(0x936c0000), SPH_C32(0x33920000),
+	  SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d), SPH_C32(0xb4492579),
+	  SPH_C32(0x6c83ba01) },
+	{ SPH_C32(0x3b01cc00), SPH_C32(0x86680000), SPH_C32(0xeac00000),
+	  SPH_C32(0xd9eb0000), SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837),
+	  SPH_C32(0xb9dacdab), SPH_C32(0x673aa2a4), SPH_C32(0xb5ff8400),
+	  SPH_C32(0xd4340000), SPH_C32(0x601a0000), SPH_C32(0x2f600000),
+	  SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1), SPH_C32(0xb0e67183),
+	  SPH_C32(0xf5c750ed) },
+	{ SPH_C32(0x2f5bf000), SPH_C32(0x3f810000), SPH_C32(0x8be70000),
+	  SPH_C32(0x288a0000), SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f),
+	  SPH_C32(0xfe73aa8b), SPH_C32(0x86b48661), SPH_C32(0x96989000),
+	  SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000), SPH_C32(0xd4150000),
+	  SPH_C32(0x242929af), SPH_C32(0x4f7047f8), SPH_C32(0xb2227bbc),
+	  SPH_C32(0x29e3b6f2) },
+	{ SPH_C32(0x1866d800), SPH_C32(0x4ed10000), SPH_C32(0x1e070000),
+	  SPH_C32(0x229e0000), SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e),
+	  SPH_C32(0xbb1ec794), SPH_C32(0xbb1e44bb), SPH_C32(0x82c2ac00),
+	  SPH_C32(0xa5640000), SPH_C32(0xf5fa0000), SPH_C32(0x25740000),
+	  SPH_C32(0xea4814c3), SPH_C32(0xff397a80), SPH_C32(0xf58b1c9c),
+	  SPH_C32(0xc86d9237) },
+	{ SPH_C32(0x0c3ce400), SPH_C32(0xf7380000), SPH_C32(0x7f200000),
+	  SPH_C32(0xd3ff0000), SPH_C32(0x6a4249b4), SPH_C32(0xce974006),
+	  SPH_C32(0xfcb7a0b4), SPH_C32(0x5a90607e), SPH_C32(0xa1a5b800),
+	  SPH_C32(0x6ddd0000), SPH_C32(0x013d0000), SPH_C32(0xde010000),
+	  SPH_C32(0x998530a6), SPH_C32(0x079fdfc9), SPH_C32(0xf74f16a3),
+	  SPH_C32(0x14497428) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) },
+	{ SPH_C32(0xe7c8b400), SPH_C32(0x65bf0000), SPH_C32(0xdc600000),
+	  SPH_C32(0x64dc0000), SPH_C32(0xf31749e4), SPH_C32(0x4380f45a),
+	  SPH_C32(0xd6c5d8cc), SPH_C32(0xab657fca), SPH_C32(0xc2b0cc00),
+	  SPH_C32(0xf6600000), SPH_C32(0x510b0000), SPH_C32(0x75d00000),
+	  SPH_C32(0x978b4edf), SPH_C32(0xdbd58319), SPH_C32(0xd9923a21),
+	  SPH_C32(0x7cf88170) },
+	{ SPH_C32(0xd0f59c00), SPH_C32(0x14ef0000), SPH_C32(0x49800000),
+	  SPH_C32(0x6ec80000), SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b),
+	  SPH_C32(0x93a8b5d3), SPH_C32(0x96cfbd10), SPH_C32(0xd6eaf000),
+	  SPH_C32(0x4f890000), SPH_C32(0x302c0000), SPH_C32(0x84b10000),
+	  SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61), SPH_C32(0x9e3b5d01),
+	  SPH_C32(0x9d76a5b5) },
+	{ SPH_C32(0xc4afa000), SPH_C32(0xad060000), SPH_C32(0x28a70000),
+	  SPH_C32(0x9fa90000), SPH_C32(0x80da6d81), SPH_C32(0xbb265113),
+	  SPH_C32(0xd401d2f3), SPH_C32(0x774199d5), SPH_C32(0xf58de400),
+	  SPH_C32(0x87300000), SPH_C32(0xc4eb0000), SPH_C32(0x7fc40000),
+	  SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28), SPH_C32(0x9cff573e),
+	  SPH_C32(0x415243aa) },
+	{ SPH_C32(0xa7bad400), SPH_C32(0x36bb0000), SPH_C32(0x78910000),
+	  SPH_C32(0x34780000), SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3),
+	  SPH_C32(0xfadcfe71), SPH_C32(0x1ff06c8d), SPH_C32(0x7d6cc000),
+	  SPH_C32(0x8e0a0000), SPH_C32(0x379d0000), SPH_C32(0x63360000),
+	  SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4), SPH_C32(0x985003c4),
+	  SPH_C32(0xd816a946) },
+	{ SPH_C32(0xb3e0e800), SPH_C32(0x8f520000), SPH_C32(0x19b60000),
+	  SPH_C32(0xc5190000), SPH_C32(0x40b52e94), SPH_C32(0xd72530bb),
+	  SPH_C32(0xbd759951), SPH_C32(0xfe7e4848), SPH_C32(0x5e0bd400),
+	  SPH_C32(0x46b30000), SPH_C32(0xc35a0000), SPH_C32(0x98430000),
+	  SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed), SPH_C32(0x9a9409fb),
+	  SPH_C32(0x04324f59) },
+	{ SPH_C32(0x84ddc000), SPH_C32(0xfe020000), SPH_C32(0x8c560000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a),
+	  SPH_C32(0xf818f44e), SPH_C32(0xc3d48a92), SPH_C32(0x4a51e800),
+	  SPH_C32(0xff5a0000), SPH_C32(0xa27d0000), SPH_C32(0x69220000),
+	  SPH_C32(0x00d030f6), SPH_C32(0x8a886b95), SPH_C32(0xdd3d6edb),
+	  SPH_C32(0xe5bc6b9c) },
+	{ SPH_C32(0x9087fc00), SPH_C32(0x47eb0000), SPH_C32(0xed710000),
+	  SPH_C32(0x3e6c0000), SPH_C32(0x33780af1), SPH_C32(0x2f8395f2),
+	  SPH_C32(0xbfb1936e), SPH_C32(0x225aae57), SPH_C32(0x6936fc00),
+	  SPH_C32(0x37e30000), SPH_C32(0x56ba0000), SPH_C32(0x92570000),
+	  SPH_C32(0x731d1493), SPH_C32(0x722ecedc), SPH_C32(0xdff964e4),
+	  SPH_C32(0x39988d83) }
+};
+
+static const sph_u32 T512_6[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0x9fc30180), SPH_C32(0x6c280000), SPH_C32(0xe7690000),
+	  SPH_C32(0xe0360000), SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966),
+	  SPH_C32(0x453b7806), SPH_C32(0xaebf667a), SPH_C32(0x405b0030),
+	  SPH_C32(0x9a540000), SPH_C32(0x42670000), SPH_C32(0x5fb10000),
+	  SPH_C32(0xd6c06187), SPH_C32(0x5d81863c), SPH_C32(0x87922fef),
+	  SPH_C32(0x79e0422c) },
+	{ SPH_C32(0x1ceb0120), SPH_C32(0x0b6a0000), SPH_C32(0x067e0000),
+	  SPH_C32(0xd73d0000), SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a),
+	  SPH_C32(0xd25cc5ca), SPH_C32(0xebbc06c5), SPH_C32(0x371f00c0),
+	  SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000), SPH_C32(0x6ba50000),
+	  SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19), SPH_C32(0x8c51e2f1),
+	  SPH_C32(0xb6d737e7) },
+	{ SPH_C32(0x6baf01d0), SPH_C32(0xfa300000), SPH_C32(0xf3cc0000),
+	  SPH_C32(0xe3290000), SPH_C32(0x392b6b13), SPH_C32(0x9515777f),
+	  SPH_C32(0xd99f08d4), SPH_C32(0x248b730e), SPH_C32(0xc3730090),
+	  SPH_C32(0xfd160000), SPH_C32(0xa3700000), SPH_C32(0x68ba0000),
+	  SPH_C32(0x1d6361b3), SPH_C32(0x61b51400), SPH_C32(0x10f59223),
+	  SPH_C32(0x3ce32293) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0xc3730090), SPH_C32(0xfd160000), SPH_C32(0xa3700000),
+	  SPH_C32(0x68ba0000), SPH_C32(0x1d6361b3), SPH_C32(0x61b51400),
+	  SPH_C32(0x10f59223), SPH_C32(0x3ce32293), SPH_C32(0xa8dc0140),
+	  SPH_C32(0x07260000), SPH_C32(0x50bc0000), SPH_C32(0x8b930000),
+	  SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f), SPH_C32(0xc96a9af7),
+	  SPH_C32(0x1868519d) },
+	{ SPH_C32(0x405b0030), SPH_C32(0x9a540000), SPH_C32(0x42670000),
+	  SPH_C32(0x5fb10000), SPH_C32(0xd6c06187), SPH_C32(0x5d81863c),
+	  SPH_C32(0x87922fef), SPH_C32(0x79e0422c), SPH_C32(0xdf9801b0),
+	  SPH_C32(0xf67c0000), SPH_C32(0xa50e0000), SPH_C32(0xbf870000),
+	  SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a), SPH_C32(0xc2a957e9),
+	  SPH_C32(0xd75f2456) },
+	{ SPH_C32(0x371f00c0), SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000),
+	  SPH_C32(0x6ba50000), SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19),
+	  SPH_C32(0x8c51e2f1), SPH_C32(0xb6d737e7), SPH_C32(0x2bf401e0),
+	  SPH_C32(0x60640000), SPH_C32(0xb1ab0000), SPH_C32(0xbc980000),
+	  SPH_C32(0xefeb0a94), SPH_C32(0xc894f143), SPH_C32(0x5e0d273b),
+	  SPH_C32(0x5d6b3122) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) },
+	{ SPH_C32(0x2bf401e0), SPH_C32(0x60640000), SPH_C32(0xb1ab0000),
+	  SPH_C32(0xbc980000), SPH_C32(0xefeb0a94), SPH_C32(0xc894f143),
+	  SPH_C32(0x5e0d273b), SPH_C32(0x5d6b3122), SPH_C32(0x1ceb0120),
+	  SPH_C32(0x0b6a0000), SPH_C32(0x067e0000), SPH_C32(0xd73d0000),
+	  SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a), SPH_C32(0xd25cc5ca),
+	  SPH_C32(0xebbc06c5) },
+	{ SPH_C32(0xa8dc0140), SPH_C32(0x07260000), SPH_C32(0x50bc0000),
+	  SPH_C32(0x8b930000), SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f),
+	  SPH_C32(0xc96a9af7), SPH_C32(0x1868519d), SPH_C32(0x6baf01d0),
+	  SPH_C32(0xfa300000), SPH_C32(0xf3cc0000), SPH_C32(0xe3290000),
+	  SPH_C32(0x392b6b13), SPH_C32(0x9515777f), SPH_C32(0xd99f08d4),
+	  SPH_C32(0x248b730e) },
+	{ SPH_C32(0xdf9801b0), SPH_C32(0xf67c0000), SPH_C32(0xa50e0000),
+	  SPH_C32(0xbf870000), SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a),
+	  SPH_C32(0xc2a957e9), SPH_C32(0xd75f2456), SPH_C32(0x9fc30180),
+	  SPH_C32(0x6c280000), SPH_C32(0xe7690000), SPH_C32(0xe0360000),
+	  SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966), SPH_C32(0x453b7806),
+	  SPH_C32(0xaebf667a) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0x984f0280), SPH_C32(0xcba70000), SPH_C32(0xa81c0000),
+	  SPH_C32(0x5d5d0000), SPH_C32(0x1238428a), SPH_C32(0x1e8e59dc),
+	  SPH_C32(0x6dd7c74f), SPH_C32(0x5d7828c1), SPH_C32(0x3d070060),
+	  SPH_C32(0x713d0000), SPH_C32(0x3b210000), SPH_C32(0x25500000),
+	  SPH_C32(0x4afd2541), SPH_C32(0x0b438f2e), SPH_C32(0xcc3b1956),
+	  SPH_C32(0x145dba1c) },
+	{ SPH_C32(0x1b670220), SPH_C32(0xace50000), SPH_C32(0x490b0000),
+	  SPH_C32(0x6a560000), SPH_C32(0xd99b42be), SPH_C32(0x22bacbe0),
+	  SPH_C32(0xfab07a83), SPH_C32(0x187b487e), SPH_C32(0x4a430090),
+	  SPH_C32(0x80670000), SPH_C32(0xce930000), SPH_C32(0x11440000),
+	  SPH_C32(0xc3ca5bcd), SPH_C32(0x51c8630b), SPH_C32(0xc7f8d448),
+	  SPH_C32(0xdb6acfd7) },
+	{ SPH_C32(0x6c2302d0), SPH_C32(0x5dbf0000), SPH_C32(0xbcb90000),
+	  SPH_C32(0x5e420000), SPH_C32(0x50ac3c32), SPH_C32(0x783127c5),
+	  SPH_C32(0xf173b79d), SPH_C32(0xd74c3db5), SPH_C32(0xbe2f00c0),
+	  SPH_C32(0x167f0000), SPH_C32(0xda360000), SPH_C32(0x125b0000),
+	  SPH_C32(0x815e2575), SPH_C32(0x37771d12), SPH_C32(0x5b5ca49a),
+	  SPH_C32(0x515edaa3) },
+	{ SPH_C32(0x078c0300), SPH_C32(0xa78f0000), SPH_C32(0x4f750000),
+	  SPH_C32(0xbd6b0000), SPH_C32(0x69875721), SPH_C32(0xed2450ba),
+	  SPH_C32(0x28ecbf49), SPH_C32(0xf3c74ebb), SPH_C32(0x7d5c0050),
+	  SPH_C32(0xeb690000), SPH_C32(0x79460000), SPH_C32(0x7ae10000),
+	  SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912), SPH_C32(0x4ba936b9),
+	  SPH_C32(0x6dbdf830) },
+	{ SPH_C32(0x70c803f0), SPH_C32(0x56d50000), SPH_C32(0xbac70000),
+	  SPH_C32(0x897f0000), SPH_C32(0xe0b029ad), SPH_C32(0xb7afbc9f),
+	  SPH_C32(0x232f7257), SPH_C32(0x3cf03b70), SPH_C32(0x89300000),
+	  SPH_C32(0x7d710000), SPH_C32(0x6de30000), SPH_C32(0x79fe0000),
+	  SPH_C32(0xdea93a7e), SPH_C32(0x307d770b), SPH_C32(0xd70d466b),
+	  SPH_C32(0xe789ed44) },
+	{ SPH_C32(0xf3e00350), SPH_C32(0x31970000), SPH_C32(0x5bd00000),
+	  SPH_C32(0xbe740000), SPH_C32(0x2b132999), SPH_C32(0x8b9b2ea3),
+	  SPH_C32(0xb448cf9b), SPH_C32(0x79f35bcf), SPH_C32(0xfe7400f0),
+	  SPH_C32(0x8c2b0000), SPH_C32(0x98510000), SPH_C32(0x4dea0000),
+	  SPH_C32(0x579e44f2), SPH_C32(0x6af69b2e), SPH_C32(0xdcce8b75),
+	  SPH_C32(0x28be988f) },
+	{ SPH_C32(0x84a403a0), SPH_C32(0xc0cd0000), SPH_C32(0xae620000),
+	  SPH_C32(0x8a600000), SPH_C32(0xa2245715), SPH_C32(0xd110c286),
+	  SPH_C32(0xbf8b0285), SPH_C32(0xb6c42e04), SPH_C32(0x0a1800a0),
+	  SPH_C32(0x1a330000), SPH_C32(0x8cf40000), SPH_C32(0x4ef50000),
+	  SPH_C32(0x150a3a4a), SPH_C32(0x0c49e537), SPH_C32(0x406afba7),
+	  SPH_C32(0xa28a8dfb) },
+	{ SPH_C32(0x5b3c0210), SPH_C32(0x36b10000), SPH_C32(0x0b6c0000),
+	  SPH_C32(0x35e70000), SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc),
+	  SPH_C32(0x7d22556c), SPH_C32(0x619b0a52), SPH_C32(0x95db0120),
+	  SPH_C32(0x761b0000), SPH_C32(0x6b9d0000), SPH_C32(0xaec30000),
+	  SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51), SPH_C32(0x055183a1),
+	  SPH_C32(0x0c35eb81) },
+	{ SPH_C32(0x2c7802e0), SPH_C32(0xc7eb0000), SPH_C32(0xfede0000),
+	  SPH_C32(0x01f30000), SPH_C32(0x866c5db5), SPH_C32(0x25b0a1f9),
+	  SPH_C32(0x76e19872), SPH_C32(0xaeac7f99), SPH_C32(0x61b70170),
+	  SPH_C32(0xe0030000), SPH_C32(0x7f380000), SPH_C32(0xaddc0000),
+	  SPH_C32(0x2c215159), SPH_C32(0x995c9248), SPH_C32(0x99f5f373),
+	  SPH_C32(0x8601fef5) },
+	{ SPH_C32(0xaf500240), SPH_C32(0xa0a90000), SPH_C32(0x1fc90000),
+	  SPH_C32(0x36f80000), SPH_C32(0x4dcf5d81), SPH_C32(0x198433c5),
+	  SPH_C32(0xe18625be), SPH_C32(0xebaf1f26), SPH_C32(0x16f30180),
+	  SPH_C32(0x11590000), SPH_C32(0x8a8a0000), SPH_C32(0x99c80000),
+	  SPH_C32(0xa5162fd5), SPH_C32(0xc3d77e6d), SPH_C32(0x92363e6d),
+	  SPH_C32(0x49368b3e) },
+	{ SPH_C32(0xd81402b0), SPH_C32(0x51f30000), SPH_C32(0xea7b0000),
+	  SPH_C32(0x02ec0000), SPH_C32(0xc4f8230d), SPH_C32(0x430fdfe0),
+	  SPH_C32(0xea45e8a0), SPH_C32(0x24986aed), SPH_C32(0xe29f01d0),
+	  SPH_C32(0x87410000), SPH_C32(0x9e2f0000), SPH_C32(0x9ad70000),
+	  SPH_C32(0xe782516d), SPH_C32(0xa5680074), SPH_C32(0x0e924ebf),
+	  SPH_C32(0xc3029e4a) },
+	{ SPH_C32(0xb3bb0360), SPH_C32(0xabc30000), SPH_C32(0x19b70000),
+	  SPH_C32(0xe1c50000), SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f),
+	  SPH_C32(0x33dae074), SPH_C32(0x001319e3), SPH_C32(0x21ec0140),
+	  SPH_C32(0x7a570000), SPH_C32(0x3d5f0000), SPH_C32(0xf26d0000),
+	  SPH_C32(0xfae130de), SPH_C32(0xc4dd1474), SPH_C32(0x1e67dc9c),
+	  SPH_C32(0xffe1bcd9) },
+	{ SPH_C32(0xc4ff0390), SPH_C32(0x5a990000), SPH_C32(0xec050000),
+	  SPH_C32(0xd5d10000), SPH_C32(0x74e43692), SPH_C32(0x8c9144ba),
+	  SPH_C32(0x38192d6a), SPH_C32(0xcf246c28), SPH_C32(0xd5800110),
+	  SPH_C32(0xec4f0000), SPH_C32(0x29fa0000), SPH_C32(0xf1720000),
+	  SPH_C32(0xb8754e66), SPH_C32(0xa2626a6d), SPH_C32(0x82c3ac4e),
+	  SPH_C32(0x75d5a9ad) },
+	{ SPH_C32(0x47d70330), SPH_C32(0x3ddb0000), SPH_C32(0x0d120000),
+	  SPH_C32(0xe2da0000), SPH_C32(0xbf4736a6), SPH_C32(0xb0a5d686),
+	  SPH_C32(0xaf7e90a6), SPH_C32(0x8a270c97), SPH_C32(0xa2c401e0),
+	  SPH_C32(0x1d150000), SPH_C32(0xdc480000), SPH_C32(0xc5660000),
+	  SPH_C32(0x314230ea), SPH_C32(0xf8e98648), SPH_C32(0x89006150),
+	  SPH_C32(0xbae2dc66) },
+	{ SPH_C32(0x309303c0), SPH_C32(0xcc810000), SPH_C32(0xf8a00000),
+	  SPH_C32(0xd6ce0000), SPH_C32(0x3670482a), SPH_C32(0xea2e3aa3),
+	  SPH_C32(0xa4bd5db8), SPH_C32(0x4510795c), SPH_C32(0x56a801b0),
+	  SPH_C32(0x8b0d0000), SPH_C32(0xc8ed0000), SPH_C32(0xc6790000),
+	  SPH_C32(0x73d64e52), SPH_C32(0x9e56f851), SPH_C32(0x15a41182),
+	  SPH_C32(0x30d6c912) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0xbe2f00c0), SPH_C32(0x167f0000), SPH_C32(0xda360000),
+	  SPH_C32(0x125b0000), SPH_C32(0x815e2575), SPH_C32(0x37771d12),
+	  SPH_C32(0x5b5ca49a), SPH_C32(0x515edaa3), SPH_C32(0xd20c0210),
+	  SPH_C32(0x4bc00000), SPH_C32(0x668f0000), SPH_C32(0x4c190000),
+	  SPH_C32(0xd1f21947), SPH_C32(0x4f463ad7), SPH_C32(0xaa2f1307),
+	  SPH_C32(0x8612e716) },
+	{ SPH_C32(0x3d070060), SPH_C32(0x713d0000), SPH_C32(0x3b210000),
+	  SPH_C32(0x25500000), SPH_C32(0x4afd2541), SPH_C32(0x0b438f2e),
+	  SPH_C32(0xcc3b1956), SPH_C32(0x145dba1c), SPH_C32(0xa54802e0),
+	  SPH_C32(0xba9a0000), SPH_C32(0x933d0000), SPH_C32(0x780d0000),
+	  SPH_C32(0x58c567cb), SPH_C32(0x15cdd6f2), SPH_C32(0xa1ecde19),
+	  SPH_C32(0x492592dd) },
+	{ SPH_C32(0x4a430090), SPH_C32(0x80670000), SPH_C32(0xce930000),
+	  SPH_C32(0x11440000), SPH_C32(0xc3ca5bcd), SPH_C32(0x51c8630b),
+	  SPH_C32(0xc7f8d448), SPH_C32(0xdb6acfd7), SPH_C32(0x512402b0),
+	  SPH_C32(0x2c820000), SPH_C32(0x87980000), SPH_C32(0x7b120000),
+	  SPH_C32(0x1a511973), SPH_C32(0x7372a8eb), SPH_C32(0x3d48aecb),
+	  SPH_C32(0xc31187a9) },
+	{ SPH_C32(0x21ec0140), SPH_C32(0x7a570000), SPH_C32(0x3d5f0000),
+	  SPH_C32(0xf26d0000), SPH_C32(0xfae130de), SPH_C32(0xc4dd1474),
+	  SPH_C32(0x1e67dc9c), SPH_C32(0xffe1bcd9), SPH_C32(0x92570220),
+	  SPH_C32(0xd1940000), SPH_C32(0x24e80000), SPH_C32(0x13a80000),
+	  SPH_C32(0x073278c0), SPH_C32(0x12c7bceb), SPH_C32(0x2dbd3ce8),
+	  SPH_C32(0xfff2a53a) },
+	{ SPH_C32(0x56a801b0), SPH_C32(0x8b0d0000), SPH_C32(0xc8ed0000),
+	  SPH_C32(0xc6790000), SPH_C32(0x73d64e52), SPH_C32(0x9e56f851),
+	  SPH_C32(0x15a41182), SPH_C32(0x30d6c912), SPH_C32(0x663b0270),
+	  SPH_C32(0x478c0000), SPH_C32(0x304d0000), SPH_C32(0x10b70000),
+	  SPH_C32(0x45a60678), SPH_C32(0x7478c2f2), SPH_C32(0xb1194c3a),
+	  SPH_C32(0x75c6b04e) },
+	{ SPH_C32(0xd5800110), SPH_C32(0xec4f0000), SPH_C32(0x29fa0000),
+	  SPH_C32(0xf1720000), SPH_C32(0xb8754e66), SPH_C32(0xa2626a6d),
+	  SPH_C32(0x82c3ac4e), SPH_C32(0x75d5a9ad), SPH_C32(0x117f0280),
+	  SPH_C32(0xb6d60000), SPH_C32(0xc5ff0000), SPH_C32(0x24a30000),
+	  SPH_C32(0xcc9178f4), SPH_C32(0x2ef32ed7), SPH_C32(0xbada8124),
+	  SPH_C32(0xbaf1c585) },
+	{ SPH_C32(0xa2c401e0), SPH_C32(0x1d150000), SPH_C32(0xdc480000),
+	  SPH_C32(0xc5660000), SPH_C32(0x314230ea), SPH_C32(0xf8e98648),
+	  SPH_C32(0x89006150), SPH_C32(0xbae2dc66), SPH_C32(0xe51302d0),
+	  SPH_C32(0x20ce0000), SPH_C32(0xd15a0000), SPH_C32(0x27bc0000),
+	  SPH_C32(0x8e05064c), SPH_C32(0x484c50ce), SPH_C32(0x267ef1f6),
+	  SPH_C32(0x30c5d0f1) },
+	{ SPH_C32(0x7d5c0050), SPH_C32(0xeb690000), SPH_C32(0x79460000),
+	  SPH_C32(0x7ae10000), SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912),
+	  SPH_C32(0x4ba936b9), SPH_C32(0x6dbdf830), SPH_C32(0x7ad00350),
+	  SPH_C32(0x4ce60000), SPH_C32(0x36330000), SPH_C32(0xc78a0000),
+	  SPH_C32(0xf5ba13e7), SPH_C32(0xbbe659a8), SPH_C32(0x634589f0),
+	  SPH_C32(0x9e7ab68b) },
+	{ SPH_C32(0x0a1800a0), SPH_C32(0x1a330000), SPH_C32(0x8cf40000),
+	  SPH_C32(0x4ef50000), SPH_C32(0x150a3a4a), SPH_C32(0x0c49e537),
+	  SPH_C32(0x406afba7), SPH_C32(0xa28a8dfb), SPH_C32(0x8ebc0300),
+	  SPH_C32(0xdafe0000), SPH_C32(0x22960000), SPH_C32(0xc4950000),
+	  SPH_C32(0xb72e6d5f), SPH_C32(0xdd5927b1), SPH_C32(0xffe1f922),
+	  SPH_C32(0x144ea3ff) },
+	{ SPH_C32(0x89300000), SPH_C32(0x7d710000), SPH_C32(0x6de30000),
+	  SPH_C32(0x79fe0000), SPH_C32(0xdea93a7e), SPH_C32(0x307d770b),
+	  SPH_C32(0xd70d466b), SPH_C32(0xe789ed44), SPH_C32(0xf9f803f0),
+	  SPH_C32(0x2ba40000), SPH_C32(0xd7240000), SPH_C32(0xf0810000),
+	  SPH_C32(0x3e1913d3), SPH_C32(0x87d2cb94), SPH_C32(0xf422343c),
+	  SPH_C32(0xdb79d634) },
+	{ SPH_C32(0xfe7400f0), SPH_C32(0x8c2b0000), SPH_C32(0x98510000),
+	  SPH_C32(0x4dea0000), SPH_C32(0x579e44f2), SPH_C32(0x6af69b2e),
+	  SPH_C32(0xdcce8b75), SPH_C32(0x28be988f), SPH_C32(0x0d9403a0),
+	  SPH_C32(0xbdbc0000), SPH_C32(0xc3810000), SPH_C32(0xf39e0000),
+	  SPH_C32(0x7c8d6d6b), SPH_C32(0xe16db58d), SPH_C32(0x688644ee),
+	  SPH_C32(0x514dc340) },
+	{ SPH_C32(0x95db0120), SPH_C32(0x761b0000), SPH_C32(0x6b9d0000),
+	  SPH_C32(0xaec30000), SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51),
+	  SPH_C32(0x055183a1), SPH_C32(0x0c35eb81), SPH_C32(0xcee70330),
+	  SPH_C32(0x40aa0000), SPH_C32(0x60f10000), SPH_C32(0x9b240000),
+	  SPH_C32(0x61ee0cd8), SPH_C32(0x80d8a18d), SPH_C32(0x7873d6cd),
+	  SPH_C32(0x6daee1d3) },
+	{ SPH_C32(0xe29f01d0), SPH_C32(0x87410000), SPH_C32(0x9e2f0000),
+	  SPH_C32(0x9ad70000), SPH_C32(0xe782516d), SPH_C32(0xa5680074),
+	  SPH_C32(0x0e924ebf), SPH_C32(0xc3029e4a), SPH_C32(0x3a8b0360),
+	  SPH_C32(0xd6b20000), SPH_C32(0x74540000), SPH_C32(0x983b0000),
+	  SPH_C32(0x237a7260), SPH_C32(0xe667df94), SPH_C32(0xe4d7a61f),
+	  SPH_C32(0xe79af4a7) },
+	{ SPH_C32(0x61b70170), SPH_C32(0xe0030000), SPH_C32(0x7f380000),
+	  SPH_C32(0xaddc0000), SPH_C32(0x2c215159), SPH_C32(0x995c9248),
+	  SPH_C32(0x99f5f373), SPH_C32(0x8601fef5), SPH_C32(0x4dcf0390),
+	  SPH_C32(0x27e80000), SPH_C32(0x81e60000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xaa4d0cec), SPH_C32(0xbcec33b1), SPH_C32(0xef146b01),
+	  SPH_C32(0x28ad816c) },
+	{ SPH_C32(0x16f30180), SPH_C32(0x11590000), SPH_C32(0x8a8a0000),
+	  SPH_C32(0x99c80000), SPH_C32(0xa5162fd5), SPH_C32(0xc3d77e6d),
+	  SPH_C32(0x92363e6d), SPH_C32(0x49368b3e), SPH_C32(0xb9a303c0),
+	  SPH_C32(0xb1f00000), SPH_C32(0x95430000), SPH_C32(0xaf300000),
+	  SPH_C32(0xe8d97254), SPH_C32(0xda534da8), SPH_C32(0x73b01bd3),
+	  SPH_C32(0xa2999418) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) },
+	{ SPH_C32(0x512402b0), SPH_C32(0x2c820000), SPH_C32(0x87980000),
+	  SPH_C32(0x7b120000), SPH_C32(0x1a511973), SPH_C32(0x7372a8eb),
+	  SPH_C32(0x3d48aecb), SPH_C32(0xc31187a9), SPH_C32(0x1b670220),
+	  SPH_C32(0xace50000), SPH_C32(0x490b0000), SPH_C32(0x6a560000),
+	  SPH_C32(0xd99b42be), SPH_C32(0x22bacbe0), SPH_C32(0xfab07a83),
+	  SPH_C32(0x187b487e) },
+	{ SPH_C32(0xd20c0210), SPH_C32(0x4bc00000), SPH_C32(0x668f0000),
+	  SPH_C32(0x4c190000), SPH_C32(0xd1f21947), SPH_C32(0x4f463ad7),
+	  SPH_C32(0xaa2f1307), SPH_C32(0x8612e716), SPH_C32(0x6c2302d0),
+	  SPH_C32(0x5dbf0000), SPH_C32(0xbcb90000), SPH_C32(0x5e420000),
+	  SPH_C32(0x50ac3c32), SPH_C32(0x783127c5), SPH_C32(0xf173b79d),
+	  SPH_C32(0xd74c3db5) },
+	{ SPH_C32(0xa54802e0), SPH_C32(0xba9a0000), SPH_C32(0x933d0000),
+	  SPH_C32(0x780d0000), SPH_C32(0x58c567cb), SPH_C32(0x15cdd6f2),
+	  SPH_C32(0xa1ecde19), SPH_C32(0x492592dd), SPH_C32(0x984f0280),
+	  SPH_C32(0xcba70000), SPH_C32(0xa81c0000), SPH_C32(0x5d5d0000),
+	  SPH_C32(0x1238428a), SPH_C32(0x1e8e59dc), SPH_C32(0x6dd7c74f),
+	  SPH_C32(0x5d7828c1) },
+	{ SPH_C32(0xcee70330), SPH_C32(0x40aa0000), SPH_C32(0x60f10000),
+	  SPH_C32(0x9b240000), SPH_C32(0x61ee0cd8), SPH_C32(0x80d8a18d),
+	  SPH_C32(0x7873d6cd), SPH_C32(0x6daee1d3), SPH_C32(0x5b3c0210),
+	  SPH_C32(0x36b10000), SPH_C32(0x0b6c0000), SPH_C32(0x35e70000),
+	  SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc), SPH_C32(0x7d22556c),
+	  SPH_C32(0x619b0a52) },
+	{ SPH_C32(0xb9a303c0), SPH_C32(0xb1f00000), SPH_C32(0x95430000),
+	  SPH_C32(0xaf300000), SPH_C32(0xe8d97254), SPH_C32(0xda534da8),
+	  SPH_C32(0x73b01bd3), SPH_C32(0xa2999418), SPH_C32(0xaf500240),
+	  SPH_C32(0xa0a90000), SPH_C32(0x1fc90000), SPH_C32(0x36f80000),
+	  SPH_C32(0x4dcf5d81), SPH_C32(0x198433c5), SPH_C32(0xe18625be),
+	  SPH_C32(0xebaf1f26) },
+	{ SPH_C32(0x3a8b0360), SPH_C32(0xd6b20000), SPH_C32(0x74540000),
+	  SPH_C32(0x983b0000), SPH_C32(0x237a7260), SPH_C32(0xe667df94),
+	  SPH_C32(0xe4d7a61f), SPH_C32(0xe79af4a7), SPH_C32(0xd81402b0),
+	  SPH_C32(0x51f30000), SPH_C32(0xea7b0000), SPH_C32(0x02ec0000),
+	  SPH_C32(0xc4f8230d), SPH_C32(0x430fdfe0), SPH_C32(0xea45e8a0),
+	  SPH_C32(0x24986aed) },
+	{ SPH_C32(0x4dcf0390), SPH_C32(0x27e80000), SPH_C32(0x81e60000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xaa4d0cec), SPH_C32(0xbcec33b1),
+	  SPH_C32(0xef146b01), SPH_C32(0x28ad816c), SPH_C32(0x2c7802e0),
+	  SPH_C32(0xc7eb0000), SPH_C32(0xfede0000), SPH_C32(0x01f30000),
+	  SPH_C32(0x866c5db5), SPH_C32(0x25b0a1f9), SPH_C32(0x76e19872),
+	  SPH_C32(0xaeac7f99) },
+	{ SPH_C32(0x92570220), SPH_C32(0xd1940000), SPH_C32(0x24e80000),
+	  SPH_C32(0x13a80000), SPH_C32(0x073278c0), SPH_C32(0x12c7bceb),
+	  SPH_C32(0x2dbd3ce8), SPH_C32(0xfff2a53a), SPH_C32(0xb3bb0360),
+	  SPH_C32(0xabc30000), SPH_C32(0x19b70000), SPH_C32(0xe1c50000),
+	  SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f), SPH_C32(0x33dae074),
+	  SPH_C32(0x001319e3) },
+	{ SPH_C32(0xe51302d0), SPH_C32(0x20ce0000), SPH_C32(0xd15a0000),
+	  SPH_C32(0x27bc0000), SPH_C32(0x8e05064c), SPH_C32(0x484c50ce),
+	  SPH_C32(0x267ef1f6), SPH_C32(0x30c5d0f1), SPH_C32(0x47d70330),
+	  SPH_C32(0x3ddb0000), SPH_C32(0x0d120000), SPH_C32(0xe2da0000),
+	  SPH_C32(0xbf4736a6), SPH_C32(0xb0a5d686), SPH_C32(0xaf7e90a6),
+	  SPH_C32(0x8a270c97) },
+	{ SPH_C32(0x663b0270), SPH_C32(0x478c0000), SPH_C32(0x304d0000),
+	  SPH_C32(0x10b70000), SPH_C32(0x45a60678), SPH_C32(0x7478c2f2),
+	  SPH_C32(0xb1194c3a), SPH_C32(0x75c6b04e), SPH_C32(0x309303c0),
+	  SPH_C32(0xcc810000), SPH_C32(0xf8a00000), SPH_C32(0xd6ce0000),
+	  SPH_C32(0x3670482a), SPH_C32(0xea2e3aa3), SPH_C32(0xa4bd5db8),
+	  SPH_C32(0x4510795c) },
+	{ SPH_C32(0x117f0280), SPH_C32(0xb6d60000), SPH_C32(0xc5ff0000),
+	  SPH_C32(0x24a30000), SPH_C32(0xcc9178f4), SPH_C32(0x2ef32ed7),
+	  SPH_C32(0xbada8124), SPH_C32(0xbaf1c585), SPH_C32(0xc4ff0390),
+	  SPH_C32(0x5a990000), SPH_C32(0xec050000), SPH_C32(0xd5d10000),
+	  SPH_C32(0x74e43692), SPH_C32(0x8c9144ba), SPH_C32(0x38192d6a),
+	  SPH_C32(0xcf246c28) },
+	{ SPH_C32(0x7ad00350), SPH_C32(0x4ce60000), SPH_C32(0x36330000),
+	  SPH_C32(0xc78a0000), SPH_C32(0xf5ba13e7), SPH_C32(0xbbe659a8),
+	  SPH_C32(0x634589f0), SPH_C32(0x9e7ab68b), SPH_C32(0x078c0300),
+	  SPH_C32(0xa78f0000), SPH_C32(0x4f750000), SPH_C32(0xbd6b0000),
+	  SPH_C32(0x69875721), SPH_C32(0xed2450ba), SPH_C32(0x28ecbf49),
+	  SPH_C32(0xf3c74ebb) },
+	{ SPH_C32(0x0d9403a0), SPH_C32(0xbdbc0000), SPH_C32(0xc3810000),
+	  SPH_C32(0xf39e0000), SPH_C32(0x7c8d6d6b), SPH_C32(0xe16db58d),
+	  SPH_C32(0x688644ee), SPH_C32(0x514dc340), SPH_C32(0xf3e00350),
+	  SPH_C32(0x31970000), SPH_C32(0x5bd00000), SPH_C32(0xbe740000),
+	  SPH_C32(0x2b132999), SPH_C32(0x8b9b2ea3), SPH_C32(0xb448cf9b),
+	  SPH_C32(0x79f35bcf) },
+	{ SPH_C32(0x8ebc0300), SPH_C32(0xdafe0000), SPH_C32(0x22960000),
+	  SPH_C32(0xc4950000), SPH_C32(0xb72e6d5f), SPH_C32(0xdd5927b1),
+	  SPH_C32(0xffe1f922), SPH_C32(0x144ea3ff), SPH_C32(0x84a403a0),
+	  SPH_C32(0xc0cd0000), SPH_C32(0xae620000), SPH_C32(0x8a600000),
+	  SPH_C32(0xa2245715), SPH_C32(0xd110c286), SPH_C32(0xbf8b0285),
+	  SPH_C32(0xb6c42e04) },
+	{ SPH_C32(0xf9f803f0), SPH_C32(0x2ba40000), SPH_C32(0xd7240000),
+	  SPH_C32(0xf0810000), SPH_C32(0x3e1913d3), SPH_C32(0x87d2cb94),
+	  SPH_C32(0xf422343c), SPH_C32(0xdb79d634), SPH_C32(0x70c803f0),
+	  SPH_C32(0x56d50000), SPH_C32(0xbac70000), SPH_C32(0x897f0000),
+	  SPH_C32(0xe0b029ad), SPH_C32(0xb7afbc9f), SPH_C32(0x232f7257),
+	  SPH_C32(0x3cf03b70) }
+};
+
+static const sph_u32 T512_12[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0x83490006), SPH_C32(0x3a530000), SPH_C32(0xf5270000),
+	  SPH_C32(0x35d70000), SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9),
+	  SPH_C32(0x76edfd04), SPH_C32(0xd722941a), SPH_C32(0x48b00000),
+	  SPH_C32(0x1e61c000), SPH_C32(0xeac20000), SPH_C32(0x31450000),
+	  SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536), SPH_C32(0x66560735),
+	  SPH_C32(0x52259edc) },
+	{ SPH_C32(0x184f0004), SPH_C32(0x5b158000), SPH_C32(0xd7390000),
+	  SPH_C32(0x28a30000), SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b),
+	  SPH_C32(0x87fecba3), SPH_C32(0x293e4865), SPH_C32(0x3d790003),
+	  SPH_C32(0x10710000), SPH_C32(0x3be20000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261), SPH_C32(0xdd7e7128),
+	  SPH_C32(0x5292b0f7) },
+	{ SPH_C32(0x6d860007), SPH_C32(0x55054000), SPH_C32(0x06190000),
+	  SPH_C32(0x92490000), SPH_C32(0x174666dc), SPH_C32(0x3af1893c),
+	  SPH_C32(0x3cd6bdbe), SPH_C32(0x2989664e), SPH_C32(0xd3b60002),
+	  SPH_C32(0x7f274000), SPH_C32(0xc8dc0000), SPH_C32(0x2c310000),
+	  SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4), SPH_C32(0x97453192),
+	  SPH_C32(0xac3942a3) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0xd3b60002), SPH_C32(0x7f274000), SPH_C32(0xc8dc0000),
+	  SPH_C32(0x2c310000), SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4),
+	  SPH_C32(0x97453192), SPH_C32(0xac3942a3), SPH_C32(0xbe300005),
+	  SPH_C32(0x2a220000), SPH_C32(0xcec50000), SPH_C32(0xbe780000),
+	  SPH_C32(0xa609241f), SPH_C32(0x56639098), SPH_C32(0xab938c2c),
+	  SPH_C32(0x85b024ed) },
+	{ SPH_C32(0x48b00000), SPH_C32(0x1e61c000), SPH_C32(0xeac20000),
+	  SPH_C32(0x31450000), SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536),
+	  SPH_C32(0x66560735), SPH_C32(0x52259edc), SPH_C32(0xcbf90006),
+	  SPH_C32(0x2432c000), SPH_C32(0x1fe50000), SPH_C32(0x04920000),
+	  SPH_C32(0x2dcd0b21), SPH_C32(0xd13b27cf), SPH_C32(0x10bbfa31),
+	  SPH_C32(0x85070ac6) },
+	{ SPH_C32(0x3d790003), SPH_C32(0x10710000), SPH_C32(0x3be20000),
+	  SPH_C32(0x8baf0000), SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261),
+	  SPH_C32(0xdd7e7128), SPH_C32(0x5292b0f7), SPH_C32(0x25360007),
+	  SPH_C32(0x4b648000), SPH_C32(0xecdb0000), SPH_C32(0xa30c0000),
+	  SPH_C32(0x90787938), SPH_C32(0x662acc0a), SPH_C32(0x5a80ba8b),
+	  SPH_C32(0x7bacf892) },
+	{ SPH_C32(0x50ff0004), SPH_C32(0x45744000), SPH_C32(0x3dfb0000),
+	  SPH_C32(0x19e60000), SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d),
+	  SPH_C32(0xe1a8cc96), SPH_C32(0x7b1bd6b9), SPH_C32(0xf6800005),
+	  SPH_C32(0x3443c000), SPH_C32(0x24070000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae), SPH_C32(0xcdc58b19),
+	  SPH_C32(0xd795ba31) },
+	{ SPH_C32(0x25360007), SPH_C32(0x4b648000), SPH_C32(0xecdb0000),
+	  SPH_C32(0xa30c0000), SPH_C32(0x90787938), SPH_C32(0x662acc0a),
+	  SPH_C32(0x5a80ba8b), SPH_C32(0x7bacf892), SPH_C32(0x184f0004),
+	  SPH_C32(0x5b158000), SPH_C32(0xd7390000), SPH_C32(0x28a30000),
+	  SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b), SPH_C32(0x87fecba3),
+	  SPH_C32(0x293e4865) },
+	{ SPH_C32(0xbe300005), SPH_C32(0x2a220000), SPH_C32(0xcec50000),
+	  SPH_C32(0xbe780000), SPH_C32(0xa609241f), SPH_C32(0x56639098),
+	  SPH_C32(0xab938c2c), SPH_C32(0x85b024ed), SPH_C32(0x6d860007),
+	  SPH_C32(0x55054000), SPH_C32(0x06190000), SPH_C32(0x92490000),
+	  SPH_C32(0x174666dc), SPH_C32(0x3af1893c), SPH_C32(0x3cd6bdbe),
+	  SPH_C32(0x2989664e) },
+	{ SPH_C32(0xcbf90006), SPH_C32(0x2432c000), SPH_C32(0x1fe50000),
+	  SPH_C32(0x04920000), SPH_C32(0x2dcd0b21), SPH_C32(0xd13b27cf),
+	  SPH_C32(0x10bbfa31), SPH_C32(0x85070ac6), SPH_C32(0x83490006),
+	  SPH_C32(0x3a530000), SPH_C32(0xf5270000), SPH_C32(0x35d70000),
+	  SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9), SPH_C32(0x76edfd04),
+	  SPH_C32(0xd722941a) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0x82bc000a), SPH_C32(0xc12c0000), SPH_C32(0x12f60000),
+	  SPH_C32(0xbe780000), SPH_C32(0x89513697), SPH_C32(0x7fb081ed),
+	  SPH_C32(0xc1af8753), SPH_C32(0x9ea1b631), SPH_C32(0x3aa50001),
+	  SPH_C32(0xe29e8000), SPH_C32(0x56910000), SPH_C32(0xedb70000),
+	  SPH_C32(0x41fb3063), SPH_C32(0x7ea56da9), SPH_C32(0xd20dd6be),
+	  SPH_C32(0x09ed3174) },
+	{ SPH_C32(0x19ba0008), SPH_C32(0xa06a8000), SPH_C32(0x30e80000),
+	  SPH_C32(0xa30c0000), SPH_C32(0xbf206bb0), SPH_C32(0x4ff9dd7f),
+	  SPH_C32(0x30bcb1f4), SPH_C32(0x60bd6a4e), SPH_C32(0x4f6c0002),
+	  SPH_C32(0xec8e4000), SPH_C32(0x87b10000), SPH_C32(0x575d0000),
+	  SPH_C32(0xca3f1f5d), SPH_C32(0xf9fddafe), SPH_C32(0x6925a0a3),
+	  SPH_C32(0x095a1f5f) },
+	{ SPH_C32(0x6c73000b), SPH_C32(0xae7a4000), SPH_C32(0xe1c80000),
+	  SPH_C32(0x19e60000), SPH_C32(0x34e4448e), SPH_C32(0xc8a16a28),
+	  SPH_C32(0x8b94c7e9), SPH_C32(0x600a4465), SPH_C32(0xa1a30003),
+	  SPH_C32(0x83d80000), SPH_C32(0x748f0000), SPH_C32(0xf0c30000),
+	  SPH_C32(0x778a6d44), SPH_C32(0x4eec313b), SPH_C32(0x231ee019),
+	  SPH_C32(0xf7f1ed0b) },
+	{ SPH_C32(0x01f5000c), SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000),
+	  SPH_C32(0x8baf0000), SPH_C32(0x23a22252), SPH_C32(0xf250e314),
+	  SPH_C32(0xb7427a57), SPH_C32(0x4983222b), SPH_C32(0x72150001),
+	  SPH_C32(0xfcff4000), SPH_C32(0xbc530000), SPH_C32(0xdcf20000),
+	  SPH_C32(0xc6c52f87), SPH_C32(0x227e289f), SPH_C32(0xb45bd18b),
+	  SPH_C32(0x5bc8afa8) },
+	{ SPH_C32(0x743c000f), SPH_C32(0xf56fc000), SPH_C32(0x36f10000),
+	  SPH_C32(0x31450000), SPH_C32(0xa8660d6c), SPH_C32(0x75085443),
+	  SPH_C32(0x0c6a0c4a), SPH_C32(0x49340c00), SPH_C32(0x9cda0000),
+	  SPH_C32(0x93a90000), SPH_C32(0x4f6d0000), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x7b705d9e), SPH_C32(0x956fc35a), SPH_C32(0xfe609131),
+	  SPH_C32(0xa5635dfc) },
+	{ SPH_C32(0xef3a000d), SPH_C32(0x94294000), SPH_C32(0x14ef0000),
+	  SPH_C32(0x2c310000), SPH_C32(0x9e17504b), SPH_C32(0x454108d1),
+	  SPH_C32(0xfd793aed), SPH_C32(0xb728d07f), SPH_C32(0xe9130003),
+	  SPH_C32(0x9db9c000), SPH_C32(0x9e4d0000), SPH_C32(0xc1860000),
+	  SPH_C32(0xf0b472a0), SPH_C32(0x1237740d), SPH_C32(0x4548e72c),
+	  SPH_C32(0xa5d473d7) },
+	{ SPH_C32(0x9af3000e), SPH_C32(0x9a398000), SPH_C32(0xc5cf0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x15d37f75), SPH_C32(0xc219bf86),
+	  SPH_C32(0x46514cf0), SPH_C32(0xb79ffe54), SPH_C32(0x07dc0002),
+	  SPH_C32(0xf2ef8000), SPH_C32(0x6d730000), SPH_C32(0x66180000),
+	  SPH_C32(0x4d0100b9), SPH_C32(0xa5269fc8), SPH_C32(0x0f73a796),
+	  SPH_C32(0x5b7f8183) },
+	{ SPH_C32(0x510a0008), SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000),
+	  SPH_C32(0x92490000), SPH_C32(0x381e7454), SPH_C32(0x13229849),
+	  SPH_C32(0x56eab6c1), SPH_C32(0x3298f492), SPH_C32(0x84950004),
+	  SPH_C32(0xc8bc8000), SPH_C32(0x98540000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31), SPH_C32(0x799e5a92),
+	  SPH_C32(0x8c5d1599) },
+	{ SPH_C32(0x24c3000b), SPH_C32(0xb01b8000), SPH_C32(0x0b0a0000),
+	  SPH_C32(0x28a30000), SPH_C32(0xb3da5b6a), SPH_C32(0x947a2f1e),
+	  SPH_C32(0xedc2c0dc), SPH_C32(0x322fdab9), SPH_C32(0x6a5a0005),
+	  SPH_C32(0xa7eac000), SPH_C32(0x6b6a0000), SPH_C32(0xf4510000),
+	  SPH_C32(0x5a476665), SPH_C32(0x9fd716f4), SPH_C32(0x33a51a28),
+	  SPH_C32(0x72f6e7cd) },
+	{ SPH_C32(0xbfc50009), SPH_C32(0xd15d0000), SPH_C32(0x29140000),
+	  SPH_C32(0x35d70000), SPH_C32(0x85ab064d), SPH_C32(0xa433738c),
+	  SPH_C32(0x1cd1f67b), SPH_C32(0xcc3306c6), SPH_C32(0x1f930006),
+	  SPH_C32(0xa9fa0000), SPH_C32(0xba4a0000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xd183495b), SPH_C32(0x188fa1a3), SPH_C32(0x888d6c35),
+	  SPH_C32(0x7241c9e6) },
+	{ SPH_C32(0xca0c000a), SPH_C32(0xdf4dc000), SPH_C32(0xf8340000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x0e6f2973), SPH_C32(0x236bc4db),
+	  SPH_C32(0xa7f98066), SPH_C32(0xcc8428ed), SPH_C32(0xf15c0007),
+	  SPH_C32(0xc6ac4000), SPH_C32(0x49740000), SPH_C32(0xe9250000),
+	  SPH_C32(0x6c363b42), SPH_C32(0xaf9e4a66), SPH_C32(0xc2b62c8f),
+	  SPH_C32(0x8cea3bb2) },
+	{ SPH_C32(0xa78a000d), SPH_C32(0x8a488000), SPH_C32(0xfe2d0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x19294faf), SPH_C32(0x199a4de7),
+	  SPH_C32(0x9b2f3dd8), SPH_C32(0xe50d4ea3), SPH_C32(0x22ea0005),
+	  SPH_C32(0xb98b0000), SPH_C32(0x81a80000), SPH_C32(0xc5140000),
+	  SPH_C32(0xdd797981), SPH_C32(0xc30c53c2), SPH_C32(0x55f31d1d),
+	  SPH_C32(0x20d37911) },
+	{ SPH_C32(0xd243000e), SPH_C32(0x84584000), SPH_C32(0x2f0d0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0x92ed6091), SPH_C32(0x9ec2fab0),
+	  SPH_C32(0x20074bc5), SPH_C32(0xe5ba6088), SPH_C32(0xcc250004),
+	  SPH_C32(0xd6dd4000), SPH_C32(0x72960000), SPH_C32(0x628a0000),
+	  SPH_C32(0x60cc0b98), SPH_C32(0x741db807), SPH_C32(0x1fc85da7),
+	  SPH_C32(0xde788b45) },
+	{ SPH_C32(0x4945000c), SPH_C32(0xe51ec000), SPH_C32(0x0d130000),
+	  SPH_C32(0xbaea0000), SPH_C32(0xa49c3db6), SPH_C32(0xae8ba622),
+	  SPH_C32(0xd1147d62), SPH_C32(0x1ba6bcf7), SPH_C32(0xb9ec0007),
+	  SPH_C32(0xd8cd8000), SPH_C32(0xa3b60000), SPH_C32(0xd8600000),
+	  SPH_C32(0xeb0824a6), SPH_C32(0xf3450f50), SPH_C32(0xa4e02bba),
+	  SPH_C32(0xdecfa56e) },
+	{ SPH_C32(0x3c8c000f), SPH_C32(0xeb0e0000), SPH_C32(0xdc330000),
+	  SPH_C32(0x00000000), SPH_C32(0x2f581288), SPH_C32(0x29d31175),
+	  SPH_C32(0x6a3c0b7f), SPH_C32(0x1b1192dc), SPH_C32(0x57230006),
+	  SPH_C32(0xb79bc000), SPH_C32(0x50880000), SPH_C32(0x7ffe0000),
+	  SPH_C32(0x56bd56bf), SPH_C32(0x4454e495), SPH_C32(0xeedb6b00),
+	  SPH_C32(0x2064573a) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0xa1a30003), SPH_C32(0x83d80000), SPH_C32(0x748f0000),
+	  SPH_C32(0xf0c30000), SPH_C32(0x778a6d44), SPH_C32(0x4eec313b),
+	  SPH_C32(0x231ee019), SPH_C32(0xf7f1ed0b), SPH_C32(0xcdd00008),
+	  SPH_C32(0x2da24000), SPH_C32(0x95470000), SPH_C32(0xe9250000),
+	  SPH_C32(0x436e29ca), SPH_C32(0x864d5b13), SPH_C32(0xa88a27f0),
+	  SPH_C32(0x97fba96e) },
+	{ SPH_C32(0x3aa50001), SPH_C32(0xe29e8000), SPH_C32(0x56910000),
+	  SPH_C32(0xedb70000), SPH_C32(0x41fb3063), SPH_C32(0x7ea56da9),
+	  SPH_C32(0xd20dd6be), SPH_C32(0x09ed3174), SPH_C32(0xb819000b),
+	  SPH_C32(0x23b28000), SPH_C32(0x44670000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xc8aa06f4), SPH_C32(0x0115ec44), SPH_C32(0x13a251ed),
+	  SPH_C32(0x974c8745) },
+	{ SPH_C32(0x4f6c0002), SPH_C32(0xec8e4000), SPH_C32(0x87b10000),
+	  SPH_C32(0x575d0000), SPH_C32(0xca3f1f5d), SPH_C32(0xf9fddafe),
+	  SPH_C32(0x6925a0a3), SPH_C32(0x095a1f5f), SPH_C32(0x56d6000a),
+	  SPH_C32(0x4ce4c000), SPH_C32(0xb7590000), SPH_C32(0xf4510000),
+	  SPH_C32(0x751f74ed), SPH_C32(0xb6040781), SPH_C32(0x59991157),
+	  SPH_C32(0x69e77511) },
+	{ SPH_C32(0x22ea0005), SPH_C32(0xb98b0000), SPH_C32(0x81a80000),
+	  SPH_C32(0xc5140000), SPH_C32(0xdd797981), SPH_C32(0xc30c53c2),
+	  SPH_C32(0x55f31d1d), SPH_C32(0x20d37911), SPH_C32(0x85600008),
+	  SPH_C32(0x33c38000), SPH_C32(0x7f850000), SPH_C32(0xd8600000),
+	  SPH_C32(0xc450362e), SPH_C32(0xda961e25), SPH_C32(0xcedc20c5),
+	  SPH_C32(0xc5de37b2) },
+	{ SPH_C32(0x57230006), SPH_C32(0xb79bc000), SPH_C32(0x50880000),
+	  SPH_C32(0x7ffe0000), SPH_C32(0x56bd56bf), SPH_C32(0x4454e495),
+	  SPH_C32(0xeedb6b00), SPH_C32(0x2064573a), SPH_C32(0x6baf0009),
+	  SPH_C32(0x5c95c000), SPH_C32(0x8cbb0000), SPH_C32(0x7ffe0000),
+	  SPH_C32(0x79e54437), SPH_C32(0x6d87f5e0), SPH_C32(0x84e7607f),
+	  SPH_C32(0x3b75c5e6) },
+	{ SPH_C32(0xcc250004), SPH_C32(0xd6dd4000), SPH_C32(0x72960000),
+	  SPH_C32(0x628a0000), SPH_C32(0x60cc0b98), SPH_C32(0x741db807),
+	  SPH_C32(0x1fc85da7), SPH_C32(0xde788b45), SPH_C32(0x1e66000a),
+	  SPH_C32(0x52850000), SPH_C32(0x5d9b0000), SPH_C32(0xc5140000),
+	  SPH_C32(0xf2216b09), SPH_C32(0xeadf42b7), SPH_C32(0x3fcf1662),
+	  SPH_C32(0x3bc2ebcd) },
+	{ SPH_C32(0xb9ec0007), SPH_C32(0xd8cd8000), SPH_C32(0xa3b60000),
+	  SPH_C32(0xd8600000), SPH_C32(0xeb0824a6), SPH_C32(0xf3450f50),
+	  SPH_C32(0xa4e02bba), SPH_C32(0xdecfa56e), SPH_C32(0xf0a9000b),
+	  SPH_C32(0x3dd34000), SPH_C32(0xaea50000), SPH_C32(0x628a0000),
+	  SPH_C32(0x4f941910), SPH_C32(0x5dcea972), SPH_C32(0x75f456d8),
+	  SPH_C32(0xc5691999) },
+	{ SPH_C32(0x72150001), SPH_C32(0xfcff4000), SPH_C32(0xbc530000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xc6c52f87), SPH_C32(0x227e289f),
+	  SPH_C32(0xb45bd18b), SPH_C32(0x5bc8afa8), SPH_C32(0x73e0000d),
+	  SPH_C32(0x07804000), SPH_C32(0x5b820000), SPH_C32(0x575d0000),
+	  SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b), SPH_C32(0x0319abdc),
+	  SPH_C32(0x124b8d83) },
+	{ SPH_C32(0x07dc0002), SPH_C32(0xf2ef8000), SPH_C32(0x6d730000),
+	  SPH_C32(0x66180000), SPH_C32(0x4d0100b9), SPH_C32(0xa5269fc8),
+	  SPH_C32(0x0f73a796), SPH_C32(0x5b7f8183), SPH_C32(0x9d2f000c),
+	  SPH_C32(0x68d60000), SPH_C32(0xa8bc0000), SPH_C32(0xf0c30000),
+	  SPH_C32(0x58d27fcc), SPH_C32(0x673f204e), SPH_C32(0x4922eb66),
+	  SPH_C32(0xece07fd7) },
+	{ SPH_C32(0x9cda0000), SPH_C32(0x93a90000), SPH_C32(0x4f6d0000),
+	  SPH_C32(0x7b6c0000), SPH_C32(0x7b705d9e), SPH_C32(0x956fc35a),
+	  SPH_C32(0xfe609131), SPH_C32(0xa5635dfc), SPH_C32(0xe8e6000f),
+	  SPH_C32(0x66c6c000), SPH_C32(0x799c0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xd31650f2), SPH_C32(0xe0679719), SPH_C32(0xf20a9d7b),
+	  SPH_C32(0xec5751fc) },
+	{ SPH_C32(0xe9130003), SPH_C32(0x9db9c000), SPH_C32(0x9e4d0000),
+	  SPH_C32(0xc1860000), SPH_C32(0xf0b472a0), SPH_C32(0x1237740d),
+	  SPH_C32(0x4548e72c), SPH_C32(0xa5d473d7), SPH_C32(0x0629000e),
+	  SPH_C32(0x09908000), SPH_C32(0x8aa20000), SPH_C32(0xedb70000),
+	  SPH_C32(0x6ea322eb), SPH_C32(0x57767cdc), SPH_C32(0xb831ddc1),
+	  SPH_C32(0x12fca3a8) },
+	{ SPH_C32(0x84950004), SPH_C32(0xc8bc8000), SPH_C32(0x98540000),
+	  SPH_C32(0x53cf0000), SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31),
+	  SPH_C32(0x799e5a92), SPH_C32(0x8c5d1599), SPH_C32(0xd59f000c),
+	  SPH_C32(0x76b7c000), SPH_C32(0x427e0000), SPH_C32(0xc1860000),
+	  SPH_C32(0xdfec6028), SPH_C32(0x3be46578), SPH_C32(0x2f74ec53),
+	  SPH_C32(0xbec5e10b) },
+	{ SPH_C32(0xf15c0007), SPH_C32(0xc6ac4000), SPH_C32(0x49740000),
+	  SPH_C32(0xe9250000), SPH_C32(0x6c363b42), SPH_C32(0xaf9e4a66),
+	  SPH_C32(0xc2b62c8f), SPH_C32(0x8cea3bb2), SPH_C32(0x3b50000d),
+	  SPH_C32(0x19e18000), SPH_C32(0xb1400000), SPH_C32(0x66180000),
+	  SPH_C32(0x62591231), SPH_C32(0x8cf58ebd), SPH_C32(0x654face9),
+	  SPH_C32(0x406e135f) },
+	{ SPH_C32(0x6a5a0005), SPH_C32(0xa7eac000), SPH_C32(0x6b6a0000),
+	  SPH_C32(0xf4510000), SPH_C32(0x5a476665), SPH_C32(0x9fd716f4),
+	  SPH_C32(0x33a51a28), SPH_C32(0x72f6e7cd), SPH_C32(0x4e99000e),
+	  SPH_C32(0x17f14000), SPH_C32(0x60600000), SPH_C32(0xdcf20000),
+	  SPH_C32(0xe99d3d0f), SPH_C32(0x0bad39ea), SPH_C32(0xde67daf4),
+	  SPH_C32(0x40d93d74) },
+	{ SPH_C32(0x1f930006), SPH_C32(0xa9fa0000), SPH_C32(0xba4a0000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xd183495b), SPH_C32(0x188fa1a3),
+	  SPH_C32(0x888d6c35), SPH_C32(0x7241c9e6), SPH_C32(0xa056000f),
+	  SPH_C32(0x78a70000), SPH_C32(0x935e0000), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x54284f16), SPH_C32(0xbcbcd22f), SPH_C32(0x945c9a4e),
+	  SPH_C32(0xbe72cf20) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0x56d6000a), SPH_C32(0x4ce4c000), SPH_C32(0xb7590000),
+	  SPH_C32(0xf4510000), SPH_C32(0x751f74ed), SPH_C32(0xb6040781),
+	  SPH_C32(0x59991157), SPH_C32(0x69e77511), SPH_C32(0x19ba0008),
+	  SPH_C32(0xa06a8000), SPH_C32(0x30e80000), SPH_C32(0xa30c0000),
+	  SPH_C32(0xbf206bb0), SPH_C32(0x4ff9dd7f), SPH_C32(0x30bcb1f4),
+	  SPH_C32(0x60bd6a4e) },
+	{ SPH_C32(0xcdd00008), SPH_C32(0x2da24000), SPH_C32(0x95470000),
+	  SPH_C32(0xe9250000), SPH_C32(0x436e29ca), SPH_C32(0x864d5b13),
+	  SPH_C32(0xa88a27f0), SPH_C32(0x97fba96e), SPH_C32(0x6c73000b),
+	  SPH_C32(0xae7a4000), SPH_C32(0xe1c80000), SPH_C32(0x19e60000),
+	  SPH_C32(0x34e4448e), SPH_C32(0xc8a16a28), SPH_C32(0x8b94c7e9),
+	  SPH_C32(0x600a4465) },
+	{ SPH_C32(0xb819000b), SPH_C32(0x23b28000), SPH_C32(0x44670000),
+	  SPH_C32(0x53cf0000), SPH_C32(0xc8aa06f4), SPH_C32(0x0115ec44),
+	  SPH_C32(0x13a251ed), SPH_C32(0x974c8745), SPH_C32(0x82bc000a),
+	  SPH_C32(0xc12c0000), SPH_C32(0x12f60000), SPH_C32(0xbe780000),
+	  SPH_C32(0x89513697), SPH_C32(0x7fb081ed), SPH_C32(0xc1af8753),
+	  SPH_C32(0x9ea1b631) },
+	{ SPH_C32(0xd59f000c), SPH_C32(0x76b7c000), SPH_C32(0x427e0000),
+	  SPH_C32(0xc1860000), SPH_C32(0xdfec6028), SPH_C32(0x3be46578),
+	  SPH_C32(0x2f74ec53), SPH_C32(0xbec5e10b), SPH_C32(0x510a0008),
+	  SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000), SPH_C32(0x92490000),
+	  SPH_C32(0x381e7454), SPH_C32(0x13229849), SPH_C32(0x56eab6c1),
+	  SPH_C32(0x3298f492) },
+	{ SPH_C32(0xa056000f), SPH_C32(0x78a70000), SPH_C32(0x935e0000),
+	  SPH_C32(0x7b6c0000), SPH_C32(0x54284f16), SPH_C32(0xbcbcd22f),
+	  SPH_C32(0x945c9a4e), SPH_C32(0xbe72cf20), SPH_C32(0xbfc50009),
+	  SPH_C32(0xd15d0000), SPH_C32(0x29140000), SPH_C32(0x35d70000),
+	  SPH_C32(0x85ab064d), SPH_C32(0xa433738c), SPH_C32(0x1cd1f67b),
+	  SPH_C32(0xcc3306c6) },
+	{ SPH_C32(0x3b50000d), SPH_C32(0x19e18000), SPH_C32(0xb1400000),
+	  SPH_C32(0x66180000), SPH_C32(0x62591231), SPH_C32(0x8cf58ebd),
+	  SPH_C32(0x654face9), SPH_C32(0x406e135f), SPH_C32(0xca0c000a),
+	  SPH_C32(0xdf4dc000), SPH_C32(0xf8340000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x0e6f2973), SPH_C32(0x236bc4db), SPH_C32(0xa7f98066),
+	  SPH_C32(0xcc8428ed) },
+	{ SPH_C32(0x4e99000e), SPH_C32(0x17f14000), SPH_C32(0x60600000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xe99d3d0f), SPH_C32(0x0bad39ea),
+	  SPH_C32(0xde67daf4), SPH_C32(0x40d93d74), SPH_C32(0x24c3000b),
+	  SPH_C32(0xb01b8000), SPH_C32(0x0b0a0000), SPH_C32(0x28a30000),
+	  SPH_C32(0xb3da5b6a), SPH_C32(0x947a2f1e), SPH_C32(0xedc2c0dc),
+	  SPH_C32(0x322fdab9) },
+	{ SPH_C32(0x85600008), SPH_C32(0x33c38000), SPH_C32(0x7f850000),
+	  SPH_C32(0xd8600000), SPH_C32(0xc450362e), SPH_C32(0xda961e25),
+	  SPH_C32(0xcedc20c5), SPH_C32(0xc5de37b2), SPH_C32(0xa78a000d),
+	  SPH_C32(0x8a488000), SPH_C32(0xfe2d0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x19294faf), SPH_C32(0x199a4de7), SPH_C32(0x9b2f3dd8),
+	  SPH_C32(0xe50d4ea3) },
+	{ SPH_C32(0xf0a9000b), SPH_C32(0x3dd34000), SPH_C32(0xaea50000),
+	  SPH_C32(0x628a0000), SPH_C32(0x4f941910), SPH_C32(0x5dcea972),
+	  SPH_C32(0x75f456d8), SPH_C32(0xc5691999), SPH_C32(0x4945000c),
+	  SPH_C32(0xe51ec000), SPH_C32(0x0d130000), SPH_C32(0xbaea0000),
+	  SPH_C32(0xa49c3db6), SPH_C32(0xae8ba622), SPH_C32(0xd1147d62),
+	  SPH_C32(0x1ba6bcf7) },
+	{ SPH_C32(0x6baf0009), SPH_C32(0x5c95c000), SPH_C32(0x8cbb0000),
+	  SPH_C32(0x7ffe0000), SPH_C32(0x79e54437), SPH_C32(0x6d87f5e0),
+	  SPH_C32(0x84e7607f), SPH_C32(0x3b75c5e6), SPH_C32(0x3c8c000f),
+	  SPH_C32(0xeb0e0000), SPH_C32(0xdc330000), SPH_C32(0x00000000),
+	  SPH_C32(0x2f581288), SPH_C32(0x29d31175), SPH_C32(0x6a3c0b7f),
+	  SPH_C32(0x1b1192dc) },
+	{ SPH_C32(0x1e66000a), SPH_C32(0x52850000), SPH_C32(0x5d9b0000),
+	  SPH_C32(0xc5140000), SPH_C32(0xf2216b09), SPH_C32(0xeadf42b7),
+	  SPH_C32(0x3fcf1662), SPH_C32(0x3bc2ebcd), SPH_C32(0xd243000e),
+	  SPH_C32(0x84584000), SPH_C32(0x2f0d0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0x92ed6091), SPH_C32(0x9ec2fab0), SPH_C32(0x20074bc5),
+	  SPH_C32(0xe5ba6088) },
+	{ SPH_C32(0x73e0000d), SPH_C32(0x07804000), SPH_C32(0x5b820000),
+	  SPH_C32(0x575d0000), SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b),
+	  SPH_C32(0x0319abdc), SPH_C32(0x124b8d83), SPH_C32(0x01f5000c),
+	  SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x23a22252), SPH_C32(0xf250e314), SPH_C32(0xb7427a57),
+	  SPH_C32(0x4983222b) },
+	{ SPH_C32(0x0629000e), SPH_C32(0x09908000), SPH_C32(0x8aa20000),
+	  SPH_C32(0xedb70000), SPH_C32(0x6ea322eb), SPH_C32(0x57767cdc),
+	  SPH_C32(0xb831ddc1), SPH_C32(0x12fca3a8), SPH_C32(0xef3a000d),
+	  SPH_C32(0x94294000), SPH_C32(0x14ef0000), SPH_C32(0x2c310000),
+	  SPH_C32(0x9e17504b), SPH_C32(0x454108d1), SPH_C32(0xfd793aed),
+	  SPH_C32(0xb728d07f) },
+	{ SPH_C32(0x9d2f000c), SPH_C32(0x68d60000), SPH_C32(0xa8bc0000),
+	  SPH_C32(0xf0c30000), SPH_C32(0x58d27fcc), SPH_C32(0x673f204e),
+	  SPH_C32(0x4922eb66), SPH_C32(0xece07fd7), SPH_C32(0x9af3000e),
+	  SPH_C32(0x9a398000), SPH_C32(0xc5cf0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x15d37f75), SPH_C32(0xc219bf86), SPH_C32(0x46514cf0),
+	  SPH_C32(0xb79ffe54) },
+	{ SPH_C32(0xe8e6000f), SPH_C32(0x66c6c000), SPH_C32(0x799c0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xd31650f2), SPH_C32(0xe0679719),
+	  SPH_C32(0xf20a9d7b), SPH_C32(0xec5751fc), SPH_C32(0x743c000f),
+	  SPH_C32(0xf56fc000), SPH_C32(0x36f10000), SPH_C32(0x31450000),
+	  SPH_C32(0xa8660d6c), SPH_C32(0x75085443), SPH_C32(0x0c6a0c4a),
+	  SPH_C32(0x49340c00) }
+};
+
+static const sph_u32 T512_18[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0xb44f0000), SPH_C32(0x5f940900), SPH_C32(0x75e30000),
+	  SPH_C32(0xa95b0000), SPH_C32(0x112b51b6), SPH_C32(0xbbcad451),
+	  SPH_C32(0xf3875d6d), SPH_C32(0x718aebae), SPH_C32(0x03070000),
+	  SPH_C32(0x149c1400), SPH_C32(0xeb210000), SPH_C32(0x39990000),
+	  SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3), SPH_C32(0x3e4813b3),
+	  SPH_C32(0xbbd1e07e) },
+	{ SPH_C32(0x461f0000), SPH_C32(0xb1290300), SPH_C32(0x124b0000),
+	  SPH_C32(0x02d10000), SPH_C32(0xabb01976), SPH_C32(0xb19c0925),
+	  SPH_C32(0x28f4b503), SPH_C32(0x64e214a1), SPH_C32(0x0f750000),
+	  SPH_C32(0x5d791b00), SPH_C32(0xa9580000), SPH_C32(0x65730000),
+	  SPH_C32(0x86d63d40), SPH_C32(0x870db9e7), SPH_C32(0xabeb58c8),
+	  SPH_C32(0x0f9ae0ee) },
+	{ SPH_C32(0x4a6d0000), SPH_C32(0xf8cc0c00), SPH_C32(0x50320000),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x981a296c), SPH_C32(0xa41e2c31),
+	  SPH_C32(0xbd57fe78), SPH_C32(0xd0a91431), SPH_C32(0xf1570000),
+	  SPH_C32(0xfa211e00), SPH_C32(0x8c890000), SPH_C32(0x92130000),
+	  SPH_C32(0x0fe7459a), SPH_C32(0x98d94187), SPH_C32(0xe53bfbdd),
+	  SPH_C32(0xaeb91f71) },
+	{ SPH_C32(0xfd250000), SPH_C32(0xb3c41100), SPH_C32(0xcef00000),
+	  SPH_C32(0xcef90000), SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493),
+	  SPH_C32(0x7098b0a6), SPH_C32(0x1af21fe1), SPH_C32(0x45180000),
+	  SPH_C32(0xa5b51700), SPH_C32(0xf96a0000), SPH_C32(0x3b480000),
+	  SPH_C32(0x1ecc142c), SPH_C32(0x231395d6), SPH_C32(0x16bca6b0),
+	  SPH_C32(0xdf33f4df) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfa211e00), SPH_C32(0x8c890000),
+	  SPH_C32(0x92130000), SPH_C32(0x0fe7459a), SPH_C32(0x98d94187),
+	  SPH_C32(0xe53bfbdd), SPH_C32(0xaeb91f71), SPH_C32(0xbb3a0000),
+	  SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000), SPH_C32(0xcc280000),
+	  SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6), SPH_C32(0x586c05a5),
+	  SPH_C32(0x7e100b40) },
+	{ SPH_C32(0x03070000), SPH_C32(0x149c1400), SPH_C32(0xeb210000),
+	  SPH_C32(0x39990000), SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3),
+	  SPH_C32(0x3e4813b3), SPH_C32(0xbbd1e07e), SPH_C32(0xb7480000),
+	  SPH_C32(0x4b081d00), SPH_C32(0x9ec20000), SPH_C32(0x90c20000),
+	  SPH_C32(0xa4575cec), SPH_C32(0x294548a2), SPH_C32(0xcdcf4ede),
+	  SPH_C32(0xca5b0bd0) },
+	{ SPH_C32(0x0f750000), SPH_C32(0x5d791b00), SPH_C32(0xa9580000),
+	  SPH_C32(0x65730000), SPH_C32(0x86d63d40), SPH_C32(0x870db9e7),
+	  SPH_C32(0xabeb58c8), SPH_C32(0x0f9ae0ee), SPH_C32(0x496a0000),
+	  SPH_C32(0xec501800), SPH_C32(0xbb130000), SPH_C32(0x67a20000),
+	  SPH_C32(0x2d662436), SPH_C32(0x3691b0c2), SPH_C32(0x831fedcb),
+	  SPH_C32(0x6b78f44f) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0x79d60000), SPH_C32(0x8b6e2800), SPH_C32(0xd6dd0000),
+	  SPH_C32(0xcc1f0000), SPH_C32(0xc8d267fa), SPH_C32(0x5c4c2eba),
+	  SPH_C32(0x82c48ff8), SPH_C32(0x1a9466ee), SPH_C32(0x2f440000),
+	  SPH_C32(0xbce40600), SPH_C32(0xbb3d0000), SPH_C32(0x01f40000),
+	  SPH_C32(0x8a333dfd), SPH_C32(0xd0a40492), SPH_C32(0xfa93b802),
+	  SPH_C32(0x245cc3b4) },
+	{ SPH_C32(0x8b860000), SPH_C32(0x65d32200), SPH_C32(0xb1750000),
+	  SPH_C32(0x67950000), SPH_C32(0x72492f3a), SPH_C32(0x561af3ce),
+	  SPH_C32(0x59b76796), SPH_C32(0x0ffc99e1), SPH_C32(0x23360000),
+	  SPH_C32(0xf5010900), SPH_C32(0xf9440000), SPH_C32(0x5d1e0000),
+	  SPH_C32(0xb9990de7), SPH_C32(0xc5262186), SPH_C32(0x6f30f379),
+	  SPH_C32(0x9017c324) },
+	{ SPH_C32(0x87f40000), SPH_C32(0x2c362d00), SPH_C32(0xf30c0000),
+	  SPH_C32(0x3b7f0000), SPH_C32(0x41e31f20), SPH_C32(0x4398d6da),
+	  SPH_C32(0xcc142ced), SPH_C32(0xbbb79971), SPH_C32(0xdd140000),
+	  SPH_C32(0x52590c00), SPH_C32(0xdc950000), SPH_C32(0xaa7e0000),
+	  SPH_C32(0x30a8753d), SPH_C32(0xdaf2d9e6), SPH_C32(0x21e0506c),
+	  SPH_C32(0x31343cbb) },
+	{ SPH_C32(0x30bc0000), SPH_C32(0x673e3000), SPH_C32(0x6dce0000),
+	  SPH_C32(0xabbd0000), SPH_C32(0xe5b443cc), SPH_C32(0x6add9e78),
+	  SPH_C32(0x01db6233), SPH_C32(0x71ec92a1), SPH_C32(0x695b0000),
+	  SPH_C32(0x0dcd0500), SPH_C32(0xa9760000), SPH_C32(0x03250000),
+	  SPH_C32(0x2183248b), SPH_C32(0x61380db7), SPH_C32(0xd2670d01),
+	  SPH_C32(0x40bed715) },
+	{ SPH_C32(0x3cce0000), SPH_C32(0x2edb3f00), SPH_C32(0x2fb70000),
+	  SPH_C32(0xf7570000), SPH_C32(0xd61e73d6), SPH_C32(0x7f5fbb6c),
+	  SPH_C32(0x94782948), SPH_C32(0xc5a79231), SPH_C32(0x97790000),
+	  SPH_C32(0xaa950000), SPH_C32(0x8ca70000), SPH_C32(0xf4450000),
+	  SPH_C32(0xa8b25c51), SPH_C32(0x7eecf5d7), SPH_C32(0x9cb7ae14),
+	  SPH_C32(0xe19d288a) },
+	{ SPH_C32(0xce9e0000), SPH_C32(0xc0663500), SPH_C32(0x481f0000),
+	  SPH_C32(0x5cdd0000), SPH_C32(0x6c853b16), SPH_C32(0x75096618),
+	  SPH_C32(0x4f0bc126), SPH_C32(0xd0cf6d3e), SPH_C32(0x9b0b0000),
+	  SPH_C32(0xe3700f00), SPH_C32(0xcede0000), SPH_C32(0xa8af0000),
+	  SPH_C32(0x9b186c4b), SPH_C32(0x6b6ed0c3), SPH_C32(0x0914e56f),
+	  SPH_C32(0x55d6281a) },
+	{ SPH_C32(0xc2ec0000), SPH_C32(0x89833a00), SPH_C32(0x0a660000),
+	  SPH_C32(0x00370000), SPH_C32(0x5f2f0b0c), SPH_C32(0x608b430c),
+	  SPH_C32(0xdaa88a5d), SPH_C32(0x64846dae), SPH_C32(0x65290000),
+	  SPH_C32(0x44280a00), SPH_C32(0xeb0f0000), SPH_C32(0x5fcf0000),
+	  SPH_C32(0x12291491), SPH_C32(0x74ba28a3), SPH_C32(0x47c4467a),
+	  SPH_C32(0xf4f5d785) },
+	{ SPH_C32(0xcd990000), SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000),
+	  SPH_C32(0x65440000), SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb),
+	  SPH_C32(0x7143d295), SPH_C32(0x6b1e8d40), SPH_C32(0x2c430000),
+	  SPH_C32(0xa8781200), SPH_C32(0x501c0000), SPH_C32(0x386d0000),
+	  SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861), SPH_C32(0xc4dbabb1),
+	  SPH_C32(0x9f8d23ca) },
+	{ SPH_C32(0xc1eb0000), SPH_C32(0x9d1f2e00), SPH_C32(0xe1470000),
+	  SPH_C32(0x39ae0000), SPH_C32(0xea530656), SPH_C32(0xf204dfff),
+	  SPH_C32(0xe4e099ee), SPH_C32(0xdf558dd0), SPH_C32(0xd2610000),
+	  SPH_C32(0x0f201700), SPH_C32(0x75cd0000), SPH_C32(0xcf0d0000),
+	  SPH_C32(0xb67e487d), SPH_C32(0x5dff6001), SPH_C32(0x8a0b08a4),
+	  SPH_C32(0x3eaedc55) },
+	{ SPH_C32(0x33bb0000), SPH_C32(0x73a22400), SPH_C32(0x86ef0000),
+	  SPH_C32(0x92240000), SPH_C32(0x50c84e96), SPH_C32(0xf852028b),
+	  SPH_C32(0x3f937180), SPH_C32(0xca3d72df), SPH_C32(0xde130000),
+	  SPH_C32(0x46c51800), SPH_C32(0x37b40000), SPH_C32(0x93e70000),
+	  SPH_C32(0x85d47867), SPH_C32(0x487d4515), SPH_C32(0x1fa843df),
+	  SPH_C32(0x8ae5dcc5) },
+	{ SPH_C32(0x3fc90000), SPH_C32(0x3a472b00), SPH_C32(0xc4960000),
+	  SPH_C32(0xcece0000), SPH_C32(0x63627e8c), SPH_C32(0xedd0279f),
+	  SPH_C32(0xaa303afb), SPH_C32(0x7e76724f), SPH_C32(0x20310000),
+	  SPH_C32(0xe19d1d00), SPH_C32(0x12650000), SPH_C32(0x64870000),
+	  SPH_C32(0x0ce500bd), SPH_C32(0x57a9bd75), SPH_C32(0x5178e0ca),
+	  SPH_C32(0x2bc6235a) },
+	{ SPH_C32(0x88810000), SPH_C32(0x714f3600), SPH_C32(0x5a540000),
+	  SPH_C32(0x5e0c0000), SPH_C32(0xc7352260), SPH_C32(0xc4956f3d),
+	  SPH_C32(0x67ff7425), SPH_C32(0xb42d799f), SPH_C32(0x947e0000),
+	  SPH_C32(0xbe091400), SPH_C32(0x67860000), SPH_C32(0xcddc0000),
+	  SPH_C32(0x1dce510b), SPH_C32(0xec636924), SPH_C32(0xa2ffbda7),
+	  SPH_C32(0x5a4cc8f4) },
+	{ SPH_C32(0x84f30000), SPH_C32(0x38aa3900), SPH_C32(0x182d0000),
+	  SPH_C32(0x02e60000), SPH_C32(0xf49f127a), SPH_C32(0xd1174a29),
+	  SPH_C32(0xf25c3f5e), SPH_C32(0x0066790f), SPH_C32(0x6a5c0000),
+	  SPH_C32(0x19511100), SPH_C32(0x42570000), SPH_C32(0x3abc0000),
+	  SPH_C32(0x94ff29d1), SPH_C32(0xf3b79144), SPH_C32(0xec2f1eb2),
+	  SPH_C32(0xfb6f376b) },
+	{ SPH_C32(0x76a30000), SPH_C32(0xd6173300), SPH_C32(0x7f850000),
+	  SPH_C32(0xa96c0000), SPH_C32(0x4e045aba), SPH_C32(0xdb41975d),
+	  SPH_C32(0x292fd730), SPH_C32(0x150e8600), SPH_C32(0x662e0000),
+	  SPH_C32(0x50b41e00), SPH_C32(0x002e0000), SPH_C32(0x66560000),
+	  SPH_C32(0xa75519cb), SPH_C32(0xe635b450), SPH_C32(0x798c55c9),
+	  SPH_C32(0x4f2437fb) },
+	{ SPH_C32(0x7ad10000), SPH_C32(0x9ff23c00), SPH_C32(0x3dfc0000),
+	  SPH_C32(0xf5860000), SPH_C32(0x7dae6aa0), SPH_C32(0xcec3b249),
+	  SPH_C32(0xbc8c9c4b), SPH_C32(0xa1458690), SPH_C32(0x980c0000),
+	  SPH_C32(0xf7ec1b00), SPH_C32(0x25ff0000), SPH_C32(0x91360000),
+	  SPH_C32(0x2e646111), SPH_C32(0xf9e14c30), SPH_C32(0x375cf6dc),
+	  SPH_C32(0xee07c864) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0xdd140000), SPH_C32(0x52590c00), SPH_C32(0xdc950000),
+	  SPH_C32(0xaa7e0000), SPH_C32(0x30a8753d), SPH_C32(0xdaf2d9e6),
+	  SPH_C32(0x21e0506c), SPH_C32(0x31343cbb), SPH_C32(0x5ae00000),
+	  SPH_C32(0x7e6f2100), SPH_C32(0x2f990000), SPH_C32(0x91010000),
+	  SPH_C32(0x714b6a1d), SPH_C32(0x996a0f3c), SPH_C32(0xedf47c81),
+	  SPH_C32(0x8a83a5ca) },
+	{ SPH_C32(0x2f440000), SPH_C32(0xbce40600), SPH_C32(0xbb3d0000),
+	  SPH_C32(0x01f40000), SPH_C32(0x8a333dfd), SPH_C32(0xd0a40492),
+	  SPH_C32(0xfa93b802), SPH_C32(0x245cc3b4), SPH_C32(0x56920000),
+	  SPH_C32(0x378a2e00), SPH_C32(0x6de00000), SPH_C32(0xcdeb0000),
+	  SPH_C32(0x42e15a07), SPH_C32(0x8ce82a28), SPH_C32(0x785737fa),
+	  SPH_C32(0x3ec8a55a) },
+	{ SPH_C32(0x23360000), SPH_C32(0xf5010900), SPH_C32(0xf9440000),
+	  SPH_C32(0x5d1e0000), SPH_C32(0xb9990de7), SPH_C32(0xc5262186),
+	  SPH_C32(0x6f30f379), SPH_C32(0x9017c324), SPH_C32(0xa8b00000),
+	  SPH_C32(0x90d22b00), SPH_C32(0x48310000), SPH_C32(0x3a8b0000),
+	  SPH_C32(0xcbd022dd), SPH_C32(0x933cd248), SPH_C32(0x368794ef),
+	  SPH_C32(0x9feb5ac5) },
+	{ SPH_C32(0x947e0000), SPH_C32(0xbe091400), SPH_C32(0x67860000),
+	  SPH_C32(0xcddc0000), SPH_C32(0x1dce510b), SPH_C32(0xec636924),
+	  SPH_C32(0xa2ffbda7), SPH_C32(0x5a4cc8f4), SPH_C32(0x1cff0000),
+	  SPH_C32(0xcf462200), SPH_C32(0x3dd20000), SPH_C32(0x93d00000),
+	  SPH_C32(0xdafb736b), SPH_C32(0x28f60619), SPH_C32(0xc500c982),
+	  SPH_C32(0xee61b16b) },
+	{ SPH_C32(0x980c0000), SPH_C32(0xf7ec1b00), SPH_C32(0x25ff0000),
+	  SPH_C32(0x91360000), SPH_C32(0x2e646111), SPH_C32(0xf9e14c30),
+	  SPH_C32(0x375cf6dc), SPH_C32(0xee07c864), SPH_C32(0xe2dd0000),
+	  SPH_C32(0x681e2700), SPH_C32(0x18030000), SPH_C32(0x64b00000),
+	  SPH_C32(0x53ca0bb1), SPH_C32(0x3722fe79), SPH_C32(0x8bd06a97),
+	  SPH_C32(0x4f424ef4) },
+	{ SPH_C32(0x6a5c0000), SPH_C32(0x19511100), SPH_C32(0x42570000),
+	  SPH_C32(0x3abc0000), SPH_C32(0x94ff29d1), SPH_C32(0xf3b79144),
+	  SPH_C32(0xec2f1eb2), SPH_C32(0xfb6f376b), SPH_C32(0xeeaf0000),
+	  SPH_C32(0x21fb2800), SPH_C32(0x5a7a0000), SPH_C32(0x385a0000),
+	  SPH_C32(0x60603bab), SPH_C32(0x22a0db6d), SPH_C32(0x1e7321ec),
+	  SPH_C32(0xfb094e64) },
+	{ SPH_C32(0x662e0000), SPH_C32(0x50b41e00), SPH_C32(0x002e0000),
+	  SPH_C32(0x66560000), SPH_C32(0xa75519cb), SPH_C32(0xe635b450),
+	  SPH_C32(0x798c55c9), SPH_C32(0x4f2437fb), SPH_C32(0x108d0000),
+	  SPH_C32(0x86a32d00), SPH_C32(0x7fab0000), SPH_C32(0xcf3a0000),
+	  SPH_C32(0xe9514371), SPH_C32(0x3d74230d), SPH_C32(0x50a382f9),
+	  SPH_C32(0x5a2ab1fb) },
+	{ SPH_C32(0x695b0000), SPH_C32(0x0dcd0500), SPH_C32(0xa9760000),
+	  SPH_C32(0x03250000), SPH_C32(0x2183248b), SPH_C32(0x61380db7),
+	  SPH_C32(0xd2670d01), SPH_C32(0x40bed715), SPH_C32(0x59e70000),
+	  SPH_C32(0x6af33500), SPH_C32(0xc4b80000), SPH_C32(0xa8980000),
+	  SPH_C32(0xc4376747), SPH_C32(0x0be593cf), SPH_C32(0xd3bc6f32),
+	  SPH_C32(0x315245b4) },
+	{ SPH_C32(0x65290000), SPH_C32(0x44280a00), SPH_C32(0xeb0f0000),
+	  SPH_C32(0x5fcf0000), SPH_C32(0x12291491), SPH_C32(0x74ba28a3),
+	  SPH_C32(0x47c4467a), SPH_C32(0xf4f5d785), SPH_C32(0xa7c50000),
+	  SPH_C32(0xcdab3000), SPH_C32(0xe1690000), SPH_C32(0x5ff80000),
+	  SPH_C32(0x4d061f9d), SPH_C32(0x14316baf), SPH_C32(0x9d6ccc27),
+	  SPH_C32(0x9071ba2b) },
+	{ SPH_C32(0x97790000), SPH_C32(0xaa950000), SPH_C32(0x8ca70000),
+	  SPH_C32(0xf4450000), SPH_C32(0xa8b25c51), SPH_C32(0x7eecf5d7),
+	  SPH_C32(0x9cb7ae14), SPH_C32(0xe19d288a), SPH_C32(0xabb70000),
+	  SPH_C32(0x844e3f00), SPH_C32(0xa3100000), SPH_C32(0x03120000),
+	  SPH_C32(0x7eac2f87), SPH_C32(0x01b34ebb), SPH_C32(0x08cf875c),
+	  SPH_C32(0x243ababb) },
+	{ SPH_C32(0x9b0b0000), SPH_C32(0xe3700f00), SPH_C32(0xcede0000),
+	  SPH_C32(0xa8af0000), SPH_C32(0x9b186c4b), SPH_C32(0x6b6ed0c3),
+	  SPH_C32(0x0914e56f), SPH_C32(0x55d6281a), SPH_C32(0x55950000),
+	  SPH_C32(0x23163a00), SPH_C32(0x86c10000), SPH_C32(0xf4720000),
+	  SPH_C32(0xf79d575d), SPH_C32(0x1e67b6db), SPH_C32(0x461f2449),
+	  SPH_C32(0x85194524) },
+	{ SPH_C32(0x2c430000), SPH_C32(0xa8781200), SPH_C32(0x501c0000),
+	  SPH_C32(0x386d0000), SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861),
+	  SPH_C32(0xc4dbabb1), SPH_C32(0x9f8d23ca), SPH_C32(0xe1da0000),
+	  SPH_C32(0x7c823300), SPH_C32(0xf3220000), SPH_C32(0x5d290000),
+	  SPH_C32(0xe6b606eb), SPH_C32(0xa5ad628a), SPH_C32(0xb5987924),
+	  SPH_C32(0xf493ae8a) },
+	{ SPH_C32(0x20310000), SPH_C32(0xe19d1d00), SPH_C32(0x12650000),
+	  SPH_C32(0x64870000), SPH_C32(0x0ce500bd), SPH_C32(0x57a9bd75),
+	  SPH_C32(0x5178e0ca), SPH_C32(0x2bc6235a), SPH_C32(0x1ff80000),
+	  SPH_C32(0xdbda3600), SPH_C32(0xd6f30000), SPH_C32(0xaa490000),
+	  SPH_C32(0x6f877e31), SPH_C32(0xba799aea), SPH_C32(0xfb48da31),
+	  SPH_C32(0x55b05115) },
+	{ SPH_C32(0xd2610000), SPH_C32(0x0f201700), SPH_C32(0x75cd0000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xb67e487d), SPH_C32(0x5dff6001),
+	  SPH_C32(0x8a0b08a4), SPH_C32(0x3eaedc55), SPH_C32(0x138a0000),
+	  SPH_C32(0x923f3900), SPH_C32(0x948a0000), SPH_C32(0xf6a30000),
+	  SPH_C32(0x5c2d4e2b), SPH_C32(0xaffbbffe), SPH_C32(0x6eeb914a),
+	  SPH_C32(0xe1fb5185) },
+	{ SPH_C32(0xde130000), SPH_C32(0x46c51800), SPH_C32(0x37b40000),
+	  SPH_C32(0x93e70000), SPH_C32(0x85d47867), SPH_C32(0x487d4515),
+	  SPH_C32(0x1fa843df), SPH_C32(0x8ae5dcc5), SPH_C32(0xeda80000),
+	  SPH_C32(0x35673c00), SPH_C32(0xb15b0000), SPH_C32(0x01c30000),
+	  SPH_C32(0xd51c36f1), SPH_C32(0xb02f479e), SPH_C32(0x203b325f),
+	  SPH_C32(0x40d8ae1a) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0xa8b00000), SPH_C32(0x90d22b00), SPH_C32(0x48310000),
+	  SPH_C32(0x3a8b0000), SPH_C32(0xcbd022dd), SPH_C32(0x933cd248),
+	  SPH_C32(0x368794ef), SPH_C32(0x9feb5ac5), SPH_C32(0x8b860000),
+	  SPH_C32(0x65d32200), SPH_C32(0xb1750000), SPH_C32(0x67950000),
+	  SPH_C32(0x72492f3a), SPH_C32(0x561af3ce), SPH_C32(0x59b76796),
+	  SPH_C32(0x0ffc99e1) },
+	{ SPH_C32(0x5ae00000), SPH_C32(0x7e6f2100), SPH_C32(0x2f990000),
+	  SPH_C32(0x91010000), SPH_C32(0x714b6a1d), SPH_C32(0x996a0f3c),
+	  SPH_C32(0xedf47c81), SPH_C32(0x8a83a5ca), SPH_C32(0x87f40000),
+	  SPH_C32(0x2c362d00), SPH_C32(0xf30c0000), SPH_C32(0x3b7f0000),
+	  SPH_C32(0x41e31f20), SPH_C32(0x4398d6da), SPH_C32(0xcc142ced),
+	  SPH_C32(0xbbb79971) },
+	{ SPH_C32(0x56920000), SPH_C32(0x378a2e00), SPH_C32(0x6de00000),
+	  SPH_C32(0xcdeb0000), SPH_C32(0x42e15a07), SPH_C32(0x8ce82a28),
+	  SPH_C32(0x785737fa), SPH_C32(0x3ec8a55a), SPH_C32(0x79d60000),
+	  SPH_C32(0x8b6e2800), SPH_C32(0xd6dd0000), SPH_C32(0xcc1f0000),
+	  SPH_C32(0xc8d267fa), SPH_C32(0x5c4c2eba), SPH_C32(0x82c48ff8),
+	  SPH_C32(0x1a9466ee) },
+	{ SPH_C32(0xe1da0000), SPH_C32(0x7c823300), SPH_C32(0xf3220000),
+	  SPH_C32(0x5d290000), SPH_C32(0xe6b606eb), SPH_C32(0xa5ad628a),
+	  SPH_C32(0xb5987924), SPH_C32(0xf493ae8a), SPH_C32(0xcd990000),
+	  SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000), SPH_C32(0x65440000),
+	  SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb), SPH_C32(0x7143d295),
+	  SPH_C32(0x6b1e8d40) },
+	{ SPH_C32(0xeda80000), SPH_C32(0x35673c00), SPH_C32(0xb15b0000),
+	  SPH_C32(0x01c30000), SPH_C32(0xd51c36f1), SPH_C32(0xb02f479e),
+	  SPH_C32(0x203b325f), SPH_C32(0x40d8ae1a), SPH_C32(0x33bb0000),
+	  SPH_C32(0x73a22400), SPH_C32(0x86ef0000), SPH_C32(0x92240000),
+	  SPH_C32(0x50c84e96), SPH_C32(0xf852028b), SPH_C32(0x3f937180),
+	  SPH_C32(0xca3d72df) },
+	{ SPH_C32(0x1ff80000), SPH_C32(0xdbda3600), SPH_C32(0xd6f30000),
+	  SPH_C32(0xaa490000), SPH_C32(0x6f877e31), SPH_C32(0xba799aea),
+	  SPH_C32(0xfb48da31), SPH_C32(0x55b05115), SPH_C32(0x3fc90000),
+	  SPH_C32(0x3a472b00), SPH_C32(0xc4960000), SPH_C32(0xcece0000),
+	  SPH_C32(0x63627e8c), SPH_C32(0xedd0279f), SPH_C32(0xaa303afb),
+	  SPH_C32(0x7e76724f) },
+	{ SPH_C32(0x138a0000), SPH_C32(0x923f3900), SPH_C32(0x948a0000),
+	  SPH_C32(0xf6a30000), SPH_C32(0x5c2d4e2b), SPH_C32(0xaffbbffe),
+	  SPH_C32(0x6eeb914a), SPH_C32(0xe1fb5185), SPH_C32(0xc1eb0000),
+	  SPH_C32(0x9d1f2e00), SPH_C32(0xe1470000), SPH_C32(0x39ae0000),
+	  SPH_C32(0xea530656), SPH_C32(0xf204dfff), SPH_C32(0xe4e099ee),
+	  SPH_C32(0xdf558dd0) },
+	{ SPH_C32(0x1cff0000), SPH_C32(0xcf462200), SPH_C32(0x3dd20000),
+	  SPH_C32(0x93d00000), SPH_C32(0xdafb736b), SPH_C32(0x28f60619),
+	  SPH_C32(0xc500c982), SPH_C32(0xee61b16b), SPH_C32(0x88810000),
+	  SPH_C32(0x714f3600), SPH_C32(0x5a540000), SPH_C32(0x5e0c0000),
+	  SPH_C32(0xc7352260), SPH_C32(0xc4956f3d), SPH_C32(0x67ff7425),
+	  SPH_C32(0xb42d799f) },
+	{ SPH_C32(0x108d0000), SPH_C32(0x86a32d00), SPH_C32(0x7fab0000),
+	  SPH_C32(0xcf3a0000), SPH_C32(0xe9514371), SPH_C32(0x3d74230d),
+	  SPH_C32(0x50a382f9), SPH_C32(0x5a2ab1fb), SPH_C32(0x76a30000),
+	  SPH_C32(0xd6173300), SPH_C32(0x7f850000), SPH_C32(0xa96c0000),
+	  SPH_C32(0x4e045aba), SPH_C32(0xdb41975d), SPH_C32(0x292fd730),
+	  SPH_C32(0x150e8600) },
+	{ SPH_C32(0xe2dd0000), SPH_C32(0x681e2700), SPH_C32(0x18030000),
+	  SPH_C32(0x64b00000), SPH_C32(0x53ca0bb1), SPH_C32(0x3722fe79),
+	  SPH_C32(0x8bd06a97), SPH_C32(0x4f424ef4), SPH_C32(0x7ad10000),
+	  SPH_C32(0x9ff23c00), SPH_C32(0x3dfc0000), SPH_C32(0xf5860000),
+	  SPH_C32(0x7dae6aa0), SPH_C32(0xcec3b249), SPH_C32(0xbc8c9c4b),
+	  SPH_C32(0xa1458690) },
+	{ SPH_C32(0xeeaf0000), SPH_C32(0x21fb2800), SPH_C32(0x5a7a0000),
+	  SPH_C32(0x385a0000), SPH_C32(0x60603bab), SPH_C32(0x22a0db6d),
+	  SPH_C32(0x1e7321ec), SPH_C32(0xfb094e64), SPH_C32(0x84f30000),
+	  SPH_C32(0x38aa3900), SPH_C32(0x182d0000), SPH_C32(0x02e60000),
+	  SPH_C32(0xf49f127a), SPH_C32(0xd1174a29), SPH_C32(0xf25c3f5e),
+	  SPH_C32(0x0066790f) },
+	{ SPH_C32(0x59e70000), SPH_C32(0x6af33500), SPH_C32(0xc4b80000),
+	  SPH_C32(0xa8980000), SPH_C32(0xc4376747), SPH_C32(0x0be593cf),
+	  SPH_C32(0xd3bc6f32), SPH_C32(0x315245b4), SPH_C32(0x30bc0000),
+	  SPH_C32(0x673e3000), SPH_C32(0x6dce0000), SPH_C32(0xabbd0000),
+	  SPH_C32(0xe5b443cc), SPH_C32(0x6add9e78), SPH_C32(0x01db6233),
+	  SPH_C32(0x71ec92a1) },
+	{ SPH_C32(0x55950000), SPH_C32(0x23163a00), SPH_C32(0x86c10000),
+	  SPH_C32(0xf4720000), SPH_C32(0xf79d575d), SPH_C32(0x1e67b6db),
+	  SPH_C32(0x461f2449), SPH_C32(0x85194524), SPH_C32(0xce9e0000),
+	  SPH_C32(0xc0663500), SPH_C32(0x481f0000), SPH_C32(0x5cdd0000),
+	  SPH_C32(0x6c853b16), SPH_C32(0x75096618), SPH_C32(0x4f0bc126),
+	  SPH_C32(0xd0cf6d3e) },
+	{ SPH_C32(0xa7c50000), SPH_C32(0xcdab3000), SPH_C32(0xe1690000),
+	  SPH_C32(0x5ff80000), SPH_C32(0x4d061f9d), SPH_C32(0x14316baf),
+	  SPH_C32(0x9d6ccc27), SPH_C32(0x9071ba2b), SPH_C32(0xc2ec0000),
+	  SPH_C32(0x89833a00), SPH_C32(0x0a660000), SPH_C32(0x00370000),
+	  SPH_C32(0x5f2f0b0c), SPH_C32(0x608b430c), SPH_C32(0xdaa88a5d),
+	  SPH_C32(0x64846dae) },
+	{ SPH_C32(0xabb70000), SPH_C32(0x844e3f00), SPH_C32(0xa3100000),
+	  SPH_C32(0x03120000), SPH_C32(0x7eac2f87), SPH_C32(0x01b34ebb),
+	  SPH_C32(0x08cf875c), SPH_C32(0x243ababb), SPH_C32(0x3cce0000),
+	  SPH_C32(0x2edb3f00), SPH_C32(0x2fb70000), SPH_C32(0xf7570000),
+	  SPH_C32(0xd61e73d6), SPH_C32(0x7f5fbb6c), SPH_C32(0x94782948),
+	  SPH_C32(0xc5a79231) }
+};
+
+static const sph_u32 T512_24[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0x40490000), SPH_C32(0x25bb0060), SPH_C32(0x75710000),
+	  SPH_C32(0x2ea80000), SPH_C32(0x35c9296f), SPH_C32(0x5abd2967),
+	  SPH_C32(0xde5c0873), SPH_C32(0xa5bb8697), SPH_C32(0x5fce0000),
+	  SPH_C32(0xc675000c), SPH_C32(0xeb450000), SPH_C32(0x7b450000),
+	  SPH_C32(0x75063a62), SPH_C32(0x67cd2643), SPH_C32(0x122f6b61),
+	  SPH_C32(0x1675c999) },
+	{ SPH_C32(0xb7130000), SPH_C32(0x3c3f0048), SPH_C32(0xd7680000),
+	  SPH_C32(0xc0500000), SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07),
+	  SPH_C32(0xad87a995), SPH_C32(0x443fc4c0), SPH_C32(0x4bd70000),
+	  SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000), SPH_C32(0x3ff30000),
+	  SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36), SPH_C32(0x73c97bd1),
+	  SPH_C32(0xcdbf1219) },
+	{ SPH_C32(0xa30a0000), SPH_C32(0x1ff50074), SPH_C32(0x87b70000),
+	  SPH_C32(0x84e60000), SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772),
+	  SPH_C32(0xcc61b925), SPH_C32(0x9ff51f40), SPH_C32(0xa8940000),
+	  SPH_C32(0xdff10024), SPH_C32(0x495c0000), SPH_C32(0x95bd0000),
+	  SPH_C32(0xb5741f74), SPH_C32(0x7e553423), SPH_C32(0x61f4ca87),
+	  SPH_C32(0xf7f18bce) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0xa8940000), SPH_C32(0xdff10024), SPH_C32(0x495c0000),
+	  SPH_C32(0x95bd0000), SPH_C32(0xb5741f74), SPH_C32(0x7e553423),
+	  SPH_C32(0x61f4ca87), SPH_C32(0xf7f18bce), SPH_C32(0x0b9e0000),
+	  SPH_C32(0xc0040050), SPH_C32(0xceeb0000), SPH_C32(0x115b0000),
+	  SPH_C32(0x5ba374bd), SPH_C32(0x0183a351), SPH_C32(0xad9573a2),
+	  SPH_C32(0x6804948e) },
+	{ SPH_C32(0x5fce0000), SPH_C32(0xc675000c), SPH_C32(0xeb450000),
+	  SPH_C32(0x7b450000), SPH_C32(0x75063a62), SPH_C32(0x67cd2643),
+	  SPH_C32(0x122f6b61), SPH_C32(0x1675c999), SPH_C32(0x1f870000),
+	  SPH_C32(0xe3ce006c), SPH_C32(0x9e340000), SPH_C32(0x55ed0000),
+	  SPH_C32(0x40cf130d), SPH_C32(0x3d700f24), SPH_C32(0xcc736312),
+	  SPH_C32(0xb3ce4f0e) },
+	{ SPH_C32(0x4bd70000), SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000),
+	  SPH_C32(0x3ff30000), SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36),
+	  SPH_C32(0x73c97bd1), SPH_C32(0xcdbf1219), SPH_C32(0xfcc40000),
+	  SPH_C32(0xd9800078), SPH_C32(0x6cf20000), SPH_C32(0xffa30000),
+	  SPH_C32(0x9bd151ab), SPH_C32(0x181bb131), SPH_C32(0xde4ed244),
+	  SPH_C32(0x8980d6d9) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) },
+	{ SPH_C32(0xfcc40000), SPH_C32(0xd9800078), SPH_C32(0x6cf20000),
+	  SPH_C32(0xffa30000), SPH_C32(0x9bd151ab), SPH_C32(0x181bb131),
+	  SPH_C32(0xde4ed244), SPH_C32(0x8980d6d9), SPH_C32(0xb7130000),
+	  SPH_C32(0x3c3f0048), SPH_C32(0xd7680000), SPH_C32(0xc0500000),
+	  SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07), SPH_C32(0xad87a995),
+	  SPH_C32(0x443fc4c0) },
+	{ SPH_C32(0x0b9e0000), SPH_C32(0xc0040050), SPH_C32(0xceeb0000),
+	  SPH_C32(0x115b0000), SPH_C32(0x5ba374bd), SPH_C32(0x0183a351),
+	  SPH_C32(0xad9573a2), SPH_C32(0x6804948e), SPH_C32(0xa30a0000),
+	  SPH_C32(0x1ff50074), SPH_C32(0x87b70000), SPH_C32(0x84e60000),
+	  SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772), SPH_C32(0xcc61b925),
+	  SPH_C32(0x9ff51f40) },
+	{ SPH_C32(0x1f870000), SPH_C32(0xe3ce006c), SPH_C32(0x9e340000),
+	  SPH_C32(0x55ed0000), SPH_C32(0x40cf130d), SPH_C32(0x3d700f24),
+	  SPH_C32(0xcc736312), SPH_C32(0xb3ce4f0e), SPH_C32(0x40490000),
+	  SPH_C32(0x25bb0060), SPH_C32(0x75710000), SPH_C32(0x2ea80000),
+	  SPH_C32(0x35c9296f), SPH_C32(0x5abd2967), SPH_C32(0xde5c0873),
+	  SPH_C32(0xa5bb8697) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0x7d480000), SPH_C32(0xf72b00a0), SPH_C32(0x93fc0000),
+	  SPH_C32(0xe8990000), SPH_C32(0xfff96c1e), SPH_C32(0xf257b9a9),
+	  SPH_C32(0xe60a38cc), SPH_C32(0x672b784e), SPH_C32(0x25300000),
+	  SPH_C32(0x95c30018), SPH_C32(0x56070000), SPH_C32(0x8bc30000),
+	  SPH_C32(0xf80f5721), SPH_C32(0x5c78ef3a), SPH_C32(0x0f151dde),
+	  SPH_C32(0x0dc348a4) },
+	{ SPH_C32(0x8a120000), SPH_C32(0xeeaf0088), SPH_C32(0x31e50000),
+	  SPH_C32(0x06610000), SPH_C32(0x3f8b4908), SPH_C32(0xebcfabc9),
+	  SPH_C32(0x95d1992a), SPH_C32(0x86af3a19), SPH_C32(0x31290000),
+	  SPH_C32(0xb6090024), SPH_C32(0x06d80000), SPH_C32(0xcf750000),
+	  SPH_C32(0xe3633091), SPH_C32(0x608b434f), SPH_C32(0x6ef30d6e),
+	  SPH_C32(0xd6099324) },
+	{ SPH_C32(0x9e0b0000), SPH_C32(0xcd6500b4), SPH_C32(0x613a0000),
+	  SPH_C32(0x42d70000), SPH_C32(0x24e72eb8), SPH_C32(0xd73c07bc),
+	  SPH_C32(0xf437899a), SPH_C32(0x5d65e199), SPH_C32(0xd26a0000),
+	  SPH_C32(0x8c470030), SPH_C32(0xf41e0000), SPH_C32(0x653b0000),
+	  SPH_C32(0x387d7237), SPH_C32(0x45e0fd5a), SPH_C32(0x7ccebc38),
+	  SPH_C32(0xec470af3) },
+	{ SPH_C32(0x3d010000), SPH_C32(0xd29000c0), SPH_C32(0xe68d0000),
+	  SPH_C32(0xc6310000), SPH_C32(0xca304571), SPH_C32(0xa8ea90ce),
+	  SPH_C32(0x385630bf), SPH_C32(0xc290fed9), SPH_C32(0x7afe0000),
+	  SPH_C32(0x53b60014), SPH_C32(0xbd420000), SPH_C32(0xf0860000),
+	  SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979), SPH_C32(0x1d3a76bf),
+	  SPH_C32(0x1bb6813d) },
+	{ SPH_C32(0x29180000), SPH_C32(0xf15a00fc), SPH_C32(0xb6520000),
+	  SPH_C32(0x82870000), SPH_C32(0xd15c22c1), SPH_C32(0x94193cbb),
+	  SPH_C32(0x59b0200f), SPH_C32(0x195a2559), SPH_C32(0x99bd0000),
+	  SPH_C32(0x69f80000), SPH_C32(0x4f840000), SPH_C32(0x5ac80000),
+	  SPH_C32(0x56172fe5), SPH_C32(0x1ede776c), SPH_C32(0x0f07c7e9),
+	  SPH_C32(0x21f818ea) },
+	{ SPH_C32(0xde420000), SPH_C32(0xe8de00d4), SPH_C32(0x144b0000),
+	  SPH_C32(0x6c7f0000), SPH_C32(0x112e07d7), SPH_C32(0x8d812edb),
+	  SPH_C32(0x2a6b81e9), SPH_C32(0xf8de670e), SPH_C32(0x8da40000),
+	  SPH_C32(0x4a32003c), SPH_C32(0x1f5b0000), SPH_C32(0x1e7e0000),
+	  SPH_C32(0x4d7b4855), SPH_C32(0x222ddb19), SPH_C32(0x6ee1d759),
+	  SPH_C32(0xfa32c36a) },
+	{ SPH_C32(0xca5b0000), SPH_C32(0xcb1400e8), SPH_C32(0x44940000),
+	  SPH_C32(0x28c90000), SPH_C32(0x0a426067), SPH_C32(0xb17282ae),
+	  SPH_C32(0x4b8d9159), SPH_C32(0x2314bc8e), SPH_C32(0x6ee70000),
+	  SPH_C32(0x707c0028), SPH_C32(0xed9d0000), SPH_C32(0xb4300000),
+	  SPH_C32(0x96650af3), SPH_C32(0x0746650c), SPH_C32(0x7cdc660f),
+	  SPH_C32(0xc07c5abd) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0xc1c50000), SPH_C32(0x0b1000b8), SPH_C32(0x8a7f0000),
+	  SPH_C32(0x39920000), SPH_C32(0x51e114da), SPH_C32(0xb0f121ff),
+	  SPH_C32(0xe618e2fb), SPH_C32(0x4b102800), SPH_C32(0xcded0000),
+	  SPH_C32(0x6f89005c), SPH_C32(0x6a2a0000), SPH_C32(0x30d60000),
+	  SPH_C32(0x78b2613a), SPH_C32(0x7890f27e), SPH_C32(0xb0bddf2a),
+	  SPH_C32(0x5f8945fd) },
+	{ SPH_C32(0x369f0000), SPH_C32(0x12940090), SPH_C32(0x28660000),
+	  SPH_C32(0xd76a0000), SPH_C32(0x919331cc), SPH_C32(0xa969339f),
+	  SPH_C32(0x95c3431d), SPH_C32(0xaa946a57), SPH_C32(0xd9f40000),
+	  SPH_C32(0x4c430060), SPH_C32(0x3af50000), SPH_C32(0x74600000),
+	  SPH_C32(0x63de068a), SPH_C32(0x44635e0b), SPH_C32(0xd15bcf9a),
+	  SPH_C32(0x84439e7d) },
+	{ SPH_C32(0x22860000), SPH_C32(0x315e00ac), SPH_C32(0x78b90000),
+	  SPH_C32(0x93dc0000), SPH_C32(0x8aff567c), SPH_C32(0x959a9fea),
+	  SPH_C32(0xf42553ad), SPH_C32(0x715eb1d7), SPH_C32(0x3ab70000),
+	  SPH_C32(0x760d0074), SPH_C32(0xc8330000), SPH_C32(0xde2e0000),
+	  SPH_C32(0xb8c0442c), SPH_C32(0x6108e01e), SPH_C32(0xc3667ecc),
+	  SPH_C32(0xbe0d07aa) },
+	{ SPH_C32(0x818c0000), SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000),
+	  SPH_C32(0x173a0000), SPH_C32(0x64283db5), SPH_C32(0xea4c0898),
+	  SPH_C32(0x3844ea88), SPH_C32(0xeeabae97), SPH_C32(0x92230000),
+	  SPH_C32(0xa9fc0050), SPH_C32(0x816f0000), SPH_C32(0x4b930000),
+	  SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d), SPH_C32(0xa292b44b),
+	  SPH_C32(0x49fc8c64) },
+	{ SPH_C32(0x95950000), SPH_C32(0x0d6100e4), SPH_C32(0xafd10000),
+	  SPH_C32(0x538c0000), SPH_C32(0x7f445a05), SPH_C32(0xd6bfa4ed),
+	  SPH_C32(0x59a2fa38), SPH_C32(0x35617517), SPH_C32(0x71600000),
+	  SPH_C32(0x93b20044), SPH_C32(0x73a90000), SPH_C32(0xe1dd0000),
+	  SPH_C32(0xd6aa19fe), SPH_C32(0x3a366a28), SPH_C32(0xb0af051d),
+	  SPH_C32(0x73b215b3) },
+	{ SPH_C32(0x62cf0000), SPH_C32(0x14e500cc), SPH_C32(0x0dc80000),
+	  SPH_C32(0xbd740000), SPH_C32(0xbf367f13), SPH_C32(0xcf27b68d),
+	  SPH_C32(0x2a795bde), SPH_C32(0xd4e53740), SPH_C32(0x65790000),
+	  SPH_C32(0xb0780078), SPH_C32(0x23760000), SPH_C32(0xa56b0000),
+	  SPH_C32(0xcdc67e4e), SPH_C32(0x06c5c65d), SPH_C32(0xd14915ad),
+	  SPH_C32(0xa878ce33) },
+	{ SPH_C32(0x76d60000), SPH_C32(0x372f00f0), SPH_C32(0x5d170000),
+	  SPH_C32(0xf9c20000), SPH_C32(0xa45a18a3), SPH_C32(0xf3d41af8),
+	  SPH_C32(0x4b9f4b6e), SPH_C32(0x0f2fecc0), SPH_C32(0x863a0000),
+	  SPH_C32(0x8a36006c), SPH_C32(0xd1b00000), SPH_C32(0x0f250000),
+	  SPH_C32(0x16d83ce8), SPH_C32(0x23ae7848), SPH_C32(0xc374a4fb),
+	  SPH_C32(0x923657e4) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0xd26a0000), SPH_C32(0x8c470030), SPH_C32(0xf41e0000),
+	  SPH_C32(0x653b0000), SPH_C32(0x387d7237), SPH_C32(0x45e0fd5a),
+	  SPH_C32(0x7ccebc38), SPH_C32(0xec470af3), SPH_C32(0x4c610000),
+	  SPH_C32(0x41220084), SPH_C32(0x95240000), SPH_C32(0x27ec0000),
+	  SPH_C32(0x1c9a5c8f), SPH_C32(0x92dcfae6), SPH_C32(0x88f935a2),
+	  SPH_C32(0xb122eb6a) },
+	{ SPH_C32(0x25300000), SPH_C32(0x95c30018), SPH_C32(0x56070000),
+	  SPH_C32(0x8bc30000), SPH_C32(0xf80f5721), SPH_C32(0x5c78ef3a),
+	  SPH_C32(0x0f151dde), SPH_C32(0x0dc348a4), SPH_C32(0x58780000),
+	  SPH_C32(0x62e800b8), SPH_C32(0xc5fb0000), SPH_C32(0x635a0000),
+	  SPH_C32(0x07f63b3f), SPH_C32(0xae2f5693), SPH_C32(0xe91f2512),
+	  SPH_C32(0x6ae830ea) },
+	{ SPH_C32(0x31290000), SPH_C32(0xb6090024), SPH_C32(0x06d80000),
+	  SPH_C32(0xcf750000), SPH_C32(0xe3633091), SPH_C32(0x608b434f),
+	  SPH_C32(0x6ef30d6e), SPH_C32(0xd6099324), SPH_C32(0xbb3b0000),
+	  SPH_C32(0x58a600ac), SPH_C32(0x373d0000), SPH_C32(0xc9140000),
+	  SPH_C32(0xdce87999), SPH_C32(0x8b44e886), SPH_C32(0xfb229444),
+	  SPH_C32(0x50a6a93d) },
+	{ SPH_C32(0x92230000), SPH_C32(0xa9fc0050), SPH_C32(0x816f0000),
+	  SPH_C32(0x4b930000), SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d),
+	  SPH_C32(0xa292b44b), SPH_C32(0x49fc8c64), SPH_C32(0x13af0000),
+	  SPH_C32(0x87570088), SPH_C32(0x7e610000), SPH_C32(0x5ca90000),
+	  SPH_C32(0x699c66ed), SPH_C32(0xf511dca5), SPH_C32(0x9ad65ec3),
+	  SPH_C32(0xa75722f3) },
+	{ SPH_C32(0x863a0000), SPH_C32(0x8a36006c), SPH_C32(0xd1b00000),
+	  SPH_C32(0x0f250000), SPH_C32(0x16d83ce8), SPH_C32(0x23ae7848),
+	  SPH_C32(0xc374a4fb), SPH_C32(0x923657e4), SPH_C32(0xf0ec0000),
+	  SPH_C32(0xbd19009c), SPH_C32(0x8ca70000), SPH_C32(0xf6e70000),
+	  SPH_C32(0xb282244b), SPH_C32(0xd07a62b0), SPH_C32(0x88ebef95),
+	  SPH_C32(0x9d19bb24) },
+	{ SPH_C32(0x71600000), SPH_C32(0x93b20044), SPH_C32(0x73a90000),
+	  SPH_C32(0xe1dd0000), SPH_C32(0xd6aa19fe), SPH_C32(0x3a366a28),
+	  SPH_C32(0xb0af051d), SPH_C32(0x73b215b3), SPH_C32(0xe4f50000),
+	  SPH_C32(0x9ed300a0), SPH_C32(0xdc780000), SPH_C32(0xb2510000),
+	  SPH_C32(0xa9ee43fb), SPH_C32(0xec89cec5), SPH_C32(0xe90dff25),
+	  SPH_C32(0x46d360a4) },
+	{ SPH_C32(0x65790000), SPH_C32(0xb0780078), SPH_C32(0x23760000),
+	  SPH_C32(0xa56b0000), SPH_C32(0xcdc67e4e), SPH_C32(0x06c5c65d),
+	  SPH_C32(0xd14915ad), SPH_C32(0xa878ce33), SPH_C32(0x07b60000),
+	  SPH_C32(0xa49d00b4), SPH_C32(0x2ebe0000), SPH_C32(0x181f0000),
+	  SPH_C32(0x72f0015d), SPH_C32(0xc9e270d0), SPH_C32(0xfb304e73),
+	  SPH_C32(0x7c9df973) },
+	{ SPH_C32(0x7afe0000), SPH_C32(0x53b60014), SPH_C32(0xbd420000),
+	  SPH_C32(0xf0860000), SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979),
+	  SPH_C32(0x1d3a76bf), SPH_C32(0x1bb6813d), SPH_C32(0x47ff0000),
+	  SPH_C32(0x812600d4), SPH_C32(0x5bcf0000), SPH_C32(0x36b70000),
+	  SPH_C32(0x47392832), SPH_C32(0x935f59b7), SPH_C32(0x256c4600),
+	  SPH_C32(0xd9267fe4) },
+	{ SPH_C32(0x6ee70000), SPH_C32(0x707c0028), SPH_C32(0xed9d0000),
+	  SPH_C32(0xb4300000), SPH_C32(0x96650af3), SPH_C32(0x0746650c),
+	  SPH_C32(0x7cdc660f), SPH_C32(0xc07c5abd), SPH_C32(0xa4bc0000),
+	  SPH_C32(0xbb6800c0), SPH_C32(0xa9090000), SPH_C32(0x9cf90000),
+	  SPH_C32(0x9c276a94), SPH_C32(0xb634e7a2), SPH_C32(0x3751f756),
+	  SPH_C32(0xe368e633) },
+	{ SPH_C32(0x99bd0000), SPH_C32(0x69f80000), SPH_C32(0x4f840000),
+	  SPH_C32(0x5ac80000), SPH_C32(0x56172fe5), SPH_C32(0x1ede776c),
+	  SPH_C32(0x0f07c7e9), SPH_C32(0x21f818ea), SPH_C32(0xb0a50000),
+	  SPH_C32(0x98a200fc), SPH_C32(0xf9d60000), SPH_C32(0xd84f0000),
+	  SPH_C32(0x874b0d24), SPH_C32(0x8ac74bd7), SPH_C32(0x56b7e7e6),
+	  SPH_C32(0x38a23db3) },
+	{ SPH_C32(0x8da40000), SPH_C32(0x4a32003c), SPH_C32(0x1f5b0000),
+	  SPH_C32(0x1e7e0000), SPH_C32(0x4d7b4855), SPH_C32(0x222ddb19),
+	  SPH_C32(0x6ee1d759), SPH_C32(0xfa32c36a), SPH_C32(0x53e60000),
+	  SPH_C32(0xa2ec00e8), SPH_C32(0x0b100000), SPH_C32(0x72010000),
+	  SPH_C32(0x5c554f82), SPH_C32(0xafacf5c2), SPH_C32(0x448a56b0),
+	  SPH_C32(0x02eca464) },
+	{ SPH_C32(0x2eae0000), SPH_C32(0x55c70048), SPH_C32(0x98ec0000),
+	  SPH_C32(0x9a980000), SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b),
+	  SPH_C32(0xa2806e7c), SPH_C32(0x65c7dc2a), SPH_C32(0xfb720000),
+	  SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000), SPH_C32(0xe7bc0000),
+	  SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1), SPH_C32(0x257e9c37),
+	  SPH_C32(0xf51d2faa) },
+	{ SPH_C32(0x3ab70000), SPH_C32(0x760d0074), SPH_C32(0xc8330000),
+	  SPH_C32(0xde2e0000), SPH_C32(0xb8c0442c), SPH_C32(0x6108e01e),
+	  SPH_C32(0xc3667ecc), SPH_C32(0xbe0d07aa), SPH_C32(0x18310000),
+	  SPH_C32(0x475300d8), SPH_C32(0xb08a0000), SPH_C32(0x4df20000),
+	  SPH_C32(0x323f1250), SPH_C32(0xf4927ff4), SPH_C32(0x37432d61),
+	  SPH_C32(0xcf53b67d) },
+	{ SPH_C32(0xcded0000), SPH_C32(0x6f89005c), SPH_C32(0x6a2a0000),
+	  SPH_C32(0x30d60000), SPH_C32(0x78b2613a), SPH_C32(0x7890f27e),
+	  SPH_C32(0xb0bddf2a), SPH_C32(0x5f8945fd), SPH_C32(0x0c280000),
+	  SPH_C32(0x649900e4), SPH_C32(0xe0550000), SPH_C32(0x09440000),
+	  SPH_C32(0x295375e0), SPH_C32(0xc861d381), SPH_C32(0x56a53dd1),
+	  SPH_C32(0x14996dfd) },
+	{ SPH_C32(0xd9f40000), SPH_C32(0x4c430060), SPH_C32(0x3af50000),
+	  SPH_C32(0x74600000), SPH_C32(0x63de068a), SPH_C32(0x44635e0b),
+	  SPH_C32(0xd15bcf9a), SPH_C32(0x84439e7d), SPH_C32(0xef6b0000),
+	  SPH_C32(0x5ed700f0), SPH_C32(0x12930000), SPH_C32(0xa30a0000),
+	  SPH_C32(0xf24d3746), SPH_C32(0xed0a6d94), SPH_C32(0x44988c87),
+	  SPH_C32(0x2ed7f42a) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) },
+	{ SPH_C32(0xbb3b0000), SPH_C32(0x58a600ac), SPH_C32(0x373d0000),
+	  SPH_C32(0xc9140000), SPH_C32(0xdce87999), SPH_C32(0x8b44e886),
+	  SPH_C32(0xfb229444), SPH_C32(0x50a6a93d), SPH_C32(0x8a120000),
+	  SPH_C32(0xeeaf0088), SPH_C32(0x31e50000), SPH_C32(0x06610000),
+	  SPH_C32(0x3f8b4908), SPH_C32(0xebcfabc9), SPH_C32(0x95d1992a),
+	  SPH_C32(0x86af3a19) },
+	{ SPH_C32(0x4c610000), SPH_C32(0x41220084), SPH_C32(0x95240000),
+	  SPH_C32(0x27ec0000), SPH_C32(0x1c9a5c8f), SPH_C32(0x92dcfae6),
+	  SPH_C32(0x88f935a2), SPH_C32(0xb122eb6a), SPH_C32(0x9e0b0000),
+	  SPH_C32(0xcd6500b4), SPH_C32(0x613a0000), SPH_C32(0x42d70000),
+	  SPH_C32(0x24e72eb8), SPH_C32(0xd73c07bc), SPH_C32(0xf437899a),
+	  SPH_C32(0x5d65e199) },
+	{ SPH_C32(0x58780000), SPH_C32(0x62e800b8), SPH_C32(0xc5fb0000),
+	  SPH_C32(0x635a0000), SPH_C32(0x07f63b3f), SPH_C32(0xae2f5693),
+	  SPH_C32(0xe91f2512), SPH_C32(0x6ae830ea), SPH_C32(0x7d480000),
+	  SPH_C32(0xf72b00a0), SPH_C32(0x93fc0000), SPH_C32(0xe8990000),
+	  SPH_C32(0xfff96c1e), SPH_C32(0xf257b9a9), SPH_C32(0xe60a38cc),
+	  SPH_C32(0x672b784e) },
+	{ SPH_C32(0xfb720000), SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000),
+	  SPH_C32(0xe7bc0000), SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1),
+	  SPH_C32(0x257e9c37), SPH_C32(0xf51d2faa), SPH_C32(0xd5dc0000),
+	  SPH_C32(0x28da0084), SPH_C32(0xdaa00000), SPH_C32(0x7d240000),
+	  SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a), SPH_C32(0x87fef24b),
+	  SPH_C32(0x90daf380) },
+	{ SPH_C32(0xef6b0000), SPH_C32(0x5ed700f0), SPH_C32(0x12930000),
+	  SPH_C32(0xa30a0000), SPH_C32(0xf24d3746), SPH_C32(0xed0a6d94),
+	  SPH_C32(0x44988c87), SPH_C32(0x2ed7f42a), SPH_C32(0x369f0000),
+	  SPH_C32(0x12940090), SPH_C32(0x28660000), SPH_C32(0xd76a0000),
+	  SPH_C32(0x919331cc), SPH_C32(0xa969339f), SPH_C32(0x95c3431d),
+	  SPH_C32(0xaa946a57) },
+	{ SPH_C32(0x18310000), SPH_C32(0x475300d8), SPH_C32(0xb08a0000),
+	  SPH_C32(0x4df20000), SPH_C32(0x323f1250), SPH_C32(0xf4927ff4),
+	  SPH_C32(0x37432d61), SPH_C32(0xcf53b67d), SPH_C32(0x22860000),
+	  SPH_C32(0x315e00ac), SPH_C32(0x78b90000), SPH_C32(0x93dc0000),
+	  SPH_C32(0x8aff567c), SPH_C32(0x959a9fea), SPH_C32(0xf42553ad),
+	  SPH_C32(0x715eb1d7) },
+	{ SPH_C32(0x0c280000), SPH_C32(0x649900e4), SPH_C32(0xe0550000),
+	  SPH_C32(0x09440000), SPH_C32(0x295375e0), SPH_C32(0xc861d381),
+	  SPH_C32(0x56a53dd1), SPH_C32(0x14996dfd), SPH_C32(0xc1c50000),
+	  SPH_C32(0x0b1000b8), SPH_C32(0x8a7f0000), SPH_C32(0x39920000),
+	  SPH_C32(0x51e114da), SPH_C32(0xb0f121ff), SPH_C32(0xe618e2fb),
+	  SPH_C32(0x4b102800) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x87570088), SPH_C32(0x7e610000),
+	  SPH_C32(0x5ca90000), SPH_C32(0x699c66ed), SPH_C32(0xf511dca5),
+	  SPH_C32(0x9ad65ec3), SPH_C32(0xa75722f3), SPH_C32(0x818c0000),
+	  SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000), SPH_C32(0x173a0000),
+	  SPH_C32(0x64283db5), SPH_C32(0xea4c0898), SPH_C32(0x3844ea88),
+	  SPH_C32(0xeeabae97) },
+	{ SPH_C32(0x07b60000), SPH_C32(0xa49d00b4), SPH_C32(0x2ebe0000),
+	  SPH_C32(0x181f0000), SPH_C32(0x72f0015d), SPH_C32(0xc9e270d0),
+	  SPH_C32(0xfb304e73), SPH_C32(0x7c9df973), SPH_C32(0x62cf0000),
+	  SPH_C32(0x14e500cc), SPH_C32(0x0dc80000), SPH_C32(0xbd740000),
+	  SPH_C32(0xbf367f13), SPH_C32(0xcf27b68d), SPH_C32(0x2a795bde),
+	  SPH_C32(0xd4e53740) },
+	{ SPH_C32(0xf0ec0000), SPH_C32(0xbd19009c), SPH_C32(0x8ca70000),
+	  SPH_C32(0xf6e70000), SPH_C32(0xb282244b), SPH_C32(0xd07a62b0),
+	  SPH_C32(0x88ebef95), SPH_C32(0x9d19bb24), SPH_C32(0x76d60000),
+	  SPH_C32(0x372f00f0), SPH_C32(0x5d170000), SPH_C32(0xf9c20000),
+	  SPH_C32(0xa45a18a3), SPH_C32(0xf3d41af8), SPH_C32(0x4b9f4b6e),
+	  SPH_C32(0x0f2fecc0) },
+	{ SPH_C32(0xe4f50000), SPH_C32(0x9ed300a0), SPH_C32(0xdc780000),
+	  SPH_C32(0xb2510000), SPH_C32(0xa9ee43fb), SPH_C32(0xec89cec5),
+	  SPH_C32(0xe90dff25), SPH_C32(0x46d360a4), SPH_C32(0x95950000),
+	  SPH_C32(0x0d6100e4), SPH_C32(0xafd10000), SPH_C32(0x538c0000),
+	  SPH_C32(0x7f445a05), SPH_C32(0xd6bfa4ed), SPH_C32(0x59a2fa38),
+	  SPH_C32(0x35617517) },
+	{ SPH_C32(0x47ff0000), SPH_C32(0x812600d4), SPH_C32(0x5bcf0000),
+	  SPH_C32(0x36b70000), SPH_C32(0x47392832), SPH_C32(0x935f59b7),
+	  SPH_C32(0x256c4600), SPH_C32(0xd9267fe4), SPH_C32(0x3d010000),
+	  SPH_C32(0xd29000c0), SPH_C32(0xe68d0000), SPH_C32(0xc6310000),
+	  SPH_C32(0xca304571), SPH_C32(0xa8ea90ce), SPH_C32(0x385630bf),
+	  SPH_C32(0xc290fed9) },
+	{ SPH_C32(0x53e60000), SPH_C32(0xa2ec00e8), SPH_C32(0x0b100000),
+	  SPH_C32(0x72010000), SPH_C32(0x5c554f82), SPH_C32(0xafacf5c2),
+	  SPH_C32(0x448a56b0), SPH_C32(0x02eca464), SPH_C32(0xde420000),
+	  SPH_C32(0xe8de00d4), SPH_C32(0x144b0000), SPH_C32(0x6c7f0000),
+	  SPH_C32(0x112e07d7), SPH_C32(0x8d812edb), SPH_C32(0x2a6b81e9),
+	  SPH_C32(0xf8de670e) },
+	{ SPH_C32(0xa4bc0000), SPH_C32(0xbb6800c0), SPH_C32(0xa9090000),
+	  SPH_C32(0x9cf90000), SPH_C32(0x9c276a94), SPH_C32(0xb634e7a2),
+	  SPH_C32(0x3751f756), SPH_C32(0xe368e633), SPH_C32(0xca5b0000),
+	  SPH_C32(0xcb1400e8), SPH_C32(0x44940000), SPH_C32(0x28c90000),
+	  SPH_C32(0x0a426067), SPH_C32(0xb17282ae), SPH_C32(0x4b8d9159),
+	  SPH_C32(0x2314bc8e) },
+	{ SPH_C32(0xb0a50000), SPH_C32(0x98a200fc), SPH_C32(0xf9d60000),
+	  SPH_C32(0xd84f0000), SPH_C32(0x874b0d24), SPH_C32(0x8ac74bd7),
+	  SPH_C32(0x56b7e7e6), SPH_C32(0x38a23db3), SPH_C32(0x29180000),
+	  SPH_C32(0xf15a00fc), SPH_C32(0xb6520000), SPH_C32(0x82870000),
+	  SPH_C32(0xd15c22c1), SPH_C32(0x94193cbb), SPH_C32(0x59b0200f),
+	  SPH_C32(0x195a2559) }
+};
+
+static const sph_u32 T512_30[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xb2060000), SPH_C32(0xc5690000), SPH_C32(0x28031200),
+	  SPH_C32(0x74670000), SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8),
+	  SPH_C32(0x33d1dfec), SPH_C32(0x094e3198), SPH_C32(0xac480000),
+	  SPH_C32(0x1ba60000), SPH_C32(0x45fb1380), SPH_C32(0x03430000),
+	  SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6), SPH_C32(0xfe72c7fe),
+	  SPH_C32(0x91e478f6) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0x028b0000), SPH_C32(0x87e90001), SPH_C32(0x3c2af380),
+	  SPH_C32(0x2f560000), SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780),
+	  SPH_C32(0x55e03071), SPH_C32(0x32f62e8d), SPH_C32(0xc56b0000),
+	  SPH_C32(0xd7e60000), SPH_C32(0x2452c180), SPH_C32(0xf6c50000),
+	  SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f), SPH_C32(0x8ef57364),
+	  SPH_C32(0x70c6f340) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0x1cc50000), SPH_C32(0x59260001), SPH_C32(0x51d2f200),
+	  SPH_C32(0x58720000), SPH_C32(0xf30e4347), SPH_C32(0x8d428ece),
+	  SPH_C32(0x98432863), SPH_C32(0xaa5c67e3), SPH_C32(0x776d0000),
+	  SPH_C32(0x128f0000), SPH_C32(0x0c51d380), SPH_C32(0x82a20000),
+	  SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487), SPH_C32(0xbd24ac88),
+	  SPH_C32(0x7988c2d8) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x776d0000), SPH_C32(0x128f0000), SPH_C32(0x0c51d380),
+	  SPH_C32(0x82a20000), SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487),
+	  SPH_C32(0xbd24ac88), SPH_C32(0x7988c2d8), SPH_C32(0x6ba80000),
+	  SPH_C32(0x4ba90001), SPH_C32(0x5d832180), SPH_C32(0xdad00000),
+	  SPH_C32(0x63751974), SPH_C32(0xd089ea49), SPH_C32(0x256784eb),
+	  SPH_C32(0xd3d4a53b) },
+	{ SPH_C32(0xc56b0000), SPH_C32(0xd7e60000), SPH_C32(0x2452c180),
+	  SPH_C32(0xf6c50000), SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f),
+	  SPH_C32(0x8ef57364), SPH_C32(0x70c6f340), SPH_C32(0xc7e00000),
+	  SPH_C32(0x500f0001), SPH_C32(0x18783200), SPH_C32(0xd9930000),
+	  SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff), SPH_C32(0xdb154315),
+	  SPH_C32(0x4230ddcd) },
+	{ SPH_C32(0x69230000), SPH_C32(0xcc400000), SPH_C32(0x61a9d200),
+	  SPH_C32(0xf5860000), SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9),
+	  SPH_C32(0x7087b49a), SPH_C32(0xe1228bb6), SPH_C32(0xd9ae0000),
+	  SPH_C32(0x8ec00001), SPH_C32(0x75803380), SPH_C32(0xaeb70000),
+	  SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1), SPH_C32(0x16b65b07),
+	  SPH_C32(0xda9a94a3) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) },
+	{ SPH_C32(0xd9ae0000), SPH_C32(0x8ec00001), SPH_C32(0x75803380),
+	  SPH_C32(0xaeb70000), SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1),
+	  SPH_C32(0x16b65b07), SPH_C32(0xda9a94a3), SPH_C32(0xb08d0000),
+	  SPH_C32(0x42800001), SPH_C32(0x1429e180), SPH_C32(0x5b310000),
+	  SPH_C32(0xa98b722d), SPH_C32(0x92f0de78), SPH_C32(0x6631ef9d),
+	  SPH_C32(0x3bb81f15) },
+	{ SPH_C32(0x6ba80000), SPH_C32(0x4ba90001), SPH_C32(0x5d832180),
+	  SPH_C32(0xdad00000), SPH_C32(0x63751974), SPH_C32(0xd089ea49),
+	  SPH_C32(0x256784eb), SPH_C32(0xd3d4a53b), SPH_C32(0x1cc50000),
+	  SPH_C32(0x59260001), SPH_C32(0x51d2f200), SPH_C32(0x58720000),
+	  SPH_C32(0xf30e4347), SPH_C32(0x8d428ece), SPH_C32(0x98432863),
+	  SPH_C32(0xaa5c67e3) },
+	{ SPH_C32(0xc7e00000), SPH_C32(0x500f0001), SPH_C32(0x18783200),
+	  SPH_C32(0xd9930000), SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff),
+	  SPH_C32(0xdb154315), SPH_C32(0x4230ddcd), SPH_C32(0x028b0000),
+	  SPH_C32(0x87e90001), SPH_C32(0x3c2af380), SPH_C32(0x2f560000),
+	  SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780), SPH_C32(0x55e03071),
+	  SPH_C32(0x32f62e8d) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x2a310000), SPH_C32(0x249f0002), SPH_C32(0xa461f380),
+	  SPH_C32(0x9b150000), SPH_C32(0xcfe05664), SPH_C32(0x513a985c),
+	  SPH_C32(0x2daf8eba), SPH_C32(0x87f9a24f), SPH_C32(0x2ef90000),
+	  SPH_C32(0x3b1f0000), SPH_C32(0x990c6180), SPH_C32(0x35e00000),
+	  SPH_C32(0x8fff3af4), SPH_C32(0x8c1afd2e), SPH_C32(0xec0cb9f8),
+	  SPH_C32(0x280f515a) },
+	{ SPH_C32(0x98370000), SPH_C32(0xe1f60002), SPH_C32(0x8c62e180),
+	  SPH_C32(0xef720000), SPH_C32(0x79226090), SPH_C32(0xba28a1a4),
+	  SPH_C32(0x1e7e5156), SPH_C32(0x8eb793d7), SPH_C32(0x82b10000),
+	  SPH_C32(0x20b90000), SPH_C32(0xdcf77200), SPH_C32(0x36a30000),
+	  SPH_C32(0xd57a0b9e), SPH_C32(0x93a8ad98), SPH_C32(0x127e7e06),
+	  SPH_C32(0xb9eb29ac) },
+	{ SPH_C32(0x347f0000), SPH_C32(0xfa500002), SPH_C32(0xc999f200),
+	  SPH_C32(0xec310000), SPH_C32(0x23a751fa), SPH_C32(0xa59af112),
+	  SPH_C32(0xe00c96a8), SPH_C32(0x1f53eb21), SPH_C32(0x9cff0000),
+	  SPH_C32(0xfe760000), SPH_C32(0xb10f7380), SPH_C32(0x41870000),
+	  SPH_C32(0x393d0c00), SPH_C32(0x6708c4d6), SPH_C32(0xdfdd6614),
+	  SPH_C32(0x214160c2) },
+	{ SPH_C32(0x28ba0000), SPH_C32(0xa3760003), SPH_C32(0x984b0000),
+	  SPH_C32(0xb4430000), SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc),
+	  SPH_C32(0x784fbecb), SPH_C32(0xb50f8cc2), SPH_C32(0xeb920000),
+	  SPH_C32(0xecf90000), SPH_C32(0xbd5ea000), SPH_C32(0xc3250000),
+	  SPH_C32(0xa9465633), SPH_C32(0x3ac3a051), SPH_C32(0x62f9ca9c),
+	  SPH_C32(0x58c9a21a) },
+	{ SPH_C32(0x84f20000), SPH_C32(0xb8d00003), SPH_C32(0xddb01380),
+	  SPH_C32(0xb7000000), SPH_C32(0x8a2c23d7), SPH_C32(0x376a2f6a),
+	  SPH_C32(0x863d7935), SPH_C32(0x24ebf434), SPH_C32(0xf5dc0000),
+	  SPH_C32(0x32360000), SPH_C32(0xd0a6a180), SPH_C32(0xb4010000),
+	  SPH_C32(0x450151ad), SPH_C32(0xce63c91f), SPH_C32(0xaf5ad28e),
+	  SPH_C32(0xc063eb74) },
+	{ SPH_C32(0x36f40000), SPH_C32(0x7db90003), SPH_C32(0xf5b30180),
+	  SPH_C32(0xc3670000), SPH_C32(0x3cee1523), SPH_C32(0xdc781692),
+	  SPH_C32(0xb5eca6d9), SPH_C32(0x2da5c5ac), SPH_C32(0x59940000),
+	  SPH_C32(0x29900000), SPH_C32(0x955db200), SPH_C32(0xb7420000),
+	  SPH_C32(0x1f8460c7), SPH_C32(0xd1d199a9), SPH_C32(0x51281570),
+	  SPH_C32(0x51879382) },
+	{ SPH_C32(0x9abc0000), SPH_C32(0x661f0003), SPH_C32(0xb0481200),
+	  SPH_C32(0xc0240000), SPH_C32(0x666b2449), SPH_C32(0xc3ca4624),
+	  SPH_C32(0x4b9e6127), SPH_C32(0xbc41bd5a), SPH_C32(0x47da0000),
+	  SPH_C32(0xf75f0000), SPH_C32(0xf8a5b380), SPH_C32(0xc0660000),
+	  SPH_C32(0xf3c36759), SPH_C32(0x2571f0e7), SPH_C32(0x9c8b0d62),
+	  SPH_C32(0xc92ddaec) },
+	{ SPH_C32(0x5d5c0000), SPH_C32(0x36100002), SPH_C32(0xa8302000),
+	  SPH_C32(0x19b70000), SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb),
+	  SPH_C32(0x908b2232), SPH_C32(0xfe716097), SPH_C32(0x45510000),
+	  SPH_C32(0x70b60001), SPH_C32(0xc48f4000), SPH_C32(0xef300000),
+	  SPH_C32(0xec8a2380), SPH_C32(0x5c931767), SPH_C32(0xc96b3d13),
+	  SPH_C32(0xfbdbf461) },
+	{ SPH_C32(0xf1140000), SPH_C32(0x2db60002), SPH_C32(0xedcb3380),
+	  SPH_C32(0x1af40000), SPH_C32(0x051e3d3d), SPH_C32(0x1343ac6d),
+	  SPH_C32(0x6ef9e5cc), SPH_C32(0x6f951861), SPH_C32(0x5b1f0000),
+	  SPH_C32(0xae790001), SPH_C32(0xa9774180), SPH_C32(0x98140000),
+	  SPH_C32(0x00cd241e), SPH_C32(0xa8337e29), SPH_C32(0x04c82501),
+	  SPH_C32(0x6371bd0f) },
+	{ SPH_C32(0x43120000), SPH_C32(0xe8df0002), SPH_C32(0xc5c82180),
+	  SPH_C32(0x6e930000), SPH_C32(0xb3dc0bc9), SPH_C32(0xf8519595),
+	  SPH_C32(0x5d283a20), SPH_C32(0x66db29f9), SPH_C32(0xf7570000),
+	  SPH_C32(0xb5df0001), SPH_C32(0xec8c5200), SPH_C32(0x9b570000),
+	  SPH_C32(0x5a481574), SPH_C32(0xb7812e9f), SPH_C32(0xfabae2ff),
+	  SPH_C32(0xf295c5f9) },
+	{ SPH_C32(0xef5a0000), SPH_C32(0xf3790002), SPH_C32(0x80333200),
+	  SPH_C32(0x6dd00000), SPH_C32(0xe9593aa3), SPH_C32(0xe7e3c523),
+	  SPH_C32(0xa35afdde), SPH_C32(0xf73f510f), SPH_C32(0xe9190000),
+	  SPH_C32(0x6b100001), SPH_C32(0x81745380), SPH_C32(0xec730000),
+	  SPH_C32(0xb60f12ea), SPH_C32(0x432147d1), SPH_C32(0x3719faed),
+	  SPH_C32(0x6a3f8c97) },
+	{ SPH_C32(0xf39f0000), SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000),
+	  SPH_C32(0x35a20000), SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed),
+	  SPH_C32(0x3b19d5bd), SPH_C32(0x5d6336ec), SPH_C32(0x9e740000),
+	  SPH_C32(0x799f0001), SPH_C32(0x8d258000), SPH_C32(0x6ed10000),
+	  SPH_C32(0x267448d9), SPH_C32(0x1eea2356), SPH_C32(0x8a3d5665),
+	  SPH_C32(0x13b74e4f) },
+	{ SPH_C32(0x5fd70000), SPH_C32(0xb1f90003), SPH_C32(0x941ad380),
+	  SPH_C32(0x36e10000), SPH_C32(0x40d2488e), SPH_C32(0x75131b5b),
+	  SPH_C32(0xc56b1243), SPH_C32(0xcc874e1a), SPH_C32(0x803a0000),
+	  SPH_C32(0xa7500001), SPH_C32(0xe0dd8180), SPH_C32(0x19f50000),
+	  SPH_C32(0xca334f47), SPH_C32(0xea4a4a18), SPH_C32(0x479e4e77),
+	  SPH_C32(0x8b1d0721) },
+	{ SPH_C32(0xedd10000), SPH_C32(0x74900003), SPH_C32(0xbc19c180),
+	  SPH_C32(0x42860000), SPH_C32(0xf6107e7a), SPH_C32(0x9e0122a3),
+	  SPH_C32(0xf6bacdaf), SPH_C32(0xc5c97f82), SPH_C32(0x2c720000),
+	  SPH_C32(0xbcf60001), SPH_C32(0xa5269200), SPH_C32(0x1ab60000),
+	  SPH_C32(0x90b67e2d), SPH_C32(0xf5f81aae), SPH_C32(0xb9ec8989),
+	  SPH_C32(0x1af97fd7) },
+	{ SPH_C32(0x41990000), SPH_C32(0x6f360003), SPH_C32(0xf9e2d200),
+	  SPH_C32(0x41c50000), SPH_C32(0xac954f10), SPH_C32(0x81b37215),
+	  SPH_C32(0x08c80a51), SPH_C32(0x542d0774), SPH_C32(0x323c0000),
+	  SPH_C32(0x62390001), SPH_C32(0xc8de9380), SPH_C32(0x6d920000),
+	  SPH_C32(0x7cf179b3), SPH_C32(0x015873e0), SPH_C32(0x744f919b),
+	  SPH_C32(0x825336b9) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0x9cff0000), SPH_C32(0xfe760000), SPH_C32(0xb10f7380),
+	  SPH_C32(0x41870000), SPH_C32(0x393d0c00), SPH_C32(0x6708c4d6),
+	  SPH_C32(0xdfdd6614), SPH_C32(0x214160c2), SPH_C32(0xa8800000),
+	  SPH_C32(0x04260002), SPH_C32(0x78968180), SPH_C32(0xadb60000),
+	  SPH_C32(0x1a9a5dfa), SPH_C32(0xc29235c4), SPH_C32(0x3fd1f0bc),
+	  SPH_C32(0x3e128be3) },
+	{ SPH_C32(0x2ef90000), SPH_C32(0x3b1f0000), SPH_C32(0x990c6180),
+	  SPH_C32(0x35e00000), SPH_C32(0x8fff3af4), SPH_C32(0x8c1afd2e),
+	  SPH_C32(0xec0cb9f8), SPH_C32(0x280f515a), SPH_C32(0x04c80000),
+	  SPH_C32(0x1f800002), SPH_C32(0x3d6d9200), SPH_C32(0xaef50000),
+	  SPH_C32(0x401f6c90), SPH_C32(0xdd206572), SPH_C32(0xc1a33742),
+	  SPH_C32(0xaff6f315) },
+	{ SPH_C32(0x82b10000), SPH_C32(0x20b90000), SPH_C32(0xdcf77200),
+	  SPH_C32(0x36a30000), SPH_C32(0xd57a0b9e), SPH_C32(0x93a8ad98),
+	  SPH_C32(0x127e7e06), SPH_C32(0xb9eb29ac), SPH_C32(0x1a860000),
+	  SPH_C32(0xc14f0002), SPH_C32(0x50959380), SPH_C32(0xd9d10000),
+	  SPH_C32(0xac586b0e), SPH_C32(0x29800c3c), SPH_C32(0x0c002f50),
+	  SPH_C32(0x375cba7b) },
+	{ SPH_C32(0x9e740000), SPH_C32(0x799f0001), SPH_C32(0x8d258000),
+	  SPH_C32(0x6ed10000), SPH_C32(0x267448d9), SPH_C32(0x1eea2356),
+	  SPH_C32(0x8a3d5665), SPH_C32(0x13b74e4f), SPH_C32(0x6deb0000),
+	  SPH_C32(0xd3c00002), SPH_C32(0x5cc44000), SPH_C32(0x5b730000),
+	  SPH_C32(0x3c23313d), SPH_C32(0x744b68bb), SPH_C32(0xb12483d8),
+	  SPH_C32(0x4ed478a3) },
+	{ SPH_C32(0x323c0000), SPH_C32(0x62390001), SPH_C32(0xc8de9380),
+	  SPH_C32(0x6d920000), SPH_C32(0x7cf179b3), SPH_C32(0x015873e0),
+	  SPH_C32(0x744f919b), SPH_C32(0x825336b9), SPH_C32(0x73a50000),
+	  SPH_C32(0x0d0f0002), SPH_C32(0x313c4180), SPH_C32(0x2c570000),
+	  SPH_C32(0xd06436a3), SPH_C32(0x80eb01f5), SPH_C32(0x7c879bca),
+	  SPH_C32(0xd67e31cd) },
+	{ SPH_C32(0x803a0000), SPH_C32(0xa7500001), SPH_C32(0xe0dd8180),
+	  SPH_C32(0x19f50000), SPH_C32(0xca334f47), SPH_C32(0xea4a4a18),
+	  SPH_C32(0x479e4e77), SPH_C32(0x8b1d0721), SPH_C32(0xdfed0000),
+	  SPH_C32(0x16a90002), SPH_C32(0x74c75200), SPH_C32(0x2f140000),
+	  SPH_C32(0x8ae107c9), SPH_C32(0x9f595143), SPH_C32(0x82f55c34),
+	  SPH_C32(0x479a493b) },
+	{ SPH_C32(0x2c720000), SPH_C32(0xbcf60001), SPH_C32(0xa5269200),
+	  SPH_C32(0x1ab60000), SPH_C32(0x90b67e2d), SPH_C32(0xf5f81aae),
+	  SPH_C32(0xb9ec8989), SPH_C32(0x1af97fd7), SPH_C32(0xc1a30000),
+	  SPH_C32(0xc8660002), SPH_C32(0x193f5380), SPH_C32(0x58300000),
+	  SPH_C32(0x66a60057), SPH_C32(0x6bf9380d), SPH_C32(0x4f564426),
+	  SPH_C32(0xdf300055) },
+	{ SPH_C32(0xeb920000), SPH_C32(0xecf90000), SPH_C32(0xbd5ea000),
+	  SPH_C32(0xc3250000), SPH_C32(0xa9465633), SPH_C32(0x3ac3a051),
+	  SPH_C32(0x62f9ca9c), SPH_C32(0x58c9a21a), SPH_C32(0xc3280000),
+	  SPH_C32(0x4f8f0003), SPH_C32(0x2515a000), SPH_C32(0x77660000),
+	  SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d), SPH_C32(0x1ab67457),
+	  SPH_C32(0xedc62ed8) },
+	{ SPH_C32(0x47da0000), SPH_C32(0xf75f0000), SPH_C32(0xf8a5b380),
+	  SPH_C32(0xc0660000), SPH_C32(0xf3c36759), SPH_C32(0x2571f0e7),
+	  SPH_C32(0x9c8b0d62), SPH_C32(0xc92ddaec), SPH_C32(0xdd660000),
+	  SPH_C32(0x91400003), SPH_C32(0x48eda180), SPH_C32(0x00420000),
+	  SPH_C32(0x95a84310), SPH_C32(0xe6bbb6c3), SPH_C32(0xd7156c45),
+	  SPH_C32(0x756c67b6) },
+	{ SPH_C32(0xf5dc0000), SPH_C32(0x32360000), SPH_C32(0xd0a6a180),
+	  SPH_C32(0xb4010000), SPH_C32(0x450151ad), SPH_C32(0xce63c91f),
+	  SPH_C32(0xaf5ad28e), SPH_C32(0xc063eb74), SPH_C32(0x712e0000),
+	  SPH_C32(0x8ae60003), SPH_C32(0x0d16b200), SPH_C32(0x03010000),
+	  SPH_C32(0xcf2d727a), SPH_C32(0xf909e675), SPH_C32(0x2967abbb),
+	  SPH_C32(0xe4881f40) },
+	{ SPH_C32(0x59940000), SPH_C32(0x29900000), SPH_C32(0x955db200),
+	  SPH_C32(0xb7420000), SPH_C32(0x1f8460c7), SPH_C32(0xd1d199a9),
+	  SPH_C32(0x51281570), SPH_C32(0x51879382), SPH_C32(0x6f600000),
+	  SPH_C32(0x54290003), SPH_C32(0x60eeb380), SPH_C32(0x74250000),
+	  SPH_C32(0x236a75e4), SPH_C32(0x0da98f3b), SPH_C32(0xe4c4b3a9),
+	  SPH_C32(0x7c22562e) },
+	{ SPH_C32(0x45510000), SPH_C32(0x70b60001), SPH_C32(0xc48f4000),
+	  SPH_C32(0xef300000), SPH_C32(0xec8a2380), SPH_C32(0x5c931767),
+	  SPH_C32(0xc96b3d13), SPH_C32(0xfbdbf461), SPH_C32(0x180d0000),
+	  SPH_C32(0x46a60003), SPH_C32(0x6cbf6000), SPH_C32(0xf6870000),
+	  SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc), SPH_C32(0x59e01f21),
+	  SPH_C32(0x05aa94f6) },
+	{ SPH_C32(0xe9190000), SPH_C32(0x6b100001), SPH_C32(0x81745380),
+	  SPH_C32(0xec730000), SPH_C32(0xb60f12ea), SPH_C32(0x432147d1),
+	  SPH_C32(0x3719faed), SPH_C32(0x6a3f8c97), SPH_C32(0x06430000),
+	  SPH_C32(0x98690003), SPH_C32(0x01476180), SPH_C32(0x81a30000),
+	  SPH_C32(0x5f562849), SPH_C32(0xa4c282f2), SPH_C32(0x94430733),
+	  SPH_C32(0x9d00dd98) },
+	{ SPH_C32(0x5b1f0000), SPH_C32(0xae790001), SPH_C32(0xa9774180),
+	  SPH_C32(0x98140000), SPH_C32(0x00cd241e), SPH_C32(0xa8337e29),
+	  SPH_C32(0x04c82501), SPH_C32(0x6371bd0f), SPH_C32(0xaa0b0000),
+	  SPH_C32(0x83cf0003), SPH_C32(0x44bc7200), SPH_C32(0x82e00000),
+	  SPH_C32(0x05d31923), SPH_C32(0xbb70d244), SPH_C32(0x6a31c0cd),
+	  SPH_C32(0x0ce4a56e) },
+	{ SPH_C32(0xf7570000), SPH_C32(0xb5df0001), SPH_C32(0xec8c5200),
+	  SPH_C32(0x9b570000), SPH_C32(0x5a481574), SPH_C32(0xb7812e9f),
+	  SPH_C32(0xfabae2ff), SPH_C32(0xf295c5f9), SPH_C32(0xb4450000),
+	  SPH_C32(0x5d000003), SPH_C32(0x29447380), SPH_C32(0xf5c40000),
+	  SPH_C32(0xe9941ebd), SPH_C32(0x4fd0bb0a), SPH_C32(0xa792d8df),
+	  SPH_C32(0x944eec00) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0x1a860000), SPH_C32(0xc14f0002), SPH_C32(0x50959380),
+	  SPH_C32(0xd9d10000), SPH_C32(0xac586b0e), SPH_C32(0x29800c3c),
+	  SPH_C32(0x0c002f50), SPH_C32(0x375cba7b), SPH_C32(0x98370000),
+	  SPH_C32(0xe1f60002), SPH_C32(0x8c62e180), SPH_C32(0xef720000),
+	  SPH_C32(0x79226090), SPH_C32(0xba28a1a4), SPH_C32(0x1e7e5156),
+	  SPH_C32(0x8eb793d7) },
+	{ SPH_C32(0xa8800000), SPH_C32(0x04260002), SPH_C32(0x78968180),
+	  SPH_C32(0xadb60000), SPH_C32(0x1a9a5dfa), SPH_C32(0xc29235c4),
+	  SPH_C32(0x3fd1f0bc), SPH_C32(0x3e128be3), SPH_C32(0x347f0000),
+	  SPH_C32(0xfa500002), SPH_C32(0xc999f200), SPH_C32(0xec310000),
+	  SPH_C32(0x23a751fa), SPH_C32(0xa59af112), SPH_C32(0xe00c96a8),
+	  SPH_C32(0x1f53eb21) },
+	{ SPH_C32(0x04c80000), SPH_C32(0x1f800002), SPH_C32(0x3d6d9200),
+	  SPH_C32(0xaef50000), SPH_C32(0x401f6c90), SPH_C32(0xdd206572),
+	  SPH_C32(0xc1a33742), SPH_C32(0xaff6f315), SPH_C32(0x2a310000),
+	  SPH_C32(0x249f0002), SPH_C32(0xa461f380), SPH_C32(0x9b150000),
+	  SPH_C32(0xcfe05664), SPH_C32(0x513a985c), SPH_C32(0x2daf8eba),
+	  SPH_C32(0x87f9a24f) },
+	{ SPH_C32(0x180d0000), SPH_C32(0x46a60003), SPH_C32(0x6cbf6000),
+	  SPH_C32(0xf6870000), SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc),
+	  SPH_C32(0x59e01f21), SPH_C32(0x05aa94f6), SPH_C32(0x5d5c0000),
+	  SPH_C32(0x36100002), SPH_C32(0xa8302000), SPH_C32(0x19b70000),
+	  SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb), SPH_C32(0x908b2232),
+	  SPH_C32(0xfe716097) },
+	{ SPH_C32(0xb4450000), SPH_C32(0x5d000003), SPH_C32(0x29447380),
+	  SPH_C32(0xf5c40000), SPH_C32(0xe9941ebd), SPH_C32(0x4fd0bb0a),
+	  SPH_C32(0xa792d8df), SPH_C32(0x944eec00), SPH_C32(0x43120000),
+	  SPH_C32(0xe8df0002), SPH_C32(0xc5c82180), SPH_C32(0x6e930000),
+	  SPH_C32(0xb3dc0bc9), SPH_C32(0xf8519595), SPH_C32(0x5d283a20),
+	  SPH_C32(0x66db29f9) },
+	{ SPH_C32(0x06430000), SPH_C32(0x98690003), SPH_C32(0x01476180),
+	  SPH_C32(0x81a30000), SPH_C32(0x5f562849), SPH_C32(0xa4c282f2),
+	  SPH_C32(0x94430733), SPH_C32(0x9d00dd98), SPH_C32(0xef5a0000),
+	  SPH_C32(0xf3790002), SPH_C32(0x80333200), SPH_C32(0x6dd00000),
+	  SPH_C32(0xe9593aa3), SPH_C32(0xe7e3c523), SPH_C32(0xa35afdde),
+	  SPH_C32(0xf73f510f) },
+	{ SPH_C32(0xaa0b0000), SPH_C32(0x83cf0003), SPH_C32(0x44bc7200),
+	  SPH_C32(0x82e00000), SPH_C32(0x05d31923), SPH_C32(0xbb70d244),
+	  SPH_C32(0x6a31c0cd), SPH_C32(0x0ce4a56e), SPH_C32(0xf1140000),
+	  SPH_C32(0x2db60002), SPH_C32(0xedcb3380), SPH_C32(0x1af40000),
+	  SPH_C32(0x051e3d3d), SPH_C32(0x1343ac6d), SPH_C32(0x6ef9e5cc),
+	  SPH_C32(0x6f951861) },
+	{ SPH_C32(0x6deb0000), SPH_C32(0xd3c00002), SPH_C32(0x5cc44000),
+	  SPH_C32(0x5b730000), SPH_C32(0x3c23313d), SPH_C32(0x744b68bb),
+	  SPH_C32(0xb12483d8), SPH_C32(0x4ed478a3), SPH_C32(0xf39f0000),
+	  SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000), SPH_C32(0x35a20000),
+	  SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed), SPH_C32(0x3b19d5bd),
+	  SPH_C32(0x5d6336ec) },
+	{ SPH_C32(0xc1a30000), SPH_C32(0xc8660002), SPH_C32(0x193f5380),
+	  SPH_C32(0x58300000), SPH_C32(0x66a60057), SPH_C32(0x6bf9380d),
+	  SPH_C32(0x4f564426), SPH_C32(0xdf300055), SPH_C32(0xedd10000),
+	  SPH_C32(0x74900003), SPH_C32(0xbc19c180), SPH_C32(0x42860000),
+	  SPH_C32(0xf6107e7a), SPH_C32(0x9e0122a3), SPH_C32(0xf6bacdaf),
+	  SPH_C32(0xc5c97f82) },
+	{ SPH_C32(0x73a50000), SPH_C32(0x0d0f0002), SPH_C32(0x313c4180),
+	  SPH_C32(0x2c570000), SPH_C32(0xd06436a3), SPH_C32(0x80eb01f5),
+	  SPH_C32(0x7c879bca), SPH_C32(0xd67e31cd), SPH_C32(0x41990000),
+	  SPH_C32(0x6f360003), SPH_C32(0xf9e2d200), SPH_C32(0x41c50000),
+	  SPH_C32(0xac954f10), SPH_C32(0x81b37215), SPH_C32(0x08c80a51),
+	  SPH_C32(0x542d0774) },
+	{ SPH_C32(0xdfed0000), SPH_C32(0x16a90002), SPH_C32(0x74c75200),
+	  SPH_C32(0x2f140000), SPH_C32(0x8ae107c9), SPH_C32(0x9f595143),
+	  SPH_C32(0x82f55c34), SPH_C32(0x479a493b), SPH_C32(0x5fd70000),
+	  SPH_C32(0xb1f90003), SPH_C32(0x941ad380), SPH_C32(0x36e10000),
+	  SPH_C32(0x40d2488e), SPH_C32(0x75131b5b), SPH_C32(0xc56b1243),
+	  SPH_C32(0xcc874e1a) },
+	{ SPH_C32(0xc3280000), SPH_C32(0x4f8f0003), SPH_C32(0x2515a000),
+	  SPH_C32(0x77660000), SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d),
+	  SPH_C32(0x1ab67457), SPH_C32(0xedc62ed8), SPH_C32(0x28ba0000),
+	  SPH_C32(0xa3760003), SPH_C32(0x984b0000), SPH_C32(0xb4430000),
+	  SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc), SPH_C32(0x784fbecb),
+	  SPH_C32(0xb50f8cc2) },
+	{ SPH_C32(0x6f600000), SPH_C32(0x54290003), SPH_C32(0x60eeb380),
+	  SPH_C32(0x74250000), SPH_C32(0x236a75e4), SPH_C32(0x0da98f3b),
+	  SPH_C32(0xe4c4b3a9), SPH_C32(0x7c22562e), SPH_C32(0x36f40000),
+	  SPH_C32(0x7db90003), SPH_C32(0xf5b30180), SPH_C32(0xc3670000),
+	  SPH_C32(0x3cee1523), SPH_C32(0xdc781692), SPH_C32(0xb5eca6d9),
+	  SPH_C32(0x2da5c5ac) },
+	{ SPH_C32(0xdd660000), SPH_C32(0x91400003), SPH_C32(0x48eda180),
+	  SPH_C32(0x00420000), SPH_C32(0x95a84310), SPH_C32(0xe6bbb6c3),
+	  SPH_C32(0xd7156c45), SPH_C32(0x756c67b6), SPH_C32(0x9abc0000),
+	  SPH_C32(0x661f0003), SPH_C32(0xb0481200), SPH_C32(0xc0240000),
+	  SPH_C32(0x666b2449), SPH_C32(0xc3ca4624), SPH_C32(0x4b9e6127),
+	  SPH_C32(0xbc41bd5a) },
+	{ SPH_C32(0x712e0000), SPH_C32(0x8ae60003), SPH_C32(0x0d16b200),
+	  SPH_C32(0x03010000), SPH_C32(0xcf2d727a), SPH_C32(0xf909e675),
+	  SPH_C32(0x2967abbb), SPH_C32(0xe4881f40), SPH_C32(0x84f20000),
+	  SPH_C32(0xb8d00003), SPH_C32(0xddb01380), SPH_C32(0xb7000000),
+	  SPH_C32(0x8a2c23d7), SPH_C32(0x376a2f6a), SPH_C32(0x863d7935),
+	  SPH_C32(0x24ebf434) }
+};
+
+static const sph_u32 T512_36[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x9e440000), SPH_C32(0x8c370000), SPH_C32(0x30d807ce),
+	  SPH_C32(0xcbaf0000), SPH_C32(0xd1e16d13), SPH_C32(0xc2b875d6),
+	  SPH_C32(0xa615c724), SPH_C32(0x995994f1), SPH_C32(0xd2130000),
+	  SPH_C32(0x45ab0000), SPH_C32(0xf8c50286), SPH_C32(0xc30c0000),
+	  SPH_C32(0x574d284c), SPH_C32(0xda31f145), SPH_C32(0x4f1ee235),
+	  SPH_C32(0xf1f0e16b) },
+	{ SPH_C32(0x9f990000), SPH_C32(0x0c9f0000), SPH_C32(0xc44e0786),
+	  SPH_C32(0x6daf0000), SPH_C32(0x413413b1), SPH_C32(0x155ef9e1),
+	  SPH_C32(0xc00708d9), SPH_C32(0xb5cdd16f), SPH_C32(0x80430000),
+	  SPH_C32(0x6cff0000), SPH_C32(0x92a402c8), SPH_C32(0x33f30000),
+	  SPH_C32(0xcd7c56a0), SPH_C32(0x9f12b08b), SPH_C32(0x80486dd0),
+	  SPH_C32(0xa2f3f264) },
+	{ SPH_C32(0xcdc90000), SPH_C32(0x25cb0000), SPH_C32(0xae2f07c8),
+	  SPH_C32(0x9d500000), SPH_C32(0xdb056d5d), SPH_C32(0x507db82f),
+	  SPH_C32(0x0f51873c), SPH_C32(0xe6cec260), SPH_C32(0xd3ce0000),
+	  SPH_C32(0xc5030000), SPH_C32(0x0c5302ce), SPH_C32(0x650c0000),
+	  SPH_C32(0xc79856ee), SPH_C32(0x0dd77d72), SPH_C32(0x290c2dc8),
+	  SPH_C32(0xdd64a4f5) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0xd3ce0000), SPH_C32(0xc5030000), SPH_C32(0x0c5302ce),
+	  SPH_C32(0x650c0000), SPH_C32(0xc79856ee), SPH_C32(0x0dd77d72),
+	  SPH_C32(0x290c2dc8), SPH_C32(0xdd64a4f5), SPH_C32(0x1e070000),
+	  SPH_C32(0xe0c80000), SPH_C32(0xa27c0506), SPH_C32(0xf85c0000),
+	  SPH_C32(0x1c9d3bb3), SPH_C32(0x5daac55d), SPH_C32(0x265daaf4),
+	  SPH_C32(0x3baa6695) },
+	{ SPH_C32(0xd2130000), SPH_C32(0x45ab0000), SPH_C32(0xf8c50286),
+	  SPH_C32(0xc30c0000), SPH_C32(0x574d284c), SPH_C32(0xda31f145),
+	  SPH_C32(0x4f1ee235), SPH_C32(0xf1f0e16b), SPH_C32(0x4c570000),
+	  SPH_C32(0xc99c0000), SPH_C32(0xc81d0548), SPH_C32(0x08a30000),
+	  SPH_C32(0x86ac455f), SPH_C32(0x18898493), SPH_C32(0xe90b2511),
+	  SPH_C32(0x68a9759a) },
+	{ SPH_C32(0x80430000), SPH_C32(0x6cff0000), SPH_C32(0x92a402c8),
+	  SPH_C32(0x33f30000), SPH_C32(0xcd7c56a0), SPH_C32(0x9f12b08b),
+	  SPH_C32(0x80486dd0), SPH_C32(0xa2f3f264), SPH_C32(0x1fda0000),
+	  SPH_C32(0x60600000), SPH_C32(0x56ea054e), SPH_C32(0x5e5c0000),
+	  SPH_C32(0x8c484511), SPH_C32(0x8a4c496a), SPH_C32(0x404f6509),
+	  SPH_C32(0x173e230b) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) },
+	{ SPH_C32(0x1fda0000), SPH_C32(0x60600000), SPH_C32(0x56ea054e),
+	  SPH_C32(0x5e5c0000), SPH_C32(0x8c484511), SPH_C32(0x8a4c496a),
+	  SPH_C32(0x404f6509), SPH_C32(0x173e230b), SPH_C32(0x9f990000),
+	  SPH_C32(0x0c9f0000), SPH_C32(0xc44e0786), SPH_C32(0x6daf0000),
+	  SPH_C32(0x413413b1), SPH_C32(0x155ef9e1), SPH_C32(0xc00708d9),
+	  SPH_C32(0xb5cdd16f) },
+	{ SPH_C32(0x1e070000), SPH_C32(0xe0c80000), SPH_C32(0xa27c0506),
+	  SPH_C32(0xf85c0000), SPH_C32(0x1c9d3bb3), SPH_C32(0x5daac55d),
+	  SPH_C32(0x265daaf4), SPH_C32(0x3baa6695), SPH_C32(0xcdc90000),
+	  SPH_C32(0x25cb0000), SPH_C32(0xae2f07c8), SPH_C32(0x9d500000),
+	  SPH_C32(0xdb056d5d), SPH_C32(0x507db82f), SPH_C32(0x0f51873c),
+	  SPH_C32(0xe6cec260) },
+	{ SPH_C32(0x4c570000), SPH_C32(0xc99c0000), SPH_C32(0xc81d0548),
+	  SPH_C32(0x08a30000), SPH_C32(0x86ac455f), SPH_C32(0x18898493),
+	  SPH_C32(0xe90b2511), SPH_C32(0x68a9759a), SPH_C32(0x9e440000),
+	  SPH_C32(0x8c370000), SPH_C32(0x30d807ce), SPH_C32(0xcbaf0000),
+	  SPH_C32(0xd1e16d13), SPH_C32(0xc2b875d6), SPH_C32(0xa615c724),
+	  SPH_C32(0x995994f1) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0x2a730000), SPH_C32(0x3ba80000), SPH_C32(0xc35b0bce),
+	  SPH_C32(0x605a0000), SPH_C32(0xeb0f5695), SPH_C32(0x3bcac8ea),
+	  SPH_C32(0x3fda2f87), SPH_C32(0x306c98a4), SPH_C32(0x51220000),
+	  SPH_C32(0x1ed40000), SPH_C32(0x24eb0306), SPH_C32(0x00670000),
+	  SPH_C32(0xb069459d), SPH_C32(0x128d0b9e), SPH_C32(0x00185482),
+	  SPH_C32(0x8b61bcea) },
+	{ SPH_C32(0x2bae0000), SPH_C32(0xbb000000), SPH_C32(0x37cd0b86),
+	  SPH_C32(0xc65a0000), SPH_C32(0x7bda2837), SPH_C32(0xec2c44dd),
+	  SPH_C32(0x59c8e07a), SPH_C32(0x1cf8dd3a), SPH_C32(0x03720000),
+	  SPH_C32(0x37800000), SPH_C32(0x4e8a0348), SPH_C32(0xf0980000),
+	  SPH_C32(0x2a583b71), SPH_C32(0x57ae4a50), SPH_C32(0xcf4edb67),
+	  SPH_C32(0xd862afe5) },
+	{ SPH_C32(0x79fe0000), SPH_C32(0x92540000), SPH_C32(0x5dac0bc8),
+	  SPH_C32(0x36a50000), SPH_C32(0xe1eb56db), SPH_C32(0xa90f0513),
+	  SPH_C32(0x969e6f9f), SPH_C32(0x4ffbce35), SPH_C32(0x50ff0000),
+	  SPH_C32(0x9e7c0000), SPH_C32(0xd07d034e), SPH_C32(0xa6670000),
+	  SPH_C32(0x20bc3b3f), SPH_C32(0xc56b87a9), SPH_C32(0x660a9b7f),
+	  SPH_C32(0xa7f5f974) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xb79f0000), SPH_C32(0xf3830c00),
+	  SPH_C32(0xabf50000), SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c),
+	  SPH_C32(0x99cfe8a3), SPH_C32(0xa9350c55), SPH_C32(0x83310000),
+	  SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180), SPH_C32(0xc36b0000),
+	  SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb), SPH_C32(0x4f06b6b7),
+	  SPH_C32(0x7a915d81) },
+	{ SPH_C32(0xe6670000), SPH_C32(0x9ecb0000), SPH_C32(0x99e20c4e),
+	  SPH_C32(0x5b0a0000), SPH_C32(0xa0df456a), SPH_C32(0xbc51fcf2),
+	  SPH_C32(0x56996746), SPH_C32(0xfa361f5a), SPH_C32(0xd0bc0000),
+	  SPH_C32(0xf2830000), SPH_C32(0x42d90186), SPH_C32(0x95940000),
+	  SPH_C32(0xedc06d9f), SPH_C32(0x5a793722), SPH_C32(0xe642f6af),
+	  SPH_C32(0x05060b10) },
+	{ SPH_C32(0xe7ba0000), SPH_C32(0x1e630000), SPH_C32(0x6d740c06),
+	  SPH_C32(0xfd0a0000), SPH_C32(0x300a3bc8), SPH_C32(0x6bb770c5),
+	  SPH_C32(0x308ba8bb), SPH_C32(0xd6a25ac4), SPH_C32(0x82ec0000),
+	  SPH_C32(0xdbd70000), SPH_C32(0x28b801c8), SPH_C32(0x656b0000),
+	  SPH_C32(0x77f11373), SPH_C32(0x1f5a76ec), SPH_C32(0x2914794a),
+	  SPH_C32(0x5605181f) },
+	{ SPH_C32(0xb5ea0000), SPH_C32(0x37370000), SPH_C32(0x07150c48),
+	  SPH_C32(0x0df50000), SPH_C32(0xaa3b4524), SPH_C32(0x2e94310b),
+	  SPH_C32(0xffdd275e), SPH_C32(0x85a149cb), SPH_C32(0xd1610000),
+	  SPH_C32(0x722b0000), SPH_C32(0xb64f01ce), SPH_C32(0x33940000),
+	  SPH_C32(0x7d15133d), SPH_C32(0x8d9fbb15), SPH_C32(0x80503952),
+	  SPH_C32(0x29924e8e) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0xabed0000), SPH_C32(0xd7ff0000), SPH_C32(0xa569094e),
+	  SPH_C32(0xf5a90000), SPH_C32(0xb6a67e97), SPH_C32(0x733ef456),
+	  SPH_C32(0xd9808daa), SPH_C32(0xbe0b2f5e), SPH_C32(0x1ca80000),
+	  SPH_C32(0x57e00000), SPH_C32(0x18600606), SPH_C32(0xaec40000),
+	  SPH_C32(0xa6107e60), SPH_C32(0xdde2033a), SPH_C32(0x8f01be6e),
+	  SPH_C32(0xcf5c8cee) },
+	{ SPH_C32(0xaa300000), SPH_C32(0x57570000), SPH_C32(0x51ff0906),
+	  SPH_C32(0x53a90000), SPH_C32(0x26730035), SPH_C32(0xa4d87861),
+	  SPH_C32(0xbf924257), SPH_C32(0x929f6ac0), SPH_C32(0x4ef80000),
+	  SPH_C32(0x7eb40000), SPH_C32(0x72010648), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x3c21008c), SPH_C32(0x98c142f4), SPH_C32(0x4057318b),
+	  SPH_C32(0x9c5f9fe1) },
+	{ SPH_C32(0xf8600000), SPH_C32(0x7e030000), SPH_C32(0x3b9e0948),
+	  SPH_C32(0xa3560000), SPH_C32(0xbc427ed9), SPH_C32(0xe1fb39af),
+	  SPH_C32(0x70c4cdb2), SPH_C32(0xc19c79cf), SPH_C32(0x1d750000),
+	  SPH_C32(0xd7480000), SPH_C32(0xecf6064e), SPH_C32(0x08c40000),
+	  SPH_C32(0x36c500c2), SPH_C32(0x0a048f0d), SPH_C32(0xe9137193),
+	  SPH_C32(0xe3c8c970) },
+	{ SPH_C32(0x35a90000), SPH_C32(0x5bc80000), SPH_C32(0x95b10e80),
+	  SPH_C32(0x3e060000), SPH_C32(0x67471384), SPH_C32(0xb1868180),
+	  SPH_C32(0x7f954a8e), SPH_C32(0x2752bbaf), SPH_C32(0xcebb0000),
+	  SPH_C32(0x124b0000), SPH_C32(0xe0a50480), SPH_C32(0x6dc80000),
+	  SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f), SPH_C32(0xc01f5c5b),
+	  SPH_C32(0x3eac6d85) },
+	{ SPH_C32(0x67f90000), SPH_C32(0x729c0000), SPH_C32(0xffd00ece),
+	  SPH_C32(0xcef90000), SPH_C32(0xfd766d68), SPH_C32(0xf4a5c04e),
+	  SPH_C32(0xb0c3c56b), SPH_C32(0x7451a8a0), SPH_C32(0x9d360000),
+	  SPH_C32(0xbbb70000), SPH_C32(0x7e520486), SPH_C32(0x3b370000),
+	  SPH_C32(0xfbb95662), SPH_C32(0x95163f86), SPH_C32(0x695b1c43),
+	  SPH_C32(0x413b3b14) },
+	{ SPH_C32(0x66240000), SPH_C32(0xf2340000), SPH_C32(0x0b460e86),
+	  SPH_C32(0x68f90000), SPH_C32(0x6da313ca), SPH_C32(0x23434c79),
+	  SPH_C32(0xd6d10a96), SPH_C32(0x58c5ed3e), SPH_C32(0xcf660000),
+	  SPH_C32(0x92e30000), SPH_C32(0x143304c8), SPH_C32(0xcbc80000),
+	  SPH_C32(0x6188288e), SPH_C32(0xd0357e48), SPH_C32(0xa60d93a6),
+	  SPH_C32(0x1238281b) },
+	{ SPH_C32(0x34740000), SPH_C32(0xdb600000), SPH_C32(0x61270ec8),
+	  SPH_C32(0x98060000), SPH_C32(0xf7926d26), SPH_C32(0x66600db7),
+	  SPH_C32(0x19878573), SPH_C32(0x0bc6fe31), SPH_C32(0x9ceb0000),
+	  SPH_C32(0x3b1f0000), SPH_C32(0x8ac404ce), SPH_C32(0x9d370000),
+	  SPH_C32(0x6b6c28c0), SPH_C32(0x42f0b3b1), SPH_C32(0x0f49d3be),
+	  SPH_C32(0x6daf7e8a) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0x50ff0000), SPH_C32(0x9e7c0000), SPH_C32(0xd07d034e),
+	  SPH_C32(0xa6670000), SPH_C32(0x20bc3b3f), SPH_C32(0xc56b87a9),
+	  SPH_C32(0x660a9b7f), SPH_C32(0xa7f5f974), SPH_C32(0x29010000),
+	  SPH_C32(0x0c280000), SPH_C32(0x8dd10886), SPH_C32(0x90c20000),
+	  SPH_C32(0xc1576de4), SPH_C32(0x6c6482ba), SPH_C32(0xf094f4e0),
+	  SPH_C32(0xe80e3741) },
+	{ SPH_C32(0x51220000), SPH_C32(0x1ed40000), SPH_C32(0x24eb0306),
+	  SPH_C32(0x00670000), SPH_C32(0xb069459d), SPH_C32(0x128d0b9e),
+	  SPH_C32(0x00185482), SPH_C32(0x8b61bcea), SPH_C32(0x7b510000),
+	  SPH_C32(0x257c0000), SPH_C32(0xe7b008c8), SPH_C32(0x603d0000),
+	  SPH_C32(0x5b661308), SPH_C32(0x2947c374), SPH_C32(0x3fc27b05),
+	  SPH_C32(0xbb0d244e) },
+	{ SPH_C32(0x03720000), SPH_C32(0x37800000), SPH_C32(0x4e8a0348),
+	  SPH_C32(0xf0980000), SPH_C32(0x2a583b71), SPH_C32(0x57ae4a50),
+	  SPH_C32(0xcf4edb67), SPH_C32(0xd862afe5), SPH_C32(0x28dc0000),
+	  SPH_C32(0x8c800000), SPH_C32(0x794708ce), SPH_C32(0x36c20000),
+	  SPH_C32(0x51821346), SPH_C32(0xbb820e8d), SPH_C32(0x96863b1d),
+	  SPH_C32(0xc49a72df) },
+	{ SPH_C32(0xcebb0000), SPH_C32(0x124b0000), SPH_C32(0xe0a50480),
+	  SPH_C32(0x6dc80000), SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f),
+	  SPH_C32(0xc01f5c5b), SPH_C32(0x3eac6d85), SPH_C32(0xfb120000),
+	  SPH_C32(0x49830000), SPH_C32(0x75140a00), SPH_C32(0x53ce0000),
+	  SPH_C32(0x961a45a8), SPH_C32(0xb65573ff), SPH_C32(0xbf8a16d5),
+	  SPH_C32(0x19fed62a) },
+	{ SPH_C32(0x9ceb0000), SPH_C32(0x3b1f0000), SPH_C32(0x8ac404ce),
+	  SPH_C32(0x9d370000), SPH_C32(0x6b6c28c0), SPH_C32(0x42f0b3b1),
+	  SPH_C32(0x0f49d3be), SPH_C32(0x6daf7e8a), SPH_C32(0xa89f0000),
+	  SPH_C32(0xe07f0000), SPH_C32(0xebe30a06), SPH_C32(0x05310000),
+	  SPH_C32(0x9cfe45e6), SPH_C32(0x2490be06), SPH_C32(0x16ce56cd),
+	  SPH_C32(0x666980bb) },
+	{ SPH_C32(0x9d360000), SPH_C32(0xbbb70000), SPH_C32(0x7e520486),
+	  SPH_C32(0x3b370000), SPH_C32(0xfbb95662), SPH_C32(0x95163f86),
+	  SPH_C32(0x695b1c43), SPH_C32(0x413b3b14), SPH_C32(0xfacf0000),
+	  SPH_C32(0xc92b0000), SPH_C32(0x81820a48), SPH_C32(0xf5ce0000),
+	  SPH_C32(0x06cf3b0a), SPH_C32(0x61b3ffc8), SPH_C32(0xd998d928),
+	  SPH_C32(0x356a93b4) },
+	{ SPH_C32(0xcf660000), SPH_C32(0x92e30000), SPH_C32(0x143304c8),
+	  SPH_C32(0xcbc80000), SPH_C32(0x6188288e), SPH_C32(0xd0357e48),
+	  SPH_C32(0xa60d93a6), SPH_C32(0x1238281b), SPH_C32(0xa9420000),
+	  SPH_C32(0x60d70000), SPH_C32(0x1f750a4e), SPH_C32(0xa3310000),
+	  SPH_C32(0x0c2b3b44), SPH_C32(0xf3763231), SPH_C32(0x70dc9930),
+	  SPH_C32(0x4afdc525) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0xd1610000), SPH_C32(0x722b0000), SPH_C32(0xb64f01ce),
+	  SPH_C32(0x33940000), SPH_C32(0x7d15133d), SPH_C32(0x8d9fbb15),
+	  SPH_C32(0x80503952), SPH_C32(0x29924e8e), SPH_C32(0x648b0000),
+	  SPH_C32(0x451c0000), SPH_C32(0xb15a0d86), SPH_C32(0x3e610000),
+	  SPH_C32(0xd72e5619), SPH_C32(0xa30b8a1e), SPH_C32(0x7f8d1e0c),
+	  SPH_C32(0xac330745) },
+	{ SPH_C32(0xd0bc0000), SPH_C32(0xf2830000), SPH_C32(0x42d90186),
+	  SPH_C32(0x95940000), SPH_C32(0xedc06d9f), SPH_C32(0x5a793722),
+	  SPH_C32(0xe642f6af), SPH_C32(0x05060b10), SPH_C32(0x36db0000),
+	  SPH_C32(0x6c480000), SPH_C32(0xdb3b0dc8), SPH_C32(0xce9e0000),
+	  SPH_C32(0x4d1f28f5), SPH_C32(0xe628cbd0), SPH_C32(0xb0db91e9),
+	  SPH_C32(0xff30144a) },
+	{ SPH_C32(0x82ec0000), SPH_C32(0xdbd70000), SPH_C32(0x28b801c8),
+	  SPH_C32(0x656b0000), SPH_C32(0x77f11373), SPH_C32(0x1f5a76ec),
+	  SPH_C32(0x2914794a), SPH_C32(0x5605181f), SPH_C32(0x65560000),
+	  SPH_C32(0xc5b40000), SPH_C32(0x45cc0dce), SPH_C32(0x98610000),
+	  SPH_C32(0x47fb28bb), SPH_C32(0x74ed0629), SPH_C32(0x199fd1f1),
+	  SPH_C32(0x80a742db) },
+	{ SPH_C32(0x4f250000), SPH_C32(0xfe1c0000), SPH_C32(0x86970600),
+	  SPH_C32(0xf83b0000), SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3),
+	  SPH_C32(0x2645fe76), SPH_C32(0xb0cbda7f), SPH_C32(0xb6980000),
+	  SPH_C32(0x00b70000), SPH_C32(0x499f0f00), SPH_C32(0xfd6d0000),
+	  SPH_C32(0x80637e55), SPH_C32(0x793a7b5b), SPH_C32(0x3093fc39),
+	  SPH_C32(0x5dc3e62e) },
+	{ SPH_C32(0x1d750000), SPH_C32(0xd7480000), SPH_C32(0xecf6064e),
+	  SPH_C32(0x08c40000), SPH_C32(0x36c500c2), SPH_C32(0x0a048f0d),
+	  SPH_C32(0xe9137193), SPH_C32(0xe3c8c970), SPH_C32(0xe5150000),
+	  SPH_C32(0xa94b0000), SPH_C32(0xd7680f06), SPH_C32(0xab920000),
+	  SPH_C32(0x8a877e1b), SPH_C32(0xebffb6a2), SPH_C32(0x99d7bc21),
+	  SPH_C32(0x2254b0bf) },
+	{ SPH_C32(0x1ca80000), SPH_C32(0x57e00000), SPH_C32(0x18600606),
+	  SPH_C32(0xaec40000), SPH_C32(0xa6107e60), SPH_C32(0xdde2033a),
+	  SPH_C32(0x8f01be6e), SPH_C32(0xcf5c8cee), SPH_C32(0xb7450000),
+	  SPH_C32(0x801f0000), SPH_C32(0xbd090f48), SPH_C32(0x5b6d0000),
+	  SPH_C32(0x10b600f7), SPH_C32(0xaedcf76c), SPH_C32(0x568133c4),
+	  SPH_C32(0x7157a3b0) },
+	{ SPH_C32(0x4ef80000), SPH_C32(0x7eb40000), SPH_C32(0x72010648),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x3c21008c), SPH_C32(0x98c142f4),
+	  SPH_C32(0x4057318b), SPH_C32(0x9c5f9fe1), SPH_C32(0xe4c80000),
+	  SPH_C32(0x29e30000), SPH_C32(0x23fe0f4e), SPH_C32(0x0d920000),
+	  SPH_C32(0x1a5200b9), SPH_C32(0x3c193a95), SPH_C32(0xffc573dc),
+	  SPH_C32(0x0ec0f521) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0x28dc0000), SPH_C32(0x8c800000), SPH_C32(0x794708ce),
+	  SPH_C32(0x36c20000), SPH_C32(0x51821346), SPH_C32(0xbb820e8d),
+	  SPH_C32(0x96863b1d), SPH_C32(0xc49a72df), SPH_C32(0x2bae0000),
+	  SPH_C32(0xbb000000), SPH_C32(0x37cd0b86), SPH_C32(0xc65a0000),
+	  SPH_C32(0x7bda2837), SPH_C32(0xec2c44dd), SPH_C32(0x59c8e07a),
+	  SPH_C32(0x1cf8dd3a) },
+	{ SPH_C32(0x29010000), SPH_C32(0x0c280000), SPH_C32(0x8dd10886),
+	  SPH_C32(0x90c20000), SPH_C32(0xc1576de4), SPH_C32(0x6c6482ba),
+	  SPH_C32(0xf094f4e0), SPH_C32(0xe80e3741), SPH_C32(0x79fe0000),
+	  SPH_C32(0x92540000), SPH_C32(0x5dac0bc8), SPH_C32(0x36a50000),
+	  SPH_C32(0xe1eb56db), SPH_C32(0xa90f0513), SPH_C32(0x969e6f9f),
+	  SPH_C32(0x4ffbce35) },
+	{ SPH_C32(0x7b510000), SPH_C32(0x257c0000), SPH_C32(0xe7b008c8),
+	  SPH_C32(0x603d0000), SPH_C32(0x5b661308), SPH_C32(0x2947c374),
+	  SPH_C32(0x3fc27b05), SPH_C32(0xbb0d244e), SPH_C32(0x2a730000),
+	  SPH_C32(0x3ba80000), SPH_C32(0xc35b0bce), SPH_C32(0x605a0000),
+	  SPH_C32(0xeb0f5695), SPH_C32(0x3bcac8ea), SPH_C32(0x3fda2f87),
+	  SPH_C32(0x306c98a4) },
+	{ SPH_C32(0xb6980000), SPH_C32(0x00b70000), SPH_C32(0x499f0f00),
+	  SPH_C32(0xfd6d0000), SPH_C32(0x80637e55), SPH_C32(0x793a7b5b),
+	  SPH_C32(0x3093fc39), SPH_C32(0x5dc3e62e), SPH_C32(0xf9bd0000),
+	  SPH_C32(0xfeab0000), SPH_C32(0xcf080900), SPH_C32(0x05560000),
+	  SPH_C32(0x2c97007b), SPH_C32(0x361db598), SPH_C32(0x16d6024f),
+	  SPH_C32(0xed083c51) },
+	{ SPH_C32(0xe4c80000), SPH_C32(0x29e30000), SPH_C32(0x23fe0f4e),
+	  SPH_C32(0x0d920000), SPH_C32(0x1a5200b9), SPH_C32(0x3c193a95),
+	  SPH_C32(0xffc573dc), SPH_C32(0x0ec0f521), SPH_C32(0xaa300000),
+	  SPH_C32(0x57570000), SPH_C32(0x51ff0906), SPH_C32(0x53a90000),
+	  SPH_C32(0x26730035), SPH_C32(0xa4d87861), SPH_C32(0xbf924257),
+	  SPH_C32(0x929f6ac0) },
+	{ SPH_C32(0xe5150000), SPH_C32(0xa94b0000), SPH_C32(0xd7680f06),
+	  SPH_C32(0xab920000), SPH_C32(0x8a877e1b), SPH_C32(0xebffb6a2),
+	  SPH_C32(0x99d7bc21), SPH_C32(0x2254b0bf), SPH_C32(0xf8600000),
+	  SPH_C32(0x7e030000), SPH_C32(0x3b9e0948), SPH_C32(0xa3560000),
+	  SPH_C32(0xbc427ed9), SPH_C32(0xe1fb39af), SPH_C32(0x70c4cdb2),
+	  SPH_C32(0xc19c79cf) },
+	{ SPH_C32(0xb7450000), SPH_C32(0x801f0000), SPH_C32(0xbd090f48),
+	  SPH_C32(0x5b6d0000), SPH_C32(0x10b600f7), SPH_C32(0xaedcf76c),
+	  SPH_C32(0x568133c4), SPH_C32(0x7157a3b0), SPH_C32(0xabed0000),
+	  SPH_C32(0xd7ff0000), SPH_C32(0xa569094e), SPH_C32(0xf5a90000),
+	  SPH_C32(0xb6a67e97), SPH_C32(0x733ef456), SPH_C32(0xd9808daa),
+	  SPH_C32(0xbe0b2f5e) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) },
+	{ SPH_C32(0xa9420000), SPH_C32(0x60d70000), SPH_C32(0x1f750a4e),
+	  SPH_C32(0xa3310000), SPH_C32(0x0c2b3b44), SPH_C32(0xf3763231),
+	  SPH_C32(0x70dc9930), SPH_C32(0x4afdc525), SPH_C32(0x66240000),
+	  SPH_C32(0xf2340000), SPH_C32(0x0b460e86), SPH_C32(0x68f90000),
+	  SPH_C32(0x6da313ca), SPH_C32(0x23434c79), SPH_C32(0xd6d10a96),
+	  SPH_C32(0x58c5ed3e) },
+	{ SPH_C32(0xa89f0000), SPH_C32(0xe07f0000), SPH_C32(0xebe30a06),
+	  SPH_C32(0x05310000), SPH_C32(0x9cfe45e6), SPH_C32(0x2490be06),
+	  SPH_C32(0x16ce56cd), SPH_C32(0x666980bb), SPH_C32(0x34740000),
+	  SPH_C32(0xdb600000), SPH_C32(0x61270ec8), SPH_C32(0x98060000),
+	  SPH_C32(0xf7926d26), SPH_C32(0x66600db7), SPH_C32(0x19878573),
+	  SPH_C32(0x0bc6fe31) },
+	{ SPH_C32(0xfacf0000), SPH_C32(0xc92b0000), SPH_C32(0x81820a48),
+	  SPH_C32(0xf5ce0000), SPH_C32(0x06cf3b0a), SPH_C32(0x61b3ffc8),
+	  SPH_C32(0xd998d928), SPH_C32(0x356a93b4), SPH_C32(0x67f90000),
+	  SPH_C32(0x729c0000), SPH_C32(0xffd00ece), SPH_C32(0xcef90000),
+	  SPH_C32(0xfd766d68), SPH_C32(0xf4a5c04e), SPH_C32(0xb0c3c56b),
+	  SPH_C32(0x7451a8a0) },
+	{ SPH_C32(0x37060000), SPH_C32(0xece00000), SPH_C32(0x2fad0d80),
+	  SPH_C32(0x689e0000), SPH_C32(0xddca5657), SPH_C32(0x31ce47e7),
+	  SPH_C32(0xd6c95e14), SPH_C32(0xd3a451d4), SPH_C32(0xb4370000),
+	  SPH_C32(0xb79f0000), SPH_C32(0xf3830c00), SPH_C32(0xabf50000),
+	  SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c), SPH_C32(0x99cfe8a3),
+	  SPH_C32(0xa9350c55) },
+	{ SPH_C32(0x65560000), SPH_C32(0xc5b40000), SPH_C32(0x45cc0dce),
+	  SPH_C32(0x98610000), SPH_C32(0x47fb28bb), SPH_C32(0x74ed0629),
+	  SPH_C32(0x199fd1f1), SPH_C32(0x80a742db), SPH_C32(0xe7ba0000),
+	  SPH_C32(0x1e630000), SPH_C32(0x6d740c06), SPH_C32(0xfd0a0000),
+	  SPH_C32(0x300a3bc8), SPH_C32(0x6bb770c5), SPH_C32(0x308ba8bb),
+	  SPH_C32(0xd6a25ac4) },
+	{ SPH_C32(0x648b0000), SPH_C32(0x451c0000), SPH_C32(0xb15a0d86),
+	  SPH_C32(0x3e610000), SPH_C32(0xd72e5619), SPH_C32(0xa30b8a1e),
+	  SPH_C32(0x7f8d1e0c), SPH_C32(0xac330745), SPH_C32(0xb5ea0000),
+	  SPH_C32(0x37370000), SPH_C32(0x07150c48), SPH_C32(0x0df50000),
+	  SPH_C32(0xaa3b4524), SPH_C32(0x2e94310b), SPH_C32(0xffdd275e),
+	  SPH_C32(0x85a149cb) },
+	{ SPH_C32(0x36db0000), SPH_C32(0x6c480000), SPH_C32(0xdb3b0dc8),
+	  SPH_C32(0xce9e0000), SPH_C32(0x4d1f28f5), SPH_C32(0xe628cbd0),
+	  SPH_C32(0xb0db91e9), SPH_C32(0xff30144a), SPH_C32(0xe6670000),
+	  SPH_C32(0x9ecb0000), SPH_C32(0x99e20c4e), SPH_C32(0x5b0a0000),
+	  SPH_C32(0xa0df456a), SPH_C32(0xbc51fcf2), SPH_C32(0x56996746),
+	  SPH_C32(0xfa361f5a) }
+};
+
+static const sph_u32 T512_42[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x5fae0000), SPH_C32(0x322e0000), SPH_C32(0xff47000b),
+	  SPH_C32(0x51663800), SPH_C32(0xa4457f72), SPH_C32(0x316a5179),
+	  SPH_C32(0x580b9c4d), SPH_C32(0xaa31c87f), SPH_C32(0xbf8c0000),
+	  SPH_C32(0x8d040000), SPH_C32(0x81c90014), SPH_C32(0x44c21800),
+	  SPH_C32(0xe92700be), SPH_C32(0xf8617b49), SPH_C32(0x82eb0ed3),
+	  SPH_C32(0x851bce2e) },
+	{ SPH_C32(0x1ab70000), SPH_C32(0x99220000), SPH_C32(0xcff9000a),
+	  SPH_C32(0x386c1800), SPH_C32(0x66b90d6b), SPH_C32(0x80bed174),
+	  SPH_C32(0x75da660b), SPH_C32(0x8e008768), SPH_C32(0xe7cf0000),
+	  SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015), SPH_C32(0x82a92000),
+	  SPH_C32(0x0e105c62), SPH_C32(0x81cc4494), SPH_C32(0x2e98f0bc),
+	  SPH_C32(0xbf5fb79f) },
+	{ SPH_C32(0x42f40000), SPH_C32(0x195c0000), SPH_C32(0xb7ca000b),
+	  SPH_C32(0xfe072000), SPH_C32(0x818e51b7), SPH_C32(0xf913eea9),
+	  SPH_C32(0xd9a99864), SPH_C32(0xb444fed9), SPH_C32(0xfa950000),
+	  SPH_C32(0x26080000), SPH_C32(0xb1770015), SPH_C32(0x2dc83800),
+	  SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44), SPH_C32(0xaf3af495),
+	  SPH_C32(0xa12a8139) },
+	{ SPH_C32(0xa2d60000), SPH_C32(0xa6760000), SPH_C32(0xc9440014),
+	  SPH_C32(0xeba30000), SPH_C32(0xccec2e7b), SPH_C32(0x3018c499),
+	  SPH_C32(0x03490afa), SPH_C32(0x9b6ef888), SPH_C32(0xa53b0000),
+	  SPH_C32(0x14260000), SPH_C32(0x4e30001e), SPH_C32(0x7cae0000),
+	  SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d), SPH_C32(0xf73168d8),
+	  SPH_C32(0x0b1b4946) },
+	{ SPH_C32(0xfa950000), SPH_C32(0x26080000), SPH_C32(0xb1770015),
+	  SPH_C32(0x2dc83800), SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44),
+	  SPH_C32(0xaf3af495), SPH_C32(0xa12a8139), SPH_C32(0xb8610000),
+	  SPH_C32(0x3f540000), SPH_C32(0x06bd001e), SPH_C32(0xd3cf1800),
+	  SPH_C32(0xaa552310), SPH_C32(0xb0a615ed), SPH_C32(0x76936cf1),
+	  SPH_C32(0x156e7fe0) },
+	{ SPH_C32(0xbf8c0000), SPH_C32(0x8d040000), SPH_C32(0x81c90014),
+	  SPH_C32(0x44c21800), SPH_C32(0xe92700be), SPH_C32(0xf8617b49),
+	  SPH_C32(0x82eb0ed3), SPH_C32(0x851bce2e), SPH_C32(0xe0220000),
+	  SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f), SPH_C32(0x15a42000),
+	  SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30), SPH_C32(0xdae0929e),
+	  SPH_C32(0x2f2a0651) },
+	{ SPH_C32(0xe7cf0000), SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015),
+	  SPH_C32(0x82a92000), SPH_C32(0x0e105c62), SPH_C32(0x81cc4494),
+	  SPH_C32(0x2e98f0bc), SPH_C32(0xbf5fb79f), SPH_C32(0xfd780000),
+	  SPH_C32(0x94580000), SPH_C32(0x3603001f), SPH_C32(0xbac53800),
+	  SPH_C32(0x68a95109), SPH_C32(0x017295e0), SPH_C32(0x5b4296b7),
+	  SPH_C32(0x315f30f7) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0xd0db0000), SPH_C32(0x9fea0000), SPH_C32(0x07fc002f),
+	  SPH_C32(0x3d253800), SPH_C32(0x166f5b46), SPH_C32(0x1803aeba),
+	  SPH_C32(0x04e68e03), SPH_C32(0xdc540d25), SPH_C32(0x16980000),
+	  SPH_C32(0xf0110000), SPH_C32(0x3605000c), SPH_C32(0xbae71800),
+	  SPH_C32(0xb4366636), SPH_C32(0xbdf80493), SPH_C32(0x75c240b7),
+	  SPH_C32(0xc6c322c5) },
+	{ SPH_C32(0x95c20000), SPH_C32(0x34e60000), SPH_C32(0x3742002e),
+	  SPH_C32(0x542f1800), SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7),
+	  SPH_C32(0x29377445), SPH_C32(0xf8654232), SPH_C32(0x4edb0000),
+	  SPH_C32(0x706f0000), SPH_C32(0x4e36000d), SPH_C32(0x7c8c2000),
+	  SPH_C32(0x53013aea), SPH_C32(0xc4553b4e), SPH_C32(0xd9b1bed8),
+	  SPH_C32(0xfc875b74) },
+	{ SPH_C32(0xcd810000), SPH_C32(0xb4980000), SPH_C32(0x4f71002f),
+	  SPH_C32(0x92442000), SPH_C32(0x33a47583), SPH_C32(0xd07a116a),
+	  SPH_C32(0x85448a2a), SPH_C32(0xc2213b83), SPH_C32(0x53810000),
+	  SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d), SPH_C32(0xd3ed3800),
+	  SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e), SPH_C32(0x5813baf1),
+	  SPH_C32(0xe2f26dd2) },
+	{ SPH_C32(0x2da30000), SPH_C32(0x0bb20000), SPH_C32(0x31ff0030),
+	  SPH_C32(0x87e00000), SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a),
+	  SPH_C32(0x5fa418b4), SPH_C32(0xed0b3dd2), SPH_C32(0x0c2f0000),
+	  SPH_C32(0x69330000), SPH_C32(0xf9fc0006), SPH_C32(0x828b0000),
+	  SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7), SPH_C32(0x001826bc),
+	  SPH_C32(0x48c3a5ad) },
+	{ SPH_C32(0x75e00000), SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031),
+	  SPH_C32(0x418b3800), SPH_C32(0x99f15693), SPH_C32(0x60dc0487),
+	  SPH_C32(0xf3d7e6db), SPH_C32(0xd74f4463), SPH_C32(0x11750000),
+	  SPH_C32(0x42410000), SPH_C32(0xb1710006), SPH_C32(0x2dea1800),
+	  SPH_C32(0xf7444598), SPH_C32(0xf53f6a37), SPH_C32(0x81ba2295),
+	  SPH_C32(0x56b6930b) },
+	{ SPH_C32(0x30f90000), SPH_C32(0x20c00000), SPH_C32(0x79720030),
+	  SPH_C32(0x28811800), SPH_C32(0x5b0d248a), SPH_C32(0xd108848a),
+	  SPH_C32(0xde061c9d), SPH_C32(0xf37e0b74), SPH_C32(0x49360000),
+	  SPH_C32(0xc23f0000), SPH_C32(0xc9420007), SPH_C32(0xeb812000),
+	  SPH_C32(0x10731944), SPH_C32(0x8c9255ea), SPH_C32(0x2dc9dcfa),
+	  SPH_C32(0x6cf2eaba) },
+	{ SPH_C32(0x68ba0000), SPH_C32(0xa0be0000), SPH_C32(0x01410031),
+	  SPH_C32(0xeeea2000), SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57),
+	  SPH_C32(0x7275e2f2), SPH_C32(0xc93a72c5), SPH_C32(0x546c0000),
+	  SPH_C32(0xe94d0000), SPH_C32(0x81cf0007), SPH_C32(0x44e03800),
+	  SPH_C32(0x35b83781), SPH_C32(0x44ebea3a), SPH_C32(0xac6bd8d3),
+	  SPH_C32(0x7287dc1c) },
+	{ SPH_C32(0x8f750000), SPH_C32(0xadc40000), SPH_C32(0xf8bb0024),
+	  SPH_C32(0x6c430000), SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3),
+	  SPH_C32(0x5ced124e), SPH_C32(0x7665c55a), SPH_C32(0xa9140000),
+	  SPH_C32(0x7d150000), SPH_C32(0xb7cc0018), SPH_C32(0xfe250000),
+	  SPH_C32(0x5d116688), SPH_C32(0x45997fda), SPH_C32(0xf7294e64),
+	  SPH_C32(0x43d8eceb) },
+	{ SPH_C32(0xd7360000), SPH_C32(0x2dba0000), SPH_C32(0x80880025),
+	  SPH_C32(0xaa283800), SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e),
+	  SPH_C32(0xf09eec21), SPH_C32(0x4c21bceb), SPH_C32(0xb44e0000),
+	  SPH_C32(0x56670000), SPH_C32(0xff410018), SPH_C32(0x51441800),
+	  SPH_C32(0x78da484d), SPH_C32(0x8de0c00a), SPH_C32(0x768b4a4d),
+	  SPH_C32(0x5dadda4d) },
+	{ SPH_C32(0x922f0000), SPH_C32(0x86b60000), SPH_C32(0xb0360024),
+	  SPH_C32(0xc3221800), SPH_C32(0x97e10af1), SPH_C32(0xe1104013),
+	  SPH_C32(0xdd4f1667), SPH_C32(0x6810f3fc), SPH_C32(0xec0d0000),
+	  SPH_C32(0xd6190000), SPH_C32(0x87720019), SPH_C32(0x972f2000),
+	  SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7), SPH_C32(0xdaf8b422),
+	  SPH_C32(0x67e9a3fc) },
+	{ SPH_C32(0xca6c0000), SPH_C32(0x06c80000), SPH_C32(0xc8050025),
+	  SPH_C32(0x05492000), SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce),
+	  SPH_C32(0x713ce808), SPH_C32(0x52548a4d), SPH_C32(0xf1570000),
+	  SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019), SPH_C32(0x384e3800),
+	  SPH_C32(0xba263a54), SPH_C32(0x3c344007), SPH_C32(0x5b5ab00b),
+	  SPH_C32(0x799c955a) },
+	{ SPH_C32(0x2a4e0000), SPH_C32(0xb9e20000), SPH_C32(0xb68b003a),
+	  SPH_C32(0x10ed0000), SPH_C32(0x3db429e1), SPH_C32(0x51b655fe),
+	  SPH_C32(0xabdc7a96), SPH_C32(0x7d7e8c1c), SPH_C32(0xaef90000),
+	  SPH_C32(0xcf450000), SPH_C32(0x30b80012), SPH_C32(0x69280000),
+	  SPH_C32(0x1e634526), SPH_C32(0x0d5e117e), SPH_C32(0x03512c46),
+	  SPH_C32(0xd3ad5d25) },
+	{ SPH_C32(0x720d0000), SPH_C32(0x399c0000), SPH_C32(0xceb8003b),
+	  SPH_C32(0xd6863800), SPH_C32(0xda83753d), SPH_C32(0x281b6a23),
+	  SPH_C32(0x07af84f9), SPH_C32(0x473af5ad), SPH_C32(0xb3a30000),
+	  SPH_C32(0xe4370000), SPH_C32(0x78350012), SPH_C32(0xc6491800),
+	  SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae), SPH_C32(0x82f3286f),
+	  SPH_C32(0xcdd86b83) },
+	{ SPH_C32(0x37140000), SPH_C32(0x92900000), SPH_C32(0xfe06003a),
+	  SPH_C32(0xbf8c1800), SPH_C32(0x187f0724), SPH_C32(0x99cfea2e),
+	  SPH_C32(0x2a7e7ebf), SPH_C32(0x630bbaba), SPH_C32(0xebe00000),
+	  SPH_C32(0x64490000), SPH_C32(0x00060013), SPH_C32(0x00222000),
+	  SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173), SPH_C32(0x2e80d600),
+	  SPH_C32(0xf79c1232) },
+	{ SPH_C32(0x6f570000), SPH_C32(0x12ee0000), SPH_C32(0x8635003b),
+	  SPH_C32(0x79e72000), SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3),
+	  SPH_C32(0x860d80d0), SPH_C32(0x594fc30b), SPH_C32(0xf6ba0000),
+	  SPH_C32(0x4f3b0000), SPH_C32(0x488b0013), SPH_C32(0xaf433800),
+	  SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3), SPH_C32(0xaf22d229),
+	  SPH_C32(0xe9e92494) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x53810000), SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d),
+	  SPH_C32(0xd3ed3800), SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e),
+	  SPH_C32(0x5813baf1), SPH_C32(0xe2f26dd2), SPH_C32(0x9e000000),
+	  SPH_C32(0xef850000), SPH_C32(0x49ca0022), SPH_C32(0x41a91800),
+	  SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4), SPH_C32(0xdd5730db),
+	  SPH_C32(0x20d35651) },
+	{ SPH_C32(0x16980000), SPH_C32(0xf0110000), SPH_C32(0x3605000c),
+	  SPH_C32(0xbae71800), SPH_C32(0xb4366636), SPH_C32(0xbdf80493),
+	  SPH_C32(0x75c240b7), SPH_C32(0xc6c322c5), SPH_C32(0xc6430000),
+	  SPH_C32(0x6ffb0000), SPH_C32(0x31f90023), SPH_C32(0x87c22000),
+	  SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29), SPH_C32(0x7124ceb4),
+	  SPH_C32(0x1a972fe0) },
+	{ SPH_C32(0x4edb0000), SPH_C32(0x706f0000), SPH_C32(0x4e36000d),
+	  SPH_C32(0x7c8c2000), SPH_C32(0x53013aea), SPH_C32(0xc4553b4e),
+	  SPH_C32(0xd9b1bed8), SPH_C32(0xfc875b74), SPH_C32(0xdb190000),
+	  SPH_C32(0x44890000), SPH_C32(0x79740023), SPH_C32(0x28a33800),
+	  SPH_C32(0x879213b5), SPH_C32(0x6d8215f9), SPH_C32(0xf086ca9d),
+	  SPH_C32(0x04e21946) },
+	{ SPH_C32(0xaef90000), SPH_C32(0xcf450000), SPH_C32(0x30b80012),
+	  SPH_C32(0x69280000), SPH_C32(0x1e634526), SPH_C32(0x0d5e117e),
+	  SPH_C32(0x03512c46), SPH_C32(0xd3ad5d25), SPH_C32(0x84b70000),
+	  SPH_C32(0x76a70000), SPH_C32(0x86330028), SPH_C32(0x79c50000),
+	  SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480), SPH_C32(0xa88d56d0),
+	  SPH_C32(0xaed3d139) },
+	{ SPH_C32(0xf6ba0000), SPH_C32(0x4f3b0000), SPH_C32(0x488b0013),
+	  SPH_C32(0xaf433800), SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3),
+	  SPH_C32(0xaf22d229), SPH_C32(0xe9e92494), SPH_C32(0x99ed0000),
+	  SPH_C32(0x5dd50000), SPH_C32(0xcebe0028), SPH_C32(0xd6a41800),
+	  SPH_C32(0x061c4202), SPH_C32(0x9491fb50), SPH_C32(0x292f52f9),
+	  SPH_C32(0xb0a6e79f) },
+	{ SPH_C32(0xb3a30000), SPH_C32(0xe4370000), SPH_C32(0x78350012),
+	  SPH_C32(0xc6491800), SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae),
+	  SPH_C32(0x82f3286f), SPH_C32(0xcdd86b83), SPH_C32(0xc1ae0000),
+	  SPH_C32(0xddab0000), SPH_C32(0xb68d0029), SPH_C32(0x10cf2000),
+	  SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d), SPH_C32(0x855cac96),
+	  SPH_C32(0x8ae29e2e) },
+	{ SPH_C32(0xebe00000), SPH_C32(0x64490000), SPH_C32(0x00060013),
+	  SPH_C32(0x00222000), SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173),
+	  SPH_C32(0x2e80d600), SPH_C32(0xf79c1232), SPH_C32(0xdcf40000),
+	  SPH_C32(0xf6d90000), SPH_C32(0xfe000029), SPH_C32(0xbfae3800),
+	  SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d), SPH_C32(0x04fea8bf),
+	  SPH_C32(0x9497a888) },
+	{ SPH_C32(0x0c2f0000), SPH_C32(0x69330000), SPH_C32(0xf9fc0006),
+	  SPH_C32(0x828b0000), SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7),
+	  SPH_C32(0x001826bc), SPH_C32(0x48c3a5ad), SPH_C32(0x218c0000),
+	  SPH_C32(0x62810000), SPH_C32(0xc8030036), SPH_C32(0x056b0000),
+	  SPH_C32(0xac496112), SPH_C32(0x2437eebd), SPH_C32(0x5fbc3e08),
+	  SPH_C32(0xa5c8987f) },
+	{ SPH_C32(0x546c0000), SPH_C32(0xe94d0000), SPH_C32(0x81cf0007),
+	  SPH_C32(0x44e03800), SPH_C32(0x35b83781), SPH_C32(0x44ebea3a),
+	  SPH_C32(0xac6bd8d3), SPH_C32(0x7287dc1c), SPH_C32(0x3cd60000),
+	  SPH_C32(0x49f30000), SPH_C32(0x808e0036), SPH_C32(0xaa0a1800),
+	  SPH_C32(0x89824fd7), SPH_C32(0xec4e516d), SPH_C32(0xde1e3a21),
+	  SPH_C32(0xbbbdaed9) },
+	{ SPH_C32(0x11750000), SPH_C32(0x42410000), SPH_C32(0xb1710006),
+	  SPH_C32(0x2dea1800), SPH_C32(0xf7444598), SPH_C32(0xf53f6a37),
+	  SPH_C32(0x81ba2295), SPH_C32(0x56b6930b), SPH_C32(0x64950000),
+	  SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037), SPH_C32(0x6c612000),
+	  SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0), SPH_C32(0x726dc44e),
+	  SPH_C32(0x81f9d768) },
+	{ SPH_C32(0x49360000), SPH_C32(0xc23f0000), SPH_C32(0xc9420007),
+	  SPH_C32(0xeb812000), SPH_C32(0x10731944), SPH_C32(0x8c9255ea),
+	  SPH_C32(0x2dc9dcfa), SPH_C32(0x6cf2eaba), SPH_C32(0x79cf0000),
+	  SPH_C32(0xe2ff0000), SPH_C32(0xb0300037), SPH_C32(0xc3003800),
+	  SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160), SPH_C32(0xf3cfc067),
+	  SPH_C32(0x9f8ce1ce) },
+	{ SPH_C32(0xa9140000), SPH_C32(0x7d150000), SPH_C32(0xb7cc0018),
+	  SPH_C32(0xfe250000), SPH_C32(0x5d116688), SPH_C32(0x45997fda),
+	  SPH_C32(0xf7294e64), SPH_C32(0x43d8eceb), SPH_C32(0x26610000),
+	  SPH_C32(0xd0d10000), SPH_C32(0x4f77003c), SPH_C32(0x92660000),
+	  SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019), SPH_C32(0xabc45c2a),
+	  SPH_C32(0x35bd29b1) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019),
+	  SPH_C32(0x384e3800), SPH_C32(0xba263a54), SPH_C32(0x3c344007),
+	  SPH_C32(0x5b5ab00b), SPH_C32(0x799c955a), SPH_C32(0x3b3b0000),
+	  SPH_C32(0xfba30000), SPH_C32(0x07fa003c), SPH_C32(0x3d071800),
+	  SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9), SPH_C32(0x2a665803),
+	  SPH_C32(0x2bc81f17) },
+	{ SPH_C32(0xb44e0000), SPH_C32(0x56670000), SPH_C32(0xff410018),
+	  SPH_C32(0x51441800), SPH_C32(0x78da484d), SPH_C32(0x8de0c00a),
+	  SPH_C32(0x768b4a4d), SPH_C32(0x5dadda4d), SPH_C32(0x63780000),
+	  SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d), SPH_C32(0xfb6c2000),
+	  SPH_C32(0x2dc730a5), SPH_C32(0xdd240014), SPH_C32(0x8615a66c),
+	  SPH_C32(0x118c66a6) },
+	{ SPH_C32(0xec0d0000), SPH_C32(0xd6190000), SPH_C32(0x87720019),
+	  SPH_C32(0x972f2000), SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7),
+	  SPH_C32(0xdaf8b422), SPH_C32(0x67e9a3fc), SPH_C32(0x7e220000),
+	  SPH_C32(0x50af0000), SPH_C32(0x3744003d), SPH_C32(0x540d3800),
+	  SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4), SPH_C32(0x07b7a245),
+	  SPH_C32(0x0ff95000) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0xdb190000), SPH_C32(0x44890000), SPH_C32(0x79740023),
+	  SPH_C32(0x28a33800), SPH_C32(0x879213b5), SPH_C32(0x6d8215f9),
+	  SPH_C32(0xf086ca9d), SPH_C32(0x04e21946), SPH_C32(0x95c20000),
+	  SPH_C32(0x34e60000), SPH_C32(0x3742002e), SPH_C32(0x542f1800),
+	  SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7), SPH_C32(0x29377445),
+	  SPH_C32(0xf8654232) },
+	{ SPH_C32(0x9e000000), SPH_C32(0xef850000), SPH_C32(0x49ca0022),
+	  SPH_C32(0x41a91800), SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4),
+	  SPH_C32(0xdd5730db), SPH_C32(0x20d35651), SPH_C32(0xcd810000),
+	  SPH_C32(0xb4980000), SPH_C32(0x4f71002f), SPH_C32(0x92442000),
+	  SPH_C32(0x33a47583), SPH_C32(0xd07a116a), SPH_C32(0x85448a2a),
+	  SPH_C32(0xc2213b83) },
+	{ SPH_C32(0xc6430000), SPH_C32(0x6ffb0000), SPH_C32(0x31f90023),
+	  SPH_C32(0x87c22000), SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29),
+	  SPH_C32(0x7124ceb4), SPH_C32(0x1a972fe0), SPH_C32(0xd0db0000),
+	  SPH_C32(0x9fea0000), SPH_C32(0x07fc002f), SPH_C32(0x3d253800),
+	  SPH_C32(0x166f5b46), SPH_C32(0x1803aeba), SPH_C32(0x04e68e03),
+	  SPH_C32(0xdc540d25) },
+	{ SPH_C32(0x26610000), SPH_C32(0xd0d10000), SPH_C32(0x4f77003c),
+	  SPH_C32(0x92660000), SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019),
+	  SPH_C32(0xabc45c2a), SPH_C32(0x35bd29b1), SPH_C32(0x8f750000),
+	  SPH_C32(0xadc40000), SPH_C32(0xf8bb0024), SPH_C32(0x6c430000),
+	  SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3), SPH_C32(0x5ced124e),
+	  SPH_C32(0x7665c55a) },
+	{ SPH_C32(0x7e220000), SPH_C32(0x50af0000), SPH_C32(0x3744003d),
+	  SPH_C32(0x540d3800), SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4),
+	  SPH_C32(0x07b7a245), SPH_C32(0x0ff95000), SPH_C32(0x922f0000),
+	  SPH_C32(0x86b60000), SPH_C32(0xb0360024), SPH_C32(0xc3221800),
+	  SPH_C32(0x97e10af1), SPH_C32(0xe1104013), SPH_C32(0xdd4f1667),
+	  SPH_C32(0x6810f3fc) },
+	{ SPH_C32(0x3b3b0000), SPH_C32(0xfba30000), SPH_C32(0x07fa003c),
+	  SPH_C32(0x3d071800), SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9),
+	  SPH_C32(0x2a665803), SPH_C32(0x2bc81f17), SPH_C32(0xca6c0000),
+	  SPH_C32(0x06c80000), SPH_C32(0xc8050025), SPH_C32(0x05492000),
+	  SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce), SPH_C32(0x713ce808),
+	  SPH_C32(0x52548a4d) },
+	{ SPH_C32(0x63780000), SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d),
+	  SPH_C32(0xfb6c2000), SPH_C32(0x2dc730a5), SPH_C32(0xdd240014),
+	  SPH_C32(0x8615a66c), SPH_C32(0x118c66a6), SPH_C32(0xd7360000),
+	  SPH_C32(0x2dba0000), SPH_C32(0x80880025), SPH_C32(0xaa283800),
+	  SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e), SPH_C32(0xf09eec21),
+	  SPH_C32(0x4c21bceb) },
+	{ SPH_C32(0x84b70000), SPH_C32(0x76a70000), SPH_C32(0x86330028),
+	  SPH_C32(0x79c50000), SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480),
+	  SPH_C32(0xa88d56d0), SPH_C32(0xaed3d139), SPH_C32(0x2a4e0000),
+	  SPH_C32(0xb9e20000), SPH_C32(0xb68b003a), SPH_C32(0x10ed0000),
+	  SPH_C32(0x3db429e1), SPH_C32(0x51b655fe), SPH_C32(0xabdc7a96),
+	  SPH_C32(0x7d7e8c1c) },
+	{ SPH_C32(0xdcf40000), SPH_C32(0xf6d90000), SPH_C32(0xfe000029),
+	  SPH_C32(0xbfae3800), SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d),
+	  SPH_C32(0x04fea8bf), SPH_C32(0x9497a888), SPH_C32(0x37140000),
+	  SPH_C32(0x92900000), SPH_C32(0xfe06003a), SPH_C32(0xbf8c1800),
+	  SPH_C32(0x187f0724), SPH_C32(0x99cfea2e), SPH_C32(0x2a7e7ebf),
+	  SPH_C32(0x630bbaba) },
+	{ SPH_C32(0x99ed0000), SPH_C32(0x5dd50000), SPH_C32(0xcebe0028),
+	  SPH_C32(0xd6a41800), SPH_C32(0x061c4202), SPH_C32(0x9491fb50),
+	  SPH_C32(0x292f52f9), SPH_C32(0xb0a6e79f), SPH_C32(0x6f570000),
+	  SPH_C32(0x12ee0000), SPH_C32(0x8635003b), SPH_C32(0x79e72000),
+	  SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3), SPH_C32(0x860d80d0),
+	  SPH_C32(0x594fc30b) },
+	{ SPH_C32(0xc1ae0000), SPH_C32(0xddab0000), SPH_C32(0xb68d0029),
+	  SPH_C32(0x10cf2000), SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d),
+	  SPH_C32(0x855cac96), SPH_C32(0x8ae29e2e), SPH_C32(0x720d0000),
+	  SPH_C32(0x399c0000), SPH_C32(0xceb8003b), SPH_C32(0xd6863800),
+	  SPH_C32(0xda83753d), SPH_C32(0x281b6a23), SPH_C32(0x07af84f9),
+	  SPH_C32(0x473af5ad) },
+	{ SPH_C32(0x218c0000), SPH_C32(0x62810000), SPH_C32(0xc8030036),
+	  SPH_C32(0x056b0000), SPH_C32(0xac496112), SPH_C32(0x2437eebd),
+	  SPH_C32(0x5fbc3e08), SPH_C32(0xa5c8987f), SPH_C32(0x2da30000),
+	  SPH_C32(0x0bb20000), SPH_C32(0x31ff0030), SPH_C32(0x87e00000),
+	  SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a), SPH_C32(0x5fa418b4),
+	  SPH_C32(0xed0b3dd2) },
+	{ SPH_C32(0x79cf0000), SPH_C32(0xe2ff0000), SPH_C32(0xb0300037),
+	  SPH_C32(0xc3003800), SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160),
+	  SPH_C32(0xf3cfc067), SPH_C32(0x9f8ce1ce), SPH_C32(0x30f90000),
+	  SPH_C32(0x20c00000), SPH_C32(0x79720030), SPH_C32(0x28811800),
+	  SPH_C32(0x5b0d248a), SPH_C32(0xd108848a), SPH_C32(0xde061c9d),
+	  SPH_C32(0xf37e0b74) },
+	{ SPH_C32(0x3cd60000), SPH_C32(0x49f30000), SPH_C32(0x808e0036),
+	  SPH_C32(0xaa0a1800), SPH_C32(0x89824fd7), SPH_C32(0xec4e516d),
+	  SPH_C32(0xde1e3a21), SPH_C32(0xbbbdaed9), SPH_C32(0x68ba0000),
+	  SPH_C32(0xa0be0000), SPH_C32(0x01410031), SPH_C32(0xeeea2000),
+	  SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57), SPH_C32(0x7275e2f2),
+	  SPH_C32(0xc93a72c5) },
+	{ SPH_C32(0x64950000), SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037),
+	  SPH_C32(0x6c612000), SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0),
+	  SPH_C32(0x726dc44e), SPH_C32(0x81f9d768), SPH_C32(0x75e00000),
+	  SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031), SPH_C32(0x418b3800),
+	  SPH_C32(0x99f15693), SPH_C32(0x60dc0487), SPH_C32(0xf3d7e6db),
+	  SPH_C32(0xd74f4463) }
+};
+
+static const sph_u32 T512_48[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xb6c30000), SPH_C32(0xd5b20000), SPH_C32(0x36620000),
+	  SPH_C32(0x9cbc7ce0), SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b),
+	  SPH_C32(0x1694e6be), SPH_C32(0x315d5140), SPH_C32(0x59db0000),
+	  SPH_C32(0xae6c0000), SPH_C32(0x30f40000), SPH_C32(0x48da2860),
+	  SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b), SPH_C32(0x999f2612),
+	  SPH_C32(0x71fa0dc9) },
+	{ SPH_C32(0xe1f40000), SPH_C32(0x1f400000), SPH_C32(0x002c0000),
+	  SPH_C32(0x5c9e7860), SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87),
+	  SPH_C32(0xb7079931), SPH_C32(0x24e430a7), SPH_C32(0xedea0000),
+	  SPH_C32(0xd95f0000), SPH_C32(0x81a90000), SPH_C32(0x370a2c80),
+	  SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736), SPH_C32(0x4bc9f29b),
+	  SPH_C32(0x3f957917) },
+	{ SPH_C32(0x55c50000), SPH_C32(0x68730000), SPH_C32(0xb1710000),
+	  SPH_C32(0x234e7c80), SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda),
+	  SPH_C32(0x65514db8), SPH_C32(0x6a8b4479), SPH_C32(0x0eec0000),
+	  SPH_C32(0x649e0000), SPH_C32(0x06ba0000), SPH_C32(0x88f82ce0),
+	  SPH_C32(0xa7e77575), SPH_C32(0xe70c0067), SPH_C32(0x380c599d),
+	  SPH_C32(0x64436c2e) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x0eec0000), SPH_C32(0x649e0000), SPH_C32(0x06ba0000),
+	  SPH_C32(0x88f82ce0), SPH_C32(0xa7e77575), SPH_C32(0xe70c0067),
+	  SPH_C32(0x380c599d), SPH_C32(0x64436c2e), SPH_C32(0x5b290000),
+	  SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000), SPH_C32(0xabb65060),
+	  SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd), SPH_C32(0x5d5d1425),
+	  SPH_C32(0x0ec82857) },
+	{ SPH_C32(0x59db0000), SPH_C32(0xae6c0000), SPH_C32(0x30f40000),
+	  SPH_C32(0x48da2860), SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b),
+	  SPH_C32(0x999f2612), SPH_C32(0x71fa0dc9), SPH_C32(0xef180000),
+	  SPH_C32(0x7bde0000), SPH_C32(0x06960000), SPH_C32(0xd4665480),
+	  SPH_C32(0x97400b80), SPH_C32(0x6d841ce0), SPH_C32(0x8f0bc0ac),
+	  SPH_C32(0x40a75c89) },
+	{ SPH_C32(0xedea0000), SPH_C32(0xd95f0000), SPH_C32(0x81a90000),
+	  SPH_C32(0x370a2c80), SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736),
+	  SPH_C32(0x4bc9f29b), SPH_C32(0x3f957917), SPH_C32(0x0c1e0000),
+	  SPH_C32(0xc61f0000), SPH_C32(0x81850000), SPH_C32(0x6b9454e0),
+	  SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1), SPH_C32(0xfcce6baa),
+	  SPH_C32(0x1b7149b0) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) },
+	{ SPH_C32(0x0c1e0000), SPH_C32(0xc61f0000), SPH_C32(0x81850000),
+	  SPH_C32(0x6b9454e0), SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1),
+	  SPH_C32(0xfcce6baa), SPH_C32(0x1b7149b0), SPH_C32(0xe1f40000),
+	  SPH_C32(0x1f400000), SPH_C32(0x002c0000), SPH_C32(0x5c9e7860),
+	  SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87), SPH_C32(0xb7079931),
+	  SPH_C32(0x24e430a7) },
+	{ SPH_C32(0x5b290000), SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000),
+	  SPH_C32(0xabb65060), SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd),
+	  SPH_C32(0x5d5d1425), SPH_C32(0x0ec82857), SPH_C32(0x55c50000),
+	  SPH_C32(0x68730000), SPH_C32(0xb1710000), SPH_C32(0x234e7c80),
+	  SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda), SPH_C32(0x65514db8),
+	  SPH_C32(0x6a8b4479) },
+	{ SPH_C32(0xef180000), SPH_C32(0x7bde0000), SPH_C32(0x06960000),
+	  SPH_C32(0xd4665480), SPH_C32(0x97400b80), SPH_C32(0x6d841ce0),
+	  SPH_C32(0x8f0bc0ac), SPH_C32(0x40a75c89), SPH_C32(0xb6c30000),
+	  SPH_C32(0xd5b20000), SPH_C32(0x36620000), SPH_C32(0x9cbc7ce0),
+	  SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b), SPH_C32(0x1694e6be),
+	  SPH_C32(0x315d5140) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0xaa5d0000), SPH_C32(0xb3710000), SPH_C32(0x3b730000),
+	  SPH_C32(0xc366bce0), SPH_C32(0x54e6728e), SPH_C32(0x5aeb1087),
+	  SPH_C32(0xb85acf41), SPH_C32(0xf7f2b635), SPH_C32(0x71500000),
+	  SPH_C32(0xa31b0000), SPH_C32(0x6d420000), SPH_C32(0x57433060),
+	  SPH_C32(0x878f5cbf), SPH_C32(0x664e56c8), SPH_C32(0xc2998952),
+	  SPH_C32(0x68133176) },
+	{ SPH_C32(0xfd6a0000), SPH_C32(0x79830000), SPH_C32(0x0d3d0000),
+	  SPH_C32(0x0344b860), SPH_C32(0x02fe19ac), SPH_C32(0x0648e48b),
+	  SPH_C32(0x19c9b0ce), SPH_C32(0xe24bd7d2), SPH_C32(0xc5610000),
+	  SPH_C32(0xd4280000), SPH_C32(0xdc1f0000), SPH_C32(0x28933480),
+	  SPH_C32(0xff2d3d87), SPH_C32(0xb7589595), SPH_C32(0x10cf5ddb),
+	  SPH_C32(0x267c45a8) },
+	{ SPH_C32(0x495b0000), SPH_C32(0x0eb00000), SPH_C32(0xbc600000),
+	  SPH_C32(0x7c94bc80), SPH_C32(0x7a5c7894), SPH_C32(0xd75e27d6),
+	  SPH_C32(0xcb9f6447), SPH_C32(0xac24a30c), SPH_C32(0x26670000),
+	  SPH_C32(0x69e90000), SPH_C32(0x5b0c0000), SPH_C32(0x976134e0),
+	  SPH_C32(0xd197379d), SPH_C32(0x3aeda2c4), SPH_C32(0x630af6dd),
+	  SPH_C32(0x7daa5091) },
+	{ SPH_C32(0x1c9e0000), SPH_C32(0x66c30000), SPH_C32(0x0d110000),
+	  SPH_C32(0x5fdac000), SPH_C32(0x32596759), SPH_C32(0x8cc0f80c),
+	  SPH_C32(0xaece29ff), SPH_C32(0xc6afe775), SPH_C32(0x288b0000),
+	  SPH_C32(0x0d770000), SPH_C32(0x5db60000), SPH_C32(0x1f991800),
+	  SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3), SPH_C32(0x5b06af40),
+	  SPH_C32(0x19e93cbf) },
+	{ SPH_C32(0xa8af0000), SPH_C32(0x11f00000), SPH_C32(0xbc4c0000),
+	  SPH_C32(0x200ac4e0), SPH_C32(0x4afb0661), SPH_C32(0x5dd63b51),
+	  SPH_C32(0x7c98fd76), SPH_C32(0x88c093ab), SPH_C32(0xcb8d0000),
+	  SPH_C32(0xb0b60000), SPH_C32(0xdaa50000), SPH_C32(0xa06b1860),
+	  SPH_C32(0x58ca48f2), SPH_C32(0x505495f2), SPH_C32(0x28c30446),
+	  SPH_C32(0x423f2986) },
+	{ SPH_C32(0xff980000), SPH_C32(0xdb020000), SPH_C32(0x8a020000),
+	  SPH_C32(0xe028c060), SPH_C32(0x1ce36d43), SPH_C32(0x0175cf5d),
+	  SPH_C32(0xdd0b82f9), SPH_C32(0x9d79f24c), SPH_C32(0x7fbc0000),
+	  SPH_C32(0xc7850000), SPH_C32(0x6bf80000), SPH_C32(0xdfbb1c80),
+	  SPH_C32(0x206829ca), SPH_C32(0x814256af), SPH_C32(0xfa95d0cf),
+	  SPH_C32(0x0c505d58) },
+	{ SPH_C32(0x4ba90000), SPH_C32(0xac310000), SPH_C32(0x3b5f0000),
+	  SPH_C32(0x9ff8c480), SPH_C32(0x64410c7b), SPH_C32(0xd0630c00),
+	  SPH_C32(0x0f5d5670), SPH_C32(0xd3168692), SPH_C32(0x9cba0000),
+	  SPH_C32(0x7a440000), SPH_C32(0xeceb0000), SPH_C32(0x60491ce0),
+	  SPH_C32(0x0ed223d0), SPH_C32(0x0cf761fe), SPH_C32(0x89507bc9),
+	  SPH_C32(0x57864861) },
+	{ SPH_C32(0xa4b10000), SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000),
+	  SPH_C32(0x4b9e9000), SPH_C32(0xf30107fb), SPH_C32(0xbde710e0),
+	  SPH_C32(0x805696dc), SPH_C32(0x93b1da1b), SPH_C32(0x2a790000),
+	  SPH_C32(0xaff60000), SPH_C32(0xda890000), SPH_C32(0xfcf56000),
+	  SPH_C32(0x686d3607), SPH_C32(0xdadc8975), SPH_C32(0x9fc49d77),
+	  SPH_C32(0x66db1921) },
+	{ SPH_C32(0x10800000), SPH_C32(0xa0dc0000), SPH_C32(0x8c940000),
+	  SPH_C32(0x344e94e0), SPH_C32(0x8ba366c3), SPH_C32(0x6cf1d3bd),
+	  SPH_C32(0x52004255), SPH_C32(0xdddeaec5), SPH_C32(0xc97f0000),
+	  SPH_C32(0x12370000), SPH_C32(0x5d9a0000), SPH_C32(0x43076060),
+	  SPH_C32(0x46d73c1d), SPH_C32(0x5769be24), SPH_C32(0xec013671),
+	  SPH_C32(0x3d0d0c18) },
+	{ SPH_C32(0x47b70000), SPH_C32(0x6a2e0000), SPH_C32(0xbada0000),
+	  SPH_C32(0xf46c9060), SPH_C32(0xddbb0de1), SPH_C32(0x305227b1),
+	  SPH_C32(0xf3933dda), SPH_C32(0xc867cf22), SPH_C32(0x7d4e0000),
+	  SPH_C32(0x65040000), SPH_C32(0xecc70000), SPH_C32(0x3cd76480),
+	  SPH_C32(0x3e755d25), SPH_C32(0x867f7d79), SPH_C32(0x3e57e2f8),
+	  SPH_C32(0x736278c6) },
+	{ SPH_C32(0xf3860000), SPH_C32(0x1d1d0000), SPH_C32(0x0b870000),
+	  SPH_C32(0x8bbc9480), SPH_C32(0xa5196cd9), SPH_C32(0xe144e4ec),
+	  SPH_C32(0x21c5e953), SPH_C32(0x8608bbfc), SPH_C32(0x9e480000),
+	  SPH_C32(0xd8c50000), SPH_C32(0x6bd40000), SPH_C32(0x832564e0),
+	  SPH_C32(0x10cf573f), SPH_C32(0x0bca4a28), SPH_C32(0x4d9249fe),
+	  SPH_C32(0x28b46dff) },
+	{ SPH_C32(0xa6430000), SPH_C32(0x756e0000), SPH_C32(0xbaf60000),
+	  SPH_C32(0xa8f2e800), SPH_C32(0xed1c7314), SPH_C32(0xbada3b36),
+	  SPH_C32(0x4494a4eb), SPH_C32(0xec83ff85), SPH_C32(0x90a40000),
+	  SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000), SPH_C32(0x0bdd4800),
+	  SPH_C32(0xb728224a), SPH_C32(0xecc64a4f), SPH_C32(0x759e1063),
+	  SPH_C32(0x4cf701d1) },
+	{ SPH_C32(0x12720000), SPH_C32(0x025d0000), SPH_C32(0x0bab0000),
+	  SPH_C32(0xd722ece0), SPH_C32(0x95be122c), SPH_C32(0x6bccf86b),
+	  SPH_C32(0x96c27062), SPH_C32(0xa2ec8b5b), SPH_C32(0x73a20000),
+	  SPH_C32(0x019a0000), SPH_C32(0xea7d0000), SPH_C32(0xb42f4860),
+	  SPH_C32(0x99922850), SPH_C32(0x61737d1e), SPH_C32(0x065bbb65),
+	  SPH_C32(0x172114e8) },
+	{ SPH_C32(0x45450000), SPH_C32(0xc8af0000), SPH_C32(0x3de50000),
+	  SPH_C32(0x1700e860), SPH_C32(0xc3a6790e), SPH_C32(0x376f0c67),
+	  SPH_C32(0x37510fed), SPH_C32(0xb755eabc), SPH_C32(0xc7930000),
+	  SPH_C32(0x76a90000), SPH_C32(0x5b200000), SPH_C32(0xcbff4c80),
+	  SPH_C32(0xe1304968), SPH_C32(0xb065be43), SPH_C32(0xd40d6fec),
+	  SPH_C32(0x594e6036) },
+	{ SPH_C32(0xf1740000), SPH_C32(0xbf9c0000), SPH_C32(0x8cb80000),
+	  SPH_C32(0x68d0ec80), SPH_C32(0xbb041836), SPH_C32(0xe679cf3a),
+	  SPH_C32(0xe507db64), SPH_C32(0xf93a9e62), SPH_C32(0x24950000),
+	  SPH_C32(0xcb680000), SPH_C32(0xdc330000), SPH_C32(0x740d4ce0),
+	  SPH_C32(0xcf8a4372), SPH_C32(0x3dd08912), SPH_C32(0xa7c8c4ea),
+	  SPH_C32(0x0298750f) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x26670000), SPH_C32(0x69e90000), SPH_C32(0x5b0c0000),
+	  SPH_C32(0x976134e0), SPH_C32(0xd197379d), SPH_C32(0x3aeda2c4),
+	  SPH_C32(0x630af6dd), SPH_C32(0x7daa5091), SPH_C32(0x6f3c0000),
+	  SPH_C32(0x67590000), SPH_C32(0xe76c0000), SPH_C32(0xebf58860),
+	  SPH_C32(0xabcb4f09), SPH_C32(0xedb38512), SPH_C32(0xa895929a),
+	  SPH_C32(0xd18ef39d) },
+	{ SPH_C32(0x71500000), SPH_C32(0xa31b0000), SPH_C32(0x6d420000),
+	  SPH_C32(0x57433060), SPH_C32(0x878f5cbf), SPH_C32(0x664e56c8),
+	  SPH_C32(0xc2998952), SPH_C32(0x68133176), SPH_C32(0xdb0d0000),
+	  SPH_C32(0x106a0000), SPH_C32(0x56310000), SPH_C32(0x94258c80),
+	  SPH_C32(0xd3692e31), SPH_C32(0x3ca5464f), SPH_C32(0x7ac34613),
+	  SPH_C32(0x9fe18743) },
+	{ SPH_C32(0xc5610000), SPH_C32(0xd4280000), SPH_C32(0xdc1f0000),
+	  SPH_C32(0x28933480), SPH_C32(0xff2d3d87), SPH_C32(0xb7589595),
+	  SPH_C32(0x10cf5ddb), SPH_C32(0x267c45a8), SPH_C32(0x380b0000),
+	  SPH_C32(0xadab0000), SPH_C32(0xd1220000), SPH_C32(0x2bd78ce0),
+	  SPH_C32(0xfdd3242b), SPH_C32(0xb110711e), SPH_C32(0x0906ed15),
+	  SPH_C32(0xc437927a) },
+	{ SPH_C32(0x90a40000), SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000),
+	  SPH_C32(0x0bdd4800), SPH_C32(0xb728224a), SPH_C32(0xecc64a4f),
+	  SPH_C32(0x759e1063), SPH_C32(0x4cf701d1), SPH_C32(0x36e70000),
+	  SPH_C32(0xc9350000), SPH_C32(0xd7980000), SPH_C32(0xa32fa000),
+	  SPH_C32(0x5a34515e), SPH_C32(0x561c7179), SPH_C32(0x310ab488),
+	  SPH_C32(0xa074fe54) },
+	{ SPH_C32(0x24950000), SPH_C32(0xcb680000), SPH_C32(0xdc330000),
+	  SPH_C32(0x740d4ce0), SPH_C32(0xcf8a4372), SPH_C32(0x3dd08912),
+	  SPH_C32(0xa7c8c4ea), SPH_C32(0x0298750f), SPH_C32(0xd5e10000),
+	  SPH_C32(0x74f40000), SPH_C32(0x508b0000), SPH_C32(0x1cdda060),
+	  SPH_C32(0x748e5b44), SPH_C32(0xdba94628), SPH_C32(0x42cf1f8e),
+	  SPH_C32(0xfba2eb6d) },
+	{ SPH_C32(0x73a20000), SPH_C32(0x019a0000), SPH_C32(0xea7d0000),
+	  SPH_C32(0xb42f4860), SPH_C32(0x99922850), SPH_C32(0x61737d1e),
+	  SPH_C32(0x065bbb65), SPH_C32(0x172114e8), SPH_C32(0x61d00000),
+	  SPH_C32(0x03c70000), SPH_C32(0xe1d60000), SPH_C32(0x630da480),
+	  SPH_C32(0x0c2c3a7c), SPH_C32(0x0abf8575), SPH_C32(0x9099cb07),
+	  SPH_C32(0xb5cd9fb3) },
+	{ SPH_C32(0xc7930000), SPH_C32(0x76a90000), SPH_C32(0x5b200000),
+	  SPH_C32(0xcbff4c80), SPH_C32(0xe1304968), SPH_C32(0xb065be43),
+	  SPH_C32(0xd40d6fec), SPH_C32(0x594e6036), SPH_C32(0x82d60000),
+	  SPH_C32(0xbe060000), SPH_C32(0x66c50000), SPH_C32(0xdcffa4e0),
+	  SPH_C32(0x22963066), SPH_C32(0x870ab224), SPH_C32(0xe35c6001),
+	  SPH_C32(0xee1b8a8a) },
+	{ SPH_C32(0x288b0000), SPH_C32(0x0d770000), SPH_C32(0x5db60000),
+	  SPH_C32(0x1f991800), SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3),
+	  SPH_C32(0x5b06af40), SPH_C32(0x19e93cbf), SPH_C32(0x34150000),
+	  SPH_C32(0x6bb40000), SPH_C32(0x50a70000), SPH_C32(0x4043d800),
+	  SPH_C32(0x442925b1), SPH_C32(0x51215aaf), SPH_C32(0xf5c886bf),
+	  SPH_C32(0xdf46dbca) },
+	{ SPH_C32(0x9cba0000), SPH_C32(0x7a440000), SPH_C32(0xeceb0000),
+	  SPH_C32(0x60491ce0), SPH_C32(0x0ed223d0), SPH_C32(0x0cf761fe),
+	  SPH_C32(0x89507bc9), SPH_C32(0x57864861), SPH_C32(0xd7130000),
+	  SPH_C32(0xd6750000), SPH_C32(0xd7b40000), SPH_C32(0xffb1d860),
+	  SPH_C32(0x6a932fab), SPH_C32(0xdc946dfe), SPH_C32(0x860d2db9),
+	  SPH_C32(0x8490cef3) },
+	{ SPH_C32(0xcb8d0000), SPH_C32(0xb0b60000), SPH_C32(0xdaa50000),
+	  SPH_C32(0xa06b1860), SPH_C32(0x58ca48f2), SPH_C32(0x505495f2),
+	  SPH_C32(0x28c30446), SPH_C32(0x423f2986), SPH_C32(0x63220000),
+	  SPH_C32(0xa1460000), SPH_C32(0x66e90000), SPH_C32(0x8061dc80),
+	  SPH_C32(0x12314e93), SPH_C32(0x0d82aea3), SPH_C32(0x545bf930),
+	  SPH_C32(0xcaffba2d) },
+	{ SPH_C32(0x7fbc0000), SPH_C32(0xc7850000), SPH_C32(0x6bf80000),
+	  SPH_C32(0xdfbb1c80), SPH_C32(0x206829ca), SPH_C32(0x814256af),
+	  SPH_C32(0xfa95d0cf), SPH_C32(0x0c505d58), SPH_C32(0x80240000),
+	  SPH_C32(0x1c870000), SPH_C32(0xe1fa0000), SPH_C32(0x3f93dce0),
+	  SPH_C32(0x3c8b4489), SPH_C32(0x803799f2), SPH_C32(0x279e5236),
+	  SPH_C32(0x9129af14) },
+	{ SPH_C32(0x2a790000), SPH_C32(0xaff60000), SPH_C32(0xda890000),
+	  SPH_C32(0xfcf56000), SPH_C32(0x686d3607), SPH_C32(0xdadc8975),
+	  SPH_C32(0x9fc49d77), SPH_C32(0x66db1921), SPH_C32(0x8ec80000),
+	  SPH_C32(0x78190000), SPH_C32(0xe7400000), SPH_C32(0xb76bf000),
+	  SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995), SPH_C32(0x1f920bab),
+	  SPH_C32(0xf56ac33a) },
+	{ SPH_C32(0x9e480000), SPH_C32(0xd8c50000), SPH_C32(0x6bd40000),
+	  SPH_C32(0x832564e0), SPH_C32(0x10cf573f), SPH_C32(0x0bca4a28),
+	  SPH_C32(0x4d9249fe), SPH_C32(0x28b46dff), SPH_C32(0x6dce0000),
+	  SPH_C32(0xc5d80000), SPH_C32(0x60530000), SPH_C32(0x0899f060),
+	  SPH_C32(0xb5d63be6), SPH_C32(0xea8eaec4), SPH_C32(0x6c57a0ad),
+	  SPH_C32(0xaebcd603) },
+	{ SPH_C32(0xc97f0000), SPH_C32(0x12370000), SPH_C32(0x5d9a0000),
+	  SPH_C32(0x43076060), SPH_C32(0x46d73c1d), SPH_C32(0x5769be24),
+	  SPH_C32(0xec013671), SPH_C32(0x3d0d0c18), SPH_C32(0xd9ff0000),
+	  SPH_C32(0xb2eb0000), SPH_C32(0xd10e0000), SPH_C32(0x7749f480),
+	  SPH_C32(0xcd745ade), SPH_C32(0x3b986d99), SPH_C32(0xbe017424),
+	  SPH_C32(0xe0d3a2dd) },
+	{ SPH_C32(0x7d4e0000), SPH_C32(0x65040000), SPH_C32(0xecc70000),
+	  SPH_C32(0x3cd76480), SPH_C32(0x3e755d25), SPH_C32(0x867f7d79),
+	  SPH_C32(0x3e57e2f8), SPH_C32(0x736278c6), SPH_C32(0x3af90000),
+	  SPH_C32(0x0f2a0000), SPH_C32(0x561d0000), SPH_C32(0xc8bbf4e0),
+	  SPH_C32(0xe3ce50c4), SPH_C32(0xb62d5ac8), SPH_C32(0xcdc4df22),
+	  SPH_C32(0xbb05b7e4) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) },
+	{ SPH_C32(0x380b0000), SPH_C32(0xadab0000), SPH_C32(0xd1220000),
+	  SPH_C32(0x2bd78ce0), SPH_C32(0xfdd3242b), SPH_C32(0xb110711e),
+	  SPH_C32(0x0906ed15), SPH_C32(0xc437927a), SPH_C32(0xfd6a0000),
+	  SPH_C32(0x79830000), SPH_C32(0x0d3d0000), SPH_C32(0x0344b860),
+	  SPH_C32(0x02fe19ac), SPH_C32(0x0648e48b), SPH_C32(0x19c9b0ce),
+	  SPH_C32(0xe24bd7d2) },
+	{ SPH_C32(0x6f3c0000), SPH_C32(0x67590000), SPH_C32(0xe76c0000),
+	  SPH_C32(0xebf58860), SPH_C32(0xabcb4f09), SPH_C32(0xedb38512),
+	  SPH_C32(0xa895929a), SPH_C32(0xd18ef39d), SPH_C32(0x495b0000),
+	  SPH_C32(0x0eb00000), SPH_C32(0xbc600000), SPH_C32(0x7c94bc80),
+	  SPH_C32(0x7a5c7894), SPH_C32(0xd75e27d6), SPH_C32(0xcb9f6447),
+	  SPH_C32(0xac24a30c) },
+	{ SPH_C32(0xdb0d0000), SPH_C32(0x106a0000), SPH_C32(0x56310000),
+	  SPH_C32(0x94258c80), SPH_C32(0xd3692e31), SPH_C32(0x3ca5464f),
+	  SPH_C32(0x7ac34613), SPH_C32(0x9fe18743), SPH_C32(0xaa5d0000),
+	  SPH_C32(0xb3710000), SPH_C32(0x3b730000), SPH_C32(0xc366bce0),
+	  SPH_C32(0x54e6728e), SPH_C32(0x5aeb1087), SPH_C32(0xb85acf41),
+	  SPH_C32(0xf7f2b635) },
+	{ SPH_C32(0x8ec80000), SPH_C32(0x78190000), SPH_C32(0xe7400000),
+	  SPH_C32(0xb76bf000), SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995),
+	  SPH_C32(0x1f920bab), SPH_C32(0xf56ac33a), SPH_C32(0xa4b10000),
+	  SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000), SPH_C32(0x4b9e9000),
+	  SPH_C32(0xf30107fb), SPH_C32(0xbde710e0), SPH_C32(0x805696dc),
+	  SPH_C32(0x93b1da1b) },
+	{ SPH_C32(0x3af90000), SPH_C32(0x0f2a0000), SPH_C32(0x561d0000),
+	  SPH_C32(0xc8bbf4e0), SPH_C32(0xe3ce50c4), SPH_C32(0xb62d5ac8),
+	  SPH_C32(0xcdc4df22), SPH_C32(0xbb05b7e4), SPH_C32(0x47b70000),
+	  SPH_C32(0x6a2e0000), SPH_C32(0xbada0000), SPH_C32(0xf46c9060),
+	  SPH_C32(0xddbb0de1), SPH_C32(0x305227b1), SPH_C32(0xf3933dda),
+	  SPH_C32(0xc867cf22) },
+	{ SPH_C32(0x6dce0000), SPH_C32(0xc5d80000), SPH_C32(0x60530000),
+	  SPH_C32(0x0899f060), SPH_C32(0xb5d63be6), SPH_C32(0xea8eaec4),
+	  SPH_C32(0x6c57a0ad), SPH_C32(0xaebcd603), SPH_C32(0xf3860000),
+	  SPH_C32(0x1d1d0000), SPH_C32(0x0b870000), SPH_C32(0x8bbc9480),
+	  SPH_C32(0xa5196cd9), SPH_C32(0xe144e4ec), SPH_C32(0x21c5e953),
+	  SPH_C32(0x8608bbfc) },
+	{ SPH_C32(0xd9ff0000), SPH_C32(0xb2eb0000), SPH_C32(0xd10e0000),
+	  SPH_C32(0x7749f480), SPH_C32(0xcd745ade), SPH_C32(0x3b986d99),
+	  SPH_C32(0xbe017424), SPH_C32(0xe0d3a2dd), SPH_C32(0x10800000),
+	  SPH_C32(0xa0dc0000), SPH_C32(0x8c940000), SPH_C32(0x344e94e0),
+	  SPH_C32(0x8ba366c3), SPH_C32(0x6cf1d3bd), SPH_C32(0x52004255),
+	  SPH_C32(0xdddeaec5) },
+	{ SPH_C32(0x36e70000), SPH_C32(0xc9350000), SPH_C32(0xd7980000),
+	  SPH_C32(0xa32fa000), SPH_C32(0x5a34515e), SPH_C32(0x561c7179),
+	  SPH_C32(0x310ab488), SPH_C32(0xa074fe54), SPH_C32(0xa6430000),
+	  SPH_C32(0x756e0000), SPH_C32(0xbaf60000), SPH_C32(0xa8f2e800),
+	  SPH_C32(0xed1c7314), SPH_C32(0xbada3b36), SPH_C32(0x4494a4eb),
+	  SPH_C32(0xec83ff85) },
+	{ SPH_C32(0x82d60000), SPH_C32(0xbe060000), SPH_C32(0x66c50000),
+	  SPH_C32(0xdcffa4e0), SPH_C32(0x22963066), SPH_C32(0x870ab224),
+	  SPH_C32(0xe35c6001), SPH_C32(0xee1b8a8a), SPH_C32(0x45450000),
+	  SPH_C32(0xc8af0000), SPH_C32(0x3de50000), SPH_C32(0x1700e860),
+	  SPH_C32(0xc3a6790e), SPH_C32(0x376f0c67), SPH_C32(0x37510fed),
+	  SPH_C32(0xb755eabc) },
+	{ SPH_C32(0xd5e10000), SPH_C32(0x74f40000), SPH_C32(0x508b0000),
+	  SPH_C32(0x1cdda060), SPH_C32(0x748e5b44), SPH_C32(0xdba94628),
+	  SPH_C32(0x42cf1f8e), SPH_C32(0xfba2eb6d), SPH_C32(0xf1740000),
+	  SPH_C32(0xbf9c0000), SPH_C32(0x8cb80000), SPH_C32(0x68d0ec80),
+	  SPH_C32(0xbb041836), SPH_C32(0xe679cf3a), SPH_C32(0xe507db64),
+	  SPH_C32(0xf93a9e62) },
+	{ SPH_C32(0x61d00000), SPH_C32(0x03c70000), SPH_C32(0xe1d60000),
+	  SPH_C32(0x630da480), SPH_C32(0x0c2c3a7c), SPH_C32(0x0abf8575),
+	  SPH_C32(0x9099cb07), SPH_C32(0xb5cd9fb3), SPH_C32(0x12720000),
+	  SPH_C32(0x025d0000), SPH_C32(0x0bab0000), SPH_C32(0xd722ece0),
+	  SPH_C32(0x95be122c), SPH_C32(0x6bccf86b), SPH_C32(0x96c27062),
+	  SPH_C32(0xa2ec8b5b) },
+	{ SPH_C32(0x34150000), SPH_C32(0x6bb40000), SPH_C32(0x50a70000),
+	  SPH_C32(0x4043d800), SPH_C32(0x442925b1), SPH_C32(0x51215aaf),
+	  SPH_C32(0xf5c886bf), SPH_C32(0xdf46dbca), SPH_C32(0x1c9e0000),
+	  SPH_C32(0x66c30000), SPH_C32(0x0d110000), SPH_C32(0x5fdac000),
+	  SPH_C32(0x32596759), SPH_C32(0x8cc0f80c), SPH_C32(0xaece29ff),
+	  SPH_C32(0xc6afe775) },
+	{ SPH_C32(0x80240000), SPH_C32(0x1c870000), SPH_C32(0xe1fa0000),
+	  SPH_C32(0x3f93dce0), SPH_C32(0x3c8b4489), SPH_C32(0x803799f2),
+	  SPH_C32(0x279e5236), SPH_C32(0x9129af14), SPH_C32(0xff980000),
+	  SPH_C32(0xdb020000), SPH_C32(0x8a020000), SPH_C32(0xe028c060),
+	  SPH_C32(0x1ce36d43), SPH_C32(0x0175cf5d), SPH_C32(0xdd0b82f9),
+	  SPH_C32(0x9d79f24c) },
+	{ SPH_C32(0xd7130000), SPH_C32(0xd6750000), SPH_C32(0xd7b40000),
+	  SPH_C32(0xffb1d860), SPH_C32(0x6a932fab), SPH_C32(0xdc946dfe),
+	  SPH_C32(0x860d2db9), SPH_C32(0x8490cef3), SPH_C32(0x4ba90000),
+	  SPH_C32(0xac310000), SPH_C32(0x3b5f0000), SPH_C32(0x9ff8c480),
+	  SPH_C32(0x64410c7b), SPH_C32(0xd0630c00), SPH_C32(0x0f5d5670),
+	  SPH_C32(0xd3168692) },
+	{ SPH_C32(0x63220000), SPH_C32(0xa1460000), SPH_C32(0x66e90000),
+	  SPH_C32(0x8061dc80), SPH_C32(0x12314e93), SPH_C32(0x0d82aea3),
+	  SPH_C32(0x545bf930), SPH_C32(0xcaffba2d), SPH_C32(0xa8af0000),
+	  SPH_C32(0x11f00000), SPH_C32(0xbc4c0000), SPH_C32(0x200ac4e0),
+	  SPH_C32(0x4afb0661), SPH_C32(0x5dd63b51), SPH_C32(0x7c98fd76),
+	  SPH_C32(0x88c093ab) }
+};
+
+static const sph_u32 T512_54[64][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0x24800000), SPH_C32(0x01410000), SPH_C32(0xea4b0000),
+	  SPH_C32(0x07b000b3), SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5),
+	  SPH_C32(0x73e6aebc), SPH_C32(0x495bbb99), SPH_C32(0x95ff0000),
+	  SPH_C32(0xfe0d0000), SPH_C32(0xe1580000), SPH_C32(0x62f80141),
+	  SPH_C32(0x3127a59f), SPH_C32(0xff43f26b), SPH_C32(0x61c38617),
+	  SPH_C32(0x59ea6d0a) },
+	{ SPH_C32(0x7b6c0000), SPH_C32(0x280a0000), SPH_C32(0x73990000),
+	  SPH_C32(0x496000a1), SPH_C32(0xa5768de3), SPH_C32(0xc42f093c),
+	  SPH_C32(0x24f2a563), SPH_C32(0x79f5076e), SPH_C32(0xca570000),
+	  SPH_C32(0xa80e0000), SPH_C32(0xa2f60000), SPH_C32(0x060b0152),
+	  SPH_C32(0x14592320), SPH_C32(0xec526625), SPH_C32(0x35dd13a8),
+	  SPH_C32(0xd74eb663) },
+	{ SPH_C32(0x24c40000), SPH_C32(0x7e090000), SPH_C32(0x30370000),
+	  SPH_C32(0x2d9300b2), SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72),
+	  SPH_C32(0x70ec30dc), SPH_C32(0xf751dc07), SPH_C32(0xca130000),
+	  SPH_C32(0xd7460000), SPH_C32(0x788a0000), SPH_C32(0x2c280153),
+	  SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2), SPH_C32(0x36d78dc8),
+	  SPH_C32(0x6944d1fd) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) },
+	{ SPH_C32(0xca130000), SPH_C32(0xd7460000), SPH_C32(0x788a0000),
+	  SPH_C32(0x2c280153), SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2),
+	  SPH_C32(0x36d78dc8), SPH_C32(0x6944d1fd), SPH_C32(0xeed70000),
+	  SPH_C32(0xa94f0000), SPH_C32(0x48bd0000), SPH_C32(0x01bb01e1),
+	  SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0), SPH_C32(0x463bbd14),
+	  SPH_C32(0x9e150dfa) },
+	{ SPH_C32(0x95ff0000), SPH_C32(0xfe0d0000), SPH_C32(0xe1580000),
+	  SPH_C32(0x62f80141), SPH_C32(0x3127a59f), SPH_C32(0xff43f26b),
+	  SPH_C32(0x61c38617), SPH_C32(0x59ea6d0a), SPH_C32(0xb17f0000),
+	  SPH_C32(0xff4c0000), SPH_C32(0x0b130000), SPH_C32(0x654801f2),
+	  SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e), SPH_C32(0x122528ab),
+	  SPH_C32(0x10b1d693) },
+	{ SPH_C32(0xca570000), SPH_C32(0xa80e0000), SPH_C32(0xa2f60000),
+	  SPH_C32(0x060b0152), SPH_C32(0x14592320), SPH_C32(0xec526625),
+	  SPH_C32(0x35dd13a8), SPH_C32(0xd74eb663), SPH_C32(0xb13b0000),
+	  SPH_C32(0x80040000), SPH_C32(0xd16f0000), SPH_C32(0x4f6b01f3),
+	  SPH_C32(0xb12faec3), SPH_C32(0x287d6f19), SPH_C32(0x112fb6cb),
+	  SPH_C32(0xaebbb10d) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xb9800000), SPH_C32(0x1a480000), SPH_C32(0xebfb0000),
+	  SPH_C32(0xb72302f3), SPH_C32(0xfd1fb607), SPH_C32(0x8bb62494),
+	  SPH_C32(0x7c8b930b), SPH_C32(0x59fe93fe), SPH_C32(0xf0810000),
+	  SPH_C32(0x266b0000), SPH_C32(0x9ffe0000), SPH_C32(0xcbae00c1),
+	  SPH_C32(0x00c0cffd), SPH_C32(0x6b5bca1e), SPH_C32(0xc8ea607c),
+	  SPH_C32(0xe8add601) },
+	{ SPH_C32(0xe66c0000), SPH_C32(0x33030000), SPH_C32(0x72290000),
+	  SPH_C32(0xf9f302e1), SPH_C32(0xe3ccf974), SPH_C32(0x31112c5d),
+	  SPH_C32(0x2b9f98d4), SPH_C32(0x69502f09), SPH_C32(0xaf290000),
+	  SPH_C32(0x70680000), SPH_C32(0xdc500000), SPH_C32(0xaf5d00d2),
+	  SPH_C32(0x25be4942), SPH_C32(0x784a5e50), SPH_C32(0x9cf4f5c3),
+	  SPH_C32(0x66090d68) },
+	{ SPH_C32(0xb9c40000), SPH_C32(0x65000000), SPH_C32(0x31870000),
+	  SPH_C32(0x9d0002f2), SPH_C32(0xc6b27fcb), SPH_C32(0x2200b813),
+	  SPH_C32(0x7f810d6b), SPH_C32(0xe7f4f460), SPH_C32(0xaf6d0000),
+	  SPH_C32(0x0f200000), SPH_C32(0x062c0000), SPH_C32(0x857e00d3),
+	  SPH_C32(0x1e13808e), SPH_C32(0xd1fcc2d7), SPH_C32(0x9ffe6ba3),
+	  SPH_C32(0xd8036af6) },
+	{ SPH_C32(0x08bb0000), SPH_C32(0x9a4c0000), SPH_C32(0x3a940000),
+	  SPH_C32(0xf8480300), SPH_C32(0x4c3018c4), SPH_C32(0xa3cb4b8d),
+	  SPH_C32(0x6da425c0), SPH_C32(0xf74522f3), SPH_C32(0x8bed0000),
+	  SPH_C32(0x0e610000), SPH_C32(0xec670000), SPH_C32(0x82ce0060),
+	  SPH_C32(0xa5b6421e), SPH_C32(0xaf74c322), SPH_C32(0xec18c51f),
+	  SPH_C32(0x9158d16f) },
+	{ SPH_C32(0x57130000), SPH_C32(0xcc4f0000), SPH_C32(0x793a0000),
+	  SPH_C32(0x9cbb0313), SPH_C32(0x694e9e7b), SPH_C32(0xb0dadfc3),
+	  SPH_C32(0x39bab07f), SPH_C32(0x79e1f99a), SPH_C32(0x8ba90000),
+	  SPH_C32(0x71290000), SPH_C32(0x361b0000), SPH_C32(0xa8ed0061),
+	  SPH_C32(0x9e1b8bd2), SPH_C32(0x06c25fa5), SPH_C32(0xef125b7f),
+	  SPH_C32(0x2f52b6f1) },
+	{ SPH_C32(0x08ff0000), SPH_C32(0xe5040000), SPH_C32(0xe0e80000),
+	  SPH_C32(0xd26b0301), SPH_C32(0x779dd108), SPH_C32(0x0a7dd70a),
+	  SPH_C32(0x6eaebba0), SPH_C32(0x494f456d), SPH_C32(0xd4010000),
+	  SPH_C32(0x272a0000), SPH_C32(0x75b50000), SPH_C32(0xcc1e0072),
+	  SPH_C32(0xbb650d6d), SPH_C32(0x15d3cbeb), SPH_C32(0xbb0ccec0),
+	  SPH_C32(0xa1f66d98) },
+	{ SPH_C32(0x57570000), SPH_C32(0xb3070000), SPH_C32(0xa3460000),
+	  SPH_C32(0xb6980312), SPH_C32(0x52e357b7), SPH_C32(0x196c4344),
+	  SPH_C32(0x3ab02e1f), SPH_C32(0xc7eb9e04), SPH_C32(0xd4450000),
+	  SPH_C32(0x58620000), SPH_C32(0xafc90000), SPH_C32(0xe63d0073),
+	  SPH_C32(0x80c8c4a1), SPH_C32(0xbc65576c), SPH_C32(0xb80650a0),
+	  SPH_C32(0x1ffc0a06) },
+	{ SPH_C32(0x9d000000), SPH_C32(0x1b090000), SPH_C32(0x01b00000),
+	  SPH_C32(0xb0930240), SPH_C32(0x46ba7497), SPH_C32(0xf53e2561),
+	  SPH_C32(0x0f6d3db7), SPH_C32(0x10a52867), SPH_C32(0x657e0000),
+	  SPH_C32(0xd8660000), SPH_C32(0x7ea60000), SPH_C32(0xa9560180),
+	  SPH_C32(0x31e76a62), SPH_C32(0x94183875), SPH_C32(0xa929e66b),
+	  SPH_C32(0xb147bb0b) },
+	{ SPH_C32(0xc2a80000), SPH_C32(0x4d0a0000), SPH_C32(0x421e0000),
+	  SPH_C32(0xd4600253), SPH_C32(0x63c4f228), SPH_C32(0xe62fb12f),
+	  SPH_C32(0x5b73a808), SPH_C32(0x9e01f30e), SPH_C32(0x653a0000),
+	  SPH_C32(0xa72e0000), SPH_C32(0xa4da0000), SPH_C32(0x83750181),
+	  SPH_C32(0x0a4aa3ae), SPH_C32(0x3daea4f2), SPH_C32(0xaa23780b),
+	  SPH_C32(0x0f4ddc95) },
+	{ SPH_C32(0x9d440000), SPH_C32(0x64410000), SPH_C32(0xdbcc0000),
+	  SPH_C32(0x9ab00241), SPH_C32(0x7d17bd5b), SPH_C32(0x5c88b9e6),
+	  SPH_C32(0x0c67a3d7), SPH_C32(0xaeaf4ff9), SPH_C32(0x3a920000),
+	  SPH_C32(0xf12d0000), SPH_C32(0xe7740000), SPH_C32(0xe7860192),
+	  SPH_C32(0x2f342511), SPH_C32(0x2ebf30bc), SPH_C32(0xfe3dedb4),
+	  SPH_C32(0x81e907fc) },
+	{ SPH_C32(0xc2ec0000), SPH_C32(0x32420000), SPH_C32(0x98620000),
+	  SPH_C32(0xfe430252), SPH_C32(0x58693be4), SPH_C32(0x4f992da8),
+	  SPH_C32(0x58793668), SPH_C32(0x200b9490), SPH_C32(0x3ad60000),
+	  SPH_C32(0x8e650000), SPH_C32(0x3d080000), SPH_C32(0xcda50193),
+	  SPH_C32(0x1499ecdd), SPH_C32(0x8709ac3b), SPH_C32(0xfd3773d4),
+	  SPH_C32(0x3fe36062) },
+	{ SPH_C32(0x73930000), SPH_C32(0xcd0e0000), SPH_C32(0x93710000),
+	  SPH_C32(0x9b0b03a0), SPH_C32(0xd2eb5ceb), SPH_C32(0xce52de36),
+	  SPH_C32(0x4a5c1ec3), SPH_C32(0x30ba4203), SPH_C32(0x1e560000),
+	  SPH_C32(0x8f240000), SPH_C32(0xd7430000), SPH_C32(0xca150120),
+	  SPH_C32(0xaf3c2e4d), SPH_C32(0xf981adce), SPH_C32(0x8ed1dd68),
+	  SPH_C32(0x76b8dbfb) },
+	{ SPH_C32(0x2c3b0000), SPH_C32(0x9b0d0000), SPH_C32(0xd0df0000),
+	  SPH_C32(0xfff803b3), SPH_C32(0xf795da54), SPH_C32(0xdd434a78),
+	  SPH_C32(0x1e428b7c), SPH_C32(0xbe1e996a), SPH_C32(0x1e120000),
+	  SPH_C32(0xf06c0000), SPH_C32(0x0d3f0000), SPH_C32(0xe0360121),
+	  SPH_C32(0x9491e781), SPH_C32(0x50373149), SPH_C32(0x8ddb4308),
+	  SPH_C32(0xc8b2bc65) },
+	{ SPH_C32(0x73d70000), SPH_C32(0xb2460000), SPH_C32(0x490d0000),
+	  SPH_C32(0xb12803a1), SPH_C32(0xe9469527), SPH_C32(0x67e442b1),
+	  SPH_C32(0x495680a3), SPH_C32(0x8eb0259d), SPH_C32(0x41ba0000),
+	  SPH_C32(0xa66f0000), SPH_C32(0x4e910000), SPH_C32(0x84c50132),
+	  SPH_C32(0xb1ef613e), SPH_C32(0x4326a507), SPH_C32(0xd9c5d6b7),
+	  SPH_C32(0x4616670c) },
+	{ SPH_C32(0x2c7f0000), SPH_C32(0xe4450000), SPH_C32(0x0aa30000),
+	  SPH_C32(0xd5db03b2), SPH_C32(0xcc381398), SPH_C32(0x74f5d6ff),
+	  SPH_C32(0x1d48151c), SPH_C32(0x0014fef4), SPH_C32(0x41fe0000),
+	  SPH_C32(0xd9270000), SPH_C32(0x94ed0000), SPH_C32(0xaee60133),
+	  SPH_C32(0x8a42a8f2), SPH_C32(0xea903980), SPH_C32(0xdacf48d7),
+	  SPH_C32(0xf81c0092) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0xaf6d0000), SPH_C32(0x0f200000), SPH_C32(0x062c0000),
+	  SPH_C32(0x857e00d3), SPH_C32(0x1e13808e), SPH_C32(0xd1fcc2d7),
+	  SPH_C32(0x9ffe6ba3), SPH_C32(0xd8036af6), SPH_C32(0x16a90000),
+	  SPH_C32(0x6a200000), SPH_C32(0x37ab0000), SPH_C32(0x187e0221),
+	  SPH_C32(0xd8a1ff45), SPH_C32(0xf3fc7ac4), SPH_C32(0xe07f66c8),
+	  SPH_C32(0x3ff79e96) },
+	{ SPH_C32(0xf0810000), SPH_C32(0x266b0000), SPH_C32(0x9ffe0000),
+	  SPH_C32(0xcbae00c1), SPH_C32(0x00c0cffd), SPH_C32(0x6b5bca1e),
+	  SPH_C32(0xc8ea607c), SPH_C32(0xe8add601), SPH_C32(0x49010000),
+	  SPH_C32(0x3c230000), SPH_C32(0x74050000), SPH_C32(0x7c8d0232),
+	  SPH_C32(0xfddf79fa), SPH_C32(0xe0edee8a), SPH_C32(0xb461f377),
+	  SPH_C32(0xb15345ff) },
+	{ SPH_C32(0xaf290000), SPH_C32(0x70680000), SPH_C32(0xdc500000),
+	  SPH_C32(0xaf5d00d2), SPH_C32(0x25be4942), SPH_C32(0x784a5e50),
+	  SPH_C32(0x9cf4f5c3), SPH_C32(0x66090d68), SPH_C32(0x49450000),
+	  SPH_C32(0x436b0000), SPH_C32(0xae790000), SPH_C32(0x56ae0233),
+	  SPH_C32(0xc672b036), SPH_C32(0x495b720d), SPH_C32(0xb76b6d17),
+	  SPH_C32(0x0f592261) },
+	{ SPH_C32(0x1e560000), SPH_C32(0x8f240000), SPH_C32(0xd7430000),
+	  SPH_C32(0xca150120), SPH_C32(0xaf3c2e4d), SPH_C32(0xf981adce),
+	  SPH_C32(0x8ed1dd68), SPH_C32(0x76b8dbfb), SPH_C32(0x6dc50000),
+	  SPH_C32(0x422a0000), SPH_C32(0x44320000), SPH_C32(0x511e0280),
+	  SPH_C32(0x7dd772a6), SPH_C32(0x37d373f8), SPH_C32(0xc48dc3ab),
+	  SPH_C32(0x460299f8) },
+	{ SPH_C32(0x41fe0000), SPH_C32(0xd9270000), SPH_C32(0x94ed0000),
+	  SPH_C32(0xaee60133), SPH_C32(0x8a42a8f2), SPH_C32(0xea903980),
+	  SPH_C32(0xdacf48d7), SPH_C32(0xf81c0092), SPH_C32(0x6d810000),
+	  SPH_C32(0x3d620000), SPH_C32(0x9e4e0000), SPH_C32(0x7b3d0281),
+	  SPH_C32(0x467abb6a), SPH_C32(0x9e65ef7f), SPH_C32(0xc7875dcb),
+	  SPH_C32(0xf808fe66) },
+	{ SPH_C32(0x1e120000), SPH_C32(0xf06c0000), SPH_C32(0x0d3f0000),
+	  SPH_C32(0xe0360121), SPH_C32(0x9491e781), SPH_C32(0x50373149),
+	  SPH_C32(0x8ddb4308), SPH_C32(0xc8b2bc65), SPH_C32(0x32290000),
+	  SPH_C32(0x6b610000), SPH_C32(0xdde00000), SPH_C32(0x1fce0292),
+	  SPH_C32(0x63043dd5), SPH_C32(0x8d747b31), SPH_C32(0x9399c874),
+	  SPH_C32(0x76ac250f) },
+	{ SPH_C32(0x41ba0000), SPH_C32(0xa66f0000), SPH_C32(0x4e910000),
+	  SPH_C32(0x84c50132), SPH_C32(0xb1ef613e), SPH_C32(0x4326a507),
+	  SPH_C32(0xd9c5d6b7), SPH_C32(0x4616670c), SPH_C32(0x326d0000),
+	  SPH_C32(0x14290000), SPH_C32(0x079c0000), SPH_C32(0x35ed0293),
+	  SPH_C32(0x58a9f419), SPH_C32(0x24c2e7b6), SPH_C32(0x90935614),
+	  SPH_C32(0xc8a64291) },
+	{ SPH_C32(0x8bed0000), SPH_C32(0x0e610000), SPH_C32(0xec670000),
+	  SPH_C32(0x82ce0060), SPH_C32(0xa5b6421e), SPH_C32(0xaf74c322),
+	  SPH_C32(0xec18c51f), SPH_C32(0x9158d16f), SPH_C32(0x83560000),
+	  SPH_C32(0x942d0000), SPH_C32(0xd6f30000), SPH_C32(0x7a860360),
+	  SPH_C32(0xe9865ada), SPH_C32(0x0cbf88af), SPH_C32(0x81bce0df),
+	  SPH_C32(0x661df39c) },
+	{ SPH_C32(0xd4450000), SPH_C32(0x58620000), SPH_C32(0xafc90000),
+	  SPH_C32(0xe63d0073), SPH_C32(0x80c8c4a1), SPH_C32(0xbc65576c),
+	  SPH_C32(0xb80650a0), SPH_C32(0x1ffc0a06), SPH_C32(0x83120000),
+	  SPH_C32(0xeb650000), SPH_C32(0x0c8f0000), SPH_C32(0x50a50361),
+	  SPH_C32(0xd22b9316), SPH_C32(0xa5091428), SPH_C32(0x82b67ebf),
+	  SPH_C32(0xd8179402) },
+	{ SPH_C32(0x8ba90000), SPH_C32(0x71290000), SPH_C32(0x361b0000),
+	  SPH_C32(0xa8ed0061), SPH_C32(0x9e1b8bd2), SPH_C32(0x06c25fa5),
+	  SPH_C32(0xef125b7f), SPH_C32(0x2f52b6f1), SPH_C32(0xdcba0000),
+	  SPH_C32(0xbd660000), SPH_C32(0x4f210000), SPH_C32(0x34560372),
+	  SPH_C32(0xf75515a9), SPH_C32(0xb6188066), SPH_C32(0xd6a8eb00),
+	  SPH_C32(0x56b34f6b) },
+	{ SPH_C32(0xd4010000), SPH_C32(0x272a0000), SPH_C32(0x75b50000),
+	  SPH_C32(0xcc1e0072), SPH_C32(0xbb650d6d), SPH_C32(0x15d3cbeb),
+	  SPH_C32(0xbb0ccec0), SPH_C32(0xa1f66d98), SPH_C32(0xdcfe0000),
+	  SPH_C32(0xc22e0000), SPH_C32(0x955d0000), SPH_C32(0x1e750373),
+	  SPH_C32(0xccf8dc65), SPH_C32(0x1fae1ce1), SPH_C32(0xd5a27560),
+	  SPH_C32(0xe8b928f5) },
+	{ SPH_C32(0x657e0000), SPH_C32(0xd8660000), SPH_C32(0x7ea60000),
+	  SPH_C32(0xa9560180), SPH_C32(0x31e76a62), SPH_C32(0x94183875),
+	  SPH_C32(0xa929e66b), SPH_C32(0xb147bb0b), SPH_C32(0xf87e0000),
+	  SPH_C32(0xc36f0000), SPH_C32(0x7f160000), SPH_C32(0x19c503c0),
+	  SPH_C32(0x775d1ef5), SPH_C32(0x61261d14), SPH_C32(0xa644dbdc),
+	  SPH_C32(0xa1e2936c) },
+	{ SPH_C32(0x3ad60000), SPH_C32(0x8e650000), SPH_C32(0x3d080000),
+	  SPH_C32(0xcda50193), SPH_C32(0x1499ecdd), SPH_C32(0x8709ac3b),
+	  SPH_C32(0xfd3773d4), SPH_C32(0x3fe36062), SPH_C32(0xf83a0000),
+	  SPH_C32(0xbc270000), SPH_C32(0xa56a0000), SPH_C32(0x33e603c1),
+	  SPH_C32(0x4cf0d739), SPH_C32(0xc8908193), SPH_C32(0xa54e45bc),
+	  SPH_C32(0x1fe8f4f2) },
+	{ SPH_C32(0x653a0000), SPH_C32(0xa72e0000), SPH_C32(0xa4da0000),
+	  SPH_C32(0x83750181), SPH_C32(0x0a4aa3ae), SPH_C32(0x3daea4f2),
+	  SPH_C32(0xaa23780b), SPH_C32(0x0f4ddc95), SPH_C32(0xa7920000),
+	  SPH_C32(0xea240000), SPH_C32(0xe6c40000), SPH_C32(0x571503d2),
+	  SPH_C32(0x698e5186), SPH_C32(0xdb8115dd), SPH_C32(0xf150d003),
+	  SPH_C32(0x914c2f9b) },
+	{ SPH_C32(0x3a920000), SPH_C32(0xf12d0000), SPH_C32(0xe7740000),
+	  SPH_C32(0xe7860192), SPH_C32(0x2f342511), SPH_C32(0x2ebf30bc),
+	  SPH_C32(0xfe3dedb4), SPH_C32(0x81e907fc), SPH_C32(0xa7d60000),
+	  SPH_C32(0x956c0000), SPH_C32(0x3cb80000), SPH_C32(0x7d3603d3),
+	  SPH_C32(0x5223984a), SPH_C32(0x7237895a), SPH_C32(0xf25a4e63),
+	  SPH_C32(0x2f464805) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) },
+	{ SPH_C32(0x49450000), SPH_C32(0x436b0000), SPH_C32(0xae790000),
+	  SPH_C32(0x56ae0233), SPH_C32(0xc672b036), SPH_C32(0x495b720d),
+	  SPH_C32(0xb76b6d17), SPH_C32(0x0f592261), SPH_C32(0xe66c0000),
+	  SPH_C32(0x33030000), SPH_C32(0x72290000), SPH_C32(0xf9f302e1),
+	  SPH_C32(0xe3ccf974), SPH_C32(0x31112c5d), SPH_C32(0x2b9f98d4),
+	  SPH_C32(0x69502f09) },
+	{ SPH_C32(0x16a90000), SPH_C32(0x6a200000), SPH_C32(0x37ab0000),
+	  SPH_C32(0x187e0221), SPH_C32(0xd8a1ff45), SPH_C32(0xf3fc7ac4),
+	  SPH_C32(0xe07f66c8), SPH_C32(0x3ff79e96), SPH_C32(0xb9c40000),
+	  SPH_C32(0x65000000), SPH_C32(0x31870000), SPH_C32(0x9d0002f2),
+	  SPH_C32(0xc6b27fcb), SPH_C32(0x2200b813), SPH_C32(0x7f810d6b),
+	  SPH_C32(0xe7f4f460) },
+	{ SPH_C32(0x49010000), SPH_C32(0x3c230000), SPH_C32(0x74050000),
+	  SPH_C32(0x7c8d0232), SPH_C32(0xfddf79fa), SPH_C32(0xe0edee8a),
+	  SPH_C32(0xb461f377), SPH_C32(0xb15345ff), SPH_C32(0xb9800000),
+	  SPH_C32(0x1a480000), SPH_C32(0xebfb0000), SPH_C32(0xb72302f3),
+	  SPH_C32(0xfd1fb607), SPH_C32(0x8bb62494), SPH_C32(0x7c8b930b),
+	  SPH_C32(0x59fe93fe) },
+	{ SPH_C32(0xf87e0000), SPH_C32(0xc36f0000), SPH_C32(0x7f160000),
+	  SPH_C32(0x19c503c0), SPH_C32(0x775d1ef5), SPH_C32(0x61261d14),
+	  SPH_C32(0xa644dbdc), SPH_C32(0xa1e2936c), SPH_C32(0x9d000000),
+	  SPH_C32(0x1b090000), SPH_C32(0x01b00000), SPH_C32(0xb0930240),
+	  SPH_C32(0x46ba7497), SPH_C32(0xf53e2561), SPH_C32(0x0f6d3db7),
+	  SPH_C32(0x10a52867) },
+	{ SPH_C32(0xa7d60000), SPH_C32(0x956c0000), SPH_C32(0x3cb80000),
+	  SPH_C32(0x7d3603d3), SPH_C32(0x5223984a), SPH_C32(0x7237895a),
+	  SPH_C32(0xf25a4e63), SPH_C32(0x2f464805), SPH_C32(0x9d440000),
+	  SPH_C32(0x64410000), SPH_C32(0xdbcc0000), SPH_C32(0x9ab00241),
+	  SPH_C32(0x7d17bd5b), SPH_C32(0x5c88b9e6), SPH_C32(0x0c67a3d7),
+	  SPH_C32(0xaeaf4ff9) },
+	{ SPH_C32(0xf83a0000), SPH_C32(0xbc270000), SPH_C32(0xa56a0000),
+	  SPH_C32(0x33e603c1), SPH_C32(0x4cf0d739), SPH_C32(0xc8908193),
+	  SPH_C32(0xa54e45bc), SPH_C32(0x1fe8f4f2), SPH_C32(0xc2ec0000),
+	  SPH_C32(0x32420000), SPH_C32(0x98620000), SPH_C32(0xfe430252),
+	  SPH_C32(0x58693be4), SPH_C32(0x4f992da8), SPH_C32(0x58793668),
+	  SPH_C32(0x200b9490) },
+	{ SPH_C32(0xa7920000), SPH_C32(0xea240000), SPH_C32(0xe6c40000),
+	  SPH_C32(0x571503d2), SPH_C32(0x698e5186), SPH_C32(0xdb8115dd),
+	  SPH_C32(0xf150d003), SPH_C32(0x914c2f9b), SPH_C32(0xc2a80000),
+	  SPH_C32(0x4d0a0000), SPH_C32(0x421e0000), SPH_C32(0xd4600253),
+	  SPH_C32(0x63c4f228), SPH_C32(0xe62fb12f), SPH_C32(0x5b73a808),
+	  SPH_C32(0x9e01f30e) },
+	{ SPH_C32(0x6dc50000), SPH_C32(0x422a0000), SPH_C32(0x44320000),
+	  SPH_C32(0x511e0280), SPH_C32(0x7dd772a6), SPH_C32(0x37d373f8),
+	  SPH_C32(0xc48dc3ab), SPH_C32(0x460299f8), SPH_C32(0x73930000),
+	  SPH_C32(0xcd0e0000), SPH_C32(0x93710000), SPH_C32(0x9b0b03a0),
+	  SPH_C32(0xd2eb5ceb), SPH_C32(0xce52de36), SPH_C32(0x4a5c1ec3),
+	  SPH_C32(0x30ba4203) },
+	{ SPH_C32(0x326d0000), SPH_C32(0x14290000), SPH_C32(0x079c0000),
+	  SPH_C32(0x35ed0293), SPH_C32(0x58a9f419), SPH_C32(0x24c2e7b6),
+	  SPH_C32(0x90935614), SPH_C32(0xc8a64291), SPH_C32(0x73d70000),
+	  SPH_C32(0xb2460000), SPH_C32(0x490d0000), SPH_C32(0xb12803a1),
+	  SPH_C32(0xe9469527), SPH_C32(0x67e442b1), SPH_C32(0x495680a3),
+	  SPH_C32(0x8eb0259d) },
+	{ SPH_C32(0x6d810000), SPH_C32(0x3d620000), SPH_C32(0x9e4e0000),
+	  SPH_C32(0x7b3d0281), SPH_C32(0x467abb6a), SPH_C32(0x9e65ef7f),
+	  SPH_C32(0xc7875dcb), SPH_C32(0xf808fe66), SPH_C32(0x2c7f0000),
+	  SPH_C32(0xe4450000), SPH_C32(0x0aa30000), SPH_C32(0xd5db03b2),
+	  SPH_C32(0xcc381398), SPH_C32(0x74f5d6ff), SPH_C32(0x1d48151c),
+	  SPH_C32(0x0014fef4) },
+	{ SPH_C32(0x32290000), SPH_C32(0x6b610000), SPH_C32(0xdde00000),
+	  SPH_C32(0x1fce0292), SPH_C32(0x63043dd5), SPH_C32(0x8d747b31),
+	  SPH_C32(0x9399c874), SPH_C32(0x76ac250f), SPH_C32(0x2c3b0000),
+	  SPH_C32(0x9b0d0000), SPH_C32(0xd0df0000), SPH_C32(0xfff803b3),
+	  SPH_C32(0xf795da54), SPH_C32(0xdd434a78), SPH_C32(0x1e428b7c),
+	  SPH_C32(0xbe1e996a) },
+	{ SPH_C32(0x83560000), SPH_C32(0x942d0000), SPH_C32(0xd6f30000),
+	  SPH_C32(0x7a860360), SPH_C32(0xe9865ada), SPH_C32(0x0cbf88af),
+	  SPH_C32(0x81bce0df), SPH_C32(0x661df39c), SPH_C32(0x08bb0000),
+	  SPH_C32(0x9a4c0000), SPH_C32(0x3a940000), SPH_C32(0xf8480300),
+	  SPH_C32(0x4c3018c4), SPH_C32(0xa3cb4b8d), SPH_C32(0x6da425c0),
+	  SPH_C32(0xf74522f3) },
+	{ SPH_C32(0xdcfe0000), SPH_C32(0xc22e0000), SPH_C32(0x955d0000),
+	  SPH_C32(0x1e750373), SPH_C32(0xccf8dc65), SPH_C32(0x1fae1ce1),
+	  SPH_C32(0xd5a27560), SPH_C32(0xe8b928f5), SPH_C32(0x08ff0000),
+	  SPH_C32(0xe5040000), SPH_C32(0xe0e80000), SPH_C32(0xd26b0301),
+	  SPH_C32(0x779dd108), SPH_C32(0x0a7dd70a), SPH_C32(0x6eaebba0),
+	  SPH_C32(0x494f456d) },
+	{ SPH_C32(0x83120000), SPH_C32(0xeb650000), SPH_C32(0x0c8f0000),
+	  SPH_C32(0x50a50361), SPH_C32(0xd22b9316), SPH_C32(0xa5091428),
+	  SPH_C32(0x82b67ebf), SPH_C32(0xd8179402), SPH_C32(0x57570000),
+	  SPH_C32(0xb3070000), SPH_C32(0xa3460000), SPH_C32(0xb6980312),
+	  SPH_C32(0x52e357b7), SPH_C32(0x196c4344), SPH_C32(0x3ab02e1f),
+	  SPH_C32(0xc7eb9e04) },
+	{ SPH_C32(0xdcba0000), SPH_C32(0xbd660000), SPH_C32(0x4f210000),
+	  SPH_C32(0x34560372), SPH_C32(0xf75515a9), SPH_C32(0xb6188066),
+	  SPH_C32(0xd6a8eb00), SPH_C32(0x56b34f6b), SPH_C32(0x57130000),
+	  SPH_C32(0xcc4f0000), SPH_C32(0x793a0000), SPH_C32(0x9cbb0313),
+	  SPH_C32(0x694e9e7b), SPH_C32(0xb0dadfc3), SPH_C32(0x39bab07f),
+	  SPH_C32(0x79e1f99a) }
+};
+
+static const sph_u32 T512_60[16][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0xabe70000), SPH_C32(0x9e0d0000), SPH_C32(0xaf270000),
+	  SPH_C32(0x3d180005), SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695),
+	  SPH_C32(0xb5c347eb), SPH_C32(0x3c5dfffe), SPH_C32(0x033d0000),
+	  SPH_C32(0x08b30000), SPH_C32(0xf33a0000), SPH_C32(0x3ac20007),
+	  SPH_C32(0x51298a50), SPH_C32(0x6b6e661f), SPH_C32(0x0ea5cfe3),
+	  SPH_C32(0xe6da7ffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x02ae0000), SPH_C32(0xef310000), SPH_C32(0x1ec10000),
+	  SPH_C32(0xf5ce000c), SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231),
+	  SPH_C32(0x0893ae02), SPH_C32(0xb5b5e185), SPH_C32(0x3af20000),
+	  SPH_C32(0x4a3b0000), SPH_C32(0x0be70000), SPH_C32(0x51060001),
+	  SPH_C32(0xc78fb695), SPH_C32(0x4577d386), SPH_C32(0x2ba87f5a),
+	  SPH_C32(0xa191f5d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0xaa740000), SPH_C32(0x798f0000), SPH_C32(0x42dc0000),
+	  SPH_C32(0xf214000e), SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb),
+	  SPH_C32(0xb3f5260a), SPH_C32(0x6f326185), SPH_C32(0x91150000),
+	  SPH_C32(0xd4360000), SPH_C32(0xa4c00000), SPH_C32(0x6c1e0004),
+	  SPH_C32(0xebc0a946), SPH_C32(0x3181c513), SPH_C32(0x9e6b38b1),
+	  SPH_C32(0x9dcc0a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x91150000), SPH_C32(0xd4360000), SPH_C32(0xa4c00000),
+	  SPH_C32(0x6c1e0004), SPH_C32(0xebc0a946), SPH_C32(0x3181c513),
+	  SPH_C32(0x9e6b38b1), SPH_C32(0x9dcc0a29), SPH_C32(0x3b610000),
+	  SPH_C32(0xadb90000), SPH_C32(0xe61c0000), SPH_C32(0x9e0a000a),
+	  SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8), SPH_C32(0x2d9e1ebb),
+	  SPH_C32(0xf2fe6bac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x39cf0000), SPH_C32(0x42880000), SPH_C32(0xf8dd0000),
+	  SPH_C32(0x6bc40006), SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599),
+	  SPH_C32(0x250db0b9), SPH_C32(0x474b8a29), SPH_C32(0x90860000),
+	  SPH_C32(0x33b40000), SPH_C32(0x493b0000), SPH_C32(0xa312000f),
+	  SPH_C32(0x6610241e), SPH_C32(0x8d22713d), SPH_C32(0x985d5950),
+	  SPH_C32(0xcea39452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x90860000), SPH_C32(0x33b40000), SPH_C32(0x493b0000),
+	  SPH_C32(0xa312000f), SPH_C32(0x6610241e), SPH_C32(0x8d22713d),
+	  SPH_C32(0x985d5950), SPH_C32(0xcea39452), SPH_C32(0xa9490000),
+	  SPH_C32(0x713c0000), SPH_C32(0xb1e60000), SPH_C32(0xc8d60009),
+	  SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4), SPH_C32(0xbd50e9e9),
+	  SPH_C32(0x89e81e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) },
+	{ SPH_C32(0x385c0000), SPH_C32(0xa50a0000), SPH_C32(0x15260000),
+	  SPH_C32(0xa4c8000d), SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7),
+	  SPH_C32(0x233bd158), SPH_C32(0x14241452), SPH_C32(0x02ae0000),
+	  SPH_C32(0xef310000), SPH_C32(0x1ec10000), SPH_C32(0xf5ce000c),
+	  SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231), SPH_C32(0x0893ae02),
+	  SPH_C32(0xb5b5e185) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 2][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T512_6[(acc >> 4) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T512_12[(acc >> 6) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_18[acc & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[3]; \
+		rp = &T512_24[acc >> 2][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[4]; \
+		rp = &T512_30[(acc >> 4) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[5]; \
+		rp = &T512_36[(acc >> 6) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_42[acc & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[6]; \
+		rp = &T512_48[acc >> 2][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[7]; \
+		rp = &T512_54[(acc >> 4) & 0x3f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_60[acc & 0x0f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 7
+
+static const sph_u32 T512_0[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0xdd313c30), SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000),
+	  SPH_C32(0xd72e0000), SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f),
+	  SPH_C32(0x17360ea4), SPH_C32(0x7fe78bad), SPH_C32(0x05071640),
+	  SPH_C32(0x15610000), SPH_C32(0x86ed0000), SPH_C32(0xb4730000),
+	  SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187), SPH_C32(0x344f69ea),
+	  SPH_C32(0xd002147d) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0xea0c1430), SPH_C32(0x2f9c0000), SPH_C32(0xdb430000),
+	  SPH_C32(0xdd3a0000), SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e),
+	  SPH_C32(0x525b63bb), SPH_C32(0x424d4977), SPH_C32(0x115d2a40),
+	  SPH_C32(0xac880000), SPH_C32(0xe7ca0000), SPH_C32(0x45120000),
+	  SPH_C32(0x2eca7ef6), SPH_C32(0x6116dcff), SPH_C32(0x73e60eca),
+	  SPH_C32(0x318c30b8) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) },
+	{ SPH_C32(0xfe562830), SPH_C32(0x96750000), SPH_C32(0xba640000),
+	  SPH_C32(0x2c5b0000), SPH_C32(0xb5c542f0), SPH_C32(0x25136906),
+	  SPH_C32(0x15f2049b), SPH_C32(0xa3c36db2), SPH_C32(0x323a3e40),
+	  SPH_C32(0x64310000), SPH_C32(0x130d0000), SPH_C32(0xbe670000),
+	  SPH_C32(0x5d075a93), SPH_C32(0x99b079b6), SPH_C32(0x712204f5),
+	  SPH_C32(0xeda8d6a7) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0x9d435c30), SPH_C32(0x0dc80000), SPH_C32(0xea520000),
+	  SPH_C32(0x878a0000), SPH_C32(0xbbcb3c89), SPH_C32(0xf95935d6),
+	  SPH_C32(0x3b2f2819), SPH_C32(0xcb7298ea), SPH_C32(0xbadb1a40),
+	  SPH_C32(0x6d0b0000), SPH_C32(0xe07b0000), SPH_C32(0xa2950000),
+	  SPH_C32(0xca5c24ba), SPH_C32(0xc8ed913a), SPH_C32(0x758d500f),
+	  SPH_C32(0x74ec3c4b) },
+	{ SPH_C32(0x40726000), SPH_C32(0x53040000), SPH_C32(0xa4f10000),
+	  SPH_C32(0x50a40000), SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999),
+	  SPH_C32(0x2c1926bd), SPH_C32(0xb4951347), SPH_C32(0xbfdc0c00),
+	  SPH_C32(0x786a0000), SPH_C32(0x66960000), SPH_C32(0x16e60000),
+	  SPH_C32(0x2af76720), SPH_C32(0x19b270bd), SPH_C32(0x41c239e5),
+	  SPH_C32(0xa4ee2836) },
+	{ SPH_C32(0x89196030), SPH_C32(0xb4210000), SPH_C32(0x8b750000),
+	  SPH_C32(0x76eb0000), SPH_C32(0x75aa01e5), SPH_C32(0x491008ae),
+	  SPH_C32(0x7c864f39), SPH_C32(0x2afcbc2f), SPH_C32(0x99bc0e40),
+	  SPH_C32(0xa5b20000), SPH_C32(0x14bc0000), SPH_C32(0x59e00000),
+	  SPH_C32(0xb99100df), SPH_C32(0x304b3473), SPH_C32(0x77495a30),
+	  SPH_C32(0xa8c8da54) },
+	{ SPH_C32(0x774f4800), SPH_C32(0x22540000), SPH_C32(0x31110000),
+	  SPH_C32(0x5ab00000), SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8),
+	  SPH_C32(0x69744ba2), SPH_C32(0x893fd19d), SPH_C32(0xab863000),
+	  SPH_C32(0xc1830000), SPH_C32(0x07b10000), SPH_C32(0xe7870000),
+	  SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5), SPH_C32(0x066b5ec5),
+	  SPH_C32(0x45600cf3) },
+	{ SPH_C32(0xbe244830), SPH_C32(0xc5710000), SPH_C32(0x1e950000),
+	  SPH_C32(0x7cff0000), SPH_C32(0xc80618ec), SPH_C32(0x01ff909f),
+	  SPH_C32(0x39eb2226), SPH_C32(0x17567ef5), SPH_C32(0x8de63240),
+	  SPH_C32(0x1c5b0000), SPH_C32(0x759b0000), SPH_C32(0xa8810000),
+	  SPH_C32(0x77f03db3), SPH_C32(0x8002090b), SPH_C32(0x30e03d10),
+	  SPH_C32(0x4946fe91) },
+	{ SPH_C32(0x63157400), SPH_C32(0x9bbd0000), SPH_C32(0x50360000),
+	  SPH_C32(0xabd10000), SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0),
+	  SPH_C32(0x2edd2c82), SPH_C32(0x68b1f558), SPH_C32(0x88e12400),
+	  SPH_C32(0x093a0000), SPH_C32(0xf3760000), SPH_C32(0x1cf20000),
+	  SPH_C32(0x975b7e29), SPH_C32(0x515de88c), SPH_C32(0x04af54fa),
+	  SPH_C32(0x9944eaec) },
+	{ SPH_C32(0xaa7e7430), SPH_C32(0x7c980000), SPH_C32(0x7fb20000),
+	  SPH_C32(0x8d9e0000), SPH_C32(0x06672580), SPH_C32(0xb1b6ade7),
+	  SPH_C32(0x7e424506), SPH_C32(0xf6d85a30), SPH_C32(0xae812640),
+	  SPH_C32(0xd4e20000), SPH_C32(0x815c0000), SPH_C32(0x53f40000),
+	  SPH_C32(0x043d19d6), SPH_C32(0x78a4ac42), SPH_C32(0x3224372f),
+	  SPH_C32(0x9562188e) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0x55d01830), SPH_C32(0x57f60000), SPH_C32(0xbdd50000),
+	  SPH_C32(0xcbdc0000), SPH_C32(0x515318bc), SPH_C32(0x8ce824c3),
+	  SPH_C32(0x13995a5e), SPH_C32(0xe6a36141), SPH_C32(0xeef34640),
+	  SPH_C32(0x87e60000), SPH_C32(0x25ad0000), SPH_C32(0x03500000),
+	  SPH_C32(0x79fe43ca), SPH_C32(0x5c4855db), SPH_C32(0x1e3d1192),
+	  SPH_C32(0x21f70bc9) },
+	{ SPH_C32(0x88e12400), SPH_C32(0x093a0000), SPH_C32(0xf3760000),
+	  SPH_C32(0x1cf20000), SPH_C32(0x975b7e29), SPH_C32(0x515de88c),
+	  SPH_C32(0x04af54fa), SPH_C32(0x9944eaec), SPH_C32(0xebf45000),
+	  SPH_C32(0x92870000), SPH_C32(0xa3400000), SPH_C32(0xb7230000),
+	  SPH_C32(0x99550050), SPH_C32(0x8d17b45c), SPH_C32(0x2a727878),
+	  SPH_C32(0xf1f51fb4) },
+	{ SPH_C32(0x418a2430), SPH_C32(0xee1f0000), SPH_C32(0xdcf20000),
+	  SPH_C32(0x3abd0000), SPH_C32(0x9f3225d0), SPH_C32(0x3ca119bb),
+	  SPH_C32(0x54303d7e), SPH_C32(0x072d4584), SPH_C32(0xcd945240),
+	  SPH_C32(0x4f5f0000), SPH_C32(0xd16a0000), SPH_C32(0xf8250000),
+	  SPH_C32(0x0a3367af), SPH_C32(0xa4eef092), SPH_C32(0x1cf91bad),
+	  SPH_C32(0xfdd3edd6) },
+	{ SPH_C32(0xbfdc0c00), SPH_C32(0x786a0000), SPH_C32(0x66960000),
+	  SPH_C32(0x16e60000), SPH_C32(0x2af76720), SPH_C32(0x19b270bd),
+	  SPH_C32(0x41c239e5), SPH_C32(0xa4ee2836), SPH_C32(0xffae6c00),
+	  SPH_C32(0x2b6e0000), SPH_C32(0xc2670000), SPH_C32(0x46420000),
+	  SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924), SPH_C32(0x6ddb1f58),
+	  SPH_C32(0x107b3b71) },
+	{ SPH_C32(0x76b70c30), SPH_C32(0x9f4f0000), SPH_C32(0x49120000),
+	  SPH_C32(0x30a90000), SPH_C32(0x229e3cd9), SPH_C32(0x744e818a),
+	  SPH_C32(0x115d5061), SPH_C32(0x3a87875e), SPH_C32(0xd9ce6e40),
+	  SPH_C32(0xf6b60000), SPH_C32(0xb04d0000), SPH_C32(0x09440000),
+	  SPH_C32(0xc4525ac3), SPH_C32(0x14a7cdea), SPH_C32(0x5b507c8d),
+	  SPH_C32(0x1c5dc913) },
+	{ SPH_C32(0xab863000), SPH_C32(0xc1830000), SPH_C32(0x07b10000),
+	  SPH_C32(0xe7870000), SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5),
+	  SPH_C32(0x066b5ec5), SPH_C32(0x45600cf3), SPH_C32(0xdcc97800),
+	  SPH_C32(0xe3d70000), SPH_C32(0x36a00000), SPH_C32(0xbd370000),
+	  SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d), SPH_C32(0x6f1f1567),
+	  SPH_C32(0xcc5fdd6e) },
+	{ SPH_C32(0x62ed3030), SPH_C32(0x26a60000), SPH_C32(0x28350000),
+	  SPH_C32(0xc1c80000), SPH_C32(0xecff01b5), SPH_C32(0xc407bcf2),
+	  SPH_C32(0x56f43741), SPH_C32(0xdb09a39b), SPH_C32(0xfaa97a40),
+	  SPH_C32(0x3e0f0000), SPH_C32(0x448a0000), SPH_C32(0xf2310000),
+	  SPH_C32(0xb79f7ea6), SPH_C32(0xec0168a3), SPH_C32(0x599476b2),
+	  SPH_C32(0xc0792f0c) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) },
+	{ SPH_C32(0x01f84430), SPH_C32(0xbd1b0000), SPH_C32(0x78030000),
+	  SPH_C32(0x6a190000), SPH_C32(0xe2f17fcc), SPH_C32(0x184de022),
+	  SPH_C32(0x78291bc3), SPH_C32(0xb3b856c3), SPH_C32(0x72485e40),
+	  SPH_C32(0x37350000), SPH_C32(0xb7fc0000), SPH_C32(0xeec30000),
+	  SPH_C32(0x20c4008f), SPH_C32(0xbd5c802f), SPH_C32(0x5d3b2248),
+	  SPH_C32(0x593dc5e0) },
+	{ SPH_C32(0xdcc97800), SPH_C32(0xe3d70000), SPH_C32(0x36a00000),
+	  SPH_C32(0xbd370000), SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d),
+	  SPH_C32(0x6f1f1567), SPH_C32(0xcc5fdd6e), SPH_C32(0x774f4800),
+	  SPH_C32(0x22540000), SPH_C32(0x31110000), SPH_C32(0x5ab00000),
+	  SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8), SPH_C32(0x69744ba2),
+	  SPH_C32(0x893fd19d) },
+	{ SPH_C32(0x15a27830), SPH_C32(0x04f20000), SPH_C32(0x19240000),
+	  SPH_C32(0x9b780000), SPH_C32(0x2c9042a0), SPH_C32(0xa804dd5a),
+	  SPH_C32(0x3f807ce3), SPH_C32(0x52367206), SPH_C32(0x512f4a40),
+	  SPH_C32(0xff8c0000), SPH_C32(0x433b0000), SPH_C32(0x15b60000),
+	  SPH_C32(0x530924ea), SPH_C32(0x45fa2566), SPH_C32(0x5fff2877),
+	  SPH_C32(0x851923ff) },
+	{ SPH_C32(0xebf45000), SPH_C32(0x92870000), SPH_C32(0xa3400000),
+	  SPH_C32(0xb7230000), SPH_C32(0x99550050), SPH_C32(0x8d17b45c),
+	  SPH_C32(0x2a727878), SPH_C32(0xf1f51fb4), SPH_C32(0x63157400),
+	  SPH_C32(0x9bbd0000), SPH_C32(0x50360000), SPH_C32(0xabd10000),
+	  SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0), SPH_C32(0x2edd2c82),
+	  SPH_C32(0x68b1f558) },
+	{ SPH_C32(0x229f5030), SPH_C32(0x75a20000), SPH_C32(0x8cc40000),
+	  SPH_C32(0x916c0000), SPH_C32(0x913c5ba9), SPH_C32(0xe0eb456b),
+	  SPH_C32(0x7aed11fc), SPH_C32(0x6f9cb0dc), SPH_C32(0x45757640),
+	  SPH_C32(0x46650000), SPH_C32(0x221c0000), SPH_C32(0xe4d70000),
+	  SPH_C32(0x9d681986), SPH_C32(0xf5b3181e), SPH_C32(0x18564f57),
+	  SPH_C32(0x6497073a) },
+	{ SPH_C32(0xffae6c00), SPH_C32(0x2b6e0000), SPH_C32(0xc2670000),
+	  SPH_C32(0x46420000), SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924),
+	  SPH_C32(0x6ddb1f58), SPH_C32(0x107b3b71), SPH_C32(0x40726000),
+	  SPH_C32(0x53040000), SPH_C32(0xa4f10000), SPH_C32(0x50a40000),
+	  SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999), SPH_C32(0x2c1926bd),
+	  SPH_C32(0xb4951347) },
+	{ SPH_C32(0x36c56c30), SPH_C32(0xcc4b0000), SPH_C32(0xede30000),
+	  SPH_C32(0x600d0000), SPH_C32(0x5f5d66c5), SPH_C32(0x50a27813),
+	  SPH_C32(0x3d4476dc), SPH_C32(0x8e129419), SPH_C32(0x66126240),
+	  SPH_C32(0x8edc0000), SPH_C32(0xd6db0000), SPH_C32(0x1fa20000),
+	  SPH_C32(0xeea53de3), SPH_C32(0x0d15bd57), SPH_C32(0x1a924568),
+	  SPH_C32(0xb8b3e125) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0xe02f9c30), SPH_C32(0x83c20000), SPH_C32(0xddcf0000),
+	  SPH_C32(0xe4bc0000), SPH_C32(0x06b71576), SPH_C32(0x3b3ec672),
+	  SPH_C32(0xa37f2bdd), SPH_C32(0x136431ac), SPH_C32(0x600d0e40),
+	  SPH_C32(0xd5ba0000), SPH_C32(0xaf770000), SPH_C32(0xf5db0000),
+	  SPH_C32(0xf9f41ebd), SPH_C32(0x6de66f5d), SPH_C32(0x1701adba),
+	  SPH_C32(0xb30af980) },
+	{ SPH_C32(0x3d1ea000), SPH_C32(0xdd0e0000), SPH_C32(0x936c0000),
+	  SPH_C32(0x33920000), SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d),
+	  SPH_C32(0xb4492579), SPH_C32(0x6c83ba01), SPH_C32(0x650a1800),
+	  SPH_C32(0xc0db0000), SPH_C32(0x299a0000), SPH_C32(0x41a80000),
+	  SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda), SPH_C32(0x234ec450),
+	  SPH_C32(0x6308edfd) },
+	{ SPH_C32(0xf475a030), SPH_C32(0x3a2b0000), SPH_C32(0xbce80000),
+	  SPH_C32(0x15dd0000), SPH_C32(0xc8d6281a), SPH_C32(0x8b77fb0a),
+	  SPH_C32(0xe4d64cfd), SPH_C32(0xf2ea1569), SPH_C32(0x436a1a40),
+	  SPH_C32(0x1d030000), SPH_C32(0x5bb00000), SPH_C32(0x0eae0000),
+	  SPH_C32(0x8a393ad8), SPH_C32(0x9540ca14), SPH_C32(0x15c5a785),
+	  SPH_C32(0x6f2e1f9f) },
+	{ SPH_C32(0x0a238800), SPH_C32(0xac5e0000), SPH_C32(0x068c0000),
+	  SPH_C32(0x39860000), SPH_C32(0x7d136aea), SPH_C32(0xae64920c),
+	  SPH_C32(0xf1244866), SPH_C32(0x512978db), SPH_C32(0x71502400),
+	  SPH_C32(0x79320000), SPH_C32(0x48bd0000), SPH_C32(0xb0c90000),
+	  SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2), SPH_C32(0x64e7a370),
+	  SPH_C32(0x8286c938) },
+	{ SPH_C32(0xc3488830), SPH_C32(0x4b7b0000), SPH_C32(0x29080000),
+	  SPH_C32(0x1fc90000), SPH_C32(0x757a3113), SPH_C32(0xc398633b),
+	  SPH_C32(0xa1bb21e2), SPH_C32(0xcf40d7b3), SPH_C32(0x57302640),
+	  SPH_C32(0xa4ea0000), SPH_C32(0x3a970000), SPH_C32(0xffcf0000),
+	  SPH_C32(0x445807b4), SPH_C32(0x2509f76c), SPH_C32(0x526cc0a5),
+	  SPH_C32(0x8ea03b5a) },
+	{ SPH_C32(0x1e79b400), SPH_C32(0x15b70000), SPH_C32(0x67ab0000),
+	  SPH_C32(0xc8e70000), SPH_C32(0xb3725786), SPH_C32(0x1e2daf74),
+	  SPH_C32(0xb68d2f46), SPH_C32(0xb0a75c1e), SPH_C32(0x52373000),
+	  SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000), SPH_C32(0x4bbc0000),
+	  SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb), SPH_C32(0x6623a94f),
+	  SPH_C32(0x5ea22f27) },
+	{ SPH_C32(0xd712b430), SPH_C32(0xf2920000), SPH_C32(0x482f0000),
+	  SPH_C32(0xeea80000), SPH_C32(0xbb1b0c7f), SPH_C32(0x73d15e43),
+	  SPH_C32(0xe61246c2), SPH_C32(0x2ecef376), SPH_C32(0x74573240),
+	  SPH_C32(0x6c530000), SPH_C32(0xce500000), SPH_C32(0x04ba0000),
+	  SPH_C32(0x379523d1), SPH_C32(0xddaf5225), SPH_C32(0x50a8ca9a),
+	  SPH_C32(0x5284dd45) },
+	{ SPH_C32(0x7d6cc000), SPH_C32(0x8e0a0000), SPH_C32(0x379d0000),
+	  SPH_C32(0x63360000), SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4),
+	  SPH_C32(0x985003c4), SPH_C32(0xd816a946), SPH_C32(0xdad61400),
+	  SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000), SPH_C32(0x574e0000),
+	  SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67), SPH_C32(0x628cfdb5),
+	  SPH_C32(0xc7e6c5cb) },
+	{ SPH_C32(0xb407c030), SPH_C32(0x692f0000), SPH_C32(0x18190000),
+	  SPH_C32(0x45790000), SPH_C32(0xb5157206), SPH_C32(0xaf9b0293),
+	  SPH_C32(0xc8cf6a40), SPH_C32(0x467f062e), SPH_C32(0xfcb61640),
+	  SPH_C32(0x65690000), SPH_C32(0x3d260000), SPH_C32(0x18480000),
+	  SPH_C32(0xa0ce5df8), SPH_C32(0x8cf2baa9), SPH_C32(0x54079e60),
+	  SPH_C32(0xcbc037a9) },
+	{ SPH_C32(0x6936fc00), SPH_C32(0x37e30000), SPH_C32(0x56ba0000),
+	  SPH_C32(0x92570000), SPH_C32(0x731d1493), SPH_C32(0x722ecedc),
+	  SPH_C32(0xdff964e4), SPH_C32(0x39988d83), SPH_C32(0xf9b10000),
+	  SPH_C32(0x70080000), SPH_C32(0xbbcb0000), SPH_C32(0xac3b0000),
+	  SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e), SPH_C32(0x6048f78a),
+	  SPH_C32(0x1bc223d4) },
+	{ SPH_C32(0xa05dfc30), SPH_C32(0xd0c60000), SPH_C32(0x793e0000),
+	  SPH_C32(0xb4180000), SPH_C32(0x7b744f6a), SPH_C32(0x1fd23feb),
+	  SPH_C32(0x8f660d60), SPH_C32(0xa7f122eb), SPH_C32(0xdfd10240),
+	  SPH_C32(0xadd00000), SPH_C32(0xc9e10000), SPH_C32(0xe33d0000),
+	  SPH_C32(0xd303799d), SPH_C32(0x74541fe0), SPH_C32(0x56c3945f),
+	  SPH_C32(0x17e4d1b6) },
+	{ SPH_C32(0x5e0bd400), SPH_C32(0x46b30000), SPH_C32(0xc35a0000),
+	  SPH_C32(0x98430000), SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed),
+	  SPH_C32(0x9a9409fb), SPH_C32(0x04324f59), SPH_C32(0xedeb3c00),
+	  SPH_C32(0xc9e10000), SPH_C32(0xdaec0000), SPH_C32(0x5d5a0000),
+	  SPH_C32(0x8e04230e), SPH_C32(0xede46656), SPH_C32(0x27e190aa),
+	  SPH_C32(0xfa4c0711) },
+	{ SPH_C32(0x9760d430), SPH_C32(0xa1960000), SPH_C32(0xecde0000),
+	  SPH_C32(0xbe0c0000), SPH_C32(0xc6d85663), SPH_C32(0x573da7da),
+	  SPH_C32(0xca0b607f), SPH_C32(0x9a5be031), SPH_C32(0xcb8b3e40),
+	  SPH_C32(0x14390000), SPH_C32(0xa8c60000), SPH_C32(0x125c0000),
+	  SPH_C32(0x1d6244f1), SPH_C32(0xc41d2298), SPH_C32(0x116af37f),
+	  SPH_C32(0xf66af573) },
+	{ SPH_C32(0x4a51e800), SPH_C32(0xff5a0000), SPH_C32(0xa27d0000),
+	  SPH_C32(0x69220000), SPH_C32(0x00d030f6), SPH_C32(0x8a886b95),
+	  SPH_C32(0xdd3d6edb), SPH_C32(0xe5bc6b9c), SPH_C32(0xce8c2800),
+	  SPH_C32(0x01580000), SPH_C32(0x2e2b0000), SPH_C32(0xa62f0000),
+	  SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f), SPH_C32(0x25259a95),
+	  SPH_C32(0x2668e10e) },
+	{ SPH_C32(0x833ae830), SPH_C32(0x187f0000), SPH_C32(0x8df90000),
+	  SPH_C32(0x4f6d0000), SPH_C32(0x08b96b0f), SPH_C32(0xe7749aa2),
+	  SPH_C32(0x8da2075f), SPH_C32(0x7bd5c4f4), SPH_C32(0xe8ec2a40),
+	  SPH_C32(0xdc800000), SPH_C32(0x5c010000), SPH_C32(0xe9290000),
+	  SPH_C32(0x6eaf6094), SPH_C32(0x3cbb87d1), SPH_C32(0x13aef940),
+	  SPH_C32(0x2a4e136c) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0x7c948430), SPH_C32(0x33110000), SPH_C32(0x4f9e0000),
+	  SPH_C32(0x092f0000), SPH_C32(0x5f8d5633), SPH_C32(0xda2a1386),
+	  SPH_C32(0xe0791807), SPH_C32(0x6baeff85), SPH_C32(0xa89e4a40),
+	  SPH_C32(0x8f840000), SPH_C32(0xf8f00000), SPH_C32(0xb98d0000),
+	  SPH_C32(0x136c3a88), SPH_C32(0x18577e48), SPH_C32(0x3fb7dffd),
+	  SPH_C32(0x9edb002b) },
+	{ SPH_C32(0xa1a5b800), SPH_C32(0x6ddd0000), SPH_C32(0x013d0000),
+	  SPH_C32(0xde010000), SPH_C32(0x998530a6), SPH_C32(0x079fdfc9),
+	  SPH_C32(0xf74f16a3), SPH_C32(0x14497428), SPH_C32(0xad995c00),
+	  SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000), SPH_C32(0x0dfe0000),
+	  SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf), SPH_C32(0x0bf8b617),
+	  SPH_C32(0x4ed91456) },
+	{ SPH_C32(0x68ceb830), SPH_C32(0x8af80000), SPH_C32(0x2eb90000),
+	  SPH_C32(0xf84e0000), SPH_C32(0x91ec6b5f), SPH_C32(0x6a632efe),
+	  SPH_C32(0xa7d07f27), SPH_C32(0x8a20db40), SPH_C32(0x8bf95e40),
+	  SPH_C32(0x473d0000), SPH_C32(0x0c370000), SPH_C32(0x42f80000),
+	  SPH_C32(0x60a11eed), SPH_C32(0xe0f1db01), SPH_C32(0x3d73d5c2),
+	  SPH_C32(0x42ffe634) },
+	{ SPH_C32(0x96989000), SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000),
+	  SPH_C32(0xd4150000), SPH_C32(0x242929af), SPH_C32(0x4f7047f8),
+	  SPH_C32(0xb2227bbc), SPH_C32(0x29e3b6f2), SPH_C32(0xb9c36000),
+	  SPH_C32(0x230c0000), SPH_C32(0x1f3a0000), SPH_C32(0xfc9f0000),
+	  SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7), SPH_C32(0x4c51d137),
+	  SPH_C32(0xaf573093) },
+	{ SPH_C32(0x5ff39030), SPH_C32(0xfba80000), SPH_C32(0xbb590000),
+	  SPH_C32(0xf25a0000), SPH_C32(0x2c407256), SPH_C32(0x228cb6cf),
+	  SPH_C32(0xe2bd1238), SPH_C32(0xb78a199a), SPH_C32(0x9fa36240),
+	  SPH_C32(0xfed40000), SPH_C32(0x6d100000), SPH_C32(0xb3990000),
+	  SPH_C32(0xaec02381), SPH_C32(0x50b8e679), SPH_C32(0x7adab2e2),
+	  SPH_C32(0xa371c2f1) },
+	{ SPH_C32(0x82c2ac00), SPH_C32(0xa5640000), SPH_C32(0xf5fa0000),
+	  SPH_C32(0x25740000), SPH_C32(0xea4814c3), SPH_C32(0xff397a80),
+	  SPH_C32(0xf58b1c9c), SPH_C32(0xc86d9237), SPH_C32(0x9aa47400),
+	  SPH_C32(0xebb50000), SPH_C32(0xebfd0000), SPH_C32(0x07ea0000),
+	  SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe), SPH_C32(0x4e95db08),
+	  SPH_C32(0x7373d68c) },
+	{ SPH_C32(0x4ba9ac30), SPH_C32(0x42410000), SPH_C32(0xda7e0000),
+	  SPH_C32(0x033b0000), SPH_C32(0xe2214f3a), SPH_C32(0x92c58bb7),
+	  SPH_C32(0xa5147518), SPH_C32(0x56043d5f), SPH_C32(0xbcc47640),
+	  SPH_C32(0x366d0000), SPH_C32(0x99d70000), SPH_C32(0x48ec0000),
+	  SPH_C32(0xdd0d07e4), SPH_C32(0xa81e4330), SPH_C32(0x781eb8dd),
+	  SPH_C32(0x7f5524ee) },
+	{ SPH_C32(0xe1d7d800), SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000),
+	  SPH_C32(0x8ea50000), SPH_C32(0xe4466aba), SPH_C32(0x23732650),
+	  SPH_C32(0xdb56301e), SPH_C32(0xa0dc676f), SPH_C32(0x12455000),
+	  SPH_C32(0xe28f0000), SPH_C32(0x188b0000), SPH_C32(0x1b180000),
+	  SPH_C32(0xd9301e32), SPH_C32(0xd0baef72), SPH_C32(0x4a3a8ff2),
+	  SPH_C32(0xea373c60) },
+	{ SPH_C32(0x28bcd830), SPH_C32(0xd9fc0000), SPH_C32(0x8a480000),
+	  SPH_C32(0xa8ea0000), SPH_C32(0xec2f3143), SPH_C32(0x4e8fd767),
+	  SPH_C32(0x8bc9599a), SPH_C32(0x3eb5c807), SPH_C32(0x34255240),
+	  SPH_C32(0x3f570000), SPH_C32(0x6aa10000), SPH_C32(0x541e0000),
+	  SPH_C32(0x4a5679cd), SPH_C32(0xf943abbc), SPH_C32(0x7cb1ec27),
+	  SPH_C32(0xe611ce02) },
+	{ SPH_C32(0xf58de400), SPH_C32(0x87300000), SPH_C32(0xc4eb0000),
+	  SPH_C32(0x7fc40000), SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28),
+	  SPH_C32(0x9cff573e), SPH_C32(0x415243aa), SPH_C32(0x31224400),
+	  SPH_C32(0x2a360000), SPH_C32(0xec4c0000), SPH_C32(0xe06d0000),
+	  SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b), SPH_C32(0x48fe85cd),
+	  SPH_C32(0x3613da7f) },
+	{ SPH_C32(0x3ce6e430), SPH_C32(0x60150000), SPH_C32(0xeb6f0000),
+	  SPH_C32(0x598b0000), SPH_C32(0x224e0c2f), SPH_C32(0xfec6ea1f),
+	  SPH_C32(0xcc603eba), SPH_C32(0xdf3becc2), SPH_C32(0x17424640),
+	  SPH_C32(0xf7ee0000), SPH_C32(0x9e660000), SPH_C32(0xaf6b0000),
+	  SPH_C32(0x399b5da8), SPH_C32(0x01e50ef5), SPH_C32(0x7e75e618),
+	  SPH_C32(0x3a35281d) },
+	{ SPH_C32(0xc2b0cc00), SPH_C32(0xf6600000), SPH_C32(0x510b0000),
+	  SPH_C32(0x75d00000), SPH_C32(0x978b4edf), SPH_C32(0xdbd58319),
+	  SPH_C32(0xd9923a21), SPH_C32(0x7cf88170), SPH_C32(0x25787800),
+	  SPH_C32(0x93df0000), SPH_C32(0x8d6b0000), SPH_C32(0x110c0000),
+	  SPH_C32(0x649c073b), SPH_C32(0x98557743), SPH_C32(0x0f57e2ed),
+	  SPH_C32(0xd79dfeba) },
+	{ SPH_C32(0x0bdbcc30), SPH_C32(0x11450000), SPH_C32(0x7e8f0000),
+	  SPH_C32(0x539f0000), SPH_C32(0x9fe21526), SPH_C32(0xb629722e),
+	  SPH_C32(0x890d53a5), SPH_C32(0xe2912e18), SPH_C32(0x03187a40),
+	  SPH_C32(0x4e070000), SPH_C32(0xff410000), SPH_C32(0x5e0a0000),
+	  SPH_C32(0xf7fa60c4), SPH_C32(0xb1ac338d), SPH_C32(0x39dc8138),
+	  SPH_C32(0xdbbb0cd8) },
+	{ SPH_C32(0xd6eaf000), SPH_C32(0x4f890000), SPH_C32(0x302c0000),
+	  SPH_C32(0x84b10000), SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61),
+	  SPH_C32(0x9e3b5d01), SPH_C32(0x9d76a5b5), SPH_C32(0x061f6c00),
+	  SPH_C32(0x5b660000), SPH_C32(0x79ac0000), SPH_C32(0xea790000),
+	  SPH_C32(0x1751235e), SPH_C32(0x60f3d20a), SPH_C32(0x0d93e8d2),
+	  SPH_C32(0x0bb918a5) },
+	{ SPH_C32(0x1f81f030), SPH_C32(0xa8ac0000), SPH_C32(0x1fa80000),
+	  SPH_C32(0xa2fe0000), SPH_C32(0x5183284a), SPH_C32(0x06604f56),
+	  SPH_C32(0xcea43485), SPH_C32(0x031f0add), SPH_C32(0x207f6e40),
+	  SPH_C32(0x86be0000), SPH_C32(0x0b860000), SPH_C32(0xa57f0000),
+	  SPH_C32(0x843744a1), SPH_C32(0x490a96c4), SPH_C32(0x3b188b07),
+	  SPH_C32(0x079feac7) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0x8f060c30), SPH_C32(0xef470000), SPH_C32(0xf2d90000),
+	  SPH_C32(0x9c920000), SPH_C32(0x62fb22bb), SPH_C32(0x29e3daa4),
+	  SPH_C32(0x7115a7eb), SPH_C32(0x2145a48a), SPH_C32(0x49499240),
+	  SPH_C32(0xb15d0000), SPH_C32(0x5d3c0000), SPH_C32(0x37280000),
+	  SPH_C32(0xf72a5032), SPH_C32(0x3b245818), SPH_C32(0xe4e1efe3),
+	  SPH_C32(0x3e076744) },
+	{ SPH_C32(0x52373000), SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000),
+	  SPH_C32(0x4bbc0000), SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb),
+	  SPH_C32(0x6623a94f), SPH_C32(0x5ea22f27), SPH_C32(0x4c4e8400),
+	  SPH_C32(0xa43c0000), SPH_C32(0xdbd10000), SPH_C32(0x835b0000),
+	  SPH_C32(0x178113a8), SPH_C32(0xea7bb99f), SPH_C32(0xd0ae8609),
+	  SPH_C32(0xee057339) },
+	{ SPH_C32(0x9b5c3030), SPH_C32(0x56ae0000), SPH_C32(0x93fe0000),
+	  SPH_C32(0x6df30000), SPH_C32(0xac9a1fd7), SPH_C32(0x99aae7dc),
+	  SPH_C32(0x36bcc0cb), SPH_C32(0xc0cb804f), SPH_C32(0x6a2e8640),
+	  SPH_C32(0x79e40000), SPH_C32(0xa9fb0000), SPH_C32(0xcc5d0000),
+	  SPH_C32(0x84e77457), SPH_C32(0xc382fd51), SPH_C32(0xe625e5dc),
+	  SPH_C32(0xe223815b) },
+	{ SPH_C32(0x650a1800), SPH_C32(0xc0db0000), SPH_C32(0x299a0000),
+	  SPH_C32(0x41a80000), SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda),
+	  SPH_C32(0x234ec450), SPH_C32(0x6308edfd), SPH_C32(0x5814b800),
+	  SPH_C32(0x1dd50000), SPH_C32(0xbaf60000), SPH_C32(0x723a0000),
+	  SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7), SPH_C32(0x9707e129),
+	  SPH_C32(0x0f8b57fc) },
+	{ SPH_C32(0xac611830), SPH_C32(0x27fe0000), SPH_C32(0x061e0000),
+	  SPH_C32(0x67e70000), SPH_C32(0x113606de), SPH_C32(0xd1457fed),
+	  SPH_C32(0x73d1add4), SPH_C32(0xfd614295), SPH_C32(0x7e74ba40),
+	  SPH_C32(0xc00d0000), SPH_C32(0xc8dc0000), SPH_C32(0x3d3c0000),
+	  SPH_C32(0x4a86493b), SPH_C32(0x73cbc029), SPH_C32(0xa18c82fc),
+	  SPH_C32(0x03ada59e) },
+	{ SPH_C32(0x71502400), SPH_C32(0x79320000), SPH_C32(0x48bd0000),
+	  SPH_C32(0xb0c90000), SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2),
+	  SPH_C32(0x64e7a370), SPH_C32(0x8286c938), SPH_C32(0x7b73ac00),
+	  SPH_C32(0xd56c0000), SPH_C32(0x4e310000), SPH_C32(0x894f0000),
+	  SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae), SPH_C32(0x95c3eb16),
+	  SPH_C32(0xd3afb1e3) },
+	{ SPH_C32(0xb83b2430), SPH_C32(0x9e170000), SPH_C32(0x67390000),
+	  SPH_C32(0x96860000), SPH_C32(0xdf573bb2), SPH_C32(0x610c4295),
+	  SPH_C32(0x3478caf4), SPH_C32(0x1cef6650), SPH_C32(0x5d13ae40),
+	  SPH_C32(0x08b40000), SPH_C32(0x3c1b0000), SPH_C32(0xc6490000),
+	  SPH_C32(0x394b6d5e), SPH_C32(0x8b6d6560), SPH_C32(0xa34888c3),
+	  SPH_C32(0xdf894381) },
+	{ SPH_C32(0x12455000), SPH_C32(0xe28f0000), SPH_C32(0x188b0000),
+	  SPH_C32(0x1b180000), SPH_C32(0xd9301e32), SPH_C32(0xd0baef72),
+	  SPH_C32(0x4a3a8ff2), SPH_C32(0xea373c60), SPH_C32(0xf3928800),
+	  SPH_C32(0xdc560000), SPH_C32(0xbd470000), SPH_C32(0x95bd0000),
+	  SPH_C32(0x3d767488), SPH_C32(0xf3c9c922), SPH_C32(0x916cbfec),
+	  SPH_C32(0x4aeb5b0f) },
+	{ SPH_C32(0xdb2e5030), SPH_C32(0x05aa0000), SPH_C32(0x370f0000),
+	  SPH_C32(0x3d570000), SPH_C32(0xd15945cb), SPH_C32(0xbd461e45),
+	  SPH_C32(0x1aa5e676), SPH_C32(0x745e9308), SPH_C32(0xd5f28a40),
+	  SPH_C32(0x018e0000), SPH_C32(0xcf6d0000), SPH_C32(0xdabb0000),
+	  SPH_C32(0xae101377), SPH_C32(0xda308dec), SPH_C32(0xa7e7dc39),
+	  SPH_C32(0x46cda96d) },
+	{ SPH_C32(0x061f6c00), SPH_C32(0x5b660000), SPH_C32(0x79ac0000),
+	  SPH_C32(0xea790000), SPH_C32(0x1751235e), SPH_C32(0x60f3d20a),
+	  SPH_C32(0x0d93e8d2), SPH_C32(0x0bb918a5), SPH_C32(0xd0f59c00),
+	  SPH_C32(0x14ef0000), SPH_C32(0x49800000), SPH_C32(0x6ec80000),
+	  SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b), SPH_C32(0x93a8b5d3),
+	  SPH_C32(0x96cfbd10) },
+	{ SPH_C32(0xcf746c30), SPH_C32(0xbc430000), SPH_C32(0x56280000),
+	  SPH_C32(0xcc360000), SPH_C32(0x1f3878a7), SPH_C32(0x0d0f233d),
+	  SPH_C32(0x5d0c8156), SPH_C32(0x95d0b7cd), SPH_C32(0xf6959e40),
+	  SPH_C32(0xc9370000), SPH_C32(0x3baa0000), SPH_C32(0x21ce0000),
+	  SPH_C32(0xdddd3712), SPH_C32(0x229628a5), SPH_C32(0xa523d606),
+	  SPH_C32(0x9ae94f72) },
+	{ SPH_C32(0x31224400), SPH_C32(0x2a360000), SPH_C32(0xec4c0000),
+	  SPH_C32(0xe06d0000), SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b),
+	  SPH_C32(0x48fe85cd), SPH_C32(0x3613da7f), SPH_C32(0xc4afa000),
+	  SPH_C32(0xad060000), SPH_C32(0x28a70000), SPH_C32(0x9fa90000),
+	  SPH_C32(0x80da6d81), SPH_C32(0xbb265113), SPH_C32(0xd401d2f3),
+	  SPH_C32(0x774199d5) },
+	{ SPH_C32(0xf8494430), SPH_C32(0xcd130000), SPH_C32(0xc3c80000),
+	  SPH_C32(0xc6220000), SPH_C32(0xa29461ae), SPH_C32(0x45e0bb0c),
+	  SPH_C32(0x1861ec49), SPH_C32(0xa87a7517), SPH_C32(0xe2cfa240),
+	  SPH_C32(0x70de0000), SPH_C32(0x5a8d0000), SPH_C32(0xd0af0000),
+	  SPH_C32(0x13bc0a7e), SPH_C32(0x92df15dd), SPH_C32(0xe28ab126),
+	  SPH_C32(0x7b676bb7) },
+	{ SPH_C32(0x25787800), SPH_C32(0x93df0000), SPH_C32(0x8d6b0000),
+	  SPH_C32(0x110c0000), SPH_C32(0x649c073b), SPH_C32(0x98557743),
+	  SPH_C32(0x0f57e2ed), SPH_C32(0xd79dfeba), SPH_C32(0xe7c8b400),
+	  SPH_C32(0x65bf0000), SPH_C32(0xdc600000), SPH_C32(0x64dc0000),
+	  SPH_C32(0xf31749e4), SPH_C32(0x4380f45a), SPH_C32(0xd6c5d8cc),
+	  SPH_C32(0xab657fca) },
+	{ SPH_C32(0xec137830), SPH_C32(0x74fa0000), SPH_C32(0xa2ef0000),
+	  SPH_C32(0x37430000), SPH_C32(0x6cf55cc2), SPH_C32(0xf5a98674),
+	  SPH_C32(0x5fc88b69), SPH_C32(0x49f451d2), SPH_C32(0xc1a8b640),
+	  SPH_C32(0xb8670000), SPH_C32(0xae4a0000), SPH_C32(0x2bda0000),
+	  SPH_C32(0x60712e1b), SPH_C32(0x6a79b094), SPH_C32(0xe04ebb19),
+	  SPH_C32(0xa7438da8) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0x13bd1430), SPH_C32(0x5f940000), SPH_C32(0x60880000),
+	  SPH_C32(0x71010000), SPH_C32(0x3bc161fe), SPH_C32(0xc8f70f50),
+	  SPH_C32(0x32139431), SPH_C32(0x598f6aa3), SPH_C32(0x81dad640),
+	  SPH_C32(0xeb630000), SPH_C32(0x0abb0000), SPH_C32(0x7b7e0000),
+	  SPH_C32(0x1db27407), SPH_C32(0x4e95490d), SPH_C32(0xcc579da4),
+	  SPH_C32(0x13d69eef) },
+	{ SPH_C32(0xce8c2800), SPH_C32(0x01580000), SPH_C32(0x2e2b0000),
+	  SPH_C32(0xa62f0000), SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f),
+	  SPH_C32(0x25259a95), SPH_C32(0x2668e10e), SPH_C32(0x84ddc000),
+	  SPH_C32(0xfe020000), SPH_C32(0x8c560000), SPH_C32(0xcf0d0000),
+	  SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a), SPH_C32(0xf818f44e),
+	  SPH_C32(0xc3d48a92) },
+	{ SPH_C32(0x07e72830), SPH_C32(0xe67d0000), SPH_C32(0x01af0000),
+	  SPH_C32(0x80600000), SPH_C32(0xf5a05c92), SPH_C32(0x78be3228),
+	  SPH_C32(0x75baf311), SPH_C32(0xb8014e66), SPH_C32(0xa2bdc240),
+	  SPH_C32(0x23da0000), SPH_C32(0xfe7c0000), SPH_C32(0x800b0000),
+	  SPH_C32(0x6e7f5062), SPH_C32(0xb633ec44), SPH_C32(0xce93979b),
+	  SPH_C32(0xcff278f0) },
+	{ SPH_C32(0xf9b10000), SPH_C32(0x70080000), SPH_C32(0xbbcb0000),
+	  SPH_C32(0xac3b0000), SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e),
+	  SPH_C32(0x6048f78a), SPH_C32(0x1bc223d4), SPH_C32(0x9087fc00),
+	  SPH_C32(0x47eb0000), SPH_C32(0xed710000), SPH_C32(0x3e6c0000),
+	  SPH_C32(0x33780af1), SPH_C32(0x2f8395f2), SPH_C32(0xbfb1936e),
+	  SPH_C32(0x225aae57) },
+	{ SPH_C32(0x30da0030), SPH_C32(0x972d0000), SPH_C32(0x944f0000),
+	  SPH_C32(0x8a740000), SPH_C32(0x480c459b), SPH_C32(0x3051aa19),
+	  SPH_C32(0x30d79e0e), SPH_C32(0x85ab8cbc), SPH_C32(0xb6e7fe40),
+	  SPH_C32(0x9a330000), SPH_C32(0x9f5b0000), SPH_C32(0x716a0000),
+	  SPH_C32(0xa01e6d0e), SPH_C32(0x067ad13c), SPH_C32(0x893af0bb),
+	  SPH_C32(0x2e7c5c35) },
+	{ SPH_C32(0xedeb3c00), SPH_C32(0xc9e10000), SPH_C32(0xdaec0000),
+	  SPH_C32(0x5d5a0000), SPH_C32(0x8e04230e), SPH_C32(0xede46656),
+	  SPH_C32(0x27e190aa), SPH_C32(0xfa4c0711), SPH_C32(0xb3e0e800),
+	  SPH_C32(0x8f520000), SPH_C32(0x19b60000), SPH_C32(0xc5190000),
+	  SPH_C32(0x40b52e94), SPH_C32(0xd72530bb), SPH_C32(0xbd759951),
+	  SPH_C32(0xfe7e4848) },
+	{ SPH_C32(0x24803c30), SPH_C32(0x2ec40000), SPH_C32(0xf5680000),
+	  SPH_C32(0x7b150000), SPH_C32(0x866d78f7), SPH_C32(0x80189761),
+	  SPH_C32(0x777ef92e), SPH_C32(0x6425a879), SPH_C32(0x9580ea40),
+	  SPH_C32(0x528a0000), SPH_C32(0x6b9c0000), SPH_C32(0x8a1f0000),
+	  SPH_C32(0xd3d3496b), SPH_C32(0xfedc7475), SPH_C32(0x8bfefa84),
+	  SPH_C32(0xf258ba2a) },
+	{ SPH_C32(0x8efe4800), SPH_C32(0x525c0000), SPH_C32(0x8ada0000),
+	  SPH_C32(0xf68b0000), SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86),
+	  SPH_C32(0x093cbc28), SPH_C32(0x92fdf249), SPH_C32(0x3b01cc00),
+	  SPH_C32(0x86680000), SPH_C32(0xeac00000), SPH_C32(0xd9eb0000),
+	  SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837), SPH_C32(0xb9dacdab),
+	  SPH_C32(0x673aa2a4) },
+	{ SPH_C32(0x47954830), SPH_C32(0xb5790000), SPH_C32(0xa55e0000),
+	  SPH_C32(0xd0c40000), SPH_C32(0x8863068e), SPH_C32(0x5c52cbb1),
+	  SPH_C32(0x59a3d5ac), SPH_C32(0x0c945d21), SPH_C32(0x1d61ce40),
+	  SPH_C32(0x5bb00000), SPH_C32(0x98ea0000), SPH_C32(0x96ed0000),
+	  SPH_C32(0x44883742), SPH_C32(0xaf819cf9), SPH_C32(0x8f51ae7e),
+	  SPH_C32(0x6b1c50c6) },
+	{ SPH_C32(0x9aa47400), SPH_C32(0xebb50000), SPH_C32(0xebfd0000),
+	  SPH_C32(0x07ea0000), SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe),
+	  SPH_C32(0x4e95db08), SPH_C32(0x7373d68c), SPH_C32(0x1866d800),
+	  SPH_C32(0x4ed10000), SPH_C32(0x1e070000), SPH_C32(0x229e0000),
+	  SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e), SPH_C32(0xbb1ec794),
+	  SPH_C32(0xbb1e44bb) },
+	{ SPH_C32(0x53cf7430), SPH_C32(0x0c900000), SPH_C32(0xc4790000),
+	  SPH_C32(0x21a50000), SPH_C32(0x46023be2), SPH_C32(0xec1bf6c9),
+	  SPH_C32(0x1e0ab28c), SPH_C32(0xed1a79e4), SPH_C32(0x3e06da40),
+	  SPH_C32(0x93090000), SPH_C32(0x6c2d0000), SPH_C32(0x6d980000),
+	  SPH_C32(0x37451327), SPH_C32(0x572739b0), SPH_C32(0x8d95a441),
+	  SPH_C32(0xb738b6d9) },
+	{ SPH_C32(0xad995c00), SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000),
+	  SPH_C32(0x0dfe0000), SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf),
+	  SPH_C32(0x0bf8b617), SPH_C32(0x4ed91456), SPH_C32(0x0c3ce400),
+	  SPH_C32(0xf7380000), SPH_C32(0x7f200000), SPH_C32(0xd3ff0000),
+	  SPH_C32(0x6a4249b4), SPH_C32(0xce974006), SPH_C32(0xfcb7a0b4),
+	  SPH_C32(0x5a90607e) },
+	{ SPH_C32(0x64f25c30), SPH_C32(0x7dc00000), SPH_C32(0x51990000),
+	  SPH_C32(0x2bb10000), SPH_C32(0xfbae22eb), SPH_C32(0xa4f46ef8),
+	  SPH_C32(0x5b67df93), SPH_C32(0xd0b0bb3e), SPH_C32(0x2a5ce640),
+	  SPH_C32(0x2ae00000), SPH_C32(0x0d0a0000), SPH_C32(0x9cf90000),
+	  SPH_C32(0xf9242e4b), SPH_C32(0xe76e04c8), SPH_C32(0xca3cc361),
+	  SPH_C32(0x56b6921c) },
+	{ SPH_C32(0xb9c36000), SPH_C32(0x230c0000), SPH_C32(0x1f3a0000),
+	  SPH_C32(0xfc9f0000), SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7),
+	  SPH_C32(0x4c51d137), SPH_C32(0xaf573093), SPH_C32(0x2f5bf000),
+	  SPH_C32(0x3f810000), SPH_C32(0x8be70000), SPH_C32(0x288a0000),
+	  SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f), SPH_C32(0xfe73aa8b),
+	  SPH_C32(0x86b48661) },
+	{ SPH_C32(0x70a86030), SPH_C32(0xc4290000), SPH_C32(0x30be0000),
+	  SPH_C32(0xdad00000), SPH_C32(0x35cf1f87), SPH_C32(0x14bd5380),
+	  SPH_C32(0x1cceb8b3), SPH_C32(0x313e9ffb), SPH_C32(0x093bf240),
+	  SPH_C32(0xe2590000), SPH_C32(0xf9cd0000), SPH_C32(0x678c0000),
+	  SPH_C32(0x8ae90a2e), SPH_C32(0x1fc8a181), SPH_C32(0xc8f8c95e),
+	  SPH_C32(0x8a927403) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0xa6429030), SPH_C32(0x8ba00000), SPH_C32(0x00920000),
+	  SPH_C32(0x5e610000), SPH_C32(0x6c256c34), SPH_C32(0x7f21ede1),
+	  SPH_C32(0x82f5e5b2), SPH_C32(0xac483a4e), SPH_C32(0x0f249e40),
+	  SPH_C32(0xb93f0000), SPH_C32(0x80610000), SPH_C32(0x8df50000),
+	  SPH_C32(0x9db82970), SPH_C32(0x7f3b738b), SPH_C32(0xc56b218c),
+	  SPH_C32(0x812b6ca6) },
+	{ SPH_C32(0x7b73ac00), SPH_C32(0xd56c0000), SPH_C32(0x4e310000),
+	  SPH_C32(0x894f0000), SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae),
+	  SPH_C32(0x95c3eb16), SPH_C32(0xd3afb1e3), SPH_C32(0x0a238800),
+	  SPH_C32(0xac5e0000), SPH_C32(0x068c0000), SPH_C32(0x39860000),
+	  SPH_C32(0x7d136aea), SPH_C32(0xae64920c), SPH_C32(0xf1244866),
+	  SPH_C32(0x512978db) },
+	{ SPH_C32(0xb218ac30), SPH_C32(0x32490000), SPH_C32(0x61b50000),
+	  SPH_C32(0xaf000000), SPH_C32(0xa2445158), SPH_C32(0xcf68d099),
+	  SPH_C32(0xc55c8292), SPH_C32(0x4dc61e8b), SPH_C32(0x2c438a40),
+	  SPH_C32(0x71860000), SPH_C32(0x74a60000), SPH_C32(0x76800000),
+	  SPH_C32(0xee750d15), SPH_C32(0x879dd6c2), SPH_C32(0xc7af2bb3),
+	  SPH_C32(0x5d0f8ab9) },
+	{ SPH_C32(0x4c4e8400), SPH_C32(0xa43c0000), SPH_C32(0xdbd10000),
+	  SPH_C32(0x835b0000), SPH_C32(0x178113a8), SPH_C32(0xea7bb99f),
+	  SPH_C32(0xd0ae8609), SPH_C32(0xee057339), SPH_C32(0x1e79b400),
+	  SPH_C32(0x15b70000), SPH_C32(0x67ab0000), SPH_C32(0xc8e70000),
+	  SPH_C32(0xb3725786), SPH_C32(0x1e2daf74), SPH_C32(0xb68d2f46),
+	  SPH_C32(0xb0a75c1e) },
+	{ SPH_C32(0x85258430), SPH_C32(0x43190000), SPH_C32(0xf4550000),
+	  SPH_C32(0xa5140000), SPH_C32(0x1fe84851), SPH_C32(0x878748a8),
+	  SPH_C32(0x8031ef8d), SPH_C32(0x706cdc51), SPH_C32(0x3819b640),
+	  SPH_C32(0xc86f0000), SPH_C32(0x15810000), SPH_C32(0x87e10000),
+	  SPH_C32(0x20143079), SPH_C32(0x37d4ebba), SPH_C32(0x80064c93),
+	  SPH_C32(0xbc81ae7c) },
+	{ SPH_C32(0x5814b800), SPH_C32(0x1dd50000), SPH_C32(0xbaf60000),
+	  SPH_C32(0x723a0000), SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7),
+	  SPH_C32(0x9707e129), SPH_C32(0x0f8b57fc), SPH_C32(0x3d1ea000),
+	  SPH_C32(0xdd0e0000), SPH_C32(0x936c0000), SPH_C32(0x33920000),
+	  SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d), SPH_C32(0xb4492579),
+	  SPH_C32(0x6c83ba01) },
+	{ SPH_C32(0x917fb830), SPH_C32(0xfaf00000), SPH_C32(0x95720000),
+	  SPH_C32(0x54750000), SPH_C32(0xd189753d), SPH_C32(0x37ce75d0),
+	  SPH_C32(0xc79888ad), SPH_C32(0x91e2f894), SPH_C32(0x1b7ea240),
+	  SPH_C32(0x00d60000), SPH_C32(0xe1460000), SPH_C32(0x7c940000),
+	  SPH_C32(0x53d9141c), SPH_C32(0xcf724ef3), SPH_C32(0x82c246ac),
+	  SPH_C32(0x60a54863) },
+	{ SPH_C32(0x3b01cc00), SPH_C32(0x86680000), SPH_C32(0xeac00000),
+	  SPH_C32(0xd9eb0000), SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837),
+	  SPH_C32(0xb9dacdab), SPH_C32(0x673aa2a4), SPH_C32(0xb5ff8400),
+	  SPH_C32(0xd4340000), SPH_C32(0x601a0000), SPH_C32(0x2f600000),
+	  SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1), SPH_C32(0xb0e67183),
+	  SPH_C32(0xf5c750ed) },
+	{ SPH_C32(0xf26acc30), SPH_C32(0x614d0000), SPH_C32(0xc5440000),
+	  SPH_C32(0xffa40000), SPH_C32(0xdf870b44), SPH_C32(0xeb842900),
+	  SPH_C32(0xe945a42f), SPH_C32(0xf9530dcc), SPH_C32(0x939f8640),
+	  SPH_C32(0x09ec0000), SPH_C32(0x12300000), SPH_C32(0x60660000),
+	  SPH_C32(0xc4826a35), SPH_C32(0x9e2fa67f), SPH_C32(0x866d1256),
+	  SPH_C32(0xf9e1a28f) },
+	{ SPH_C32(0x2f5bf000), SPH_C32(0x3f810000), SPH_C32(0x8be70000),
+	  SPH_C32(0x288a0000), SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f),
+	  SPH_C32(0xfe73aa8b), SPH_C32(0x86b48661), SPH_C32(0x96989000),
+	  SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000), SPH_C32(0xd4150000),
+	  SPH_C32(0x242929af), SPH_C32(0x4f7047f8), SPH_C32(0xb2227bbc),
+	  SPH_C32(0x29e3b6f2) },
+	{ SPH_C32(0xe630f030), SPH_C32(0xd8a40000), SPH_C32(0xa4630000),
+	  SPH_C32(0x0ec50000), SPH_C32(0x11e63628), SPH_C32(0x5bcd1478),
+	  SPH_C32(0xaeecc30f), SPH_C32(0x18dd2909), SPH_C32(0xb0f89240),
+	  SPH_C32(0xc1550000), SPH_C32(0xe6f70000), SPH_C32(0x9b130000),
+	  SPH_C32(0xb74f4e50), SPH_C32(0x66890336), SPH_C32(0x84a91869),
+	  SPH_C32(0x25c54490) },
+	{ SPH_C32(0x1866d800), SPH_C32(0x4ed10000), SPH_C32(0x1e070000),
+	  SPH_C32(0x229e0000), SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e),
+	  SPH_C32(0xbb1ec794), SPH_C32(0xbb1e44bb), SPH_C32(0x82c2ac00),
+	  SPH_C32(0xa5640000), SPH_C32(0xf5fa0000), SPH_C32(0x25740000),
+	  SPH_C32(0xea4814c3), SPH_C32(0xff397a80), SPH_C32(0xf58b1c9c),
+	  SPH_C32(0xc86d9237) },
+	{ SPH_C32(0xd10dd830), SPH_C32(0xa9f40000), SPH_C32(0x31830000),
+	  SPH_C32(0x04d10000), SPH_C32(0xac4a2f21), SPH_C32(0x13228c49),
+	  SPH_C32(0xeb81ae10), SPH_C32(0x2577ebd3), SPH_C32(0xa4a2ae40),
+	  SPH_C32(0x78bc0000), SPH_C32(0x87d00000), SPH_C32(0x6a720000),
+	  SPH_C32(0x792e733c), SPH_C32(0xd6c03e4e), SPH_C32(0xc3007f49),
+	  SPH_C32(0xc44b6055) },
+	{ SPH_C32(0x0c3ce400), SPH_C32(0xf7380000), SPH_C32(0x7f200000),
+	  SPH_C32(0xd3ff0000), SPH_C32(0x6a4249b4), SPH_C32(0xce974006),
+	  SPH_C32(0xfcb7a0b4), SPH_C32(0x5a90607e), SPH_C32(0xa1a5b800),
+	  SPH_C32(0x6ddd0000), SPH_C32(0x013d0000), SPH_C32(0xde010000),
+	  SPH_C32(0x998530a6), SPH_C32(0x079fdfc9), SPH_C32(0xf74f16a3),
+	  SPH_C32(0x14497428) },
+	{ SPH_C32(0xc557e430), SPH_C32(0x101d0000), SPH_C32(0x50a40000),
+	  SPH_C32(0xf5b00000), SPH_C32(0x622b124d), SPH_C32(0xa36bb131),
+	  SPH_C32(0xac28c930), SPH_C32(0xc4f9cf16), SPH_C32(0x87c5ba40),
+	  SPH_C32(0xb0050000), SPH_C32(0x73170000), SPH_C32(0x91070000),
+	  SPH_C32(0x0ae35759), SPH_C32(0x2e669b07), SPH_C32(0xc1c47576),
+	  SPH_C32(0x186f864a) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) },
+	{ SPH_C32(0x3af98830), SPH_C32(0x3b730000), SPH_C32(0x92c30000),
+	  SPH_C32(0xb3f20000), SPH_C32(0x351f2f71), SPH_C32(0x9e353815),
+	  SPH_C32(0xc1f3d668), SPH_C32(0xd482f467), SPH_C32(0xc7b7da40),
+	  SPH_C32(0xe3010000), SPH_C32(0xd7e60000), SPH_C32(0xc1a30000),
+	  SPH_C32(0x77200d45), SPH_C32(0x0a8a629e), SPH_C32(0xeddd53cb),
+	  SPH_C32(0xacfa950d) },
+	{ SPH_C32(0xe7c8b400), SPH_C32(0x65bf0000), SPH_C32(0xdc600000),
+	  SPH_C32(0x64dc0000), SPH_C32(0xf31749e4), SPH_C32(0x4380f45a),
+	  SPH_C32(0xd6c5d8cc), SPH_C32(0xab657fca), SPH_C32(0xc2b0cc00),
+	  SPH_C32(0xf6600000), SPH_C32(0x510b0000), SPH_C32(0x75d00000),
+	  SPH_C32(0x978b4edf), SPH_C32(0xdbd58319), SPH_C32(0xd9923a21),
+	  SPH_C32(0x7cf88170) },
+	{ SPH_C32(0x2ea3b430), SPH_C32(0x829a0000), SPH_C32(0xf3e40000),
+	  SPH_C32(0x42930000), SPH_C32(0xfb7e121d), SPH_C32(0x2e7c056d),
+	  SPH_C32(0x865ab148), SPH_C32(0x350cd0a2), SPH_C32(0xe4d0ce40),
+	  SPH_C32(0x2bb80000), SPH_C32(0x23210000), SPH_C32(0x3ad60000),
+	  SPH_C32(0x04ed2920), SPH_C32(0xf22cc7d7), SPH_C32(0xef1959f4),
+	  SPH_C32(0x70de7312) },
+	{ SPH_C32(0xd0f59c00), SPH_C32(0x14ef0000), SPH_C32(0x49800000),
+	  SPH_C32(0x6ec80000), SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b),
+	  SPH_C32(0x93a8b5d3), SPH_C32(0x96cfbd10), SPH_C32(0xd6eaf000),
+	  SPH_C32(0x4f890000), SPH_C32(0x302c0000), SPH_C32(0x84b10000),
+	  SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61), SPH_C32(0x9e3b5d01),
+	  SPH_C32(0x9d76a5b5) },
+	{ SPH_C32(0x199e9c30), SPH_C32(0xf3ca0000), SPH_C32(0x66040000),
+	  SPH_C32(0x48870000), SPH_C32(0x46d20b14), SPH_C32(0x66939d5c),
+	  SPH_C32(0xc337dc57), SPH_C32(0x08a61278), SPH_C32(0xf08af240),
+	  SPH_C32(0x92510000), SPH_C32(0x42060000), SPH_C32(0xcbb70000),
+	  SPH_C32(0xca8c144c), SPH_C32(0x4265faaf), SPH_C32(0xa8b03ed4),
+	  SPH_C32(0x915057d7) },
+	{ SPH_C32(0xc4afa000), SPH_C32(0xad060000), SPH_C32(0x28a70000),
+	  SPH_C32(0x9fa90000), SPH_C32(0x80da6d81), SPH_C32(0xbb265113),
+	  SPH_C32(0xd401d2f3), SPH_C32(0x774199d5), SPH_C32(0xf58de400),
+	  SPH_C32(0x87300000), SPH_C32(0xc4eb0000), SPH_C32(0x7fc40000),
+	  SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28), SPH_C32(0x9cff573e),
+	  SPH_C32(0x415243aa) },
+	{ SPH_C32(0x0dc4a030), SPH_C32(0x4a230000), SPH_C32(0x07230000),
+	  SPH_C32(0xb9e60000), SPH_C32(0x88b33678), SPH_C32(0xd6daa024),
+	  SPH_C32(0x849ebb77), SPH_C32(0xe92836bd), SPH_C32(0xd3ede640),
+	  SPH_C32(0x5ae80000), SPH_C32(0xb6c10000), SPH_C32(0x30c20000),
+	  SPH_C32(0xb9413029), SPH_C32(0xbac35fe6), SPH_C32(0xaa7434eb),
+	  SPH_C32(0x4d74b1c8) },
+	{ SPH_C32(0xa7bad400), SPH_C32(0x36bb0000), SPH_C32(0x78910000),
+	  SPH_C32(0x34780000), SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3),
+	  SPH_C32(0xfadcfe71), SPH_C32(0x1ff06c8d), SPH_C32(0x7d6cc000),
+	  SPH_C32(0x8e0a0000), SPH_C32(0x379d0000), SPH_C32(0x63360000),
+	  SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4), SPH_C32(0x985003c4),
+	  SPH_C32(0xd816a946) },
+	{ SPH_C32(0x6ed1d430), SPH_C32(0xd19e0000), SPH_C32(0x57150000),
+	  SPH_C32(0x12370000), SPH_C32(0x86bd4801), SPH_C32(0x0a90fcf4),
+	  SPH_C32(0xaa4397f5), SPH_C32(0x8199c3e5), SPH_C32(0x5b0cc240),
+	  SPH_C32(0x53d20000), SPH_C32(0x45b70000), SPH_C32(0x2c300000),
+	  SPH_C32(0x2e1a4e00), SPH_C32(0xeb9eb76a), SPH_C32(0xaedb6011),
+	  SPH_C32(0xd4305b24) },
+	{ SPH_C32(0xb3e0e800), SPH_C32(0x8f520000), SPH_C32(0x19b60000),
+	  SPH_C32(0xc5190000), SPH_C32(0x40b52e94), SPH_C32(0xd72530bb),
+	  SPH_C32(0xbd759951), SPH_C32(0xfe7e4848), SPH_C32(0x5e0bd400),
+	  SPH_C32(0x46b30000), SPH_C32(0xc35a0000), SPH_C32(0x98430000),
+	  SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed), SPH_C32(0x9a9409fb),
+	  SPH_C32(0x04324f59) },
+	{ SPH_C32(0x7a8be830), SPH_C32(0x68770000), SPH_C32(0x36320000),
+	  SPH_C32(0xe3560000), SPH_C32(0x48dc756d), SPH_C32(0xbad9c18c),
+	  SPH_C32(0xedeaf0d5), SPH_C32(0x6017e720), SPH_C32(0x786bd640),
+	  SPH_C32(0x9b6b0000), SPH_C32(0xb1700000), SPH_C32(0xd7450000),
+	  SPH_C32(0x5dd76a65), SPH_C32(0x13381223), SPH_C32(0xac1f6a2e),
+	  SPH_C32(0x0814bd3b) },
+	{ SPH_C32(0x84ddc000), SPH_C32(0xfe020000), SPH_C32(0x8c560000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a),
+	  SPH_C32(0xf818f44e), SPH_C32(0xc3d48a92), SPH_C32(0x4a51e800),
+	  SPH_C32(0xff5a0000), SPH_C32(0xa27d0000), SPH_C32(0x69220000),
+	  SPH_C32(0x00d030f6), SPH_C32(0x8a886b95), SPH_C32(0xdd3d6edb),
+	  SPH_C32(0xe5bc6b9c) },
+	{ SPH_C32(0x4db6c030), SPH_C32(0x19270000), SPH_C32(0xa3d20000),
+	  SPH_C32(0xe9420000), SPH_C32(0xf5706c64), SPH_C32(0xf23659bd),
+	  SPH_C32(0xa8879dca), SPH_C32(0x5dbd25fa), SPH_C32(0x6c31ea40),
+	  SPH_C32(0x22820000), SPH_C32(0xd0570000), SPH_C32(0x26240000),
+	  SPH_C32(0x93b65709), SPH_C32(0xa3712f5b), SPH_C32(0xebb60d0e),
+	  SPH_C32(0xe99a99fe) },
+	{ SPH_C32(0x9087fc00), SPH_C32(0x47eb0000), SPH_C32(0xed710000),
+	  SPH_C32(0x3e6c0000), SPH_C32(0x33780af1), SPH_C32(0x2f8395f2),
+	  SPH_C32(0xbfb1936e), SPH_C32(0x225aae57), SPH_C32(0x6936fc00),
+	  SPH_C32(0x37e30000), SPH_C32(0x56ba0000), SPH_C32(0x92570000),
+	  SPH_C32(0x731d1493), SPH_C32(0x722ecedc), SPH_C32(0xdff964e4),
+	  SPH_C32(0x39988d83) },
+	{ SPH_C32(0x59ecfc30), SPH_C32(0xa0ce0000), SPH_C32(0xc2f50000),
+	  SPH_C32(0x18230000), SPH_C32(0x3b115108), SPH_C32(0x427f64c5),
+	  SPH_C32(0xef2efaea), SPH_C32(0xbc33013f), SPH_C32(0x4f56fe40),
+	  SPH_C32(0xea3b0000), SPH_C32(0x24900000), SPH_C32(0xdd510000),
+	  SPH_C32(0xe07b736c), SPH_C32(0x5bd78a12), SPH_C32(0xe9720731),
+	  SPH_C32(0x35be7fe1) }
+};
+
+static const sph_u32 T512_7[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0x803100f9), SPH_C32(0x3e66c000), SPH_C32(0x36640000),
+	  SPH_C32(0x30860000), SPH_C32(0x8ba26725), SPH_C32(0xa263da9f),
+	  SPH_C32(0x71443c50), SPH_C32(0x5121edd1), SPH_C32(0x20060050),
+	  SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000), SPH_C32(0x49360000),
+	  SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875), SPH_C32(0x0492e6d6),
+	  SPH_C32(0x7d72d654) },
+	{ SPH_C32(0xa32e00f0), SPH_C32(0x7c92c000), SPH_C32(0x501d0000),
+	  SPH_C32(0x7e3d0000), SPH_C32(0x75793cf6), SPH_C32(0x933f6a49),
+	  SPH_C32(0x93f55b1a), SPH_C32(0x3871b6eb), SPH_C32(0xd7730059),
+	  SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000), SPH_C32(0x4da40000),
+	  SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf), SPH_C32(0x7e151798),
+	  SPH_C32(0xe3644e4e) },
+	{ SPH_C32(0x545b00f9), SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000),
+	  SPH_C32(0x7aaf0000), SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3),
+	  SPH_C32(0xe972aa54), SPH_C32(0xa6672ef1), SPH_C32(0x03190059),
+	  SPH_C32(0x5924c000), SPH_C32(0xd7730000), SPH_C32(0x078d0000),
+	  SPH_C32(0x40016711), SPH_C32(0x9e5748a3), SPH_C32(0xe623819c),
+	  SPH_C32(0x14228d6e) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x03190059), SPH_C32(0x5924c000), SPH_C32(0xd7730000),
+	  SPH_C32(0x078d0000), SPH_C32(0x40016711), SPH_C32(0x9e5748a3),
+	  SPH_C32(0xe623819c), SPH_C32(0x14228d6e), SPH_C32(0x574200a0),
+	  SPH_C32(0xea8ac000), SPH_C32(0x44b80000), SPH_C32(0x7d220000),
+	  SPH_C32(0x37ed424e), SPH_C32(0xf5801450), SPH_C32(0x0f512bc8),
+	  SPH_C32(0xb245a39f) },
+	{ SPH_C32(0x20060050), SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000),
+	  SPH_C32(0x49360000), SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875),
+	  SPH_C32(0x0492e6d6), SPH_C32(0x7d72d654), SPH_C32(0xa03700a9),
+	  SPH_C32(0x25b60000), SPH_C32(0x876e0000), SPH_C32(0x79b00000),
+	  SPH_C32(0x35785be7), SPH_C32(0x0d6822ea), SPH_C32(0x75d6da86),
+	  SPH_C32(0x2c533b85) },
+	{ SPH_C32(0xd7730059), SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000),
+	  SPH_C32(0x4da40000), SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf),
+	  SPH_C32(0x7e151798), SPH_C32(0xe3644e4e), SPH_C32(0x745d00a9),
+	  SPH_C32(0xa87ec000), SPH_C32(0x22c10000), SPH_C32(0x33990000),
+	  SPH_C32(0xc936199d), SPH_C32(0xc4dca486), SPH_C32(0xede04c82),
+	  SPH_C32(0xdb15f8a5) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0x745d00a9), SPH_C32(0xa87ec000), SPH_C32(0x22c10000),
+	  SPH_C32(0x33990000), SPH_C32(0xc936199d), SPH_C32(0xc4dca486),
+	  SPH_C32(0xede04c82), SPH_C32(0xdb15f8a5), SPH_C32(0xa32e00f0),
+	  SPH_C32(0x7c92c000), SPH_C32(0x501d0000), SPH_C32(0x7e3d0000),
+	  SPH_C32(0x75793cf6), SPH_C32(0x933f6a49), SPH_C32(0x93f55b1a),
+	  SPH_C32(0x3871b6eb) },
+	{ SPH_C32(0x574200a0), SPH_C32(0xea8ac000), SPH_C32(0x44b80000),
+	  SPH_C32(0x7d220000), SPH_C32(0x37ed424e), SPH_C32(0xf5801450),
+	  SPH_C32(0x0f512bc8), SPH_C32(0xb245a39f), SPH_C32(0x545b00f9),
+	  SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000), SPH_C32(0x7aaf0000),
+	  SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3), SPH_C32(0xe972aa54),
+	  SPH_C32(0xa6672ef1) },
+	{ SPH_C32(0xa03700a9), SPH_C32(0x25b60000), SPH_C32(0x876e0000),
+	  SPH_C32(0x79b00000), SPH_C32(0x35785be7), SPH_C32(0x0d6822ea),
+	  SPH_C32(0x75d6da86), SPH_C32(0x2c533b85), SPH_C32(0x803100f9),
+	  SPH_C32(0x3e66c000), SPH_C32(0x36640000), SPH_C32(0x30860000),
+	  SPH_C32(0x8ba26725), SPH_C32(0xa263da9f), SPH_C32(0x71443c50),
+	  SPH_C32(0x5121edd1) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0x1ff20179), SPH_C32(0x524ec000), SPH_C32(0xd10d0000),
+	  SPH_C32(0xd0b00000), SPH_C32(0xf01d728e), SPH_C32(0x51c9d3f9),
+	  SPH_C32(0x347f4456), SPH_C32(0xff9e8bab), SPH_C32(0x605d0060),
+	  SPH_C32(0x8184c000), SPH_C32(0xf36d0000), SPH_C32(0x16870000),
+	  SPH_C32(0x681a5d45), SPH_C32(0xf28a7e49), SPH_C32(0x8300c939),
+	  SPH_C32(0x04929478) },
+	{ SPH_C32(0x3ced0170), SPH_C32(0x10bac000), SPH_C32(0xb7740000),
+	  SPH_C32(0x9e0b0000), SPH_C32(0x0ec6295d), SPH_C32(0x6095632f),
+	  SPH_C32(0xd6ce231c), SPH_C32(0x96ced091), SPH_C32(0x97280069),
+	  SPH_C32(0x4eb80000), SPH_C32(0x30bb0000), SPH_C32(0x12150000),
+	  SPH_C32(0x6a8f44ec), SPH_C32(0x0a6248f3), SPH_C32(0xf9873877),
+	  SPH_C32(0x9a840c62) },
+	{ SPH_C32(0xcb980179), SPH_C32(0xdf860000), SPH_C32(0x74a20000),
+	  SPH_C32(0x9a990000), SPH_C32(0x0c5330f4), SPH_C32(0x987d5595),
+	  SPH_C32(0xac49d252), SPH_C32(0x08d8488b), SPH_C32(0x43420069),
+	  SPH_C32(0xc370c000), SPH_C32(0x95140000), SPH_C32(0x583c0000),
+	  SPH_C32(0x96c10696), SPH_C32(0xc3d6ce9f), SPH_C32(0x61b1ae73),
+	  SPH_C32(0x6dc2cf42) },
+	{ SPH_C32(0x9fc30180), SPH_C32(0x6c280000), SPH_C32(0xe7690000),
+	  SPH_C32(0xe0360000), SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966),
+	  SPH_C32(0x453b7806), SPH_C32(0xaebf667a), SPH_C32(0x405b0030),
+	  SPH_C32(0x9a540000), SPH_C32(0x42670000), SPH_C32(0x5fb10000),
+	  SPH_C32(0xd6c06187), SPH_C32(0x5d81863c), SPH_C32(0x87922fef),
+	  SPH_C32(0x79e0422c) },
+	{ SPH_C32(0x68b60189), SPH_C32(0xa314c000), SPH_C32(0x24bf0000),
+	  SPH_C32(0xe4a40000), SPH_C32(0x792a0c02), SPH_C32(0x0b423fdc),
+	  SPH_C32(0x3fbc8948), SPH_C32(0x30a9fe60), SPH_C32(0x94310030),
+	  SPH_C32(0x179cc000), SPH_C32(0xe7c80000), SPH_C32(0x15980000),
+	  SPH_C32(0x2a8e23fd), SPH_C32(0x94350050), SPH_C32(0x1fa4b9eb),
+	  SPH_C32(0x8ea6810c) },
+	{ SPH_C32(0x4ba90180), SPH_C32(0xe1e0c000), SPH_C32(0x42c60000),
+	  SPH_C32(0xaa1f0000), SPH_C32(0x87f157d1), SPH_C32(0x3a1e8f0a),
+	  SPH_C32(0xdd0dee02), SPH_C32(0x59f9a55a), SPH_C32(0x63440039),
+	  SPH_C32(0xd8a00000), SPH_C32(0x241e0000), SPH_C32(0x110a0000),
+	  SPH_C32(0x281b3a54), SPH_C32(0x6cdd36ea), SPH_C32(0x652348a5),
+	  SPH_C32(0x10b01916) },
+	{ SPH_C32(0xbcdc0189), SPH_C32(0x2edc0000), SPH_C32(0x81100000),
+	  SPH_C32(0xae8d0000), SPH_C32(0x85644e78), SPH_C32(0xc2f6b9b0),
+	  SPH_C32(0xa78a1f4c), SPH_C32(0xc7ef3d40), SPH_C32(0xb72e0039),
+	  SPH_C32(0x5568c000), SPH_C32(0x81b10000), SPH_C32(0x5b230000),
+	  SPH_C32(0xd455782e), SPH_C32(0xa569b086), SPH_C32(0xfd15dea1),
+	  SPH_C32(0xe7f6da36) },
+	{ SPH_C32(0x1ceb0120), SPH_C32(0x0b6a0000), SPH_C32(0x067e0000),
+	  SPH_C32(0xd73d0000), SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a),
+	  SPH_C32(0xd25cc5ca), SPH_C32(0xebbc06c5), SPH_C32(0x371f00c0),
+	  SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000), SPH_C32(0x6ba50000),
+	  SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19), SPH_C32(0x8c51e2f1),
+	  SPH_C32(0xb6d737e7) },
+	{ SPH_C32(0xeb9e0129), SPH_C32(0xc456c000), SPH_C32(0xc5a80000),
+	  SPH_C32(0xd3af0000), SPH_C32(0xb2890c36), SPH_C32(0x3776ade0),
+	  SPH_C32(0xa8db3484), SPH_C32(0x75aa9edf), SPH_C32(0xe37500c0),
+	  SPH_C32(0xe6c6c000), SPH_C32(0x127a0000), SPH_C32(0x218c0000),
+	  SPH_C32(0xa3b95d71), SPH_C32(0xcebeec75), SPH_C32(0x146774f5),
+	  SPH_C32(0x4191f4c7) },
+	{ SPH_C32(0xc8810120), SPH_C32(0x86a2c000), SPH_C32(0xa3d10000),
+	  SPH_C32(0x9d140000), SPH_C32(0x4c5257e5), SPH_C32(0x062a1d36),
+	  SPH_C32(0x4a6a53ce), SPH_C32(0x1cfac5e5), SPH_C32(0x140000c9),
+	  SPH_C32(0x29fa0000), SPH_C32(0xd1ac0000), SPH_C32(0x251e0000),
+	  SPH_C32(0xa12c44d8), SPH_C32(0x3656dacf), SPH_C32(0x6ee085bb),
+	  SPH_C32(0xdf876cdd) },
+	{ SPH_C32(0x3ff40129), SPH_C32(0x499e0000), SPH_C32(0x60070000),
+	  SPH_C32(0x99860000), SPH_C32(0x4ec74e4c), SPH_C32(0xfec22b8c),
+	  SPH_C32(0x30eda280), SPH_C32(0x82ec5dff), SPH_C32(0xc06a00c9),
+	  SPH_C32(0xa432c000), SPH_C32(0x74030000), SPH_C32(0x6f370000),
+	  SPH_C32(0x5d6206a2), SPH_C32(0xffe25ca3), SPH_C32(0xf6d613bf),
+	  SPH_C32(0x28c1affd) },
+	{ SPH_C32(0x6baf01d0), SPH_C32(0xfa300000), SPH_C32(0xf3cc0000),
+	  SPH_C32(0xe3290000), SPH_C32(0x392b6b13), SPH_C32(0x9515777f),
+	  SPH_C32(0xd99f08d4), SPH_C32(0x248b730e), SPH_C32(0xc3730090),
+	  SPH_C32(0xfd160000), SPH_C32(0xa3700000), SPH_C32(0x68ba0000),
+	  SPH_C32(0x1d6361b3), SPH_C32(0x61b51400), SPH_C32(0x10f59223),
+	  SPH_C32(0x3ce32293) },
+	{ SPH_C32(0x9cda01d9), SPH_C32(0x350cc000), SPH_C32(0x301a0000),
+	  SPH_C32(0xe7bb0000), SPH_C32(0x3bbe72ba), SPH_C32(0x6dfd41c5),
+	  SPH_C32(0xa318f99a), SPH_C32(0xba9deb14), SPH_C32(0x17190090),
+	  SPH_C32(0x70dec000), SPH_C32(0x06df0000), SPH_C32(0x22930000),
+	  SPH_C32(0xe12d23c9), SPH_C32(0xa801926c), SPH_C32(0x88c30427),
+	  SPH_C32(0xcba5e1b3) },
+	{ SPH_C32(0xbfc501d0), SPH_C32(0x77f8c000), SPH_C32(0x56630000),
+	  SPH_C32(0xa9000000), SPH_C32(0xc5652969), SPH_C32(0x5ca1f113),
+	  SPH_C32(0x41a99ed0), SPH_C32(0xd3cdb02e), SPH_C32(0xe06c0099),
+	  SPH_C32(0xbfe20000), SPH_C32(0xc5090000), SPH_C32(0x26010000),
+	  SPH_C32(0xe3b83a60), SPH_C32(0x50e9a4d6), SPH_C32(0xf244f569),
+	  SPH_C32(0x55b379a9) },
+	{ SPH_C32(0x48b001d9), SPH_C32(0xb8c40000), SPH_C32(0x95b50000),
+	  SPH_C32(0xad920000), SPH_C32(0xc7f030c0), SPH_C32(0xa449c7a9),
+	  SPH_C32(0x3b2e6f9e), SPH_C32(0x4ddb2834), SPH_C32(0x34060099),
+	  SPH_C32(0x322ac000), SPH_C32(0x60a60000), SPH_C32(0x6c280000),
+	  SPH_C32(0x1ff6781a), SPH_C32(0x995d22ba), SPH_C32(0x6a72636d),
+	  SPH_C32(0xa2f5ba89) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0x43420069), SPH_C32(0xc370c000), SPH_C32(0x95140000),
+	  SPH_C32(0x583c0000), SPH_C32(0x96c10696), SPH_C32(0xc3d6ce9f),
+	  SPH_C32(0x61b1ae73), SPH_C32(0x6dc2cf42), SPH_C32(0x88da0110),
+	  SPH_C32(0x1cf6c000), SPH_C32(0xe1b60000), SPH_C32(0xc2a50000),
+	  SPH_C32(0x9a923662), SPH_C32(0x5bab9b0a), SPH_C32(0xcdf87c21),
+	  SPH_C32(0x651a87c9) },
+	{ SPH_C32(0x605d0060), SPH_C32(0x8184c000), SPH_C32(0xf36d0000),
+	  SPH_C32(0x16870000), SPH_C32(0x681a5d45), SPH_C32(0xf28a7e49),
+	  SPH_C32(0x8300c939), SPH_C32(0x04929478), SPH_C32(0x7faf0119),
+	  SPH_C32(0xd3ca0000), SPH_C32(0x22600000), SPH_C32(0xc6370000),
+	  SPH_C32(0x98072fcb), SPH_C32(0xa343adb0), SPH_C32(0xb77f8d6f),
+	  SPH_C32(0xfb0c1fd3) },
+	{ SPH_C32(0x97280069), SPH_C32(0x4eb80000), SPH_C32(0x30bb0000),
+	  SPH_C32(0x12150000), SPH_C32(0x6a8f44ec), SPH_C32(0x0a6248f3),
+	  SPH_C32(0xf9873877), SPH_C32(0x9a840c62), SPH_C32(0xabc50119),
+	  SPH_C32(0x5e02c000), SPH_C32(0x87cf0000), SPH_C32(0x8c1e0000),
+	  SPH_C32(0x64496db1), SPH_C32(0x6af72bdc), SPH_C32(0x2f491b6b),
+	  SPH_C32(0x0c4adcf3) },
+	{ SPH_C32(0xc3730090), SPH_C32(0xfd160000), SPH_C32(0xa3700000),
+	  SPH_C32(0x68ba0000), SPH_C32(0x1d6361b3), SPH_C32(0x61b51400),
+	  SPH_C32(0x10f59223), SPH_C32(0x3ce32293), SPH_C32(0xa8dc0140),
+	  SPH_C32(0x07260000), SPH_C32(0x50bc0000), SPH_C32(0x8b930000),
+	  SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f), SPH_C32(0xc96a9af7),
+	  SPH_C32(0x1868519d) },
+	{ SPH_C32(0x34060099), SPH_C32(0x322ac000), SPH_C32(0x60a60000),
+	  SPH_C32(0x6c280000), SPH_C32(0x1ff6781a), SPH_C32(0x995d22ba),
+	  SPH_C32(0x6a72636d), SPH_C32(0xa2f5ba89), SPH_C32(0x7cb60140),
+	  SPH_C32(0x8aeec000), SPH_C32(0xf5130000), SPH_C32(0xc1ba0000),
+	  SPH_C32(0xd80648da), SPH_C32(0x3d14e513), SPH_C32(0x515c0cf3),
+	  SPH_C32(0xef2e92bd) },
+	{ SPH_C32(0x17190090), SPH_C32(0x70dec000), SPH_C32(0x06df0000),
+	  SPH_C32(0x22930000), SPH_C32(0xe12d23c9), SPH_C32(0xa801926c),
+	  SPH_C32(0x88c30427), SPH_C32(0xcba5e1b3), SPH_C32(0x8bc30149),
+	  SPH_C32(0x45d20000), SPH_C32(0x36c50000), SPH_C32(0xc5280000),
+	  SPH_C32(0xda935173), SPH_C32(0xc5fcd3a9), SPH_C32(0x2bdbfdbd),
+	  SPH_C32(0x71380aa7) },
+	{ SPH_C32(0xe06c0099), SPH_C32(0xbfe20000), SPH_C32(0xc5090000),
+	  SPH_C32(0x26010000), SPH_C32(0xe3b83a60), SPH_C32(0x50e9a4d6),
+	  SPH_C32(0xf244f569), SPH_C32(0x55b379a9), SPH_C32(0x5fa90149),
+	  SPH_C32(0xc81ac000), SPH_C32(0x936a0000), SPH_C32(0x8f010000),
+	  SPH_C32(0x26dd1309), SPH_C32(0x0c4855c5), SPH_C32(0xb3ed6bb9),
+	  SPH_C32(0x867ec987) },
+	{ SPH_C32(0x405b0030), SPH_C32(0x9a540000), SPH_C32(0x42670000),
+	  SPH_C32(0x5fb10000), SPH_C32(0xd6c06187), SPH_C32(0x5d81863c),
+	  SPH_C32(0x87922fef), SPH_C32(0x79e0422c), SPH_C32(0xdf9801b0),
+	  SPH_C32(0xf67c0000), SPH_C32(0xa50e0000), SPH_C32(0xbf870000),
+	  SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a), SPH_C32(0xc2a957e9),
+	  SPH_C32(0xd75f2456) },
+	{ SPH_C32(0xb72e0039), SPH_C32(0x5568c000), SPH_C32(0x81b10000),
+	  SPH_C32(0x5b230000), SPH_C32(0xd455782e), SPH_C32(0xa569b086),
+	  SPH_C32(0xfd15dea1), SPH_C32(0xe7f6da36), SPH_C32(0x0bf201b0),
+	  SPH_C32(0x7bb4c000), SPH_C32(0x00a10000), SPH_C32(0xf5ae0000),
+	  SPH_C32(0x51313656), SPH_C32(0x679f0936), SPH_C32(0x5a9fc1ed),
+	  SPH_C32(0x2019e776) },
+	{ SPH_C32(0x94310030), SPH_C32(0x179cc000), SPH_C32(0xe7c80000),
+	  SPH_C32(0x15980000), SPH_C32(0x2a8e23fd), SPH_C32(0x94350050),
+	  SPH_C32(0x1fa4b9eb), SPH_C32(0x8ea6810c), SPH_C32(0xfc8701b9),
+	  SPH_C32(0xb4880000), SPH_C32(0xc3770000), SPH_C32(0xf13c0000),
+	  SPH_C32(0x53a42fff), SPH_C32(0x9f773f8c), SPH_C32(0x201830a3),
+	  SPH_C32(0xbe0f7f6c) },
+	{ SPH_C32(0x63440039), SPH_C32(0xd8a00000), SPH_C32(0x241e0000),
+	  SPH_C32(0x110a0000), SPH_C32(0x281b3a54), SPH_C32(0x6cdd36ea),
+	  SPH_C32(0x652348a5), SPH_C32(0x10b01916), SPH_C32(0x28ed01b9),
+	  SPH_C32(0x3940c000), SPH_C32(0x66d80000), SPH_C32(0xbb150000),
+	  SPH_C32(0xafea6d85), SPH_C32(0x56c3b9e0), SPH_C32(0xb82ea6a7),
+	  SPH_C32(0x4949bc4c) },
+	{ SPH_C32(0x371f00c0), SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000),
+	  SPH_C32(0x6ba50000), SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19),
+	  SPH_C32(0x8c51e2f1), SPH_C32(0xb6d737e7), SPH_C32(0x2bf401e0),
+	  SPH_C32(0x60640000), SPH_C32(0xb1ab0000), SPH_C32(0xbc980000),
+	  SPH_C32(0xefeb0a94), SPH_C32(0xc894f143), SPH_C32(0x5e0d273b),
+	  SPH_C32(0x5d6b3122) },
+	{ SPH_C32(0xc06a00c9), SPH_C32(0xa432c000), SPH_C32(0x74030000),
+	  SPH_C32(0x6f370000), SPH_C32(0x5d6206a2), SPH_C32(0xffe25ca3),
+	  SPH_C32(0xf6d613bf), SPH_C32(0x28c1affd), SPH_C32(0xff9e01e0),
+	  SPH_C32(0xedacc000), SPH_C32(0x14040000), SPH_C32(0xf6b10000),
+	  SPH_C32(0x13a548ee), SPH_C32(0x0120772f), SPH_C32(0xc63bb13f),
+	  SPH_C32(0xaa2df202) },
+	{ SPH_C32(0xe37500c0), SPH_C32(0xe6c6c000), SPH_C32(0x127a0000),
+	  SPH_C32(0x218c0000), SPH_C32(0xa3b95d71), SPH_C32(0xcebeec75),
+	  SPH_C32(0x146774f5), SPH_C32(0x4191f4c7), SPH_C32(0x08eb01e9),
+	  SPH_C32(0x22900000), SPH_C32(0xd7d20000), SPH_C32(0xf2230000),
+	  SPH_C32(0x11305147), SPH_C32(0xf9c84195), SPH_C32(0xbcbc4071),
+	  SPH_C32(0x343b6a18) },
+	{ SPH_C32(0x140000c9), SPH_C32(0x29fa0000), SPH_C32(0xd1ac0000),
+	  SPH_C32(0x251e0000), SPH_C32(0xa12c44d8), SPH_C32(0x3656dacf),
+	  SPH_C32(0x6ee085bb), SPH_C32(0xdf876cdd), SPH_C32(0xdc8101e9),
+	  SPH_C32(0xaf58c000), SPH_C32(0x727d0000), SPH_C32(0xb80a0000),
+	  SPH_C32(0xed7e133d), SPH_C32(0x307cc7f9), SPH_C32(0x248ad675),
+	  SPH_C32(0xc37da938) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) },
+	{ SPH_C32(0xabc50119), SPH_C32(0x5e02c000), SPH_C32(0x87cf0000),
+	  SPH_C32(0x8c1e0000), SPH_C32(0x64496db1), SPH_C32(0x6af72bdc),
+	  SPH_C32(0x2f491b6b), SPH_C32(0x0c4adcf3), SPH_C32(0x3ced0170),
+	  SPH_C32(0x10bac000), SPH_C32(0xb7740000), SPH_C32(0x9e0b0000),
+	  SPH_C32(0x0ec6295d), SPH_C32(0x6095632f), SPH_C32(0xd6ce231c),
+	  SPH_C32(0x96ced091) },
+	{ SPH_C32(0x88da0110), SPH_C32(0x1cf6c000), SPH_C32(0xe1b60000),
+	  SPH_C32(0xc2a50000), SPH_C32(0x9a923662), SPH_C32(0x5bab9b0a),
+	  SPH_C32(0xcdf87c21), SPH_C32(0x651a87c9), SPH_C32(0xcb980179),
+	  SPH_C32(0xdf860000), SPH_C32(0x74a20000), SPH_C32(0x9a990000),
+	  SPH_C32(0x0c5330f4), SPH_C32(0x987d5595), SPH_C32(0xac49d252),
+	  SPH_C32(0x08d8488b) },
+	{ SPH_C32(0x7faf0119), SPH_C32(0xd3ca0000), SPH_C32(0x22600000),
+	  SPH_C32(0xc6370000), SPH_C32(0x98072fcb), SPH_C32(0xa343adb0),
+	  SPH_C32(0xb77f8d6f), SPH_C32(0xfb0c1fd3), SPH_C32(0x1ff20179),
+	  SPH_C32(0x524ec000), SPH_C32(0xd10d0000), SPH_C32(0xd0b00000),
+	  SPH_C32(0xf01d728e), SPH_C32(0x51c9d3f9), SPH_C32(0x347f4456),
+	  SPH_C32(0xff9e8bab) },
+	{ SPH_C32(0x2bf401e0), SPH_C32(0x60640000), SPH_C32(0xb1ab0000),
+	  SPH_C32(0xbc980000), SPH_C32(0xefeb0a94), SPH_C32(0xc894f143),
+	  SPH_C32(0x5e0d273b), SPH_C32(0x5d6b3122), SPH_C32(0x1ceb0120),
+	  SPH_C32(0x0b6a0000), SPH_C32(0x067e0000), SPH_C32(0xd73d0000),
+	  SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a), SPH_C32(0xd25cc5ca),
+	  SPH_C32(0xebbc06c5) },
+	{ SPH_C32(0xdc8101e9), SPH_C32(0xaf58c000), SPH_C32(0x727d0000),
+	  SPH_C32(0xb80a0000), SPH_C32(0xed7e133d), SPH_C32(0x307cc7f9),
+	  SPH_C32(0x248ad675), SPH_C32(0xc37da938), SPH_C32(0xc8810120),
+	  SPH_C32(0x86a2c000), SPH_C32(0xa3d10000), SPH_C32(0x9d140000),
+	  SPH_C32(0x4c5257e5), SPH_C32(0x062a1d36), SPH_C32(0x4a6a53ce),
+	  SPH_C32(0x1cfac5e5) },
+	{ SPH_C32(0xff9e01e0), SPH_C32(0xedacc000), SPH_C32(0x14040000),
+	  SPH_C32(0xf6b10000), SPH_C32(0x13a548ee), SPH_C32(0x0120772f),
+	  SPH_C32(0xc63bb13f), SPH_C32(0xaa2df202), SPH_C32(0x3ff40129),
+	  SPH_C32(0x499e0000), SPH_C32(0x60070000), SPH_C32(0x99860000),
+	  SPH_C32(0x4ec74e4c), SPH_C32(0xfec22b8c), SPH_C32(0x30eda280),
+	  SPH_C32(0x82ec5dff) },
+	{ SPH_C32(0x08eb01e9), SPH_C32(0x22900000), SPH_C32(0xd7d20000),
+	  SPH_C32(0xf2230000), SPH_C32(0x11305147), SPH_C32(0xf9c84195),
+	  SPH_C32(0xbcbc4071), SPH_C32(0x343b6a18), SPH_C32(0xeb9e0129),
+	  SPH_C32(0xc456c000), SPH_C32(0xc5a80000), SPH_C32(0xd3af0000),
+	  SPH_C32(0xb2890c36), SPH_C32(0x3776ade0), SPH_C32(0xa8db3484),
+	  SPH_C32(0x75aa9edf) },
+	{ SPH_C32(0xa8dc0140), SPH_C32(0x07260000), SPH_C32(0x50bc0000),
+	  SPH_C32(0x8b930000), SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f),
+	  SPH_C32(0xc96a9af7), SPH_C32(0x1868519d), SPH_C32(0x6baf01d0),
+	  SPH_C32(0xfa300000), SPH_C32(0xf3cc0000), SPH_C32(0xe3290000),
+	  SPH_C32(0x392b6b13), SPH_C32(0x9515777f), SPH_C32(0xd99f08d4),
+	  SPH_C32(0x248b730e) },
+	{ SPH_C32(0x5fa90149), SPH_C32(0xc81ac000), SPH_C32(0x936a0000),
+	  SPH_C32(0x8f010000), SPH_C32(0x26dd1309), SPH_C32(0x0c4855c5),
+	  SPH_C32(0xb3ed6bb9), SPH_C32(0x867ec987), SPH_C32(0xbfc501d0),
+	  SPH_C32(0x77f8c000), SPH_C32(0x56630000), SPH_C32(0xa9000000),
+	  SPH_C32(0xc5652969), SPH_C32(0x5ca1f113), SPH_C32(0x41a99ed0),
+	  SPH_C32(0xd3cdb02e) },
+	{ SPH_C32(0x7cb60140), SPH_C32(0x8aeec000), SPH_C32(0xf5130000),
+	  SPH_C32(0xc1ba0000), SPH_C32(0xd80648da), SPH_C32(0x3d14e513),
+	  SPH_C32(0x515c0cf3), SPH_C32(0xef2e92bd), SPH_C32(0x48b001d9),
+	  SPH_C32(0xb8c40000), SPH_C32(0x95b50000), SPH_C32(0xad920000),
+	  SPH_C32(0xc7f030c0), SPH_C32(0xa449c7a9), SPH_C32(0x3b2e6f9e),
+	  SPH_C32(0x4ddb2834) },
+	{ SPH_C32(0x8bc30149), SPH_C32(0x45d20000), SPH_C32(0x36c50000),
+	  SPH_C32(0xc5280000), SPH_C32(0xda935173), SPH_C32(0xc5fcd3a9),
+	  SPH_C32(0x2bdbfdbd), SPH_C32(0x71380aa7), SPH_C32(0x9cda01d9),
+	  SPH_C32(0x350cc000), SPH_C32(0x301a0000), SPH_C32(0xe7bb0000),
+	  SPH_C32(0x3bbe72ba), SPH_C32(0x6dfd41c5), SPH_C32(0xa318f99a),
+	  SPH_C32(0xba9deb14) },
+	{ SPH_C32(0xdf9801b0), SPH_C32(0xf67c0000), SPH_C32(0xa50e0000),
+	  SPH_C32(0xbf870000), SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a),
+	  SPH_C32(0xc2a957e9), SPH_C32(0xd75f2456), SPH_C32(0x9fc30180),
+	  SPH_C32(0x6c280000), SPH_C32(0xe7690000), SPH_C32(0xe0360000),
+	  SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966), SPH_C32(0x453b7806),
+	  SPH_C32(0xaebf667a) },
+	{ SPH_C32(0x28ed01b9), SPH_C32(0x3940c000), SPH_C32(0x66d80000),
+	  SPH_C32(0xbb150000), SPH_C32(0xafea6d85), SPH_C32(0x56c3b9e0),
+	  SPH_C32(0xb82ea6a7), SPH_C32(0x4949bc4c), SPH_C32(0x4ba90180),
+	  SPH_C32(0xe1e0c000), SPH_C32(0x42c60000), SPH_C32(0xaa1f0000),
+	  SPH_C32(0x87f157d1), SPH_C32(0x3a1e8f0a), SPH_C32(0xdd0dee02),
+	  SPH_C32(0x59f9a55a) },
+	{ SPH_C32(0x0bf201b0), SPH_C32(0x7bb4c000), SPH_C32(0x00a10000),
+	  SPH_C32(0xf5ae0000), SPH_C32(0x51313656), SPH_C32(0x679f0936),
+	  SPH_C32(0x5a9fc1ed), SPH_C32(0x2019e776), SPH_C32(0xbcdc0189),
+	  SPH_C32(0x2edc0000), SPH_C32(0x81100000), SPH_C32(0xae8d0000),
+	  SPH_C32(0x85644e78), SPH_C32(0xc2f6b9b0), SPH_C32(0xa78a1f4c),
+	  SPH_C32(0xc7ef3d40) },
+	{ SPH_C32(0xfc8701b9), SPH_C32(0xb4880000), SPH_C32(0xc3770000),
+	  SPH_C32(0xf13c0000), SPH_C32(0x53a42fff), SPH_C32(0x9f773f8c),
+	  SPH_C32(0x201830a3), SPH_C32(0xbe0f7f6c), SPH_C32(0x68b60189),
+	  SPH_C32(0xa314c000), SPH_C32(0x24bf0000), SPH_C32(0xe4a40000),
+	  SPH_C32(0x792a0c02), SPH_C32(0x0b423fdc), SPH_C32(0x3fbc8948),
+	  SPH_C32(0x30a9fe60) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0x187e0279), SPH_C32(0xf5c1c000), SPH_C32(0x9e780000),
+	  SPH_C32(0x6ddb0000), SPH_C32(0x999a25af), SPH_C32(0xbced8343),
+	  SPH_C32(0x1c93fb1f), SPH_C32(0x0c59c510), SPH_C32(0x1d010030),
+	  SPH_C32(0x6aedc000), SPH_C32(0x8a2b0000), SPH_C32(0x6c660000),
+	  SPH_C32(0xf4271983), SPH_C32(0xa448775b), SPH_C32(0xc8a9ff80),
+	  SPH_C32(0x692f6c48) },
+	{ SPH_C32(0x3b610270), SPH_C32(0xb735c000), SPH_C32(0xf8010000),
+	  SPH_C32(0x23600000), SPH_C32(0x67417e7c), SPH_C32(0x8db13395),
+	  SPH_C32(0xfe229c55), SPH_C32(0x65099e2a), SPH_C32(0xea740039),
+	  SPH_C32(0xa5d10000), SPH_C32(0x49fd0000), SPH_C32(0x68f40000),
+	  SPH_C32(0xf6b2002a), SPH_C32(0x5ca041e1), SPH_C32(0xb22e0ece),
+	  SPH_C32(0xf739f452) },
+	{ SPH_C32(0xcc140279), SPH_C32(0x78090000), SPH_C32(0x3bd70000),
+	  SPH_C32(0x27f20000), SPH_C32(0x65d467d5), SPH_C32(0x7559052f),
+	  SPH_C32(0x84a56d1b), SPH_C32(0xfb1f0630), SPH_C32(0x3e1e0039),
+	  SPH_C32(0x2819c000), SPH_C32(0xec520000), SPH_C32(0x22dd0000),
+	  SPH_C32(0x0afc4250), SPH_C32(0x9514c78d), SPH_C32(0x2a1898ca),
+	  SPH_C32(0x007f3772) },
+	{ SPH_C32(0x984f0280), SPH_C32(0xcba70000), SPH_C32(0xa81c0000),
+	  SPH_C32(0x5d5d0000), SPH_C32(0x1238428a), SPH_C32(0x1e8e59dc),
+	  SPH_C32(0x6dd7c74f), SPH_C32(0x5d7828c1), SPH_C32(0x3d070060),
+	  SPH_C32(0x713d0000), SPH_C32(0x3b210000), SPH_C32(0x25500000),
+	  SPH_C32(0x4afd2541), SPH_C32(0x0b438f2e), SPH_C32(0xcc3b1956),
+	  SPH_C32(0x145dba1c) },
+	{ SPH_C32(0x6f3a0289), SPH_C32(0x049bc000), SPH_C32(0x6bca0000),
+	  SPH_C32(0x59cf0000), SPH_C32(0x10ad5b23), SPH_C32(0xe6666f66),
+	  SPH_C32(0x17503601), SPH_C32(0xc36eb0db), SPH_C32(0xe96d0060),
+	  SPH_C32(0xfcf5c000), SPH_C32(0x9e8e0000), SPH_C32(0x6f790000),
+	  SPH_C32(0xb6b3673b), SPH_C32(0xc2f70942), SPH_C32(0x540d8f52),
+	  SPH_C32(0xe31b793c) },
+	{ SPH_C32(0x4c250280), SPH_C32(0x466fc000), SPH_C32(0x0db30000),
+	  SPH_C32(0x17740000), SPH_C32(0xee7600f0), SPH_C32(0xd73adfb0),
+	  SPH_C32(0xf5e1514b), SPH_C32(0xaa3eebe1), SPH_C32(0x1e180069),
+	  SPH_C32(0x33c90000), SPH_C32(0x5d580000), SPH_C32(0x6beb0000),
+	  SPH_C32(0xb4267e92), SPH_C32(0x3a1f3ff8), SPH_C32(0x2e8a7e1c),
+	  SPH_C32(0x7d0de126) },
+	{ SPH_C32(0xbb500289), SPH_C32(0x89530000), SPH_C32(0xce650000),
+	  SPH_C32(0x13e60000), SPH_C32(0xece31959), SPH_C32(0x2fd2e90a),
+	  SPH_C32(0x8f66a005), SPH_C32(0x342873fb), SPH_C32(0xca720069),
+	  SPH_C32(0xbe01c000), SPH_C32(0xf8f70000), SPH_C32(0x21c20000),
+	  SPH_C32(0x48683ce8), SPH_C32(0xf3abb994), SPH_C32(0xb6bce818),
+	  SPH_C32(0x8a4b2206) },
+	{ SPH_C32(0x1b670220), SPH_C32(0xace50000), SPH_C32(0x490b0000),
+	  SPH_C32(0x6a560000), SPH_C32(0xd99b42be), SPH_C32(0x22bacbe0),
+	  SPH_C32(0xfab07a83), SPH_C32(0x187b487e), SPH_C32(0x4a430090),
+	  SPH_C32(0x80670000), SPH_C32(0xce930000), SPH_C32(0x11440000),
+	  SPH_C32(0xc3ca5bcd), SPH_C32(0x51c8630b), SPH_C32(0xc7f8d448),
+	  SPH_C32(0xdb6acfd7) },
+	{ SPH_C32(0xec120229), SPH_C32(0x63d9c000), SPH_C32(0x8add0000),
+	  SPH_C32(0x6ec40000), SPH_C32(0xdb0e5b17), SPH_C32(0xda52fd5a),
+	  SPH_C32(0x80378bcd), SPH_C32(0x866dd064), SPH_C32(0x9e290090),
+	  SPH_C32(0x0dafc000), SPH_C32(0x6b3c0000), SPH_C32(0x5b6d0000),
+	  SPH_C32(0x3f8419b7), SPH_C32(0x987ce567), SPH_C32(0x5fce424c),
+	  SPH_C32(0x2c2c0cf7) },
+	{ SPH_C32(0xcf0d0220), SPH_C32(0x212dc000), SPH_C32(0xeca40000),
+	  SPH_C32(0x207f0000), SPH_C32(0x25d500c4), SPH_C32(0xeb0e4d8c),
+	  SPH_C32(0x6286ec87), SPH_C32(0xef3d8b5e), SPH_C32(0x695c0099),
+	  SPH_C32(0xc2930000), SPH_C32(0xa8ea0000), SPH_C32(0x5fff0000),
+	  SPH_C32(0x3d11001e), SPH_C32(0x6094d3dd), SPH_C32(0x2549b302),
+	  SPH_C32(0xb23a94ed) },
+	{ SPH_C32(0x38780229), SPH_C32(0xee110000), SPH_C32(0x2f720000),
+	  SPH_C32(0x24ed0000), SPH_C32(0x2740196d), SPH_C32(0x13e67b36),
+	  SPH_C32(0x18011dc9), SPH_C32(0x712b1344), SPH_C32(0xbd360099),
+	  SPH_C32(0x4f5bc000), SPH_C32(0x0d450000), SPH_C32(0x15d60000),
+	  SPH_C32(0xc15f4264), SPH_C32(0xa92055b1), SPH_C32(0xbd7f2506),
+	  SPH_C32(0x457c57cd) },
+	{ SPH_C32(0x6c2302d0), SPH_C32(0x5dbf0000), SPH_C32(0xbcb90000),
+	  SPH_C32(0x5e420000), SPH_C32(0x50ac3c32), SPH_C32(0x783127c5),
+	  SPH_C32(0xf173b79d), SPH_C32(0xd74c3db5), SPH_C32(0xbe2f00c0),
+	  SPH_C32(0x167f0000), SPH_C32(0xda360000), SPH_C32(0x125b0000),
+	  SPH_C32(0x815e2575), SPH_C32(0x37771d12), SPH_C32(0x5b5ca49a),
+	  SPH_C32(0x515edaa3) },
+	{ SPH_C32(0x9b5602d9), SPH_C32(0x9283c000), SPH_C32(0x7f6f0000),
+	  SPH_C32(0x5ad00000), SPH_C32(0x5239259b), SPH_C32(0x80d9117f),
+	  SPH_C32(0x8bf446d3), SPH_C32(0x495aa5af), SPH_C32(0x6a4500c0),
+	  SPH_C32(0x9bb7c000), SPH_C32(0x7f990000), SPH_C32(0x58720000),
+	  SPH_C32(0x7d10670f), SPH_C32(0xfec39b7e), SPH_C32(0xc36a329e),
+	  SPH_C32(0xa6181983) },
+	{ SPH_C32(0xb84902d0), SPH_C32(0xd077c000), SPH_C32(0x19160000),
+	  SPH_C32(0x146b0000), SPH_C32(0xace27e48), SPH_C32(0xb185a1a9),
+	  SPH_C32(0x69452199), SPH_C32(0x200afe95), SPH_C32(0x9d3000c9),
+	  SPH_C32(0x548b0000), SPH_C32(0xbc4f0000), SPH_C32(0x5ce00000),
+	  SPH_C32(0x7f857ea6), SPH_C32(0x062badc4), SPH_C32(0xb9edc3d0),
+	  SPH_C32(0x380e8199) },
+	{ SPH_C32(0x4f3c02d9), SPH_C32(0x1f4b0000), SPH_C32(0xdac00000),
+	  SPH_C32(0x10f90000), SPH_C32(0xae7767e1), SPH_C32(0x496d9713),
+	  SPH_C32(0x13c2d0d7), SPH_C32(0xbe1c668f), SPH_C32(0x495a00c9),
+	  SPH_C32(0xd943c000), SPH_C32(0x19e00000), SPH_C32(0x16c90000),
+	  SPH_C32(0x83cb3cdc), SPH_C32(0xcf9f2ba8), SPH_C32(0x21db55d4),
+	  SPH_C32(0xcf4842b9) },
+	{ SPH_C32(0x078c0300), SPH_C32(0xa78f0000), SPH_C32(0x4f750000),
+	  SPH_C32(0xbd6b0000), SPH_C32(0x69875721), SPH_C32(0xed2450ba),
+	  SPH_C32(0x28ecbf49), SPH_C32(0xf3c74ebb), SPH_C32(0x7d5c0050),
+	  SPH_C32(0xeb690000), SPH_C32(0x79460000), SPH_C32(0x7ae10000),
+	  SPH_C32(0x9c3d44c6), SPH_C32(0x56c20912), SPH_C32(0x4ba936b9),
+	  SPH_C32(0x6dbdf830) },
+	{ SPH_C32(0xf0f90309), SPH_C32(0x68b3c000), SPH_C32(0x8ca30000),
+	  SPH_C32(0xb9f90000), SPH_C32(0x6b124e88), SPH_C32(0x15cc6600),
+	  SPH_C32(0x526b4e07), SPH_C32(0x6dd1d6a1), SPH_C32(0xa9360050),
+	  SPH_C32(0x66a1c000), SPH_C32(0xdce90000), SPH_C32(0x30c80000),
+	  SPH_C32(0x607306bc), SPH_C32(0x9f768f7e), SPH_C32(0xd39fa0bd),
+	  SPH_C32(0x9afb3b10) },
+	{ SPH_C32(0xd3e60300), SPH_C32(0x2a47c000), SPH_C32(0xeada0000),
+	  SPH_C32(0xf7420000), SPH_C32(0x95c9155b), SPH_C32(0x2490d6d6),
+	  SPH_C32(0xb0da294d), SPH_C32(0x04818d9b), SPH_C32(0x5e430059),
+	  SPH_C32(0xa99d0000), SPH_C32(0x1f3f0000), SPH_C32(0x345a0000),
+	  SPH_C32(0x62e61f15), SPH_C32(0x679eb9c4), SPH_C32(0xa91851f3),
+	  SPH_C32(0x04eda30a) },
+	{ SPH_C32(0x24930309), SPH_C32(0xe57b0000), SPH_C32(0x290c0000),
+	  SPH_C32(0xf3d00000), SPH_C32(0x975c0cf2), SPH_C32(0xdc78e06c),
+	  SPH_C32(0xca5dd803), SPH_C32(0x9a971581), SPH_C32(0x8a290059),
+	  SPH_C32(0x2455c000), SPH_C32(0xba900000), SPH_C32(0x7e730000),
+	  SPH_C32(0x9ea85d6f), SPH_C32(0xae2a3fa8), SPH_C32(0x312ec7f7),
+	  SPH_C32(0xf3ab602a) },
+	{ SPH_C32(0x70c803f0), SPH_C32(0x56d50000), SPH_C32(0xbac70000),
+	  SPH_C32(0x897f0000), SPH_C32(0xe0b029ad), SPH_C32(0xb7afbc9f),
+	  SPH_C32(0x232f7257), SPH_C32(0x3cf03b70), SPH_C32(0x89300000),
+	  SPH_C32(0x7d710000), SPH_C32(0x6de30000), SPH_C32(0x79fe0000),
+	  SPH_C32(0xdea93a7e), SPH_C32(0x307d770b), SPH_C32(0xd70d466b),
+	  SPH_C32(0xe789ed44) },
+	{ SPH_C32(0x87bd03f9), SPH_C32(0x99e9c000), SPH_C32(0x79110000),
+	  SPH_C32(0x8ded0000), SPH_C32(0xe2253004), SPH_C32(0x4f478a25),
+	  SPH_C32(0x59a88319), SPH_C32(0xa2e6a36a), SPH_C32(0x5d5a0000),
+	  SPH_C32(0xf0b9c000), SPH_C32(0xc84c0000), SPH_C32(0x33d70000),
+	  SPH_C32(0x22e77804), SPH_C32(0xf9c9f167), SPH_C32(0x4f3bd06f),
+	  SPH_C32(0x10cf2e64) },
+	{ SPH_C32(0xa4a203f0), SPH_C32(0xdb1dc000), SPH_C32(0x1f680000),
+	  SPH_C32(0xc3560000), SPH_C32(0x1cfe6bd7), SPH_C32(0x7e1b3af3),
+	  SPH_C32(0xbb19e453), SPH_C32(0xcbb6f850), SPH_C32(0xaa2f0009),
+	  SPH_C32(0x3f850000), SPH_C32(0x0b9a0000), SPH_C32(0x37450000),
+	  SPH_C32(0x207261ad), SPH_C32(0x0121c7dd), SPH_C32(0x35bc2121),
+	  SPH_C32(0x8ed9b67e) },
+	{ SPH_C32(0x53d703f9), SPH_C32(0x14210000), SPH_C32(0xdcbe0000),
+	  SPH_C32(0xc7c40000), SPH_C32(0x1e6b727e), SPH_C32(0x86f30c49),
+	  SPH_C32(0xc19e151d), SPH_C32(0x55a0604a), SPH_C32(0x7e450009),
+	  SPH_C32(0xb24dc000), SPH_C32(0xae350000), SPH_C32(0x7d6c0000),
+	  SPH_C32(0xdc3c23d7), SPH_C32(0xc89541b1), SPH_C32(0xad8ab725),
+	  SPH_C32(0x799f755e) },
+	{ SPH_C32(0xf3e00350), SPH_C32(0x31970000), SPH_C32(0x5bd00000),
+	  SPH_C32(0xbe740000), SPH_C32(0x2b132999), SPH_C32(0x8b9b2ea3),
+	  SPH_C32(0xb448cf9b), SPH_C32(0x79f35bcf), SPH_C32(0xfe7400f0),
+	  SPH_C32(0x8c2b0000), SPH_C32(0x98510000), SPH_C32(0x4dea0000),
+	  SPH_C32(0x579e44f2), SPH_C32(0x6af69b2e), SPH_C32(0xdcce8b75),
+	  SPH_C32(0x28be988f) },
+	{ SPH_C32(0x04950359), SPH_C32(0xfeabc000), SPH_C32(0x98060000),
+	  SPH_C32(0xbae60000), SPH_C32(0x29863030), SPH_C32(0x73731819),
+	  SPH_C32(0xcecf3ed5), SPH_C32(0xe7e5c3d5), SPH_C32(0x2a1e00f0),
+	  SPH_C32(0x01e3c000), SPH_C32(0x3dfe0000), SPH_C32(0x07c30000),
+	  SPH_C32(0xabd00688), SPH_C32(0xa3421d42), SPH_C32(0x44f81d71),
+	  SPH_C32(0xdff85baf) },
+	{ SPH_C32(0x278a0350), SPH_C32(0xbc5fc000), SPH_C32(0xfe7f0000),
+	  SPH_C32(0xf45d0000), SPH_C32(0xd75d6be3), SPH_C32(0x422fa8cf),
+	  SPH_C32(0x2c7e599f), SPH_C32(0x8eb598ef), SPH_C32(0xdd6b00f9),
+	  SPH_C32(0xcedf0000), SPH_C32(0xfe280000), SPH_C32(0x03510000),
+	  SPH_C32(0xa9451f21), SPH_C32(0x5baa2bf8), SPH_C32(0x3e7fec3f),
+	  SPH_C32(0x41eec3b5) },
+	{ SPH_C32(0xd0ff0359), SPH_C32(0x73630000), SPH_C32(0x3da90000),
+	  SPH_C32(0xf0cf0000), SPH_C32(0xd5c8724a), SPH_C32(0xbac79e75),
+	  SPH_C32(0x56f9a8d1), SPH_C32(0x10a300f5), SPH_C32(0x090100f9),
+	  SPH_C32(0x4317c000), SPH_C32(0x5b870000), SPH_C32(0x49780000),
+	  SPH_C32(0x550b5d5b), SPH_C32(0x921ead94), SPH_C32(0xa6497a3b),
+	  SPH_C32(0xb6a80095) },
+	{ SPH_C32(0x84a403a0), SPH_C32(0xc0cd0000), SPH_C32(0xae620000),
+	  SPH_C32(0x8a600000), SPH_C32(0xa2245715), SPH_C32(0xd110c286),
+	  SPH_C32(0xbf8b0285), SPH_C32(0xb6c42e04), SPH_C32(0x0a1800a0),
+	  SPH_C32(0x1a330000), SPH_C32(0x8cf40000), SPH_C32(0x4ef50000),
+	  SPH_C32(0x150a3a4a), SPH_C32(0x0c49e537), SPH_C32(0x406afba7),
+	  SPH_C32(0xa28a8dfb) },
+	{ SPH_C32(0x73d103a9), SPH_C32(0x0ff1c000), SPH_C32(0x6db40000),
+	  SPH_C32(0x8ef20000), SPH_C32(0xa0b14ebc), SPH_C32(0x29f8f43c),
+	  SPH_C32(0xc50cf3cb), SPH_C32(0x28d2b61e), SPH_C32(0xde7200a0),
+	  SPH_C32(0x97fbc000), SPH_C32(0x295b0000), SPH_C32(0x04dc0000),
+	  SPH_C32(0xe9447830), SPH_C32(0xc5fd635b), SPH_C32(0xd85c6da3),
+	  SPH_C32(0x55cc4edb) },
+	{ SPH_C32(0x50ce03a0), SPH_C32(0x4d05c000), SPH_C32(0x0bcd0000),
+	  SPH_C32(0xc0490000), SPH_C32(0x5e6a156f), SPH_C32(0x18a444ea),
+	  SPH_C32(0x27bd9481), SPH_C32(0x4182ed24), SPH_C32(0x290700a9),
+	  SPH_C32(0x58c70000), SPH_C32(0xea8d0000), SPH_C32(0x004e0000),
+	  SPH_C32(0xebd16199), SPH_C32(0x3d1555e1), SPH_C32(0xa2db9ced),
+	  SPH_C32(0xcbdad6c1) },
+	{ SPH_C32(0xa7bb03a9), SPH_C32(0x82390000), SPH_C32(0xc81b0000),
+	  SPH_C32(0xc4db0000), SPH_C32(0x5cff0cc6), SPH_C32(0xe04c7250),
+	  SPH_C32(0x5d3a65cf), SPH_C32(0xdf94753e), SPH_C32(0xfd6d00a9),
+	  SPH_C32(0xd50fc000), SPH_C32(0x4f220000), SPH_C32(0x4a670000),
+	  SPH_C32(0x179f23e3), SPH_C32(0xf4a1d38d), SPH_C32(0x3aed0ae9),
+	  SPH_C32(0x3c9c15e1) },
+	{ SPH_C32(0x5b3c0210), SPH_C32(0x36b10000), SPH_C32(0x0b6c0000),
+	  SPH_C32(0x35e70000), SPH_C32(0x0f5b2339), SPH_C32(0x7f3b4ddc),
+	  SPH_C32(0x7d22556c), SPH_C32(0x619b0a52), SPH_C32(0x95db0120),
+	  SPH_C32(0x761b0000), SPH_C32(0x6b9d0000), SPH_C32(0xaec30000),
+	  SPH_C32(0x6eb52fe1), SPH_C32(0xffe3ec51), SPH_C32(0x055183a1),
+	  SPH_C32(0x0c35eb81) },
+	{ SPH_C32(0xac490219), SPH_C32(0xf98dc000), SPH_C32(0xc8ba0000),
+	  SPH_C32(0x31750000), SPH_C32(0x0dce3a90), SPH_C32(0x87d37b66),
+	  SPH_C32(0x07a5a422), SPH_C32(0xff8d9248), SPH_C32(0x41b10120),
+	  SPH_C32(0xfbd3c000), SPH_C32(0xce320000), SPH_C32(0xe4ea0000),
+	  SPH_C32(0x92fb6d9b), SPH_C32(0x36576a3d), SPH_C32(0x9d6715a5),
+	  SPH_C32(0xfb7328a1) },
+	{ SPH_C32(0x8f560210), SPH_C32(0xbb79c000), SPH_C32(0xaec30000),
+	  SPH_C32(0x7fce0000), SPH_C32(0xf3156143), SPH_C32(0xb68fcbb0),
+	  SPH_C32(0xe514c368), SPH_C32(0x96ddc972), SPH_C32(0xb6c40129),
+	  SPH_C32(0x34ef0000), SPH_C32(0x0de40000), SPH_C32(0xe0780000),
+	  SPH_C32(0x906e7432), SPH_C32(0xcebf5c87), SPH_C32(0xe7e0e4eb),
+	  SPH_C32(0x6565b0bb) },
+	{ SPH_C32(0x78230219), SPH_C32(0x74450000), SPH_C32(0x6d150000),
+	  SPH_C32(0x7b5c0000), SPH_C32(0xf18078ea), SPH_C32(0x4e67fd0a),
+	  SPH_C32(0x9f933226), SPH_C32(0x08cb5168), SPH_C32(0x62ae0129),
+	  SPH_C32(0xb927c000), SPH_C32(0xa84b0000), SPH_C32(0xaa510000),
+	  SPH_C32(0x6c203648), SPH_C32(0x070bdaeb), SPH_C32(0x7fd672ef),
+	  SPH_C32(0x9223739b) },
+	{ SPH_C32(0x2c7802e0), SPH_C32(0xc7eb0000), SPH_C32(0xfede0000),
+	  SPH_C32(0x01f30000), SPH_C32(0x866c5db5), SPH_C32(0x25b0a1f9),
+	  SPH_C32(0x76e19872), SPH_C32(0xaeac7f99), SPH_C32(0x61b70170),
+	  SPH_C32(0xe0030000), SPH_C32(0x7f380000), SPH_C32(0xaddc0000),
+	  SPH_C32(0x2c215159), SPH_C32(0x995c9248), SPH_C32(0x99f5f373),
+	  SPH_C32(0x8601fef5) },
+	{ SPH_C32(0xdb0d02e9), SPH_C32(0x08d7c000), SPH_C32(0x3d080000),
+	  SPH_C32(0x05610000), SPH_C32(0x84f9441c), SPH_C32(0xdd589743),
+	  SPH_C32(0x0c66693c), SPH_C32(0x30bae783), SPH_C32(0xb5dd0170),
+	  SPH_C32(0x6dcbc000), SPH_C32(0xda970000), SPH_C32(0xe7f50000),
+	  SPH_C32(0xd06f1323), SPH_C32(0x50e81424), SPH_C32(0x01c36577),
+	  SPH_C32(0x71473dd5) },
+	{ SPH_C32(0xf81202e0), SPH_C32(0x4a23c000), SPH_C32(0x5b710000),
+	  SPH_C32(0x4bda0000), SPH_C32(0x7a221fcf), SPH_C32(0xec042795),
+	  SPH_C32(0xeed70e76), SPH_C32(0x59eabcb9), SPH_C32(0x42a80179),
+	  SPH_C32(0xa2f70000), SPH_C32(0x19410000), SPH_C32(0xe3670000),
+	  SPH_C32(0xd2fa0a8a), SPH_C32(0xa800229e), SPH_C32(0x7b449439),
+	  SPH_C32(0xef51a5cf) },
+	{ SPH_C32(0x0f6702e9), SPH_C32(0x851f0000), SPH_C32(0x98a70000),
+	  SPH_C32(0x4f480000), SPH_C32(0x78b70666), SPH_C32(0x14ec112f),
+	  SPH_C32(0x9450ff38), SPH_C32(0xc7fc24a3), SPH_C32(0x96c20179),
+	  SPH_C32(0x2f3fc000), SPH_C32(0xbcee0000), SPH_C32(0xa94e0000),
+	  SPH_C32(0x2eb448f0), SPH_C32(0x61b4a4f2), SPH_C32(0xe372023d),
+	  SPH_C32(0x181766ef) },
+	{ SPH_C32(0xaf500240), SPH_C32(0xa0a90000), SPH_C32(0x1fc90000),
+	  SPH_C32(0x36f80000), SPH_C32(0x4dcf5d81), SPH_C32(0x198433c5),
+	  SPH_C32(0xe18625be), SPH_C32(0xebaf1f26), SPH_C32(0x16f30180),
+	  SPH_C32(0x11590000), SPH_C32(0x8a8a0000), SPH_C32(0x99c80000),
+	  SPH_C32(0xa5162fd5), SPH_C32(0xc3d77e6d), SPH_C32(0x92363e6d),
+	  SPH_C32(0x49368b3e) },
+	{ SPH_C32(0x58250249), SPH_C32(0x6f95c000), SPH_C32(0xdc1f0000),
+	  SPH_C32(0x326a0000), SPH_C32(0x4f5a4428), SPH_C32(0xe16c057f),
+	  SPH_C32(0x9b01d4f0), SPH_C32(0x75b9873c), SPH_C32(0xc2990180),
+	  SPH_C32(0x9c91c000), SPH_C32(0x2f250000), SPH_C32(0xd3e10000),
+	  SPH_C32(0x59586daf), SPH_C32(0x0a63f801), SPH_C32(0x0a00a869),
+	  SPH_C32(0xbe70481e) },
+	{ SPH_C32(0x7b3a0240), SPH_C32(0x2d61c000), SPH_C32(0xba660000),
+	  SPH_C32(0x7cd10000), SPH_C32(0xb1811ffb), SPH_C32(0xd030b5a9),
+	  SPH_C32(0x79b0b3ba), SPH_C32(0x1ce9dc06), SPH_C32(0x35ec0189),
+	  SPH_C32(0x53ad0000), SPH_C32(0xecf30000), SPH_C32(0xd7730000),
+	  SPH_C32(0x5bcd7406), SPH_C32(0xf28bcebb), SPH_C32(0x70875927),
+	  SPH_C32(0x2066d004) },
+	{ SPH_C32(0x8c4f0249), SPH_C32(0xe25d0000), SPH_C32(0x79b00000),
+	  SPH_C32(0x78430000), SPH_C32(0xb3140652), SPH_C32(0x28d88313),
+	  SPH_C32(0x033742f4), SPH_C32(0x82ff441c), SPH_C32(0xe1860189),
+	  SPH_C32(0xde65c000), SPH_C32(0x495c0000), SPH_C32(0x9d5a0000),
+	  SPH_C32(0xa783367c), SPH_C32(0x3b3f48d7), SPH_C32(0xe8b1cf23),
+	  SPH_C32(0xd7201324) },
+	{ SPH_C32(0xd81402b0), SPH_C32(0x51f30000), SPH_C32(0xea7b0000),
+	  SPH_C32(0x02ec0000), SPH_C32(0xc4f8230d), SPH_C32(0x430fdfe0),
+	  SPH_C32(0xea45e8a0), SPH_C32(0x24986aed), SPH_C32(0xe29f01d0),
+	  SPH_C32(0x87410000), SPH_C32(0x9e2f0000), SPH_C32(0x9ad70000),
+	  SPH_C32(0xe782516d), SPH_C32(0xa5680074), SPH_C32(0x0e924ebf),
+	  SPH_C32(0xc3029e4a) },
+	{ SPH_C32(0x2f6102b9), SPH_C32(0x9ecfc000), SPH_C32(0x29ad0000),
+	  SPH_C32(0x067e0000), SPH_C32(0xc66d3aa4), SPH_C32(0xbbe7e95a),
+	  SPH_C32(0x90c219ee), SPH_C32(0xba8ef2f7), SPH_C32(0x36f501d0),
+	  SPH_C32(0x0a89c000), SPH_C32(0x3b800000), SPH_C32(0xd0fe0000),
+	  SPH_C32(0x1bcc1317), SPH_C32(0x6cdc8618), SPH_C32(0x96a4d8bb),
+	  SPH_C32(0x34445d6a) },
+	{ SPH_C32(0x0c7e02b0), SPH_C32(0xdc3bc000), SPH_C32(0x4fd40000),
+	  SPH_C32(0x48c50000), SPH_C32(0x38b66177), SPH_C32(0x8abb598c),
+	  SPH_C32(0x72737ea4), SPH_C32(0xd3dea9cd), SPH_C32(0xc18001d9),
+	  SPH_C32(0xc5b50000), SPH_C32(0xf8560000), SPH_C32(0xd46c0000),
+	  SPH_C32(0x19590abe), SPH_C32(0x9434b0a2), SPH_C32(0xec2329f5),
+	  SPH_C32(0xaa52c570) },
+	{ SPH_C32(0xfb0b02b9), SPH_C32(0x13070000), SPH_C32(0x8c020000),
+	  SPH_C32(0x4c570000), SPH_C32(0x3a2378de), SPH_C32(0x72536f36),
+	  SPH_C32(0x08f48fea), SPH_C32(0x4dc831d7), SPH_C32(0x15ea01d9),
+	  SPH_C32(0x487dc000), SPH_C32(0x5df90000), SPH_C32(0x9e450000),
+	  SPH_C32(0xe51748c4), SPH_C32(0x5d8036ce), SPH_C32(0x7415bff1),
+	  SPH_C32(0x5d140650) },
+	{ SPH_C32(0xb3bb0360), SPH_C32(0xabc30000), SPH_C32(0x19b70000),
+	  SPH_C32(0xe1c50000), SPH_C32(0xfdd3481e), SPH_C32(0xd61aa89f),
+	  SPH_C32(0x33dae074), SPH_C32(0x001319e3), SPH_C32(0x21ec0140),
+	  SPH_C32(0x7a570000), SPH_C32(0x3d5f0000), SPH_C32(0xf26d0000),
+	  SPH_C32(0xfae130de), SPH_C32(0xc4dd1474), SPH_C32(0x1e67dc9c),
+	  SPH_C32(0xffe1bcd9) },
+	{ SPH_C32(0x44ce0369), SPH_C32(0x64ffc000), SPH_C32(0xda610000),
+	  SPH_C32(0xe5570000), SPH_C32(0xff4651b7), SPH_C32(0x2ef29e25),
+	  SPH_C32(0x495d113a), SPH_C32(0x9e0581f9), SPH_C32(0xf5860140),
+	  SPH_C32(0xf79fc000), SPH_C32(0x98f00000), SPH_C32(0xb8440000),
+	  SPH_C32(0x06af72a4), SPH_C32(0x0d699218), SPH_C32(0x86514a98),
+	  SPH_C32(0x08a77ff9) },
+	{ SPH_C32(0x67d10360), SPH_C32(0x260bc000), SPH_C32(0xbc180000),
+	  SPH_C32(0xabec0000), SPH_C32(0x019d0a64), SPH_C32(0x1fae2ef3),
+	  SPH_C32(0xabec7670), SPH_C32(0xf755dac3), SPH_C32(0x02f30149),
+	  SPH_C32(0x38a30000), SPH_C32(0x5b260000), SPH_C32(0xbcd60000),
+	  SPH_C32(0x043a6b0d), SPH_C32(0xf581a4a2), SPH_C32(0xfcd6bbd6),
+	  SPH_C32(0x96b1e7e3) },
+	{ SPH_C32(0x90a40369), SPH_C32(0xe9370000), SPH_C32(0x7fce0000),
+	  SPH_C32(0xaf7e0000), SPH_C32(0x030813cd), SPH_C32(0xe7461849),
+	  SPH_C32(0xd16b873e), SPH_C32(0x694342d9), SPH_C32(0xd6990149),
+	  SPH_C32(0xb56bc000), SPH_C32(0xfe890000), SPH_C32(0xf6ff0000),
+	  SPH_C32(0xf8742977), SPH_C32(0x3c3522ce), SPH_C32(0x64e02dd2),
+	  SPH_C32(0x61f724c3) },
+	{ SPH_C32(0xc4ff0390), SPH_C32(0x5a990000), SPH_C32(0xec050000),
+	  SPH_C32(0xd5d10000), SPH_C32(0x74e43692), SPH_C32(0x8c9144ba),
+	  SPH_C32(0x38192d6a), SPH_C32(0xcf246c28), SPH_C32(0xd5800110),
+	  SPH_C32(0xec4f0000), SPH_C32(0x29fa0000), SPH_C32(0xf1720000),
+	  SPH_C32(0xb8754e66), SPH_C32(0xa2626a6d), SPH_C32(0x82c3ac4e),
+	  SPH_C32(0x75d5a9ad) },
+	{ SPH_C32(0x338a0399), SPH_C32(0x95a5c000), SPH_C32(0x2fd30000),
+	  SPH_C32(0xd1430000), SPH_C32(0x76712f3b), SPH_C32(0x74797200),
+	  SPH_C32(0x429edc24), SPH_C32(0x5132f432), SPH_C32(0x01ea0110),
+	  SPH_C32(0x6187c000), SPH_C32(0x8c550000), SPH_C32(0xbb5b0000),
+	  SPH_C32(0x443b0c1c), SPH_C32(0x6bd6ec01), SPH_C32(0x1af53a4a),
+	  SPH_C32(0x82936a8d) },
+	{ SPH_C32(0x10950390), SPH_C32(0xd751c000), SPH_C32(0x49aa0000),
+	  SPH_C32(0x9ff80000), SPH_C32(0x88aa74e8), SPH_C32(0x4525c2d6),
+	  SPH_C32(0xa02fbb6e), SPH_C32(0x3862af08), SPH_C32(0xf69f0119),
+	  SPH_C32(0xaebb0000), SPH_C32(0x4f830000), SPH_C32(0xbfc90000),
+	  SPH_C32(0x46ae15b5), SPH_C32(0x933edabb), SPH_C32(0x6072cb04),
+	  SPH_C32(0x1c85f297) },
+	{ SPH_C32(0xe7e00399), SPH_C32(0x186d0000), SPH_C32(0x8a7c0000),
+	  SPH_C32(0x9b6a0000), SPH_C32(0x8a3f6d41), SPH_C32(0xbdcdf46c),
+	  SPH_C32(0xdaa84a20), SPH_C32(0xa6743712), SPH_C32(0x22f50119),
+	  SPH_C32(0x2373c000), SPH_C32(0xea2c0000), SPH_C32(0xf5e00000),
+	  SPH_C32(0xbae057cf), SPH_C32(0x5a8a5cd7), SPH_C32(0xf8445d00),
+	  SPH_C32(0xebc331b7) },
+	{ SPH_C32(0x47d70330), SPH_C32(0x3ddb0000), SPH_C32(0x0d120000),
+	  SPH_C32(0xe2da0000), SPH_C32(0xbf4736a6), SPH_C32(0xb0a5d686),
+	  SPH_C32(0xaf7e90a6), SPH_C32(0x8a270c97), SPH_C32(0xa2c401e0),
+	  SPH_C32(0x1d150000), SPH_C32(0xdc480000), SPH_C32(0xc5660000),
+	  SPH_C32(0x314230ea), SPH_C32(0xf8e98648), SPH_C32(0x89006150),
+	  SPH_C32(0xbae2dc66) },
+	{ SPH_C32(0xb0a20339), SPH_C32(0xf2e7c000), SPH_C32(0xcec40000),
+	  SPH_C32(0xe6480000), SPH_C32(0xbdd22f0f), SPH_C32(0x484de03c),
+	  SPH_C32(0xd5f961e8), SPH_C32(0x1431948d), SPH_C32(0x76ae01e0),
+	  SPH_C32(0x90ddc000), SPH_C32(0x79e70000), SPH_C32(0x8f4f0000),
+	  SPH_C32(0xcd0c7290), SPH_C32(0x315d0024), SPH_C32(0x1136f754),
+	  SPH_C32(0x4da41f46) },
+	{ SPH_C32(0x93bd0330), SPH_C32(0xb013c000), SPH_C32(0xa8bd0000),
+	  SPH_C32(0xa8f30000), SPH_C32(0x430974dc), SPH_C32(0x791150ea),
+	  SPH_C32(0x374806a2), SPH_C32(0x7d61cfb7), SPH_C32(0x81db01e9),
+	  SPH_C32(0x5fe10000), SPH_C32(0xba310000), SPH_C32(0x8bdd0000),
+	  SPH_C32(0xcf996b39), SPH_C32(0xc9b5369e), SPH_C32(0x6bb1061a),
+	  SPH_C32(0xd3b2875c) },
+	{ SPH_C32(0x64c80339), SPH_C32(0x7f2f0000), SPH_C32(0x6b6b0000),
+	  SPH_C32(0xac610000), SPH_C32(0x419c6d75), SPH_C32(0x81f96650),
+	  SPH_C32(0x4dcff7ec), SPH_C32(0xe37757ad), SPH_C32(0x55b101e9),
+	  SPH_C32(0xd229c000), SPH_C32(0x1f9e0000), SPH_C32(0xc1f40000),
+	  SPH_C32(0x33d72943), SPH_C32(0x0001b0f2), SPH_C32(0xf387901e),
+	  SPH_C32(0x24f4447c) },
+	{ SPH_C32(0x309303c0), SPH_C32(0xcc810000), SPH_C32(0xf8a00000),
+	  SPH_C32(0xd6ce0000), SPH_C32(0x3670482a), SPH_C32(0xea2e3aa3),
+	  SPH_C32(0xa4bd5db8), SPH_C32(0x4510795c), SPH_C32(0x56a801b0),
+	  SPH_C32(0x8b0d0000), SPH_C32(0xc8ed0000), SPH_C32(0xc6790000),
+	  SPH_C32(0x73d64e52), SPH_C32(0x9e56f851), SPH_C32(0x15a41182),
+	  SPH_C32(0x30d6c912) },
+	{ SPH_C32(0xc7e603c9), SPH_C32(0x03bdc000), SPH_C32(0x3b760000),
+	  SPH_C32(0xd25c0000), SPH_C32(0x34e55183), SPH_C32(0x12c60c19),
+	  SPH_C32(0xde3aacf6), SPH_C32(0xdb06e146), SPH_C32(0x82c201b0),
+	  SPH_C32(0x06c5c000), SPH_C32(0x6d420000), SPH_C32(0x8c500000),
+	  SPH_C32(0x8f980c28), SPH_C32(0x57e27e3d), SPH_C32(0x8d928786),
+	  SPH_C32(0xc7900a32) },
+	{ SPH_C32(0xe4f903c0), SPH_C32(0x4149c000), SPH_C32(0x5d0f0000),
+	  SPH_C32(0x9ce70000), SPH_C32(0xca3e0a50), SPH_C32(0x239abccf),
+	  SPH_C32(0x3c8bcbbc), SPH_C32(0xb256ba7c), SPH_C32(0x75b701b9),
+	  SPH_C32(0xc9f90000), SPH_C32(0xae940000), SPH_C32(0x88c20000),
+	  SPH_C32(0x8d0d1581), SPH_C32(0xaf0a4887), SPH_C32(0xf71576c8),
+	  SPH_C32(0x59869228) },
+	{ SPH_C32(0x138c03c9), SPH_C32(0x8e750000), SPH_C32(0x9ed90000),
+	  SPH_C32(0x98750000), SPH_C32(0xc8ab13f9), SPH_C32(0xdb728a75),
+	  SPH_C32(0x460c3af2), SPH_C32(0x2c402266), SPH_C32(0xa1dd01b9),
+	  SPH_C32(0x4431c000), SPH_C32(0x0b3b0000), SPH_C32(0xc2eb0000),
+	  SPH_C32(0x714357fb), SPH_C32(0x66beceeb), SPH_C32(0x6f23e0cc),
+	  SPH_C32(0xaec05108) }
+};
+
+static const sph_u32 T512_14[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0xcd990000), SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000),
+	  SPH_C32(0x65440000), SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb),
+	  SPH_C32(0x7143d295), SPH_C32(0x6b1e8d40), SPH_C32(0x2c430000),
+	  SPH_C32(0xa8781200), SPH_C32(0x501c0000), SPH_C32(0x386d0000),
+	  SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861), SPH_C32(0xc4dbabb1),
+	  SPH_C32(0x9f8d23ca) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0x695b0000), SPH_C32(0x0dcd0500), SPH_C32(0xa9760000),
+	  SPH_C32(0x03250000), SPH_C32(0x2183248b), SPH_C32(0x61380db7),
+	  SPH_C32(0xd2670d01), SPH_C32(0x40bed715), SPH_C32(0x59e70000),
+	  SPH_C32(0x6af33500), SPH_C32(0xc4b80000), SPH_C32(0xa8980000),
+	  SPH_C32(0xc4376747), SPH_C32(0x0be593cf), SPH_C32(0xd3bc6f32),
+	  SPH_C32(0x315245b4) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0x1cff0000), SPH_C32(0xcf462200), SPH_C32(0x3dd20000),
+	  SPH_C32(0x93d00000), SPH_C32(0xdafb736b), SPH_C32(0x28f60619),
+	  SPH_C32(0xc500c982), SPH_C32(0xee61b16b), SPH_C32(0x88810000),
+	  SPH_C32(0x714f3600), SPH_C32(0x5a540000), SPH_C32(0x5e0c0000),
+	  SPH_C32(0xc7352260), SPH_C32(0xc4956f3d), SPH_C32(0x67ff7425),
+	  SPH_C32(0xb42d799f) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0xcdf40003), SPH_C32(0x1861c600), SPH_C32(0xe6ba0000),
+	  SPH_C32(0x4f5b0000), SPH_C32(0xa9454e92), SPH_C32(0x29104612),
+	  SPH_C32(0xdd0c600b), SPH_C32(0xc576c515), SPH_C32(0x13ea0001),
+	  SPH_C32(0xdc925100), SPH_C32(0x3dce0000), SPH_C32(0x69670000),
+	  SPH_C32(0x81f80799), SPH_C32(0x3a4a8f56), SPH_C32(0x3aa3f01c),
+	  SPH_C32(0xe459edb5) },
+	{ SPH_C32(0x006d0003), SPH_C32(0xcc9be700), SPH_C32(0x45840000),
+	  SPH_C32(0x2a1f0000), SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9),
+	  SPH_C32(0xac4fb29e), SPH_C32(0xae684855), SPH_C32(0x3fa90001),
+	  SPH_C32(0x74ea4300), SPH_C32(0x6dd20000), SPH_C32(0x510a0000),
+	  SPH_C32(0xbeb7373e), SPH_C32(0x78611737), SPH_C32(0xfe785bad),
+	  SPH_C32(0x7bd4ce7f) },
+	{ SPH_C32(0xb8500003), SPH_C32(0xdaeae100), SPH_C32(0x721e0000),
+	  SPH_C32(0xdfae0000), SPH_C32(0x523d1972), SPH_C32(0x60de4dbc),
+	  SPH_C32(0xca6ba488), SPH_C32(0x6ba9a36b), SPH_C32(0xc28c0001),
+	  SPH_C32(0xc72e5200), SPH_C32(0xa3220000), SPH_C32(0x9ff30000),
+	  SPH_C32(0x82fa42be), SPH_C32(0xf53a73a4), SPH_C32(0x8ee0eb0b),
+	  SPH_C32(0x6126d19e) },
+	{ SPH_C32(0xa4af0003), SPH_C32(0x15acc300), SPH_C32(0x4fcc0000),
+	  SPH_C32(0x4c7e0000), SPH_C32(0x88c66a19), SPH_C32(0x48284ba5),
+	  SPH_C32(0x0f6b6d0a), SPH_C32(0x85c81200), SPH_C32(0x4a0d0001),
+	  SPH_C32(0xb6616400), SPH_C32(0xf9760000), SPH_C32(0xc1ff0000),
+	  SPH_C32(0x45cf60de), SPH_C32(0x31af1c99), SPH_C32(0xe91f9f2e),
+	  SPH_C32(0xd50ba801) },
+	{ SPH_C32(0x1c920003), SPH_C32(0x03ddc500), SPH_C32(0x78560000),
+	  SPH_C32(0xb9cf0000), SPH_C32(0xaa470bb5), SPH_C32(0xe660bae0),
+	  SPH_C32(0x694f7b1c), SPH_C32(0x4009f93e), SPH_C32(0xb7280001),
+	  SPH_C32(0x05a57500), SPH_C32(0x37860000), SPH_C32(0x0f060000),
+	  SPH_C32(0x7982155e), SPH_C32(0xbcf4780a), SPH_C32(0x99872f88),
+	  SPH_C32(0xcff9b7e0) },
+	{ SPH_C32(0xd10b0003), SPH_C32(0xd727e400), SPH_C32(0xdb680000),
+	  SPH_C32(0xdc8b0000), SPH_C32(0x73be3df9), SPH_C32(0x01e6400b),
+	  SPH_C32(0x180ca989), SPH_C32(0x2b17747e), SPH_C32(0x9b6b0001),
+	  SPH_C32(0xaddd6700), SPH_C32(0x679a0000), SPH_C32(0x376b0000),
+	  SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b), SPH_C32(0x5d5c8439),
+	  SPH_C32(0x5074942a) },
+	{ SPH_C32(0x69360003), SPH_C32(0xc156e200), SPH_C32(0xecf20000),
+	  SPH_C32(0x293a0000), SPH_C32(0x513f5c55), SPH_C32(0xafaeb14e),
+	  SPH_C32(0x7e28bf9f), SPH_C32(0xeed69f40), SPH_C32(0x664e0001),
+	  SPH_C32(0x1e197600), SPH_C32(0xa96a0000), SPH_C32(0xf9920000),
+	  SPH_C32(0x7a805079), SPH_C32(0x738484f8), SPH_C32(0x2dc4349f),
+	  SPH_C32(0x4a868bcb) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0x56f20001), SPH_C32(0x79274600), SPH_C32(0xc4a40000),
+	  SPH_C32(0x522f0000), SPH_C32(0x9f3413b5), SPH_C32(0x19591a80),
+	  SPH_C32(0x2c1f56ac), SPH_C32(0x3b6a196a), SPH_C32(0x66230002),
+	  SPH_C32(0xd2829100), SPH_C32(0xecee0000), SPH_C32(0xd38d0000),
+	  SPH_C32(0x0a3c28a7), SPH_C32(0xbd123801), SPH_C32(0x818b8601),
+	  SPH_C32(0xe4eec39e) },
+	{ SPH_C32(0x9b6b0001), SPH_C32(0xaddd6700), SPH_C32(0x679a0000),
+	  SPH_C32(0x376b0000), SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b),
+	  SPH_C32(0x5d5c8439), SPH_C32(0x5074942a), SPH_C32(0x4a600002),
+	  SPH_C32(0x7afa8300), SPH_C32(0xbcf20000), SPH_C32(0xebe00000),
+	  SPH_C32(0x35731800), SPH_C32(0xff39a060), SPH_C32(0x45502db0),
+	  SPH_C32(0x7b63e054) },
+	{ SPH_C32(0x23560001), SPH_C32(0xbbac6100), SPH_C32(0x50000000),
+	  SPH_C32(0xc2da0000), SPH_C32(0x644c4455), SPH_C32(0x5097112e),
+	  SPH_C32(0x3b78922f), SPH_C32(0x95b57f14), SPH_C32(0xb7450002),
+	  SPH_C32(0xc93e9200), SPH_C32(0x72020000), SPH_C32(0x25190000),
+	  SPH_C32(0x093e6d80), SPH_C32(0x7262c4f3), SPH_C32(0x35c89d16),
+	  SPH_C32(0x6191ffb5) },
+	{ SPH_C32(0x3fa90001), SPH_C32(0x74ea4300), SPH_C32(0x6dd20000),
+	  SPH_C32(0x510a0000), SPH_C32(0xbeb7373e), SPH_C32(0x78611737),
+	  SPH_C32(0xfe785bad), SPH_C32(0x7bd4ce7f), SPH_C32(0x3fc40002),
+	  SPH_C32(0xb871a400), SPH_C32(0x28560000), SPH_C32(0x7b150000),
+	  SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce), SPH_C32(0x5237e933),
+	  SPH_C32(0xd5bc862a) },
+	{ SPH_C32(0x87940001), SPH_C32(0x629b4500), SPH_C32(0x5a480000),
+	  SPH_C32(0xa4bb0000), SPH_C32(0x9c365692), SPH_C32(0xd629e672),
+	  SPH_C32(0x985c4dbb), SPH_C32(0xbe152541), SPH_C32(0xc2e10002),
+	  SPH_C32(0x0bb5b500), SPH_C32(0xe6a60000), SPH_C32(0xb5ec0000),
+	  SPH_C32(0xf2463a60), SPH_C32(0x3baccf5d), SPH_C32(0x22af5995),
+	  SPH_C32(0xcf4e99cb) },
+	{ SPH_C32(0x4a0d0001), SPH_C32(0xb6616400), SPH_C32(0xf9760000),
+	  SPH_C32(0xc1ff0000), SPH_C32(0x45cf60de), SPH_C32(0x31af1c99),
+	  SPH_C32(0xe91f9f2e), SPH_C32(0xd50ba801), SPH_C32(0xeea20002),
+	  SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000), SPH_C32(0x8d810000),
+	  SPH_C32(0xcd090ac7), SPH_C32(0x7987573c), SPH_C32(0xe674f224),
+	  SPH_C32(0x50c3ba01) },
+	{ SPH_C32(0xf2300001), SPH_C32(0xa0106200), SPH_C32(0xceec0000),
+	  SPH_C32(0x344e0000), SPH_C32(0x674e0172), SPH_C32(0x9fe7eddc),
+	  SPH_C32(0x8f3b8938), SPH_C32(0x10ca433f), SPH_C32(0x13870002),
+	  SPH_C32(0x1009b600), SPH_C32(0x784a0000), SPH_C32(0x43780000),
+	  SPH_C32(0xf1447f47), SPH_C32(0xf4dc33af), SPH_C32(0x96ec4282),
+	  SPH_C32(0x4a31a5e0) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0x233b0002), SPH_C32(0x77378600), SPH_C32(0x15840000),
+	  SPH_C32(0xe8c50000), SPH_C32(0x14f03c8b), SPH_C32(0x9e01add7),
+	  SPH_C32(0x973720b1), SPH_C32(0x3bdd3741), SPH_C32(0x88ec0003),
+	  SPH_C32(0xbdd4d100), SPH_C32(0x1fd00000), SPH_C32(0x74130000),
+	  SPH_C32(0xb7895abe), SPH_C32(0x0a03d3c4), SPH_C32(0xcbb0c6bb),
+	  SPH_C32(0x1a4531ca) },
+	{ SPH_C32(0xeea20002), SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000),
+	  SPH_C32(0x8d810000), SPH_C32(0xcd090ac7), SPH_C32(0x7987573c),
+	  SPH_C32(0xe674f224), SPH_C32(0x50c3ba01), SPH_C32(0xa4af0003),
+	  SPH_C32(0x15acc300), SPH_C32(0x4fcc0000), SPH_C32(0x4c7e0000),
+	  SPH_C32(0x88c66a19), SPH_C32(0x48284ba5), SPH_C32(0x0f6b6d0a),
+	  SPH_C32(0x85c81200) },
+	{ SPH_C32(0x569f0002), SPH_C32(0xb5bca100), SPH_C32(0x81200000),
+	  SPH_C32(0x78300000), SPH_C32(0xef886b6b), SPH_C32(0xd7cfa679),
+	  SPH_C32(0x8050e432), SPH_C32(0x9502513f), SPH_C32(0x598a0003),
+	  SPH_C32(0xa668d200), SPH_C32(0x813c0000), SPH_C32(0x82870000),
+	  SPH_C32(0xb48b1f99), SPH_C32(0xc5732f36), SPH_C32(0x7ff3ddac),
+	  SPH_C32(0x9f3a0de1) },
+	{ SPH_C32(0x4a600002), SPH_C32(0x7afa8300), SPH_C32(0xbcf20000),
+	  SPH_C32(0xebe00000), SPH_C32(0x35731800), SPH_C32(0xff39a060),
+	  SPH_C32(0x45502db0), SPH_C32(0x7b63e054), SPH_C32(0xd10b0003),
+	  SPH_C32(0xd727e400), SPH_C32(0xdb680000), SPH_C32(0xdc8b0000),
+	  SPH_C32(0x73be3df9), SPH_C32(0x01e6400b), SPH_C32(0x180ca989),
+	  SPH_C32(0x2b17747e) },
+	{ SPH_C32(0xf25d0002), SPH_C32(0x6c8b8500), SPH_C32(0x8b680000),
+	  SPH_C32(0x1e510000), SPH_C32(0x17f279ac), SPH_C32(0x51715125),
+	  SPH_C32(0x23743ba6), SPH_C32(0xbea20b6a), SPH_C32(0x2c2e0003),
+	  SPH_C32(0x64e3f500), SPH_C32(0x15980000), SPH_C32(0x12720000),
+	  SPH_C32(0x4ff34879), SPH_C32(0x8cbd2498), SPH_C32(0x6894192f),
+	  SPH_C32(0x31e56b9f) },
+	{ SPH_C32(0x3fc40002), SPH_C32(0xb871a400), SPH_C32(0x28560000),
+	  SPH_C32(0x7b150000), SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce),
+	  SPH_C32(0x5237e933), SPH_C32(0xd5bc862a), SPH_C32(0x006d0003),
+	  SPH_C32(0xcc9be700), SPH_C32(0x45840000), SPH_C32(0x2a1f0000),
+	  SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9), SPH_C32(0xac4fb29e),
+	  SPH_C32(0xae684855) },
+	{ SPH_C32(0x87f90002), SPH_C32(0xae00a200), SPH_C32(0x1fcc0000),
+	  SPH_C32(0x8ea40000), SPH_C32(0xec8a2e4c), SPH_C32(0x18bf5a8b),
+	  SPH_C32(0x3413ff25), SPH_C32(0x107d6d14), SPH_C32(0xfd480003),
+	  SPH_C32(0x7f5ff600), SPH_C32(0x8b740000), SPH_C32(0xe4e60000),
+	  SPH_C32(0x4cf10d5e), SPH_C32(0x43cdd86a), SPH_C32(0xdcd70238),
+	  SPH_C32(0xb49a57b4) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0x4ebd0005), SPH_C32(0x2232c600), SPH_C32(0x139d0000),
+	  SPH_C32(0x7a8c0000), SPH_C32(0x03b65a57), SPH_C32(0xa4f024eb),
+	  SPH_C32(0xabe19d0f), SPH_C32(0x1254510f), SPH_C32(0x5b5a0001),
+	  SPH_C32(0xc2f39100), SPH_C32(0xd70c0000), SPH_C32(0x58220000),
+	  SPH_C32(0x06c6187d), SPH_C32(0x6691ca60), SPH_C32(0x5cf5f729),
+	  SPH_C32(0xb67c7369) },
+	{ SPH_C32(0x83240005), SPH_C32(0xf6c8e700), SPH_C32(0xb0a30000),
+	  SPH_C32(0x1fc80000), SPH_C32(0xda4f6c1b), SPH_C32(0x4376de00),
+	  SPH_C32(0xdaa24f9a), SPH_C32(0x794adc4f), SPH_C32(0x77190001),
+	  SPH_C32(0x6a8b8300), SPH_C32(0x87100000), SPH_C32(0x604f0000),
+	  SPH_C32(0x398928da), SPH_C32(0x24ba5201), SPH_C32(0x982e5c98),
+	  SPH_C32(0x29f150a3) },
+	{ SPH_C32(0x3b190005), SPH_C32(0xe0b9e100), SPH_C32(0x87390000),
+	  SPH_C32(0xea790000), SPH_C32(0xf8ce0db7), SPH_C32(0xed3e2f45),
+	  SPH_C32(0xbc86598c), SPH_C32(0xbc8b3771), SPH_C32(0x8a3c0001),
+	  SPH_C32(0xd94f9200), SPH_C32(0x49e00000), SPH_C32(0xaeb60000),
+	  SPH_C32(0x05c45d5a), SPH_C32(0xa9e13692), SPH_C32(0xe8b6ec3e),
+	  SPH_C32(0x33034f42) },
+	{ SPH_C32(0x27e60005), SPH_C32(0x2fffc300), SPH_C32(0xbaeb0000),
+	  SPH_C32(0x79a90000), SPH_C32(0x22357edc), SPH_C32(0xc5c8295c),
+	  SPH_C32(0x7986900e), SPH_C32(0x52ea861a), SPH_C32(0x02bd0001),
+	  SPH_C32(0xa800a400), SPH_C32(0x13b40000), SPH_C32(0xf0ba0000),
+	  SPH_C32(0xc2f17f3a), SPH_C32(0x6d7459af), SPH_C32(0x8f49981b),
+	  SPH_C32(0x872e36dd) },
+	{ SPH_C32(0x9fdb0005), SPH_C32(0x398ec500), SPH_C32(0x8d710000),
+	  SPH_C32(0x8c180000), SPH_C32(0x00b41f70), SPH_C32(0x6b80d819),
+	  SPH_C32(0x1fa28618), SPH_C32(0x972b6d24), SPH_C32(0xff980001),
+	  SPH_C32(0x1bc4b500), SPH_C32(0xdd440000), SPH_C32(0x3e430000),
+	  SPH_C32(0xfebc0aba), SPH_C32(0xe02f3d3c), SPH_C32(0xffd128bd),
+	  SPH_C32(0x9ddc293c) },
+	{ SPH_C32(0x52420005), SPH_C32(0xed74e400), SPH_C32(0x2e4f0000),
+	  SPH_C32(0xe95c0000), SPH_C32(0xd94d293c), SPH_C32(0x8c0622f2),
+	  SPH_C32(0x6ee1548d), SPH_C32(0xfc35e064), SPH_C32(0xd3db0001),
+	  SPH_C32(0xb3bca700), SPH_C32(0x8d580000), SPH_C32(0x062e0000),
+	  SPH_C32(0xc1f33a1d), SPH_C32(0xa204a55d), SPH_C32(0x3b0a830c),
+	  SPH_C32(0x02510af6) },
+	{ SPH_C32(0xea7f0005), SPH_C32(0xfb05e200), SPH_C32(0x19d50000),
+	  SPH_C32(0x1ced0000), SPH_C32(0xfbcc4890), SPH_C32(0x224ed3b7),
+	  SPH_C32(0x08c5429b), SPH_C32(0x39f40b5a), SPH_C32(0x2efe0001),
+	  SPH_C32(0x0078b600), SPH_C32(0x43a80000), SPH_C32(0xc8d70000),
+	  SPH_C32(0xfdbe4f9d), SPH_C32(0x2f5fc1ce), SPH_C32(0x4b9233aa),
+	  SPH_C32(0x18a31517) },
+	{ SPH_C32(0x83490006), SPH_C32(0x3a530000), SPH_C32(0xf5270000),
+	  SPH_C32(0x35d70000), SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9),
+	  SPH_C32(0x76edfd04), SPH_C32(0xd722941a), SPH_C32(0x48b00000),
+	  SPH_C32(0x1e61c000), SPH_C32(0xeac20000), SPH_C32(0x31450000),
+	  SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536), SPH_C32(0x66560735),
+	  SPH_C32(0x52259edc) },
+	{ SPH_C32(0x3b740006), SPH_C32(0x2c220600), SPH_C32(0xc2bd0000),
+	  SPH_C32(0xc0660000), SPH_C32(0x88727569), SPH_C32(0x23a893bc),
+	  SPH_C32(0x10c9eb12), SPH_C32(0x12e37f24), SPH_C32(0xb5950000),
+	  SPH_C32(0xada5d100), SPH_C32(0x24320000), SPH_C32(0xffbc0000),
+	  SPH_C32(0xbb736a64), SPH_C32(0xd18021a5), SPH_C32(0x16ceb793),
+	  SPH_C32(0x48d7813d) },
+	{ SPH_C32(0xf6ed0006), SPH_C32(0xf8d82700), SPH_C32(0x61830000),
+	  SPH_C32(0xa5220000), SPH_C32(0x518b4325), SPH_C32(0xc42e6957),
+	  SPH_C32(0x618a3987), SPH_C32(0x79fdf264), SPH_C32(0x99d60000),
+	  SPH_C32(0x05ddc300), SPH_C32(0x742e0000), SPH_C32(0xc7d10000),
+	  SPH_C32(0x843c5ac3), SPH_C32(0x93abb9c4), SPH_C32(0xd2151c22),
+	  SPH_C32(0xd75aa2f7) },
+	{ SPH_C32(0x4ed00006), SPH_C32(0xeea92100), SPH_C32(0x56190000),
+	  SPH_C32(0x50930000), SPH_C32(0x730a2289), SPH_C32(0x6a669812),
+	  SPH_C32(0x07ae2f91), SPH_C32(0xbc3c195a), SPH_C32(0x64f30000),
+	  SPH_C32(0xb619d200), SPH_C32(0xbade0000), SPH_C32(0x09280000),
+	  SPH_C32(0xb8712f43), SPH_C32(0x1ef0dd57), SPH_C32(0xa28dac84),
+	  SPH_C32(0xcda8bd16) },
+	{ SPH_C32(0x522f0006), SPH_C32(0x21ef0300), SPH_C32(0x6bcb0000),
+	  SPH_C32(0xc3430000), SPH_C32(0xa9f151e2), SPH_C32(0x42909e0b),
+	  SPH_C32(0xc2aee613), SPH_C32(0x525da831), SPH_C32(0xec720000),
+	  SPH_C32(0xc756e400), SPH_C32(0xe08a0000), SPH_C32(0x57240000),
+	  SPH_C32(0x7f440d23), SPH_C32(0xda65b26a), SPH_C32(0xc572d8a1),
+	  SPH_C32(0x7985c489) },
+	{ SPH_C32(0xea120006), SPH_C32(0x379e0500), SPH_C32(0x5c510000),
+	  SPH_C32(0x36f20000), SPH_C32(0x8b70304e), SPH_C32(0xecd86f4e),
+	  SPH_C32(0xa48af005), SPH_C32(0x979c430f), SPH_C32(0x11570000),
+	  SPH_C32(0x7492f500), SPH_C32(0x2e7a0000), SPH_C32(0x99dd0000),
+	  SPH_C32(0x430978a3), SPH_C32(0x573ed6f9), SPH_C32(0xb5ea6807),
+	  SPH_C32(0x6377db68) },
+	{ SPH_C32(0x278b0006), SPH_C32(0xe3642400), SPH_C32(0xff6f0000),
+	  SPH_C32(0x53b60000), SPH_C32(0x52890602), SPH_C32(0x0b5e95a5),
+	  SPH_C32(0xd5c92290), SPH_C32(0xfc82ce4f), SPH_C32(0x3d140000),
+	  SPH_C32(0xdceae700), SPH_C32(0x7e660000), SPH_C32(0xa1b00000),
+	  SPH_C32(0x7c464804), SPH_C32(0x15154e98), SPH_C32(0x7131c3b6),
+	  SPH_C32(0xfcfaf8a2) },
+	{ SPH_C32(0x9fb60006), SPH_C32(0xf5152200), SPH_C32(0xc8f50000),
+	  SPH_C32(0xa6070000), SPH_C32(0x700867ae), SPH_C32(0xa51664e0),
+	  SPH_C32(0xb3ed3486), SPH_C32(0x39432571), SPH_C32(0xc0310000),
+	  SPH_C32(0x6f2ef600), SPH_C32(0xb0960000), SPH_C32(0x6f490000),
+	  SPH_C32(0x400b3d84), SPH_C32(0x984e2a0b), SPH_C32(0x01a97310),
+	  SPH_C32(0xe608e743) },
+	{ SPH_C32(0x184f0004), SPH_C32(0x5b158000), SPH_C32(0xd7390000),
+	  SPH_C32(0x28a30000), SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b),
+	  SPH_C32(0x87fecba3), SPH_C32(0x293e4865), SPH_C32(0x3d790003),
+	  SPH_C32(0x10710000), SPH_C32(0x3be20000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261), SPH_C32(0xdd7e7128),
+	  SPH_C32(0x5292b0f7) },
+	{ SPH_C32(0xa0720004), SPH_C32(0x4d648600), SPH_C32(0xe0a30000),
+	  SPH_C32(0xdd120000), SPH_C32(0xbe03284e), SPH_C32(0x13e1cf2e),
+	  SPH_C32(0xe1daddb5), SPH_C32(0xecffa35b), SPH_C32(0xc05c0003),
+	  SPH_C32(0xa3b51100), SPH_C32(0xf5120000), SPH_C32(0x45560000),
+	  SPH_C32(0x30b7455a), SPH_C32(0x56d896f2), SPH_C32(0xade6c18e),
+	  SPH_C32(0x4860af16) },
+	{ SPH_C32(0x6deb0004), SPH_C32(0x999ea700), SPH_C32(0x439d0000),
+	  SPH_C32(0xb8560000), SPH_C32(0x67fa1e02), SPH_C32(0xf46735c5),
+	  SPH_C32(0x90990f20), SPH_C32(0x87e12e1b), SPH_C32(0xec1f0003),
+	  SPH_C32(0x0bcd0300), SPH_C32(0xa50e0000), SPH_C32(0x7d3b0000),
+	  SPH_C32(0x0ff875fd), SPH_C32(0x14f30e93), SPH_C32(0x693d6a3f),
+	  SPH_C32(0xd7ed8cdc) },
+	{ SPH_C32(0xd5d60004), SPH_C32(0x8fefa100), SPH_C32(0x74070000),
+	  SPH_C32(0x4de70000), SPH_C32(0x457b7fae), SPH_C32(0x5a2fc480),
+	  SPH_C32(0xf6bd1936), SPH_C32(0x4220c525), SPH_C32(0x113a0003),
+	  SPH_C32(0xb8091200), SPH_C32(0x6bfe0000), SPH_C32(0xb3c20000),
+	  SPH_C32(0x33b5007d), SPH_C32(0x99a86a00), SPH_C32(0x19a5da99),
+	  SPH_C32(0xcd1f933d) },
+	{ SPH_C32(0xc9290004), SPH_C32(0x40a98300), SPH_C32(0x49d50000),
+	  SPH_C32(0xde370000), SPH_C32(0x9f800cc5), SPH_C32(0x72d9c299),
+	  SPH_C32(0x33bdd0b4), SPH_C32(0xac41744e), SPH_C32(0x99bb0003),
+	  SPH_C32(0xc9462400), SPH_C32(0x31aa0000), SPH_C32(0xedce0000),
+	  SPH_C32(0xf480221d), SPH_C32(0x5d3d053d), SPH_C32(0x7e5aaebc),
+	  SPH_C32(0x7932eaa2) },
+	{ SPH_C32(0x71140004), SPH_C32(0x56d88500), SPH_C32(0x7e4f0000),
+	  SPH_C32(0x2b860000), SPH_C32(0xbd016d69), SPH_C32(0xdc9133dc),
+	  SPH_C32(0x5599c6a2), SPH_C32(0x69809f70), SPH_C32(0x649e0003),
+	  SPH_C32(0x7a823500), SPH_C32(0xff5a0000), SPH_C32(0x23370000),
+	  SPH_C32(0xc8cd579d), SPH_C32(0xd06661ae), SPH_C32(0x0ec21e1a),
+	  SPH_C32(0x63c0f543) },
+	{ SPH_C32(0xbc8d0004), SPH_C32(0x8222a400), SPH_C32(0xdd710000),
+	  SPH_C32(0x4ec20000), SPH_C32(0x64f85b25), SPH_C32(0x3b17c937),
+	  SPH_C32(0x24da1437), SPH_C32(0x029e1230), SPH_C32(0x48dd0003),
+	  SPH_C32(0xd2fa2700), SPH_C32(0xaf460000), SPH_C32(0x1b5a0000),
+	  SPH_C32(0xf782673a), SPH_C32(0x924df9cf), SPH_C32(0xca19b5ab),
+	  SPH_C32(0xfc4dd689) },
+	{ SPH_C32(0x04b00004), SPH_C32(0x9453a200), SPH_C32(0xeaeb0000),
+	  SPH_C32(0xbb730000), SPH_C32(0x46793a89), SPH_C32(0x955f3872),
+	  SPH_C32(0x42fe0221), SPH_C32(0xc75ff90e), SPH_C32(0xb5f80003),
+	  SPH_C32(0x613e3600), SPH_C32(0x61b60000), SPH_C32(0xd5a30000),
+	  SPH_C32(0xcbcf12ba), SPH_C32(0x1f169d5c), SPH_C32(0xba81050d),
+	  SPH_C32(0xe6bfc968) },
+	{ SPH_C32(0x6d860007), SPH_C32(0x55054000), SPH_C32(0x06190000),
+	  SPH_C32(0x92490000), SPH_C32(0x174666dc), SPH_C32(0x3af1893c),
+	  SPH_C32(0x3cd6bdbe), SPH_C32(0x2989664e), SPH_C32(0xd3b60002),
+	  SPH_C32(0x7f274000), SPH_C32(0xc8dc0000), SPH_C32(0x2c310000),
+	  SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4), SPH_C32(0x97453192),
+	  SPH_C32(0xac3942a3) },
+	{ SPH_C32(0xd5bb0007), SPH_C32(0x43744600), SPH_C32(0x31830000),
+	  SPH_C32(0x67f80000), SPH_C32(0x35c70770), SPH_C32(0x94b97879),
+	  SPH_C32(0x5af2aba8), SPH_C32(0xec488d70), SPH_C32(0x2e930002),
+	  SPH_C32(0xcce35100), SPH_C32(0x062c0000), SPH_C32(0xe2c80000),
+	  SPH_C32(0x8d023743), SPH_C32(0xe1c97d37), SPH_C32(0xe7dd8134),
+	  SPH_C32(0xb6cb5d42) },
+	{ SPH_C32(0x18220007), SPH_C32(0x978e6700), SPH_C32(0x92bd0000),
+	  SPH_C32(0x02bc0000), SPH_C32(0xec3e313c), SPH_C32(0x733f8292),
+	  SPH_C32(0x2bb1793d), SPH_C32(0x87560030), SPH_C32(0x02d00002),
+	  SPH_C32(0x649b4300), SPH_C32(0x56300000), SPH_C32(0xdaa50000),
+	  SPH_C32(0xb24d07e4), SPH_C32(0xa3e2e556), SPH_C32(0x23062a85),
+	  SPH_C32(0x29467e88) },
+	{ SPH_C32(0xa01f0007), SPH_C32(0x81ff6100), SPH_C32(0xa5270000),
+	  SPH_C32(0xf70d0000), SPH_C32(0xcebf5090), SPH_C32(0xdd7773d7),
+	  SPH_C32(0x4d956f2b), SPH_C32(0x4297eb0e), SPH_C32(0xfff50002),
+	  SPH_C32(0xd75f5200), SPH_C32(0x98c00000), SPH_C32(0x145c0000),
+	  SPH_C32(0x8e007264), SPH_C32(0x2eb981c5), SPH_C32(0x539e9a23),
+	  SPH_C32(0x33b46169) },
+	{ SPH_C32(0xbce00007), SPH_C32(0x4eb94300), SPH_C32(0x98f50000),
+	  SPH_C32(0x64dd0000), SPH_C32(0x144423fb), SPH_C32(0xf58175ce),
+	  SPH_C32(0x8895a6a9), SPH_C32(0xacf65a65), SPH_C32(0x77740002),
+	  SPH_C32(0xa6106400), SPH_C32(0xc2940000), SPH_C32(0x4a500000),
+	  SPH_C32(0x49355004), SPH_C32(0xea2ceef8), SPH_C32(0x3461ee06),
+	  SPH_C32(0x879918f6) },
+	{ SPH_C32(0x04dd0007), SPH_C32(0x58c84500), SPH_C32(0xaf6f0000),
+	  SPH_C32(0x916c0000), SPH_C32(0x36c54257), SPH_C32(0x5bc9848b),
+	  SPH_C32(0xeeb1b0bf), SPH_C32(0x6937b15b), SPH_C32(0x8a510002),
+	  SPH_C32(0x15d47500), SPH_C32(0x0c640000), SPH_C32(0x84a90000),
+	  SPH_C32(0x75782584), SPH_C32(0x67778a6b), SPH_C32(0x44f95ea0),
+	  SPH_C32(0x9d6b0717) },
+	{ SPH_C32(0xc9440007), SPH_C32(0x8c326400), SPH_C32(0x0c510000),
+	  SPH_C32(0xf4280000), SPH_C32(0xef3c741b), SPH_C32(0xbc4f7e60),
+	  SPH_C32(0x9ff2622a), SPH_C32(0x02293c1b), SPH_C32(0xa6120002),
+	  SPH_C32(0xbdac6700), SPH_C32(0x5c780000), SPH_C32(0xbcc40000),
+	  SPH_C32(0x4a371523), SPH_C32(0x255c120a), SPH_C32(0x8022f511),
+	  SPH_C32(0x02e624dd) },
+	{ SPH_C32(0x71790007), SPH_C32(0x9a436200), SPH_C32(0x3bcb0000),
+	  SPH_C32(0x01990000), SPH_C32(0xcdbd15b7), SPH_C32(0x12078f25),
+	  SPH_C32(0xf9d6743c), SPH_C32(0xc7e8d725), SPH_C32(0x5b370002),
+	  SPH_C32(0x0e687600), SPH_C32(0x92880000), SPH_C32(0x723d0000),
+	  SPH_C32(0x767a60a3), SPH_C32(0xa8077699), SPH_C32(0xf0ba45b7),
+	  SPH_C32(0x18143b3c) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0x1e420001), SPH_C32(0x67468600), SPH_C32(0x2e660000),
+	  SPH_C32(0x636a0000), SPH_C32(0x180a0c51), SPH_C32(0x45825fb6),
+	  SPH_C32(0x4a495199), SPH_C32(0x694f87b6), SPH_C32(0xadda0004),
+	  SPH_C32(0xf6b05100), SPH_C32(0xf30b0000), SPH_C32(0xd71f0000),
+	  SPH_C32(0x27f12386), SPH_C32(0x6c291fce), SPH_C32(0x91307c30),
+	  SPH_C32(0x61e9c958) },
+	{ SPH_C32(0xd3db0001), SPH_C32(0xb3bca700), SPH_C32(0x8d580000),
+	  SPH_C32(0x062e0000), SPH_C32(0xc1f33a1d), SPH_C32(0xa204a55d),
+	  SPH_C32(0x3b0a830c), SPH_C32(0x02510af6), SPH_C32(0x81990004),
+	  SPH_C32(0x5ec84300), SPH_C32(0xa3170000), SPH_C32(0xef720000),
+	  SPH_C32(0x18be1321), SPH_C32(0x2e0287af), SPH_C32(0x55ebd781),
+	  SPH_C32(0xfe64ea92) },
+	{ SPH_C32(0x6be60001), SPH_C32(0xa5cda100), SPH_C32(0xbac20000),
+	  SPH_C32(0xf39f0000), SPH_C32(0xe3725bb1), SPH_C32(0x0c4c5418),
+	  SPH_C32(0x5d2e951a), SPH_C32(0xc790e1c8), SPH_C32(0x7cbc0004),
+	  SPH_C32(0xed0c5200), SPH_C32(0x6de70000), SPH_C32(0x218b0000),
+	  SPH_C32(0x24f366a1), SPH_C32(0xa359e33c), SPH_C32(0x25736727),
+	  SPH_C32(0xe496f573) },
+	{ SPH_C32(0x77190001), SPH_C32(0x6a8b8300), SPH_C32(0x87100000),
+	  SPH_C32(0x604f0000), SPH_C32(0x398928da), SPH_C32(0x24ba5201),
+	  SPH_C32(0x982e5c98), SPH_C32(0x29f150a3), SPH_C32(0xf43d0004),
+	  SPH_C32(0x9c436400), SPH_C32(0x37b30000), SPH_C32(0x7f870000),
+	  SPH_C32(0xe3c644c1), SPH_C32(0x67cc8c01), SPH_C32(0x428c1302),
+	  SPH_C32(0x50bb8cec) },
+	{ SPH_C32(0xcf240001), SPH_C32(0x7cfa8500), SPH_C32(0xb08a0000),
+	  SPH_C32(0x95fe0000), SPH_C32(0x1b084976), SPH_C32(0x8af2a344),
+	  SPH_C32(0xfe0a4a8e), SPH_C32(0xec30bb9d), SPH_C32(0x09180004),
+	  SPH_C32(0x2f877500), SPH_C32(0xf9430000), SPH_C32(0xb17e0000),
+	  SPH_C32(0xdf8b3141), SPH_C32(0xea97e892), SPH_C32(0x3214a3a4),
+	  SPH_C32(0x4a49930d) },
+	{ SPH_C32(0x02bd0001), SPH_C32(0xa800a400), SPH_C32(0x13b40000),
+	  SPH_C32(0xf0ba0000), SPH_C32(0xc2f17f3a), SPH_C32(0x6d7459af),
+	  SPH_C32(0x8f49981b), SPH_C32(0x872e36dd), SPH_C32(0x255b0004),
+	  SPH_C32(0x87ff6700), SPH_C32(0xa95f0000), SPH_C32(0x89130000),
+	  SPH_C32(0xe0c401e6), SPH_C32(0xa8bc70f3), SPH_C32(0xf6cf0815),
+	  SPH_C32(0xd5c4b0c7) },
+	{ SPH_C32(0xba800001), SPH_C32(0xbe71a200), SPH_C32(0x242e0000),
+	  SPH_C32(0x050b0000), SPH_C32(0xe0701e96), SPH_C32(0xc33ca8ea),
+	  SPH_C32(0xe96d8e0d), SPH_C32(0x42efdde3), SPH_C32(0xd87e0004),
+	  SPH_C32(0x343b7600), SPH_C32(0x67af0000), SPH_C32(0x47ea0000),
+	  SPH_C32(0xdc897466), SPH_C32(0x25e71460), SPH_C32(0x8657b8b3),
+	  SPH_C32(0xcf36af26) },
+	{ SPH_C32(0xd3b60002), SPH_C32(0x7f274000), SPH_C32(0xc8dc0000),
+	  SPH_C32(0x2c310000), SPH_C32(0xb14f42c3), SPH_C32(0x6c9219a4),
+	  SPH_C32(0x97453192), SPH_C32(0xac3942a3), SPH_C32(0xbe300005),
+	  SPH_C32(0x2a220000), SPH_C32(0xcec50000), SPH_C32(0xbe780000),
+	  SPH_C32(0xa609241f), SPH_C32(0x56639098), SPH_C32(0xab938c2c),
+	  SPH_C32(0x85b024ed) },
+	{ SPH_C32(0x6b8b0002), SPH_C32(0x69564600), SPH_C32(0xff460000),
+	  SPH_C32(0xd9800000), SPH_C32(0x93ce236f), SPH_C32(0xc2dae8e1),
+	  SPH_C32(0xf1612784), SPH_C32(0x69f8a99d), SPH_C32(0x43150005),
+	  SPH_C32(0x99e61100), SPH_C32(0x00350000), SPH_C32(0x70810000),
+	  SPH_C32(0x9a44519f), SPH_C32(0xdb38f40b), SPH_C32(0xdb0b3c8a),
+	  SPH_C32(0x9f423b0c) },
+	{ SPH_C32(0xa6120002), SPH_C32(0xbdac6700), SPH_C32(0x5c780000),
+	  SPH_C32(0xbcc40000), SPH_C32(0x4a371523), SPH_C32(0x255c120a),
+	  SPH_C32(0x8022f511), SPH_C32(0x02e624dd), SPH_C32(0x6f560005),
+	  SPH_C32(0x319e0300), SPH_C32(0x50290000), SPH_C32(0x48ec0000),
+	  SPH_C32(0xa50b6138), SPH_C32(0x99136c6a), SPH_C32(0x1fd0973b),
+	  SPH_C32(0x00cf18c6) },
+	{ SPH_C32(0x1e2f0002), SPH_C32(0xabdd6100), SPH_C32(0x6be20000),
+	  SPH_C32(0x49750000), SPH_C32(0x68b6748f), SPH_C32(0x8b14e34f),
+	  SPH_C32(0xe606e307), SPH_C32(0xc727cfe3), SPH_C32(0x92730005),
+	  SPH_C32(0x825a1200), SPH_C32(0x9ed90000), SPH_C32(0x86150000),
+	  SPH_C32(0x994614b8), SPH_C32(0x144808f9), SPH_C32(0x6f48279d),
+	  SPH_C32(0x1a3d0727) },
+	{ SPH_C32(0x02d00002), SPH_C32(0x649b4300), SPH_C32(0x56300000),
+	  SPH_C32(0xdaa50000), SPH_C32(0xb24d07e4), SPH_C32(0xa3e2e556),
+	  SPH_C32(0x23062a85), SPH_C32(0x29467e88), SPH_C32(0x1af20005),
+	  SPH_C32(0xf3152400), SPH_C32(0xc48d0000), SPH_C32(0xd8190000),
+	  SPH_C32(0x5e7336d8), SPH_C32(0xd0dd67c4), SPH_C32(0x08b753b8),
+	  SPH_C32(0xae107eb8) },
+	{ SPH_C32(0xbaed0002), SPH_C32(0x72ea4500), SPH_C32(0x61aa0000),
+	  SPH_C32(0x2f140000), SPH_C32(0x90cc6648), SPH_C32(0x0daa1413),
+	  SPH_C32(0x45223c93), SPH_C32(0xec8795b6), SPH_C32(0xe7d70005),
+	  SPH_C32(0x40d13500), SPH_C32(0x0a7d0000), SPH_C32(0x16e00000),
+	  SPH_C32(0x623e4358), SPH_C32(0x5d860357), SPH_C32(0x782fe31e),
+	  SPH_C32(0xb4e26159) },
+	{ SPH_C32(0x77740002), SPH_C32(0xa6106400), SPH_C32(0xc2940000),
+	  SPH_C32(0x4a500000), SPH_C32(0x49355004), SPH_C32(0xea2ceef8),
+	  SPH_C32(0x3461ee06), SPH_C32(0x879918f6), SPH_C32(0xcb940005),
+	  SPH_C32(0xe8a92700), SPH_C32(0x5a610000), SPH_C32(0x2e8d0000),
+	  SPH_C32(0x5d7173ff), SPH_C32(0x1fad9b36), SPH_C32(0xbcf448af),
+	  SPH_C32(0x2b6f4293) },
+	{ SPH_C32(0xcf490002), SPH_C32(0xb0616200), SPH_C32(0xf50e0000),
+	  SPH_C32(0xbfe10000), SPH_C32(0x6bb431a8), SPH_C32(0x44641fbd),
+	  SPH_C32(0x5245f810), SPH_C32(0x4258f3c8), SPH_C32(0x36b10005),
+	  SPH_C32(0x5b6d3600), SPH_C32(0x94910000), SPH_C32(0xe0740000),
+	  SPH_C32(0x613c067f), SPH_C32(0x92f6ffa5), SPH_C32(0xcc6cf809),
+	  SPH_C32(0x319d5d72) },
+	{ SPH_C32(0x48b00000), SPH_C32(0x1e61c000), SPH_C32(0xeac20000),
+	  SPH_C32(0x31450000), SPH_C32(0x873e1fe4), SPH_C32(0x5cdb4536),
+	  SPH_C32(0x66560735), SPH_C32(0x52259edc), SPH_C32(0xcbf90006),
+	  SPH_C32(0x2432c000), SPH_C32(0x1fe50000), SPH_C32(0x04920000),
+	  SPH_C32(0x2dcd0b21), SPH_C32(0xd13b27cf), SPH_C32(0x10bbfa31),
+	  SPH_C32(0x85070ac6) },
+	{ SPH_C32(0xf08d0000), SPH_C32(0x0810c600), SPH_C32(0xdd580000),
+	  SPH_C32(0xc4f40000), SPH_C32(0xa5bf7e48), SPH_C32(0xf293b473),
+	  SPH_C32(0x00721123), SPH_C32(0x97e475e2), SPH_C32(0x36dc0006),
+	  SPH_C32(0x97f6d100), SPH_C32(0xd1150000), SPH_C32(0xca6b0000),
+	  SPH_C32(0x11807ea1), SPH_C32(0x5c60435c), SPH_C32(0x60234a97),
+	  SPH_C32(0x9ff51527) },
+	{ SPH_C32(0x3d140000), SPH_C32(0xdceae700), SPH_C32(0x7e660000),
+	  SPH_C32(0xa1b00000), SPH_C32(0x7c464804), SPH_C32(0x15154e98),
+	  SPH_C32(0x7131c3b6), SPH_C32(0xfcfaf8a2), SPH_C32(0x1a9f0006),
+	  SPH_C32(0x3f8ec300), SPH_C32(0x81090000), SPH_C32(0xf2060000),
+	  SPH_C32(0x2ecf4e06), SPH_C32(0x1e4bdb3d), SPH_C32(0xa4f8e126),
+	  SPH_C32(0x007836ed) },
+	{ SPH_C32(0x85290000), SPH_C32(0xca9be100), SPH_C32(0x49fc0000),
+	  SPH_C32(0x54010000), SPH_C32(0x5ec729a8), SPH_C32(0xbb5dbfdd),
+	  SPH_C32(0x1715d5a0), SPH_C32(0x393b139c), SPH_C32(0xe7ba0006),
+	  SPH_C32(0x8c4ad200), SPH_C32(0x4ff90000), SPH_C32(0x3cff0000),
+	  SPH_C32(0x12823b86), SPH_C32(0x9310bfae), SPH_C32(0xd4605180),
+	  SPH_C32(0x1a8a290c) },
+	{ SPH_C32(0x99d60000), SPH_C32(0x05ddc300), SPH_C32(0x742e0000),
+	  SPH_C32(0xc7d10000), SPH_C32(0x843c5ac3), SPH_C32(0x93abb9c4),
+	  SPH_C32(0xd2151c22), SPH_C32(0xd75aa2f7), SPH_C32(0x6f3b0006),
+	  SPH_C32(0xfd05e400), SPH_C32(0x15ad0000), SPH_C32(0x62f30000),
+	  SPH_C32(0xd5b719e6), SPH_C32(0x5785d093), SPH_C32(0xb39f25a5),
+	  SPH_C32(0xaea75093) },
+	{ SPH_C32(0x21eb0000), SPH_C32(0x13acc500), SPH_C32(0x43b40000),
+	  SPH_C32(0x32600000), SPH_C32(0xa6bd3b6f), SPH_C32(0x3de34881),
+	  SPH_C32(0xb4310a34), SPH_C32(0x129b49c9), SPH_C32(0x921e0006),
+	  SPH_C32(0x4ec1f500), SPH_C32(0xdb5d0000), SPH_C32(0xac0a0000),
+	  SPH_C32(0xe9fa6c66), SPH_C32(0xdadeb400), SPH_C32(0xc3079503),
+	  SPH_C32(0xb4554f72) },
+	{ SPH_C32(0xec720000), SPH_C32(0xc756e400), SPH_C32(0xe08a0000),
+	  SPH_C32(0x57240000), SPH_C32(0x7f440d23), SPH_C32(0xda65b26a),
+	  SPH_C32(0xc572d8a1), SPH_C32(0x7985c489), SPH_C32(0xbe5d0006),
+	  SPH_C32(0xe6b9e700), SPH_C32(0x8b410000), SPH_C32(0x94670000),
+	  SPH_C32(0xd6b55cc1), SPH_C32(0x98f52c61), SPH_C32(0x07dc3eb2),
+	  SPH_C32(0x2bd86cb8) },
+	{ SPH_C32(0x544f0000), SPH_C32(0xd127e200), SPH_C32(0xd7100000),
+	  SPH_C32(0xa2950000), SPH_C32(0x5dc56c8f), SPH_C32(0x742d432f),
+	  SPH_C32(0xa356ceb7), SPH_C32(0xbc442fb7), SPH_C32(0x43780006),
+	  SPH_C32(0x557df600), SPH_C32(0x45b10000), SPH_C32(0x5a9e0000),
+	  SPH_C32(0xeaf82941), SPH_C32(0x15ae48f2), SPH_C32(0x77448e14),
+	  SPH_C32(0x312a7359) },
+	{ SPH_C32(0x3d790003), SPH_C32(0x10710000), SPH_C32(0x3be20000),
+	  SPH_C32(0x8baf0000), SPH_C32(0x0cfa30da), SPH_C32(0xdb83f261),
+	  SPH_C32(0xdd7e7128), SPH_C32(0x5292b0f7), SPH_C32(0x25360007),
+	  SPH_C32(0x4b648000), SPH_C32(0xecdb0000), SPH_C32(0xa30c0000),
+	  SPH_C32(0x90787938), SPH_C32(0x662acc0a), SPH_C32(0x5a80ba8b),
+	  SPH_C32(0x7bacf892) },
+	{ SPH_C32(0x85440003), SPH_C32(0x06000600), SPH_C32(0x0c780000),
+	  SPH_C32(0x7e1e0000), SPH_C32(0x2e7b5176), SPH_C32(0x75cb0324),
+	  SPH_C32(0xbb5a673e), SPH_C32(0x97535bc9), SPH_C32(0xd8130007),
+	  SPH_C32(0xf8a09100), SPH_C32(0x222b0000), SPH_C32(0x6df50000),
+	  SPH_C32(0xac350cb8), SPH_C32(0xeb71a899), SPH_C32(0x2a180a2d),
+	  SPH_C32(0x615ee773) },
+	{ SPH_C32(0x48dd0003), SPH_C32(0xd2fa2700), SPH_C32(0xaf460000),
+	  SPH_C32(0x1b5a0000), SPH_C32(0xf782673a), SPH_C32(0x924df9cf),
+	  SPH_C32(0xca19b5ab), SPH_C32(0xfc4dd689), SPH_C32(0xf4500007),
+	  SPH_C32(0x50d88300), SPH_C32(0x72370000), SPH_C32(0x55980000),
+	  SPH_C32(0x937a3c1f), SPH_C32(0xa95a30f8), SPH_C32(0xeec3a19c),
+	  SPH_C32(0xfed3c4b9) },
+	{ SPH_C32(0xf0e00003), SPH_C32(0xc48b2100), SPH_C32(0x98dc0000),
+	  SPH_C32(0xeeeb0000), SPH_C32(0xd5030696), SPH_C32(0x3c05088a),
+	  SPH_C32(0xac3da3bd), SPH_C32(0x398c3db7), SPH_C32(0x09750007),
+	  SPH_C32(0xe31c9200), SPH_C32(0xbcc70000), SPH_C32(0x9b610000),
+	  SPH_C32(0xaf37499f), SPH_C32(0x2401546b), SPH_C32(0x9e5b113a),
+	  SPH_C32(0xe421db58) },
+	{ SPH_C32(0xec1f0003), SPH_C32(0x0bcd0300), SPH_C32(0xa50e0000),
+	  SPH_C32(0x7d3b0000), SPH_C32(0x0ff875fd), SPH_C32(0x14f30e93),
+	  SPH_C32(0x693d6a3f), SPH_C32(0xd7ed8cdc), SPH_C32(0x81f40007),
+	  SPH_C32(0x9253a400), SPH_C32(0xe6930000), SPH_C32(0xc56d0000),
+	  SPH_C32(0x68026bff), SPH_C32(0xe0943b56), SPH_C32(0xf9a4651f),
+	  SPH_C32(0x500ca2c7) },
+	{ SPH_C32(0x54220003), SPH_C32(0x1dbc0500), SPH_C32(0x92940000),
+	  SPH_C32(0x888a0000), SPH_C32(0x2d791451), SPH_C32(0xbabbffd6),
+	  SPH_C32(0x0f197c29), SPH_C32(0x122c67e2), SPH_C32(0x7cd10007),
+	  SPH_C32(0x2197b500), SPH_C32(0x28630000), SPH_C32(0x0b940000),
+	  SPH_C32(0x544f1e7f), SPH_C32(0x6dcf5fc5), SPH_C32(0x893cd5b9),
+	  SPH_C32(0x4afebd26) },
+	{ SPH_C32(0x99bb0003), SPH_C32(0xc9462400), SPH_C32(0x31aa0000),
+	  SPH_C32(0xedce0000), SPH_C32(0xf480221d), SPH_C32(0x5d3d053d),
+	  SPH_C32(0x7e5aaebc), SPH_C32(0x7932eaa2), SPH_C32(0x50920007),
+	  SPH_C32(0x89efa700), SPH_C32(0x787f0000), SPH_C32(0x33f90000),
+	  SPH_C32(0x6b002ed8), SPH_C32(0x2fe4c7a4), SPH_C32(0x4de77e08),
+	  SPH_C32(0xd5739eec) },
+	{ SPH_C32(0x21860003), SPH_C32(0xdf372200), SPH_C32(0x06300000),
+	  SPH_C32(0x187f0000), SPH_C32(0xd60143b1), SPH_C32(0xf375f478),
+	  SPH_C32(0x187eb8aa), SPH_C32(0xbcf3019c), SPH_C32(0xadb70007),
+	  SPH_C32(0x3a2bb600), SPH_C32(0xb68f0000), SPH_C32(0xfd000000),
+	  SPH_C32(0x574d5b58), SPH_C32(0xa2bfa337), SPH_C32(0x3d7fceae),
+	  SPH_C32(0xcf81810d) },
+	{ SPH_C32(0x50ff0004), SPH_C32(0x45744000), SPH_C32(0x3dfb0000),
+	  SPH_C32(0x19e60000), SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d),
+	  SPH_C32(0xe1a8cc96), SPH_C32(0x7b1bd6b9), SPH_C32(0xf6800005),
+	  SPH_C32(0x3443c000), SPH_C32(0x24070000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae), SPH_C32(0xcdc58b19),
+	  SPH_C32(0xd795ba31) },
+	{ SPH_C32(0xe8c20004), SPH_C32(0x53054600), SPH_C32(0x0a610000),
+	  SPH_C32(0xec570000), SPH_C32(0x393d37aa), SPH_C32(0x4f3a8a18),
+	  SPH_C32(0x878cda80), SPH_C32(0xbeda3d87), SPH_C32(0x0ba50005),
+	  SPH_C32(0x8787d100), SPH_C32(0xeaf70000), SPH_C32(0x41c40000),
+	  SPH_C32(0x1d7a4e7b), SPH_C32(0x87e3b13d), SPH_C32(0xbd5d3bbf),
+	  SPH_C32(0xcd67a5d0) },
+	{ SPH_C32(0x255b0004), SPH_C32(0x87ff6700), SPH_C32(0xa95f0000),
+	  SPH_C32(0x89130000), SPH_C32(0xe0c401e6), SPH_C32(0xa8bc70f3),
+	  SPH_C32(0xf6cf0815), SPH_C32(0xd5c4b0c7), SPH_C32(0x27e60005),
+	  SPH_C32(0x2fffc300), SPH_C32(0xbaeb0000), SPH_C32(0x79a90000),
+	  SPH_C32(0x22357edc), SPH_C32(0xc5c8295c), SPH_C32(0x7986900e),
+	  SPH_C32(0x52ea861a) },
+	{ SPH_C32(0x9d660004), SPH_C32(0x918e6100), SPH_C32(0x9ec50000),
+	  SPH_C32(0x7ca20000), SPH_C32(0xc245604a), SPH_C32(0x06f481b6),
+	  SPH_C32(0x90eb1e03), SPH_C32(0x10055bf9), SPH_C32(0xdac30005),
+	  SPH_C32(0x9c3bd200), SPH_C32(0x741b0000), SPH_C32(0xb7500000),
+	  SPH_C32(0x1e780b5c), SPH_C32(0x48934dcf), SPH_C32(0x091e20a8),
+	  SPH_C32(0x481899fb) },
+	{ SPH_C32(0x81990004), SPH_C32(0x5ec84300), SPH_C32(0xa3170000),
+	  SPH_C32(0xef720000), SPH_C32(0x18be1321), SPH_C32(0x2e0287af),
+	  SPH_C32(0x55ebd781), SPH_C32(0xfe64ea92), SPH_C32(0x52420005),
+	  SPH_C32(0xed74e400), SPH_C32(0x2e4f0000), SPH_C32(0xe95c0000),
+	  SPH_C32(0xd94d293c), SPH_C32(0x8c0622f2), SPH_C32(0x6ee1548d),
+	  SPH_C32(0xfc35e064) },
+	{ SPH_C32(0x39a40004), SPH_C32(0x48b94500), SPH_C32(0x948d0000),
+	  SPH_C32(0x1ac30000), SPH_C32(0x3a3f728d), SPH_C32(0x804a76ea),
+	  SPH_C32(0x33cfc197), SPH_C32(0x3ba501ac), SPH_C32(0xaf670005),
+	  SPH_C32(0x5eb0f500), SPH_C32(0xe0bf0000), SPH_C32(0x27a50000),
+	  SPH_C32(0xe5005cbc), SPH_C32(0x015d4661), SPH_C32(0x1e79e42b),
+	  SPH_C32(0xe6c7ff85) },
+	{ SPH_C32(0xf43d0004), SPH_C32(0x9c436400), SPH_C32(0x37b30000),
+	  SPH_C32(0x7f870000), SPH_C32(0xe3c644c1), SPH_C32(0x67cc8c01),
+	  SPH_C32(0x428c1302), SPH_C32(0x50bb8cec), SPH_C32(0x83240005),
+	  SPH_C32(0xf6c8e700), SPH_C32(0xb0a30000), SPH_C32(0x1fc80000),
+	  SPH_C32(0xda4f6c1b), SPH_C32(0x4376de00), SPH_C32(0xdaa24f9a),
+	  SPH_C32(0x794adc4f) },
+	{ SPH_C32(0x4c000004), SPH_C32(0x8a326200), SPH_C32(0x00290000),
+	  SPH_C32(0x8a360000), SPH_C32(0xc147256d), SPH_C32(0xc9847d44),
+	  SPH_C32(0x24a80514), SPH_C32(0x957a67d2), SPH_C32(0x7e010005),
+	  SPH_C32(0x450cf600), SPH_C32(0x7e530000), SPH_C32(0xd1310000),
+	  SPH_C32(0xe602199b), SPH_C32(0xce2dba93), SPH_C32(0xaa3aff3c),
+	  SPH_C32(0x63b8c3ae) },
+	{ SPH_C32(0x25360007), SPH_C32(0x4b648000), SPH_C32(0xecdb0000),
+	  SPH_C32(0xa30c0000), SPH_C32(0x90787938), SPH_C32(0x662acc0a),
+	  SPH_C32(0x5a80ba8b), SPH_C32(0x7bacf892), SPH_C32(0x184f0004),
+	  SPH_C32(0x5b158000), SPH_C32(0xd7390000), SPH_C32(0x28a30000),
+	  SPH_C32(0x9c8249e2), SPH_C32(0xbda93e6b), SPH_C32(0x87fecba3),
+	  SPH_C32(0x293e4865) },
+	{ SPH_C32(0x9d0b0007), SPH_C32(0x5d158600), SPH_C32(0xdb410000),
+	  SPH_C32(0x56bd0000), SPH_C32(0xb2f91894), SPH_C32(0xc8623d4f),
+	  SPH_C32(0x3ca4ac9d), SPH_C32(0xbe6d13ac), SPH_C32(0xe56a0004),
+	  SPH_C32(0xe8d19100), SPH_C32(0x19c90000), SPH_C32(0xe65a0000),
+	  SPH_C32(0xa0cf3c62), SPH_C32(0x30f25af8), SPH_C32(0xf7667b05),
+	  SPH_C32(0x33cc5784) },
+	{ SPH_C32(0x50920007), SPH_C32(0x89efa700), SPH_C32(0x787f0000),
+	  SPH_C32(0x33f90000), SPH_C32(0x6b002ed8), SPH_C32(0x2fe4c7a4),
+	  SPH_C32(0x4de77e08), SPH_C32(0xd5739eec), SPH_C32(0xc9290004),
+	  SPH_C32(0x40a98300), SPH_C32(0x49d50000), SPH_C32(0xde370000),
+	  SPH_C32(0x9f800cc5), SPH_C32(0x72d9c299), SPH_C32(0x33bdd0b4),
+	  SPH_C32(0xac41744e) },
+	{ SPH_C32(0xe8af0007), SPH_C32(0x9f9ea100), SPH_C32(0x4fe50000),
+	  SPH_C32(0xc6480000), SPH_C32(0x49814f74), SPH_C32(0x81ac36e1),
+	  SPH_C32(0x2bc3681e), SPH_C32(0x10b275d2), SPH_C32(0x340c0004),
+	  SPH_C32(0xf36d9200), SPH_C32(0x87250000), SPH_C32(0x10ce0000),
+	  SPH_C32(0xa3cd7945), SPH_C32(0xff82a60a), SPH_C32(0x43256012),
+	  SPH_C32(0xb6b36baf) },
+	{ SPH_C32(0xf4500007), SPH_C32(0x50d88300), SPH_C32(0x72370000),
+	  SPH_C32(0x55980000), SPH_C32(0x937a3c1f), SPH_C32(0xa95a30f8),
+	  SPH_C32(0xeec3a19c), SPH_C32(0xfed3c4b9), SPH_C32(0xbc8d0004),
+	  SPH_C32(0x8222a400), SPH_C32(0xdd710000), SPH_C32(0x4ec20000),
+	  SPH_C32(0x64f85b25), SPH_C32(0x3b17c937), SPH_C32(0x24da1437),
+	  SPH_C32(0x029e1230) },
+	{ SPH_C32(0x4c6d0007), SPH_C32(0x46a98500), SPH_C32(0x45ad0000),
+	  SPH_C32(0xa0290000), SPH_C32(0xb1fb5db3), SPH_C32(0x0712c1bd),
+	  SPH_C32(0x88e7b78a), SPH_C32(0x3b122f87), SPH_C32(0x41a80004),
+	  SPH_C32(0x31e6b500), SPH_C32(0x13810000), SPH_C32(0x803b0000),
+	  SPH_C32(0x58b52ea5), SPH_C32(0xb64cada4), SPH_C32(0x5442a491),
+	  SPH_C32(0x186c0dd1) },
+	{ SPH_C32(0x81f40007), SPH_C32(0x9253a400), SPH_C32(0xe6930000),
+	  SPH_C32(0xc56d0000), SPH_C32(0x68026bff), SPH_C32(0xe0943b56),
+	  SPH_C32(0xf9a4651f), SPH_C32(0x500ca2c7), SPH_C32(0x6deb0004),
+	  SPH_C32(0x999ea700), SPH_C32(0x439d0000), SPH_C32(0xb8560000),
+	  SPH_C32(0x67fa1e02), SPH_C32(0xf46735c5), SPH_C32(0x90990f20),
+	  SPH_C32(0x87e12e1b) },
+	{ SPH_C32(0x39c90007), SPH_C32(0x8422a200), SPH_C32(0xd1090000),
+	  SPH_C32(0x30dc0000), SPH_C32(0x4a830a53), SPH_C32(0x4edcca13),
+	  SPH_C32(0x9f807309), SPH_C32(0x95cd49f9), SPH_C32(0x90ce0004),
+	  SPH_C32(0x2a5ab600), SPH_C32(0x8d6d0000), SPH_C32(0x76af0000),
+	  SPH_C32(0x5bb76b82), SPH_C32(0x793c5156), SPH_C32(0xe001bf86),
+	  SPH_C32(0x9d1331fa) },
+	{ SPH_C32(0xbe300005), SPH_C32(0x2a220000), SPH_C32(0xcec50000),
+	  SPH_C32(0xbe780000), SPH_C32(0xa609241f), SPH_C32(0x56639098),
+	  SPH_C32(0xab938c2c), SPH_C32(0x85b024ed), SPH_C32(0x6d860007),
+	  SPH_C32(0x55054000), SPH_C32(0x06190000), SPH_C32(0x92490000),
+	  SPH_C32(0x174666dc), SPH_C32(0x3af1893c), SPH_C32(0x3cd6bdbe),
+	  SPH_C32(0x2989664e) },
+	{ SPH_C32(0x060d0005), SPH_C32(0x3c530600), SPH_C32(0xf95f0000),
+	  SPH_C32(0x4bc90000), SPH_C32(0x848845b3), SPH_C32(0xf82b61dd),
+	  SPH_C32(0xcdb79a3a), SPH_C32(0x4071cfd3), SPH_C32(0x90a30007),
+	  SPH_C32(0xe6c15100), SPH_C32(0xc8e90000), SPH_C32(0x5cb00000),
+	  SPH_C32(0x2b0b135c), SPH_C32(0xb7aaedaf), SPH_C32(0x4c4e0d18),
+	  SPH_C32(0x337b79af) },
+	{ SPH_C32(0xcb940005), SPH_C32(0xe8a92700), SPH_C32(0x5a610000),
+	  SPH_C32(0x2e8d0000), SPH_C32(0x5d7173ff), SPH_C32(0x1fad9b36),
+	  SPH_C32(0xbcf448af), SPH_C32(0x2b6f4293), SPH_C32(0xbce00007),
+	  SPH_C32(0x4eb94300), SPH_C32(0x98f50000), SPH_C32(0x64dd0000),
+	  SPH_C32(0x144423fb), SPH_C32(0xf58175ce), SPH_C32(0x8895a6a9),
+	  SPH_C32(0xacf65a65) },
+	{ SPH_C32(0x73a90005), SPH_C32(0xfed82100), SPH_C32(0x6dfb0000),
+	  SPH_C32(0xdb3c0000), SPH_C32(0x7ff01253), SPH_C32(0xb1e56a73),
+	  SPH_C32(0xdad05eb9), SPH_C32(0xeeaea9ad), SPH_C32(0x41c50007),
+	  SPH_C32(0xfd7d5200), SPH_C32(0x56050000), SPH_C32(0xaa240000),
+	  SPH_C32(0x2809567b), SPH_C32(0x78da115d), SPH_C32(0xf80d160f),
+	  SPH_C32(0xb6044584) },
+	{ SPH_C32(0x6f560005), SPH_C32(0x319e0300), SPH_C32(0x50290000),
+	  SPH_C32(0x48ec0000), SPH_C32(0xa50b6138), SPH_C32(0x99136c6a),
+	  SPH_C32(0x1fd0973b), SPH_C32(0x00cf18c6), SPH_C32(0xc9440007),
+	  SPH_C32(0x8c326400), SPH_C32(0x0c510000), SPH_C32(0xf4280000),
+	  SPH_C32(0xef3c741b), SPH_C32(0xbc4f7e60), SPH_C32(0x9ff2622a),
+	  SPH_C32(0x02293c1b) },
+	{ SPH_C32(0xd76b0005), SPH_C32(0x27ef0500), SPH_C32(0x67b30000),
+	  SPH_C32(0xbd5d0000), SPH_C32(0x878a0094), SPH_C32(0x375b9d2f),
+	  SPH_C32(0x79f4812d), SPH_C32(0xc50ef3f8), SPH_C32(0x34610007),
+	  SPH_C32(0x3ff67500), SPH_C32(0xc2a10000), SPH_C32(0x3ad10000),
+	  SPH_C32(0xd371019b), SPH_C32(0x31141af3), SPH_C32(0xef6ad28c),
+	  SPH_C32(0x18db23fa) },
+	{ SPH_C32(0x1af20005), SPH_C32(0xf3152400), SPH_C32(0xc48d0000),
+	  SPH_C32(0xd8190000), SPH_C32(0x5e7336d8), SPH_C32(0xd0dd67c4),
+	  SPH_C32(0x08b753b8), SPH_C32(0xae107eb8), SPH_C32(0x18220007),
+	  SPH_C32(0x978e6700), SPH_C32(0x92bd0000), SPH_C32(0x02bc0000),
+	  SPH_C32(0xec3e313c), SPH_C32(0x733f8292), SPH_C32(0x2bb1793d),
+	  SPH_C32(0x87560030) },
+	{ SPH_C32(0xa2cf0005), SPH_C32(0xe5642200), SPH_C32(0xf3170000),
+	  SPH_C32(0x2da80000), SPH_C32(0x7cf25774), SPH_C32(0x7e959681),
+	  SPH_C32(0x6e9345ae), SPH_C32(0x6bd19586), SPH_C32(0xe5070007),
+	  SPH_C32(0x244a7600), SPH_C32(0x5c4d0000), SPH_C32(0xcc450000),
+	  SPH_C32(0xd07344bc), SPH_C32(0xfe64e601), SPH_C32(0x5b29c99b),
+	  SPH_C32(0x9da41fd1) },
+	{ SPH_C32(0xcbf90006), SPH_C32(0x2432c000), SPH_C32(0x1fe50000),
+	  SPH_C32(0x04920000), SPH_C32(0x2dcd0b21), SPH_C32(0xd13b27cf),
+	  SPH_C32(0x10bbfa31), SPH_C32(0x85070ac6), SPH_C32(0x83490006),
+	  SPH_C32(0x3a530000), SPH_C32(0xf5270000), SPH_C32(0x35d70000),
+	  SPH_C32(0xaaf314c5), SPH_C32(0x8de062f9), SPH_C32(0x76edfd04),
+	  SPH_C32(0xd722941a) },
+	{ SPH_C32(0x73c40006), SPH_C32(0x3243c600), SPH_C32(0x287f0000),
+	  SPH_C32(0xf1230000), SPH_C32(0x0f4c6a8d), SPH_C32(0x7f73d68a),
+	  SPH_C32(0x769fec27), SPH_C32(0x40c6e1f8), SPH_C32(0x7e6c0006),
+	  SPH_C32(0x89971100), SPH_C32(0x3bd70000), SPH_C32(0xfb2e0000),
+	  SPH_C32(0x96be6145), SPH_C32(0x00bb066a), SPH_C32(0x06754da2),
+	  SPH_C32(0xcdd08bfb) },
+	{ SPH_C32(0xbe5d0006), SPH_C32(0xe6b9e700), SPH_C32(0x8b410000),
+	  SPH_C32(0x94670000), SPH_C32(0xd6b55cc1), SPH_C32(0x98f52c61),
+	  SPH_C32(0x07dc3eb2), SPH_C32(0x2bd86cb8), SPH_C32(0x522f0006),
+	  SPH_C32(0x21ef0300), SPH_C32(0x6bcb0000), SPH_C32(0xc3430000),
+	  SPH_C32(0xa9f151e2), SPH_C32(0x42909e0b), SPH_C32(0xc2aee613),
+	  SPH_C32(0x525da831) },
+	{ SPH_C32(0x06600006), SPH_C32(0xf0c8e100), SPH_C32(0xbcdb0000),
+	  SPH_C32(0x61d60000), SPH_C32(0xf4343d6d), SPH_C32(0x36bddd24),
+	  SPH_C32(0x61f828a4), SPH_C32(0xee198786), SPH_C32(0xaf0a0006),
+	  SPH_C32(0x922b1200), SPH_C32(0xa53b0000), SPH_C32(0x0dba0000),
+	  SPH_C32(0x95bc2462), SPH_C32(0xcfcbfa98), SPH_C32(0xb23656b5),
+	  SPH_C32(0x48afb7d0) },
+	{ SPH_C32(0x1a9f0006), SPH_C32(0x3f8ec300), SPH_C32(0x81090000),
+	  SPH_C32(0xf2060000), SPH_C32(0x2ecf4e06), SPH_C32(0x1e4bdb3d),
+	  SPH_C32(0xa4f8e126), SPH_C32(0x007836ed), SPH_C32(0x278b0006),
+	  SPH_C32(0xe3642400), SPH_C32(0xff6f0000), SPH_C32(0x53b60000),
+	  SPH_C32(0x52890602), SPH_C32(0x0b5e95a5), SPH_C32(0xd5c92290),
+	  SPH_C32(0xfc82ce4f) },
+	{ SPH_C32(0xa2a20006), SPH_C32(0x29ffc500), SPH_C32(0xb6930000),
+	  SPH_C32(0x07b70000), SPH_C32(0x0c4e2faa), SPH_C32(0xb0032a78),
+	  SPH_C32(0xc2dcf730), SPH_C32(0xc5b9ddd3), SPH_C32(0xdaae0006),
+	  SPH_C32(0x50a03500), SPH_C32(0x319f0000), SPH_C32(0x9d4f0000),
+	  SPH_C32(0x6ec47382), SPH_C32(0x8605f136), SPH_C32(0xa5519236),
+	  SPH_C32(0xe670d1ae) },
+	{ SPH_C32(0x6f3b0006), SPH_C32(0xfd05e400), SPH_C32(0x15ad0000),
+	  SPH_C32(0x62f30000), SPH_C32(0xd5b719e6), SPH_C32(0x5785d093),
+	  SPH_C32(0xb39f25a5), SPH_C32(0xaea75093), SPH_C32(0xf6ed0006),
+	  SPH_C32(0xf8d82700), SPH_C32(0x61830000), SPH_C32(0xa5220000),
+	  SPH_C32(0x518b4325), SPH_C32(0xc42e6957), SPH_C32(0x618a3987),
+	  SPH_C32(0x79fdf264) },
+	{ SPH_C32(0xd7060006), SPH_C32(0xeb74e200), SPH_C32(0x22370000),
+	  SPH_C32(0x97420000), SPH_C32(0xf736784a), SPH_C32(0xf9cd21d6),
+	  SPH_C32(0xd5bb33b3), SPH_C32(0x6b66bbad), SPH_C32(0x0bc80006),
+	  SPH_C32(0x4b1c3600), SPH_C32(0xaf730000), SPH_C32(0x6bdb0000),
+	  SPH_C32(0x6dc636a5), SPH_C32(0x49750dc4), SPH_C32(0x11128921),
+	  SPH_C32(0x630fed85) }
+};
+
+static const sph_u32 T512_21[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0x3d010000), SPH_C32(0xd29000c0), SPH_C32(0xe68d0000),
+	  SPH_C32(0xc6310000), SPH_C32(0xca304571), SPH_C32(0xa8ea90ce),
+	  SPH_C32(0x385630bf), SPH_C32(0xc290fed9), SPH_C32(0x7afe0000),
+	  SPH_C32(0x53b60014), SPH_C32(0xbd420000), SPH_C32(0xf0860000),
+	  SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979), SPH_C32(0x1d3a76bf),
+	  SPH_C32(0x1bb6813d) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0x818c0000), SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000),
+	  SPH_C32(0x173a0000), SPH_C32(0x64283db5), SPH_C32(0xea4c0898),
+	  SPH_C32(0x3844ea88), SPH_C32(0xeeabae97), SPH_C32(0x92230000),
+	  SPH_C32(0xa9fc0050), SPH_C32(0x816f0000), SPH_C32(0x4b930000),
+	  SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d), SPH_C32(0xa292b44b),
+	  SPH_C32(0x49fc8c64) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0x92230000), SPH_C32(0xa9fc0050), SPH_C32(0x816f0000),
+	  SPH_C32(0x4b930000), SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d),
+	  SPH_C32(0xa292b44b), SPH_C32(0x49fc8c64), SPH_C32(0x13af0000),
+	  SPH_C32(0x87570088), SPH_C32(0x7e610000), SPH_C32(0x5ca90000),
+	  SPH_C32(0x699c66ed), SPH_C32(0xf511dca5), SPH_C32(0x9ad65ec3),
+	  SPH_C32(0xa75722f3) },
+	{ SPH_C32(0x7afe0000), SPH_C32(0x53b60014), SPH_C32(0xbd420000),
+	  SPH_C32(0xf0860000), SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979),
+	  SPH_C32(0x1d3a76bf), SPH_C32(0x1bb6813d), SPH_C32(0x47ff0000),
+	  SPH_C32(0x812600d4), SPH_C32(0x5bcf0000), SPH_C32(0x36b70000),
+	  SPH_C32(0x47392832), SPH_C32(0x935f59b7), SPH_C32(0x256c4600),
+	  SPH_C32(0xd9267fe4) },
+	{ SPH_C32(0x2eae0000), SPH_C32(0x55c70048), SPH_C32(0x98ec0000),
+	  SPH_C32(0x9a980000), SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b),
+	  SPH_C32(0xa2806e7c), SPH_C32(0x65c7dc2a), SPH_C32(0xfb720000),
+	  SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000), SPH_C32(0xe7bc0000),
+	  SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1), SPH_C32(0x257e9c37),
+	  SPH_C32(0xf51d2faa) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) },
+	{ SPH_C32(0xfb720000), SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000),
+	  SPH_C32(0xe7bc0000), SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1),
+	  SPH_C32(0x257e9c37), SPH_C32(0xf51d2faa), SPH_C32(0xd5dc0000),
+	  SPH_C32(0x28da0084), SPH_C32(0xdaa00000), SPH_C32(0x7d240000),
+	  SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a), SPH_C32(0x87fef24b),
+	  SPH_C32(0x90daf380) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x87570088), SPH_C32(0x7e610000),
+	  SPH_C32(0x5ca90000), SPH_C32(0x699c66ed), SPH_C32(0xf511dca5),
+	  SPH_C32(0x9ad65ec3), SPH_C32(0xa75722f3), SPH_C32(0x818c0000),
+	  SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000), SPH_C32(0x173a0000),
+	  SPH_C32(0x64283db5), SPH_C32(0xea4c0898), SPH_C32(0x3844ea88),
+	  SPH_C32(0xeeabae97) },
+	{ SPH_C32(0x47ff0000), SPH_C32(0x812600d4), SPH_C32(0x5bcf0000),
+	  SPH_C32(0x36b70000), SPH_C32(0x47392832), SPH_C32(0x935f59b7),
+	  SPH_C32(0x256c4600), SPH_C32(0xd9267fe4), SPH_C32(0x3d010000),
+	  SPH_C32(0xd29000c0), SPH_C32(0xe68d0000), SPH_C32(0xc6310000),
+	  SPH_C32(0xca304571), SPH_C32(0xa8ea90ce), SPH_C32(0x385630bf),
+	  SPH_C32(0xc290fed9) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0x58220000), SPH_C32(0x4f940f5c), SPH_C32(0x67d70000),
+	  SPH_C32(0x36f40000), SPH_C32(0x1d0f7ec5), SPH_C32(0x73cca006),
+	  SPH_C32(0x2a1953b8), SPH_C32(0xca3a5d87), SPH_C32(0x42af0000),
+	  SPH_C32(0x5b630518), SPH_C32(0x3c520000), SPH_C32(0x266b0000),
+	  SPH_C32(0x2729001e), SPH_C32(0x5d726036), SPH_C32(0x4ec27922),
+	  SPH_C32(0x8d18afd1) },
+	{ SPH_C32(0xb0ff0000), SPH_C32(0xb5de0f18), SPH_C32(0x5bfa0000),
+	  SPH_C32(0x8de10000), SPH_C32(0x9db248de), SPH_C32(0x5724bd42),
+	  SPH_C32(0x95b1914c), SPH_C32(0x987050de), SPH_C32(0x16ff0000),
+	  SPH_C32(0x5d120544), SPH_C32(0x19fc0000), SPH_C32(0x4c750000),
+	  SPH_C32(0x098c4ec1), SPH_C32(0x3b3ce524), SPH_C32(0xf17861e1),
+	  SPH_C32(0xf369f2c6) },
+	{ SPH_C32(0xe4af0000), SPH_C32(0xb3af0f44), SPH_C32(0x7e540000),
+	  SPH_C32(0xe7ff0000), SPH_C32(0xb3170601), SPH_C32(0x316a3850),
+	  SPH_C32(0x2a0b898f), SPH_C32(0xe6010dc9), SPH_C32(0xaa720000),
+	  SPH_C32(0xa129055c), SPH_C32(0x007f0000), SPH_C32(0x9d7e0000),
+	  SPH_C32(0xa7943605), SPH_C32(0x799a7d72), SPH_C32(0xf16abbd6),
+	  SPH_C32(0xdf52a288) },
+	{ SPH_C32(0x65230000), SPH_C32(0x9d040f9c), SPH_C32(0x815a0000),
+	  SPH_C32(0xf0c50000), SPH_C32(0xd73f3bb4), SPH_C32(0xdb2630c8),
+	  SPH_C32(0x124f6307), SPH_C32(0x08aaa35e), SPH_C32(0x38510000),
+	  SPH_C32(0x08d5050c), SPH_C32(0x81100000), SPH_C32(0xd6ed0000),
+	  SPH_C32(0xaa206d5d), SPH_C32(0x66c7a94f), SPH_C32(0x53f80f9d),
+	  SPH_C32(0x96ae2eec) },
+	{ SPH_C32(0x31730000), SPH_C32(0x9b750fc0), SPH_C32(0xa4f40000),
+	  SPH_C32(0x9adb0000), SPH_C32(0xf99a756b), SPH_C32(0xbd68b5da),
+	  SPH_C32(0xadf57bc4), SPH_C32(0x76dbfe49), SPH_C32(0x84dc0000),
+	  SPH_C32(0xf4ee0514), SPH_C32(0x98930000), SPH_C32(0x07e60000),
+	  SPH_C32(0x04381599), SPH_C32(0x24613119), SPH_C32(0x53ead5aa),
+	  SPH_C32(0xba957ea2) },
+	{ SPH_C32(0xd9ae0000), SPH_C32(0x613f0f84), SPH_C32(0x98d90000),
+	  SPH_C32(0x21ce0000), SPH_C32(0x79274370), SPH_C32(0x9980a89e),
+	  SPH_C32(0x125db930), SPH_C32(0x2491f310), SPH_C32(0xd08c0000),
+	  SPH_C32(0xf29f0548), SPH_C32(0xbd3d0000), SPH_C32(0x6df80000),
+	  SPH_C32(0x2a9d5b46), SPH_C32(0x422fb40b), SPH_C32(0xec50cd69),
+	  SPH_C32(0xc4e423b5) },
+	{ SPH_C32(0x8dfe0000), SPH_C32(0x674e0fd8), SPH_C32(0xbd770000),
+	  SPH_C32(0x4bd00000), SPH_C32(0x57820daf), SPH_C32(0xffce2d8c),
+	  SPH_C32(0xade7a1f3), SPH_C32(0x5ae0ae07), SPH_C32(0x6c010000),
+	  SPH_C32(0x0ea40550), SPH_C32(0xa4be0000), SPH_C32(0xbcf30000),
+	  SPH_C32(0x84852382), SPH_C32(0x00892c5d), SPH_C32(0xec42175e),
+	  SPH_C32(0xe8df73fb) },
+	{ SPH_C32(0xca010000), SPH_C32(0xe6680f0c), SPH_C32(0xe6b80000),
+	  SPH_C32(0x7d670000), SPH_C32(0x10bb259d), SPH_C32(0x6c91743b),
+	  SPH_C32(0x888be7f3), SPH_C32(0x83c6d1e3), SPH_C32(0x51000000),
+	  SPH_C32(0xdc340590), SPH_C32(0x42330000), SPH_C32(0x7ac20000),
+	  SPH_C32(0x4eb566f3), SPH_C32(0xa863bc93), SPH_C32(0xd41427e1),
+	  SPH_C32(0x2a4f8d22) },
+	{ SPH_C32(0x9e510000), SPH_C32(0xe0190f50), SPH_C32(0xc3160000),
+	  SPH_C32(0x17790000), SPH_C32(0x3e1e6b42), SPH_C32(0x0adff129),
+	  SPH_C32(0x3731ff30), SPH_C32(0xfdb78cf4), SPH_C32(0xed8d0000),
+	  SPH_C32(0x200f0588), SPH_C32(0x5bb00000), SPH_C32(0xabc90000),
+	  SPH_C32(0xe0ad1e37), SPH_C32(0xeac524c5), SPH_C32(0xd406fdd6),
+	  SPH_C32(0x0674dd6c) },
+	{ SPH_C32(0x768c0000), SPH_C32(0x1a530f14), SPH_C32(0xff3b0000),
+	  SPH_C32(0xac6c0000), SPH_C32(0xbea35d59), SPH_C32(0x2e37ec6d),
+	  SPH_C32(0x88993dc4), SPH_C32(0xaffd81ad), SPH_C32(0xb9dd0000),
+	  SPH_C32(0x267e05d4), SPH_C32(0x7e1e0000), SPH_C32(0xc1d70000),
+	  SPH_C32(0xce0850e8), SPH_C32(0x8c8ba1d7), SPH_C32(0x6bbce515),
+	  SPH_C32(0x7805807b) },
+	{ SPH_C32(0x22dc0000), SPH_C32(0x1c220f48), SPH_C32(0xda950000),
+	  SPH_C32(0xc6720000), SPH_C32(0x90061386), SPH_C32(0x4879697f),
+	  SPH_C32(0x37232507), SPH_C32(0xd18cdcba), SPH_C32(0x05500000),
+	  SPH_C32(0xda4505cc), SPH_C32(0x679d0000), SPH_C32(0x10dc0000),
+	  SPH_C32(0x6010282c), SPH_C32(0xce2d3981), SPH_C32(0x6bae3f22),
+	  SPH_C32(0x543ed035) },
+	{ SPH_C32(0xa3500000), SPH_C32(0x32890f90), SPH_C32(0x259b0000),
+	  SPH_C32(0xd1480000), SPH_C32(0xf42e2e33), SPH_C32(0xa23561e7),
+	  SPH_C32(0x0f67cf8f), SPH_C32(0x3f27722d), SPH_C32(0x97730000),
+	  SPH_C32(0x73b9059c), SPH_C32(0xe6f20000), SPH_C32(0x5b4f0000),
+	  SPH_C32(0x6da47374), SPH_C32(0xd170edbc), SPH_C32(0xc93c8b69),
+	  SPH_C32(0x1dc25c51) },
+	{ SPH_C32(0xf7000000), SPH_C32(0x34f80fcc), SPH_C32(0x00350000),
+	  SPH_C32(0xbb560000), SPH_C32(0xda8b60ec), SPH_C32(0xc47be4f5),
+	  SPH_C32(0xb0ddd74c), SPH_C32(0x41562f3a), SPH_C32(0x2bfe0000),
+	  SPH_C32(0x8f820584), SPH_C32(0xff710000), SPH_C32(0x8a440000),
+	  SPH_C32(0xc3bc0bb0), SPH_C32(0x93d675ea), SPH_C32(0xc92e515e),
+	  SPH_C32(0x31f90c1f) },
+	{ SPH_C32(0x1fdd0000), SPH_C32(0xceb20f88), SPH_C32(0x3c180000),
+	  SPH_C32(0x00430000), SPH_C32(0x5a3656f7), SPH_C32(0xe093f9b1),
+	  SPH_C32(0x0f7515b8), SPH_C32(0x131c2263), SPH_C32(0x7fae0000),
+	  SPH_C32(0x89f305d8), SPH_C32(0xdadf0000), SPH_C32(0xe05a0000),
+	  SPH_C32(0xed19456f), SPH_C32(0xf598f0f8), SPH_C32(0x7694499d),
+	  SPH_C32(0x4f885108) },
+	{ SPH_C32(0x4b8d0000), SPH_C32(0xc8c30fd4), SPH_C32(0x19b60000),
+	  SPH_C32(0x6a5d0000), SPH_C32(0x74931828), SPH_C32(0x86dd7ca3),
+	  SPH_C32(0xb0cf0d7b), SPH_C32(0x6d6d7f74), SPH_C32(0xc3230000),
+	  SPH_C32(0x75c805c0), SPH_C32(0xc35c0000), SPH_C32(0x31510000),
+	  SPH_C32(0x43013dab), SPH_C32(0xb73e68ae), SPH_C32(0x768693aa),
+	  SPH_C32(0x63b30146) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xaa720000), SPH_C32(0xa129055c), SPH_C32(0x007f0000),
+	  SPH_C32(0x9d7e0000), SPH_C32(0xa7943605), SPH_C32(0x799a7d72),
+	  SPH_C32(0xf16abbd6), SPH_C32(0xdf52a288), SPH_C32(0x4edd0000),
+	  SPH_C32(0x12860a18), SPH_C32(0x7e2b0000), SPH_C32(0x7a810000),
+	  SPH_C32(0x14833004), SPH_C32(0x48f04522), SPH_C32(0xdb613259),
+	  SPH_C32(0x3953af41) },
+	{ SPH_C32(0x42af0000), SPH_C32(0x5b630518), SPH_C32(0x3c520000),
+	  SPH_C32(0x266b0000), SPH_C32(0x2729001e), SPH_C32(0x5d726036),
+	  SPH_C32(0x4ec27922), SPH_C32(0x8d18afd1), SPH_C32(0x1a8d0000),
+	  SPH_C32(0x14f70a44), SPH_C32(0x5b850000), SPH_C32(0x109f0000),
+	  SPH_C32(0x3a267edb), SPH_C32(0x2ebec030), SPH_C32(0x64db2a9a),
+	  SPH_C32(0x4722f256) },
+	{ SPH_C32(0x16ff0000), SPH_C32(0x5d120544), SPH_C32(0x19fc0000),
+	  SPH_C32(0x4c750000), SPH_C32(0x098c4ec1), SPH_C32(0x3b3ce524),
+	  SPH_C32(0xf17861e1), SPH_C32(0xf369f2c6), SPH_C32(0xa6000000),
+	  SPH_C32(0xe8cc0a5c), SPH_C32(0x42060000), SPH_C32(0xc1940000),
+	  SPH_C32(0x943e061f), SPH_C32(0x6c185866), SPH_C32(0x64c9f0ad),
+	  SPH_C32(0x6b19a218) },
+	{ SPH_C32(0x97730000), SPH_C32(0x73b9059c), SPH_C32(0xe6f20000),
+	  SPH_C32(0x5b4f0000), SPH_C32(0x6da47374), SPH_C32(0xd170edbc),
+	  SPH_C32(0xc93c8b69), SPH_C32(0x1dc25c51), SPH_C32(0x34230000),
+	  SPH_C32(0x41300a0c), SPH_C32(0xc3690000), SPH_C32(0x8a070000),
+	  SPH_C32(0x998a5d47), SPH_C32(0x73458c5b), SPH_C32(0xc65b44e6),
+	  SPH_C32(0x22e52e7c) },
+	{ SPH_C32(0xc3230000), SPH_C32(0x75c805c0), SPH_C32(0xc35c0000),
+	  SPH_C32(0x31510000), SPH_C32(0x43013dab), SPH_C32(0xb73e68ae),
+	  SPH_C32(0x768693aa), SPH_C32(0x63b30146), SPH_C32(0x88ae0000),
+	  SPH_C32(0xbd0b0a14), SPH_C32(0xdaea0000), SPH_C32(0x5b0c0000),
+	  SPH_C32(0x37922583), SPH_C32(0x31e3140d), SPH_C32(0xc6499ed1),
+	  SPH_C32(0x0ede7e32) },
+	{ SPH_C32(0x2bfe0000), SPH_C32(0x8f820584), SPH_C32(0xff710000),
+	  SPH_C32(0x8a440000), SPH_C32(0xc3bc0bb0), SPH_C32(0x93d675ea),
+	  SPH_C32(0xc92e515e), SPH_C32(0x31f90c1f), SPH_C32(0xdcfe0000),
+	  SPH_C32(0xbb7a0a48), SPH_C32(0xff440000), SPH_C32(0x31120000),
+	  SPH_C32(0x19376b5c), SPH_C32(0x57ad911f), SPH_C32(0x79f38612),
+	  SPH_C32(0x70af2325) },
+	{ SPH_C32(0x7fae0000), SPH_C32(0x89f305d8), SPH_C32(0xdadf0000),
+	  SPH_C32(0xe05a0000), SPH_C32(0xed19456f), SPH_C32(0xf598f0f8),
+	  SPH_C32(0x7694499d), SPH_C32(0x4f885108), SPH_C32(0x60730000),
+	  SPH_C32(0x47410a50), SPH_C32(0xe6c70000), SPH_C32(0xe0190000),
+	  SPH_C32(0xb72f1398), SPH_C32(0x150b0949), SPH_C32(0x79e15c25),
+	  SPH_C32(0x5c94736b) },
+	{ SPH_C32(0x38510000), SPH_C32(0x08d5050c), SPH_C32(0x81100000),
+	  SPH_C32(0xd6ed0000), SPH_C32(0xaa206d5d), SPH_C32(0x66c7a94f),
+	  SPH_C32(0x53f80f9d), SPH_C32(0x96ae2eec), SPH_C32(0x5d720000),
+	  SPH_C32(0x95d10a90), SPH_C32(0x004a0000), SPH_C32(0x26280000),
+	  SPH_C32(0x7d1f56e9), SPH_C32(0xbde19987), SPH_C32(0x41b76c9a),
+	  SPH_C32(0x9e048db2) },
+	{ SPH_C32(0x6c010000), SPH_C32(0x0ea40550), SPH_C32(0xa4be0000),
+	  SPH_C32(0xbcf30000), SPH_C32(0x84852382), SPH_C32(0x00892c5d),
+	  SPH_C32(0xec42175e), SPH_C32(0xe8df73fb), SPH_C32(0xe1ff0000),
+	  SPH_C32(0x69ea0a88), SPH_C32(0x19c90000), SPH_C32(0xf7230000),
+	  SPH_C32(0xd3072e2d), SPH_C32(0xff4701d1), SPH_C32(0x41a5b6ad),
+	  SPH_C32(0xb23fddfc) },
+	{ SPH_C32(0x84dc0000), SPH_C32(0xf4ee0514), SPH_C32(0x98930000),
+	  SPH_C32(0x07e60000), SPH_C32(0x04381599), SPH_C32(0x24613119),
+	  SPH_C32(0x53ead5aa), SPH_C32(0xba957ea2), SPH_C32(0xb5af0000),
+	  SPH_C32(0x6f9b0ad4), SPH_C32(0x3c670000), SPH_C32(0x9d3d0000),
+	  SPH_C32(0xfda260f2), SPH_C32(0x990984c3), SPH_C32(0xfe1fae6e),
+	  SPH_C32(0xcc4e80eb) },
+	{ SPH_C32(0xd08c0000), SPH_C32(0xf29f0548), SPH_C32(0xbd3d0000),
+	  SPH_C32(0x6df80000), SPH_C32(0x2a9d5b46), SPH_C32(0x422fb40b),
+	  SPH_C32(0xec50cd69), SPH_C32(0xc4e423b5), SPH_C32(0x09220000),
+	  SPH_C32(0x93a00acc), SPH_C32(0x25e40000), SPH_C32(0x4c360000),
+	  SPH_C32(0x53ba1836), SPH_C32(0xdbaf1c95), SPH_C32(0xfe0d7459),
+	  SPH_C32(0xe075d0a5) },
+	{ SPH_C32(0x51000000), SPH_C32(0xdc340590), SPH_C32(0x42330000),
+	  SPH_C32(0x7ac20000), SPH_C32(0x4eb566f3), SPH_C32(0xa863bc93),
+	  SPH_C32(0xd41427e1), SPH_C32(0x2a4f8d22), SPH_C32(0x9b010000),
+	  SPH_C32(0x3a5c0a9c), SPH_C32(0xa48b0000), SPH_C32(0x07a50000),
+	  SPH_C32(0x5e0e436e), SPH_C32(0xc4f2c8a8), SPH_C32(0x5c9fc012),
+	  SPH_C32(0xa9895cc1) },
+	{ SPH_C32(0x05500000), SPH_C32(0xda4505cc), SPH_C32(0x679d0000),
+	  SPH_C32(0x10dc0000), SPH_C32(0x6010282c), SPH_C32(0xce2d3981),
+	  SPH_C32(0x6bae3f22), SPH_C32(0x543ed035), SPH_C32(0x278c0000),
+	  SPH_C32(0xc6670a84), SPH_C32(0xbd080000), SPH_C32(0xd6ae0000),
+	  SPH_C32(0xf0163baa), SPH_C32(0x865450fe), SPH_C32(0x5c8d1a25),
+	  SPH_C32(0x85b20c8f) },
+	{ SPH_C32(0xed8d0000), SPH_C32(0x200f0588), SPH_C32(0x5bb00000),
+	  SPH_C32(0xabc90000), SPH_C32(0xe0ad1e37), SPH_C32(0xeac524c5),
+	  SPH_C32(0xd406fdd6), SPH_C32(0x0674dd6c), SPH_C32(0x73dc0000),
+	  SPH_C32(0xc0160ad8), SPH_C32(0x98a60000), SPH_C32(0xbcb00000),
+	  SPH_C32(0xdeb37575), SPH_C32(0xe01ad5ec), SPH_C32(0xe33702e6),
+	  SPH_C32(0xfbc35198) },
+	{ SPH_C32(0xb9dd0000), SPH_C32(0x267e05d4), SPH_C32(0x7e1e0000),
+	  SPH_C32(0xc1d70000), SPH_C32(0xce0850e8), SPH_C32(0x8c8ba1d7),
+	  SPH_C32(0x6bbce515), SPH_C32(0x7805807b), SPH_C32(0xcf510000),
+	  SPH_C32(0x3c2d0ac0), SPH_C32(0x81250000), SPH_C32(0x6dbb0000),
+	  SPH_C32(0x70ab0db1), SPH_C32(0xa2bc4dba), SPH_C32(0xe325d8d1),
+	  SPH_C32(0xd7f801d6) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0xa6000000), SPH_C32(0xe8cc0a5c), SPH_C32(0x42060000),
+	  SPH_C32(0xc1940000), SPH_C32(0x943e061f), SPH_C32(0x6c185866),
+	  SPH_C32(0x64c9f0ad), SPH_C32(0x6b19a218), SPH_C32(0xb0ff0000),
+	  SPH_C32(0xb5de0f18), SPH_C32(0x5bfa0000), SPH_C32(0x8de10000),
+	  SPH_C32(0x9db248de), SPH_C32(0x5724bd42), SPH_C32(0x95b1914c),
+	  SPH_C32(0x987050de) },
+	{ SPH_C32(0x4edd0000), SPH_C32(0x12860a18), SPH_C32(0x7e2b0000),
+	  SPH_C32(0x7a810000), SPH_C32(0x14833004), SPH_C32(0x48f04522),
+	  SPH_C32(0xdb613259), SPH_C32(0x3953af41), SPH_C32(0xe4af0000),
+	  SPH_C32(0xb3af0f44), SPH_C32(0x7e540000), SPH_C32(0xe7ff0000),
+	  SPH_C32(0xb3170601), SPH_C32(0x316a3850), SPH_C32(0x2a0b898f),
+	  SPH_C32(0xe6010dc9) },
+	{ SPH_C32(0x1a8d0000), SPH_C32(0x14f70a44), SPH_C32(0x5b850000),
+	  SPH_C32(0x109f0000), SPH_C32(0x3a267edb), SPH_C32(0x2ebec030),
+	  SPH_C32(0x64db2a9a), SPH_C32(0x4722f256), SPH_C32(0x58220000),
+	  SPH_C32(0x4f940f5c), SPH_C32(0x67d70000), SPH_C32(0x36f40000),
+	  SPH_C32(0x1d0f7ec5), SPH_C32(0x73cca006), SPH_C32(0x2a1953b8),
+	  SPH_C32(0xca3a5d87) },
+	{ SPH_C32(0x9b010000), SPH_C32(0x3a5c0a9c), SPH_C32(0xa48b0000),
+	  SPH_C32(0x07a50000), SPH_C32(0x5e0e436e), SPH_C32(0xc4f2c8a8),
+	  SPH_C32(0x5c9fc012), SPH_C32(0xa9895cc1), SPH_C32(0xca010000),
+	  SPH_C32(0xe6680f0c), SPH_C32(0xe6b80000), SPH_C32(0x7d670000),
+	  SPH_C32(0x10bb259d), SPH_C32(0x6c91743b), SPH_C32(0x888be7f3),
+	  SPH_C32(0x83c6d1e3) },
+	{ SPH_C32(0xcf510000), SPH_C32(0x3c2d0ac0), SPH_C32(0x81250000),
+	  SPH_C32(0x6dbb0000), SPH_C32(0x70ab0db1), SPH_C32(0xa2bc4dba),
+	  SPH_C32(0xe325d8d1), SPH_C32(0xd7f801d6), SPH_C32(0x768c0000),
+	  SPH_C32(0x1a530f14), SPH_C32(0xff3b0000), SPH_C32(0xac6c0000),
+	  SPH_C32(0xbea35d59), SPH_C32(0x2e37ec6d), SPH_C32(0x88993dc4),
+	  SPH_C32(0xaffd81ad) },
+	{ SPH_C32(0x278c0000), SPH_C32(0xc6670a84), SPH_C32(0xbd080000),
+	  SPH_C32(0xd6ae0000), SPH_C32(0xf0163baa), SPH_C32(0x865450fe),
+	  SPH_C32(0x5c8d1a25), SPH_C32(0x85b20c8f), SPH_C32(0x22dc0000),
+	  SPH_C32(0x1c220f48), SPH_C32(0xda950000), SPH_C32(0xc6720000),
+	  SPH_C32(0x90061386), SPH_C32(0x4879697f), SPH_C32(0x37232507),
+	  SPH_C32(0xd18cdcba) },
+	{ SPH_C32(0x73dc0000), SPH_C32(0xc0160ad8), SPH_C32(0x98a60000),
+	  SPH_C32(0xbcb00000), SPH_C32(0xdeb37575), SPH_C32(0xe01ad5ec),
+	  SPH_C32(0xe33702e6), SPH_C32(0xfbc35198), SPH_C32(0x9e510000),
+	  SPH_C32(0xe0190f50), SPH_C32(0xc3160000), SPH_C32(0x17790000),
+	  SPH_C32(0x3e1e6b42), SPH_C32(0x0adff129), SPH_C32(0x3731ff30),
+	  SPH_C32(0xfdb78cf4) },
+	{ SPH_C32(0x34230000), SPH_C32(0x41300a0c), SPH_C32(0xc3690000),
+	  SPH_C32(0x8a070000), SPH_C32(0x998a5d47), SPH_C32(0x73458c5b),
+	  SPH_C32(0xc65b44e6), SPH_C32(0x22e52e7c), SPH_C32(0xa3500000),
+	  SPH_C32(0x32890f90), SPH_C32(0x259b0000), SPH_C32(0xd1480000),
+	  SPH_C32(0xf42e2e33), SPH_C32(0xa23561e7), SPH_C32(0x0f67cf8f),
+	  SPH_C32(0x3f27722d) },
+	{ SPH_C32(0x60730000), SPH_C32(0x47410a50), SPH_C32(0xe6c70000),
+	  SPH_C32(0xe0190000), SPH_C32(0xb72f1398), SPH_C32(0x150b0949),
+	  SPH_C32(0x79e15c25), SPH_C32(0x5c94736b), SPH_C32(0x1fdd0000),
+	  SPH_C32(0xceb20f88), SPH_C32(0x3c180000), SPH_C32(0x00430000),
+	  SPH_C32(0x5a3656f7), SPH_C32(0xe093f9b1), SPH_C32(0x0f7515b8),
+	  SPH_C32(0x131c2263) },
+	{ SPH_C32(0x88ae0000), SPH_C32(0xbd0b0a14), SPH_C32(0xdaea0000),
+	  SPH_C32(0x5b0c0000), SPH_C32(0x37922583), SPH_C32(0x31e3140d),
+	  SPH_C32(0xc6499ed1), SPH_C32(0x0ede7e32), SPH_C32(0x4b8d0000),
+	  SPH_C32(0xc8c30fd4), SPH_C32(0x19b60000), SPH_C32(0x6a5d0000),
+	  SPH_C32(0x74931828), SPH_C32(0x86dd7ca3), SPH_C32(0xb0cf0d7b),
+	  SPH_C32(0x6d6d7f74) },
+	{ SPH_C32(0xdcfe0000), SPH_C32(0xbb7a0a48), SPH_C32(0xff440000),
+	  SPH_C32(0x31120000), SPH_C32(0x19376b5c), SPH_C32(0x57ad911f),
+	  SPH_C32(0x79f38612), SPH_C32(0x70af2325), SPH_C32(0xf7000000),
+	  SPH_C32(0x34f80fcc), SPH_C32(0x00350000), SPH_C32(0xbb560000),
+	  SPH_C32(0xda8b60ec), SPH_C32(0xc47be4f5), SPH_C32(0xb0ddd74c),
+	  SPH_C32(0x41562f3a) },
+	{ SPH_C32(0x5d720000), SPH_C32(0x95d10a90), SPH_C32(0x004a0000),
+	  SPH_C32(0x26280000), SPH_C32(0x7d1f56e9), SPH_C32(0xbde19987),
+	  SPH_C32(0x41b76c9a), SPH_C32(0x9e048db2), SPH_C32(0x65230000),
+	  SPH_C32(0x9d040f9c), SPH_C32(0x815a0000), SPH_C32(0xf0c50000),
+	  SPH_C32(0xd73f3bb4), SPH_C32(0xdb2630c8), SPH_C32(0x124f6307),
+	  SPH_C32(0x08aaa35e) },
+	{ SPH_C32(0x09220000), SPH_C32(0x93a00acc), SPH_C32(0x25e40000),
+	  SPH_C32(0x4c360000), SPH_C32(0x53ba1836), SPH_C32(0xdbaf1c95),
+	  SPH_C32(0xfe0d7459), SPH_C32(0xe075d0a5), SPH_C32(0xd9ae0000),
+	  SPH_C32(0x613f0f84), SPH_C32(0x98d90000), SPH_C32(0x21ce0000),
+	  SPH_C32(0x79274370), SPH_C32(0x9980a89e), SPH_C32(0x125db930),
+	  SPH_C32(0x2491f310) },
+	{ SPH_C32(0xe1ff0000), SPH_C32(0x69ea0a88), SPH_C32(0x19c90000),
+	  SPH_C32(0xf7230000), SPH_C32(0xd3072e2d), SPH_C32(0xff4701d1),
+	  SPH_C32(0x41a5b6ad), SPH_C32(0xb23fddfc), SPH_C32(0x8dfe0000),
+	  SPH_C32(0x674e0fd8), SPH_C32(0xbd770000), SPH_C32(0x4bd00000),
+	  SPH_C32(0x57820daf), SPH_C32(0xffce2d8c), SPH_C32(0xade7a1f3),
+	  SPH_C32(0x5ae0ae07) },
+	{ SPH_C32(0xb5af0000), SPH_C32(0x6f9b0ad4), SPH_C32(0x3c670000),
+	  SPH_C32(0x9d3d0000), SPH_C32(0xfda260f2), SPH_C32(0x990984c3),
+	  SPH_C32(0xfe1fae6e), SPH_C32(0xcc4e80eb), SPH_C32(0x31730000),
+	  SPH_C32(0x9b750fc0), SPH_C32(0xa4f40000), SPH_C32(0x9adb0000),
+	  SPH_C32(0xf99a756b), SPH_C32(0xbd68b5da), SPH_C32(0xadf57bc4),
+	  SPH_C32(0x76dbfe49) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x11480000), SPH_C32(0xa3c4175c), SPH_C32(0xdcc40000),
+	  SPH_C32(0x51560000), SPH_C32(0x30695af3), SPH_C32(0x455d10c4),
+	  SPH_C32(0xa906be73), SPH_C32(0xa142a9c8), SPH_C32(0x04b00000),
+	  SPH_C32(0xea4a0618), SPH_C32(0x2e190000), SPH_C32(0x24ba0000),
+	  SPH_C32(0x8c991968), SPH_C32(0xecee6913), SPH_C32(0x6636cc21),
+	  SPH_C32(0xe9fabb70) },
+	{ SPH_C32(0xf9950000), SPH_C32(0x598e1718), SPH_C32(0xe0e90000),
+	  SPH_C32(0xea430000), SPH_C32(0xb0d46ce8), SPH_C32(0x61b50d80),
+	  SPH_C32(0x16ae7c87), SPH_C32(0xf308a491), SPH_C32(0x50e00000),
+	  SPH_C32(0xec3b0644), SPH_C32(0x0bb70000), SPH_C32(0x4ea40000),
+	  SPH_C32(0xa23c57b7), SPH_C32(0x8aa0ec01), SPH_C32(0xd98cd4e2),
+	  SPH_C32(0x978be667) },
+	{ SPH_C32(0xadc50000), SPH_C32(0x5fff1744), SPH_C32(0xc5470000),
+	  SPH_C32(0x805d0000), SPH_C32(0x9e712237), SPH_C32(0x07fb8892),
+	  SPH_C32(0xa9146444), SPH_C32(0x8d79f986), SPH_C32(0xec6d0000),
+	  SPH_C32(0x1000065c), SPH_C32(0x12340000), SPH_C32(0x9faf0000),
+	  SPH_C32(0x0c242f73), SPH_C32(0xc8067457), SPH_C32(0xd99e0ed5),
+	  SPH_C32(0xbbb0b629) },
+	{ SPH_C32(0x2c490000), SPH_C32(0x7154179c), SPH_C32(0x3a490000),
+	  SPH_C32(0x97670000), SPH_C32(0xfa591f82), SPH_C32(0xedb7800a),
+	  SPH_C32(0x91508ecc), SPH_C32(0x63d25711), SPH_C32(0x7e4e0000),
+	  SPH_C32(0xb9fc060c), SPH_C32(0x935b0000), SPH_C32(0xd43c0000),
+	  SPH_C32(0x0190742b), SPH_C32(0xd75ba06a), SPH_C32(0x7b0cba9e),
+	  SPH_C32(0xf24c3a4d) },
+	{ SPH_C32(0x78190000), SPH_C32(0x772517c0), SPH_C32(0x1fe70000),
+	  SPH_C32(0xfd790000), SPH_C32(0xd4fc515d), SPH_C32(0x8bf90518),
+	  SPH_C32(0x2eea960f), SPH_C32(0x1da30a06), SPH_C32(0xc2c30000),
+	  SPH_C32(0x45c70614), SPH_C32(0x8ad80000), SPH_C32(0x05370000),
+	  SPH_C32(0xaf880cef), SPH_C32(0x95fd383c), SPH_C32(0x7b1e60a9),
+	  SPH_C32(0xde776a03) },
+	{ SPH_C32(0x90c40000), SPH_C32(0x8d6f1784), SPH_C32(0x23ca0000),
+	  SPH_C32(0x466c0000), SPH_C32(0x54416746), SPH_C32(0xaf11185c),
+	  SPH_C32(0x914254fb), SPH_C32(0x4fe9075f), SPH_C32(0x96930000),
+	  SPH_C32(0x43b60648), SPH_C32(0xaf760000), SPH_C32(0x6f290000),
+	  SPH_C32(0x812d4230), SPH_C32(0xf3b3bd2e), SPH_C32(0xc4a4786a),
+	  SPH_C32(0xa0063714) },
+	{ SPH_C32(0xc4940000), SPH_C32(0x8b1e17d8), SPH_C32(0x06640000),
+	  SPH_C32(0x2c720000), SPH_C32(0x7ae42999), SPH_C32(0xc95f9d4e),
+	  SPH_C32(0x2ef84c38), SPH_C32(0x31985a48), SPH_C32(0x2a1e0000),
+	  SPH_C32(0xbf8d0650), SPH_C32(0xb6f50000), SPH_C32(0xbe220000),
+	  SPH_C32(0x2f353af4), SPH_C32(0xb1152578), SPH_C32(0xc4b6a25d),
+	  SPH_C32(0x8c3d675a) },
+	{ SPH_C32(0x836b0000), SPH_C32(0x0a38170c), SPH_C32(0x5dab0000),
+	  SPH_C32(0x1ac50000), SPH_C32(0x3ddd01ab), SPH_C32(0x5a00c4f9),
+	  SPH_C32(0x0b940a38), SPH_C32(0xe8be25ac), SPH_C32(0x171f0000),
+	  SPH_C32(0x6d1d0690), SPH_C32(0x50780000), SPH_C32(0x78130000),
+	  SPH_C32(0xe5057f85), SPH_C32(0x19ffb5b6), SPH_C32(0xfce092e2),
+	  SPH_C32(0x4ead9983) },
+	{ SPH_C32(0xd73b0000), SPH_C32(0x0c491750), SPH_C32(0x78050000),
+	  SPH_C32(0x70db0000), SPH_C32(0x13784f74), SPH_C32(0x3c4e41eb),
+	  SPH_C32(0xb42e12fb), SPH_C32(0x96cf78bb), SPH_C32(0xab920000),
+	  SPH_C32(0x91260688), SPH_C32(0x49fb0000), SPH_C32(0xa9180000),
+	  SPH_C32(0x4b1d0741), SPH_C32(0x5b592de0), SPH_C32(0xfcf248d5),
+	  SPH_C32(0x6296c9cd) },
+	{ SPH_C32(0x3fe60000), SPH_C32(0xf6031714), SPH_C32(0x44280000),
+	  SPH_C32(0xcbce0000), SPH_C32(0x93c5796f), SPH_C32(0x18a65caf),
+	  SPH_C32(0x0b86d00f), SPH_C32(0xc48575e2), SPH_C32(0xffc20000),
+	  SPH_C32(0x975706d4), SPH_C32(0x6c550000), SPH_C32(0xc3060000),
+	  SPH_C32(0x65b8499e), SPH_C32(0x3d17a8f2), SPH_C32(0x43485016),
+	  SPH_C32(0x1ce794da) },
+	{ SPH_C32(0x6bb60000), SPH_C32(0xf0721748), SPH_C32(0x61860000),
+	  SPH_C32(0xa1d00000), SPH_C32(0xbd6037b0), SPH_C32(0x7ee8d9bd),
+	  SPH_C32(0xb43cc8cc), SPH_C32(0xbaf428f5), SPH_C32(0x434f0000),
+	  SPH_C32(0x6b6c06cc), SPH_C32(0x75d60000), SPH_C32(0x120d0000),
+	  SPH_C32(0xcba0315a), SPH_C32(0x7fb130a4), SPH_C32(0x435a8a21),
+	  SPH_C32(0x30dcc494) },
+	{ SPH_C32(0xea3a0000), SPH_C32(0xded91790), SPH_C32(0x9e880000),
+	  SPH_C32(0xb6ea0000), SPH_C32(0xd9480a05), SPH_C32(0x94a4d125),
+	  SPH_C32(0x8c782244), SPH_C32(0x545f8662), SPH_C32(0xd16c0000),
+	  SPH_C32(0xc290069c), SPH_C32(0xf4b90000), SPH_C32(0x599e0000),
+	  SPH_C32(0xc6146a02), SPH_C32(0x60ece499), SPH_C32(0xe1c83e6a),
+	  SPH_C32(0x792048f0) },
+	{ SPH_C32(0xbe6a0000), SPH_C32(0xd8a817cc), SPH_C32(0xbb260000),
+	  SPH_C32(0xdcf40000), SPH_C32(0xf7ed44da), SPH_C32(0xf2ea5437),
+	  SPH_C32(0x33c23a87), SPH_C32(0x2a2edb75), SPH_C32(0x6de10000),
+	  SPH_C32(0x3eab0684), SPH_C32(0xed3a0000), SPH_C32(0x88950000),
+	  SPH_C32(0x680c12c6), SPH_C32(0x224a7ccf), SPH_C32(0xe1dae45d),
+	  SPH_C32(0x551b18be) },
+	{ SPH_C32(0x56b70000), SPH_C32(0x22e21788), SPH_C32(0x870b0000),
+	  SPH_C32(0x67e10000), SPH_C32(0x775072c1), SPH_C32(0xd6024973),
+	  SPH_C32(0x8c6af873), SPH_C32(0x7864d62c), SPH_C32(0x39b10000),
+	  SPH_C32(0x38da06d8), SPH_C32(0xc8940000), SPH_C32(0xe28b0000),
+	  SPH_C32(0x46a95c19), SPH_C32(0x4404f9dd), SPH_C32(0x5e60fc9e),
+	  SPH_C32(0x2b6a45a9) },
+	{ SPH_C32(0x02e70000), SPH_C32(0x249317d4), SPH_C32(0xa2a50000),
+	  SPH_C32(0x0dff0000), SPH_C32(0x59f53c1e), SPH_C32(0xb04ccc61),
+	  SPH_C32(0x33d0e0b0), SPH_C32(0x06158b3b), SPH_C32(0x853c0000),
+	  SPH_C32(0xc4e106c0), SPH_C32(0xd1170000), SPH_C32(0x33800000),
+	  SPH_C32(0xe8b124dd), SPH_C32(0x06a2618b), SPH_C32(0x5e7226a9),
+	  SPH_C32(0x075115e7) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0x1d3a0000), SPH_C32(0xea21185c), SPH_C32(0x9ebd0000),
+	  SPH_C32(0x0dbc0000), SPH_C32(0x03c36ae9), SPH_C32(0x50df35d0),
+	  SPH_C32(0x3ca5f508), SPH_C32(0x1509a958), SPH_C32(0xfa920000),
+	  SPH_C32(0x4d120318), SPH_C32(0x0bc80000), SPH_C32(0xd3da0000),
+	  SPH_C32(0x05a861b2), SPH_C32(0xf33a9173), SPH_C32(0x28e66f34),
+	  SPH_C32(0x48d944ef) },
+	{ SPH_C32(0xf5e70000), SPH_C32(0x106b1818), SPH_C32(0xa2900000),
+	  SPH_C32(0xb6a90000), SPH_C32(0x837e5cf2), SPH_C32(0x74372894),
+	  SPH_C32(0x830d37fc), SPH_C32(0x4743a401), SPH_C32(0xaec20000),
+	  SPH_C32(0x4b630344), SPH_C32(0x2e660000), SPH_C32(0xb9c40000),
+	  SPH_C32(0x2b0d2f6d), SPH_C32(0x95741461), SPH_C32(0x975c77f7),
+	  SPH_C32(0x36a819f8) },
+	{ SPH_C32(0xa1b70000), SPH_C32(0x161a1844), SPH_C32(0x873e0000),
+	  SPH_C32(0xdcb70000), SPH_C32(0xaddb122d), SPH_C32(0x1279ad86),
+	  SPH_C32(0x3cb72f3f), SPH_C32(0x3932f916), SPH_C32(0x124f0000),
+	  SPH_C32(0xb758035c), SPH_C32(0x37e50000), SPH_C32(0x68cf0000),
+	  SPH_C32(0x851557a9), SPH_C32(0xd7d28c37), SPH_C32(0x974eadc0),
+	  SPH_C32(0x1a9349b6) },
+	{ SPH_C32(0x203b0000), SPH_C32(0x38b1189c), SPH_C32(0x78300000),
+	  SPH_C32(0xcb8d0000), SPH_C32(0xc9f32f98), SPH_C32(0xf835a51e),
+	  SPH_C32(0x04f3c5b7), SPH_C32(0xd7995781), SPH_C32(0x806c0000),
+	  SPH_C32(0x1ea4030c), SPH_C32(0xb68a0000), SPH_C32(0x235c0000),
+	  SPH_C32(0x88a10cf1), SPH_C32(0xc88f580a), SPH_C32(0x35dc198b),
+	  SPH_C32(0x536fc5d2) },
+	{ SPH_C32(0x746b0000), SPH_C32(0x3ec018c0), SPH_C32(0x5d9e0000),
+	  SPH_C32(0xa1930000), SPH_C32(0xe7566147), SPH_C32(0x9e7b200c),
+	  SPH_C32(0xbb49dd74), SPH_C32(0xa9e80a96), SPH_C32(0x3ce10000),
+	  SPH_C32(0xe29f0314), SPH_C32(0xaf090000), SPH_C32(0xf2570000),
+	  SPH_C32(0x26b97435), SPH_C32(0x8a29c05c), SPH_C32(0x35cec3bc),
+	  SPH_C32(0x7f54959c) },
+	{ SPH_C32(0x9cb60000), SPH_C32(0xc48a1884), SPH_C32(0x61b30000),
+	  SPH_C32(0x1a860000), SPH_C32(0x67eb575c), SPH_C32(0xba933d48),
+	  SPH_C32(0x04e11f80), SPH_C32(0xfba207cf), SPH_C32(0x68b10000),
+	  SPH_C32(0xe4ee0348), SPH_C32(0x8aa70000), SPH_C32(0x98490000),
+	  SPH_C32(0x081c3aea), SPH_C32(0xec67454e), SPH_C32(0x8a74db7f),
+	  SPH_C32(0x0125c88b) },
+	{ SPH_C32(0xc8e60000), SPH_C32(0xc2fb18d8), SPH_C32(0x441d0000),
+	  SPH_C32(0x70980000), SPH_C32(0x494e1983), SPH_C32(0xdcddb85a),
+	  SPH_C32(0xbb5b0743), SPH_C32(0x85d35ad8), SPH_C32(0xd43c0000),
+	  SPH_C32(0x18d50350), SPH_C32(0x93240000), SPH_C32(0x49420000),
+	  SPH_C32(0xa604422e), SPH_C32(0xaec1dd18), SPH_C32(0x8a660148),
+	  SPH_C32(0x2d1e98c5) },
+	{ SPH_C32(0x8f190000), SPH_C32(0x43dd180c), SPH_C32(0x1fd20000),
+	  SPH_C32(0x462f0000), SPH_C32(0x0e7731b1), SPH_C32(0x4f82e1ed),
+	  SPH_C32(0x9e374143), SPH_C32(0x5cf5253c), SPH_C32(0xe93d0000),
+	  SPH_C32(0xca450390), SPH_C32(0x75a90000), SPH_C32(0x8f730000),
+	  SPH_C32(0x6c34075f), SPH_C32(0x062b4dd6), SPH_C32(0xb23031f7),
+	  SPH_C32(0xef8e661c) },
+	{ SPH_C32(0xdb490000), SPH_C32(0x45ac1850), SPH_C32(0x3a7c0000),
+	  SPH_C32(0x2c310000), SPH_C32(0x20d27f6e), SPH_C32(0x29cc64ff),
+	  SPH_C32(0x218d5980), SPH_C32(0x2284782b), SPH_C32(0x55b00000),
+	  SPH_C32(0x367e0388), SPH_C32(0x6c2a0000), SPH_C32(0x5e780000),
+	  SPH_C32(0xc22c7f9b), SPH_C32(0x448dd580), SPH_C32(0xb222ebc0),
+	  SPH_C32(0xc3b53652) },
+	{ SPH_C32(0x33940000), SPH_C32(0xbfe61814), SPH_C32(0x06510000),
+	  SPH_C32(0x97240000), SPH_C32(0xa06f4975), SPH_C32(0x0d2479bb),
+	  SPH_C32(0x9e259b74), SPH_C32(0x70ce7572), SPH_C32(0x01e00000),
+	  SPH_C32(0x300f03d4), SPH_C32(0x49840000), SPH_C32(0x34660000),
+	  SPH_C32(0xec893144), SPH_C32(0x22c35092), SPH_C32(0x0d98f303),
+	  SPH_C32(0xbdc46b45) },
+	{ SPH_C32(0x67c40000), SPH_C32(0xb9971848), SPH_C32(0x23ff0000),
+	  SPH_C32(0xfd3a0000), SPH_C32(0x8eca07aa), SPH_C32(0x6b6afca9),
+	  SPH_C32(0x219f83b7), SPH_C32(0x0ebf2865), SPH_C32(0xbd6d0000),
+	  SPH_C32(0xcc3403cc), SPH_C32(0x50070000), SPH_C32(0xe56d0000),
+	  SPH_C32(0x42914980), SPH_C32(0x6065c8c4), SPH_C32(0x0d8a2934),
+	  SPH_C32(0x91ff3b0b) },
+	{ SPH_C32(0xe6480000), SPH_C32(0x973c1890), SPH_C32(0xdcf10000),
+	  SPH_C32(0xea000000), SPH_C32(0xeae23a1f), SPH_C32(0x8126f431),
+	  SPH_C32(0x19db693f), SPH_C32(0xe01486f2), SPH_C32(0x2f4e0000),
+	  SPH_C32(0x65c8039c), SPH_C32(0xd1680000), SPH_C32(0xaefe0000),
+	  SPH_C32(0x4f2512d8), SPH_C32(0x7f381cf9), SPH_C32(0xaf189d7f),
+	  SPH_C32(0xd803b76f) },
+	{ SPH_C32(0xb2180000), SPH_C32(0x914d18cc), SPH_C32(0xf95f0000),
+	  SPH_C32(0x801e0000), SPH_C32(0xc44774c0), SPH_C32(0xe7687123),
+	  SPH_C32(0xa66171fc), SPH_C32(0x9e65dbe5), SPH_C32(0x93c30000),
+	  SPH_C32(0x99f30384), SPH_C32(0xc8eb0000), SPH_C32(0x7ff50000),
+	  SPH_C32(0xe13d6a1c), SPH_C32(0x3d9e84af), SPH_C32(0xaf0a4748),
+	  SPH_C32(0xf438e721) },
+	{ SPH_C32(0x5ac50000), SPH_C32(0x6b071888), SPH_C32(0xc5720000),
+	  SPH_C32(0x3b0b0000), SPH_C32(0x44fa42db), SPH_C32(0xc3806c67),
+	  SPH_C32(0x19c9b308), SPH_C32(0xcc2fd6bc), SPH_C32(0xc7930000),
+	  SPH_C32(0x9f8203d8), SPH_C32(0xed450000), SPH_C32(0x15eb0000),
+	  SPH_C32(0xcf9824c3), SPH_C32(0x5bd001bd), SPH_C32(0x10b05f8b),
+	  SPH_C32(0x8a49ba36) },
+	{ SPH_C32(0x0e950000), SPH_C32(0x6d7618d4), SPH_C32(0xe0dc0000),
+	  SPH_C32(0x51150000), SPH_C32(0x6a5f0c04), SPH_C32(0xa5cee975),
+	  SPH_C32(0xa673abcb), SPH_C32(0xb25e8bab), SPH_C32(0x7b1e0000),
+	  SPH_C32(0x63b903c0), SPH_C32(0xf4c60000), SPH_C32(0xc4e00000),
+	  SPH_C32(0x61805c07), SPH_C32(0x197699eb), SPH_C32(0x10a285bc),
+	  SPH_C32(0xa672ea78) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0xef6a0000), SPH_C32(0x049c125c), SPH_C32(0xf9150000),
+	  SPH_C32(0xa6360000), SPH_C32(0xb9582229), SPH_C32(0x5a89e8a4),
+	  SPH_C32(0xe7d61d66), SPH_C32(0x00615657), SPH_C32(0xf6e00000),
+	  SPH_C32(0x04f70c18), SPH_C32(0x49b10000), SPH_C32(0x8f300000),
+	  SPH_C32(0x360251a8), SPH_C32(0xe6b8b467), SPH_C32(0xbd45244f),
+	  SPH_C32(0xfc92447f) },
+	{ SPH_C32(0x07b70000), SPH_C32(0xfed61218), SPH_C32(0xc5380000),
+	  SPH_C32(0x1d230000), SPH_C32(0x39e51432), SPH_C32(0x7e61f5e0),
+	  SPH_C32(0x587edf92), SPH_C32(0x522b5b0e), SPH_C32(0xa2b00000),
+	  SPH_C32(0x02860c44), SPH_C32(0x6c1f0000), SPH_C32(0xe52e0000),
+	  SPH_C32(0x18a71f77), SPH_C32(0x80f63175), SPH_C32(0x02ff3c8c),
+	  SPH_C32(0x82e31968) },
+	{ SPH_C32(0x53e70000), SPH_C32(0xf8a71244), SPH_C32(0xe0960000),
+	  SPH_C32(0x773d0000), SPH_C32(0x17405aed), SPH_C32(0x182f70f2),
+	  SPH_C32(0xe7c4c751), SPH_C32(0x2c5a0619), SPH_C32(0x1e3d0000),
+	  SPH_C32(0xfebd0c5c), SPH_C32(0x759c0000), SPH_C32(0x34250000),
+	  SPH_C32(0xb6bf67b3), SPH_C32(0xc250a923), SPH_C32(0x02ede6bb),
+	  SPH_C32(0xaed84926) },
+	{ SPH_C32(0xd26b0000), SPH_C32(0xd60c129c), SPH_C32(0x1f980000),
+	  SPH_C32(0x60070000), SPH_C32(0x73686758), SPH_C32(0xf263786a),
+	  SPH_C32(0xdf802dd9), SPH_C32(0xc2f1a88e), SPH_C32(0x8c1e0000),
+	  SPH_C32(0x57410c0c), SPH_C32(0xf4f30000), SPH_C32(0x7fb60000),
+	  SPH_C32(0xbb0b3ceb), SPH_C32(0xdd0d7d1e), SPH_C32(0xa07f52f0),
+	  SPH_C32(0xe724c542) },
+	{ SPH_C32(0x863b0000), SPH_C32(0xd07d12c0), SPH_C32(0x3a360000),
+	  SPH_C32(0x0a190000), SPH_C32(0x5dcd2987), SPH_C32(0x942dfd78),
+	  SPH_C32(0x603a351a), SPH_C32(0xbc80f599), SPH_C32(0x30930000),
+	  SPH_C32(0xab7a0c14), SPH_C32(0xed700000), SPH_C32(0xaebd0000),
+	  SPH_C32(0x1513442f), SPH_C32(0x9fabe548), SPH_C32(0xa06d88c7),
+	  SPH_C32(0xcb1f950c) },
+	{ SPH_C32(0x6ee60000), SPH_C32(0x2a371284), SPH_C32(0x061b0000),
+	  SPH_C32(0xb10c0000), SPH_C32(0xdd701f9c), SPH_C32(0xb0c5e03c),
+	  SPH_C32(0xdf92f7ee), SPH_C32(0xeecaf8c0), SPH_C32(0x64c30000),
+	  SPH_C32(0xad0b0c48), SPH_C32(0xc8de0000), SPH_C32(0xc4a30000),
+	  SPH_C32(0x3bb60af0), SPH_C32(0xf9e5605a), SPH_C32(0x1fd79004),
+	  SPH_C32(0xb56ec81b) },
+	{ SPH_C32(0x3ab60000), SPH_C32(0x2c4612d8), SPH_C32(0x23b50000),
+	  SPH_C32(0xdb120000), SPH_C32(0xf3d55143), SPH_C32(0xd68b652e),
+	  SPH_C32(0x6028ef2d), SPH_C32(0x90bba5d7), SPH_C32(0xd84e0000),
+	  SPH_C32(0x51300c50), SPH_C32(0xd15d0000), SPH_C32(0x15a80000),
+	  SPH_C32(0x95ae7234), SPH_C32(0xbb43f80c), SPH_C32(0x1fc54a33),
+	  SPH_C32(0x99559855) },
+	{ SPH_C32(0x7d490000), SPH_C32(0xad60120c), SPH_C32(0x787a0000),
+	  SPH_C32(0xeda50000), SPH_C32(0xb4ec7971), SPH_C32(0x45d43c99),
+	  SPH_C32(0x4544a92d), SPH_C32(0x499dda33), SPH_C32(0xe54f0000),
+	  SPH_C32(0x83a00c90), SPH_C32(0x37d00000), SPH_C32(0xd3990000),
+	  SPH_C32(0x5f9e3745), SPH_C32(0x13a968c2), SPH_C32(0x27937a8c),
+	  SPH_C32(0x5bc5668c) },
+	{ SPH_C32(0x29190000), SPH_C32(0xab111250), SPH_C32(0x5dd40000),
+	  SPH_C32(0x87bb0000), SPH_C32(0x9a4937ae), SPH_C32(0x239ab98b),
+	  SPH_C32(0xfafeb1ee), SPH_C32(0x37ec8724), SPH_C32(0x59c20000),
+	  SPH_C32(0x7f9b0c88), SPH_C32(0x2e530000), SPH_C32(0x02920000),
+	  SPH_C32(0xf1864f81), SPH_C32(0x510ff094), SPH_C32(0x2781a0bb),
+	  SPH_C32(0x77fe36c2) },
+	{ SPH_C32(0xc1c40000), SPH_C32(0x515b1214), SPH_C32(0x61f90000),
+	  SPH_C32(0x3cae0000), SPH_C32(0x1af401b5), SPH_C32(0x0772a4cf),
+	  SPH_C32(0x4556731a), SPH_C32(0x65a68a7d), SPH_C32(0x0d920000),
+	  SPH_C32(0x79ea0cd4), SPH_C32(0x0bfd0000), SPH_C32(0x688c0000),
+	  SPH_C32(0xdf23015e), SPH_C32(0x37417586), SPH_C32(0x983bb878),
+	  SPH_C32(0x098f6bd5) },
+	{ SPH_C32(0x95940000), SPH_C32(0x572a1248), SPH_C32(0x44570000),
+	  SPH_C32(0x56b00000), SPH_C32(0x34514f6a), SPH_C32(0x613c21dd),
+	  SPH_C32(0xfaec6bd9), SPH_C32(0x1bd7d76a), SPH_C32(0xb11f0000),
+	  SPH_C32(0x85d10ccc), SPH_C32(0x127e0000), SPH_C32(0xb9870000),
+	  SPH_C32(0x713b799a), SPH_C32(0x75e7edd0), SPH_C32(0x9829624f),
+	  SPH_C32(0x25b43b9b) },
+	{ SPH_C32(0x14180000), SPH_C32(0x79811290), SPH_C32(0xbb590000),
+	  SPH_C32(0x418a0000), SPH_C32(0x507972df), SPH_C32(0x8b702945),
+	  SPH_C32(0xc2a88151), SPH_C32(0xf57c79fd), SPH_C32(0x233c0000),
+	  SPH_C32(0x2c2d0c9c), SPH_C32(0x93110000), SPH_C32(0xf2140000),
+	  SPH_C32(0x7c8f22c2), SPH_C32(0x6aba39ed), SPH_C32(0x3abbd604),
+	  SPH_C32(0x6c48b7ff) },
+	{ SPH_C32(0x40480000), SPH_C32(0x7ff012cc), SPH_C32(0x9ef70000),
+	  SPH_C32(0x2b940000), SPH_C32(0x7edc3c00), SPH_C32(0xed3eac57),
+	  SPH_C32(0x7d129992), SPH_C32(0x8b0d24ea), SPH_C32(0x9fb10000),
+	  SPH_C32(0xd0160c84), SPH_C32(0x8a920000), SPH_C32(0x231f0000),
+	  SPH_C32(0xd2975a06), SPH_C32(0x281ca1bb), SPH_C32(0x3aa90c33),
+	  SPH_C32(0x4073e7b1) },
+	{ SPH_C32(0xa8950000), SPH_C32(0x85ba1288), SPH_C32(0xa2da0000),
+	  SPH_C32(0x90810000), SPH_C32(0xfe610a1b), SPH_C32(0xc9d6b113),
+	  SPH_C32(0xc2ba5b66), SPH_C32(0xd94729b3), SPH_C32(0xcbe10000),
+	  SPH_C32(0xd6670cd8), SPH_C32(0xaf3c0000), SPH_C32(0x49010000),
+	  SPH_C32(0xfc3214d9), SPH_C32(0x4e5224a9), SPH_C32(0x851314f0),
+	  SPH_C32(0x3e02baa6) },
+	{ SPH_C32(0xfcc50000), SPH_C32(0x83cb12d4), SPH_C32(0x87740000),
+	  SPH_C32(0xfa9f0000), SPH_C32(0xd0c444c4), SPH_C32(0xaf983401),
+	  SPH_C32(0x7d0043a5), SPH_C32(0xa73674a4), SPH_C32(0x776c0000),
+	  SPH_C32(0x2a5c0cc0), SPH_C32(0xb6bf0000), SPH_C32(0x980a0000),
+	  SPH_C32(0x522a6c1d), SPH_C32(0x0cf4bcff), SPH_C32(0x8501cec7),
+	  SPH_C32(0x1239eae8) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) },
+	{ SPH_C32(0xe3180000), SPH_C32(0x4d791d5c), SPH_C32(0xbb6c0000),
+	  SPH_C32(0xfadc0000), SPH_C32(0x8af21233), SPH_C32(0x4f0bcdb0),
+	  SPH_C32(0x7275561d), SPH_C32(0xb42a56c7), SPH_C32(0x08c20000),
+	  SPH_C32(0xa3af0918), SPH_C32(0x6c600000), SPH_C32(0x78500000),
+	  SPH_C32(0xbf332972), SPH_C32(0xf96c4c07), SPH_C32(0xf395875a),
+	  SPH_C32(0x5db1bbe0) },
+	{ SPH_C32(0x0bc50000), SPH_C32(0xb7331d18), SPH_C32(0x87410000),
+	  SPH_C32(0x41c90000), SPH_C32(0x0a4f2428), SPH_C32(0x6be3d0f4),
+	  SPH_C32(0xcddd94e9), SPH_C32(0xe6605b9e), SPH_C32(0x5c920000),
+	  SPH_C32(0xa5de0944), SPH_C32(0x49ce0000), SPH_C32(0x124e0000),
+	  SPH_C32(0x919667ad), SPH_C32(0x9f22c915), SPH_C32(0x4c2f9f99),
+	  SPH_C32(0x23c0e6f7) },
+	{ SPH_C32(0x5f950000), SPH_C32(0xb1421d44), SPH_C32(0xa2ef0000),
+	  SPH_C32(0x2bd70000), SPH_C32(0x24ea6af7), SPH_C32(0x0dad55e6),
+	  SPH_C32(0x72678c2a), SPH_C32(0x98110689), SPH_C32(0xe01f0000),
+	  SPH_C32(0x59e5095c), SPH_C32(0x504d0000), SPH_C32(0xc3450000),
+	  SPH_C32(0x3f8e1f69), SPH_C32(0xdd845143), SPH_C32(0x4c3d45ae),
+	  SPH_C32(0x0ffbb6b9) },
+	{ SPH_C32(0xde190000), SPH_C32(0x9fe91d9c), SPH_C32(0x5de10000),
+	  SPH_C32(0x3ced0000), SPH_C32(0x40c25742), SPH_C32(0xe7e15d7e),
+	  SPH_C32(0x4a2366a2), SPH_C32(0x76baa81e), SPH_C32(0x723c0000),
+	  SPH_C32(0xf019090c), SPH_C32(0xd1220000), SPH_C32(0x88d60000),
+	  SPH_C32(0x323a4431), SPH_C32(0xc2d9857e), SPH_C32(0xeeaff1e5),
+	  SPH_C32(0x46073add) },
+	{ SPH_C32(0x8a490000), SPH_C32(0x99981dc0), SPH_C32(0x784f0000),
+	  SPH_C32(0x56f30000), SPH_C32(0x6e67199d), SPH_C32(0x81afd86c),
+	  SPH_C32(0xf5997e61), SPH_C32(0x08cbf509), SPH_C32(0xceb10000),
+	  SPH_C32(0x0c220914), SPH_C32(0xc8a10000), SPH_C32(0x59dd0000),
+	  SPH_C32(0x9c223cf5), SPH_C32(0x807f1d28), SPH_C32(0xeebd2bd2),
+	  SPH_C32(0x6a3c6a93) },
+	{ SPH_C32(0x62940000), SPH_C32(0x63d21d84), SPH_C32(0x44620000),
+	  SPH_C32(0xede60000), SPH_C32(0xeeda2f86), SPH_C32(0xa547c528),
+	  SPH_C32(0x4a31bc95), SPH_C32(0x5a81f850), SPH_C32(0x9ae10000),
+	  SPH_C32(0x0a530948), SPH_C32(0xed0f0000), SPH_C32(0x33c30000),
+	  SPH_C32(0xb287722a), SPH_C32(0xe631983a), SPH_C32(0x51073311),
+	  SPH_C32(0x144d3784) },
+	{ SPH_C32(0x36c40000), SPH_C32(0x65a31dd8), SPH_C32(0x61cc0000),
+	  SPH_C32(0x87f80000), SPH_C32(0xc07f6159), SPH_C32(0xc309403a),
+	  SPH_C32(0xf58ba456), SPH_C32(0x24f0a547), SPH_C32(0x266c0000),
+	  SPH_C32(0xf6680950), SPH_C32(0xf48c0000), SPH_C32(0xe2c80000),
+	  SPH_C32(0x1c9f0aee), SPH_C32(0xa497006c), SPH_C32(0x5115e926),
+	  SPH_C32(0x387667ca) },
+	{ SPH_C32(0x713b0000), SPH_C32(0xe4851d0c), SPH_C32(0x3a030000),
+	  SPH_C32(0xb14f0000), SPH_C32(0x8746496b), SPH_C32(0x5056198d),
+	  SPH_C32(0xd0e7e256), SPH_C32(0xfdd6daa3), SPH_C32(0x1b6d0000),
+	  SPH_C32(0x24f80990), SPH_C32(0x12010000), SPH_C32(0x24f90000),
+	  SPH_C32(0xd6af4f9f), SPH_C32(0x0c7d90a2), SPH_C32(0x6943d999),
+	  SPH_C32(0xfae69913) },
+	{ SPH_C32(0x256b0000), SPH_C32(0xe2f41d50), SPH_C32(0x1fad0000),
+	  SPH_C32(0xdb510000), SPH_C32(0xa9e307b4), SPH_C32(0x36189c9f),
+	  SPH_C32(0x6f5dfa95), SPH_C32(0x83a787b4), SPH_C32(0xa7e00000),
+	  SPH_C32(0xd8c30988), SPH_C32(0x0b820000), SPH_C32(0xf5f20000),
+	  SPH_C32(0x78b7375b), SPH_C32(0x4edb08f4), SPH_C32(0x695103ae),
+	  SPH_C32(0xd6ddc95d) },
+	{ SPH_C32(0xcdb60000), SPH_C32(0x18be1d14), SPH_C32(0x23800000),
+	  SPH_C32(0x60440000), SPH_C32(0x295e31af), SPH_C32(0x12f081db),
+	  SPH_C32(0xd0f53861), SPH_C32(0xd1ed8aed), SPH_C32(0xf3b00000),
+	  SPH_C32(0xdeb209d4), SPH_C32(0x2e2c0000), SPH_C32(0x9fec0000),
+	  SPH_C32(0x56127984), SPH_C32(0x28958de6), SPH_C32(0xd6eb1b6d),
+	  SPH_C32(0xa8ac944a) },
+	{ SPH_C32(0x99e60000), SPH_C32(0x1ecf1d48), SPH_C32(0x062e0000),
+	  SPH_C32(0x0a5a0000), SPH_C32(0x07fb7f70), SPH_C32(0x74be04c9),
+	  SPH_C32(0x6f4f20a2), SPH_C32(0xaf9cd7fa), SPH_C32(0x4f3d0000),
+	  SPH_C32(0x228909cc), SPH_C32(0x37af0000), SPH_C32(0x4ee70000),
+	  SPH_C32(0xf80a0140), SPH_C32(0x6a3315b0), SPH_C32(0xd6f9c15a),
+	  SPH_C32(0x8497c404) },
+	{ SPH_C32(0x186a0000), SPH_C32(0x30641d90), SPH_C32(0xf9200000),
+	  SPH_C32(0x1d600000), SPH_C32(0x63d342c5), SPH_C32(0x9ef20c51),
+	  SPH_C32(0x570bca2a), SPH_C32(0x4137796d), SPH_C32(0xdd1e0000),
+	  SPH_C32(0x8b75099c), SPH_C32(0xb6c00000), SPH_C32(0x05740000),
+	  SPH_C32(0xf5be5a18), SPH_C32(0x756ec18d), SPH_C32(0x746b7511),
+	  SPH_C32(0xcd6b4860) },
+	{ SPH_C32(0x4c3a0000), SPH_C32(0x36151dcc), SPH_C32(0xdc8e0000),
+	  SPH_C32(0x777e0000), SPH_C32(0x4d760c1a), SPH_C32(0xf8bc8943),
+	  SPH_C32(0xe8b1d2e9), SPH_C32(0x3f46247a), SPH_C32(0x61930000),
+	  SPH_C32(0x774e0984), SPH_C32(0xaf430000), SPH_C32(0xd47f0000),
+	  SPH_C32(0x5ba622dc), SPH_C32(0x37c859db), SPH_C32(0x7479af26),
+	  SPH_C32(0xe150182e) },
+	{ SPH_C32(0xa4e70000), SPH_C32(0xcc5f1d88), SPH_C32(0xe0a30000),
+	  SPH_C32(0xcc6b0000), SPH_C32(0xcdcb3a01), SPH_C32(0xdc549407),
+	  SPH_C32(0x5719101d), SPH_C32(0x6d0c2923), SPH_C32(0x35c30000),
+	  SPH_C32(0x713f09d8), SPH_C32(0x8aed0000), SPH_C32(0xbe610000),
+	  SPH_C32(0x75036c03), SPH_C32(0x5186dcc9), SPH_C32(0xcbc3b7e5),
+	  SPH_C32(0x9f214539) },
+	{ SPH_C32(0xf0b70000), SPH_C32(0xca2e1dd4), SPH_C32(0xc50d0000),
+	  SPH_C32(0xa6750000), SPH_C32(0xe36e74de), SPH_C32(0xba1a1115),
+	  SPH_C32(0xe8a308de), SPH_C32(0x137d7434), SPH_C32(0x894e0000),
+	  SPH_C32(0x8d0409c0), SPH_C32(0x936e0000), SPH_C32(0x6f6a0000),
+	  SPH_C32(0xdb1b14c7), SPH_C32(0x1320449f), SPH_C32(0xcbd16dd2),
+	  SPH_C32(0xb31a1577) }
+};
+
+static const sph_u32 T512_28[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0xc56b0000), SPH_C32(0xd7e60000), SPH_C32(0x2452c180),
+	  SPH_C32(0xf6c50000), SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f),
+	  SPH_C32(0x8ef57364), SPH_C32(0x70c6f340), SPH_C32(0xc7e00000),
+	  SPH_C32(0x500f0001), SPH_C32(0x18783200), SPH_C32(0xd9930000),
+	  SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff), SPH_C32(0xdb154315),
+	  SPH_C32(0x4230ddcd) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) },
+	{ SPH_C32(0x6ba80000), SPH_C32(0x4ba90001), SPH_C32(0x5d832180),
+	  SPH_C32(0xdad00000), SPH_C32(0x63751974), SPH_C32(0xd089ea49),
+	  SPH_C32(0x256784eb), SPH_C32(0xd3d4a53b), SPH_C32(0x1cc50000),
+	  SPH_C32(0x59260001), SPH_C32(0x51d2f200), SPH_C32(0x58720000),
+	  SPH_C32(0xf30e4347), SPH_C32(0x8d428ece), SPH_C32(0x98432863),
+	  SPH_C32(0xaa5c67e3) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x98370000), SPH_C32(0xe1f60002), SPH_C32(0x8c62e180),
+	  SPH_C32(0xef720000), SPH_C32(0x79226090), SPH_C32(0xba28a1a4),
+	  SPH_C32(0x1e7e5156), SPH_C32(0x8eb793d7), SPH_C32(0x82b10000),
+	  SPH_C32(0x20b90000), SPH_C32(0xdcf77200), SPH_C32(0x36a30000),
+	  SPH_C32(0xd57a0b9e), SPH_C32(0x93a8ad98), SPH_C32(0x127e7e06),
+	  SPH_C32(0xb9eb29ac) },
+	{ SPH_C32(0x28ba0000), SPH_C32(0xa3760003), SPH_C32(0x984b0000),
+	  SPH_C32(0xb4430000), SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc),
+	  SPH_C32(0x784fbecb), SPH_C32(0xb50f8cc2), SPH_C32(0xeb920000),
+	  SPH_C32(0xecf90000), SPH_C32(0xbd5ea000), SPH_C32(0xc3250000),
+	  SPH_C32(0xa9465633), SPH_C32(0x3ac3a051), SPH_C32(0x62f9ca9c),
+	  SPH_C32(0x58c9a21a) },
+	{ SPH_C32(0x36f40000), SPH_C32(0x7db90003), SPH_C32(0xf5b30180),
+	  SPH_C32(0xc3670000), SPH_C32(0x3cee1523), SPH_C32(0xdc781692),
+	  SPH_C32(0xb5eca6d9), SPH_C32(0x2da5c5ac), SPH_C32(0x59940000),
+	  SPH_C32(0x29900000), SPH_C32(0x955db200), SPH_C32(0xb7420000),
+	  SPH_C32(0x1f8460c7), SPH_C32(0xd1d199a9), SPH_C32(0x51281570),
+	  SPH_C32(0x51879382) },
+	{ SPH_C32(0x5d5c0000), SPH_C32(0x36100002), SPH_C32(0xa8302000),
+	  SPH_C32(0x19b70000), SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb),
+	  SPH_C32(0x908b2232), SPH_C32(0xfe716097), SPH_C32(0x45510000),
+	  SPH_C32(0x70b60001), SPH_C32(0xc48f4000), SPH_C32(0xef300000),
+	  SPH_C32(0xec8a2380), SPH_C32(0x5c931767), SPH_C32(0xc96b3d13),
+	  SPH_C32(0xfbdbf461) },
+	{ SPH_C32(0x43120000), SPH_C32(0xe8df0002), SPH_C32(0xc5c82180),
+	  SPH_C32(0x6e930000), SPH_C32(0xb3dc0bc9), SPH_C32(0xf8519595),
+	  SPH_C32(0x5d283a20), SPH_C32(0x66db29f9), SPH_C32(0xf7570000),
+	  SPH_C32(0xb5df0001), SPH_C32(0xec8c5200), SPH_C32(0x9b570000),
+	  SPH_C32(0x5a481574), SPH_C32(0xb7812e9f), SPH_C32(0xfabae2ff),
+	  SPH_C32(0xf295c5f9) },
+	{ SPH_C32(0xf39f0000), SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000),
+	  SPH_C32(0x35a20000), SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed),
+	  SPH_C32(0x3b19d5bd), SPH_C32(0x5d6336ec), SPH_C32(0x9e740000),
+	  SPH_C32(0x799f0001), SPH_C32(0x8d258000), SPH_C32(0x6ed10000),
+	  SPH_C32(0x267448d9), SPH_C32(0x1eea2356), SPH_C32(0x8a3d5665),
+	  SPH_C32(0x13b74e4f) },
+	{ SPH_C32(0xedd10000), SPH_C32(0x74900003), SPH_C32(0xbc19c180),
+	  SPH_C32(0x42860000), SPH_C32(0xf6107e7a), SPH_C32(0x9e0122a3),
+	  SPH_C32(0xf6bacdaf), SPH_C32(0xc5c97f82), SPH_C32(0x2c720000),
+	  SPH_C32(0xbcf60001), SPH_C32(0xa5269200), SPH_C32(0x1ab60000),
+	  SPH_C32(0x90b67e2d), SPH_C32(0xf5f81aae), SPH_C32(0xb9ec8989),
+	  SPH_C32(0x1af97fd7) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0x2ef90000), SPH_C32(0x3b1f0000), SPH_C32(0x990c6180),
+	  SPH_C32(0x35e00000), SPH_C32(0x8fff3af4), SPH_C32(0x8c1afd2e),
+	  SPH_C32(0xec0cb9f8), SPH_C32(0x280f515a), SPH_C32(0x04c80000),
+	  SPH_C32(0x1f800002), SPH_C32(0x3d6d9200), SPH_C32(0xaef50000),
+	  SPH_C32(0x401f6c90), SPH_C32(0xdd206572), SPH_C32(0xc1a33742),
+	  SPH_C32(0xaff6f315) },
+	{ SPH_C32(0x9e740000), SPH_C32(0x799f0001), SPH_C32(0x8d258000),
+	  SPH_C32(0x6ed10000), SPH_C32(0x267448d9), SPH_C32(0x1eea2356),
+	  SPH_C32(0x8a3d5665), SPH_C32(0x13b74e4f), SPH_C32(0x6deb0000),
+	  SPH_C32(0xd3c00002), SPH_C32(0x5cc44000), SPH_C32(0x5b730000),
+	  SPH_C32(0x3c23313d), SPH_C32(0x744b68bb), SPH_C32(0xb12483d8),
+	  SPH_C32(0x4ed478a3) },
+	{ SPH_C32(0x803a0000), SPH_C32(0xa7500001), SPH_C32(0xe0dd8180),
+	  SPH_C32(0x19f50000), SPH_C32(0xca334f47), SPH_C32(0xea4a4a18),
+	  SPH_C32(0x479e4e77), SPH_C32(0x8b1d0721), SPH_C32(0xdfed0000),
+	  SPH_C32(0x16a90002), SPH_C32(0x74c75200), SPH_C32(0x2f140000),
+	  SPH_C32(0x8ae107c9), SPH_C32(0x9f595143), SPH_C32(0x82f55c34),
+	  SPH_C32(0x479a493b) },
+	{ SPH_C32(0xeb920000), SPH_C32(0xecf90000), SPH_C32(0xbd5ea000),
+	  SPH_C32(0xc3250000), SPH_C32(0xa9465633), SPH_C32(0x3ac3a051),
+	  SPH_C32(0x62f9ca9c), SPH_C32(0x58c9a21a), SPH_C32(0xc3280000),
+	  SPH_C32(0x4f8f0003), SPH_C32(0x2515a000), SPH_C32(0x77660000),
+	  SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d), SPH_C32(0x1ab67457),
+	  SPH_C32(0xedc62ed8) },
+	{ SPH_C32(0xf5dc0000), SPH_C32(0x32360000), SPH_C32(0xd0a6a180),
+	  SPH_C32(0xb4010000), SPH_C32(0x450151ad), SPH_C32(0xce63c91f),
+	  SPH_C32(0xaf5ad28e), SPH_C32(0xc063eb74), SPH_C32(0x712e0000),
+	  SPH_C32(0x8ae60003), SPH_C32(0x0d16b200), SPH_C32(0x03010000),
+	  SPH_C32(0xcf2d727a), SPH_C32(0xf909e675), SPH_C32(0x2967abbb),
+	  SPH_C32(0xe4881f40) },
+	{ SPH_C32(0x45510000), SPH_C32(0x70b60001), SPH_C32(0xc48f4000),
+	  SPH_C32(0xef300000), SPH_C32(0xec8a2380), SPH_C32(0x5c931767),
+	  SPH_C32(0xc96b3d13), SPH_C32(0xfbdbf461), SPH_C32(0x180d0000),
+	  SPH_C32(0x46a60003), SPH_C32(0x6cbf6000), SPH_C32(0xf6870000),
+	  SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc), SPH_C32(0x59e01f21),
+	  SPH_C32(0x05aa94f6) },
+	{ SPH_C32(0x5b1f0000), SPH_C32(0xae790001), SPH_C32(0xa9774180),
+	  SPH_C32(0x98140000), SPH_C32(0x00cd241e), SPH_C32(0xa8337e29),
+	  SPH_C32(0x04c82501), SPH_C32(0x6371bd0f), SPH_C32(0xaa0b0000),
+	  SPH_C32(0x83cf0003), SPH_C32(0x44bc7200), SPH_C32(0x82e00000),
+	  SPH_C32(0x05d31923), SPH_C32(0xbb70d244), SPH_C32(0x6a31c0cd),
+	  SPH_C32(0x0ce4a56e) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0xa8800000), SPH_C32(0x04260002), SPH_C32(0x78968180),
+	  SPH_C32(0xadb60000), SPH_C32(0x1a9a5dfa), SPH_C32(0xc29235c4),
+	  SPH_C32(0x3fd1f0bc), SPH_C32(0x3e128be3), SPH_C32(0x347f0000),
+	  SPH_C32(0xfa500002), SPH_C32(0xc999f200), SPH_C32(0xec310000),
+	  SPH_C32(0x23a751fa), SPH_C32(0xa59af112), SPH_C32(0xe00c96a8),
+	  SPH_C32(0x1f53eb21) },
+	{ SPH_C32(0x180d0000), SPH_C32(0x46a60003), SPH_C32(0x6cbf6000),
+	  SPH_C32(0xf6870000), SPH_C32(0xb3112fd7), SPH_C32(0x5062ebbc),
+	  SPH_C32(0x59e01f21), SPH_C32(0x05aa94f6), SPH_C32(0x5d5c0000),
+	  SPH_C32(0x36100002), SPH_C32(0xa8302000), SPH_C32(0x19b70000),
+	  SPH_C32(0x5f9b0c57), SPH_C32(0x0cf1fcdb), SPH_C32(0x908b2232),
+	  SPH_C32(0xfe716097) },
+	{ SPH_C32(0x06430000), SPH_C32(0x98690003), SPH_C32(0x01476180),
+	  SPH_C32(0x81a30000), SPH_C32(0x5f562849), SPH_C32(0xa4c282f2),
+	  SPH_C32(0x94430733), SPH_C32(0x9d00dd98), SPH_C32(0xef5a0000),
+	  SPH_C32(0xf3790002), SPH_C32(0x80333200), SPH_C32(0x6dd00000),
+	  SPH_C32(0xe9593aa3), SPH_C32(0xe7e3c523), SPH_C32(0xa35afdde),
+	  SPH_C32(0xf73f510f) },
+	{ SPH_C32(0x6deb0000), SPH_C32(0xd3c00002), SPH_C32(0x5cc44000),
+	  SPH_C32(0x5b730000), SPH_C32(0x3c23313d), SPH_C32(0x744b68bb),
+	  SPH_C32(0xb12483d8), SPH_C32(0x4ed478a3), SPH_C32(0xf39f0000),
+	  SPH_C32(0xaa5f0003), SPH_C32(0xd1e1c000), SPH_C32(0x35a20000),
+	  SPH_C32(0x1a5779e4), SPH_C32(0x6aa14bed), SPH_C32(0x3b19d5bd),
+	  SPH_C32(0x5d6336ec) },
+	{ SPH_C32(0x73a50000), SPH_C32(0x0d0f0002), SPH_C32(0x313c4180),
+	  SPH_C32(0x2c570000), SPH_C32(0xd06436a3), SPH_C32(0x80eb01f5),
+	  SPH_C32(0x7c879bca), SPH_C32(0xd67e31cd), SPH_C32(0x41990000),
+	  SPH_C32(0x6f360003), SPH_C32(0xf9e2d200), SPH_C32(0x41c50000),
+	  SPH_C32(0xac954f10), SPH_C32(0x81b37215), SPH_C32(0x08c80a51),
+	  SPH_C32(0x542d0774) },
+	{ SPH_C32(0xc3280000), SPH_C32(0x4f8f0003), SPH_C32(0x2515a000),
+	  SPH_C32(0x77660000), SPH_C32(0x79ef448e), SPH_C32(0x121bdf8d),
+	  SPH_C32(0x1ab67457), SPH_C32(0xedc62ed8), SPH_C32(0x28ba0000),
+	  SPH_C32(0xa3760003), SPH_C32(0x984b0000), SPH_C32(0xb4430000),
+	  SPH_C32(0xd0a912bd), SPH_C32(0x28d87fdc), SPH_C32(0x784fbecb),
+	  SPH_C32(0xb50f8cc2) },
+	{ SPH_C32(0xdd660000), SPH_C32(0x91400003), SPH_C32(0x48eda180),
+	  SPH_C32(0x00420000), SPH_C32(0x95a84310), SPH_C32(0xe6bbb6c3),
+	  SPH_C32(0xd7156c45), SPH_C32(0x756c67b6), SPH_C32(0x9abc0000),
+	  SPH_C32(0x661f0003), SPH_C32(0xb0481200), SPH_C32(0xc0240000),
+	  SPH_C32(0x666b2449), SPH_C32(0xc3ca4624), SPH_C32(0x4b9e6127),
+	  SPH_C32(0xbc41bd5a) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0x0a570000), SPH_C32(0xfd05003c), SPH_C32(0x3d270180),
+	  SPH_C32(0x33920000), SPH_C32(0xf72b602e), SPH_C32(0xc853c53b),
+	  SPH_C32(0xac4508a2), SPH_C32(0x436092ee), SPH_C32(0x51450000),
+	  SPH_C32(0xff270014), SPH_C32(0xdac51200), SPH_C32(0xde290000),
+	  SPH_C32(0x6ddc7452), SPH_C32(0xce7987ed), SPH_C32(0x21ec6eba),
+	  SPH_C32(0x3300a84f) },
+	{ SPH_C32(0xbada0000), SPH_C32(0xbf85003d), SPH_C32(0x290ee000),
+	  SPH_C32(0x68a30000), SPH_C32(0x5ea01203), SPH_C32(0x5aa31b43),
+	  SPH_C32(0xca74e73f), SPH_C32(0x78d88dfb), SPH_C32(0x38660000),
+	  SPH_C32(0x33670014), SPH_C32(0xbb6cc000), SPH_C32(0x2baf0000),
+	  SPH_C32(0x11e029ff), SPH_C32(0x67128a24), SPH_C32(0x516bda20),
+	  SPH_C32(0xd22223f9) },
+	{ SPH_C32(0xa4940000), SPH_C32(0x614a003d), SPH_C32(0x44f6e180),
+	  SPH_C32(0x1f870000), SPH_C32(0xb2e7159d), SPH_C32(0xae03720d),
+	  SPH_C32(0x07d7ff2d), SPH_C32(0xe072c495), SPH_C32(0x8a600000),
+	  SPH_C32(0xf60e0014), SPH_C32(0x936fd200), SPH_C32(0x5fc80000),
+	  SPH_C32(0xa7221f0b), SPH_C32(0x8c00b3dc), SPH_C32(0x62ba05cc),
+	  SPH_C32(0xdb6c1261) },
+	{ SPH_C32(0xcf3c0000), SPH_C32(0x2ae3003c), SPH_C32(0x1975c000),
+	  SPH_C32(0xc5570000), SPH_C32(0xd1920ce9), SPH_C32(0x7e8a9844),
+	  SPH_C32(0x22b07bc6), SPH_C32(0x33a661ae), SPH_C32(0x96a50000),
+	  SPH_C32(0xaf280015), SPH_C32(0xc2bd2000), SPH_C32(0x07ba0000),
+	  SPH_C32(0x542c5c4c), SPH_C32(0x01423d12), SPH_C32(0xfaf92daf),
+	  SPH_C32(0x71307582) },
+	{ SPH_C32(0xd1720000), SPH_C32(0xf42c003c), SPH_C32(0x748dc180),
+	  SPH_C32(0xb2730000), SPH_C32(0x3dd50b77), SPH_C32(0x8a2af10a),
+	  SPH_C32(0xef1363d4), SPH_C32(0xab0c28c0), SPH_C32(0x24a30000),
+	  SPH_C32(0x6a410015), SPH_C32(0xeabe3200), SPH_C32(0x73dd0000),
+	  SPH_C32(0xe2ee6ab8), SPH_C32(0xea5004ea), SPH_C32(0xc928f243),
+	  SPH_C32(0x787e441a) },
+	{ SPH_C32(0x61ff0000), SPH_C32(0xb6ac003d), SPH_C32(0x60a42000),
+	  SPH_C32(0xe9420000), SPH_C32(0x945e795a), SPH_C32(0x18da2f72),
+	  SPH_C32(0x89228c49), SPH_C32(0x90b437d5), SPH_C32(0x4d800000),
+	  SPH_C32(0xa6010015), SPH_C32(0x8b17e000), SPH_C32(0x865b0000),
+	  SPH_C32(0x9ed23715), SPH_C32(0x433b0923), SPH_C32(0xb9af46d9),
+	  SPH_C32(0x995ccfac) },
+	{ SPH_C32(0x7fb10000), SPH_C32(0x6863003d), SPH_C32(0x0d5c2180),
+	  SPH_C32(0x9e660000), SPH_C32(0x78197ec4), SPH_C32(0xec7a463c),
+	  SPH_C32(0x4481945b), SPH_C32(0x081e7ebb), SPH_C32(0xff860000),
+	  SPH_C32(0x63680015), SPH_C32(0xa314f200), SPH_C32(0xf23c0000),
+	  SPH_C32(0x281001e1), SPH_C32(0xa82930db), SPH_C32(0x8a7e9935),
+	  SPH_C32(0x9012fe34) },
+	{ SPH_C32(0x92600000), SPH_C32(0x1cf3003e), SPH_C32(0xb145e000),
+	  SPH_C32(0xdce00000), SPH_C32(0x8e0900be), SPH_C32(0x727b649f),
+	  SPH_C32(0xb23b59f4), SPH_C32(0xcdd70139), SPH_C32(0xd3f40000),
+	  SPH_C32(0xdf9e0014), SPH_C32(0x06326000), SPH_C32(0xe88a0000),
+	  SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75), SPH_C32(0x339210bc),
+	  SPH_C32(0x8aeb81e3) },
+	{ SPH_C32(0x8c2e0000), SPH_C32(0xc23c003e), SPH_C32(0xdcbde180),
+	  SPH_C32(0xabc40000), SPH_C32(0x624e0720), SPH_C32(0x86db0dd1),
+	  SPH_C32(0x7f9841e6), SPH_C32(0x557d4857), SPH_C32(0x61f20000),
+	  SPH_C32(0x1af70014), SPH_C32(0x2e317200), SPH_C32(0x9ced0000),
+	  SPH_C32(0x0e644938), SPH_C32(0xb6c3138d), SPH_C32(0x0043cf50),
+	  SPH_C32(0x83a5b07b) },
+	{ SPH_C32(0x3ca30000), SPH_C32(0x80bc003f), SPH_C32(0xc8940000),
+	  SPH_C32(0xf0f50000), SPH_C32(0xcbc5750d), SPH_C32(0x142bd3a9),
+	  SPH_C32(0x19a9ae7b), SPH_C32(0x6ec55742), SPH_C32(0x08d10000),
+	  SPH_C32(0xd6b70014), SPH_C32(0x4f98a000), SPH_C32(0x696b0000),
+	  SPH_C32(0x72581495), SPH_C32(0x1fa81e44), SPH_C32(0x70c47bca),
+	  SPH_C32(0x62873bcd) },
+	{ SPH_C32(0x22ed0000), SPH_C32(0x5e73003f), SPH_C32(0xa56c0180),
+	  SPH_C32(0x87d10000), SPH_C32(0x27827293), SPH_C32(0xe08bbae7),
+	  SPH_C32(0xd40ab669), SPH_C32(0xf66f1e2c), SPH_C32(0xbad70000),
+	  SPH_C32(0x13de0014), SPH_C32(0x679bb200), SPH_C32(0x1d0c0000),
+	  SPH_C32(0xc49a2261), SPH_C32(0xf4ba27bc), SPH_C32(0x4315a426),
+	  SPH_C32(0x6bc90a55) },
+	{ SPH_C32(0x49450000), SPH_C32(0x15da003e), SPH_C32(0xf8ef2000),
+	  SPH_C32(0x5d010000), SPH_C32(0x44f76be7), SPH_C32(0x300250ae),
+	  SPH_C32(0xf16d3282), SPH_C32(0x25bbbb17), SPH_C32(0xa6120000),
+	  SPH_C32(0x4af80015), SPH_C32(0x36494000), SPH_C32(0x457e0000),
+	  SPH_C32(0x37946126), SPH_C32(0x79f8a972), SPH_C32(0xdb568c45),
+	  SPH_C32(0xc1956db6) },
+	{ SPH_C32(0x570b0000), SPH_C32(0xcb15003e), SPH_C32(0x95172180),
+	  SPH_C32(0x2a250000), SPH_C32(0xa8b06c79), SPH_C32(0xc4a239e0),
+	  SPH_C32(0x3cce2a90), SPH_C32(0xbd11f279), SPH_C32(0x14140000),
+	  SPH_C32(0x8f910015), SPH_C32(0x1e4a5200), SPH_C32(0x31190000),
+	  SPH_C32(0x815657d2), SPH_C32(0x92ea908a), SPH_C32(0xe88753a9),
+	  SPH_C32(0xc8db5c2e) },
+	{ SPH_C32(0xe7860000), SPH_C32(0x8995003f), SPH_C32(0x813ec000),
+	  SPH_C32(0x71140000), SPH_C32(0x013b1e54), SPH_C32(0x5652e798),
+	  SPH_C32(0x5affc50d), SPH_C32(0x86a9ed6c), SPH_C32(0x7d370000),
+	  SPH_C32(0x43d10015), SPH_C32(0x7fe38000), SPH_C32(0xc49f0000),
+	  SPH_C32(0xfd6a0a7f), SPH_C32(0x3b819d43), SPH_C32(0x9800e733),
+	  SPH_C32(0x29f9d798) },
+	{ SPH_C32(0xf9c80000), SPH_C32(0x575a003f), SPH_C32(0xecc6c180),
+	  SPH_C32(0x06300000), SPH_C32(0xed7c19ca), SPH_C32(0xa2f28ed6),
+	  SPH_C32(0x975cdd1f), SPH_C32(0x1e03a402), SPH_C32(0xcf310000),
+	  SPH_C32(0x86b80015), SPH_C32(0x57e09200), SPH_C32(0xb0f80000),
+	  SPH_C32(0x4ba83c8b), SPH_C32(0xd093a4bb), SPH_C32(0xabd138df),
+	  SPH_C32(0x20b7e600) },
+	{ SPH_C32(0x24ae0000), SPH_C32(0xc61a003c), SPH_C32(0xa42b6000),
+	  SPH_C32(0x06720000), SPH_C32(0x78d45ada), SPH_C32(0x44493815),
+	  SPH_C32(0x4049b15a), SPH_C32(0x6b6fc3b4), SPH_C32(0x558d0000),
+	  SPH_C32(0xe0a70016), SPH_C32(0xe7a88000), SPH_C32(0x70dc0000),
+	  SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f), SPH_C32(0xe04f59f8),
+	  SPH_C32(0x9cf65b5a) },
+	{ SPH_C32(0x3ae00000), SPH_C32(0x18d5003c), SPH_C32(0xc9d36180),
+	  SPH_C32(0x71560000), SPH_C32(0x94935d44), SPH_C32(0xb0e9515b),
+	  SPH_C32(0x8deaa948), SPH_C32(0xf3c58ada), SPH_C32(0xe78b0000),
+	  SPH_C32(0x25ce0016), SPH_C32(0xcfab9200), SPH_C32(0x04bb0000),
+	  SPH_C32(0x9b012e36), SPH_C32(0xf84bdb67), SPH_C32(0xd39e8614),
+	  SPH_C32(0x95b86ac2) },
+	{ SPH_C32(0x8a6d0000), SPH_C32(0x5a55003d), SPH_C32(0xddfa8000),
+	  SPH_C32(0x2a670000), SPH_C32(0x3d182f69), SPH_C32(0x22198f23),
+	  SPH_C32(0xebdb46d5), SPH_C32(0xc87d95cf), SPH_C32(0x8ea80000),
+	  SPH_C32(0xe98e0016), SPH_C32(0xae024000), SPH_C32(0xf13d0000),
+	  SPH_C32(0xe73d739b), SPH_C32(0x5120d6ae), SPH_C32(0xa319328e),
+	  SPH_C32(0x749ae174) },
+	{ SPH_C32(0x94230000), SPH_C32(0x849a003d), SPH_C32(0xb0028180),
+	  SPH_C32(0x5d430000), SPH_C32(0xd15f28f7), SPH_C32(0xd6b9e66d),
+	  SPH_C32(0x26785ec7), SPH_C32(0x50d7dca1), SPH_C32(0x3cae0000),
+	  SPH_C32(0x2ce70016), SPH_C32(0x86015200), SPH_C32(0x855a0000),
+	  SPH_C32(0x51ff456f), SPH_C32(0xba32ef56), SPH_C32(0x90c8ed62),
+	  SPH_C32(0x7dd4d0ec) },
+	{ SPH_C32(0xff8b0000), SPH_C32(0xcf33003c), SPH_C32(0xed81a000),
+	  SPH_C32(0x87930000), SPH_C32(0xb22a3183), SPH_C32(0x06300c24),
+	  SPH_C32(0x031fda2c), SPH_C32(0x8303799a), SPH_C32(0x206b0000),
+	  SPH_C32(0x75c10017), SPH_C32(0xd7d3a000), SPH_C32(0xdd280000),
+	  SPH_C32(0xa2f10628), SPH_C32(0x37706198), SPH_C32(0x088bc501),
+	  SPH_C32(0xd788b70f) },
+	{ SPH_C32(0xe1c50000), SPH_C32(0x11fc003c), SPH_C32(0x8079a180),
+	  SPH_C32(0xf0b70000), SPH_C32(0x5e6d361d), SPH_C32(0xf290656a),
+	  SPH_C32(0xcebcc23e), SPH_C32(0x1ba930f4), SPH_C32(0x926d0000),
+	  SPH_C32(0xb0a80017), SPH_C32(0xffd0b200), SPH_C32(0xa94f0000),
+	  SPH_C32(0x143330dc), SPH_C32(0xdc625860), SPH_C32(0x3b5a1aed),
+	  SPH_C32(0xdec68697) },
+	{ SPH_C32(0x51480000), SPH_C32(0x537c003d), SPH_C32(0x94504000),
+	  SPH_C32(0xab860000), SPH_C32(0xf7e64430), SPH_C32(0x6060bb12),
+	  SPH_C32(0xa88d2da3), SPH_C32(0x20112fe1), SPH_C32(0xfb4e0000),
+	  SPH_C32(0x7ce80017), SPH_C32(0x9e796000), SPH_C32(0x5cc90000),
+	  SPH_C32(0x680f6d71), SPH_C32(0x750955a9), SPH_C32(0x4bddae77),
+	  SPH_C32(0x3fe40d21) },
+	{ SPH_C32(0x4f060000), SPH_C32(0x8db3003d), SPH_C32(0xf9a84180),
+	  SPH_C32(0xdca20000), SPH_C32(0x1ba143ae), SPH_C32(0x94c0d25c),
+	  SPH_C32(0x652e35b1), SPH_C32(0xb8bb668f), SPH_C32(0x49480000),
+	  SPH_C32(0xb9810017), SPH_C32(0xb67a7200), SPH_C32(0x28ae0000),
+	  SPH_C32(0xdecd5b85), SPH_C32(0x9e1b6c51), SPH_C32(0x780c719b),
+	  SPH_C32(0x36aa3cb9) },
+	{ SPH_C32(0xa2d70000), SPH_C32(0xf923003e), SPH_C32(0x45b18000),
+	  SPH_C32(0x9e240000), SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff),
+	  SPH_C32(0x9394f81e), SPH_C32(0x7d72190d), SPH_C32(0x653a0000),
+	  SPH_C32(0x05770016), SPH_C32(0x135ce000), SPH_C32(0x32180000),
+	  SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff), SPH_C32(0xc1e0f812),
+	  SPH_C32(0x2c53436e) },
+	{ SPH_C32(0xbc990000), SPH_C32(0x27ec003e), SPH_C32(0x28498180),
+	  SPH_C32(0xe9000000), SPH_C32(0x01f63a4a), SPH_C32(0xfe6199b1),
+	  SPH_C32(0x5e37e00c), SPH_C32(0xe5d85063), SPH_C32(0xd73c0000),
+	  SPH_C32(0xc01e0016), SPH_C32(0x3b5ff200), SPH_C32(0x467f0000),
+	  SPH_C32(0xf8b9135c), SPH_C32(0x80f14f07), SPH_C32(0xf23127fe),
+	  SPH_C32(0x251d72f6) },
+	{ SPH_C32(0x0c140000), SPH_C32(0x656c003f), SPH_C32(0x3c606000),
+	  SPH_C32(0xb2310000), SPH_C32(0xa87d4867), SPH_C32(0x6c9147c9),
+	  SPH_C32(0x38060f91), SPH_C32(0xde604f76), SPH_C32(0xbe1f0000),
+	  SPH_C32(0x0c5e0016), SPH_C32(0x5af62000), SPH_C32(0xb3f90000),
+	  SPH_C32(0x84854ef1), SPH_C32(0x299a42ce), SPH_C32(0x82b69364),
+	  SPH_C32(0xc43ff940) },
+	{ SPH_C32(0x125a0000), SPH_C32(0xbba3003f), SPH_C32(0x51986180),
+	  SPH_C32(0xc5150000), SPH_C32(0x443a4ff9), SPH_C32(0x98312e87),
+	  SPH_C32(0xf5a51783), SPH_C32(0x46ca0618), SPH_C32(0x0c190000),
+	  SPH_C32(0xc9370016), SPH_C32(0x72f53200), SPH_C32(0xc79e0000),
+	  SPH_C32(0x32477805), SPH_C32(0xc2887b36), SPH_C32(0xb1674c88),
+	  SPH_C32(0xcd71c8d8) },
+	{ SPH_C32(0x79f20000), SPH_C32(0xf00a003e), SPH_C32(0x0c1b4000),
+	  SPH_C32(0x1fc50000), SPH_C32(0x274f568d), SPH_C32(0x48b8c4ce),
+	  SPH_C32(0xd0c29368), SPH_C32(0x951ea323), SPH_C32(0x10dc0000),
+	  SPH_C32(0x90110017), SPH_C32(0x2327c000), SPH_C32(0x9fec0000),
+	  SPH_C32(0xc1493b42), SPH_C32(0x4fcaf5f8), SPH_C32(0x292464eb),
+	  SPH_C32(0x672daf3b) },
+	{ SPH_C32(0x67bc0000), SPH_C32(0x2ec5003e), SPH_C32(0x61e34180),
+	  SPH_C32(0x68e10000), SPH_C32(0xcb085113), SPH_C32(0xbc18ad80),
+	  SPH_C32(0x1d618b7a), SPH_C32(0x0db4ea4d), SPH_C32(0xa2da0000),
+	  SPH_C32(0x55780017), SPH_C32(0x0b24d200), SPH_C32(0xeb8b0000),
+	  SPH_C32(0x778b0db6), SPH_C32(0xa4d8cc00), SPH_C32(0x1af5bb07),
+	  SPH_C32(0x6e639ea3) },
+	{ SPH_C32(0xd7310000), SPH_C32(0x6c45003f), SPH_C32(0x75caa000),
+	  SPH_C32(0x33d00000), SPH_C32(0x6283233e), SPH_C32(0x2ee873f8),
+	  SPH_C32(0x7b5064e7), SPH_C32(0x360cf558), SPH_C32(0xcbf90000),
+	  SPH_C32(0x99380017), SPH_C32(0x6a8d0000), SPH_C32(0x1e0d0000),
+	  SPH_C32(0x0bb7501b), SPH_C32(0x0db3c1c9), SPH_C32(0x6a720f9d),
+	  SPH_C32(0x8f411515) },
+	{ SPH_C32(0xc97f0000), SPH_C32(0xb28a003f), SPH_C32(0x1832a180),
+	  SPH_C32(0x44f40000), SPH_C32(0x8ec424a0), SPH_C32(0xda481ab6),
+	  SPH_C32(0xb6f37cf5), SPH_C32(0xaea6bc36), SPH_C32(0x79ff0000),
+	  SPH_C32(0x5c510017), SPH_C32(0x428e1200), SPH_C32(0x6a6a0000),
+	  SPH_C32(0xbd7566ef), SPH_C32(0xe6a1f831), SPH_C32(0x59a3d071),
+	  SPH_C32(0x860f248d) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0xfd0d0000), SPH_C32(0xe4810014), SPH_C32(0x9f3e0180),
+	  SPH_C32(0xdd6a0000), SPH_C32(0x37594538), SPH_C32(0xd1cbd75b),
+	  SPH_C32(0xdf9ea944), SPH_C32(0xa2e4d0b9), SPH_C32(0x455c0000),
+	  SPH_C32(0xdced0028), SPH_C32(0x8a1a1200), SPH_C32(0x9a9f0000),
+	  SPH_C32(0x76b013e2), SPH_C32(0xf28a2b98), SPH_C32(0x400a7e0a),
+	  SPH_C32(0xe8ca73cf) },
+	{ SPH_C32(0x4d800000), SPH_C32(0xa6010015), SPH_C32(0x8b17e000),
+	  SPH_C32(0x865b0000), SPH_C32(0x9ed23715), SPH_C32(0x433b0923),
+	  SPH_C32(0xb9af46d9), SPH_C32(0x995ccfac), SPH_C32(0x2c7f0000),
+	  SPH_C32(0x10ad0028), SPH_C32(0xebb3c000), SPH_C32(0x6f190000),
+	  SPH_C32(0x0a8c4e4f), SPH_C32(0x5be12651), SPH_C32(0x308dca90),
+	  SPH_C32(0x09e8f879) },
+	{ SPH_C32(0x53ce0000), SPH_C32(0x78ce0015), SPH_C32(0xe6efe180),
+	  SPH_C32(0xf17f0000), SPH_C32(0x7295308b), SPH_C32(0xb79b606d),
+	  SPH_C32(0x740c5ecb), SPH_C32(0x01f686c2), SPH_C32(0x9e790000),
+	  SPH_C32(0xd5c40028), SPH_C32(0xc3b0d200), SPH_C32(0x1b7e0000),
+	  SPH_C32(0xbc4e78bb), SPH_C32(0xb0f31fa9), SPH_C32(0x035c157c),
+	  SPH_C32(0x00a6c9e1) },
+	{ SPH_C32(0x38660000), SPH_C32(0x33670014), SPH_C32(0xbb6cc000),
+	  SPH_C32(0x2baf0000), SPH_C32(0x11e029ff), SPH_C32(0x67128a24),
+	  SPH_C32(0x516bda20), SPH_C32(0xd22223f9), SPH_C32(0x82bc0000),
+	  SPH_C32(0x8ce20029), SPH_C32(0x92622000), SPH_C32(0x430c0000),
+	  SPH_C32(0x4f403bfc), SPH_C32(0x3db19167), SPH_C32(0x9b1f3d1f),
+	  SPH_C32(0xaafaae02) },
+	{ SPH_C32(0x26280000), SPH_C32(0xeda80014), SPH_C32(0xd694c180),
+	  SPH_C32(0x5c8b0000), SPH_C32(0xfda72e61), SPH_C32(0x93b2e36a),
+	  SPH_C32(0x9cc8c232), SPH_C32(0x4a886a97), SPH_C32(0x30ba0000),
+	  SPH_C32(0x498b0029), SPH_C32(0xba613200), SPH_C32(0x376b0000),
+	  SPH_C32(0xf9820d08), SPH_C32(0xd6a3a89f), SPH_C32(0xa8cee2f3),
+	  SPH_C32(0xa3b49f9a) },
+	{ SPH_C32(0x96a50000), SPH_C32(0xaf280015), SPH_C32(0xc2bd2000),
+	  SPH_C32(0x07ba0000), SPH_C32(0x542c5c4c), SPH_C32(0x01423d12),
+	  SPH_C32(0xfaf92daf), SPH_C32(0x71307582), SPH_C32(0x59990000),
+	  SPH_C32(0x85cb0029), SPH_C32(0xdbc8e000), SPH_C32(0xc2ed0000),
+	  SPH_C32(0x85be50a5), SPH_C32(0x7fc8a556), SPH_C32(0xd8495669),
+	  SPH_C32(0x4296142c) },
+	{ SPH_C32(0x88eb0000), SPH_C32(0x71e70015), SPH_C32(0xaf452180),
+	  SPH_C32(0x709e0000), SPH_C32(0xb86b5bd2), SPH_C32(0xf5e2545c),
+	  SPH_C32(0x375a35bd), SPH_C32(0xe99a3cec), SPH_C32(0xeb9f0000),
+	  SPH_C32(0x40a20029), SPH_C32(0xf3cbf200), SPH_C32(0xb68a0000),
+	  SPH_C32(0x337c6651), SPH_C32(0x94da9cae), SPH_C32(0xeb988985),
+	  SPH_C32(0x4bd825b4) },
+	{ SPH_C32(0x653a0000), SPH_C32(0x05770016), SPH_C32(0x135ce000),
+	  SPH_C32(0x32180000), SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff),
+	  SPH_C32(0xc1e0f812), SPH_C32(0x2c53436e), SPH_C32(0xc7ed0000),
+	  SPH_C32(0xfc540028), SPH_C32(0x56ed6000), SPH_C32(0xac3c0000),
+	  SPH_C32(0xa3ca187c), SPH_C32(0x61228600), SPH_C32(0x5274000c),
+	  SPH_C32(0x51215a63) },
+	{ SPH_C32(0x7b740000), SPH_C32(0xdbb80016), SPH_C32(0x7ea4e180),
+	  SPH_C32(0x453c0000), SPH_C32(0xa23c2236), SPH_C32(0x9f431fb1),
+	  SPH_C32(0x0c43e000), SPH_C32(0xb4f90a00), SPH_C32(0x75eb0000),
+	  SPH_C32(0x393d0028), SPH_C32(0x7eee7200), SPH_C32(0xd85b0000),
+	  SPH_C32(0x15082e88), SPH_C32(0x8a30bff8), SPH_C32(0x61a5dfe0),
+	  SPH_C32(0x586f6bfb) },
+	{ SPH_C32(0xcbf90000), SPH_C32(0x99380017), SPH_C32(0x6a8d0000),
+	  SPH_C32(0x1e0d0000), SPH_C32(0x0bb7501b), SPH_C32(0x0db3c1c9),
+	  SPH_C32(0x6a720f9d), SPH_C32(0x8f411515), SPH_C32(0x1cc80000),
+	  SPH_C32(0xf57d0028), SPH_C32(0x1f47a000), SPH_C32(0x2ddd0000),
+	  SPH_C32(0x69347325), SPH_C32(0x235bb231), SPH_C32(0x11226b7a),
+	  SPH_C32(0xb94de04d) },
+	{ SPH_C32(0xd5b70000), SPH_C32(0x47f70017), SPH_C32(0x07750180),
+	  SPH_C32(0x69290000), SPH_C32(0xe7f05785), SPH_C32(0xf913a887),
+	  SPH_C32(0xa7d1178f), SPH_C32(0x17eb5c7b), SPH_C32(0xaece0000),
+	  SPH_C32(0x30140028), SPH_C32(0x3744b200), SPH_C32(0x59ba0000),
+	  SPH_C32(0xdff645d1), SPH_C32(0xc8498bc9), SPH_C32(0x22f3b496),
+	  SPH_C32(0xb003d1d5) },
+	{ SPH_C32(0xbe1f0000), SPH_C32(0x0c5e0016), SPH_C32(0x5af62000),
+	  SPH_C32(0xb3f90000), SPH_C32(0x84854ef1), SPH_C32(0x299a42ce),
+	  SPH_C32(0x82b69364), SPH_C32(0xc43ff940), SPH_C32(0xb20b0000),
+	  SPH_C32(0x69320029), SPH_C32(0x66964000), SPH_C32(0x01c80000),
+	  SPH_C32(0x2cf80696), SPH_C32(0x450b0507), SPH_C32(0xbab09cf5),
+	  SPH_C32(0x1a5fb636) },
+	{ SPH_C32(0xa0510000), SPH_C32(0xd2910016), SPH_C32(0x370e2180),
+	  SPH_C32(0xc4dd0000), SPH_C32(0x68c2496f), SPH_C32(0xdd3a2b80),
+	  SPH_C32(0x4f158b76), SPH_C32(0x5c95b02e), SPH_C32(0x000d0000),
+	  SPH_C32(0xac5b0029), SPH_C32(0x4e955200), SPH_C32(0x75af0000),
+	  SPH_C32(0x9a3a3062), SPH_C32(0xae193cff), SPH_C32(0x89614319),
+	  SPH_C32(0x131187ae) },
+	{ SPH_C32(0x10dc0000), SPH_C32(0x90110017), SPH_C32(0x2327c000),
+	  SPH_C32(0x9fec0000), SPH_C32(0xc1493b42), SPH_C32(0x4fcaf5f8),
+	  SPH_C32(0x292464eb), SPH_C32(0x672daf3b), SPH_C32(0x692e0000),
+	  SPH_C32(0x601b0029), SPH_C32(0x2f3c8000), SPH_C32(0x80290000),
+	  SPH_C32(0xe6066dcf), SPH_C32(0x07723136), SPH_C32(0xf9e6f783),
+	  SPH_C32(0xf2330c18) },
+	{ SPH_C32(0x0e920000), SPH_C32(0x4ede0017), SPH_C32(0x4edfc180),
+	  SPH_C32(0xe8c80000), SPH_C32(0x2d0e3cdc), SPH_C32(0xbb6a9cb6),
+	  SPH_C32(0xe4877cf9), SPH_C32(0xff87e655), SPH_C32(0xdb280000),
+	  SPH_C32(0xa5720029), SPH_C32(0x073f9200), SPH_C32(0xf44e0000),
+	  SPH_C32(0x50c45b3b), SPH_C32(0xec6008ce), SPH_C32(0xca37286f),
+	  SPH_C32(0xfb7d3d80) },
+	{ SPH_C32(0xd3f40000), SPH_C32(0xdf9e0014), SPH_C32(0x06326000),
+	  SPH_C32(0xe88a0000), SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75),
+	  SPH_C32(0x339210bc), SPH_C32(0x8aeb81e3), SPH_C32(0x41940000),
+	  SPH_C32(0xc36d002a), SPH_C32(0xb7778000), SPH_C32(0x346a0000),
+	  SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea), SPH_C32(0x81a94948),
+	  SPH_C32(0x473c80da) },
+	{ SPH_C32(0xcdba0000), SPH_C32(0x01510014), SPH_C32(0x6bca6180),
+	  SPH_C32(0x9fae0000), SPH_C32(0x54e17852), SPH_C32(0xa971433b),
+	  SPH_C32(0xfe3108ae), SPH_C32(0x1241c88d), SPH_C32(0xf3920000),
+	  SPH_C32(0x0604002a), SPH_C32(0x9f749200), SPH_C32(0x400d0000),
+	  SPH_C32(0x806d4986), SPH_C32(0xc4b87712), SPH_C32(0xb27896a4),
+	  SPH_C32(0x4e72b142) },
+	{ SPH_C32(0x7d370000), SPH_C32(0x43d10015), SPH_C32(0x7fe38000),
+	  SPH_C32(0xc49f0000), SPH_C32(0xfd6a0a7f), SPH_C32(0x3b819d43),
+	  SPH_C32(0x9800e733), SPH_C32(0x29f9d798), SPH_C32(0x9ab10000),
+	  SPH_C32(0xca44002a), SPH_C32(0xfedd4000), SPH_C32(0xb58b0000),
+	  SPH_C32(0xfc51142b), SPH_C32(0x6dd37adb), SPH_C32(0xc2ff223e),
+	  SPH_C32(0xaf503af4) },
+	{ SPH_C32(0x63790000), SPH_C32(0x9d1e0015), SPH_C32(0x121b8180),
+	  SPH_C32(0xb3bb0000), SPH_C32(0x112d0de1), SPH_C32(0xcf21f40d),
+	  SPH_C32(0x55a3ff21), SPH_C32(0xb1539ef6), SPH_C32(0x28b70000),
+	  SPH_C32(0x0f2d002a), SPH_C32(0xd6de5200), SPH_C32(0xc1ec0000),
+	  SPH_C32(0x4a9322df), SPH_C32(0x86c14323), SPH_C32(0xf12efdd2),
+	  SPH_C32(0xa61e0b6c) },
+	{ SPH_C32(0x08d10000), SPH_C32(0xd6b70014), SPH_C32(0x4f98a000),
+	  SPH_C32(0x696b0000), SPH_C32(0x72581495), SPH_C32(0x1fa81e44),
+	  SPH_C32(0x70c47bca), SPH_C32(0x62873bcd), SPH_C32(0x34720000),
+	  SPH_C32(0x560b002b), SPH_C32(0x870ca000), SPH_C32(0x999e0000),
+	  SPH_C32(0xb99d6198), SPH_C32(0x0b83cded), SPH_C32(0x696dd5b1),
+	  SPH_C32(0x0c426c8f) },
+	{ SPH_C32(0x169f0000), SPH_C32(0x08780014), SPH_C32(0x2260a180),
+	  SPH_C32(0x1e4f0000), SPH_C32(0x9e1f130b), SPH_C32(0xeb08770a),
+	  SPH_C32(0xbd6763d8), SPH_C32(0xfa2d72a3), SPH_C32(0x86740000),
+	  SPH_C32(0x9362002b), SPH_C32(0xaf0fb200), SPH_C32(0xedf90000),
+	  SPH_C32(0x0f5f576c), SPH_C32(0xe091f415), SPH_C32(0x5abc0a5d),
+	  SPH_C32(0x050c5d17) },
+	{ SPH_C32(0xa6120000), SPH_C32(0x4af80015), SPH_C32(0x36494000),
+	  SPH_C32(0x457e0000), SPH_C32(0x37946126), SPH_C32(0x79f8a972),
+	  SPH_C32(0xdb568c45), SPH_C32(0xc1956db6), SPH_C32(0xef570000),
+	  SPH_C32(0x5f22002b), SPH_C32(0xcea66000), SPH_C32(0x187f0000),
+	  SPH_C32(0x73630ac1), SPH_C32(0x49faf9dc), SPH_C32(0x2a3bbec7),
+	  SPH_C32(0xe42ed6a1) },
+	{ SPH_C32(0xb85c0000), SPH_C32(0x94370015), SPH_C32(0x5bb14180),
+	  SPH_C32(0x325a0000), SPH_C32(0xdbd366b8), SPH_C32(0x8d58c03c),
+	  SPH_C32(0x16f59457), SPH_C32(0x593f24d8), SPH_C32(0x5d510000),
+	  SPH_C32(0x9a4b002b), SPH_C32(0xe6a57200), SPH_C32(0x6c180000),
+	  SPH_C32(0xc5a13c35), SPH_C32(0xa2e8c024), SPH_C32(0x19ea612b),
+	  SPH_C32(0xed60e739) },
+	{ SPH_C32(0x558d0000), SPH_C32(0xe0a70016), SPH_C32(0xe7a88000),
+	  SPH_C32(0x70dc0000), SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f),
+	  SPH_C32(0xe04f59f8), SPH_C32(0x9cf65b5a), SPH_C32(0x71230000),
+	  SPH_C32(0x26bd002a), SPH_C32(0x4383e000), SPH_C32(0x76ae0000),
+	  SPH_C32(0x55174218), SPH_C32(0x5710da8a), SPH_C32(0xa006e8a2),
+	  SPH_C32(0xf79998ee) },
+	{ SPH_C32(0x4bc30000), SPH_C32(0x3e680016), SPH_C32(0x8a508180),
+	  SPH_C32(0x07f80000), SPH_C32(0xc1841f5c), SPH_C32(0xe7f98bd1),
+	  SPH_C32(0x2dec41ea), SPH_C32(0x045c1234), SPH_C32(0xc3250000),
+	  SPH_C32(0xe3d4002a), SPH_C32(0x6b80f200), SPH_C32(0x02c90000),
+	  SPH_C32(0xe3d574ec), SPH_C32(0xbc02e372), SPH_C32(0x93d7374e),
+	  SPH_C32(0xfed7a976) },
+	{ SPH_C32(0xfb4e0000), SPH_C32(0x7ce80017), SPH_C32(0x9e796000),
+	  SPH_C32(0x5cc90000), SPH_C32(0x680f6d71), SPH_C32(0x750955a9),
+	  SPH_C32(0x4bddae77), SPH_C32(0x3fe40d21), SPH_C32(0xaa060000),
+	  SPH_C32(0x2f94002a), SPH_C32(0x0a292000), SPH_C32(0xf74f0000),
+	  SPH_C32(0x9fe92941), SPH_C32(0x1569eebb), SPH_C32(0xe35083d4),
+	  SPH_C32(0x1ff522c0) },
+	{ SPH_C32(0xe5000000), SPH_C32(0xa2270017), SPH_C32(0xf3816180),
+	  SPH_C32(0x2bed0000), SPH_C32(0x84486aef), SPH_C32(0x81a93ce7),
+	  SPH_C32(0x867eb665), SPH_C32(0xa74e444f), SPH_C32(0x18000000),
+	  SPH_C32(0xeafd002a), SPH_C32(0x222a3200), SPH_C32(0x83280000),
+	  SPH_C32(0x292b1fb5), SPH_C32(0xfe7bd743), SPH_C32(0xd0815c38),
+	  SPH_C32(0x16bb1358) },
+	{ SPH_C32(0x8ea80000), SPH_C32(0xe98e0016), SPH_C32(0xae024000),
+	  SPH_C32(0xf13d0000), SPH_C32(0xe73d739b), SPH_C32(0x5120d6ae),
+	  SPH_C32(0xa319328e), SPH_C32(0x749ae174), SPH_C32(0x04c50000),
+	  SPH_C32(0xb3db002b), SPH_C32(0x73f8c000), SPH_C32(0xdb5a0000),
+	  SPH_C32(0xda255cf2), SPH_C32(0x7339598d), SPH_C32(0x48c2745b),
+	  SPH_C32(0xbce774bb) },
+	{ SPH_C32(0x90e60000), SPH_C32(0x37410016), SPH_C32(0xc3fa4180),
+	  SPH_C32(0x86190000), SPH_C32(0x0b7a7405), SPH_C32(0xa580bfe0),
+	  SPH_C32(0x6eba2a9c), SPH_C32(0xec30a81a), SPH_C32(0xb6c30000),
+	  SPH_C32(0x76b2002b), SPH_C32(0x5bfbd200), SPH_C32(0xaf3d0000),
+	  SPH_C32(0x6ce76a06), SPH_C32(0x982b6075), SPH_C32(0x7b13abb7),
+	  SPH_C32(0xb5a94523) },
+	{ SPH_C32(0x206b0000), SPH_C32(0x75c10017), SPH_C32(0xd7d3a000),
+	  SPH_C32(0xdd280000), SPH_C32(0xa2f10628), SPH_C32(0x37706198),
+	  SPH_C32(0x088bc501), SPH_C32(0xd788b70f), SPH_C32(0xdfe00000),
+	  SPH_C32(0xbaf2002b), SPH_C32(0x3a520000), SPH_C32(0x5abb0000),
+	  SPH_C32(0x10db37ab), SPH_C32(0x31406dbc), SPH_C32(0x0b941f2d),
+	  SPH_C32(0x548bce95) },
+	{ SPH_C32(0x3e250000), SPH_C32(0xab0e0017), SPH_C32(0xba2ba180),
+	  SPH_C32(0xaa0c0000), SPH_C32(0x4eb601b6), SPH_C32(0xc3d008d6),
+	  SPH_C32(0xc528dd13), SPH_C32(0x4f22fe61), SPH_C32(0x6de60000),
+	  SPH_C32(0x7f9b002b), SPH_C32(0x12511200), SPH_C32(0x2edc0000),
+	  SPH_C32(0xa619015f), SPH_C32(0xda525444), SPH_C32(0x3845c0c1),
+	  SPH_C32(0x5dc5ff0d) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0xe9140000), SPH_C32(0xc74b0028), SPH_C32(0xcfe10180),
+	  SPH_C32(0x99dc0000), SPH_C32(0x2c352288), SPH_C32(0xed387b2e),
+	  SPH_C32(0xbe78b9f4), SPH_C32(0x792e0b39), SPH_C32(0xa61f0000),
+	  SPH_C32(0xe6a3003c), SPH_C32(0x78dc1200), SPH_C32(0x30d10000),
+	  SPH_C32(0xadae5144), SPH_C32(0xd7e1958d), SPH_C32(0x5237cf5c),
+	  SPH_C32(0xd284ea18) },
+	{ SPH_C32(0x59990000), SPH_C32(0x85cb0029), SPH_C32(0xdbc8e000),
+	  SPH_C32(0xc2ed0000), SPH_C32(0x85be50a5), SPH_C32(0x7fc8a556),
+	  SPH_C32(0xd8495669), SPH_C32(0x4296142c), SPH_C32(0xcf3c0000),
+	  SPH_C32(0x2ae3003c), SPH_C32(0x1975c000), SPH_C32(0xc5570000),
+	  SPH_C32(0xd1920ce9), SPH_C32(0x7e8a9844), SPH_C32(0x22b07bc6),
+	  SPH_C32(0x33a661ae) },
+	{ SPH_C32(0x47d70000), SPH_C32(0x5b040029), SPH_C32(0xb630e180),
+	  SPH_C32(0xb5c90000), SPH_C32(0x69f9573b), SPH_C32(0x8b68cc18),
+	  SPH_C32(0x15ea4e7b), SPH_C32(0xda3c5d42), SPH_C32(0x7d3a0000),
+	  SPH_C32(0xef8a003c), SPH_C32(0x3176d200), SPH_C32(0xb1300000),
+	  SPH_C32(0x67503a1d), SPH_C32(0x9598a1bc), SPH_C32(0x1161a42a),
+	  SPH_C32(0x3ae85036) },
+	{ SPH_C32(0x2c7f0000), SPH_C32(0x10ad0028), SPH_C32(0xebb3c000),
+	  SPH_C32(0x6f190000), SPH_C32(0x0a8c4e4f), SPH_C32(0x5be12651),
+	  SPH_C32(0x308dca90), SPH_C32(0x09e8f879), SPH_C32(0x61ff0000),
+	  SPH_C32(0xb6ac003d), SPH_C32(0x60a42000), SPH_C32(0xe9420000),
+	  SPH_C32(0x945e795a), SPH_C32(0x18da2f72), SPH_C32(0x89228c49),
+	  SPH_C32(0x90b437d5) },
+	{ SPH_C32(0x32310000), SPH_C32(0xce620028), SPH_C32(0x864bc180),
+	  SPH_C32(0x183d0000), SPH_C32(0xe6cb49d1), SPH_C32(0xaf414f1f),
+	  SPH_C32(0xfd2ed282), SPH_C32(0x9142b117), SPH_C32(0xd3f90000),
+	  SPH_C32(0x73c5003d), SPH_C32(0x48a73200), SPH_C32(0x9d250000),
+	  SPH_C32(0x229c4fae), SPH_C32(0xf3c8168a), SPH_C32(0xbaf353a5),
+	  SPH_C32(0x99fa064d) },
+	{ SPH_C32(0x82bc0000), SPH_C32(0x8ce20029), SPH_C32(0x92622000),
+	  SPH_C32(0x430c0000), SPH_C32(0x4f403bfc), SPH_C32(0x3db19167),
+	  SPH_C32(0x9b1f3d1f), SPH_C32(0xaafaae02), SPH_C32(0xbada0000),
+	  SPH_C32(0xbf85003d), SPH_C32(0x290ee000), SPH_C32(0x68a30000),
+	  SPH_C32(0x5ea01203), SPH_C32(0x5aa31b43), SPH_C32(0xca74e73f),
+	  SPH_C32(0x78d88dfb) },
+	{ SPH_C32(0x9cf20000), SPH_C32(0x522d0029), SPH_C32(0xff9a2180),
+	  SPH_C32(0x34280000), SPH_C32(0xa3073c62), SPH_C32(0xc911f829),
+	  SPH_C32(0x56bc250d), SPH_C32(0x3250e76c), SPH_C32(0x08dc0000),
+	  SPH_C32(0x7aec003d), SPH_C32(0x010df200), SPH_C32(0x1cc40000),
+	  SPH_C32(0xe86224f7), SPH_C32(0xb1b122bb), SPH_C32(0xf9a538d3),
+	  SPH_C32(0x7196bc63) },
+	{ SPH_C32(0x71230000), SPH_C32(0x26bd002a), SPH_C32(0x4383e000),
+	  SPH_C32(0x76ae0000), SPH_C32(0x55174218), SPH_C32(0x5710da8a),
+	  SPH_C32(0xa006e8a2), SPH_C32(0xf79998ee), SPH_C32(0x24ae0000),
+	  SPH_C32(0xc61a003c), SPH_C32(0xa42b6000), SPH_C32(0x06720000),
+	  SPH_C32(0x78d45ada), SPH_C32(0x44493815), SPH_C32(0x4049b15a),
+	  SPH_C32(0x6b6fc3b4) },
+	{ SPH_C32(0x6f6d0000), SPH_C32(0xf872002a), SPH_C32(0x2e7be180),
+	  SPH_C32(0x018a0000), SPH_C32(0xb9504586), SPH_C32(0xa3b0b3c4),
+	  SPH_C32(0x6da5f0b0), SPH_C32(0x6f33d180), SPH_C32(0x96a80000),
+	  SPH_C32(0x0373003c), SPH_C32(0x8c287200), SPH_C32(0x72150000),
+	  SPH_C32(0xce166c2e), SPH_C32(0xaf5b01ed), SPH_C32(0x73986eb6),
+	  SPH_C32(0x6221f22c) },
+	{ SPH_C32(0xdfe00000), SPH_C32(0xbaf2002b), SPH_C32(0x3a520000),
+	  SPH_C32(0x5abb0000), SPH_C32(0x10db37ab), SPH_C32(0x31406dbc),
+	  SPH_C32(0x0b941f2d), SPH_C32(0x548bce95), SPH_C32(0xff8b0000),
+	  SPH_C32(0xcf33003c), SPH_C32(0xed81a000), SPH_C32(0x87930000),
+	  SPH_C32(0xb22a3183), SPH_C32(0x06300c24), SPH_C32(0x031fda2c),
+	  SPH_C32(0x8303799a) },
+	{ SPH_C32(0xc1ae0000), SPH_C32(0x643d002b), SPH_C32(0x57aa0180),
+	  SPH_C32(0x2d9f0000), SPH_C32(0xfc9c3035), SPH_C32(0xc5e004f2),
+	  SPH_C32(0xc637073f), SPH_C32(0xcc2187fb), SPH_C32(0x4d8d0000),
+	  SPH_C32(0x0a5a003c), SPH_C32(0xc582b200), SPH_C32(0xf3f40000),
+	  SPH_C32(0x04e80777), SPH_C32(0xed2235dc), SPH_C32(0x30ce05c0),
+	  SPH_C32(0x8a4d4802) },
+	{ SPH_C32(0xaa060000), SPH_C32(0x2f94002a), SPH_C32(0x0a292000),
+	  SPH_C32(0xf74f0000), SPH_C32(0x9fe92941), SPH_C32(0x1569eebb),
+	  SPH_C32(0xe35083d4), SPH_C32(0x1ff522c0), SPH_C32(0x51480000),
+	  SPH_C32(0x537c003d), SPH_C32(0x94504000), SPH_C32(0xab860000),
+	  SPH_C32(0xf7e64430), SPH_C32(0x6060bb12), SPH_C32(0xa88d2da3),
+	  SPH_C32(0x20112fe1) },
+	{ SPH_C32(0xb4480000), SPH_C32(0xf15b002a), SPH_C32(0x67d12180),
+	  SPH_C32(0x806b0000), SPH_C32(0x73ae2edf), SPH_C32(0xe1c987f5),
+	  SPH_C32(0x2ef39bc6), SPH_C32(0x875f6bae), SPH_C32(0xe34e0000),
+	  SPH_C32(0x9615003d), SPH_C32(0xbc535200), SPH_C32(0xdfe10000),
+	  SPH_C32(0x412472c4), SPH_C32(0x8b7282ea), SPH_C32(0x9b5cf24f),
+	  SPH_C32(0x295f1e79) },
+	{ SPH_C32(0x04c50000), SPH_C32(0xb3db002b), SPH_C32(0x73f8c000),
+	  SPH_C32(0xdb5a0000), SPH_C32(0xda255cf2), SPH_C32(0x7339598d),
+	  SPH_C32(0x48c2745b), SPH_C32(0xbce774bb), SPH_C32(0x8a6d0000),
+	  SPH_C32(0x5a55003d), SPH_C32(0xddfa8000), SPH_C32(0x2a670000),
+	  SPH_C32(0x3d182f69), SPH_C32(0x22198f23), SPH_C32(0xebdb46d5),
+	  SPH_C32(0xc87d95cf) },
+	{ SPH_C32(0x1a8b0000), SPH_C32(0x6d14002b), SPH_C32(0x1e00c180),
+	  SPH_C32(0xac7e0000), SPH_C32(0x36625b6c), SPH_C32(0x879930c3),
+	  SPH_C32(0x85616c49), SPH_C32(0x244d3dd5), SPH_C32(0x386b0000),
+	  SPH_C32(0x9f3c003d), SPH_C32(0xf5f99200), SPH_C32(0x5e000000),
+	  SPH_C32(0x8bda199d), SPH_C32(0xc90bb6db), SPH_C32(0xd80a9939),
+	  SPH_C32(0xc133a457) },
+	{ SPH_C32(0xc7ed0000), SPH_C32(0xfc540028), SPH_C32(0x56ed6000),
+	  SPH_C32(0xac3c0000), SPH_C32(0xa3ca187c), SPH_C32(0x61228600),
+	  SPH_C32(0x5274000c), SPH_C32(0x51215a63), SPH_C32(0xa2d70000),
+	  SPH_C32(0xf923003e), SPH_C32(0x45b18000), SPH_C32(0x9e240000),
+	  SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff), SPH_C32(0x9394f81e),
+	  SPH_C32(0x7d72190d) },
+	{ SPH_C32(0xd9a30000), SPH_C32(0x229b0028), SPH_C32(0x3b156180),
+	  SPH_C32(0xdb180000), SPH_C32(0x4f8d1fe2), SPH_C32(0x9582ef4e),
+	  SPH_C32(0x9fd7181e), SPH_C32(0xc98b130d), SPH_C32(0x10d10000),
+	  SPH_C32(0x3c4a003e), SPH_C32(0x6db29200), SPH_C32(0xea430000),
+	  SPH_C32(0x5b730b20), SPH_C32(0xe1d3c907), SPH_C32(0xa04527f2),
+	  SPH_C32(0x743c2895) },
+	{ SPH_C32(0x692e0000), SPH_C32(0x601b0029), SPH_C32(0x2f3c8000),
+	  SPH_C32(0x80290000), SPH_C32(0xe6066dcf), SPH_C32(0x07723136),
+	  SPH_C32(0xf9e6f783), SPH_C32(0xf2330c18), SPH_C32(0x79f20000),
+	  SPH_C32(0xf00a003e), SPH_C32(0x0c1b4000), SPH_C32(0x1fc50000),
+	  SPH_C32(0x274f568d), SPH_C32(0x48b8c4ce), SPH_C32(0xd0c29368),
+	  SPH_C32(0x951ea323) },
+	{ SPH_C32(0x77600000), SPH_C32(0xbed40029), SPH_C32(0x42c48180),
+	  SPH_C32(0xf70d0000), SPH_C32(0x0a416a51), SPH_C32(0xf3d25878),
+	  SPH_C32(0x3445ef91), SPH_C32(0x6a994576), SPH_C32(0xcbf40000),
+	  SPH_C32(0x3563003e), SPH_C32(0x24185200), SPH_C32(0x6ba20000),
+	  SPH_C32(0x918d6079), SPH_C32(0xa3aafd36), SPH_C32(0xe3134c84),
+	  SPH_C32(0x9c5092bb) },
+	{ SPH_C32(0x1cc80000), SPH_C32(0xf57d0028), SPH_C32(0x1f47a000),
+	  SPH_C32(0x2ddd0000), SPH_C32(0x69347325), SPH_C32(0x235bb231),
+	  SPH_C32(0x11226b7a), SPH_C32(0xb94de04d), SPH_C32(0xd7310000),
+	  SPH_C32(0x6c45003f), SPH_C32(0x75caa000), SPH_C32(0x33d00000),
+	  SPH_C32(0x6283233e), SPH_C32(0x2ee873f8), SPH_C32(0x7b5064e7),
+	  SPH_C32(0x360cf558) },
+	{ SPH_C32(0x02860000), SPH_C32(0x2bb20028), SPH_C32(0x72bfa180),
+	  SPH_C32(0x5af90000), SPH_C32(0x857374bb), SPH_C32(0xd7fbdb7f),
+	  SPH_C32(0xdc817368), SPH_C32(0x21e7a923), SPH_C32(0x65370000),
+	  SPH_C32(0xa92c003f), SPH_C32(0x5dc9b200), SPH_C32(0x47b70000),
+	  SPH_C32(0xd44115ca), SPH_C32(0xc5fa4a00), SPH_C32(0x4881bb0b),
+	  SPH_C32(0x3f42c4c0) },
+	{ SPH_C32(0xb20b0000), SPH_C32(0x69320029), SPH_C32(0x66964000),
+	  SPH_C32(0x01c80000), SPH_C32(0x2cf80696), SPH_C32(0x450b0507),
+	  SPH_C32(0xbab09cf5), SPH_C32(0x1a5fb636), SPH_C32(0x0c140000),
+	  SPH_C32(0x656c003f), SPH_C32(0x3c606000), SPH_C32(0xb2310000),
+	  SPH_C32(0xa87d4867), SPH_C32(0x6c9147c9), SPH_C32(0x38060f91),
+	  SPH_C32(0xde604f76) },
+	{ SPH_C32(0xac450000), SPH_C32(0xb7fd0029), SPH_C32(0x0b6e4180),
+	  SPH_C32(0x76ec0000), SPH_C32(0xc0bf0108), SPH_C32(0xb1ab6c49),
+	  SPH_C32(0x771384e7), SPH_C32(0x82f5ff58), SPH_C32(0xbe120000),
+	  SPH_C32(0xa005003f), SPH_C32(0x14637200), SPH_C32(0xc6560000),
+	  SPH_C32(0x1ebf7e93), SPH_C32(0x87837e31), SPH_C32(0x0bd7d07d),
+	  SPH_C32(0xd72e7eee) },
+	{ SPH_C32(0x41940000), SPH_C32(0xc36d002a), SPH_C32(0xb7778000),
+	  SPH_C32(0x346a0000), SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea),
+	  SPH_C32(0x81a94948), SPH_C32(0x473c80da), SPH_C32(0x92600000),
+	  SPH_C32(0x1cf3003e), SPH_C32(0xb145e000), SPH_C32(0xdce00000),
+	  SPH_C32(0x8e0900be), SPH_C32(0x727b649f), SPH_C32(0xb23b59f4),
+	  SPH_C32(0xcdd70139) },
+	{ SPH_C32(0x5fda0000), SPH_C32(0x1da2002a), SPH_C32(0xda8f8180),
+	  SPH_C32(0x434e0000), SPH_C32(0xdae878ec), SPH_C32(0xdb0a27a4),
+	  SPH_C32(0x4c0a515a), SPH_C32(0xdf96c9b4), SPH_C32(0x20660000),
+	  SPH_C32(0xd99a003e), SPH_C32(0x9946f200), SPH_C32(0xa8870000),
+	  SPH_C32(0x38cb364a), SPH_C32(0x99695d67), SPH_C32(0x81ea8618),
+	  SPH_C32(0xc49930a1) },
+	{ SPH_C32(0xef570000), SPH_C32(0x5f22002b), SPH_C32(0xcea66000),
+	  SPH_C32(0x187f0000), SPH_C32(0x73630ac1), SPH_C32(0x49faf9dc),
+	  SPH_C32(0x2a3bbec7), SPH_C32(0xe42ed6a1), SPH_C32(0x49450000),
+	  SPH_C32(0x15da003e), SPH_C32(0xf8ef2000), SPH_C32(0x5d010000),
+	  SPH_C32(0x44f76be7), SPH_C32(0x300250ae), SPH_C32(0xf16d3282),
+	  SPH_C32(0x25bbbb17) },
+	{ SPH_C32(0xf1190000), SPH_C32(0x81ed002b), SPH_C32(0xa35e6180),
+	  SPH_C32(0x6f5b0000), SPH_C32(0x9f240d5f), SPH_C32(0xbd5a9092),
+	  SPH_C32(0xe798a6d5), SPH_C32(0x7c849fcf), SPH_C32(0xfb430000),
+	  SPH_C32(0xd0b3003e), SPH_C32(0xd0ec3200), SPH_C32(0x29660000),
+	  SPH_C32(0xf2355d13), SPH_C32(0xdb106956), SPH_C32(0xc2bced6e),
+	  SPH_C32(0x2cf58a8f) },
+	{ SPH_C32(0x9ab10000), SPH_C32(0xca44002a), SPH_C32(0xfedd4000),
+	  SPH_C32(0xb58b0000), SPH_C32(0xfc51142b), SPH_C32(0x6dd37adb),
+	  SPH_C32(0xc2ff223e), SPH_C32(0xaf503af4), SPH_C32(0xe7860000),
+	  SPH_C32(0x8995003f), SPH_C32(0x813ec000), SPH_C32(0x71140000),
+	  SPH_C32(0x013b1e54), SPH_C32(0x5652e798), SPH_C32(0x5affc50d),
+	  SPH_C32(0x86a9ed6c) },
+	{ SPH_C32(0x84ff0000), SPH_C32(0x148b002a), SPH_C32(0x93254180),
+	  SPH_C32(0xc2af0000), SPH_C32(0x101613b5), SPH_C32(0x99731395),
+	  SPH_C32(0x0f5c3a2c), SPH_C32(0x37fa739a), SPH_C32(0x55800000),
+	  SPH_C32(0x4cfc003f), SPH_C32(0xa93dd200), SPH_C32(0x05730000),
+	  SPH_C32(0xb7f928a0), SPH_C32(0xbd40de60), SPH_C32(0x692e1ae1),
+	  SPH_C32(0x8fe7dcf4) },
+	{ SPH_C32(0x34720000), SPH_C32(0x560b002b), SPH_C32(0x870ca000),
+	  SPH_C32(0x999e0000), SPH_C32(0xb99d6198), SPH_C32(0x0b83cded),
+	  SPH_C32(0x696dd5b1), SPH_C32(0x0c426c8f), SPH_C32(0x3ca30000),
+	  SPH_C32(0x80bc003f), SPH_C32(0xc8940000), SPH_C32(0xf0f50000),
+	  SPH_C32(0xcbc5750d), SPH_C32(0x142bd3a9), SPH_C32(0x19a9ae7b),
+	  SPH_C32(0x6ec55742) },
+	{ SPH_C32(0x2a3c0000), SPH_C32(0x88c4002b), SPH_C32(0xeaf4a180),
+	  SPH_C32(0xeeba0000), SPH_C32(0x55da6606), SPH_C32(0xff23a4a3),
+	  SPH_C32(0xa4cecda3), SPH_C32(0x94e825e1), SPH_C32(0x8ea50000),
+	  SPH_C32(0x45d5003f), SPH_C32(0xe0971200), SPH_C32(0x84920000),
+	  SPH_C32(0x7d0743f9), SPH_C32(0xff39ea51), SPH_C32(0x2a787197),
+	  SPH_C32(0x678b66da) }
+};
+
+static const sph_u32 T512_35[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x9e440000), SPH_C32(0x8c370000), SPH_C32(0x30d807ce),
+	  SPH_C32(0xcbaf0000), SPH_C32(0xd1e16d13), SPH_C32(0xc2b875d6),
+	  SPH_C32(0xa615c724), SPH_C32(0x995994f1), SPH_C32(0xd2130000),
+	  SPH_C32(0x45ab0000), SPH_C32(0xf8c50286), SPH_C32(0xc30c0000),
+	  SPH_C32(0x574d284c), SPH_C32(0xda31f145), SPH_C32(0x4f1ee235),
+	  SPH_C32(0xf1f0e16b) },
+	{ SPH_C32(0x9f990000), SPH_C32(0x0c9f0000), SPH_C32(0xc44e0786),
+	  SPH_C32(0x6daf0000), SPH_C32(0x413413b1), SPH_C32(0x155ef9e1),
+	  SPH_C32(0xc00708d9), SPH_C32(0xb5cdd16f), SPH_C32(0x80430000),
+	  SPH_C32(0x6cff0000), SPH_C32(0x92a402c8), SPH_C32(0x33f30000),
+	  SPH_C32(0xcd7c56a0), SPH_C32(0x9f12b08b), SPH_C32(0x80486dd0),
+	  SPH_C32(0xa2f3f264) },
+	{ SPH_C32(0xcdc90000), SPH_C32(0x25cb0000), SPH_C32(0xae2f07c8),
+	  SPH_C32(0x9d500000), SPH_C32(0xdb056d5d), SPH_C32(0x507db82f),
+	  SPH_C32(0x0f51873c), SPH_C32(0xe6cec260), SPH_C32(0xd3ce0000),
+	  SPH_C32(0xc5030000), SPH_C32(0x0c5302ce), SPH_C32(0x650c0000),
+	  SPH_C32(0xc79856ee), SPH_C32(0x0dd77d72), SPH_C32(0x290c2dc8),
+	  SPH_C32(0xdd64a4f5) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0xd3ce0000), SPH_C32(0xc5030000), SPH_C32(0x0c5302ce),
+	  SPH_C32(0x650c0000), SPH_C32(0xc79856ee), SPH_C32(0x0dd77d72),
+	  SPH_C32(0x290c2dc8), SPH_C32(0xdd64a4f5), SPH_C32(0x1e070000),
+	  SPH_C32(0xe0c80000), SPH_C32(0xa27c0506), SPH_C32(0xf85c0000),
+	  SPH_C32(0x1c9d3bb3), SPH_C32(0x5daac55d), SPH_C32(0x265daaf4),
+	  SPH_C32(0x3baa6695) },
+	{ SPH_C32(0xd2130000), SPH_C32(0x45ab0000), SPH_C32(0xf8c50286),
+	  SPH_C32(0xc30c0000), SPH_C32(0x574d284c), SPH_C32(0xda31f145),
+	  SPH_C32(0x4f1ee235), SPH_C32(0xf1f0e16b), SPH_C32(0x4c570000),
+	  SPH_C32(0xc99c0000), SPH_C32(0xc81d0548), SPH_C32(0x08a30000),
+	  SPH_C32(0x86ac455f), SPH_C32(0x18898493), SPH_C32(0xe90b2511),
+	  SPH_C32(0x68a9759a) },
+	{ SPH_C32(0x80430000), SPH_C32(0x6cff0000), SPH_C32(0x92a402c8),
+	  SPH_C32(0x33f30000), SPH_C32(0xcd7c56a0), SPH_C32(0x9f12b08b),
+	  SPH_C32(0x80486dd0), SPH_C32(0xa2f3f264), SPH_C32(0x1fda0000),
+	  SPH_C32(0x60600000), SPH_C32(0x56ea054e), SPH_C32(0x5e5c0000),
+	  SPH_C32(0x8c484511), SPH_C32(0x8a4c496a), SPH_C32(0x404f6509),
+	  SPH_C32(0x173e230b) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) },
+	{ SPH_C32(0x1fda0000), SPH_C32(0x60600000), SPH_C32(0x56ea054e),
+	  SPH_C32(0x5e5c0000), SPH_C32(0x8c484511), SPH_C32(0x8a4c496a),
+	  SPH_C32(0x404f6509), SPH_C32(0x173e230b), SPH_C32(0x9f990000),
+	  SPH_C32(0x0c9f0000), SPH_C32(0xc44e0786), SPH_C32(0x6daf0000),
+	  SPH_C32(0x413413b1), SPH_C32(0x155ef9e1), SPH_C32(0xc00708d9),
+	  SPH_C32(0xb5cdd16f) },
+	{ SPH_C32(0x1e070000), SPH_C32(0xe0c80000), SPH_C32(0xa27c0506),
+	  SPH_C32(0xf85c0000), SPH_C32(0x1c9d3bb3), SPH_C32(0x5daac55d),
+	  SPH_C32(0x265daaf4), SPH_C32(0x3baa6695), SPH_C32(0xcdc90000),
+	  SPH_C32(0x25cb0000), SPH_C32(0xae2f07c8), SPH_C32(0x9d500000),
+	  SPH_C32(0xdb056d5d), SPH_C32(0x507db82f), SPH_C32(0x0f51873c),
+	  SPH_C32(0xe6cec260) },
+	{ SPH_C32(0x4c570000), SPH_C32(0xc99c0000), SPH_C32(0xc81d0548),
+	  SPH_C32(0x08a30000), SPH_C32(0x86ac455f), SPH_C32(0x18898493),
+	  SPH_C32(0xe90b2511), SPH_C32(0x68a9759a), SPH_C32(0x9e440000),
+	  SPH_C32(0x8c370000), SPH_C32(0x30d807ce), SPH_C32(0xcbaf0000),
+	  SPH_C32(0xd1e16d13), SPH_C32(0xc2b875d6), SPH_C32(0xa615c724),
+	  SPH_C32(0x995994f1) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0x2a730000), SPH_C32(0x3ba80000), SPH_C32(0xc35b0bce),
+	  SPH_C32(0x605a0000), SPH_C32(0xeb0f5695), SPH_C32(0x3bcac8ea),
+	  SPH_C32(0x3fda2f87), SPH_C32(0x306c98a4), SPH_C32(0x51220000),
+	  SPH_C32(0x1ed40000), SPH_C32(0x24eb0306), SPH_C32(0x00670000),
+	  SPH_C32(0xb069459d), SPH_C32(0x128d0b9e), SPH_C32(0x00185482),
+	  SPH_C32(0x8b61bcea) },
+	{ SPH_C32(0x2bae0000), SPH_C32(0xbb000000), SPH_C32(0x37cd0b86),
+	  SPH_C32(0xc65a0000), SPH_C32(0x7bda2837), SPH_C32(0xec2c44dd),
+	  SPH_C32(0x59c8e07a), SPH_C32(0x1cf8dd3a), SPH_C32(0x03720000),
+	  SPH_C32(0x37800000), SPH_C32(0x4e8a0348), SPH_C32(0xf0980000),
+	  SPH_C32(0x2a583b71), SPH_C32(0x57ae4a50), SPH_C32(0xcf4edb67),
+	  SPH_C32(0xd862afe5) },
+	{ SPH_C32(0x79fe0000), SPH_C32(0x92540000), SPH_C32(0x5dac0bc8),
+	  SPH_C32(0x36a50000), SPH_C32(0xe1eb56db), SPH_C32(0xa90f0513),
+	  SPH_C32(0x969e6f9f), SPH_C32(0x4ffbce35), SPH_C32(0x50ff0000),
+	  SPH_C32(0x9e7c0000), SPH_C32(0xd07d034e), SPH_C32(0xa6670000),
+	  SPH_C32(0x20bc3b3f), SPH_C32(0xc56b87a9), SPH_C32(0x660a9b7f),
+	  SPH_C32(0xa7f5f974) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xb79f0000), SPH_C32(0xf3830c00),
+	  SPH_C32(0xabf50000), SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c),
+	  SPH_C32(0x99cfe8a3), SPH_C32(0xa9350c55), SPH_C32(0x83310000),
+	  SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180), SPH_C32(0xc36b0000),
+	  SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb), SPH_C32(0x4f06b6b7),
+	  SPH_C32(0x7a915d81) },
+	{ SPH_C32(0xe6670000), SPH_C32(0x9ecb0000), SPH_C32(0x99e20c4e),
+	  SPH_C32(0x5b0a0000), SPH_C32(0xa0df456a), SPH_C32(0xbc51fcf2),
+	  SPH_C32(0x56996746), SPH_C32(0xfa361f5a), SPH_C32(0xd0bc0000),
+	  SPH_C32(0xf2830000), SPH_C32(0x42d90186), SPH_C32(0x95940000),
+	  SPH_C32(0xedc06d9f), SPH_C32(0x5a793722), SPH_C32(0xe642f6af),
+	  SPH_C32(0x05060b10) },
+	{ SPH_C32(0xe7ba0000), SPH_C32(0x1e630000), SPH_C32(0x6d740c06),
+	  SPH_C32(0xfd0a0000), SPH_C32(0x300a3bc8), SPH_C32(0x6bb770c5),
+	  SPH_C32(0x308ba8bb), SPH_C32(0xd6a25ac4), SPH_C32(0x82ec0000),
+	  SPH_C32(0xdbd70000), SPH_C32(0x28b801c8), SPH_C32(0x656b0000),
+	  SPH_C32(0x77f11373), SPH_C32(0x1f5a76ec), SPH_C32(0x2914794a),
+	  SPH_C32(0x5605181f) },
+	{ SPH_C32(0xb5ea0000), SPH_C32(0x37370000), SPH_C32(0x07150c48),
+	  SPH_C32(0x0df50000), SPH_C32(0xaa3b4524), SPH_C32(0x2e94310b),
+	  SPH_C32(0xffdd275e), SPH_C32(0x85a149cb), SPH_C32(0xd1610000),
+	  SPH_C32(0x722b0000), SPH_C32(0xb64f01ce), SPH_C32(0x33940000),
+	  SPH_C32(0x7d15133d), SPH_C32(0x8d9fbb15), SPH_C32(0x80503952),
+	  SPH_C32(0x29924e8e) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0xabed0000), SPH_C32(0xd7ff0000), SPH_C32(0xa569094e),
+	  SPH_C32(0xf5a90000), SPH_C32(0xb6a67e97), SPH_C32(0x733ef456),
+	  SPH_C32(0xd9808daa), SPH_C32(0xbe0b2f5e), SPH_C32(0x1ca80000),
+	  SPH_C32(0x57e00000), SPH_C32(0x18600606), SPH_C32(0xaec40000),
+	  SPH_C32(0xa6107e60), SPH_C32(0xdde2033a), SPH_C32(0x8f01be6e),
+	  SPH_C32(0xcf5c8cee) },
+	{ SPH_C32(0xaa300000), SPH_C32(0x57570000), SPH_C32(0x51ff0906),
+	  SPH_C32(0x53a90000), SPH_C32(0x26730035), SPH_C32(0xa4d87861),
+	  SPH_C32(0xbf924257), SPH_C32(0x929f6ac0), SPH_C32(0x4ef80000),
+	  SPH_C32(0x7eb40000), SPH_C32(0x72010648), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x3c21008c), SPH_C32(0x98c142f4), SPH_C32(0x4057318b),
+	  SPH_C32(0x9c5f9fe1) },
+	{ SPH_C32(0xf8600000), SPH_C32(0x7e030000), SPH_C32(0x3b9e0948),
+	  SPH_C32(0xa3560000), SPH_C32(0xbc427ed9), SPH_C32(0xe1fb39af),
+	  SPH_C32(0x70c4cdb2), SPH_C32(0xc19c79cf), SPH_C32(0x1d750000),
+	  SPH_C32(0xd7480000), SPH_C32(0xecf6064e), SPH_C32(0x08c40000),
+	  SPH_C32(0x36c500c2), SPH_C32(0x0a048f0d), SPH_C32(0xe9137193),
+	  SPH_C32(0xe3c8c970) },
+	{ SPH_C32(0x35a90000), SPH_C32(0x5bc80000), SPH_C32(0x95b10e80),
+	  SPH_C32(0x3e060000), SPH_C32(0x67471384), SPH_C32(0xb1868180),
+	  SPH_C32(0x7f954a8e), SPH_C32(0x2752bbaf), SPH_C32(0xcebb0000),
+	  SPH_C32(0x124b0000), SPH_C32(0xe0a50480), SPH_C32(0x6dc80000),
+	  SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f), SPH_C32(0xc01f5c5b),
+	  SPH_C32(0x3eac6d85) },
+	{ SPH_C32(0x67f90000), SPH_C32(0x729c0000), SPH_C32(0xffd00ece),
+	  SPH_C32(0xcef90000), SPH_C32(0xfd766d68), SPH_C32(0xf4a5c04e),
+	  SPH_C32(0xb0c3c56b), SPH_C32(0x7451a8a0), SPH_C32(0x9d360000),
+	  SPH_C32(0xbbb70000), SPH_C32(0x7e520486), SPH_C32(0x3b370000),
+	  SPH_C32(0xfbb95662), SPH_C32(0x95163f86), SPH_C32(0x695b1c43),
+	  SPH_C32(0x413b3b14) },
+	{ SPH_C32(0x66240000), SPH_C32(0xf2340000), SPH_C32(0x0b460e86),
+	  SPH_C32(0x68f90000), SPH_C32(0x6da313ca), SPH_C32(0x23434c79),
+	  SPH_C32(0xd6d10a96), SPH_C32(0x58c5ed3e), SPH_C32(0xcf660000),
+	  SPH_C32(0x92e30000), SPH_C32(0x143304c8), SPH_C32(0xcbc80000),
+	  SPH_C32(0x6188288e), SPH_C32(0xd0357e48), SPH_C32(0xa60d93a6),
+	  SPH_C32(0x1238281b) },
+	{ SPH_C32(0x34740000), SPH_C32(0xdb600000), SPH_C32(0x61270ec8),
+	  SPH_C32(0x98060000), SPH_C32(0xf7926d26), SPH_C32(0x66600db7),
+	  SPH_C32(0x19878573), SPH_C32(0x0bc6fe31), SPH_C32(0x9ceb0000),
+	  SPH_C32(0x3b1f0000), SPH_C32(0x8ac404ce), SPH_C32(0x9d370000),
+	  SPH_C32(0x6b6c28c0), SPH_C32(0x42f0b3b1), SPH_C32(0x0f49d3be),
+	  SPH_C32(0x6daf7e8a) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0x50ff0000), SPH_C32(0x9e7c0000), SPH_C32(0xd07d034e),
+	  SPH_C32(0xa6670000), SPH_C32(0x20bc3b3f), SPH_C32(0xc56b87a9),
+	  SPH_C32(0x660a9b7f), SPH_C32(0xa7f5f974), SPH_C32(0x29010000),
+	  SPH_C32(0x0c280000), SPH_C32(0x8dd10886), SPH_C32(0x90c20000),
+	  SPH_C32(0xc1576de4), SPH_C32(0x6c6482ba), SPH_C32(0xf094f4e0),
+	  SPH_C32(0xe80e3741) },
+	{ SPH_C32(0x51220000), SPH_C32(0x1ed40000), SPH_C32(0x24eb0306),
+	  SPH_C32(0x00670000), SPH_C32(0xb069459d), SPH_C32(0x128d0b9e),
+	  SPH_C32(0x00185482), SPH_C32(0x8b61bcea), SPH_C32(0x7b510000),
+	  SPH_C32(0x257c0000), SPH_C32(0xe7b008c8), SPH_C32(0x603d0000),
+	  SPH_C32(0x5b661308), SPH_C32(0x2947c374), SPH_C32(0x3fc27b05),
+	  SPH_C32(0xbb0d244e) },
+	{ SPH_C32(0x03720000), SPH_C32(0x37800000), SPH_C32(0x4e8a0348),
+	  SPH_C32(0xf0980000), SPH_C32(0x2a583b71), SPH_C32(0x57ae4a50),
+	  SPH_C32(0xcf4edb67), SPH_C32(0xd862afe5), SPH_C32(0x28dc0000),
+	  SPH_C32(0x8c800000), SPH_C32(0x794708ce), SPH_C32(0x36c20000),
+	  SPH_C32(0x51821346), SPH_C32(0xbb820e8d), SPH_C32(0x96863b1d),
+	  SPH_C32(0xc49a72df) },
+	{ SPH_C32(0xcebb0000), SPH_C32(0x124b0000), SPH_C32(0xe0a50480),
+	  SPH_C32(0x6dc80000), SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f),
+	  SPH_C32(0xc01f5c5b), SPH_C32(0x3eac6d85), SPH_C32(0xfb120000),
+	  SPH_C32(0x49830000), SPH_C32(0x75140a00), SPH_C32(0x53ce0000),
+	  SPH_C32(0x961a45a8), SPH_C32(0xb65573ff), SPH_C32(0xbf8a16d5),
+	  SPH_C32(0x19fed62a) },
+	{ SPH_C32(0x9ceb0000), SPH_C32(0x3b1f0000), SPH_C32(0x8ac404ce),
+	  SPH_C32(0x9d370000), SPH_C32(0x6b6c28c0), SPH_C32(0x42f0b3b1),
+	  SPH_C32(0x0f49d3be), SPH_C32(0x6daf7e8a), SPH_C32(0xa89f0000),
+	  SPH_C32(0xe07f0000), SPH_C32(0xebe30a06), SPH_C32(0x05310000),
+	  SPH_C32(0x9cfe45e6), SPH_C32(0x2490be06), SPH_C32(0x16ce56cd),
+	  SPH_C32(0x666980bb) },
+	{ SPH_C32(0x9d360000), SPH_C32(0xbbb70000), SPH_C32(0x7e520486),
+	  SPH_C32(0x3b370000), SPH_C32(0xfbb95662), SPH_C32(0x95163f86),
+	  SPH_C32(0x695b1c43), SPH_C32(0x413b3b14), SPH_C32(0xfacf0000),
+	  SPH_C32(0xc92b0000), SPH_C32(0x81820a48), SPH_C32(0xf5ce0000),
+	  SPH_C32(0x06cf3b0a), SPH_C32(0x61b3ffc8), SPH_C32(0xd998d928),
+	  SPH_C32(0x356a93b4) },
+	{ SPH_C32(0xcf660000), SPH_C32(0x92e30000), SPH_C32(0x143304c8),
+	  SPH_C32(0xcbc80000), SPH_C32(0x6188288e), SPH_C32(0xd0357e48),
+	  SPH_C32(0xa60d93a6), SPH_C32(0x1238281b), SPH_C32(0xa9420000),
+	  SPH_C32(0x60d70000), SPH_C32(0x1f750a4e), SPH_C32(0xa3310000),
+	  SPH_C32(0x0c2b3b44), SPH_C32(0xf3763231), SPH_C32(0x70dc9930),
+	  SPH_C32(0x4afdc525) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0xd1610000), SPH_C32(0x722b0000), SPH_C32(0xb64f01ce),
+	  SPH_C32(0x33940000), SPH_C32(0x7d15133d), SPH_C32(0x8d9fbb15),
+	  SPH_C32(0x80503952), SPH_C32(0x29924e8e), SPH_C32(0x648b0000),
+	  SPH_C32(0x451c0000), SPH_C32(0xb15a0d86), SPH_C32(0x3e610000),
+	  SPH_C32(0xd72e5619), SPH_C32(0xa30b8a1e), SPH_C32(0x7f8d1e0c),
+	  SPH_C32(0xac330745) },
+	{ SPH_C32(0xd0bc0000), SPH_C32(0xf2830000), SPH_C32(0x42d90186),
+	  SPH_C32(0x95940000), SPH_C32(0xedc06d9f), SPH_C32(0x5a793722),
+	  SPH_C32(0xe642f6af), SPH_C32(0x05060b10), SPH_C32(0x36db0000),
+	  SPH_C32(0x6c480000), SPH_C32(0xdb3b0dc8), SPH_C32(0xce9e0000),
+	  SPH_C32(0x4d1f28f5), SPH_C32(0xe628cbd0), SPH_C32(0xb0db91e9),
+	  SPH_C32(0xff30144a) },
+	{ SPH_C32(0x82ec0000), SPH_C32(0xdbd70000), SPH_C32(0x28b801c8),
+	  SPH_C32(0x656b0000), SPH_C32(0x77f11373), SPH_C32(0x1f5a76ec),
+	  SPH_C32(0x2914794a), SPH_C32(0x5605181f), SPH_C32(0x65560000),
+	  SPH_C32(0xc5b40000), SPH_C32(0x45cc0dce), SPH_C32(0x98610000),
+	  SPH_C32(0x47fb28bb), SPH_C32(0x74ed0629), SPH_C32(0x199fd1f1),
+	  SPH_C32(0x80a742db) },
+	{ SPH_C32(0x4f250000), SPH_C32(0xfe1c0000), SPH_C32(0x86970600),
+	  SPH_C32(0xf83b0000), SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3),
+	  SPH_C32(0x2645fe76), SPH_C32(0xb0cbda7f), SPH_C32(0xb6980000),
+	  SPH_C32(0x00b70000), SPH_C32(0x499f0f00), SPH_C32(0xfd6d0000),
+	  SPH_C32(0x80637e55), SPH_C32(0x793a7b5b), SPH_C32(0x3093fc39),
+	  SPH_C32(0x5dc3e62e) },
+	{ SPH_C32(0x1d750000), SPH_C32(0xd7480000), SPH_C32(0xecf6064e),
+	  SPH_C32(0x08c40000), SPH_C32(0x36c500c2), SPH_C32(0x0a048f0d),
+	  SPH_C32(0xe9137193), SPH_C32(0xe3c8c970), SPH_C32(0xe5150000),
+	  SPH_C32(0xa94b0000), SPH_C32(0xd7680f06), SPH_C32(0xab920000),
+	  SPH_C32(0x8a877e1b), SPH_C32(0xebffb6a2), SPH_C32(0x99d7bc21),
+	  SPH_C32(0x2254b0bf) },
+	{ SPH_C32(0x1ca80000), SPH_C32(0x57e00000), SPH_C32(0x18600606),
+	  SPH_C32(0xaec40000), SPH_C32(0xa6107e60), SPH_C32(0xdde2033a),
+	  SPH_C32(0x8f01be6e), SPH_C32(0xcf5c8cee), SPH_C32(0xb7450000),
+	  SPH_C32(0x801f0000), SPH_C32(0xbd090f48), SPH_C32(0x5b6d0000),
+	  SPH_C32(0x10b600f7), SPH_C32(0xaedcf76c), SPH_C32(0x568133c4),
+	  SPH_C32(0x7157a3b0) },
+	{ SPH_C32(0x4ef80000), SPH_C32(0x7eb40000), SPH_C32(0x72010648),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x3c21008c), SPH_C32(0x98c142f4),
+	  SPH_C32(0x4057318b), SPH_C32(0x9c5f9fe1), SPH_C32(0xe4c80000),
+	  SPH_C32(0x29e30000), SPH_C32(0x23fe0f4e), SPH_C32(0x0d920000),
+	  SPH_C32(0x1a5200b9), SPH_C32(0x3c193a95), SPH_C32(0xffc573dc),
+	  SPH_C32(0x0ec0f521) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0x28dc0000), SPH_C32(0x8c800000), SPH_C32(0x794708ce),
+	  SPH_C32(0x36c20000), SPH_C32(0x51821346), SPH_C32(0xbb820e8d),
+	  SPH_C32(0x96863b1d), SPH_C32(0xc49a72df), SPH_C32(0x2bae0000),
+	  SPH_C32(0xbb000000), SPH_C32(0x37cd0b86), SPH_C32(0xc65a0000),
+	  SPH_C32(0x7bda2837), SPH_C32(0xec2c44dd), SPH_C32(0x59c8e07a),
+	  SPH_C32(0x1cf8dd3a) },
+	{ SPH_C32(0x29010000), SPH_C32(0x0c280000), SPH_C32(0x8dd10886),
+	  SPH_C32(0x90c20000), SPH_C32(0xc1576de4), SPH_C32(0x6c6482ba),
+	  SPH_C32(0xf094f4e0), SPH_C32(0xe80e3741), SPH_C32(0x79fe0000),
+	  SPH_C32(0x92540000), SPH_C32(0x5dac0bc8), SPH_C32(0x36a50000),
+	  SPH_C32(0xe1eb56db), SPH_C32(0xa90f0513), SPH_C32(0x969e6f9f),
+	  SPH_C32(0x4ffbce35) },
+	{ SPH_C32(0x7b510000), SPH_C32(0x257c0000), SPH_C32(0xe7b008c8),
+	  SPH_C32(0x603d0000), SPH_C32(0x5b661308), SPH_C32(0x2947c374),
+	  SPH_C32(0x3fc27b05), SPH_C32(0xbb0d244e), SPH_C32(0x2a730000),
+	  SPH_C32(0x3ba80000), SPH_C32(0xc35b0bce), SPH_C32(0x605a0000),
+	  SPH_C32(0xeb0f5695), SPH_C32(0x3bcac8ea), SPH_C32(0x3fda2f87),
+	  SPH_C32(0x306c98a4) },
+	{ SPH_C32(0xb6980000), SPH_C32(0x00b70000), SPH_C32(0x499f0f00),
+	  SPH_C32(0xfd6d0000), SPH_C32(0x80637e55), SPH_C32(0x793a7b5b),
+	  SPH_C32(0x3093fc39), SPH_C32(0x5dc3e62e), SPH_C32(0xf9bd0000),
+	  SPH_C32(0xfeab0000), SPH_C32(0xcf080900), SPH_C32(0x05560000),
+	  SPH_C32(0x2c97007b), SPH_C32(0x361db598), SPH_C32(0x16d6024f),
+	  SPH_C32(0xed083c51) },
+	{ SPH_C32(0xe4c80000), SPH_C32(0x29e30000), SPH_C32(0x23fe0f4e),
+	  SPH_C32(0x0d920000), SPH_C32(0x1a5200b9), SPH_C32(0x3c193a95),
+	  SPH_C32(0xffc573dc), SPH_C32(0x0ec0f521), SPH_C32(0xaa300000),
+	  SPH_C32(0x57570000), SPH_C32(0x51ff0906), SPH_C32(0x53a90000),
+	  SPH_C32(0x26730035), SPH_C32(0xa4d87861), SPH_C32(0xbf924257),
+	  SPH_C32(0x929f6ac0) },
+	{ SPH_C32(0xe5150000), SPH_C32(0xa94b0000), SPH_C32(0xd7680f06),
+	  SPH_C32(0xab920000), SPH_C32(0x8a877e1b), SPH_C32(0xebffb6a2),
+	  SPH_C32(0x99d7bc21), SPH_C32(0x2254b0bf), SPH_C32(0xf8600000),
+	  SPH_C32(0x7e030000), SPH_C32(0x3b9e0948), SPH_C32(0xa3560000),
+	  SPH_C32(0xbc427ed9), SPH_C32(0xe1fb39af), SPH_C32(0x70c4cdb2),
+	  SPH_C32(0xc19c79cf) },
+	{ SPH_C32(0xb7450000), SPH_C32(0x801f0000), SPH_C32(0xbd090f48),
+	  SPH_C32(0x5b6d0000), SPH_C32(0x10b600f7), SPH_C32(0xaedcf76c),
+	  SPH_C32(0x568133c4), SPH_C32(0x7157a3b0), SPH_C32(0xabed0000),
+	  SPH_C32(0xd7ff0000), SPH_C32(0xa569094e), SPH_C32(0xf5a90000),
+	  SPH_C32(0xb6a67e97), SPH_C32(0x733ef456), SPH_C32(0xd9808daa),
+	  SPH_C32(0xbe0b2f5e) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) },
+	{ SPH_C32(0xa9420000), SPH_C32(0x60d70000), SPH_C32(0x1f750a4e),
+	  SPH_C32(0xa3310000), SPH_C32(0x0c2b3b44), SPH_C32(0xf3763231),
+	  SPH_C32(0x70dc9930), SPH_C32(0x4afdc525), SPH_C32(0x66240000),
+	  SPH_C32(0xf2340000), SPH_C32(0x0b460e86), SPH_C32(0x68f90000),
+	  SPH_C32(0x6da313ca), SPH_C32(0x23434c79), SPH_C32(0xd6d10a96),
+	  SPH_C32(0x58c5ed3e) },
+	{ SPH_C32(0xa89f0000), SPH_C32(0xe07f0000), SPH_C32(0xebe30a06),
+	  SPH_C32(0x05310000), SPH_C32(0x9cfe45e6), SPH_C32(0x2490be06),
+	  SPH_C32(0x16ce56cd), SPH_C32(0x666980bb), SPH_C32(0x34740000),
+	  SPH_C32(0xdb600000), SPH_C32(0x61270ec8), SPH_C32(0x98060000),
+	  SPH_C32(0xf7926d26), SPH_C32(0x66600db7), SPH_C32(0x19878573),
+	  SPH_C32(0x0bc6fe31) },
+	{ SPH_C32(0xfacf0000), SPH_C32(0xc92b0000), SPH_C32(0x81820a48),
+	  SPH_C32(0xf5ce0000), SPH_C32(0x06cf3b0a), SPH_C32(0x61b3ffc8),
+	  SPH_C32(0xd998d928), SPH_C32(0x356a93b4), SPH_C32(0x67f90000),
+	  SPH_C32(0x729c0000), SPH_C32(0xffd00ece), SPH_C32(0xcef90000),
+	  SPH_C32(0xfd766d68), SPH_C32(0xf4a5c04e), SPH_C32(0xb0c3c56b),
+	  SPH_C32(0x7451a8a0) },
+	{ SPH_C32(0x37060000), SPH_C32(0xece00000), SPH_C32(0x2fad0d80),
+	  SPH_C32(0x689e0000), SPH_C32(0xddca5657), SPH_C32(0x31ce47e7),
+	  SPH_C32(0xd6c95e14), SPH_C32(0xd3a451d4), SPH_C32(0xb4370000),
+	  SPH_C32(0xb79f0000), SPH_C32(0xf3830c00), SPH_C32(0xabf50000),
+	  SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c), SPH_C32(0x99cfe8a3),
+	  SPH_C32(0xa9350c55) },
+	{ SPH_C32(0x65560000), SPH_C32(0xc5b40000), SPH_C32(0x45cc0dce),
+	  SPH_C32(0x98610000), SPH_C32(0x47fb28bb), SPH_C32(0x74ed0629),
+	  SPH_C32(0x199fd1f1), SPH_C32(0x80a742db), SPH_C32(0xe7ba0000),
+	  SPH_C32(0x1e630000), SPH_C32(0x6d740c06), SPH_C32(0xfd0a0000),
+	  SPH_C32(0x300a3bc8), SPH_C32(0x6bb770c5), SPH_C32(0x308ba8bb),
+	  SPH_C32(0xd6a25ac4) },
+	{ SPH_C32(0x648b0000), SPH_C32(0x451c0000), SPH_C32(0xb15a0d86),
+	  SPH_C32(0x3e610000), SPH_C32(0xd72e5619), SPH_C32(0xa30b8a1e),
+	  SPH_C32(0x7f8d1e0c), SPH_C32(0xac330745), SPH_C32(0xb5ea0000),
+	  SPH_C32(0x37370000), SPH_C32(0x07150c48), SPH_C32(0x0df50000),
+	  SPH_C32(0xaa3b4524), SPH_C32(0x2e94310b), SPH_C32(0xffdd275e),
+	  SPH_C32(0x85a149cb) },
+	{ SPH_C32(0x36db0000), SPH_C32(0x6c480000), SPH_C32(0xdb3b0dc8),
+	  SPH_C32(0xce9e0000), SPH_C32(0x4d1f28f5), SPH_C32(0xe628cbd0),
+	  SPH_C32(0xb0db91e9), SPH_C32(0xff30144a), SPH_C32(0xe6670000),
+	  SPH_C32(0x9ecb0000), SPH_C32(0x99e20c4e), SPH_C32(0x5b0a0000),
+	  SPH_C32(0xa0df456a), SPH_C32(0xbc51fcf2), SPH_C32(0x56996746),
+	  SPH_C32(0xfa361f5a) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0xfe180000), SPH_C32(0x32f20000), SPH_C32(0x2f9a13ce),
+	  SPH_C32(0xf3bc0000), SPH_C32(0xc0b44f86), SPH_C32(0x5a911178),
+	  SPH_C32(0x3124481b), SPH_C32(0xc2e76bf9), SPH_C32(0x4dc30000),
+	  SPH_C32(0x77330000), SPH_C32(0xf30f0186), SPH_C32(0x21db0000),
+	  SPH_C32(0xe6a307d0), SPH_C32(0x6665a4b7), SPH_C32(0x64e7580a),
+	  SPH_C32(0xe73d1fff) },
+	{ SPH_C32(0xffc50000), SPH_C32(0xb25a0000), SPH_C32(0xdb0c1386),
+	  SPH_C32(0x55bc0000), SPH_C32(0x50613124), SPH_C32(0x8d779d4f),
+	  SPH_C32(0x573687e6), SPH_C32(0xee732e67), SPH_C32(0x1f930000),
+	  SPH_C32(0x5e670000), SPH_C32(0x996e01c8), SPH_C32(0xd1240000),
+	  SPH_C32(0x7c92793c), SPH_C32(0x2346e579), SPH_C32(0xabb1d7ef),
+	  SPH_C32(0xb43e0cf0) },
+	{ SPH_C32(0xad950000), SPH_C32(0x9b0e0000), SPH_C32(0xb16d13c8),
+	  SPH_C32(0xa5430000), SPH_C32(0xca504fc8), SPH_C32(0xc854dc81),
+	  SPH_C32(0x98600803), SPH_C32(0xbd703d68), SPH_C32(0x4c1e0000),
+	  SPH_C32(0xf79b0000), SPH_C32(0x079901ce), SPH_C32(0x87db0000),
+	  SPH_C32(0x76767972), SPH_C32(0xb1832880), SPH_C32(0x02f597f7),
+	  SPH_C32(0xcba95a61) },
+	{ SPH_C32(0x605c0000), SPH_C32(0xbec50000), SPH_C32(0x1f421400),
+	  SPH_C32(0x38130000), SPH_C32(0x11552295), SPH_C32(0x982964ae),
+	  SPH_C32(0x97318f3f), SPH_C32(0x5bbeff08), SPH_C32(0x9fd00000),
+	  SPH_C32(0x32980000), SPH_C32(0x0bca0300), SPH_C32(0xe2d70000),
+	  SPH_C32(0xb1ee2f9c), SPH_C32(0xbc5455f2), SPH_C32(0x2bf9ba3f),
+	  SPH_C32(0x16cdfe94) },
+	{ SPH_C32(0x320c0000), SPH_C32(0x97910000), SPH_C32(0x7523144e),
+	  SPH_C32(0xc8ec0000), SPH_C32(0x8b645c79), SPH_C32(0xdd0a2560),
+	  SPH_C32(0x586700da), SPH_C32(0x08bdec07), SPH_C32(0xcc5d0000),
+	  SPH_C32(0x9b640000), SPH_C32(0x953d0306), SPH_C32(0xb4280000),
+	  SPH_C32(0xbb0a2fd2), SPH_C32(0x2e91980b), SPH_C32(0x82bdfa27),
+	  SPH_C32(0x695aa805) },
+	{ SPH_C32(0x33d10000), SPH_C32(0x17390000), SPH_C32(0x81b51406),
+	  SPH_C32(0x6eec0000), SPH_C32(0x1bb122db), SPH_C32(0x0aeca957),
+	  SPH_C32(0x3e75cf27), SPH_C32(0x2429a999), SPH_C32(0x9e0d0000),
+	  SPH_C32(0xb2300000), SPH_C32(0xff5c0348), SPH_C32(0x44d70000),
+	  SPH_C32(0x213b513e), SPH_C32(0x6bb2d9c5), SPH_C32(0x4deb75c2),
+	  SPH_C32(0x3a59bb0a) },
+	{ SPH_C32(0x61810000), SPH_C32(0x3e6d0000), SPH_C32(0xebd41448),
+	  SPH_C32(0x9e130000), SPH_C32(0x81805c37), SPH_C32(0x4fcfe899),
+	  SPH_C32(0xf12340c2), SPH_C32(0x772aba96), SPH_C32(0xcd800000),
+	  SPH_C32(0x1bcc0000), SPH_C32(0x61ab034e), SPH_C32(0x12280000),
+	  SPH_C32(0x2bdf5170), SPH_C32(0xf977143c), SPH_C32(0xe4af35da),
+	  SPH_C32(0x45ceed9b) },
+	{ SPH_C32(0x2dd60000), SPH_C32(0xf7f10000), SPH_C32(0x23c91100),
+	  SPH_C32(0x96b00000), SPH_C32(0x072c1968), SPH_C32(0x57466c0a),
+	  SPH_C32(0x182865d3), SPH_C32(0x1f83cf0c), SPH_C32(0x53c40000),
+	  SPH_C32(0x97fb0000), SPH_C32(0x51730480), SPH_C32(0xd9870000),
+	  SPH_C32(0xfa3e3c63), SPH_C32(0x3bcf61ea), SPH_C32(0x42baf2fe),
+	  SPH_C32(0xdc97796a) },
+	{ SPH_C32(0x7f860000), SPH_C32(0xdea50000), SPH_C32(0x49a8114e),
+	  SPH_C32(0x664f0000), SPH_C32(0x9d1d6784), SPH_C32(0x12652dc4),
+	  SPH_C32(0xd77eea36), SPH_C32(0x4c80dc03), SPH_C32(0x00490000),
+	  SPH_C32(0x3e070000), SPH_C32(0xcf840486), SPH_C32(0x8f780000),
+	  SPH_C32(0xf0da3c2d), SPH_C32(0xa90aac13), SPH_C32(0xebfeb2e6),
+	  SPH_C32(0xa3002ffb) },
+	{ SPH_C32(0x7e5b0000), SPH_C32(0x5e0d0000), SPH_C32(0xbd3e1106),
+	  SPH_C32(0xc04f0000), SPH_C32(0x0dc81926), SPH_C32(0xc583a1f3),
+	  SPH_C32(0xb16c25cb), SPH_C32(0x6014999d), SPH_C32(0x52190000),
+	  SPH_C32(0x17530000), SPH_C32(0xa5e504c8), SPH_C32(0x7f870000),
+	  SPH_C32(0x6aeb42c1), SPH_C32(0xec29eddd), SPH_C32(0x24a83d03),
+	  SPH_C32(0xf0033cf4) },
+	{ SPH_C32(0x2c0b0000), SPH_C32(0x77590000), SPH_C32(0xd75f1148),
+	  SPH_C32(0x30b00000), SPH_C32(0x97f967ca), SPH_C32(0x80a0e03d),
+	  SPH_C32(0x7e3aaa2e), SPH_C32(0x33178a92), SPH_C32(0x01940000),
+	  SPH_C32(0xbeaf0000), SPH_C32(0x3b1204ce), SPH_C32(0x29780000),
+	  SPH_C32(0x600f428f), SPH_C32(0x7eec2024), SPH_C32(0x8dec7d1b),
+	  SPH_C32(0x8f946a65) },
+	{ SPH_C32(0xe1c20000), SPH_C32(0x52920000), SPH_C32(0x79701680),
+	  SPH_C32(0xade00000), SPH_C32(0x4cfc0a97), SPH_C32(0xd0dd5812),
+	  SPH_C32(0x716b2d12), SPH_C32(0xd5d948f2), SPH_C32(0xd25a0000),
+	  SPH_C32(0x7bac0000), SPH_C32(0x37410600), SPH_C32(0x4c740000),
+	  SPH_C32(0xa7971461), SPH_C32(0x733b5d56), SPH_C32(0xa4e050d3),
+	  SPH_C32(0x52f0ce90) },
+	{ SPH_C32(0xb3920000), SPH_C32(0x7bc60000), SPH_C32(0x131116ce),
+	  SPH_C32(0x5d1f0000), SPH_C32(0xd6cd747b), SPH_C32(0x95fe19dc),
+	  SPH_C32(0xbe3da2f7), SPH_C32(0x86da5bfd), SPH_C32(0x81d70000),
+	  SPH_C32(0xd2500000), SPH_C32(0xa9b60606), SPH_C32(0x1a8b0000),
+	  SPH_C32(0xad73142f), SPH_C32(0xe1fe90af), SPH_C32(0x0da410cb),
+	  SPH_C32(0x2d679801) },
+	{ SPH_C32(0xb24f0000), SPH_C32(0xfb6e0000), SPH_C32(0xe7871686),
+	  SPH_C32(0xfb1f0000), SPH_C32(0x46180ad9), SPH_C32(0x421895eb),
+	  SPH_C32(0xd82f6d0a), SPH_C32(0xaa4e1e63), SPH_C32(0xd3870000),
+	  SPH_C32(0xfb040000), SPH_C32(0xc3d70648), SPH_C32(0xea740000),
+	  SPH_C32(0x37426ac3), SPH_C32(0xa4ddd161), SPH_C32(0xc2f29f2e),
+	  SPH_C32(0x7e648b0e) },
+	{ SPH_C32(0xe01f0000), SPH_C32(0xd23a0000), SPH_C32(0x8de616c8),
+	  SPH_C32(0x0be00000), SPH_C32(0xdc297435), SPH_C32(0x073bd425),
+	  SPH_C32(0x1779e2ef), SPH_C32(0xf94d0d6c), SPH_C32(0x800a0000),
+	  SPH_C32(0x52f80000), SPH_C32(0x5d20064e), SPH_C32(0xbc8b0000),
+	  SPH_C32(0x3da66a8d), SPH_C32(0x36181c98), SPH_C32(0x6bb6df36),
+	  SPH_C32(0x01f3dd9f) },
+	{ SPH_C32(0xd46b0000), SPH_C32(0x095a0000), SPH_C32(0xecc11800),
+	  SPH_C32(0x93e60000), SPH_C32(0x2bbb1913), SPH_C32(0x615bd992),
+	  SPH_C32(0x0efe679c), SPH_C32(0xf28bf35d), SPH_C32(0x1ce10000),
+	  SPH_C32(0x69e70000), SPH_C32(0xd7e40280), SPH_C32(0x21bc0000),
+	  SPH_C32(0x56ca424d), SPH_C32(0x74e8af29), SPH_C32(0x64ff0c88),
+	  SPH_C32(0x6c5ca315) },
+	{ SPH_C32(0x863b0000), SPH_C32(0x200e0000), SPH_C32(0x86a0184e),
+	  SPH_C32(0x63190000), SPH_C32(0xb18a67ff), SPH_C32(0x2478985c),
+	  SPH_C32(0xc1a8e879), SPH_C32(0xa188e052), SPH_C32(0x4f6c0000),
+	  SPH_C32(0xc01b0000), SPH_C32(0x49130286), SPH_C32(0x77430000),
+	  SPH_C32(0x5c2e4203), SPH_C32(0xe62d62d0), SPH_C32(0xcdbb4c90),
+	  SPH_C32(0x13cbf584) },
+	{ SPH_C32(0x87e60000), SPH_C32(0xa0a60000), SPH_C32(0x72361806),
+	  SPH_C32(0xc5190000), SPH_C32(0x215f195d), SPH_C32(0xf39e146b),
+	  SPH_C32(0xa7ba2784), SPH_C32(0x8d1ca5cc), SPH_C32(0x1d3c0000),
+	  SPH_C32(0xe94f0000), SPH_C32(0x237202c8), SPH_C32(0x87bc0000),
+	  SPH_C32(0xc61f3cef), SPH_C32(0xa30e231e), SPH_C32(0x02edc375),
+	  SPH_C32(0x40c8e68b) },
+	{ SPH_C32(0xd5b60000), SPH_C32(0x89f20000), SPH_C32(0x18571848),
+	  SPH_C32(0x35e60000), SPH_C32(0xbb6e67b1), SPH_C32(0xb6bd55a5),
+	  SPH_C32(0x68eca861), SPH_C32(0xde1fb6c3), SPH_C32(0x4eb10000),
+	  SPH_C32(0x40b30000), SPH_C32(0xbd8502ce), SPH_C32(0xd1430000),
+	  SPH_C32(0xccfb3ca1), SPH_C32(0x31cbeee7), SPH_C32(0xaba9836d),
+	  SPH_C32(0x3f5fb01a) },
+	{ SPH_C32(0x187f0000), SPH_C32(0xac390000), SPH_C32(0xb6781f80),
+	  SPH_C32(0xa8b60000), SPH_C32(0x606b0aec), SPH_C32(0xe6c0ed8a),
+	  SPH_C32(0x67bd2f5d), SPH_C32(0x38d174a3), SPH_C32(0x9d7f0000),
+	  SPH_C32(0x85b00000), SPH_C32(0xb1d60000), SPH_C32(0xb44f0000),
+	  SPH_C32(0x0b636a4f), SPH_C32(0x3c1c9395), SPH_C32(0x82a5aea5),
+	  SPH_C32(0xe23b14ef) },
+	{ SPH_C32(0x4a2f0000), SPH_C32(0x856d0000), SPH_C32(0xdc191fce),
+	  SPH_C32(0x58490000), SPH_C32(0xfa5a7400), SPH_C32(0xa3e3ac44),
+	  SPH_C32(0xa8eba0b8), SPH_C32(0x6bd267ac), SPH_C32(0xcef20000),
+	  SPH_C32(0x2c4c0000), SPH_C32(0x2f210006), SPH_C32(0xe2b00000),
+	  SPH_C32(0x01876a01), SPH_C32(0xaed95e6c), SPH_C32(0x2be1eebd),
+	  SPH_C32(0x9dac427e) },
+	{ SPH_C32(0x4bf20000), SPH_C32(0x05c50000), SPH_C32(0x288f1f86),
+	  SPH_C32(0xfe490000), SPH_C32(0x6a8f0aa2), SPH_C32(0x74052073),
+	  SPH_C32(0xcef96f45), SPH_C32(0x47462232), SPH_C32(0x9ca20000),
+	  SPH_C32(0x05180000), SPH_C32(0x45400048), SPH_C32(0x124f0000),
+	  SPH_C32(0x9bb614ed), SPH_C32(0xebfa1fa2), SPH_C32(0xe4b76158),
+	  SPH_C32(0xceaf5171) },
+	{ SPH_C32(0x19a20000), SPH_C32(0x2c910000), SPH_C32(0x42ee1fc8),
+	  SPH_C32(0x0eb60000), SPH_C32(0xf0be744e), SPH_C32(0x312661bd),
+	  SPH_C32(0x01afe0a0), SPH_C32(0x1445313d), SPH_C32(0xcf2f0000),
+	  SPH_C32(0xace40000), SPH_C32(0xdbb7004e), SPH_C32(0x44b00000),
+	  SPH_C32(0x915214a3), SPH_C32(0x793fd25b), SPH_C32(0x4df32140),
+	  SPH_C32(0xb13807e0) },
+	{ SPH_C32(0x55f50000), SPH_C32(0xe50d0000), SPH_C32(0x8af31a80),
+	  SPH_C32(0x06150000), SPH_C32(0x76123111), SPH_C32(0x29afe52e),
+	  SPH_C32(0xe8a4c5b1), SPH_C32(0x7cec44a7), SPH_C32(0x516b0000),
+	  SPH_C32(0x20d30000), SPH_C32(0xeb6f0780), SPH_C32(0x8f1f0000),
+	  SPH_C32(0x40b379b0), SPH_C32(0xbb87a78d), SPH_C32(0xebe6e664),
+	  SPH_C32(0x28619311) },
+	{ SPH_C32(0x07a50000), SPH_C32(0xcc590000), SPH_C32(0xe0921ace),
+	  SPH_C32(0xf6ea0000), SPH_C32(0xec234ffd), SPH_C32(0x6c8ca4e0),
+	  SPH_C32(0x27f24a54), SPH_C32(0x2fef57a8), SPH_C32(0x02e60000),
+	  SPH_C32(0x892f0000), SPH_C32(0x75980786), SPH_C32(0xd9e00000),
+	  SPH_C32(0x4a5779fe), SPH_C32(0x29426a74), SPH_C32(0x42a2a67c),
+	  SPH_C32(0x57f6c580) },
+	{ SPH_C32(0x06780000), SPH_C32(0x4cf10000), SPH_C32(0x14041a86),
+	  SPH_C32(0x50ea0000), SPH_C32(0x7cf6315f), SPH_C32(0xbb6a28d7),
+	  SPH_C32(0x41e085a9), SPH_C32(0x037b1236), SPH_C32(0x50b60000),
+	  SPH_C32(0xa07b0000), SPH_C32(0x1ff907c8), SPH_C32(0x291f0000),
+	  SPH_C32(0xd0660712), SPH_C32(0x6c612bba), SPH_C32(0x8df42999),
+	  SPH_C32(0x04f5d68f) },
+	{ SPH_C32(0x54280000), SPH_C32(0x65a50000), SPH_C32(0x7e651ac8),
+	  SPH_C32(0xa0150000), SPH_C32(0xe6c74fb3), SPH_C32(0xfe496919),
+	  SPH_C32(0x8eb60a4c), SPH_C32(0x50780139), SPH_C32(0x033b0000),
+	  SPH_C32(0x09870000), SPH_C32(0x810e07ce), SPH_C32(0x7fe00000),
+	  SPH_C32(0xda82075c), SPH_C32(0xfea4e643), SPH_C32(0x24b06981),
+	  SPH_C32(0x7b62801e) },
+	{ SPH_C32(0x99e10000), SPH_C32(0x406e0000), SPH_C32(0xd04a1d00),
+	  SPH_C32(0x3d450000), SPH_C32(0x3dc222ee), SPH_C32(0xae34d136),
+	  SPH_C32(0x81e78d70), SPH_C32(0xb6b6c359), SPH_C32(0xd0f50000),
+	  SPH_C32(0xcc840000), SPH_C32(0x8d5d0500), SPH_C32(0x1aec0000),
+	  SPH_C32(0x1d1a51b2), SPH_C32(0xf3739b31), SPH_C32(0x0dbc4449),
+	  SPH_C32(0xa60624eb) },
+	{ SPH_C32(0xcbb10000), SPH_C32(0x693a0000), SPH_C32(0xba2b1d4e),
+	  SPH_C32(0xcdba0000), SPH_C32(0xa7f35c02), SPH_C32(0xeb1790f8),
+	  SPH_C32(0x4eb10295), SPH_C32(0xe5b5d056), SPH_C32(0x83780000),
+	  SPH_C32(0x65780000), SPH_C32(0x13aa0506), SPH_C32(0x4c130000),
+	  SPH_C32(0x17fe51fc), SPH_C32(0x61b656c8), SPH_C32(0xa4f80451),
+	  SPH_C32(0xd991727a) },
+	{ SPH_C32(0xca6c0000), SPH_C32(0xe9920000), SPH_C32(0x4ebd1d06),
+	  SPH_C32(0x6bba0000), SPH_C32(0x372622a0), SPH_C32(0x3cf11ccf),
+	  SPH_C32(0x28a3cd68), SPH_C32(0xc92195c8), SPH_C32(0xd1280000),
+	  SPH_C32(0x4c2c0000), SPH_C32(0x79cb0548), SPH_C32(0xbcec0000),
+	  SPH_C32(0x8dcf2f10), SPH_C32(0x24951706), SPH_C32(0x6bae8bb4),
+	  SPH_C32(0x8a926175) },
+	{ SPH_C32(0x983c0000), SPH_C32(0xc0c60000), SPH_C32(0x24dc1d48),
+	  SPH_C32(0x9b450000), SPH_C32(0xad175c4c), SPH_C32(0x79d25d01),
+	  SPH_C32(0xe7f5428d), SPH_C32(0x9a2286c7), SPH_C32(0x82a50000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xe73c054e), SPH_C32(0xea130000),
+	  SPH_C32(0x872b2f5e), SPH_C32(0xb650daff), SPH_C32(0xc2eacbac),
+	  SPH_C32(0xf50537e4) },
+	{ SPH_C32(0xaee70000), SPH_C32(0xac8e0000), SPH_C32(0xffe71080),
+	  SPH_C32(0x55db0000), SPH_C32(0xe00874b9), SPH_C32(0x9ffa96d1),
+	  SPH_C32(0x572ed364), SPH_C32(0x6512928d), SPH_C32(0x64c20000),
+	  SPH_C32(0x7b1b0000), SPH_C32(0x7ede0900), SPH_C32(0xb1190000),
+	  SPH_C32(0x27f46a34), SPH_C32(0x0a01260d), SPH_C32(0x9473acea),
+	  SPH_C32(0x0f3328be) },
+	{ SPH_C32(0xfcb70000), SPH_C32(0x85da0000), SPH_C32(0x958610ce),
+	  SPH_C32(0xa5240000), SPH_C32(0x7a390a55), SPH_C32(0xdad9d71f),
+	  SPH_C32(0x98785c81), SPH_C32(0x36118182), SPH_C32(0x374f0000),
+	  SPH_C32(0xd2e70000), SPH_C32(0xe0290906), SPH_C32(0xe7e60000),
+	  SPH_C32(0x2d106a7a), SPH_C32(0x98c4ebf4), SPH_C32(0x3d37ecf2),
+	  SPH_C32(0x70a47e2f) },
+	{ SPH_C32(0xfd6a0000), SPH_C32(0x05720000), SPH_C32(0x61101086),
+	  SPH_C32(0x03240000), SPH_C32(0xeaec74f7), SPH_C32(0x0d3f5b28),
+	  SPH_C32(0xfe6a937c), SPH_C32(0x1a85c41c), SPH_C32(0x651f0000),
+	  SPH_C32(0xfbb30000), SPH_C32(0x8a480948), SPH_C32(0x17190000),
+	  SPH_C32(0xb7211496), SPH_C32(0xdde7aa3a), SPH_C32(0xf2616317),
+	  SPH_C32(0x23a76d20) },
+	{ SPH_C32(0xaf3a0000), SPH_C32(0x2c260000), SPH_C32(0x0b7110c8),
+	  SPH_C32(0xf3db0000), SPH_C32(0x70dd0a1b), SPH_C32(0x481c1ae6),
+	  SPH_C32(0x313c1c99), SPH_C32(0x4986d713), SPH_C32(0x36920000),
+	  SPH_C32(0x524f0000), SPH_C32(0x14bf094e), SPH_C32(0x41e60000),
+	  SPH_C32(0xbdc514d8), SPH_C32(0x4f2267c3), SPH_C32(0x5b25230f),
+	  SPH_C32(0x5c303bb1) },
+	{ SPH_C32(0x62f30000), SPH_C32(0x09ed0000), SPH_C32(0xa55e1700),
+	  SPH_C32(0x6e8b0000), SPH_C32(0xabd86746), SPH_C32(0x1861a2c9),
+	  SPH_C32(0x3e6d9ba5), SPH_C32(0xaf481573), SPH_C32(0xe55c0000),
+	  SPH_C32(0x974c0000), SPH_C32(0x18ec0b80), SPH_C32(0x24ea0000),
+	  SPH_C32(0x7a5d4236), SPH_C32(0x42f51ab1), SPH_C32(0x72290ec7),
+	  SPH_C32(0x81549f44) },
+	{ SPH_C32(0x30a30000), SPH_C32(0x20b90000), SPH_C32(0xcf3f174e),
+	  SPH_C32(0x9e740000), SPH_C32(0x31e919aa), SPH_C32(0x5d42e307),
+	  SPH_C32(0xf13b1440), SPH_C32(0xfc4b067c), SPH_C32(0xb6d10000),
+	  SPH_C32(0x3eb00000), SPH_C32(0x861b0b86), SPH_C32(0x72150000),
+	  SPH_C32(0x70b94278), SPH_C32(0xd030d748), SPH_C32(0xdb6d4edf),
+	  SPH_C32(0xfec3c9d5) },
+	{ SPH_C32(0x317e0000), SPH_C32(0xa0110000), SPH_C32(0x3ba91706),
+	  SPH_C32(0x38740000), SPH_C32(0xa13c6708), SPH_C32(0x8aa46f30),
+	  SPH_C32(0x9729dbbd), SPH_C32(0xd0df43e2), SPH_C32(0xe4810000),
+	  SPH_C32(0x17e40000), SPH_C32(0xec7a0bc8), SPH_C32(0x82ea0000),
+	  SPH_C32(0xea883c94), SPH_C32(0x95139686), SPH_C32(0x143bc13a),
+	  SPH_C32(0xadc0dada) },
+	{ SPH_C32(0x632e0000), SPH_C32(0x89450000), SPH_C32(0x51c81748),
+	  SPH_C32(0xc88b0000), SPH_C32(0x3b0d19e4), SPH_C32(0xcf872efe),
+	  SPH_C32(0x587f5458), SPH_C32(0x83dc50ed), SPH_C32(0xb70c0000),
+	  SPH_C32(0xbe180000), SPH_C32(0x728d0bce), SPH_C32(0xd4150000),
+	  SPH_C32(0xe06c3cda), SPH_C32(0x07d65b7f), SPH_C32(0xbd7f8122),
+	  SPH_C32(0xd2578c4b) },
+	{ SPH_C32(0x2f790000), SPH_C32(0x40d90000), SPH_C32(0x99d51200),
+	  SPH_C32(0xc0280000), SPH_C32(0xbda15cbb), SPH_C32(0xd70eaa6d),
+	  SPH_C32(0xb1747149), SPH_C32(0xeb752577), SPH_C32(0x29480000),
+	  SPH_C32(0x322f0000), SPH_C32(0x42550c00), SPH_C32(0x1fba0000),
+	  SPH_C32(0x318d51c9), SPH_C32(0xc56e2ea9), SPH_C32(0x1b6a4606),
+	  SPH_C32(0x4b0e18ba) },
+	{ SPH_C32(0x7d290000), SPH_C32(0x698d0000), SPH_C32(0xf3b4124e),
+	  SPH_C32(0x30d70000), SPH_C32(0x27902257), SPH_C32(0x922deba3),
+	  SPH_C32(0x7e22feac), SPH_C32(0xb8763678), SPH_C32(0x7ac50000),
+	  SPH_C32(0x9bd30000), SPH_C32(0xdca20c06), SPH_C32(0x49450000),
+	  SPH_C32(0x3b695187), SPH_C32(0x57abe350), SPH_C32(0xb22e061e),
+	  SPH_C32(0x34994e2b) },
+	{ SPH_C32(0x7cf40000), SPH_C32(0xe9250000), SPH_C32(0x07221206),
+	  SPH_C32(0x96d70000), SPH_C32(0xb7455cf5), SPH_C32(0x45cb6794),
+	  SPH_C32(0x18303151), SPH_C32(0x94e273e6), SPH_C32(0x28950000),
+	  SPH_C32(0xb2870000), SPH_C32(0xb6c30c48), SPH_C32(0xb9ba0000),
+	  SPH_C32(0xa1582f6b), SPH_C32(0x1288a29e), SPH_C32(0x7d7889fb),
+	  SPH_C32(0x679a5d24) },
+	{ SPH_C32(0x2ea40000), SPH_C32(0xc0710000), SPH_C32(0x6d431248),
+	  SPH_C32(0x66280000), SPH_C32(0x2d742219), SPH_C32(0x00e8265a),
+	  SPH_C32(0xd766beb4), SPH_C32(0xc7e160e9), SPH_C32(0x7b180000),
+	  SPH_C32(0x1b7b0000), SPH_C32(0x28340c4e), SPH_C32(0xef450000),
+	  SPH_C32(0xabbc2f25), SPH_C32(0x804d6f67), SPH_C32(0xd43cc9e3),
+	  SPH_C32(0x180d0bb5) },
+	{ SPH_C32(0xe36d0000), SPH_C32(0xe5ba0000), SPH_C32(0xc36c1580),
+	  SPH_C32(0xfb780000), SPH_C32(0xf6714f44), SPH_C32(0x50959e75),
+	  SPH_C32(0xd8373988), SPH_C32(0x212fa289), SPH_C32(0xa8d60000),
+	  SPH_C32(0xde780000), SPH_C32(0x24670e80), SPH_C32(0x8a490000),
+	  SPH_C32(0x6c2479cb), SPH_C32(0x8d9a1215), SPH_C32(0xfd30e42b),
+	  SPH_C32(0xc569af40) },
+	{ SPH_C32(0xb13d0000), SPH_C32(0xccee0000), SPH_C32(0xa90d15ce),
+	  SPH_C32(0x0b870000), SPH_C32(0x6c4031a8), SPH_C32(0x15b6dfbb),
+	  SPH_C32(0x1761b66d), SPH_C32(0x722cb186), SPH_C32(0xfb5b0000),
+	  SPH_C32(0x77840000), SPH_C32(0xba900e86), SPH_C32(0xdcb60000),
+	  SPH_C32(0x66c07985), SPH_C32(0x1f5fdfec), SPH_C32(0x5474a433),
+	  SPH_C32(0xbafef9d1) },
+	{ SPH_C32(0xb0e00000), SPH_C32(0x4c460000), SPH_C32(0x5d9b1586),
+	  SPH_C32(0xad870000), SPH_C32(0xfc954f0a), SPH_C32(0xc250538c),
+	  SPH_C32(0x71737990), SPH_C32(0x5eb8f418), SPH_C32(0xa90b0000),
+	  SPH_C32(0x5ed00000), SPH_C32(0xd0f10ec8), SPH_C32(0x2c490000),
+	  SPH_C32(0xfcf10769), SPH_C32(0x5a7c9e22), SPH_C32(0x9b222bd6),
+	  SPH_C32(0xe9fdeade) },
+	{ SPH_C32(0xe2b00000), SPH_C32(0x65120000), SPH_C32(0x37fa15c8),
+	  SPH_C32(0x5d780000), SPH_C32(0x66a431e6), SPH_C32(0x87731242),
+	  SPH_C32(0xbe25f675), SPH_C32(0x0dbbe717), SPH_C32(0xfa860000),
+	  SPH_C32(0xf72c0000), SPH_C32(0x4e060ece), SPH_C32(0x7ab60000),
+	  SPH_C32(0xf6150727), SPH_C32(0xc8b953db), SPH_C32(0x32666bce),
+	  SPH_C32(0x966abc4f) },
+	{ SPH_C32(0xd6c40000), SPH_C32(0xbe720000), SPH_C32(0x56dd1b00),
+	  SPH_C32(0xc57e0000), SPH_C32(0x91365cc0), SPH_C32(0xe1131ff5),
+	  SPH_C32(0xa7a27306), SPH_C32(0x067d1926), SPH_C32(0x666d0000),
+	  SPH_C32(0xcc330000), SPH_C32(0xc4c20a00), SPH_C32(0xe7810000),
+	  SPH_C32(0x9d792fe7), SPH_C32(0x8a49e06a), SPH_C32(0x3d2fb870),
+	  SPH_C32(0xfbc5c2c5) },
+	{ SPH_C32(0x84940000), SPH_C32(0x97260000), SPH_C32(0x3cbc1b4e),
+	  SPH_C32(0x35810000), SPH_C32(0x0b07222c), SPH_C32(0xa4305e3b),
+	  SPH_C32(0x68f4fce3), SPH_C32(0x557e0a29), SPH_C32(0x35e00000),
+	  SPH_C32(0x65cf0000), SPH_C32(0x5a350a06), SPH_C32(0xb17e0000),
+	  SPH_C32(0x979d2fa9), SPH_C32(0x188c2d93), SPH_C32(0x946bf868),
+	  SPH_C32(0x84529454) },
+	{ SPH_C32(0x85490000), SPH_C32(0x178e0000), SPH_C32(0xc82a1b06),
+	  SPH_C32(0x93810000), SPH_C32(0x9bd25c8e), SPH_C32(0x73d6d20c),
+	  SPH_C32(0x0ee6331e), SPH_C32(0x79ea4fb7), SPH_C32(0x67b00000),
+	  SPH_C32(0x4c9b0000), SPH_C32(0x30540a48), SPH_C32(0x41810000),
+	  SPH_C32(0x0dac5145), SPH_C32(0x5daf6c5d), SPH_C32(0x5b3d778d),
+	  SPH_C32(0xd751875b) },
+	{ SPH_C32(0xd7190000), SPH_C32(0x3eda0000), SPH_C32(0xa24b1b48),
+	  SPH_C32(0x637e0000), SPH_C32(0x01e32262), SPH_C32(0x36f593c2),
+	  SPH_C32(0xc1b0bcfb), SPH_C32(0x2ae95cb8), SPH_C32(0x343d0000),
+	  SPH_C32(0xe5670000), SPH_C32(0xaea30a4e), SPH_C32(0x177e0000),
+	  SPH_C32(0x0748510b), SPH_C32(0xcf6aa1a4), SPH_C32(0xf2793795),
+	  SPH_C32(0xa8c6d1ca) },
+	{ SPH_C32(0x1ad00000), SPH_C32(0x1b110000), SPH_C32(0x0c641c80),
+	  SPH_C32(0xfe2e0000), SPH_C32(0xdae64f3f), SPH_C32(0x66882bed),
+	  SPH_C32(0xcee13bc7), SPH_C32(0xcc279ed8), SPH_C32(0xe7f30000),
+	  SPH_C32(0x20640000), SPH_C32(0xa2f00880), SPH_C32(0x72720000),
+	  SPH_C32(0xc0d007e5), SPH_C32(0xc2bddcd6), SPH_C32(0xdb751a5d),
+	  SPH_C32(0x75a2753f) },
+	{ SPH_C32(0x48800000), SPH_C32(0x32450000), SPH_C32(0x66051cce),
+	  SPH_C32(0x0ed10000), SPH_C32(0x40d731d3), SPH_C32(0x23ab6a23),
+	  SPH_C32(0x01b7b422), SPH_C32(0x9f248dd7), SPH_C32(0xb47e0000),
+	  SPH_C32(0x89980000), SPH_C32(0x3c070886), SPH_C32(0x248d0000),
+	  SPH_C32(0xca3407ab), SPH_C32(0x5078112f), SPH_C32(0x72315a45),
+	  SPH_C32(0x0a3523ae) },
+	{ SPH_C32(0x495d0000), SPH_C32(0xb2ed0000), SPH_C32(0x92931c86),
+	  SPH_C32(0xa8d10000), SPH_C32(0xd0024f71), SPH_C32(0xf44de614),
+	  SPH_C32(0x67a57bdf), SPH_C32(0xb3b0c849), SPH_C32(0xe62e0000),
+	  SPH_C32(0xa0cc0000), SPH_C32(0x566608c8), SPH_C32(0xd4720000),
+	  SPH_C32(0x50057947), SPH_C32(0x155b50e1), SPH_C32(0xbd67d5a0),
+	  SPH_C32(0x593630a1) },
+	{ SPH_C32(0x1b0d0000), SPH_C32(0x9bb90000), SPH_C32(0xf8f21cc8),
+	  SPH_C32(0x582e0000), SPH_C32(0x4a33319d), SPH_C32(0xb16ea7da),
+	  SPH_C32(0xa8f3f43a), SPH_C32(0xe0b3db46), SPH_C32(0xb5a30000),
+	  SPH_C32(0x09300000), SPH_C32(0xc89108ce), SPH_C32(0x828d0000),
+	  SPH_C32(0x5ae17909), SPH_C32(0x879e9d18), SPH_C32(0x142395b8),
+	  SPH_C32(0x26a16630) },
+	{ SPH_C32(0x575a0000), SPH_C32(0x52250000), SPH_C32(0x30ef1980),
+	  SPH_C32(0x508d0000), SPH_C32(0xcc9f74c2), SPH_C32(0xa9e72349),
+	  SPH_C32(0x41f8d12b), SPH_C32(0x881aaedc), SPH_C32(0x2be70000),
+	  SPH_C32(0x85070000), SPH_C32(0xf8490f00), SPH_C32(0x49220000),
+	  SPH_C32(0x8b00141a), SPH_C32(0x4526e8ce), SPH_C32(0xb236529c),
+	  SPH_C32(0xbff8f2c1) },
+	{ SPH_C32(0x050a0000), SPH_C32(0x7b710000), SPH_C32(0x5a8e19ce),
+	  SPH_C32(0xa0720000), SPH_C32(0x56ae0a2e), SPH_C32(0xecc46287),
+	  SPH_C32(0x8eae5ece), SPH_C32(0xdb19bdd3), SPH_C32(0x786a0000),
+	  SPH_C32(0x2cfb0000), SPH_C32(0x66be0f06), SPH_C32(0x1fdd0000),
+	  SPH_C32(0x81e41454), SPH_C32(0xd7e32537), SPH_C32(0x1b721284),
+	  SPH_C32(0xc06fa450) },
+	{ SPH_C32(0x04d70000), SPH_C32(0xfbd90000), SPH_C32(0xae181986),
+	  SPH_C32(0x06720000), SPH_C32(0xc67b748c), SPH_C32(0x3b22eeb0),
+	  SPH_C32(0xe8bc9133), SPH_C32(0xf78df84d), SPH_C32(0x2a3a0000),
+	  SPH_C32(0x05af0000), SPH_C32(0x0cdf0f48), SPH_C32(0xef220000),
+	  SPH_C32(0x1bd56ab8), SPH_C32(0x92c064f9), SPH_C32(0xd4249d61),
+	  SPH_C32(0x936cb75f) },
+	{ SPH_C32(0x56870000), SPH_C32(0xd28d0000), SPH_C32(0xc47919c8),
+	  SPH_C32(0xf68d0000), SPH_C32(0x5c4a0a60), SPH_C32(0x7e01af7e),
+	  SPH_C32(0x27ea1ed6), SPH_C32(0xa48eeb42), SPH_C32(0x79b70000),
+	  SPH_C32(0xac530000), SPH_C32(0x92280f4e), SPH_C32(0xb9dd0000),
+	  SPH_C32(0x11316af6), SPH_C32(0x0005a900), SPH_C32(0x7d60dd79),
+	  SPH_C32(0xecfbe1ce) },
+	{ SPH_C32(0x9b4e0000), SPH_C32(0xf7460000), SPH_C32(0x6a561e00),
+	  SPH_C32(0x6bdd0000), SPH_C32(0x874f673d), SPH_C32(0x2e7c1751),
+	  SPH_C32(0x28bb99ea), SPH_C32(0x42402922), SPH_C32(0xaa790000),
+	  SPH_C32(0x69500000), SPH_C32(0x9e7b0d80), SPH_C32(0xdcd10000),
+	  SPH_C32(0xd6a93c18), SPH_C32(0x0dd2d472), SPH_C32(0x546cf0b1),
+	  SPH_C32(0x319f453b) },
+	{ SPH_C32(0xc91e0000), SPH_C32(0xde120000), SPH_C32(0x00371e4e),
+	  SPH_C32(0x9b220000), SPH_C32(0x1d7e19d1), SPH_C32(0x6b5f569f),
+	  SPH_C32(0xe7ed160f), SPH_C32(0x11433a2d), SPH_C32(0xf9f40000),
+	  SPH_C32(0xc0ac0000), SPH_C32(0x008c0d86), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xdc4d3c56), SPH_C32(0x9f17198b), SPH_C32(0xfd28b0a9),
+	  SPH_C32(0x4e0813aa) },
+	{ SPH_C32(0xc8c30000), SPH_C32(0x5eba0000), SPH_C32(0xf4a11e06),
+	  SPH_C32(0x3d220000), SPH_C32(0x8dab6773), SPH_C32(0xbcb9daa8),
+	  SPH_C32(0x81ffd9f2), SPH_C32(0x3dd77fb3), SPH_C32(0xaba40000),
+	  SPH_C32(0xe9f80000), SPH_C32(0x6aed0dc8), SPH_C32(0x7ad10000),
+	  SPH_C32(0x467c42ba), SPH_C32(0xda345845), SPH_C32(0x327e3f4c),
+	  SPH_C32(0x1d0b00a5) },
+	{ SPH_C32(0x9a930000), SPH_C32(0x77ee0000), SPH_C32(0x9ec01e48),
+	  SPH_C32(0xcddd0000), SPH_C32(0x179a199f), SPH_C32(0xf99a9b66),
+	  SPH_C32(0x4ea95617), SPH_C32(0x6ed46cbc), SPH_C32(0xf8290000),
+	  SPH_C32(0x40040000), SPH_C32(0xf41a0dce), SPH_C32(0x2c2e0000),
+	  SPH_C32(0x4c9842f4), SPH_C32(0x48f195bc), SPH_C32(0x9b3a7f54),
+	  SPH_C32(0x629c5634) }
+};
+
+static const sph_u32 T512_42[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0xca150000), SPH_C32(0x9ea40000), SPH_C32(0x92620001),
+	  SPH_C32(0x2eda0800), SPH_C32(0x4e020a79), SPH_C32(0x92565e44),
+	  SPH_C32(0x1d2fdc3b), SPH_C32(0x09815dfe), SPH_C32(0x91600000),
+	  SPH_C32(0xf1ea0000), SPH_C32(0x28f20000), SPH_C32(0xfb669000),
+	  SPH_C32(0xa0ba6bd6), SPH_C32(0xa87f0d93), SPH_C32(0x5af23db5),
+	  SPH_C32(0x942dd002) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x8f0c0000), SPH_C32(0x35a80000), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x47d02800), SPH_C32(0x8cfe7860), SPH_C32(0x2382de49),
+	  SPH_C32(0x30fe267d), SPH_C32(0x2db012e9), SPH_C32(0xc9230000),
+	  SPH_C32(0x71940000), SPH_C32(0x50c10001), SPH_C32(0x3d0da800),
+	  SPH_C32(0x478d370a), SPH_C32(0xd1d2324e), SPH_C32(0xf681c3da),
+	  SPH_C32(0xae69a9b3) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0xd74f0000), SPH_C32(0xb5d60000), SPH_C32(0xdaef0001),
+	  SPH_C32(0x81bb1000), SPH_C32(0x6bc924bc), SPH_C32(0x5a2fe194),
+	  SPH_C32(0x9c8dd812), SPH_C32(0x17f46b58), SPH_C32(0xd4790000),
+	  SPH_C32(0x5ae60000), SPH_C32(0x184c0001), SPH_C32(0x926cb000),
+	  SPH_C32(0x624619cf), SPH_C32(0x19ab8d9e), SPH_C32(0x7723c7f3),
+	  SPH_C32(0xb01c9f15) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0x376d0000), SPH_C32(0x0afc0000), SPH_C32(0xa461001e),
+	  SPH_C32(0x941f3000), SPH_C32(0x26ab5b70), SPH_C32(0x9324cba4),
+	  SPH_C32(0x466d4a8c), SPH_C32(0x38de6d09), SPH_C32(0x8bd70000),
+	  SPH_C32(0x68c80000), SPH_C32(0xe70b000a), SPH_C32(0xc30a8800),
+	  SPH_C32(0xc60366bd), SPH_C32(0x28c1dce7), SPH_C32(0x2f285bbe),
+	  SPH_C32(0x1a2d576a) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0x6f2e0000), SPH_C32(0x8a820000), SPH_C32(0xdc52001f),
+	  SPH_C32(0x52740800), SPH_C32(0xc19c07ac), SPH_C32(0xea89f479),
+	  SPH_C32(0xea1eb4e3), SPH_C32(0x029a14b8), SPH_C32(0x968d0000),
+	  SPH_C32(0x43ba0000), SPH_C32(0xaf86000a), SPH_C32(0x6c6b9000),
+	  SPH_C32(0xe3c84878), SPH_C32(0xe0b86337), SPH_C32(0xae8a5f97),
+	  SPH_C32(0x045861cc) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0x2a370000), SPH_C32(0x218e0000), SPH_C32(0xecec001e),
+	  SPH_C32(0x3b7e2800), SPH_C32(0x036075b5), SPH_C32(0x5b5d7474),
+	  SPH_C32(0xc7cf4ea5), SPH_C32(0x26ab5baf), SPH_C32(0xcece0000),
+	  SPH_C32(0xc3c40000), SPH_C32(0xd7b5000b), SPH_C32(0xaa00a800),
+	  SPH_C32(0x04ff14a4), SPH_C32(0x99155cea), SPH_C32(0x02f9a1f8),
+	  SPH_C32(0x3e1c187d) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) },
+	{ SPH_C32(0x72740000), SPH_C32(0xa1f00000), SPH_C32(0x94df001f),
+	  SPH_C32(0xfd151000), SPH_C32(0xe4572969), SPH_C32(0x22f04ba9),
+	  SPH_C32(0x6bbcb0ca), SPH_C32(0x1cef221e), SPH_C32(0xd3940000),
+	  SPH_C32(0xe8b60000), SPH_C32(0x9f38000b), SPH_C32(0x0561b000),
+	  SPH_C32(0x21343a61), SPH_C32(0x516ce33a), SPH_C32(0x835ba5d1),
+	  SPH_C32(0x20692edb) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0xac8a0000), SPH_C32(0x6d25000a),
+	  SPH_C32(0x7fbc3000), SPH_C32(0xea47750b), SPH_C32(0xa33c0f3d),
+	  SPH_C32(0x45244076), SPH_C32(0xa3b09581), SPH_C32(0x2eec0000),
+	  SPH_C32(0x7cee0000), SPH_C32(0xa93b0014), SPH_C32(0xbfa48800),
+	  SPH_C32(0x499d6b68), SPH_C32(0x501e76da), SPH_C32(0xd8193366),
+	  SPH_C32(0x11361e2c) },
+	{ SPH_C32(0x5fae0000), SPH_C32(0x322e0000), SPH_C32(0xff47000b),
+	  SPH_C32(0x51663800), SPH_C32(0xa4457f72), SPH_C32(0x316a5179),
+	  SPH_C32(0x580b9c4d), SPH_C32(0xaa31c87f), SPH_C32(0xbf8c0000),
+	  SPH_C32(0x8d040000), SPH_C32(0x81c90014), SPH_C32(0x44c21800),
+	  SPH_C32(0xe92700be), SPH_C32(0xf8617b49), SPH_C32(0x82eb0ed3),
+	  SPH_C32(0x851bce2e) },
+	{ SPH_C32(0xcdf80000), SPH_C32(0x2cf40000), SPH_C32(0x1516000b),
+	  SPH_C32(0xb9d70800), SPH_C32(0x0d7029d7), SPH_C32(0xda9130e0),
+	  SPH_C32(0xe957be19), SPH_C32(0x99f4ec30), SPH_C32(0x33b60000),
+	  SPH_C32(0x579c0000), SPH_C32(0xe1b60014), SPH_C32(0x10c59000),
+	  SPH_C32(0x6c5645ad), SPH_C32(0x9867c90a), SPH_C32(0x59bb374f),
+	  SPH_C32(0x0f43288a) },
+	{ SPH_C32(0x1ab70000), SPH_C32(0x99220000), SPH_C32(0xcff9000a),
+	  SPH_C32(0x386c1800), SPH_C32(0x66b90d6b), SPH_C32(0x80bed174),
+	  SPH_C32(0x75da660b), SPH_C32(0x8e008768), SPH_C32(0xe7cf0000),
+	  SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015), SPH_C32(0x82a92000),
+	  SPH_C32(0x0e105c62), SPH_C32(0x81cc4494), SPH_C32(0x2e98f0bc),
+	  SPH_C32(0xbf5fb79f) },
+	{ SPH_C32(0x88e10000), SPH_C32(0x87f80000), SPH_C32(0x25a8000a),
+	  SPH_C32(0xd0dd2800), SPH_C32(0xcf8c5bce), SPH_C32(0x6b45b0ed),
+	  SPH_C32(0xc486445f), SPH_C32(0xbdc5a327), SPH_C32(0x6bf50000),
+	  SPH_C32(0xd7e20000), SPH_C32(0x99850015), SPH_C32(0xd6aea800),
+	  SPH_C32(0x8b611971), SPH_C32(0xe1caf6d7), SPH_C32(0xf5c8c920),
+	  SPH_C32(0x3507513b) },
+	{ SPH_C32(0x42f40000), SPH_C32(0x195c0000), SPH_C32(0xb7ca000b),
+	  SPH_C32(0xfe072000), SPH_C32(0x818e51b7), SPH_C32(0xf913eea9),
+	  SPH_C32(0xd9a99864), SPH_C32(0xb444fed9), SPH_C32(0xfa950000),
+	  SPH_C32(0x26080000), SPH_C32(0xb1770015), SPH_C32(0x2dc83800),
+	  SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44), SPH_C32(0xaf3af495),
+	  SPH_C32(0xa12a8139) },
+	{ SPH_C32(0xd0a20000), SPH_C32(0x07860000), SPH_C32(0x5d9b000b),
+	  SPH_C32(0x16b61000), SPH_C32(0x28bb0712), SPH_C32(0x12e88f30),
+	  SPH_C32(0x68f5ba30), SPH_C32(0x8781da96), SPH_C32(0x76af0000),
+	  SPH_C32(0xfc900000), SPH_C32(0xd1080015), SPH_C32(0x79cfb000),
+	  SPH_C32(0xaeaa37b4), SPH_C32(0x29b34907), SPH_C32(0x746acd09),
+	  SPH_C32(0x2b72679d) },
+	{ SPH_C32(0xa2d60000), SPH_C32(0xa6760000), SPH_C32(0xc9440014),
+	  SPH_C32(0xeba30000), SPH_C32(0xccec2e7b), SPH_C32(0x3018c499),
+	  SPH_C32(0x03490afa), SPH_C32(0x9b6ef888), SPH_C32(0xa53b0000),
+	  SPH_C32(0x14260000), SPH_C32(0x4e30001e), SPH_C32(0x7cae0000),
+	  SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d), SPH_C32(0xf73168d8),
+	  SPH_C32(0x0b1b4946) },
+	{ SPH_C32(0x30800000), SPH_C32(0xb8ac0000), SPH_C32(0x23150014),
+	  SPH_C32(0x03123000), SPH_C32(0x65d978de), SPH_C32(0xdbe3a500),
+	  SPH_C32(0xb21528ae), SPH_C32(0xa8abdcc7), SPH_C32(0x29010000),
+	  SPH_C32(0xcebe0000), SPH_C32(0x2e4f001e), SPH_C32(0x28a98800),
+	  SPH_C32(0x0aef48c6), SPH_C32(0x18d9187e), SPH_C32(0x2c615144),
+	  SPH_C32(0x8143afe2) },
+	{ SPH_C32(0xfa950000), SPH_C32(0x26080000), SPH_C32(0xb1770015),
+	  SPH_C32(0x2dc83800), SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44),
+	  SPH_C32(0xaf3af495), SPH_C32(0xa12a8139), SPH_C32(0xb8610000),
+	  SPH_C32(0x3f540000), SPH_C32(0x06bd001e), SPH_C32(0xd3cf1800),
+	  SPH_C32(0xaa552310), SPH_C32(0xb0a615ed), SPH_C32(0x76936cf1),
+	  SPH_C32(0x156e7fe0) },
+	{ SPH_C32(0x68c30000), SPH_C32(0x38d20000), SPH_C32(0x5b260015),
+	  SPH_C32(0xc5790800), SPH_C32(0x82ee2402), SPH_C32(0xa24e9add),
+	  SPH_C32(0x1e66d6c1), SPH_C32(0x92efa576), SPH_C32(0x345b0000),
+	  SPH_C32(0xe5cc0000), SPH_C32(0x66c2001e), SPH_C32(0x87c89000),
+	  SPH_C32(0x2f246603), SPH_C32(0xd0a0a7ae), SPH_C32(0xadc3556d),
+	  SPH_C32(0x9f369944) },
+	{ SPH_C32(0xbf8c0000), SPH_C32(0x8d040000), SPH_C32(0x81c90014),
+	  SPH_C32(0x44c21800), SPH_C32(0xe92700be), SPH_C32(0xf8617b49),
+	  SPH_C32(0x82eb0ed3), SPH_C32(0x851bce2e), SPH_C32(0xe0220000),
+	  SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f), SPH_C32(0x15a42000),
+	  SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30), SPH_C32(0xdae0929e),
+	  SPH_C32(0x2f2a0651) },
+	{ SPH_C32(0x2dda0000), SPH_C32(0x93de0000), SPH_C32(0x6b980014),
+	  SPH_C32(0xac732800), SPH_C32(0x4012561b), SPH_C32(0x139a1ad0),
+	  SPH_C32(0x33b72c87), SPH_C32(0xb6deea61), SPH_C32(0x6c180000),
+	  SPH_C32(0x65b20000), SPH_C32(0x1ef1001f), SPH_C32(0x41a3a800),
+	  SPH_C32(0xc8133adf), SPH_C32(0xa90d9873), SPH_C32(0x01b0ab02),
+	  SPH_C32(0xa572e0f5) },
+	{ SPH_C32(0xe7cf0000), SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015),
+	  SPH_C32(0x82a92000), SPH_C32(0x0e105c62), SPH_C32(0x81cc4494),
+	  SPH_C32(0x2e98f0bc), SPH_C32(0xbf5fb79f), SPH_C32(0xfd780000),
+	  SPH_C32(0x94580000), SPH_C32(0x3603001f), SPH_C32(0xbac53800),
+	  SPH_C32(0x68a95109), SPH_C32(0x017295e0), SPH_C32(0x5b4296b7),
+	  SPH_C32(0x315f30f7) },
+	{ SPH_C32(0x75990000), SPH_C32(0x13a00000), SPH_C32(0x13ab0015),
+	  SPH_C32(0x6a181000), SPH_C32(0xa7250ac7), SPH_C32(0x6a37250d),
+	  SPH_C32(0x9fc4d2e8), SPH_C32(0x8c9a93d0), SPH_C32(0x71420000),
+	  SPH_C32(0x4ec00000), SPH_C32(0x567c001f), SPH_C32(0xeec2b000),
+	  SPH_C32(0xedd8141a), SPH_C32(0x617427a3), SPH_C32(0x8012af2b),
+	  SPH_C32(0xbb07d653) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0x1ace0000), SPH_C32(0x014e0000), SPH_C32(0x959e002e),
+	  SPH_C32(0x13ff3000), SPH_C32(0x586d513f), SPH_C32(0x8a55f0fe),
+	  SPH_C32(0x19c95238), SPH_C32(0xd5d550db), SPH_C32(0x87f80000),
+	  SPH_C32(0x01fb0000), SPH_C32(0x1ef7000c), SPH_C32(0x41818800),
+	  SPH_C32(0x148c0de0), SPH_C32(0x15870900), SPH_C32(0x2f307d02),
+	  SPH_C32(0x52eef2c7) },
+	{ SPH_C32(0xd0db0000), SPH_C32(0x9fea0000), SPH_C32(0x07fc002f),
+	  SPH_C32(0x3d253800), SPH_C32(0x166f5b46), SPH_C32(0x1803aeba),
+	  SPH_C32(0x04e68e03), SPH_C32(0xdc540d25), SPH_C32(0x16980000),
+	  SPH_C32(0xf0110000), SPH_C32(0x3605000c), SPH_C32(0xbae71800),
+	  SPH_C32(0xb4366636), SPH_C32(0xbdf80493), SPH_C32(0x75c240b7),
+	  SPH_C32(0xc6c322c5) },
+	{ SPH_C32(0x428d0000), SPH_C32(0x81300000), SPH_C32(0xedad002f),
+	  SPH_C32(0xd5940800), SPH_C32(0xbf5a0de3), SPH_C32(0xf3f8cf23),
+	  SPH_C32(0xb5baac57), SPH_C32(0xef91296a), SPH_C32(0x9aa20000),
+	  SPH_C32(0x2a890000), SPH_C32(0x567a000c), SPH_C32(0xeee09000),
+	  SPH_C32(0x31472325), SPH_C32(0xddfeb6d0), SPH_C32(0xae92792b),
+	  SPH_C32(0x4c9bc461) },
+	{ SPH_C32(0x95c20000), SPH_C32(0x34e60000), SPH_C32(0x3742002e),
+	  SPH_C32(0x542f1800), SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7),
+	  SPH_C32(0x29377445), SPH_C32(0xf8654232), SPH_C32(0x4edb0000),
+	  SPH_C32(0x706f0000), SPH_C32(0x4e36000d), SPH_C32(0x7c8c2000),
+	  SPH_C32(0x53013aea), SPH_C32(0xc4553b4e), SPH_C32(0xd9b1bed8),
+	  SPH_C32(0xfc875b74) },
+	{ SPH_C32(0x07940000), SPH_C32(0x2a3c0000), SPH_C32(0xdd13002e),
+	  SPH_C32(0xbc9e2800), SPH_C32(0x7da67ffa), SPH_C32(0x422c4f2e),
+	  SPH_C32(0x986b5611), SPH_C32(0xcba0667d), SPH_C32(0xc2e10000),
+	  SPH_C32(0xaaf70000), SPH_C32(0x2e49000d), SPH_C32(0x288ba800),
+	  SPH_C32(0xd6707ff9), SPH_C32(0xa453890d), SPH_C32(0x02e18744),
+	  SPH_C32(0x76dfbdd0) },
+	{ SPH_C32(0xcd810000), SPH_C32(0xb4980000), SPH_C32(0x4f71002f),
+	  SPH_C32(0x92442000), SPH_C32(0x33a47583), SPH_C32(0xd07a116a),
+	  SPH_C32(0x85448a2a), SPH_C32(0xc2213b83), SPH_C32(0x53810000),
+	  SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d), SPH_C32(0xd3ed3800),
+	  SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e), SPH_C32(0x5813baf1),
+	  SPH_C32(0xe2f26dd2) },
+	{ SPH_C32(0x5fd70000), SPH_C32(0xaa420000), SPH_C32(0xa520002f),
+	  SPH_C32(0x7af51000), SPH_C32(0x9a912326), SPH_C32(0x3b8170f3),
+	  SPH_C32(0x3418a87e), SPH_C32(0xf1e41fcc), SPH_C32(0xdfbb0000),
+	  SPH_C32(0x81850000), SPH_C32(0x66c4000d), SPH_C32(0x87eab000),
+	  SPH_C32(0xf3bb513c), SPH_C32(0x6c2a36dd), SPH_C32(0x8343836d),
+	  SPH_C32(0x68aa8b76) },
+	{ SPH_C32(0x2da30000), SPH_C32(0x0bb20000), SPH_C32(0x31ff0030),
+	  SPH_C32(0x87e00000), SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a),
+	  SPH_C32(0x5fa418b4), SPH_C32(0xed0b3dd2), SPH_C32(0x0c2f0000),
+	  SPH_C32(0x69330000), SPH_C32(0xf9fc0006), SPH_C32(0x828b0000),
+	  SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7), SPH_C32(0x001826bc),
+	  SPH_C32(0x48c3a5ad) },
+	{ SPH_C32(0xbff50000), SPH_C32(0x15680000), SPH_C32(0xdbae0030),
+	  SPH_C32(0x6f513000), SPH_C32(0xd7f35cea), SPH_C32(0xf28a5ac3),
+	  SPH_C32(0xeef83ae0), SPH_C32(0xdece199d), SPH_C32(0x80150000),
+	  SPH_C32(0xb3ab0000), SPH_C32(0x99830006), SPH_C32(0xd68c8800),
+	  SPH_C32(0x57fe2e4e), SPH_C32(0x5d4067a4), SPH_C32(0xdb481f20),
+	  SPH_C32(0xc29b4309) },
+	{ SPH_C32(0x75e00000), SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031),
+	  SPH_C32(0x418b3800), SPH_C32(0x99f15693), SPH_C32(0x60dc0487),
+	  SPH_C32(0xf3d7e6db), SPH_C32(0xd74f4463), SPH_C32(0x11750000),
+	  SPH_C32(0x42410000), SPH_C32(0xb1710006), SPH_C32(0x2dea1800),
+	  SPH_C32(0xf7444598), SPH_C32(0xf53f6a37), SPH_C32(0x81ba2295),
+	  SPH_C32(0x56b6930b) },
+	{ SPH_C32(0xe7b60000), SPH_C32(0x95160000), SPH_C32(0xa39d0031),
+	  SPH_C32(0xa93a0800), SPH_C32(0x30c40036), SPH_C32(0x8b27651e),
+	  SPH_C32(0x428bc48f), SPH_C32(0xe48a602c), SPH_C32(0x9d4f0000),
+	  SPH_C32(0x98d90000), SPH_C32(0xd10e0006), SPH_C32(0x79ed9000),
+	  SPH_C32(0x7235008b), SPH_C32(0x9539d874), SPH_C32(0x5aea1b09),
+	  SPH_C32(0xdcee75af) },
+	{ SPH_C32(0x30f90000), SPH_C32(0x20c00000), SPH_C32(0x79720030),
+	  SPH_C32(0x28811800), SPH_C32(0x5b0d248a), SPH_C32(0xd108848a),
+	  SPH_C32(0xde061c9d), SPH_C32(0xf37e0b74), SPH_C32(0x49360000),
+	  SPH_C32(0xc23f0000), SPH_C32(0xc9420007), SPH_C32(0xeb812000),
+	  SPH_C32(0x10731944), SPH_C32(0x8c9255ea), SPH_C32(0x2dc9dcfa),
+	  SPH_C32(0x6cf2eaba) },
+	{ SPH_C32(0xa2af0000), SPH_C32(0x3e1a0000), SPH_C32(0x93230030),
+	  SPH_C32(0xc0302800), SPH_C32(0xf238722f), SPH_C32(0x3af3e513),
+	  SPH_C32(0x6f5a3ec9), SPH_C32(0xc0bb2f3b), SPH_C32(0xc50c0000),
+	  SPH_C32(0x18a70000), SPH_C32(0xa93d0007), SPH_C32(0xbf86a800),
+	  SPH_C32(0x95025c57), SPH_C32(0xec94e7a9), SPH_C32(0xf699e566),
+	  SPH_C32(0xe6aa0c1e) },
+	{ SPH_C32(0x68ba0000), SPH_C32(0xa0be0000), SPH_C32(0x01410031),
+	  SPH_C32(0xeeea2000), SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57),
+	  SPH_C32(0x7275e2f2), SPH_C32(0xc93a72c5), SPH_C32(0x546c0000),
+	  SPH_C32(0xe94d0000), SPH_C32(0x81cf0007), SPH_C32(0x44e03800),
+	  SPH_C32(0x35b83781), SPH_C32(0x44ebea3a), SPH_C32(0xac6bd8d3),
+	  SPH_C32(0x7287dc1c) },
+	{ SPH_C32(0xfaec0000), SPH_C32(0xbe640000), SPH_C32(0xeb100031),
+	  SPH_C32(0x065b1000), SPH_C32(0x150f2ef3), SPH_C32(0x435edace),
+	  SPH_C32(0xc329c0a6), SPH_C32(0xfaff568a), SPH_C32(0xd8560000),
+	  SPH_C32(0x33d50000), SPH_C32(0xe1b00007), SPH_C32(0x10e7b000),
+	  SPH_C32(0xb0c97292), SPH_C32(0x24ed5879), SPH_C32(0x773be14f),
+	  SPH_C32(0xf8df3ab8) },
+	{ SPH_C32(0x8f750000), SPH_C32(0xadc40000), SPH_C32(0xf8bb0024),
+	  SPH_C32(0x6c430000), SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3),
+	  SPH_C32(0x5ced124e), SPH_C32(0x7665c55a), SPH_C32(0xa9140000),
+	  SPH_C32(0x7d150000), SPH_C32(0xb7cc0018), SPH_C32(0xfe250000),
+	  SPH_C32(0x5d116688), SPH_C32(0x45997fda), SPH_C32(0xf7294e64),
+	  SPH_C32(0x43d8eceb) },
+	{ SPH_C32(0x1d230000), SPH_C32(0xb31e0000), SPH_C32(0x12ea0024),
+	  SPH_C32(0x84f23000), SPH_C32(0x1b1f7291), SPH_C32(0xc2929e5a),
+	  SPH_C32(0xedb1301a), SPH_C32(0x45a0e115), SPH_C32(0x252e0000),
+	  SPH_C32(0xa78d0000), SPH_C32(0xd7b30018), SPH_C32(0xaa228800),
+	  SPH_C32(0xd860239b), SPH_C32(0x259fcd99), SPH_C32(0x2c7977f8),
+	  SPH_C32(0xc9800a4f) },
+	{ SPH_C32(0xd7360000), SPH_C32(0x2dba0000), SPH_C32(0x80880025),
+	  SPH_C32(0xaa283800), SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e),
+	  SPH_C32(0xf09eec21), SPH_C32(0x4c21bceb), SPH_C32(0xb44e0000),
+	  SPH_C32(0x56670000), SPH_C32(0xff410018), SPH_C32(0x51441800),
+	  SPH_C32(0x78da484d), SPH_C32(0x8de0c00a), SPH_C32(0x768b4a4d),
+	  SPH_C32(0x5dadda4d) },
+	{ SPH_C32(0x45600000), SPH_C32(0x33600000), SPH_C32(0x6ad90025),
+	  SPH_C32(0x42990800), SPH_C32(0xfc282e4d), SPH_C32(0xbb3fa187),
+	  SPH_C32(0x41c2ce75), SPH_C32(0x7fe498a4), SPH_C32(0x38740000),
+	  SPH_C32(0x8cff0000), SPH_C32(0x9f3e0018), SPH_C32(0x05439000),
+	  SPH_C32(0xfdab0d5e), SPH_C32(0xede67249), SPH_C32(0xaddb73d1),
+	  SPH_C32(0xd7f53ce9) },
+	{ SPH_C32(0x922f0000), SPH_C32(0x86b60000), SPH_C32(0xb0360024),
+	  SPH_C32(0xc3221800), SPH_C32(0x97e10af1), SPH_C32(0xe1104013),
+	  SPH_C32(0xdd4f1667), SPH_C32(0x6810f3fc), SPH_C32(0xec0d0000),
+	  SPH_C32(0xd6190000), SPH_C32(0x87720019), SPH_C32(0x972f2000),
+	  SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7), SPH_C32(0xdaf8b422),
+	  SPH_C32(0x67e9a3fc) },
+	{ SPH_C32(0x00790000), SPH_C32(0x986c0000), SPH_C32(0x5a670024),
+	  SPH_C32(0x2b932800), SPH_C32(0x3ed45c54), SPH_C32(0x0aeb218a),
+	  SPH_C32(0x6c133433), SPH_C32(0x5bd5d7b3), SPH_C32(0x60370000),
+	  SPH_C32(0x0c810000), SPH_C32(0xe70d0019), SPH_C32(0xc328a800),
+	  SPH_C32(0x1a9c5182), SPH_C32(0x944b4d94), SPH_C32(0x01a88dbe),
+	  SPH_C32(0xedb14558) },
+	{ SPH_C32(0xca6c0000), SPH_C32(0x06c80000), SPH_C32(0xc8050025),
+	  SPH_C32(0x05492000), SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce),
+	  SPH_C32(0x713ce808), SPH_C32(0x52548a4d), SPH_C32(0xf1570000),
+	  SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019), SPH_C32(0x384e3800),
+	  SPH_C32(0xba263a54), SPH_C32(0x3c344007), SPH_C32(0x5b5ab00b),
+	  SPH_C32(0x799c955a) },
+	{ SPH_C32(0x583a0000), SPH_C32(0x18120000), SPH_C32(0x22540025),
+	  SPH_C32(0xedf81000), SPH_C32(0xd9e30088), SPH_C32(0x73461e57),
+	  SPH_C32(0xc060ca5c), SPH_C32(0x6191ae02), SPH_C32(0x7d6d0000),
+	  SPH_C32(0x27f30000), SPH_C32(0xaf800019), SPH_C32(0x6c49b000),
+	  SPH_C32(0x3f577f47), SPH_C32(0x5c32f244), SPH_C32(0x800a8997),
+	  SPH_C32(0xf3c473fe) },
+	{ SPH_C32(0x2a4e0000), SPH_C32(0xb9e20000), SPH_C32(0xb68b003a),
+	  SPH_C32(0x10ed0000), SPH_C32(0x3db429e1), SPH_C32(0x51b655fe),
+	  SPH_C32(0xabdc7a96), SPH_C32(0x7d7e8c1c), SPH_C32(0xaef90000),
+	  SPH_C32(0xcf450000), SPH_C32(0x30b80012), SPH_C32(0x69280000),
+	  SPH_C32(0x1e634526), SPH_C32(0x0d5e117e), SPH_C32(0x03512c46),
+	  SPH_C32(0xd3ad5d25) },
+	{ SPH_C32(0xb8180000), SPH_C32(0xa7380000), SPH_C32(0x5cda003a),
+	  SPH_C32(0xf85c3000), SPH_C32(0x94817f44), SPH_C32(0xba4d3467),
+	  SPH_C32(0x1a8058c2), SPH_C32(0x4ebba853), SPH_C32(0x22c30000),
+	  SPH_C32(0x15dd0000), SPH_C32(0x50c70012), SPH_C32(0x3d2f8800),
+	  SPH_C32(0x9b120035), SPH_C32(0x6d58a33d), SPH_C32(0xd80115da),
+	  SPH_C32(0x59f5bb81) },
+	{ SPH_C32(0x720d0000), SPH_C32(0x399c0000), SPH_C32(0xceb8003b),
+	  SPH_C32(0xd6863800), SPH_C32(0xda83753d), SPH_C32(0x281b6a23),
+	  SPH_C32(0x07af84f9), SPH_C32(0x473af5ad), SPH_C32(0xb3a30000),
+	  SPH_C32(0xe4370000), SPH_C32(0x78350012), SPH_C32(0xc6491800),
+	  SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae), SPH_C32(0x82f3286f),
+	  SPH_C32(0xcdd86b83) },
+	{ SPH_C32(0xe05b0000), SPH_C32(0x27460000), SPH_C32(0x24e9003b),
+	  SPH_C32(0x3e370800), SPH_C32(0x73b62398), SPH_C32(0xc3e00bba),
+	  SPH_C32(0xb6f3a6ad), SPH_C32(0x74ffd1e2), SPH_C32(0x3f990000),
+	  SPH_C32(0x3eaf0000), SPH_C32(0x184a0012), SPH_C32(0x924e9000),
+	  SPH_C32(0xbed92ef0), SPH_C32(0xa5211ced), SPH_C32(0x59a311f3),
+	  SPH_C32(0x47808d27) },
+	{ SPH_C32(0x37140000), SPH_C32(0x92900000), SPH_C32(0xfe06003a),
+	  SPH_C32(0xbf8c1800), SPH_C32(0x187f0724), SPH_C32(0x99cfea2e),
+	  SPH_C32(0x2a7e7ebf), SPH_C32(0x630bbaba), SPH_C32(0xebe00000),
+	  SPH_C32(0x64490000), SPH_C32(0x00060013), SPH_C32(0x00222000),
+	  SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173), SPH_C32(0x2e80d600),
+	  SPH_C32(0xf79c1232) },
+	{ SPH_C32(0xa5420000), SPH_C32(0x8c4a0000), SPH_C32(0x1457003a),
+	  SPH_C32(0x573d2800), SPH_C32(0xb14a5181), SPH_C32(0x72348bb7),
+	  SPH_C32(0x9b225ceb), SPH_C32(0x50ce9ef5), SPH_C32(0x67da0000),
+	  SPH_C32(0xbed10000), SPH_C32(0x60790013), SPH_C32(0x5425a800),
+	  SPH_C32(0x59ee722c), SPH_C32(0xdc8c2330), SPH_C32(0xf5d0ef9c),
+	  SPH_C32(0x7dc4f496) },
+	{ SPH_C32(0x6f570000), SPH_C32(0x12ee0000), SPH_C32(0x8635003b),
+	  SPH_C32(0x79e72000), SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3),
+	  SPH_C32(0x860d80d0), SPH_C32(0x594fc30b), SPH_C32(0xf6ba0000),
+	  SPH_C32(0x4f3b0000), SPH_C32(0x488b0013), SPH_C32(0xaf433800),
+	  SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3), SPH_C32(0xaf22d229),
+	  SPH_C32(0xe9e92494) },
+	{ SPH_C32(0xfd010000), SPH_C32(0x0c340000), SPH_C32(0x6c64003b),
+	  SPH_C32(0x91561000), SPH_C32(0x567d0d5d), SPH_C32(0x0b99b46a),
+	  SPH_C32(0x3751a284), SPH_C32(0x6a8ae744), SPH_C32(0x7a800000),
+	  SPH_C32(0x95a30000), SPH_C32(0x28f40013), SPH_C32(0xfb44b000),
+	  SPH_C32(0x7c255ce9), SPH_C32(0x14f59ce0), SPH_C32(0x7472ebb5),
+	  SPH_C32(0x63b1c230) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x99940000), SPH_C32(0xc5b90000), SPH_C32(0x94d9000c),
+	  SPH_C32(0xfd373000), SPH_C32(0x38c81e56), SPH_C32(0x9e7adada),
+	  SPH_C32(0x453c66ca), SPH_C32(0xeb73302c), SPH_C32(0x0f600000),
+	  SPH_C32(0x1e6f0000), SPH_C32(0x61380022), SPH_C32(0xbacf8800),
+	  SPH_C32(0xe5d40a7a), SPH_C32(0x74299867), SPH_C32(0x87a50d6e),
+	  SPH_C32(0xb4fe8653) },
+	{ SPH_C32(0x53810000), SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d),
+	  SPH_C32(0xd3ed3800), SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e),
+	  SPH_C32(0x5813baf1), SPH_C32(0xe2f26dd2), SPH_C32(0x9e000000),
+	  SPH_C32(0xef850000), SPH_C32(0x49ca0022), SPH_C32(0x41a91800),
+	  SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4), SPH_C32(0xdd5730db),
+	  SPH_C32(0x20d35651) },
+	{ SPH_C32(0xc1d70000), SPH_C32(0x45c70000), SPH_C32(0xecea000d),
+	  SPH_C32(0x3b5c0800), SPH_C32(0xdfff428a), SPH_C32(0xe7d7e507),
+	  SPH_C32(0xe94f98a5), SPH_C32(0xd137499d), SPH_C32(0x123a0000),
+	  SPH_C32(0x351d0000), SPH_C32(0x29b50022), SPH_C32(0x15ae9000),
+	  SPH_C32(0xc01f24bf), SPH_C32(0xbc5027b7), SPH_C32(0x06070947),
+	  SPH_C32(0xaa8bb0f5) },
+	{ SPH_C32(0x16980000), SPH_C32(0xf0110000), SPH_C32(0x3605000c),
+	  SPH_C32(0xbae71800), SPH_C32(0xb4366636), SPH_C32(0xbdf80493),
+	  SPH_C32(0x75c240b7), SPH_C32(0xc6c322c5), SPH_C32(0xc6430000),
+	  SPH_C32(0x6ffb0000), SPH_C32(0x31f90023), SPH_C32(0x87c22000),
+	  SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29), SPH_C32(0x7124ceb4),
+	  SPH_C32(0x1a972fe0) },
+	{ SPH_C32(0x84ce0000), SPH_C32(0xeecb0000), SPH_C32(0xdc54000c),
+	  SPH_C32(0x52562800), SPH_C32(0x1d033093), SPH_C32(0x5603650a),
+	  SPH_C32(0xc49e62e3), SPH_C32(0xf506068a), SPH_C32(0x4a790000),
+	  SPH_C32(0xb5630000), SPH_C32(0x51860023), SPH_C32(0xd3c5a800),
+	  SPH_C32(0x27287863), SPH_C32(0xc5fd186a), SPH_C32(0xaa74f728),
+	  SPH_C32(0x90cfc944) },
+	{ SPH_C32(0x4edb0000), SPH_C32(0x706f0000), SPH_C32(0x4e36000d),
+	  SPH_C32(0x7c8c2000), SPH_C32(0x53013aea), SPH_C32(0xc4553b4e),
+	  SPH_C32(0xd9b1bed8), SPH_C32(0xfc875b74), SPH_C32(0xdb190000),
+	  SPH_C32(0x44890000), SPH_C32(0x79740023), SPH_C32(0x28a33800),
+	  SPH_C32(0x879213b5), SPH_C32(0x6d8215f9), SPH_C32(0xf086ca9d),
+	  SPH_C32(0x04e21946) },
+	{ SPH_C32(0xdc8d0000), SPH_C32(0x6eb50000), SPH_C32(0xa467000d),
+	  SPH_C32(0x943d1000), SPH_C32(0xfa346c4f), SPH_C32(0x2fae5ad7),
+	  SPH_C32(0x68ed9c8c), SPH_C32(0xcf427f3b), SPH_C32(0x57230000),
+	  SPH_C32(0x9e110000), SPH_C32(0x190b0023), SPH_C32(0x7ca4b000),
+	  SPH_C32(0x02e356a6), SPH_C32(0x0d84a7ba), SPH_C32(0x2bd6f301),
+	  SPH_C32(0x8ebaffe2) },
+	{ SPH_C32(0xaef90000), SPH_C32(0xcf450000), SPH_C32(0x30b80012),
+	  SPH_C32(0x69280000), SPH_C32(0x1e634526), SPH_C32(0x0d5e117e),
+	  SPH_C32(0x03512c46), SPH_C32(0xd3ad5d25), SPH_C32(0x84b70000),
+	  SPH_C32(0x76a70000), SPH_C32(0x86330028), SPH_C32(0x79c50000),
+	  SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480), SPH_C32(0xa88d56d0),
+	  SPH_C32(0xaed3d139) },
+	{ SPH_C32(0x3caf0000), SPH_C32(0xd19f0000), SPH_C32(0xdae90012),
+	  SPH_C32(0x81993000), SPH_C32(0xb7561383), SPH_C32(0xe6a570e7),
+	  SPH_C32(0xb20d0e12), SPH_C32(0xe068796a), SPH_C32(0x088d0000),
+	  SPH_C32(0xac3f0000), SPH_C32(0xe64c0028), SPH_C32(0x2dc28800),
+	  SPH_C32(0xa6a629d4), SPH_C32(0x3ceef6c3), SPH_C32(0x73dd6f4c),
+	  SPH_C32(0x248b379d) },
+	{ SPH_C32(0xf6ba0000), SPH_C32(0x4f3b0000), SPH_C32(0x488b0013),
+	  SPH_C32(0xaf433800), SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3),
+	  SPH_C32(0xaf22d229), SPH_C32(0xe9e92494), SPH_C32(0x99ed0000),
+	  SPH_C32(0x5dd50000), SPH_C32(0xcebe0028), SPH_C32(0xd6a41800),
+	  SPH_C32(0x061c4202), SPH_C32(0x9491fb50), SPH_C32(0x292f52f9),
+	  SPH_C32(0xb0a6e79f) },
+	{ SPH_C32(0x64ec0000), SPH_C32(0x51e10000), SPH_C32(0xa2da0013),
+	  SPH_C32(0x47f20800), SPH_C32(0x50614f5f), SPH_C32(0x9f084f3a),
+	  SPH_C32(0x1e7ef07d), SPH_C32(0xda2c00db), SPH_C32(0x15d70000),
+	  SPH_C32(0x874d0000), SPH_C32(0xaec10028), SPH_C32(0x82a39000),
+	  SPH_C32(0x836d0711), SPH_C32(0xf4974913), SPH_C32(0xf27f6b65),
+	  SPH_C32(0x3afe013b) },
+	{ SPH_C32(0xb3a30000), SPH_C32(0xe4370000), SPH_C32(0x78350012),
+	  SPH_C32(0xc6491800), SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae),
+	  SPH_C32(0x82f3286f), SPH_C32(0xcdd86b83), SPH_C32(0xc1ae0000),
+	  SPH_C32(0xddab0000), SPH_C32(0xb68d0029), SPH_C32(0x10cf2000),
+	  SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d), SPH_C32(0x855cac96),
+	  SPH_C32(0x8ae29e2e) },
+	{ SPH_C32(0x21f50000), SPH_C32(0xfaed0000), SPH_C32(0x92640012),
+	  SPH_C32(0x2ef82800), SPH_C32(0x929d3d46), SPH_C32(0x2edccf37),
+	  SPH_C32(0x33af0a3b), SPH_C32(0xfe1d4fcc), SPH_C32(0x4d940000),
+	  SPH_C32(0x07330000), SPH_C32(0xd6f20029), SPH_C32(0x44c8a800),
+	  SPH_C32(0x645a5bcd), SPH_C32(0x8d3a76ce), SPH_C32(0x5e0c950a),
+	  SPH_C32(0x00ba788a) },
+	{ SPH_C32(0xebe00000), SPH_C32(0x64490000), SPH_C32(0x00060013),
+	  SPH_C32(0x00222000), SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173),
+	  SPH_C32(0x2e80d600), SPH_C32(0xf79c1232), SPH_C32(0xdcf40000),
+	  SPH_C32(0xf6d90000), SPH_C32(0xfe000029), SPH_C32(0xbfae3800),
+	  SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d), SPH_C32(0x04fea8bf),
+	  SPH_C32(0x9497a888) },
+	{ SPH_C32(0x79b60000), SPH_C32(0x7a930000), SPH_C32(0xea570013),
+	  SPH_C32(0xe8931000), SPH_C32(0x75aa619a), SPH_C32(0x5771f0ea),
+	  SPH_C32(0x9fdcf454), SPH_C32(0xc459367d), SPH_C32(0x50ce0000),
+	  SPH_C32(0x2c410000), SPH_C32(0x9e7f0029), SPH_C32(0xeba9b000),
+	  SPH_C32(0x41917508), SPH_C32(0x4543c91e), SPH_C32(0xdfae9123),
+	  SPH_C32(0x1ecf4e2c) },
+	{ SPH_C32(0x0c2f0000), SPH_C32(0x69330000), SPH_C32(0xf9fc0006),
+	  SPH_C32(0x828b0000), SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7),
+	  SPH_C32(0x001826bc), SPH_C32(0x48c3a5ad), SPH_C32(0x218c0000),
+	  SPH_C32(0x62810000), SPH_C32(0xc8030036), SPH_C32(0x056b0000),
+	  SPH_C32(0xac496112), SPH_C32(0x2437eebd), SPH_C32(0x5fbc3e08),
+	  SPH_C32(0xa5c8987f) },
+	{ SPH_C32(0x9e790000), SPH_C32(0x77e90000), SPH_C32(0x13ad0006),
+	  SPH_C32(0x6a3a3000), SPH_C32(0x7bba3df8), SPH_C32(0xd6bdb47e),
+	  SPH_C32(0xb14404e8), SPH_C32(0x7b0681e2), SPH_C32(0xadb60000),
+	  SPH_C32(0xb8190000), SPH_C32(0xa87c0036), SPH_C32(0x516c8800),
+	  SPH_C32(0x29382401), SPH_C32(0x44315cfe), SPH_C32(0x84ec0794),
+	  SPH_C32(0x2f907edb) },
+	{ SPH_C32(0x546c0000), SPH_C32(0xe94d0000), SPH_C32(0x81cf0007),
+	  SPH_C32(0x44e03800), SPH_C32(0x35b83781), SPH_C32(0x44ebea3a),
+	  SPH_C32(0xac6bd8d3), SPH_C32(0x7287dc1c), SPH_C32(0x3cd60000),
+	  SPH_C32(0x49f30000), SPH_C32(0x808e0036), SPH_C32(0xaa0a1800),
+	  SPH_C32(0x89824fd7), SPH_C32(0xec4e516d), SPH_C32(0xde1e3a21),
+	  SPH_C32(0xbbbdaed9) },
+	{ SPH_C32(0xc63a0000), SPH_C32(0xf7970000), SPH_C32(0x6b9e0007),
+	  SPH_C32(0xac510800), SPH_C32(0x9c8d6124), SPH_C32(0xaf108ba3),
+	  SPH_C32(0x1d37fa87), SPH_C32(0x4142f853), SPH_C32(0xb0ec0000),
+	  SPH_C32(0x936b0000), SPH_C32(0xe0f10036), SPH_C32(0xfe0d9000),
+	  SPH_C32(0x0cf30ac4), SPH_C32(0x8c48e32e), SPH_C32(0x054e03bd),
+	  SPH_C32(0x31e5487d) },
+	{ SPH_C32(0x11750000), SPH_C32(0x42410000), SPH_C32(0xb1710006),
+	  SPH_C32(0x2dea1800), SPH_C32(0xf7444598), SPH_C32(0xf53f6a37),
+	  SPH_C32(0x81ba2295), SPH_C32(0x56b6930b), SPH_C32(0x64950000),
+	  SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037), SPH_C32(0x6c612000),
+	  SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0), SPH_C32(0x726dc44e),
+	  SPH_C32(0x81f9d768) },
+	{ SPH_C32(0x83230000), SPH_C32(0x5c9b0000), SPH_C32(0x5b200006),
+	  SPH_C32(0xc55b2800), SPH_C32(0x5e71133d), SPH_C32(0x1ec40bae),
+	  SPH_C32(0x30e600c1), SPH_C32(0x6573b744), SPH_C32(0xe8af0000),
+	  SPH_C32(0x13150000), SPH_C32(0x98c20037), SPH_C32(0x3866a800),
+	  SPH_C32(0xebc45618), SPH_C32(0xf5e5dcf3), SPH_C32(0xa93dfdd2),
+	  SPH_C32(0x0ba131cc) },
+	{ SPH_C32(0x49360000), SPH_C32(0xc23f0000), SPH_C32(0xc9420007),
+	  SPH_C32(0xeb812000), SPH_C32(0x10731944), SPH_C32(0x8c9255ea),
+	  SPH_C32(0x2dc9dcfa), SPH_C32(0x6cf2eaba), SPH_C32(0x79cf0000),
+	  SPH_C32(0xe2ff0000), SPH_C32(0xb0300037), SPH_C32(0xc3003800),
+	  SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160), SPH_C32(0xf3cfc067),
+	  SPH_C32(0x9f8ce1ce) },
+	{ SPH_C32(0xdb600000), SPH_C32(0xdce50000), SPH_C32(0x23130007),
+	  SPH_C32(0x03301000), SPH_C32(0xb9464fe1), SPH_C32(0x67693473),
+	  SPH_C32(0x9c95feae), SPH_C32(0x5f37cef5), SPH_C32(0xf5f50000),
+	  SPH_C32(0x38670000), SPH_C32(0xd04f0037), SPH_C32(0x9707b000),
+	  SPH_C32(0xce0f78dd), SPH_C32(0x3d9c6323), SPH_C32(0x289ff9fb),
+	  SPH_C32(0x15d4076a) },
+	{ SPH_C32(0xa9140000), SPH_C32(0x7d150000), SPH_C32(0xb7cc0018),
+	  SPH_C32(0xfe250000), SPH_C32(0x5d116688), SPH_C32(0x45997fda),
+	  SPH_C32(0xf7294e64), SPH_C32(0x43d8eceb), SPH_C32(0x26610000),
+	  SPH_C32(0xd0d10000), SPH_C32(0x4f77003c), SPH_C32(0x92660000),
+	  SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019), SPH_C32(0xabc45c2a),
+	  SPH_C32(0x35bd29b1) },
+	{ SPH_C32(0x3b420000), SPH_C32(0x63cf0000), SPH_C32(0x5d9d0018),
+	  SPH_C32(0x16943000), SPH_C32(0xf424302d), SPH_C32(0xae621e43),
+	  SPH_C32(0x46756c30), SPH_C32(0x701dc8a4), SPH_C32(0xaa5b0000),
+	  SPH_C32(0x0a490000), SPH_C32(0x2f08003c), SPH_C32(0xc6618800),
+	  SPH_C32(0x6a4a07af), SPH_C32(0x0cf6325a), SPH_C32(0x709465b6),
+	  SPH_C32(0xbfe5cf15) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019),
+	  SPH_C32(0x384e3800), SPH_C32(0xba263a54), SPH_C32(0x3c344007),
+	  SPH_C32(0x5b5ab00b), SPH_C32(0x799c955a), SPH_C32(0x3b3b0000),
+	  SPH_C32(0xfba30000), SPH_C32(0x07fa003c), SPH_C32(0x3d071800),
+	  SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9), SPH_C32(0x2a665803),
+	  SPH_C32(0x2bc81f17) },
+	{ SPH_C32(0x63010000), SPH_C32(0xe3b10000), SPH_C32(0x25ae0019),
+	  SPH_C32(0xd0ff0800), SPH_C32(0x13136cf1), SPH_C32(0xd7cf219e),
+	  SPH_C32(0xea06925f), SPH_C32(0x4a59b115), SPH_C32(0xb7010000),
+	  SPH_C32(0x213b0000), SPH_C32(0x6785003c), SPH_C32(0x69009000),
+	  SPH_C32(0x4f81296a), SPH_C32(0xc48f8d8a), SPH_C32(0xf136619f),
+	  SPH_C32(0xa190f9b3) },
+	{ SPH_C32(0xb44e0000), SPH_C32(0x56670000), SPH_C32(0xff410018),
+	  SPH_C32(0x51441800), SPH_C32(0x78da484d), SPH_C32(0x8de0c00a),
+	  SPH_C32(0x768b4a4d), SPH_C32(0x5dadda4d), SPH_C32(0x63780000),
+	  SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d), SPH_C32(0xfb6c2000),
+	  SPH_C32(0x2dc730a5), SPH_C32(0xdd240014), SPH_C32(0x8615a66c),
+	  SPH_C32(0x118c66a6) },
+	{ SPH_C32(0x26180000), SPH_C32(0x48bd0000), SPH_C32(0x15100018),
+	  SPH_C32(0xb9f52800), SPH_C32(0xd1ef1ee8), SPH_C32(0x661ba193),
+	  SPH_C32(0xc7d76819), SPH_C32(0x6e68fe02), SPH_C32(0xef420000),
+	  SPH_C32(0xa1450000), SPH_C32(0x1fb6003d), SPH_C32(0xaf6ba800),
+	  SPH_C32(0xa8b675b6), SPH_C32(0xbd22b257), SPH_C32(0x5d459ff0),
+	  SPH_C32(0x9bd48002) },
+	{ SPH_C32(0xec0d0000), SPH_C32(0xd6190000), SPH_C32(0x87720019),
+	  SPH_C32(0x972f2000), SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7),
+	  SPH_C32(0xdaf8b422), SPH_C32(0x67e9a3fc), SPH_C32(0x7e220000),
+	  SPH_C32(0x50af0000), SPH_C32(0x3744003d), SPH_C32(0x540d3800),
+	  SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4), SPH_C32(0x07b7a245),
+	  SPH_C32(0x0ff95000) },
+	{ SPH_C32(0x7e5b0000), SPH_C32(0xc8c30000), SPH_C32(0x6d230019),
+	  SPH_C32(0x7f9e1000), SPH_C32(0x36d84234), SPH_C32(0x1fb69e4e),
+	  SPH_C32(0x6ba49676), SPH_C32(0x542c87b3), SPH_C32(0xf2180000),
+	  SPH_C32(0x8a370000), SPH_C32(0x573b003d), SPH_C32(0x000ab000),
+	  SPH_C32(0x8d7d5b73), SPH_C32(0x755b0d87), SPH_C32(0xdce79bd9),
+	  SPH_C32(0x85a1b6a4) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0x110c0000), SPH_C32(0xda2d0000), SPH_C32(0xeb160022),
+	  SPH_C32(0x06793000), SPH_C32(0xc99019cc), SPH_C32(0xffd44bbd),
+	  SPH_C32(0xeda916a6), SPH_C32(0x0d6344b8), SPH_C32(0x04a20000),
+	  SPH_C32(0xc50c0000), SPH_C32(0x1fb0002e), SPH_C32(0xaf498800),
+	  SPH_C32(0x74294289), SPH_C32(0x01a82324), SPH_C32(0x73c549f0),
+	  SPH_C32(0x6c489230) },
+	{ SPH_C32(0xdb190000), SPH_C32(0x44890000), SPH_C32(0x79740023),
+	  SPH_C32(0x28a33800), SPH_C32(0x879213b5), SPH_C32(0x6d8215f9),
+	  SPH_C32(0xf086ca9d), SPH_C32(0x04e21946), SPH_C32(0x95c20000),
+	  SPH_C32(0x34e60000), SPH_C32(0x3742002e), SPH_C32(0x542f1800),
+	  SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7), SPH_C32(0x29377445),
+	  SPH_C32(0xf8654232) },
+	{ SPH_C32(0x494f0000), SPH_C32(0x5a530000), SPH_C32(0x93250023),
+	  SPH_C32(0xc0120800), SPH_C32(0x2ea74510), SPH_C32(0x86797460),
+	  SPH_C32(0x41dae8c9), SPH_C32(0x37273d09), SPH_C32(0x19f80000),
+	  SPH_C32(0xee7e0000), SPH_C32(0x573d002e), SPH_C32(0x00289000),
+	  SPH_C32(0x51e26c4c), SPH_C32(0xc9d19cf4), SPH_C32(0xf2674dd9),
+	  SPH_C32(0x723da496) },
+	{ SPH_C32(0x9e000000), SPH_C32(0xef850000), SPH_C32(0x49ca0022),
+	  SPH_C32(0x41a91800), SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4),
+	  SPH_C32(0xdd5730db), SPH_C32(0x20d35651), SPH_C32(0xcd810000),
+	  SPH_C32(0xb4980000), SPH_C32(0x4f71002f), SPH_C32(0x92442000),
+	  SPH_C32(0x33a47583), SPH_C32(0xd07a116a), SPH_C32(0x85448a2a),
+	  SPH_C32(0xc2213b83) },
+	{ SPH_C32(0x0c560000), SPH_C32(0xf15f0000), SPH_C32(0xa39b0022),
+	  SPH_C32(0xa9182800), SPH_C32(0xec5b3709), SPH_C32(0x37adf46d),
+	  SPH_C32(0x6c0b128f), SPH_C32(0x1316721e), SPH_C32(0x41bb0000),
+	  SPH_C32(0x6e000000), SPH_C32(0x2f0e002f), SPH_C32(0xc643a800),
+	  SPH_C32(0xb6d53090), SPH_C32(0xb07ca329), SPH_C32(0x5e14b3b6),
+	  SPH_C32(0x4879dd27) },
+	{ SPH_C32(0xc6430000), SPH_C32(0x6ffb0000), SPH_C32(0x31f90023),
+	  SPH_C32(0x87c22000), SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29),
+	  SPH_C32(0x7124ceb4), SPH_C32(0x1a972fe0), SPH_C32(0xd0db0000),
+	  SPH_C32(0x9fea0000), SPH_C32(0x07fc002f), SPH_C32(0x3d253800),
+	  SPH_C32(0x166f5b46), SPH_C32(0x1803aeba), SPH_C32(0x04e68e03),
+	  SPH_C32(0xdc540d25) },
+	{ SPH_C32(0x54150000), SPH_C32(0x71210000), SPH_C32(0xdba80023),
+	  SPH_C32(0x6f731000), SPH_C32(0x0b6c6bd5), SPH_C32(0x4e00cbb0),
+	  SPH_C32(0xc078ece0), SPH_C32(0x29520baf), SPH_C32(0x5ce10000),
+	  SPH_C32(0x45720000), SPH_C32(0x6783002f), SPH_C32(0x6922b000),
+	  SPH_C32(0x931e1e55), SPH_C32(0x78051cf9), SPH_C32(0xdfb6b79f),
+	  SPH_C32(0x560ceb81) },
+	{ SPH_C32(0x26610000), SPH_C32(0xd0d10000), SPH_C32(0x4f77003c),
+	  SPH_C32(0x92660000), SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019),
+	  SPH_C32(0xabc45c2a), SPH_C32(0x35bd29b1), SPH_C32(0x8f750000),
+	  SPH_C32(0xadc40000), SPH_C32(0xf8bb0024), SPH_C32(0x6c430000),
+	  SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3), SPH_C32(0x5ced124e),
+	  SPH_C32(0x7665c55a) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xce0b0000), SPH_C32(0xa526003c),
+	  SPH_C32(0x7ad73000), SPH_C32(0x460e1419), SPH_C32(0x870be180),
+	  SPH_C32(0x1a987e7e), SPH_C32(0x06780dfe), SPH_C32(0x034f0000),
+	  SPH_C32(0x775c0000), SPH_C32(0x98c40024), SPH_C32(0x38448800),
+	  SPH_C32(0x375b6127), SPH_C32(0x496f4d80), SPH_C32(0x87bd2bd2),
+	  SPH_C32(0xfc3d23fe) },
+	{ SPH_C32(0x7e220000), SPH_C32(0x50af0000), SPH_C32(0x3744003d),
+	  SPH_C32(0x540d3800), SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4),
+	  SPH_C32(0x07b7a245), SPH_C32(0x0ff95000), SPH_C32(0x922f0000),
+	  SPH_C32(0x86b60000), SPH_C32(0xb0360024), SPH_C32(0xc3221800),
+	  SPH_C32(0x97e10af1), SPH_C32(0xe1104013), SPH_C32(0xdd4f1667),
+	  SPH_C32(0x6810f3fc) },
+	{ SPH_C32(0xec740000), SPH_C32(0x4e750000), SPH_C32(0xdd15003d),
+	  SPH_C32(0xbcbc0800), SPH_C32(0xa13948c5), SPH_C32(0xfea6de5d),
+	  SPH_C32(0xb6eb8011), SPH_C32(0x3c3c744f), SPH_C32(0x1e150000),
+	  SPH_C32(0x5c2e0000), SPH_C32(0xd0490024), SPH_C32(0x97259000),
+	  SPH_C32(0x12904fe2), SPH_C32(0x8116f250), SPH_C32(0x061f2ffb),
+	  SPH_C32(0xe2481558) },
+	{ SPH_C32(0x3b3b0000), SPH_C32(0xfba30000), SPH_C32(0x07fa003c),
+	  SPH_C32(0x3d071800), SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9),
+	  SPH_C32(0x2a665803), SPH_C32(0x2bc81f17), SPH_C32(0xca6c0000),
+	  SPH_C32(0x06c80000), SPH_C32(0xc8050025), SPH_C32(0x05492000),
+	  SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce), SPH_C32(0x713ce808),
+	  SPH_C32(0x52548a4d) },
+	{ SPH_C32(0xa96d0000), SPH_C32(0xe5790000), SPH_C32(0xedab003c),
+	  SPH_C32(0xd5b62800), SPH_C32(0x63c53adc), SPH_C32(0x4f725e50),
+	  SPH_C32(0x9b3a7a57), SPH_C32(0x180d3b58), SPH_C32(0x46560000),
+	  SPH_C32(0xdc500000), SPH_C32(0xa87a0025), SPH_C32(0x514ea800),
+	  SPH_C32(0xf5a7133e), SPH_C32(0xf8bbcd8d), SPH_C32(0xaa6cd194),
+	  SPH_C32(0xd80c6ce9) },
+	{ SPH_C32(0x63780000), SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d),
+	  SPH_C32(0xfb6c2000), SPH_C32(0x2dc730a5), SPH_C32(0xdd240014),
+	  SPH_C32(0x8615a66c), SPH_C32(0x118c66a6), SPH_C32(0xd7360000),
+	  SPH_C32(0x2dba0000), SPH_C32(0x80880025), SPH_C32(0xaa283800),
+	  SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e), SPH_C32(0xf09eec21),
+	  SPH_C32(0x4c21bceb) },
+	{ SPH_C32(0xf12e0000), SPH_C32(0x65070000), SPH_C32(0x9598003d),
+	  SPH_C32(0x13dd1000), SPH_C32(0x84f26600), SPH_C32(0x36df618d),
+	  SPH_C32(0x37498438), SPH_C32(0x224942e9), SPH_C32(0x5b0c0000),
+	  SPH_C32(0xf7220000), SPH_C32(0xe0f70025), SPH_C32(0xfe2fb000),
+	  SPH_C32(0xd06c3dfb), SPH_C32(0x30c2725d), SPH_C32(0x2bced5bd),
+	  SPH_C32(0xc6795a4f) },
+	{ SPH_C32(0x84b70000), SPH_C32(0x76a70000), SPH_C32(0x86330028),
+	  SPH_C32(0x79c50000), SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480),
+	  SPH_C32(0xa88d56d0), SPH_C32(0xaed3d139), SPH_C32(0x2a4e0000),
+	  SPH_C32(0xb9e20000), SPH_C32(0xb68b003a), SPH_C32(0x10ed0000),
+	  SPH_C32(0x3db429e1), SPH_C32(0x51b655fe), SPH_C32(0xabdc7a96),
+	  SPH_C32(0x7d7e8c1c) },
+	{ SPH_C32(0x16e10000), SPH_C32(0x687d0000), SPH_C32(0x6c620028),
+	  SPH_C32(0x91743000), SPH_C32(0x8ae23a62), SPH_C32(0xb7132519),
+	  SPH_C32(0x19d17484), SPH_C32(0x9d16f576), SPH_C32(0xa6740000),
+	  SPH_C32(0x637a0000), SPH_C32(0xd6f4003a), SPH_C32(0x44ea8800),
+	  SPH_C32(0xb8c56cf2), SPH_C32(0x31b0e7bd), SPH_C32(0x708c430a),
+	  SPH_C32(0xf7266ab8) },
+	{ SPH_C32(0xdcf40000), SPH_C32(0xf6d90000), SPH_C32(0xfe000029),
+	  SPH_C32(0xbfae3800), SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d),
+	  SPH_C32(0x04fea8bf), SPH_C32(0x9497a888), SPH_C32(0x37140000),
+	  SPH_C32(0x92900000), SPH_C32(0xfe06003a), SPH_C32(0xbf8c1800),
+	  SPH_C32(0x187f0724), SPH_C32(0x99cfea2e), SPH_C32(0x2a7e7ebf),
+	  SPH_C32(0x630bbaba) },
+	{ SPH_C32(0x4ea20000), SPH_C32(0xe8030000), SPH_C32(0x14510029),
+	  SPH_C32(0x571f0800), SPH_C32(0x6dd566be), SPH_C32(0xcebe1ac4),
+	  SPH_C32(0xb5a28aeb), SPH_C32(0xa7528cc7), SPH_C32(0xbb2e0000),
+	  SPH_C32(0x48080000), SPH_C32(0x9e79003a), SPH_C32(0xeb8b9000),
+	  SPH_C32(0x9d0e4237), SPH_C32(0xf9c9586d), SPH_C32(0xf12e4723),
+	  SPH_C32(0xe9535c1e) },
+	{ SPH_C32(0x99ed0000), SPH_C32(0x5dd50000), SPH_C32(0xcebe0028),
+	  SPH_C32(0xd6a41800), SPH_C32(0x061c4202), SPH_C32(0x9491fb50),
+	  SPH_C32(0x292f52f9), SPH_C32(0xb0a6e79f), SPH_C32(0x6f570000),
+	  SPH_C32(0x12ee0000), SPH_C32(0x8635003b), SPH_C32(0x79e72000),
+	  SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3), SPH_C32(0x860d80d0),
+	  SPH_C32(0x594fc30b) },
+	{ SPH_C32(0x0bbb0000), SPH_C32(0x430f0000), SPH_C32(0x24ef0028),
+	  SPH_C32(0x3e152800), SPH_C32(0xaf2914a7), SPH_C32(0x7f6a9ac9),
+	  SPH_C32(0x987370ad), SPH_C32(0x8363c3d0), SPH_C32(0xe36d0000),
+	  SPH_C32(0xc8760000), SPH_C32(0xe64a003b), SPH_C32(0x2de0a800),
+	  SPH_C32(0x7a391eeb), SPH_C32(0x806467b0), SPH_C32(0x5d5db94c),
+	  SPH_C32(0xd31725af) },
+	{ SPH_C32(0xc1ae0000), SPH_C32(0xddab0000), SPH_C32(0xb68d0029),
+	  SPH_C32(0x10cf2000), SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d),
+	  SPH_C32(0x855cac96), SPH_C32(0x8ae29e2e), SPH_C32(0x720d0000),
+	  SPH_C32(0x399c0000), SPH_C32(0xceb8003b), SPH_C32(0xd6863800),
+	  SPH_C32(0xda83753d), SPH_C32(0x281b6a23), SPH_C32(0x07af84f9),
+	  SPH_C32(0x473af5ad) },
+	{ SPH_C32(0x53f80000), SPH_C32(0xc3710000), SPH_C32(0x5cdc0029),
+	  SPH_C32(0xf87e1000), SPH_C32(0x481e487b), SPH_C32(0x06c7a514),
+	  SPH_C32(0x34008ec2), SPH_C32(0xb927ba61), SPH_C32(0xfe370000),
+	  SPH_C32(0xe3040000), SPH_C32(0xaec7003b), SPH_C32(0x8281b000),
+	  SPH_C32(0x5ff2302e), SPH_C32(0x481dd860), SPH_C32(0xdcffbd65),
+	  SPH_C32(0xcd621309) },
+	{ SPH_C32(0x218c0000), SPH_C32(0x62810000), SPH_C32(0xc8030036),
+	  SPH_C32(0x056b0000), SPH_C32(0xac496112), SPH_C32(0x2437eebd),
+	  SPH_C32(0x5fbc3e08), SPH_C32(0xa5c8987f), SPH_C32(0x2da30000),
+	  SPH_C32(0x0bb20000), SPH_C32(0x31ff0030), SPH_C32(0x87e00000),
+	  SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a), SPH_C32(0x5fa418b4),
+	  SPH_C32(0xed0b3dd2) },
+	{ SPH_C32(0xb3da0000), SPH_C32(0x7c5b0000), SPH_C32(0x22520036),
+	  SPH_C32(0xedda3000), SPH_C32(0x057c37b7), SPH_C32(0xcfcc8f24),
+	  SPH_C32(0xeee01c5c), SPH_C32(0x960dbc30), SPH_C32(0xa1990000),
+	  SPH_C32(0xd12a0000), SPH_C32(0x51800030), SPH_C32(0xd3e78800),
+	  SPH_C32(0xfbb74f5c), SPH_C32(0x79778919), SPH_C32(0x84f42128),
+	  SPH_C32(0x6753db76) },
+	{ SPH_C32(0x79cf0000), SPH_C32(0xe2ff0000), SPH_C32(0xb0300037),
+	  SPH_C32(0xc3003800), SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160),
+	  SPH_C32(0xf3cfc067), SPH_C32(0x9f8ce1ce), SPH_C32(0x30f90000),
+	  SPH_C32(0x20c00000), SPH_C32(0x79720030), SPH_C32(0x28811800),
+	  SPH_C32(0x5b0d248a), SPH_C32(0xd108848a), SPH_C32(0xde061c9d),
+	  SPH_C32(0xf37e0b74) },
+	{ SPH_C32(0xeb990000), SPH_C32(0xfc250000), SPH_C32(0x5a610037),
+	  SPH_C32(0x2bb10800), SPH_C32(0xe24b6b6b), SPH_C32(0xb661b0f9),
+	  SPH_C32(0x4293e233), SPH_C32(0xac49c581), SPH_C32(0xbcc30000),
+	  SPH_C32(0xfa580000), SPH_C32(0x190d0030), SPH_C32(0x7c869000),
+	  SPH_C32(0xde7c6199), SPH_C32(0xb10e36c9), SPH_C32(0x05562501),
+	  SPH_C32(0x7926edd0) },
+	{ SPH_C32(0x3cd60000), SPH_C32(0x49f30000), SPH_C32(0x808e0036),
+	  SPH_C32(0xaa0a1800), SPH_C32(0x89824fd7), SPH_C32(0xec4e516d),
+	  SPH_C32(0xde1e3a21), SPH_C32(0xbbbdaed9), SPH_C32(0x68ba0000),
+	  SPH_C32(0xa0be0000), SPH_C32(0x01410031), SPH_C32(0xeeea2000),
+	  SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57), SPH_C32(0x7275e2f2),
+	  SPH_C32(0xc93a72c5) },
+	{ SPH_C32(0xae800000), SPH_C32(0x57290000), SPH_C32(0x6adf0036),
+	  SPH_C32(0x42bb2800), SPH_C32(0x20b71972), SPH_C32(0x07b530f4),
+	  SPH_C32(0x6f421875), SPH_C32(0x88788a96), SPH_C32(0xe4800000),
+	  SPH_C32(0x7a260000), SPH_C32(0x613e0031), SPH_C32(0xbaeda800),
+	  SPH_C32(0x394b3d45), SPH_C32(0xc8a30914), SPH_C32(0xa925db6e),
+	  SPH_C32(0x43629461) },
+	{ SPH_C32(0x64950000), SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037),
+	  SPH_C32(0x6c612000), SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0),
+	  SPH_C32(0x726dc44e), SPH_C32(0x81f9d768), SPH_C32(0x75e00000),
+	  SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031), SPH_C32(0x418b3800),
+	  SPH_C32(0x99f15693), SPH_C32(0x60dc0487), SPH_C32(0xf3d7e6db),
+	  SPH_C32(0xd74f4463) },
+	{ SPH_C32(0xf6c30000), SPH_C32(0xd7570000), SPH_C32(0x12ec0037),
+	  SPH_C32(0x84d01000), SPH_C32(0xc78045ae), SPH_C32(0x7e180f29),
+	  SPH_C32(0xc331e61a), SPH_C32(0xb23cf327), SPH_C32(0xf9da0000),
+	  SPH_C32(0x51540000), SPH_C32(0x29b30031), SPH_C32(0x158cb000),
+	  SPH_C32(0x1c801380), SPH_C32(0x00dab6c4), SPH_C32(0x2887df47),
+	  SPH_C32(0x5d17a2c7) }
+};
+
+static const sph_u32 T512_49[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0x52190000), SPH_C32(0x3b780000), SPH_C32(0x19080000),
+	  SPH_C32(0xac000600), SPH_C32(0xa0c35180), SPH_C32(0x49b17387),
+	  SPH_C32(0xfac3d23d), SPH_C32(0x99353c49), SPH_C32(0x13c30000),
+	  SPH_C32(0xe4e20000), SPH_C32(0xc2910000), SPH_C32(0x5e7f00a0),
+	  SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8), SPH_C32(0xb825551a),
+	  SPH_C32(0x0d71a4a6) },
+	{ SPH_C32(0x44f40000), SPH_C32(0x2e100000), SPH_C32(0xf4df0000),
+	  SPH_C32(0x9e5d0420), SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4),
+	  SPH_C32(0x19b62a95), SPH_C32(0x18c8c541), SPH_C32(0xf5eb0000),
+	  SPH_C32(0xa8a90000), SPH_C32(0x6ac40000), SPH_C32(0x8daf0240),
+	  SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112), SPH_C32(0x90b053ae),
+	  SPH_C32(0xda2bec31) },
+	{ SPH_C32(0xa2dc0000), SPH_C32(0x625b0000), SPH_C32(0x5c8a0000),
+	  SPH_C32(0x4d8d06c0), SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e),
+	  SPH_C32(0x31232c21), SPH_C32(0xcf928dd6), SPH_C32(0x052e0000),
+	  SPH_C32(0xf18a0000), SPH_C32(0x2f460000), SPH_C32(0x6c220280),
+	  SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b), SPH_C32(0x5b50adb2),
+	  SPH_C32(0x8c8c5dae) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x052e0000), SPH_C32(0xf18a0000), SPH_C32(0x2f460000),
+	  SPH_C32(0x6c220280), SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b),
+	  SPH_C32(0x5b50adb2), SPH_C32(0x8c8c5dae), SPH_C32(0xa7f20000),
+	  SPH_C32(0x93d10000), SPH_C32(0x73cc0000), SPH_C32(0x21af0440),
+	  SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295), SPH_C32(0x6a738193),
+	  SPH_C32(0x431ed078) },
+	{ SPH_C32(0x13c30000), SPH_C32(0xe4e20000), SPH_C32(0xc2910000),
+	  SPH_C32(0x5e7f00a0), SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8),
+	  SPH_C32(0xb825551a), SPH_C32(0x0d71a4a6), SPH_C32(0x41da0000),
+	  SPH_C32(0xdf9a0000), SPH_C32(0xdb990000), SPH_C32(0xf27f06a0),
+	  SPH_C32(0xb5145dab), SPH_C32(0x06e9124f), SPH_C32(0x42e68727),
+	  SPH_C32(0x944498ef) },
+	{ SPH_C32(0xf5eb0000), SPH_C32(0xa8a90000), SPH_C32(0x6ac40000),
+	  SPH_C32(0x8daf0240), SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112),
+	  SPH_C32(0x90b053ae), SPH_C32(0xda2bec31), SPH_C32(0xb11f0000),
+	  SPH_C32(0x86b90000), SPH_C32(0x9e1b0000), SPH_C32(0x13f20660),
+	  SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6), SPH_C32(0x8906793b),
+	  SPH_C32(0xc2e32970) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0xb11f0000), SPH_C32(0x86b90000), SPH_C32(0x9e1b0000),
+	  SPH_C32(0x13f20660), SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6),
+	  SPH_C32(0x8906793b), SPH_C32(0xc2e32970), SPH_C32(0x44f40000),
+	  SPH_C32(0x2e100000), SPH_C32(0xf4df0000), SPH_C32(0x9e5d0420),
+	  SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4), SPH_C32(0x19b62a95),
+	  SPH_C32(0x18c8c541) },
+	{ SPH_C32(0xa7f20000), SPH_C32(0x93d10000), SPH_C32(0x73cc0000),
+	  SPH_C32(0x21af0440), SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295),
+	  SPH_C32(0x6a738193), SPH_C32(0x431ed078), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x625b0000), SPH_C32(0x5c8a0000), SPH_C32(0x4d8d06c0),
+	  SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e), SPH_C32(0x31232c21),
+	  SPH_C32(0xcf928dd6) },
+	{ SPH_C32(0x41da0000), SPH_C32(0xdf9a0000), SPH_C32(0xdb990000),
+	  SPH_C32(0xf27f06a0), SPH_C32(0xb5145dab), SPH_C32(0x06e9124f),
+	  SPH_C32(0x42e68727), SPH_C32(0x944498ef), SPH_C32(0x52190000),
+	  SPH_C32(0x3b780000), SPH_C32(0x19080000), SPH_C32(0xac000600),
+	  SPH_C32(0xa0c35180), SPH_C32(0x49b17387), SPH_C32(0xfac3d23d),
+	  SPH_C32(0x99353c49) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xe4da0000), SPH_C32(0xeeca0000), SPH_C32(0x2f6a0000),
+	  SPH_C32(0x30bc7ae0), SPH_C32(0xc67c4457), SPH_C32(0x9f9a9b0c),
+	  SPH_C32(0xec573483), SPH_C32(0xa8686d09), SPH_C32(0x4a180000),
+	  SPH_C32(0x4a8e0000), SPH_C32(0xf2650000), SPH_C32(0x16a528c0),
+	  SPH_C32(0xe428127c), SPH_C32(0xf4f795a3), SPH_C32(0x21ba7308),
+	  SPH_C32(0x7c8ba96f) },
+	{ SPH_C32(0xf2370000), SPH_C32(0xfba20000), SPH_C32(0xc2bd0000),
+	  SPH_C32(0x02e178c0), SPH_C32(0x257072de), SPH_C32(0xc5d07d4f),
+	  SPH_C32(0x0f22cc2b), SPH_C32(0x29959401), SPH_C32(0xac300000),
+	  SPH_C32(0x06c50000), SPH_C32(0x5a300000), SPH_C32(0xc5752a20),
+	  SPH_C32(0x3c4922c4), SPH_C32(0x6c502579), SPH_C32(0x092f75bc),
+	  SPH_C32(0xabd1e1f8) },
+	{ SPH_C32(0x141f0000), SPH_C32(0xb7e90000), SPH_C32(0x6ae80000),
+	  SPH_C32(0xd1317a20), SPH_C32(0xfd114266), SPH_C32(0x5d77cd95),
+	  SPH_C32(0x27b7ca9f), SPH_C32(0xfecfdc96), SPH_C32(0x5cf50000),
+	  SPH_C32(0x5fe60000), SPH_C32(0x1fb20000), SPH_C32(0x24f82ae0),
+	  SPH_C32(0x072424f5), SPH_C32(0xaebd73e0), SPH_C32(0xc2cf8ba0),
+	  SPH_C32(0xfd765067) },
+	{ SPH_C32(0xb6c30000), SPH_C32(0xd5b20000), SPH_C32(0x36620000),
+	  SPH_C32(0x9cbc7ce0), SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b),
+	  SPH_C32(0x1694e6be), SPH_C32(0x315d5140), SPH_C32(0x59db0000),
+	  SPH_C32(0xae6c0000), SPH_C32(0x30f40000), SPH_C32(0x48da2860),
+	  SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b), SPH_C32(0x999f2612),
+	  SPH_C32(0x71fa0dc9) },
+	{ SPH_C32(0x50eb0000), SPH_C32(0x99f90000), SPH_C32(0x9e370000),
+	  SPH_C32(0x4f6c7e00), SPH_C32(0xbede256f), SPH_C32(0x4e8c5851),
+	  SPH_C32(0x3e01e00a), SPH_C32(0xe60719d7), SPH_C32(0xa91e0000),
+	  SPH_C32(0xf74f0000), SPH_C32(0x75760000), SPH_C32(0xa95728a0),
+	  SPH_C32(0xca921866), SPH_C32(0x7942a2f2), SPH_C32(0x527fd80e),
+	  SPH_C32(0x275dbc56) },
+	{ SPH_C32(0x46060000), SPH_C32(0x8c910000), SPH_C32(0x73e00000),
+	  SPH_C32(0x7d317c20), SPH_C32(0x5dd213e6), SPH_C32(0x14c6be12),
+	  SPH_C32(0xdd7418a2), SPH_C32(0x67fae0df), SPH_C32(0x4f360000),
+	  SPH_C32(0xbb040000), SPH_C32(0xdd230000), SPH_C32(0x7a872a40),
+	  SPH_C32(0x12f328de), SPH_C32(0xe1e51228), SPH_C32(0x7aeadeba),
+	  SPH_C32(0xf007f4c1) },
+	{ SPH_C32(0xa02e0000), SPH_C32(0xc0da0000), SPH_C32(0xdbb50000),
+	  SPH_C32(0xaee17ec0), SPH_C32(0x85b3235e), SPH_C32(0x8c610ec8),
+	  SPH_C32(0xf5e11e16), SPH_C32(0xb0a0a848), SPH_C32(0xbff30000),
+	  SPH_C32(0xe2270000), SPH_C32(0x98a10000), SPH_C32(0x9b0a2a80),
+	  SPH_C32(0x299e2eef), SPH_C32(0x230844b1), SPH_C32(0xb10a20a6),
+	  SPH_C32(0xa6a0455e) },
+	{ SPH_C32(0xe1f40000), SPH_C32(0x1f400000), SPH_C32(0x002c0000),
+	  SPH_C32(0x5c9e7860), SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87),
+	  SPH_C32(0xb7079931), SPH_C32(0x24e430a7), SPH_C32(0xedea0000),
+	  SPH_C32(0xd95f0000), SPH_C32(0x81a90000), SPH_C32(0x370a2c80),
+	  SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736), SPH_C32(0x4bc9f29b),
+	  SPH_C32(0x3f957917) },
+	{ SPH_C32(0x07dc0000), SPH_C32(0x530b0000), SPH_C32(0xa8790000),
+	  SPH_C32(0x8f4e7a80), SPH_C32(0xe8c64e4d), SPH_C32(0x122fac5d),
+	  SPH_C32(0x9f929f85), SPH_C32(0xf3be7830), SPH_C32(0x1d2f0000),
+	  SPH_C32(0x807c0000), SPH_C32(0xc42b0000), SPH_C32(0xd6872c40),
+	  SPH_C32(0xb230795e), SPH_C32(0xa85461af), SPH_C32(0x80290c87),
+	  SPH_C32(0x6932c888) },
+	{ SPH_C32(0x11310000), SPH_C32(0x46630000), SPH_C32(0x45ae0000),
+	  SPH_C32(0xbd1378a0), SPH_C32(0x0bca78c4), SPH_C32(0x48654a1e),
+	  SPH_C32(0x7ce7672d), SPH_C32(0x72438138), SPH_C32(0xfb070000),
+	  SPH_C32(0xcc370000), SPH_C32(0x6c7e0000), SPH_C32(0x05572ea0),
+	  SPH_C32(0x6a5149e6), SPH_C32(0x30f3d175), SPH_C32(0xa8bc0a33),
+	  SPH_C32(0xbe68801f) },
+	{ SPH_C32(0xf7190000), SPH_C32(0x0a280000), SPH_C32(0xedfb0000),
+	  SPH_C32(0x6ec37a40), SPH_C32(0xd3ab487c), SPH_C32(0xd0c2fac4),
+	  SPH_C32(0x54726199), SPH_C32(0xa519c9af), SPH_C32(0x0bc20000),
+	  SPH_C32(0x95140000), SPH_C32(0x29fc0000), SPH_C32(0xe4da2e60),
+	  SPH_C32(0x513c4fd7), SPH_C32(0xf21e87ec), SPH_C32(0x635cf42f),
+	  SPH_C32(0xe8cf3180) },
+	{ SPH_C32(0x55c50000), SPH_C32(0x68730000), SPH_C32(0xb1710000),
+	  SPH_C32(0x234e7c80), SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda),
+	  SPH_C32(0x65514db8), SPH_C32(0x6a8b4479), SPH_C32(0x0eec0000),
+	  SPH_C32(0x649e0000), SPH_C32(0x06ba0000), SPH_C32(0x88f82ce0),
+	  SPH_C32(0xa7e77575), SPH_C32(0xe70c0067), SPH_C32(0x380c599d),
+	  SPH_C32(0x64436c2e) },
+	{ SPH_C32(0xb3ed0000), SPH_C32(0x24380000), SPH_C32(0x19240000),
+	  SPH_C32(0xf09e7e60), SPH_C32(0x90642f75), SPH_C32(0xc3396f00),
+	  SPH_C32(0x4dc44b0c), SPH_C32(0xbdd10cee), SPH_C32(0xfe290000),
+	  SPH_C32(0x3dbd0000), SPH_C32(0x43380000), SPH_C32(0x69752c20),
+	  SPH_C32(0x9c8a7344), SPH_C32(0x25e156fe), SPH_C32(0xf3eca781),
+	  SPH_C32(0x32e4ddb1) },
+	{ SPH_C32(0xa5000000), SPH_C32(0x31500000), SPH_C32(0xf4f30000),
+	  SPH_C32(0xc2c37c40), SPH_C32(0x736819fc), SPH_C32(0x99738943),
+	  SPH_C32(0xaeb1b3a4), SPH_C32(0x3c2cf5e6), SPH_C32(0x18010000),
+	  SPH_C32(0x71f60000), SPH_C32(0xeb6d0000), SPH_C32(0xbaa52ec0),
+	  SPH_C32(0x44eb43fc), SPH_C32(0xbd46e624), SPH_C32(0xdb79a135),
+	  SPH_C32(0xe5be9526) },
+	{ SPH_C32(0x43280000), SPH_C32(0x7d1b0000), SPH_C32(0x5ca60000),
+	  SPH_C32(0x11137ea0), SPH_C32(0xab092944), SPH_C32(0x01d43999),
+	  SPH_C32(0x8624b510), SPH_C32(0xeb76bd71), SPH_C32(0xe8c40000),
+	  SPH_C32(0x28d50000), SPH_C32(0xaeef0000), SPH_C32(0x5b282e00),
+	  SPH_C32(0x7f8645cd), SPH_C32(0x7fabb0bd), SPH_C32(0x10995f29),
+	  SPH_C32(0xb31924b9) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x5cf50000), SPH_C32(0x5fe60000), SPH_C32(0x1fb20000),
+	  SPH_C32(0x24f82ae0), SPH_C32(0x072424f5), SPH_C32(0xaebd73e0),
+	  SPH_C32(0xc2cf8ba0), SPH_C32(0xfd765067), SPH_C32(0x48ea0000),
+	  SPH_C32(0xe80f0000), SPH_C32(0x755a0000), SPH_C32(0xf5c950c0),
+	  SPH_C32(0xfa356693), SPH_C32(0xf3cabe75), SPH_C32(0xe578413f),
+	  SPH_C32(0x03b98cf1) },
+	{ SPH_C32(0x4a180000), SPH_C32(0x4a8e0000), SPH_C32(0xf2650000),
+	  SPH_C32(0x16a528c0), SPH_C32(0xe428127c), SPH_C32(0xf4f795a3),
+	  SPH_C32(0x21ba7308), SPH_C32(0x7c8ba96f), SPH_C32(0xaec20000),
+	  SPH_C32(0xa4440000), SPH_C32(0xdd0f0000), SPH_C32(0x26195220),
+	  SPH_C32(0x2254562b), SPH_C32(0x6b6d0eaf), SPH_C32(0xcded478b),
+	  SPH_C32(0xd4e3c466) },
+	{ SPH_C32(0xac300000), SPH_C32(0x06c50000), SPH_C32(0x5a300000),
+	  SPH_C32(0xc5752a20), SPH_C32(0x3c4922c4), SPH_C32(0x6c502579),
+	  SPH_C32(0x092f75bc), SPH_C32(0xabd1e1f8), SPH_C32(0x5e070000),
+	  SPH_C32(0xfd670000), SPH_C32(0x988d0000), SPH_C32(0xc79452e0),
+	  SPH_C32(0x1939501a), SPH_C32(0xa9805836), SPH_C32(0x060db997),
+	  SPH_C32(0x824475f9) },
+	{ SPH_C32(0x0eec0000), SPH_C32(0x649e0000), SPH_C32(0x06ba0000),
+	  SPH_C32(0x88f82ce0), SPH_C32(0xa7e77575), SPH_C32(0xe70c0067),
+	  SPH_C32(0x380c599d), SPH_C32(0x64436c2e), SPH_C32(0x5b290000),
+	  SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000), SPH_C32(0xabb65060),
+	  SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd), SPH_C32(0x5d5d1425),
+	  SPH_C32(0x0ec82857) },
+	{ SPH_C32(0xe8c40000), SPH_C32(0x28d50000), SPH_C32(0xaeef0000),
+	  SPH_C32(0x5b282e00), SPH_C32(0x7f8645cd), SPH_C32(0x7fabb0bd),
+	  SPH_C32(0x10995f29), SPH_C32(0xb31924b9), SPH_C32(0xabec0000),
+	  SPH_C32(0x55ce0000), SPH_C32(0xf2490000), SPH_C32(0x4a3b50a0),
+	  SPH_C32(0xd48f6c89), SPH_C32(0x7e7f8924), SPH_C32(0x96bdea39),
+	  SPH_C32(0x586f99c8) },
+	{ SPH_C32(0xfe290000), SPH_C32(0x3dbd0000), SPH_C32(0x43380000),
+	  SPH_C32(0x69752c20), SPH_C32(0x9c8a7344), SPH_C32(0x25e156fe),
+	  SPH_C32(0xf3eca781), SPH_C32(0x32e4ddb1), SPH_C32(0x4dc40000),
+	  SPH_C32(0x19850000), SPH_C32(0x5a1c0000), SPH_C32(0x99eb5240),
+	  SPH_C32(0x0cee5c31), SPH_C32(0xe6d839fe), SPH_C32(0xbe28ec8d),
+	  SPH_C32(0x8f35d15f) },
+	{ SPH_C32(0x18010000), SPH_C32(0x71f60000), SPH_C32(0xeb6d0000),
+	  SPH_C32(0xbaa52ec0), SPH_C32(0x44eb43fc), SPH_C32(0xbd46e624),
+	  SPH_C32(0xdb79a135), SPH_C32(0xe5be9526), SPH_C32(0xbd010000),
+	  SPH_C32(0x40a60000), SPH_C32(0x1f9e0000), SPH_C32(0x78665280),
+	  SPH_C32(0x37835a00), SPH_C32(0x24356f67), SPH_C32(0x75c81291),
+	  SPH_C32(0xd99260c0) },
+	{ SPH_C32(0x59db0000), SPH_C32(0xae6c0000), SPH_C32(0x30f40000),
+	  SPH_C32(0x48da2860), SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b),
+	  SPH_C32(0x999f2612), SPH_C32(0x71fa0dc9), SPH_C32(0xef180000),
+	  SPH_C32(0x7bde0000), SPH_C32(0x06960000), SPH_C32(0xd4665480),
+	  SPH_C32(0x97400b80), SPH_C32(0x6d841ce0), SPH_C32(0x8f0bc0ac),
+	  SPH_C32(0x40a75c89) },
+	{ SPH_C32(0xbff30000), SPH_C32(0xe2270000), SPH_C32(0x98a10000),
+	  SPH_C32(0x9b0a2a80), SPH_C32(0x299e2eef), SPH_C32(0x230844b1),
+	  SPH_C32(0xb10a20a6), SPH_C32(0xa6a0455e), SPH_C32(0x1fdd0000),
+	  SPH_C32(0x22fd0000), SPH_C32(0x43140000), SPH_C32(0x35eb5440),
+	  SPH_C32(0xac2d0db1), SPH_C32(0xaf694a79), SPH_C32(0x44eb3eb0),
+	  SPH_C32(0x1600ed16) },
+	{ SPH_C32(0xa91e0000), SPH_C32(0xf74f0000), SPH_C32(0x75760000),
+	  SPH_C32(0xa95728a0), SPH_C32(0xca921866), SPH_C32(0x7942a2f2),
+	  SPH_C32(0x527fd80e), SPH_C32(0x275dbc56), SPH_C32(0xf9f50000),
+	  SPH_C32(0x6eb60000), SPH_C32(0xeb410000), SPH_C32(0xe63b56a0),
+	  SPH_C32(0x744c3d09), SPH_C32(0x37cefaa3), SPH_C32(0x6c7e3804),
+	  SPH_C32(0xc15aa581) },
+	{ SPH_C32(0x4f360000), SPH_C32(0xbb040000), SPH_C32(0xdd230000),
+	  SPH_C32(0x7a872a40), SPH_C32(0x12f328de), SPH_C32(0xe1e51228),
+	  SPH_C32(0x7aeadeba), SPH_C32(0xf007f4c1), SPH_C32(0x09300000),
+	  SPH_C32(0x37950000), SPH_C32(0xaec30000), SPH_C32(0x07b65660),
+	  SPH_C32(0x4f213b38), SPH_C32(0xf523ac3a), SPH_C32(0xa79ec618),
+	  SPH_C32(0x97fd141e) },
+	{ SPH_C32(0xedea0000), SPH_C32(0xd95f0000), SPH_C32(0x81a90000),
+	  SPH_C32(0x370a2c80), SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736),
+	  SPH_C32(0x4bc9f29b), SPH_C32(0x3f957917), SPH_C32(0x0c1e0000),
+	  SPH_C32(0xc61f0000), SPH_C32(0x81850000), SPH_C32(0x6b9454e0),
+	  SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1), SPH_C32(0xfcce6baa),
+	  SPH_C32(0x1b7149b0) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0x95140000), SPH_C32(0x29fc0000),
+	  SPH_C32(0xe4da2e60), SPH_C32(0x513c4fd7), SPH_C32(0xf21e87ec),
+	  SPH_C32(0x635cf42f), SPH_C32(0xe8cf3180), SPH_C32(0xfcdb0000),
+	  SPH_C32(0x9f3c0000), SPH_C32(0xc4070000), SPH_C32(0x8a195420),
+	  SPH_C32(0x829707ab), SPH_C32(0x22dc7d28), SPH_C32(0x372e95b6),
+	  SPH_C32(0x4dd6f82f) },
+	{ SPH_C32(0x1d2f0000), SPH_C32(0x807c0000), SPH_C32(0xc42b0000),
+	  SPH_C32(0xd6872c40), SPH_C32(0xb230795e), SPH_C32(0xa85461af),
+	  SPH_C32(0x80290c87), SPH_C32(0x6932c888), SPH_C32(0x1af30000),
+	  SPH_C32(0xd3770000), SPH_C32(0x6c520000), SPH_C32(0x59c956c0),
+	  SPH_C32(0x5af63713), SPH_C32(0xba7bcdf2), SPH_C32(0x1fbb9302),
+	  SPH_C32(0x9a8cb0b8) },
+	{ SPH_C32(0xfb070000), SPH_C32(0xcc370000), SPH_C32(0x6c7e0000),
+	  SPH_C32(0x05572ea0), SPH_C32(0x6a5149e6), SPH_C32(0x30f3d175),
+	  SPH_C32(0xa8bc0a33), SPH_C32(0xbe68801f), SPH_C32(0xea360000),
+	  SPH_C32(0x8a540000), SPH_C32(0x29d00000), SPH_C32(0xb8445600),
+	  SPH_C32(0x619b3122), SPH_C32(0x78969b6b), SPH_C32(0xd45b6d1e),
+	  SPH_C32(0xcc2b0127) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) },
+	{ SPH_C32(0x5e070000), SPH_C32(0xfd670000), SPH_C32(0x988d0000),
+	  SPH_C32(0xc79452e0), SPH_C32(0x1939501a), SPH_C32(0xa9805836),
+	  SPH_C32(0x060db997), SPH_C32(0x824475f9), SPH_C32(0xf2370000),
+	  SPH_C32(0xfba20000), SPH_C32(0xc2bd0000), SPH_C32(0x02e178c0),
+	  SPH_C32(0x257072de), SPH_C32(0xc5d07d4f), SPH_C32(0x0f22cc2b),
+	  SPH_C32(0x29959401) },
+	{ SPH_C32(0x48ea0000), SPH_C32(0xe80f0000), SPH_C32(0x755a0000),
+	  SPH_C32(0xf5c950c0), SPH_C32(0xfa356693), SPH_C32(0xf3cabe75),
+	  SPH_C32(0xe578413f), SPH_C32(0x03b98cf1), SPH_C32(0x141f0000),
+	  SPH_C32(0xb7e90000), SPH_C32(0x6ae80000), SPH_C32(0xd1317a20),
+	  SPH_C32(0xfd114266), SPH_C32(0x5d77cd95), SPH_C32(0x27b7ca9f),
+	  SPH_C32(0xfecfdc96) },
+	{ SPH_C32(0xaec20000), SPH_C32(0xa4440000), SPH_C32(0xdd0f0000),
+	  SPH_C32(0x26195220), SPH_C32(0x2254562b), SPH_C32(0x6b6d0eaf),
+	  SPH_C32(0xcded478b), SPH_C32(0xd4e3c466), SPH_C32(0xe4da0000),
+	  SPH_C32(0xeeca0000), SPH_C32(0x2f6a0000), SPH_C32(0x30bc7ae0),
+	  SPH_C32(0xc67c4457), SPH_C32(0x9f9a9b0c), SPH_C32(0xec573483),
+	  SPH_C32(0xa8686d09) },
+	{ SPH_C32(0x0c1e0000), SPH_C32(0xc61f0000), SPH_C32(0x81850000),
+	  SPH_C32(0x6b9454e0), SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1),
+	  SPH_C32(0xfcce6baa), SPH_C32(0x1b7149b0), SPH_C32(0xe1f40000),
+	  SPH_C32(0x1f400000), SPH_C32(0x002c0000), SPH_C32(0x5c9e7860),
+	  SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87), SPH_C32(0xb7079931),
+	  SPH_C32(0x24e430a7) },
+	{ SPH_C32(0xea360000), SPH_C32(0x8a540000), SPH_C32(0x29d00000),
+	  SPH_C32(0xb8445600), SPH_C32(0x619b3122), SPH_C32(0x78969b6b),
+	  SPH_C32(0xd45b6d1e), SPH_C32(0xcc2b0127), SPH_C32(0x11310000),
+	  SPH_C32(0x46630000), SPH_C32(0x45ae0000), SPH_C32(0xbd1378a0),
+	  SPH_C32(0x0bca78c4), SPH_C32(0x48654a1e), SPH_C32(0x7ce7672d),
+	  SPH_C32(0x72438138) },
+	{ SPH_C32(0xfcdb0000), SPH_C32(0x9f3c0000), SPH_C32(0xc4070000),
+	  SPH_C32(0x8a195420), SPH_C32(0x829707ab), SPH_C32(0x22dc7d28),
+	  SPH_C32(0x372e95b6), SPH_C32(0x4dd6f82f), SPH_C32(0xf7190000),
+	  SPH_C32(0x0a280000), SPH_C32(0xedfb0000), SPH_C32(0x6ec37a40),
+	  SPH_C32(0xd3ab487c), SPH_C32(0xd0c2fac4), SPH_C32(0x54726199),
+	  SPH_C32(0xa519c9af) },
+	{ SPH_C32(0x1af30000), SPH_C32(0xd3770000), SPH_C32(0x6c520000),
+	  SPH_C32(0x59c956c0), SPH_C32(0x5af63713), SPH_C32(0xba7bcdf2),
+	  SPH_C32(0x1fbb9302), SPH_C32(0x9a8cb0b8), SPH_C32(0x07dc0000),
+	  SPH_C32(0x530b0000), SPH_C32(0xa8790000), SPH_C32(0x8f4e7a80),
+	  SPH_C32(0xe8c64e4d), SPH_C32(0x122fac5d), SPH_C32(0x9f929f85),
+	  SPH_C32(0xf3be7830) },
+	{ SPH_C32(0x5b290000), SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000),
+	  SPH_C32(0xabb65060), SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd),
+	  SPH_C32(0x5d5d1425), SPH_C32(0x0ec82857), SPH_C32(0x55c50000),
+	  SPH_C32(0x68730000), SPH_C32(0xb1710000), SPH_C32(0x234e7c80),
+	  SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda), SPH_C32(0x65514db8),
+	  SPH_C32(0x6a8b4479) },
+	{ SPH_C32(0xbd010000), SPH_C32(0x40a60000), SPH_C32(0x1f9e0000),
+	  SPH_C32(0x78665280), SPH_C32(0x37835a00), SPH_C32(0x24356f67),
+	  SPH_C32(0x75c81291), SPH_C32(0xd99260c0), SPH_C32(0xa5000000),
+	  SPH_C32(0x31500000), SPH_C32(0xf4f30000), SPH_C32(0xc2c37c40),
+	  SPH_C32(0x736819fc), SPH_C32(0x99738943), SPH_C32(0xaeb1b3a4),
+	  SPH_C32(0x3c2cf5e6) },
+	{ SPH_C32(0xabec0000), SPH_C32(0x55ce0000), SPH_C32(0xf2490000),
+	  SPH_C32(0x4a3b50a0), SPH_C32(0xd48f6c89), SPH_C32(0x7e7f8924),
+	  SPH_C32(0x96bdea39), SPH_C32(0x586f99c8), SPH_C32(0x43280000),
+	  SPH_C32(0x7d1b0000), SPH_C32(0x5ca60000), SPH_C32(0x11137ea0),
+	  SPH_C32(0xab092944), SPH_C32(0x01d43999), SPH_C32(0x8624b510),
+	  SPH_C32(0xeb76bd71) },
+	{ SPH_C32(0x4dc40000), SPH_C32(0x19850000), SPH_C32(0x5a1c0000),
+	  SPH_C32(0x99eb5240), SPH_C32(0x0cee5c31), SPH_C32(0xe6d839fe),
+	  SPH_C32(0xbe28ec8d), SPH_C32(0x8f35d15f), SPH_C32(0xb3ed0000),
+	  SPH_C32(0x24380000), SPH_C32(0x19240000), SPH_C32(0xf09e7e60),
+	  SPH_C32(0x90642f75), SPH_C32(0xc3396f00), SPH_C32(0x4dc44b0c),
+	  SPH_C32(0xbdd10cee) },
+	{ SPH_C32(0xef180000), SPH_C32(0x7bde0000), SPH_C32(0x06960000),
+	  SPH_C32(0xd4665480), SPH_C32(0x97400b80), SPH_C32(0x6d841ce0),
+	  SPH_C32(0x8f0bc0ac), SPH_C32(0x40a75c89), SPH_C32(0xb6c30000),
+	  SPH_C32(0xd5b20000), SPH_C32(0x36620000), SPH_C32(0x9cbc7ce0),
+	  SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b), SPH_C32(0x1694e6be),
+	  SPH_C32(0x315d5140) },
+	{ SPH_C32(0x09300000), SPH_C32(0x37950000), SPH_C32(0xaec30000),
+	  SPH_C32(0x07b65660), SPH_C32(0x4f213b38), SPH_C32(0xf523ac3a),
+	  SPH_C32(0xa79ec618), SPH_C32(0x97fd141e), SPH_C32(0x46060000),
+	  SPH_C32(0x8c910000), SPH_C32(0x73e00000), SPH_C32(0x7d317c20),
+	  SPH_C32(0x5dd213e6), SPH_C32(0x14c6be12), SPH_C32(0xdd7418a2),
+	  SPH_C32(0x67fae0df) },
+	{ SPH_C32(0x1fdd0000), SPH_C32(0x22fd0000), SPH_C32(0x43140000),
+	  SPH_C32(0x35eb5440), SPH_C32(0xac2d0db1), SPH_C32(0xaf694a79),
+	  SPH_C32(0x44eb3eb0), SPH_C32(0x1600ed16), SPH_C32(0xa02e0000),
+	  SPH_C32(0xc0da0000), SPH_C32(0xdbb50000), SPH_C32(0xaee17ec0),
+	  SPH_C32(0x85b3235e), SPH_C32(0x8c610ec8), SPH_C32(0xf5e11e16),
+	  SPH_C32(0xb0a0a848) },
+	{ SPH_C32(0xf9f50000), SPH_C32(0x6eb60000), SPH_C32(0xeb410000),
+	  SPH_C32(0xe63b56a0), SPH_C32(0x744c3d09), SPH_C32(0x37cefaa3),
+	  SPH_C32(0x6c7e3804), SPH_C32(0xc15aa581), SPH_C32(0x50eb0000),
+	  SPH_C32(0x99f90000), SPH_C32(0x9e370000), SPH_C32(0x4f6c7e00),
+	  SPH_C32(0xbede256f), SPH_C32(0x4e8c5851), SPH_C32(0x3e01e00a),
+	  SPH_C32(0xe60719d7) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0xf8440000), SPH_C32(0x88090000), SPH_C32(0x227b0000),
+	  SPH_C32(0x6f66bae0), SPH_C32(0xf425230e), SPH_C32(0x135a6300),
+	  SPH_C32(0x42991d7c), SPH_C32(0x6ec78a7c), SPH_C32(0x62930000),
+	  SPH_C32(0x47f90000), SPH_C32(0xafd30000), SPH_C32(0x093c30c0),
+	  SPH_C32(0x92585094), SPH_C32(0x29163700), SPH_C32(0x7abcdc48),
+	  SPH_C32(0x656295d0) },
+	{ SPH_C32(0xeea90000), SPH_C32(0x9d610000), SPH_C32(0xcfac0000),
+	  SPH_C32(0x5d3bb8c0), SPH_C32(0x17291587), SPH_C32(0x49108543),
+	  SPH_C32(0xa1ece5d4), SPH_C32(0xef3a7374), SPH_C32(0x84bb0000),
+	  SPH_C32(0x0bb20000), SPH_C32(0x07860000), SPH_C32(0xdaec3220),
+	  SPH_C32(0x4a39602c), SPH_C32(0xb1b187da), SPH_C32(0x5229dafc),
+	  SPH_C32(0xb238dd47) },
+	{ SPH_C32(0x08810000), SPH_C32(0xd12a0000), SPH_C32(0x67f90000),
+	  SPH_C32(0x8eebba20), SPH_C32(0xcf48253f), SPH_C32(0xd1b73599),
+	  SPH_C32(0x8979e360), SPH_C32(0x38603be3), SPH_C32(0x747e0000),
+	  SPH_C32(0x52910000), SPH_C32(0x42040000), SPH_C32(0x3b6132e0),
+	  SPH_C32(0x7154661d), SPH_C32(0x735cd143), SPH_C32(0x99c924e0),
+	  SPH_C32(0xe49f6cd8) },
+	{ SPH_C32(0xaa5d0000), SPH_C32(0xb3710000), SPH_C32(0x3b730000),
+	  SPH_C32(0xc366bce0), SPH_C32(0x54e6728e), SPH_C32(0x5aeb1087),
+	  SPH_C32(0xb85acf41), SPH_C32(0xf7f2b635), SPH_C32(0x71500000),
+	  SPH_C32(0xa31b0000), SPH_C32(0x6d420000), SPH_C32(0x57433060),
+	  SPH_C32(0x878f5cbf), SPH_C32(0x664e56c8), SPH_C32(0xc2998952),
+	  SPH_C32(0x68133176) },
+	{ SPH_C32(0x4c750000), SPH_C32(0xff3a0000), SPH_C32(0x93260000),
+	  SPH_C32(0x10b6be00), SPH_C32(0x8c874236), SPH_C32(0xc24ca05d),
+	  SPH_C32(0x90cfc9f5), SPH_C32(0x20a8fea2), SPH_C32(0x81950000),
+	  SPH_C32(0xfa380000), SPH_C32(0x28c00000), SPH_C32(0xb6ce30a0),
+	  SPH_C32(0xbce25a8e), SPH_C32(0xa4a30051), SPH_C32(0x0979774e),
+	  SPH_C32(0x3eb480e9) },
+	{ SPH_C32(0x5a980000), SPH_C32(0xea520000), SPH_C32(0x7ef10000),
+	  SPH_C32(0x22ebbc20), SPH_C32(0x6f8b74bf), SPH_C32(0x9806461e),
+	  SPH_C32(0x73ba315d), SPH_C32(0xa15507aa), SPH_C32(0x67bd0000),
+	  SPH_C32(0xb6730000), SPH_C32(0x80950000), SPH_C32(0x651e3240),
+	  SPH_C32(0x64836a36), SPH_C32(0x3c04b08b), SPH_C32(0x21ec71fa),
+	  SPH_C32(0xe9eec87e) },
+	{ SPH_C32(0xbcb00000), SPH_C32(0xa6190000), SPH_C32(0xd6a40000),
+	  SPH_C32(0xf13bbec0), SPH_C32(0xb7ea4407), SPH_C32(0x00a1f6c4),
+	  SPH_C32(0x5b2f37e9), SPH_C32(0x760f4f3d), SPH_C32(0x97780000),
+	  SPH_C32(0xef500000), SPH_C32(0xc5170000), SPH_C32(0x84933280),
+	  SPH_C32(0x5fee6c07), SPH_C32(0xfee9e612), SPH_C32(0xea0c8fe6),
+	  SPH_C32(0xbf4979e1) },
+	{ SPH_C32(0xfd6a0000), SPH_C32(0x79830000), SPH_C32(0x0d3d0000),
+	  SPH_C32(0x0344b860), SPH_C32(0x02fe19ac), SPH_C32(0x0648e48b),
+	  SPH_C32(0x19c9b0ce), SPH_C32(0xe24bd7d2), SPH_C32(0xc5610000),
+	  SPH_C32(0xd4280000), SPH_C32(0xdc1f0000), SPH_C32(0x28933480),
+	  SPH_C32(0xff2d3d87), SPH_C32(0xb7589595), SPH_C32(0x10cf5ddb),
+	  SPH_C32(0x267c45a8) },
+	{ SPH_C32(0x1b420000), SPH_C32(0x35c80000), SPH_C32(0xa5680000),
+	  SPH_C32(0xd094ba80), SPH_C32(0xda9f2914), SPH_C32(0x9eef5451),
+	  SPH_C32(0x315cb67a), SPH_C32(0x35119f45), SPH_C32(0x35a40000),
+	  SPH_C32(0x8d0b0000), SPH_C32(0x999d0000), SPH_C32(0xc91e3440),
+	  SPH_C32(0xc4403bb6), SPH_C32(0x75b5c30c), SPH_C32(0xdb2fa3c7),
+	  SPH_C32(0x70dbf437) },
+	{ SPH_C32(0x0daf0000), SPH_C32(0x20a00000), SPH_C32(0x48bf0000),
+	  SPH_C32(0xe2c9b8a0), SPH_C32(0x39931f9d), SPH_C32(0xc4a5b212),
+	  SPH_C32(0xd2294ed2), SPH_C32(0xb4ec664d), SPH_C32(0xd38c0000),
+	  SPH_C32(0xc1400000), SPH_C32(0x31c80000), SPH_C32(0x1ace36a0),
+	  SPH_C32(0x1c210b0e), SPH_C32(0xed1273d6), SPH_C32(0xf3baa573),
+	  SPH_C32(0xa781bca0) },
+	{ SPH_C32(0xeb870000), SPH_C32(0x6ceb0000), SPH_C32(0xe0ea0000),
+	  SPH_C32(0x3119ba40), SPH_C32(0xe1f22f25), SPH_C32(0x5c0202c8),
+	  SPH_C32(0xfabc4866), SPH_C32(0x63b62eda), SPH_C32(0x23490000),
+	  SPH_C32(0x98630000), SPH_C32(0x744a0000), SPH_C32(0xfb433660),
+	  SPH_C32(0x274c0d3f), SPH_C32(0x2fff254f), SPH_C32(0x385a5b6f),
+	  SPH_C32(0xf1260d3f) },
+	{ SPH_C32(0x495b0000), SPH_C32(0x0eb00000), SPH_C32(0xbc600000),
+	  SPH_C32(0x7c94bc80), SPH_C32(0x7a5c7894), SPH_C32(0xd75e27d6),
+	  SPH_C32(0xcb9f6447), SPH_C32(0xac24a30c), SPH_C32(0x26670000),
+	  SPH_C32(0x69e90000), SPH_C32(0x5b0c0000), SPH_C32(0x976134e0),
+	  SPH_C32(0xd197379d), SPH_C32(0x3aeda2c4), SPH_C32(0x630af6dd),
+	  SPH_C32(0x7daa5091) },
+	{ SPH_C32(0xaf730000), SPH_C32(0x42fb0000), SPH_C32(0x14350000),
+	  SPH_C32(0xaf44be60), SPH_C32(0xa23d482c), SPH_C32(0x4ff9970c),
+	  SPH_C32(0xe30a62f3), SPH_C32(0x7b7eeb9b), SPH_C32(0xd6a20000),
+	  SPH_C32(0x30ca0000), SPH_C32(0x1e8e0000), SPH_C32(0x76ec3420),
+	  SPH_C32(0xeafa31ac), SPH_C32(0xf800f45d), SPH_C32(0xa8ea08c1),
+	  SPH_C32(0x2b0de10e) },
+	{ SPH_C32(0xb99e0000), SPH_C32(0x57930000), SPH_C32(0xf9e20000),
+	  SPH_C32(0x9d19bc40), SPH_C32(0x41317ea5), SPH_C32(0x15b3714f),
+	  SPH_C32(0x007f9a5b), SPH_C32(0xfa831293), SPH_C32(0x308a0000),
+	  SPH_C32(0x7c810000), SPH_C32(0xb6db0000), SPH_C32(0xa53c36c0),
+	  SPH_C32(0x329b0114), SPH_C32(0x60a74487), SPH_C32(0x807f0e75),
+	  SPH_C32(0xfc57a999) },
+	{ SPH_C32(0x5fb60000), SPH_C32(0x1bd80000), SPH_C32(0x51b70000),
+	  SPH_C32(0x4ec9bea0), SPH_C32(0x99504e1d), SPH_C32(0x8d14c195),
+	  SPH_C32(0x28ea9cef), SPH_C32(0x2dd95a04), SPH_C32(0xc04f0000),
+	  SPH_C32(0x25a20000), SPH_C32(0xf3590000), SPH_C32(0x44b13600),
+	  SPH_C32(0x09f60725), SPH_C32(0xa24a121e), SPH_C32(0x4b9ff069),
+	  SPH_C32(0xaaf01806) },
+	{ SPH_C32(0x1c9e0000), SPH_C32(0x66c30000), SPH_C32(0x0d110000),
+	  SPH_C32(0x5fdac000), SPH_C32(0x32596759), SPH_C32(0x8cc0f80c),
+	  SPH_C32(0xaece29ff), SPH_C32(0xc6afe775), SPH_C32(0x288b0000),
+	  SPH_C32(0x0d770000), SPH_C32(0x5db60000), SPH_C32(0x1f991800),
+	  SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3), SPH_C32(0x5b06af40),
+	  SPH_C32(0x19e93cbf) },
+	{ SPH_C32(0xfab60000), SPH_C32(0x2a880000), SPH_C32(0xa5440000),
+	  SPH_C32(0x8c0ac2e0), SPH_C32(0xea3857e1), SPH_C32(0x146748d6),
+	  SPH_C32(0x865b2f4b), SPH_C32(0x11f5afe2), SPH_C32(0xd84e0000),
+	  SPH_C32(0x54540000), SPH_C32(0x18340000), SPH_C32(0xfe1418c0),
+	  SPH_C32(0x4d1d44d9), SPH_C32(0x1f0cf43a), SPH_C32(0x90e6515c),
+	  SPH_C32(0x4f4e8d20) },
+	{ SPH_C32(0xec5b0000), SPH_C32(0x3fe00000), SPH_C32(0x48930000),
+	  SPH_C32(0xbe57c0c0), SPH_C32(0x09346168), SPH_C32(0x4e2dae95),
+	  SPH_C32(0x652ed7e3), SPH_C32(0x900856ea), SPH_C32(0x3e660000),
+	  SPH_C32(0x181f0000), SPH_C32(0xb0610000), SPH_C32(0x2dc41a20),
+	  SPH_C32(0x957c7461), SPH_C32(0x87ab44e0), SPH_C32(0xb87357e8),
+	  SPH_C32(0x9814c5b7) },
+	{ SPH_C32(0x0a730000), SPH_C32(0x73ab0000), SPH_C32(0xe0c60000),
+	  SPH_C32(0x6d87c220), SPH_C32(0xd15551d0), SPH_C32(0xd68a1e4f),
+	  SPH_C32(0x4dbbd157), SPH_C32(0x47521e7d), SPH_C32(0xcea30000),
+	  SPH_C32(0x413c0000), SPH_C32(0xf5e30000), SPH_C32(0xcc491ae0),
+	  SPH_C32(0xae117250), SPH_C32(0x45461279), SPH_C32(0x7393a9f4),
+	  SPH_C32(0xceb37428) },
+	{ SPH_C32(0xa8af0000), SPH_C32(0x11f00000), SPH_C32(0xbc4c0000),
+	  SPH_C32(0x200ac4e0), SPH_C32(0x4afb0661), SPH_C32(0x5dd63b51),
+	  SPH_C32(0x7c98fd76), SPH_C32(0x88c093ab), SPH_C32(0xcb8d0000),
+	  SPH_C32(0xb0b60000), SPH_C32(0xdaa50000), SPH_C32(0xa06b1860),
+	  SPH_C32(0x58ca48f2), SPH_C32(0x505495f2), SPH_C32(0x28c30446),
+	  SPH_C32(0x423f2986) },
+	{ SPH_C32(0x4e870000), SPH_C32(0x5dbb0000), SPH_C32(0x14190000),
+	  SPH_C32(0xf3dac600), SPH_C32(0x929a36d9), SPH_C32(0xc5718b8b),
+	  SPH_C32(0x540dfbc2), SPH_C32(0x5f9adb3c), SPH_C32(0x3b480000),
+	  SPH_C32(0xe9950000), SPH_C32(0x9f270000), SPH_C32(0x41e618a0),
+	  SPH_C32(0x63a74ec3), SPH_C32(0x92b9c36b), SPH_C32(0xe323fa5a),
+	  SPH_C32(0x14989819) },
+	{ SPH_C32(0x586a0000), SPH_C32(0x48d30000), SPH_C32(0xf9ce0000),
+	  SPH_C32(0xc187c420), SPH_C32(0x71960050), SPH_C32(0x9f3b6dc8),
+	  SPH_C32(0xb778036a), SPH_C32(0xde672234), SPH_C32(0xdd600000),
+	  SPH_C32(0xa5de0000), SPH_C32(0x37720000), SPH_C32(0x92361a40),
+	  SPH_C32(0xbbc67e7b), SPH_C32(0x0a1e73b1), SPH_C32(0xcbb6fcee),
+	  SPH_C32(0xc3c2d08e) },
+	{ SPH_C32(0xbe420000), SPH_C32(0x04980000), SPH_C32(0x519b0000),
+	  SPH_C32(0x1257c6c0), SPH_C32(0xa9f730e8), SPH_C32(0x079cdd12),
+	  SPH_C32(0x9fed05de), SPH_C32(0x093d6aa3), SPH_C32(0x2da50000),
+	  SPH_C32(0xfcfd0000), SPH_C32(0x72f00000), SPH_C32(0x73bb1a80),
+	  SPH_C32(0x80ab784a), SPH_C32(0xc8f32528), SPH_C32(0x005602f2),
+	  SPH_C32(0x95656111) },
+	{ SPH_C32(0xff980000), SPH_C32(0xdb020000), SPH_C32(0x8a020000),
+	  SPH_C32(0xe028c060), SPH_C32(0x1ce36d43), SPH_C32(0x0175cf5d),
+	  SPH_C32(0xdd0b82f9), SPH_C32(0x9d79f24c), SPH_C32(0x7fbc0000),
+	  SPH_C32(0xc7850000), SPH_C32(0x6bf80000), SPH_C32(0xdfbb1c80),
+	  SPH_C32(0x206829ca), SPH_C32(0x814256af), SPH_C32(0xfa95d0cf),
+	  SPH_C32(0x0c505d58) },
+	{ SPH_C32(0x19b00000), SPH_C32(0x97490000), SPH_C32(0x22570000),
+	  SPH_C32(0x33f8c280), SPH_C32(0xc4825dfb), SPH_C32(0x99d27f87),
+	  SPH_C32(0xf59e844d), SPH_C32(0x4a23badb), SPH_C32(0x8f790000),
+	  SPH_C32(0x9ea60000), SPH_C32(0x2e7a0000), SPH_C32(0x3e361c40),
+	  SPH_C32(0x1b052ffb), SPH_C32(0x43af0036), SPH_C32(0x31752ed3),
+	  SPH_C32(0x5af7ecc7) },
+	{ SPH_C32(0x0f5d0000), SPH_C32(0x82210000), SPH_C32(0xcf800000),
+	  SPH_C32(0x01a5c0a0), SPH_C32(0x278e6b72), SPH_C32(0xc39899c4),
+	  SPH_C32(0x16eb7ce5), SPH_C32(0xcbde43d3), SPH_C32(0x69510000),
+	  SPH_C32(0xd2ed0000), SPH_C32(0x862f0000), SPH_C32(0xede61ea0),
+	  SPH_C32(0xc3641f43), SPH_C32(0xdb08b0ec), SPH_C32(0x19e02867),
+	  SPH_C32(0x8dada450) },
+	{ SPH_C32(0xe9750000), SPH_C32(0xce6a0000), SPH_C32(0x67d50000),
+	  SPH_C32(0xd275c240), SPH_C32(0xffef5bca), SPH_C32(0x5b3f291e),
+	  SPH_C32(0x3e7e7a51), SPH_C32(0x1c840b44), SPH_C32(0x99940000),
+	  SPH_C32(0x8bce0000), SPH_C32(0xc3ad0000), SPH_C32(0x0c6b1e60),
+	  SPH_C32(0xf8091972), SPH_C32(0x19e5e675), SPH_C32(0xd200d67b),
+	  SPH_C32(0xdb0a15cf) },
+	{ SPH_C32(0x4ba90000), SPH_C32(0xac310000), SPH_C32(0x3b5f0000),
+	  SPH_C32(0x9ff8c480), SPH_C32(0x64410c7b), SPH_C32(0xd0630c00),
+	  SPH_C32(0x0f5d5670), SPH_C32(0xd3168692), SPH_C32(0x9cba0000),
+	  SPH_C32(0x7a440000), SPH_C32(0xeceb0000), SPH_C32(0x60491ce0),
+	  SPH_C32(0x0ed223d0), SPH_C32(0x0cf761fe), SPH_C32(0x89507bc9),
+	  SPH_C32(0x57864861) },
+	{ SPH_C32(0xad810000), SPH_C32(0xe07a0000), SPH_C32(0x930a0000),
+	  SPH_C32(0x4c28c660), SPH_C32(0xbc203cc3), SPH_C32(0x48c4bcda),
+	  SPH_C32(0x27c850c4), SPH_C32(0x044cce05), SPH_C32(0x6c7f0000),
+	  SPH_C32(0x23670000), SPH_C32(0xa9690000), SPH_C32(0x81c41c20),
+	  SPH_C32(0x35bf25e1), SPH_C32(0xce1a3767), SPH_C32(0x42b085d5),
+	  SPH_C32(0x0121f9fe) },
+	{ SPH_C32(0xbb6c0000), SPH_C32(0xf5120000), SPH_C32(0x7edd0000),
+	  SPH_C32(0x7e75c440), SPH_C32(0x5f2c0a4a), SPH_C32(0x128e5a99),
+	  SPH_C32(0xc4bda86c), SPH_C32(0x85b1370d), SPH_C32(0x8a570000),
+	  SPH_C32(0x6f2c0000), SPH_C32(0x013c0000), SPH_C32(0x52141ec0),
+	  SPH_C32(0xedde1559), SPH_C32(0x56bd87bd), SPH_C32(0x6a258361),
+	  SPH_C32(0xd67bb169) },
+	{ SPH_C32(0x5d440000), SPH_C32(0xb9590000), SPH_C32(0xd6880000),
+	  SPH_C32(0xada5c6a0), SPH_C32(0x874d3af2), SPH_C32(0x8a29ea43),
+	  SPH_C32(0xec28aed8), SPH_C32(0x52eb7f9a), SPH_C32(0x7a920000),
+	  SPH_C32(0x360f0000), SPH_C32(0x44be0000), SPH_C32(0xb3991e00),
+	  SPH_C32(0xd6b31368), SPH_C32(0x9450d124), SPH_C32(0xa1c57d7d),
+	  SPH_C32(0x80dc00f6) },
+	{ SPH_C32(0xa4b10000), SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000),
+	  SPH_C32(0x4b9e9000), SPH_C32(0xf30107fb), SPH_C32(0xbde710e0),
+	  SPH_C32(0x805696dc), SPH_C32(0x93b1da1b), SPH_C32(0x2a790000),
+	  SPH_C32(0xaff60000), SPH_C32(0xda890000), SPH_C32(0xfcf56000),
+	  SPH_C32(0x686d3607), SPH_C32(0xdadc8975), SPH_C32(0x9fc49d77),
+	  SPH_C32(0x66db1921) },
+	{ SPH_C32(0x42990000), SPH_C32(0x9ba40000), SPH_C32(0x959c0000),
+	  SPH_C32(0x984e92e0), SPH_C32(0x2b603743), SPH_C32(0x2540a03a),
+	  SPH_C32(0xa8c39068), SPH_C32(0x44eb928c), SPH_C32(0xdabc0000),
+	  SPH_C32(0xf6d50000), SPH_C32(0x9f0b0000), SPH_C32(0x1d7860c0),
+	  SPH_C32(0x53003036), SPH_C32(0x1831dfec), SPH_C32(0x5424636b),
+	  SPH_C32(0x307ca8be) },
+	{ SPH_C32(0x54740000), SPH_C32(0x8ecc0000), SPH_C32(0x784b0000),
+	  SPH_C32(0xaa1390c0), SPH_C32(0xc86c01ca), SPH_C32(0x7f0a4679),
+	  SPH_C32(0x4bb668c0), SPH_C32(0xc5166b84), SPH_C32(0x3c940000),
+	  SPH_C32(0xba9e0000), SPH_C32(0x375e0000), SPH_C32(0xcea86220),
+	  SPH_C32(0x8b61008e), SPH_C32(0x80966f36), SPH_C32(0x7cb165df),
+	  SPH_C32(0xe726e029) },
+	{ SPH_C32(0xb25c0000), SPH_C32(0xc2870000), SPH_C32(0xd01e0000),
+	  SPH_C32(0x79c39220), SPH_C32(0x100d3172), SPH_C32(0xe7adf6a3),
+	  SPH_C32(0x63236e74), SPH_C32(0x124c2313), SPH_C32(0xcc510000),
+	  SPH_C32(0xe3bd0000), SPH_C32(0x72dc0000), SPH_C32(0x2f2562e0),
+	  SPH_C32(0xb00c06bf), SPH_C32(0x427b39af), SPH_C32(0xb7519bc3),
+	  SPH_C32(0xb18151b6) },
+	{ SPH_C32(0x10800000), SPH_C32(0xa0dc0000), SPH_C32(0x8c940000),
+	  SPH_C32(0x344e94e0), SPH_C32(0x8ba366c3), SPH_C32(0x6cf1d3bd),
+	  SPH_C32(0x52004255), SPH_C32(0xdddeaec5), SPH_C32(0xc97f0000),
+	  SPH_C32(0x12370000), SPH_C32(0x5d9a0000), SPH_C32(0x43076060),
+	  SPH_C32(0x46d73c1d), SPH_C32(0x5769be24), SPH_C32(0xec013671),
+	  SPH_C32(0x3d0d0c18) },
+	{ SPH_C32(0xf6a80000), SPH_C32(0xec970000), SPH_C32(0x24c10000),
+	  SPH_C32(0xe79e9600), SPH_C32(0x53c2567b), SPH_C32(0xf4566367),
+	  SPH_C32(0x7a9544e1), SPH_C32(0x0a84e652), SPH_C32(0x39ba0000),
+	  SPH_C32(0x4b140000), SPH_C32(0x18180000), SPH_C32(0xa28a60a0),
+	  SPH_C32(0x7dba3a2c), SPH_C32(0x9584e8bd), SPH_C32(0x27e1c86d),
+	  SPH_C32(0x6baabd87) },
+	{ SPH_C32(0xe0450000), SPH_C32(0xf9ff0000), SPH_C32(0xc9160000),
+	  SPH_C32(0xd5c39420), SPH_C32(0xb0ce60f2), SPH_C32(0xae1c8524),
+	  SPH_C32(0x99e0bc49), SPH_C32(0x8b791f5a), SPH_C32(0xdf920000),
+	  SPH_C32(0x075f0000), SPH_C32(0xb04d0000), SPH_C32(0x715a6240),
+	  SPH_C32(0xa5db0a94), SPH_C32(0x0d235867), SPH_C32(0x0f74ced9),
+	  SPH_C32(0xbcf0f510) },
+	{ SPH_C32(0x066d0000), SPH_C32(0xb5b40000), SPH_C32(0x61430000),
+	  SPH_C32(0x061396c0), SPH_C32(0x68af504a), SPH_C32(0x36bb35fe),
+	  SPH_C32(0xb175bafd), SPH_C32(0x5c2357cd), SPH_C32(0x2f570000),
+	  SPH_C32(0x5e7c0000), SPH_C32(0xf5cf0000), SPH_C32(0x90d76280),
+	  SPH_C32(0x9eb60ca5), SPH_C32(0xcfce0efe), SPH_C32(0xc49430c5),
+	  SPH_C32(0xea57448f) },
+	{ SPH_C32(0x47b70000), SPH_C32(0x6a2e0000), SPH_C32(0xbada0000),
+	  SPH_C32(0xf46c9060), SPH_C32(0xddbb0de1), SPH_C32(0x305227b1),
+	  SPH_C32(0xf3933dda), SPH_C32(0xc867cf22), SPH_C32(0x7d4e0000),
+	  SPH_C32(0x65040000), SPH_C32(0xecc70000), SPH_C32(0x3cd76480),
+	  SPH_C32(0x3e755d25), SPH_C32(0x867f7d79), SPH_C32(0x3e57e2f8),
+	  SPH_C32(0x736278c6) },
+	{ SPH_C32(0xa19f0000), SPH_C32(0x26650000), SPH_C32(0x128f0000),
+	  SPH_C32(0x27bc9280), SPH_C32(0x05da3d59), SPH_C32(0xa8f5976b),
+	  SPH_C32(0xdb063b6e), SPH_C32(0x1f3d87b5), SPH_C32(0x8d8b0000),
+	  SPH_C32(0x3c270000), SPH_C32(0xa9450000), SPH_C32(0xdd5a6440),
+	  SPH_C32(0x05185b14), SPH_C32(0x44922be0), SPH_C32(0xf5b71ce4),
+	  SPH_C32(0x25c5c959) },
+	{ SPH_C32(0xb7720000), SPH_C32(0x330d0000), SPH_C32(0xff580000),
+	  SPH_C32(0x15e190a0), SPH_C32(0xe6d60bd0), SPH_C32(0xf2bf7128),
+	  SPH_C32(0x3873c3c6), SPH_C32(0x9ec07ebd), SPH_C32(0x6ba30000),
+	  SPH_C32(0x706c0000), SPH_C32(0x01100000), SPH_C32(0x0e8a66a0),
+	  SPH_C32(0xdd796bac), SPH_C32(0xdc359b3a), SPH_C32(0xdd221a50),
+	  SPH_C32(0xf29f81ce) },
+	{ SPH_C32(0x515a0000), SPH_C32(0x7f460000), SPH_C32(0x570d0000),
+	  SPH_C32(0xc6319240), SPH_C32(0x3eb73b68), SPH_C32(0x6a18c1f2),
+	  SPH_C32(0x10e6c572), SPH_C32(0x499a362a), SPH_C32(0x9b660000),
+	  SPH_C32(0x294f0000), SPH_C32(0x44920000), SPH_C32(0xef076660),
+	  SPH_C32(0xe6146d9d), SPH_C32(0x1ed8cda3), SPH_C32(0x16c2e44c),
+	  SPH_C32(0xa4383051) },
+	{ SPH_C32(0xf3860000), SPH_C32(0x1d1d0000), SPH_C32(0x0b870000),
+	  SPH_C32(0x8bbc9480), SPH_C32(0xa5196cd9), SPH_C32(0xe144e4ec),
+	  SPH_C32(0x21c5e953), SPH_C32(0x8608bbfc), SPH_C32(0x9e480000),
+	  SPH_C32(0xd8c50000), SPH_C32(0x6bd40000), SPH_C32(0x832564e0),
+	  SPH_C32(0x10cf573f), SPH_C32(0x0bca4a28), SPH_C32(0x4d9249fe),
+	  SPH_C32(0x28b46dff) },
+	{ SPH_C32(0x15ae0000), SPH_C32(0x51560000), SPH_C32(0xa3d20000),
+	  SPH_C32(0x586c9660), SPH_C32(0x7d785c61), SPH_C32(0x79e35436),
+	  SPH_C32(0x0950efe7), SPH_C32(0x5152f36b), SPH_C32(0x6e8d0000),
+	  SPH_C32(0x81e60000), SPH_C32(0x2e560000), SPH_C32(0x62a86420),
+	  SPH_C32(0x2ba2510e), SPH_C32(0xc9271cb1), SPH_C32(0x8672b7e2),
+	  SPH_C32(0x7e13dc60) },
+	{ SPH_C32(0x03430000), SPH_C32(0x443e0000), SPH_C32(0x4e050000),
+	  SPH_C32(0x6a319440), SPH_C32(0x9e746ae8), SPH_C32(0x23a9b275),
+	  SPH_C32(0xea25174f), SPH_C32(0xd0af0a63), SPH_C32(0x88a50000),
+	  SPH_C32(0xcdad0000), SPH_C32(0x86030000), SPH_C32(0xb17866c0),
+	  SPH_C32(0xf3c361b6), SPH_C32(0x5180ac6b), SPH_C32(0xaee7b156),
+	  SPH_C32(0xa94994f7) },
+	{ SPH_C32(0xe56b0000), SPH_C32(0x08750000), SPH_C32(0xe6500000),
+	  SPH_C32(0xb9e196a0), SPH_C32(0x46155a50), SPH_C32(0xbb0e02af),
+	  SPH_C32(0xc2b011fb), SPH_C32(0x07f542f4), SPH_C32(0x78600000),
+	  SPH_C32(0x948e0000), SPH_C32(0xc3810000), SPH_C32(0x50f56600),
+	  SPH_C32(0xc8ae6787), SPH_C32(0x936dfaf2), SPH_C32(0x65074f4a),
+	  SPH_C32(0xffee2568) },
+	{ SPH_C32(0xa6430000), SPH_C32(0x756e0000), SPH_C32(0xbaf60000),
+	  SPH_C32(0xa8f2e800), SPH_C32(0xed1c7314), SPH_C32(0xbada3b36),
+	  SPH_C32(0x4494a4eb), SPH_C32(0xec83ff85), SPH_C32(0x90a40000),
+	  SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000), SPH_C32(0x0bdd4800),
+	  SPH_C32(0xb728224a), SPH_C32(0xecc64a4f), SPH_C32(0x759e1063),
+	  SPH_C32(0x4cf701d1) },
+	{ SPH_C32(0x406b0000), SPH_C32(0x39250000), SPH_C32(0x12a30000),
+	  SPH_C32(0x7b22eae0), SPH_C32(0x357d43ac), SPH_C32(0x227d8bec),
+	  SPH_C32(0x6c01a25f), SPH_C32(0x3bd9b712), SPH_C32(0x60610000),
+	  SPH_C32(0xe5780000), SPH_C32(0x28ec0000), SPH_C32(0xea5048c0),
+	  SPH_C32(0x8c45247b), SPH_C32(0x2e2b1cd6), SPH_C32(0xbe7eee7f),
+	  SPH_C32(0x1a50b04e) },
+	{ SPH_C32(0x56860000), SPH_C32(0x2c4d0000), SPH_C32(0xff740000),
+	  SPH_C32(0x497fe8c0), SPH_C32(0xd6717525), SPH_C32(0x78376daf),
+	  SPH_C32(0x8f745af7), SPH_C32(0xba244e1a), SPH_C32(0x86490000),
+	  SPH_C32(0xa9330000), SPH_C32(0x80b90000), SPH_C32(0x39804a20),
+	  SPH_C32(0x542414c3), SPH_C32(0xb68cac0c), SPH_C32(0x96ebe8cb),
+	  SPH_C32(0xcd0af8d9) },
+	{ SPH_C32(0xb0ae0000), SPH_C32(0x60060000), SPH_C32(0x57210000),
+	  SPH_C32(0x9aafea20), SPH_C32(0x0e10459d), SPH_C32(0xe090dd75),
+	  SPH_C32(0xa7e15c43), SPH_C32(0x6d7e068d), SPH_C32(0x768c0000),
+	  SPH_C32(0xf0100000), SPH_C32(0xc53b0000), SPH_C32(0xd80d4ae0),
+	  SPH_C32(0x6f4912f2), SPH_C32(0x7461fa95), SPH_C32(0x5d0b16d7),
+	  SPH_C32(0x9bad4946) },
+	{ SPH_C32(0x12720000), SPH_C32(0x025d0000), SPH_C32(0x0bab0000),
+	  SPH_C32(0xd722ece0), SPH_C32(0x95be122c), SPH_C32(0x6bccf86b),
+	  SPH_C32(0x96c27062), SPH_C32(0xa2ec8b5b), SPH_C32(0x73a20000),
+	  SPH_C32(0x019a0000), SPH_C32(0xea7d0000), SPH_C32(0xb42f4860),
+	  SPH_C32(0x99922850), SPH_C32(0x61737d1e), SPH_C32(0x065bbb65),
+	  SPH_C32(0x172114e8) },
+	{ SPH_C32(0xf45a0000), SPH_C32(0x4e160000), SPH_C32(0xa3fe0000),
+	  SPH_C32(0x04f2ee00), SPH_C32(0x4ddf2294), SPH_C32(0xf36b48b1),
+	  SPH_C32(0xbe5776d6), SPH_C32(0x75b6c3cc), SPH_C32(0x83670000),
+	  SPH_C32(0x58b90000), SPH_C32(0xafff0000), SPH_C32(0x55a248a0),
+	  SPH_C32(0xa2ff2e61), SPH_C32(0xa39e2b87), SPH_C32(0xcdbb4579),
+	  SPH_C32(0x4186a577) },
+	{ SPH_C32(0xe2b70000), SPH_C32(0x5b7e0000), SPH_C32(0x4e290000),
+	  SPH_C32(0x36afec20), SPH_C32(0xaed3141d), SPH_C32(0xa921aef2),
+	  SPH_C32(0x5d228e7e), SPH_C32(0xf44b3ac4), SPH_C32(0x654f0000),
+	  SPH_C32(0x14f20000), SPH_C32(0x07aa0000), SPH_C32(0x86724a40),
+	  SPH_C32(0x7a9e1ed9), SPH_C32(0x3b399b5d), SPH_C32(0xe52e43cd),
+	  SPH_C32(0x96dcede0) },
+	{ SPH_C32(0x049f0000), SPH_C32(0x17350000), SPH_C32(0xe67c0000),
+	  SPH_C32(0xe57feec0), SPH_C32(0x76b224a5), SPH_C32(0x31861e28),
+	  SPH_C32(0x75b788ca), SPH_C32(0x23117253), SPH_C32(0x958a0000),
+	  SPH_C32(0x4dd10000), SPH_C32(0x42280000), SPH_C32(0x67ff4a80),
+	  SPH_C32(0x41f318e8), SPH_C32(0xf9d4cdc4), SPH_C32(0x2ecebdd1),
+	  SPH_C32(0xc07b5c7f) },
+	{ SPH_C32(0x45450000), SPH_C32(0xc8af0000), SPH_C32(0x3de50000),
+	  SPH_C32(0x1700e860), SPH_C32(0xc3a6790e), SPH_C32(0x376f0c67),
+	  SPH_C32(0x37510fed), SPH_C32(0xb755eabc), SPH_C32(0xc7930000),
+	  SPH_C32(0x76a90000), SPH_C32(0x5b200000), SPH_C32(0xcbff4c80),
+	  SPH_C32(0xe1304968), SPH_C32(0xb065be43), SPH_C32(0xd40d6fec),
+	  SPH_C32(0x594e6036) },
+	{ SPH_C32(0xa36d0000), SPH_C32(0x84e40000), SPH_C32(0x95b00000),
+	  SPH_C32(0xc4d0ea80), SPH_C32(0x1bc749b6), SPH_C32(0xafc8bcbd),
+	  SPH_C32(0x1fc40959), SPH_C32(0x600fa22b), SPH_C32(0x37560000),
+	  SPH_C32(0x2f8a0000), SPH_C32(0x1ea20000), SPH_C32(0x2a724c40),
+	  SPH_C32(0xda5d4f59), SPH_C32(0x7288e8da), SPH_C32(0x1fed91f0),
+	  SPH_C32(0x0fe9d1a9) },
+	{ SPH_C32(0xb5800000), SPH_C32(0x918c0000), SPH_C32(0x78670000),
+	  SPH_C32(0xf68de8a0), SPH_C32(0xf8cb7f3f), SPH_C32(0xf5825afe),
+	  SPH_C32(0xfcb1f1f1), SPH_C32(0xe1f25b23), SPH_C32(0xd17e0000),
+	  SPH_C32(0x63c10000), SPH_C32(0xb6f70000), SPH_C32(0xf9a24ea0),
+	  SPH_C32(0x023c7fe1), SPH_C32(0xea2f5800), SPH_C32(0x37789744),
+	  SPH_C32(0xd8b3993e) },
+	{ SPH_C32(0x53a80000), SPH_C32(0xddc70000), SPH_C32(0xd0320000),
+	  SPH_C32(0x255dea40), SPH_C32(0x20aa4f87), SPH_C32(0x6d25ea24),
+	  SPH_C32(0xd424f745), SPH_C32(0x36a813b4), SPH_C32(0x21bb0000),
+	  SPH_C32(0x3ae20000), SPH_C32(0xf3750000), SPH_C32(0x182f4e60),
+	  SPH_C32(0x395179d0), SPH_C32(0x28c20e99), SPH_C32(0xfc986958),
+	  SPH_C32(0x8e1428a1) },
+	{ SPH_C32(0xf1740000), SPH_C32(0xbf9c0000), SPH_C32(0x8cb80000),
+	  SPH_C32(0x68d0ec80), SPH_C32(0xbb041836), SPH_C32(0xe679cf3a),
+	  SPH_C32(0xe507db64), SPH_C32(0xf93a9e62), SPH_C32(0x24950000),
+	  SPH_C32(0xcb680000), SPH_C32(0xdc330000), SPH_C32(0x740d4ce0),
+	  SPH_C32(0xcf8a4372), SPH_C32(0x3dd08912), SPH_C32(0xa7c8c4ea),
+	  SPH_C32(0x0298750f) },
+	{ SPH_C32(0x175c0000), SPH_C32(0xf3d70000), SPH_C32(0x24ed0000),
+	  SPH_C32(0xbb00ee60), SPH_C32(0x6365288e), SPH_C32(0x7ede7fe0),
+	  SPH_C32(0xcd92ddd0), SPH_C32(0x2e60d6f5), SPH_C32(0xd4500000),
+	  SPH_C32(0x924b0000), SPH_C32(0x99b10000), SPH_C32(0x95804c20),
+	  SPH_C32(0xf4e74543), SPH_C32(0xff3ddf8b), SPH_C32(0x6c283af6),
+	  SPH_C32(0x543fc490) },
+	{ SPH_C32(0x01b10000), SPH_C32(0xe6bf0000), SPH_C32(0xc93a0000),
+	  SPH_C32(0x895dec40), SPH_C32(0x80691e07), SPH_C32(0x249499a3),
+	  SPH_C32(0x2ee72578), SPH_C32(0xaf9d2ffd), SPH_C32(0x32780000),
+	  SPH_C32(0xde000000), SPH_C32(0x31e40000), SPH_C32(0x46504ec0),
+	  SPH_C32(0x2c8675fb), SPH_C32(0x679a6f51), SPH_C32(0x44bd3c42),
+	  SPH_C32(0x83658c07) },
+	{ SPH_C32(0xe7990000), SPH_C32(0xaaf40000), SPH_C32(0x616f0000),
+	  SPH_C32(0x5a8deea0), SPH_C32(0x58082ebf), SPH_C32(0xbc332979),
+	  SPH_C32(0x067223cc), SPH_C32(0x78c7676a), SPH_C32(0xc2bd0000),
+	  SPH_C32(0x87230000), SPH_C32(0x74660000), SPH_C32(0xa7dd4e00),
+	  SPH_C32(0x17eb73ca), SPH_C32(0xa57739c8), SPH_C32(0x8f5dc25e),
+	  SPH_C32(0xd5c23d98) }
+};
+
+static const sph_u32 T512_56[128][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0xf7720000), SPH_C32(0xc0bd0000), SPH_C32(0x1fb30000),
+	  SPH_C32(0x63290011), SPH_C32(0x5818133c), SPH_C32(0x0c89e4c4),
+	  SPH_C32(0xef781db7), SPH_C32(0x54235b69), SPH_C32(0xaba30000),
+	  SPH_C32(0xe1450000), SPH_C32(0x755b0000), SPH_C32(0x173b0004),
+	  SPH_C32(0x17e2d61f), SPH_C32(0xdd408a12), SPH_C32(0xb6c9d98b),
+	  SPH_C32(0x82579860) },
+	{ SPH_C32(0x5e3b0000), SPH_C32(0xb1810000), SPH_C32(0xae550000),
+	  SPH_C32(0xabff0018), SPH_C32(0xa8ae0be7), SPH_C32(0xafb22060),
+	  SPH_C32(0x5228f45e), SPH_C32(0xddcb4512), SPH_C32(0x926c0000),
+	  SPH_C32(0xa3cd0000), SPH_C32(0x8d860000), SPH_C32(0x7cff0002),
+	  SPH_C32(0x8144eada), SPH_C32(0xf3593f8b), SPH_C32(0x93c46932),
+	  SPH_C32(0xc51c1249) },
+	{ SPH_C32(0xf6e10000), SPH_C32(0x273f0000), SPH_C32(0xf2480000),
+	  SPH_C32(0xac25001a), SPH_C32(0xd5c89e64), SPH_C32(0xb02a50ea),
+	  SPH_C32(0xe94e7c56), SPH_C32(0x074cc512), SPH_C32(0x398b0000),
+	  SPH_C32(0x3dc00000), SPH_C32(0x22a10000), SPH_C32(0x41e70007),
+	  SPH_C32(0xad0bf509), SPH_C32(0x87af291e), SPH_C32(0x26072ed9),
+	  SPH_C32(0xf941edb7) },
+	{ SPH_C32(0xcd800000), SPH_C32(0x8a860000), SPH_C32(0x14540000),
+	  SPH_C32(0x322f0010), SPH_C32(0x9f97a5a9), SPH_C32(0x49fe3742),
+	  SPH_C32(0xc4d062ed), SPH_C32(0xf5b2aebe), SPH_C32(0x93ff0000),
+	  SPH_C32(0x444f0000), SPH_C32(0x607d0000), SPH_C32(0xb3f30009),
+	  SPH_C32(0x0c946782), SPH_C32(0x4ffa8ba5), SPH_C32(0x95f208d3),
+	  SPH_C32(0x96738c32) },
+	{ SPH_C32(0x655a0000), SPH_C32(0x1c380000), SPH_C32(0x48490000),
+	  SPH_C32(0x35f50012), SPH_C32(0xe2f1302a), SPH_C32(0x566647c8),
+	  SPH_C32(0x7fb6eae5), SPH_C32(0x2f352ebe), SPH_C32(0x38180000),
+	  SPH_C32(0xda420000), SPH_C32(0xcf5a0000), SPH_C32(0x8eeb000c),
+	  SPH_C32(0x20db7851), SPH_C32(0x3b0c9d30), SPH_C32(0x20314f38),
+	  SPH_C32(0xaa2e73cc) },
+	{ SPH_C32(0xcc130000), SPH_C32(0x6d040000), SPH_C32(0xf9af0000),
+	  SPH_C32(0xfd23001b), SPH_C32(0x124728f1), SPH_C32(0xf55d836c),
+	  SPH_C32(0xc2e6030c), SPH_C32(0xa6dd30c5), SPH_C32(0x01d70000),
+	  SPH_C32(0x98ca0000), SPH_C32(0x37870000), SPH_C32(0xe52f000a),
+	  SPH_C32(0xb67d4494), SPH_C32(0x151528a9), SPH_C32(0x053cff81),
+	  SPH_C32(0xed65f9e5) },
+	{ SPH_C32(0x64c90000), SPH_C32(0xfbba0000), SPH_C32(0xa5b20000),
+	  SPH_C32(0xfaf90019), SPH_C32(0x6f21bd72), SPH_C32(0xeac5f3e6),
+	  SPH_C32(0x79808b04), SPH_C32(0x7c5ab0c5), SPH_C32(0xaa300000),
+	  SPH_C32(0x06c70000), SPH_C32(0x98a00000), SPH_C32(0xd837000f),
+	  SPH_C32(0x9a325b47), SPH_C32(0x61e33e3c), SPH_C32(0xb0ffb86a),
+	  SPH_C32(0xd138061b) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0xa89e0000), SPH_C32(0xe9f60000), SPH_C32(0x86610000),
+	  SPH_C32(0x2df90003), SPH_C32(0x46cb5c4f), SPH_C32(0xb62eec0d),
+	  SPH_C32(0xb86c1668), SPH_C32(0x648de79e), SPH_C32(0xf40b0000),
+	  SPH_C32(0xb7460000), SPH_C32(0x36f50000), SPH_C32(0x73c80017),
+	  SPH_C32(0x329c50a0), SPH_C32(0xce511e5c), SPH_C32(0xe2d74c34),
+	  SPH_C32(0x0cf34309) },
+	{ SPH_C32(0x01d70000), SPH_C32(0x98ca0000), SPH_C32(0x37870000),
+	  SPH_C32(0xe52f000a), SPH_C32(0xb67d4494), SPH_C32(0x151528a9),
+	  SPH_C32(0x053cff81), SPH_C32(0xed65f9e5), SPH_C32(0xcdc40000),
+	  SPH_C32(0xf5ce0000), SPH_C32(0xce280000), SPH_C32(0x180c0011),
+	  SPH_C32(0xa43a6c65), SPH_C32(0xe048abc5), SPH_C32(0xc7dafc8d),
+	  SPH_C32(0x4bb8c920) },
+	{ SPH_C32(0xa90d0000), SPH_C32(0x0e740000), SPH_C32(0x6b9a0000),
+	  SPH_C32(0xe2f50008), SPH_C32(0xcb1bd117), SPH_C32(0x0a8d5823),
+	  SPH_C32(0xbe5a7789), SPH_C32(0x37e279e5), SPH_C32(0x66230000),
+	  SPH_C32(0x6bc30000), SPH_C32(0x610f0000), SPH_C32(0x25140014),
+	  SPH_C32(0x887573b6), SPH_C32(0x94bebd50), SPH_C32(0x7219bb66),
+	  SPH_C32(0x77e536de) },
+	{ SPH_C32(0x926c0000), SPH_C32(0xa3cd0000), SPH_C32(0x8d860000),
+	  SPH_C32(0x7cff0002), SPH_C32(0x8144eada), SPH_C32(0xf3593f8b),
+	  SPH_C32(0x93c46932), SPH_C32(0xc51c1249), SPH_C32(0xcc570000),
+	  SPH_C32(0x124c0000), SPH_C32(0x23d30000), SPH_C32(0xd700001a),
+	  SPH_C32(0x29eae13d), SPH_C32(0x5ceb1feb), SPH_C32(0xc1ec9d6c),
+	  SPH_C32(0x18d7575b) },
+	{ SPH_C32(0x3ab60000), SPH_C32(0x35730000), SPH_C32(0xd19b0000),
+	  SPH_C32(0x7b250000), SPH_C32(0xfc227f59), SPH_C32(0xecc14f01),
+	  SPH_C32(0x28a2e13a), SPH_C32(0x1f9b9249), SPH_C32(0x67b00000),
+	  SPH_C32(0x8c410000), SPH_C32(0x8cf40000), SPH_C32(0xea18001f),
+	  SPH_C32(0x05a5feee), SPH_C32(0x281d097e), SPH_C32(0x742fda87),
+	  SPH_C32(0x248aa8a5) },
+	{ SPH_C32(0x93ff0000), SPH_C32(0x444f0000), SPH_C32(0x607d0000),
+	  SPH_C32(0xb3f30009), SPH_C32(0x0c946782), SPH_C32(0x4ffa8ba5),
+	  SPH_C32(0x95f208d3), SPH_C32(0x96738c32), SPH_C32(0x5e7f0000),
+	  SPH_C32(0xcec90000), SPH_C32(0x74290000), SPH_C32(0x81dc0019),
+	  SPH_C32(0x9303c22b), SPH_C32(0x0604bce7), SPH_C32(0x51226a3e),
+	  SPH_C32(0x63c1228c) },
+	{ SPH_C32(0x3b250000), SPH_C32(0xd2f10000), SPH_C32(0x3c600000),
+	  SPH_C32(0xb429000b), SPH_C32(0x71f2f201), SPH_C32(0x5062fb2f),
+	  SPH_C32(0x2e9480db), SPH_C32(0x4cf40c32), SPH_C32(0xf5980000),
+	  SPH_C32(0x50c40000), SPH_C32(0xdb0e0000), SPH_C32(0xbcc4001c),
+	  SPH_C32(0xbf4cddf8), SPH_C32(0x72f2aa72), SPH_C32(0xe4e12dd5),
+	  SPH_C32(0x5f9cdd72) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0xf7360000), SPH_C32(0xbff50000), SPH_C32(0xc5cf0000),
+	  SPH_C32(0x490a0010), SPH_C32(0x63b5daf0), SPH_C32(0xa53f7843),
+	  SPH_C32(0xec7283d7), SPH_C32(0xea293cf7), SPH_C32(0xf44f0000),
+	  SPH_C32(0xc80e0000), SPH_C32(0xec890000), SPH_C32(0x59eb0016),
+	  SPH_C32(0x0931996c), SPH_C32(0x67e782db), SPH_C32(0xe1ddd254),
+	  SPH_C32(0xb2f92497) },
+	{ SPH_C32(0x5e7f0000), SPH_C32(0xcec90000), SPH_C32(0x74290000),
+	  SPH_C32(0x81dc0019), SPH_C32(0x9303c22b), SPH_C32(0x0604bce7),
+	  SPH_C32(0x51226a3e), SPH_C32(0x63c1228c), SPH_C32(0xcd800000),
+	  SPH_C32(0x8a860000), SPH_C32(0x14540000), SPH_C32(0x322f0010),
+	  SPH_C32(0x9f97a5a9), SPH_C32(0x49fe3742), SPH_C32(0xc4d062ed),
+	  SPH_C32(0xf5b2aebe) },
+	{ SPH_C32(0xf6a50000), SPH_C32(0x58770000), SPH_C32(0x28340000),
+	  SPH_C32(0x8606001b), SPH_C32(0xee6557a8), SPH_C32(0x199ccc6d),
+	  SPH_C32(0xea44e236), SPH_C32(0xb946a28c), SPH_C32(0x66670000),
+	  SPH_C32(0x148b0000), SPH_C32(0xbb730000), SPH_C32(0x0f370015),
+	  SPH_C32(0xb3d8ba7a), SPH_C32(0x3d0821d7), SPH_C32(0x71132506),
+	  SPH_C32(0xc9ef5140) },
+	{ SPH_C32(0xcdc40000), SPH_C32(0xf5ce0000), SPH_C32(0xce280000),
+	  SPH_C32(0x180c0011), SPH_C32(0xa43a6c65), SPH_C32(0xe048abc5),
+	  SPH_C32(0xc7dafc8d), SPH_C32(0x4bb8c920), SPH_C32(0xcc130000),
+	  SPH_C32(0x6d040000), SPH_C32(0xf9af0000), SPH_C32(0xfd23001b),
+	  SPH_C32(0x124728f1), SPH_C32(0xf55d836c), SPH_C32(0xc2e6030c),
+	  SPH_C32(0xa6dd30c5) },
+	{ SPH_C32(0x651e0000), SPH_C32(0x63700000), SPH_C32(0x92350000),
+	  SPH_C32(0x1fd60013), SPH_C32(0xd95cf9e6), SPH_C32(0xffd0db4f),
+	  SPH_C32(0x7cbc7485), SPH_C32(0x913f4920), SPH_C32(0x67f40000),
+	  SPH_C32(0xf3090000), SPH_C32(0x56880000), SPH_C32(0xc03b001e),
+	  SPH_C32(0x3e083722), SPH_C32(0x81ab95f9), SPH_C32(0x772544e7),
+	  SPH_C32(0x9a80cf3b) },
+	{ SPH_C32(0xcc570000), SPH_C32(0x124c0000), SPH_C32(0x23d30000),
+	  SPH_C32(0xd700001a), SPH_C32(0x29eae13d), SPH_C32(0x5ceb1feb),
+	  SPH_C32(0xc1ec9d6c), SPH_C32(0x18d7575b), SPH_C32(0x5e3b0000),
+	  SPH_C32(0xb1810000), SPH_C32(0xae550000), SPH_C32(0xabff0018),
+	  SPH_C32(0xa8ae0be7), SPH_C32(0xafb22060), SPH_C32(0x5228f45e),
+	  SPH_C32(0xddcb4512) },
+	{ SPH_C32(0x648d0000), SPH_C32(0x84f20000), SPH_C32(0x7fce0000),
+	  SPH_C32(0xd0da0018), SPH_C32(0x548c74be), SPH_C32(0x43736f61),
+	  SPH_C32(0x7a8a1564), SPH_C32(0xc250d75b), SPH_C32(0xf5dc0000),
+	  SPH_C32(0x2f8c0000), SPH_C32(0x01720000), SPH_C32(0x96e7001d),
+	  SPH_C32(0x84e11434), SPH_C32(0xdb4436f5), SPH_C32(0xe7ebb3b5),
+	  SPH_C32(0xe196baec) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0x46490000), SPH_C32(0x40b90000), SPH_C32(0xcedc0000),
+	  SPH_C32(0x2c4201e2), SPH_C32(0xe937bdff), SPH_C32(0x24f48bdd),
+	  SPH_C32(0xfe57ab7c), SPH_C32(0xfa98ea64), SPH_C32(0xd0cf0000),
+	  SPH_C32(0xc94f0000), SPH_C32(0x06c20000), SPH_C32(0x5e5b00a5),
+	  SPH_C32(0xb2945bfc), SPH_C32(0x196f832e), SPH_C32(0x923b7ce8),
+	  SPH_C32(0xfba29f0e) },
+	{ SPH_C32(0xef000000), SPH_C32(0x31850000), SPH_C32(0x7f3a0000),
+	  SPH_C32(0xe49401eb), SPH_C32(0x1981a524), SPH_C32(0x87cf4f79),
+	  SPH_C32(0x43074295), SPH_C32(0x7370f41f), SPH_C32(0xe9000000),
+	  SPH_C32(0x8bc70000), SPH_C32(0xfe1f0000), SPH_C32(0x359f00a3),
+	  SPH_C32(0x24326739), SPH_C32(0x377636b7), SPH_C32(0xb736cc51),
+	  SPH_C32(0xbce91527) },
+	{ SPH_C32(0x47da0000), SPH_C32(0xa73b0000), SPH_C32(0x23270000),
+	  SPH_C32(0xe34e01e9), SPH_C32(0x64e730a7), SPH_C32(0x98573ff3),
+	  SPH_C32(0xf861ca9d), SPH_C32(0xa9f7741f), SPH_C32(0x42e70000),
+	  SPH_C32(0x15ca0000), SPH_C32(0x51380000), SPH_C32(0x088700a6),
+	  SPH_C32(0x087d78ea), SPH_C32(0x43802022), SPH_C32(0x02f58bba),
+	  SPH_C32(0x80b4ead9) },
+	{ SPH_C32(0x7cbb0000), SPH_C32(0x0a820000), SPH_C32(0xc53b0000),
+	  SPH_C32(0x7d4401e3), SPH_C32(0x2eb80b6a), SPH_C32(0x6183585b),
+	  SPH_C32(0xd5ffd426), SPH_C32(0x5b091fb3), SPH_C32(0xe8930000),
+	  SPH_C32(0x6c450000), SPH_C32(0x13e40000), SPH_C32(0xfa9300a8),
+	  SPH_C32(0xa9e2ea61), SPH_C32(0x8bd58299), SPH_C32(0xb100adb0),
+	  SPH_C32(0xef868b5c) },
+	{ SPH_C32(0xd4610000), SPH_C32(0x9c3c0000), SPH_C32(0x99260000),
+	  SPH_C32(0x7a9e01e1), SPH_C32(0x53de9ee9), SPH_C32(0x7e1b28d1),
+	  SPH_C32(0x6e995c2e), SPH_C32(0x818e9fb3), SPH_C32(0x43740000),
+	  SPH_C32(0xf2480000), SPH_C32(0xbcc30000), SPH_C32(0xc78b00ad),
+	  SPH_C32(0x85adf5b2), SPH_C32(0xff23940c), SPH_C32(0x04c3ea5b),
+	  SPH_C32(0xd3db74a2) },
+	{ SPH_C32(0x7d280000), SPH_C32(0xed000000), SPH_C32(0x28c00000),
+	  SPH_C32(0xb24801e8), SPH_C32(0xa3688632), SPH_C32(0xdd20ec75),
+	  SPH_C32(0xd3c9b5c7), SPH_C32(0x086681c8), SPH_C32(0x7abb0000),
+	  SPH_C32(0xb0c00000), SPH_C32(0x441e0000), SPH_C32(0xac4f00ab),
+	  SPH_C32(0x130bc977), SPH_C32(0xd13a2195), SPH_C32(0x21ce5ae2),
+	  SPH_C32(0x9490fe8b) },
+	{ SPH_C32(0xd5f20000), SPH_C32(0x7bbe0000), SPH_C32(0x74dd0000),
+	  SPH_C32(0xb59201ea), SPH_C32(0xde0e13b1), SPH_C32(0xc2b89cff),
+	  SPH_C32(0x68af3dcf), SPH_C32(0xd2e101c8), SPH_C32(0xd15c0000),
+	  SPH_C32(0x2ecd0000), SPH_C32(0xeb390000), SPH_C32(0x915700ae),
+	  SPH_C32(0x3f44d6a4), SPH_C32(0xa5cc3700), SPH_C32(0x940d1d09),
+	  SPH_C32(0xa8cd0175) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0x19e10000), SPH_C32(0x16ba0000), SPH_C32(0x8d720000),
+	  SPH_C32(0x48b101f1), SPH_C32(0xcc493b40), SPH_C32(0x37e51f93),
+	  SPH_C32(0xaa493ec3), SPH_C32(0x743c310d), SPH_C32(0xd08b0000),
+	  SPH_C32(0xb6070000), SPH_C32(0xdcbe0000), SPH_C32(0x747800a4),
+	  SPH_C32(0x89399230), SPH_C32(0xb0d91fa9), SPH_C32(0x9131e288),
+	  SPH_C32(0x45a8f890) },
+	{ SPH_C32(0xb0a80000), SPH_C32(0x67860000), SPH_C32(0x3c940000),
+	  SPH_C32(0x806701f8), SPH_C32(0x3cff239b), SPH_C32(0x94dedb37),
+	  SPH_C32(0x1719d72a), SPH_C32(0xfdd42f76), SPH_C32(0xe9440000),
+	  SPH_C32(0xf48f0000), SPH_C32(0x24630000), SPH_C32(0x1fbc00a2),
+	  SPH_C32(0x1f9faef5), SPH_C32(0x9ec0aa30), SPH_C32(0xb43c5231),
+	  SPH_C32(0x02e372b9) },
+	{ SPH_C32(0x18720000), SPH_C32(0xf1380000), SPH_C32(0x60890000),
+	  SPH_C32(0x87bd01fa), SPH_C32(0x4199b618), SPH_C32(0x8b46abbd),
+	  SPH_C32(0xac7f5f22), SPH_C32(0x2753af76), SPH_C32(0x42a30000),
+	  SPH_C32(0x6a820000), SPH_C32(0x8b440000), SPH_C32(0x22a400a7),
+	  SPH_C32(0x33d0b126), SPH_C32(0xea36bca5), SPH_C32(0x01ff15da),
+	  SPH_C32(0x3ebe8d47) },
+	{ SPH_C32(0x23130000), SPH_C32(0x5c810000), SPH_C32(0x86950000),
+	  SPH_C32(0x19b701f0), SPH_C32(0x0bc68dd5), SPH_C32(0x7292cc15),
+	  SPH_C32(0x81e14199), SPH_C32(0xd5adc4da), SPH_C32(0xe8d70000),
+	  SPH_C32(0x130d0000), SPH_C32(0xc9980000), SPH_C32(0xd0b000a9),
+	  SPH_C32(0x924f23ad), SPH_C32(0x22631e1e), SPH_C32(0xb20a33d0),
+	  SPH_C32(0x518cecc2) },
+	{ SPH_C32(0x8bc90000), SPH_C32(0xca3f0000), SPH_C32(0xda880000),
+	  SPH_C32(0x1e6d01f2), SPH_C32(0x76a01856), SPH_C32(0x6d0abc9f),
+	  SPH_C32(0x3a87c991), SPH_C32(0x0f2a44da), SPH_C32(0x43300000),
+	  SPH_C32(0x8d000000), SPH_C32(0x66bf0000), SPH_C32(0xeda800ac),
+	  SPH_C32(0xbe003c7e), SPH_C32(0x5695088b), SPH_C32(0x07c9743b),
+	  SPH_C32(0x6dd1133c) },
+	{ SPH_C32(0x22800000), SPH_C32(0xbb030000), SPH_C32(0x6b6e0000),
+	  SPH_C32(0xd6bb01fb), SPH_C32(0x8616008d), SPH_C32(0xce31783b),
+	  SPH_C32(0x87d72078), SPH_C32(0x86c25aa1), SPH_C32(0x7aff0000),
+	  SPH_C32(0xcf880000), SPH_C32(0x9e620000), SPH_C32(0x866c00aa),
+	  SPH_C32(0x28a600bb), SPH_C32(0x788cbd12), SPH_C32(0x22c4c482),
+	  SPH_C32(0x2a9a9915) },
+	{ SPH_C32(0x8a5a0000), SPH_C32(0x2dbd0000), SPH_C32(0x37730000),
+	  SPH_C32(0xd16101f9), SPH_C32(0xfb70950e), SPH_C32(0xd1a908b1),
+	  SPH_C32(0x3cb1a870), SPH_C32(0x5c45daa1), SPH_C32(0xd1180000),
+	  SPH_C32(0x51850000), SPH_C32(0x31450000), SPH_C32(0xbb7400af),
+	  SPH_C32(0x04e91f68), SPH_C32(0x0c7aab87), SPH_C32(0x97078369),
+	  SPH_C32(0x16c766eb) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0x460d0000), SPH_C32(0x3ff10000), SPH_C32(0x14a00000),
+	  SPH_C32(0x066101e3), SPH_C32(0xd29a7433), SPH_C32(0x8d42175a),
+	  SPH_C32(0xfd5d351c), SPH_C32(0x44928dfa), SPH_C32(0x8f230000),
+	  SPH_C32(0xe0040000), SPH_C32(0x9f100000), SPH_C32(0x108b00b7),
+	  SPH_C32(0xac47148f), SPH_C32(0xa3c88be7), SPH_C32(0xc52f7737),
+	  SPH_C32(0xcb0c23f9) },
+	{ SPH_C32(0xef440000), SPH_C32(0x4ecd0000), SPH_C32(0xa5460000),
+	  SPH_C32(0xceb701ea), SPH_C32(0x222c6ce8), SPH_C32(0x2e79d3fe),
+	  SPH_C32(0x400ddcf5), SPH_C32(0xcd7a9381), SPH_C32(0xb6ec0000),
+	  SPH_C32(0xa28c0000), SPH_C32(0x67cd0000), SPH_C32(0x7b4f00b1),
+	  SPH_C32(0x3ae1284a), SPH_C32(0x8dd13e7e), SPH_C32(0xe022c78e),
+	  SPH_C32(0x8c47a9d0) },
+	{ SPH_C32(0x479e0000), SPH_C32(0xd8730000), SPH_C32(0xf95b0000),
+	  SPH_C32(0xc96d01e8), SPH_C32(0x5f4af96b), SPH_C32(0x31e1a374),
+	  SPH_C32(0xfb6b54fd), SPH_C32(0x17fd1381), SPH_C32(0x1d0b0000),
+	  SPH_C32(0x3c810000), SPH_C32(0xc8ea0000), SPH_C32(0x465700b4),
+	  SPH_C32(0x16ae3799), SPH_C32(0xf92728eb), SPH_C32(0x55e18065),
+	  SPH_C32(0xb01a562e) },
+	{ SPH_C32(0x7cff0000), SPH_C32(0x75ca0000), SPH_C32(0x1f470000),
+	  SPH_C32(0x576701e2), SPH_C32(0x1515c2a6), SPH_C32(0xc835c4dc),
+	  SPH_C32(0xd6f54a46), SPH_C32(0xe503782d), SPH_C32(0xb77f0000),
+	  SPH_C32(0x450e0000), SPH_C32(0x8a360000), SPH_C32(0xb44300ba),
+	  SPH_C32(0xb731a512), SPH_C32(0x31728a50), SPH_C32(0xe614a66f),
+	  SPH_C32(0xdf2837ab) },
+	{ SPH_C32(0xd4250000), SPH_C32(0xe3740000), SPH_C32(0x435a0000),
+	  SPH_C32(0x50bd01e0), SPH_C32(0x68735725), SPH_C32(0xd7adb456),
+	  SPH_C32(0x6d93c24e), SPH_C32(0x3f84f82d), SPH_C32(0x1c980000),
+	  SPH_C32(0xdb030000), SPH_C32(0x25110000), SPH_C32(0x895b00bf),
+	  SPH_C32(0x9b7ebac1), SPH_C32(0x45849cc5), SPH_C32(0x53d7e184),
+	  SPH_C32(0xe375c855) },
+	{ SPH_C32(0x7d6c0000), SPH_C32(0x92480000), SPH_C32(0xf2bc0000),
+	  SPH_C32(0x986b01e9), SPH_C32(0x98c54ffe), SPH_C32(0x749670f2),
+	  SPH_C32(0xd0c32ba7), SPH_C32(0xb66ce656), SPH_C32(0x25570000),
+	  SPH_C32(0x998b0000), SPH_C32(0xddcc0000), SPH_C32(0xe29f00b9),
+	  SPH_C32(0x0dd88604), SPH_C32(0x6b9d295c), SPH_C32(0x76da513d),
+	  SPH_C32(0xa43e427c) },
+	{ SPH_C32(0xd5b60000), SPH_C32(0x04f60000), SPH_C32(0xaea10000),
+	  SPH_C32(0x9fb101eb), SPH_C32(0xe5a3da7d), SPH_C32(0x6b0e0078),
+	  SPH_C32(0x6ba5a3af), SPH_C32(0x6ceb6656), SPH_C32(0x8eb00000),
+	  SPH_C32(0x07860000), SPH_C32(0x72eb0000), SPH_C32(0xdf8700bc),
+	  SPH_C32(0x219799d7), SPH_C32(0x1f6b3fc9), SPH_C32(0xc31916d6),
+	  SPH_C32(0x9863bd82) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) },
+	{ SPH_C32(0x19a50000), SPH_C32(0x69f20000), SPH_C32(0x570e0000),
+	  SPH_C32(0x629201f0), SPH_C32(0xf7e4f28c), SPH_C32(0x9e538314),
+	  SPH_C32(0xa943a0a3), SPH_C32(0xca365693), SPH_C32(0x8f670000),
+	  SPH_C32(0x9f4c0000), SPH_C32(0x456c0000), SPH_C32(0x3aa800b6),
+	  SPH_C32(0x97eadd43), SPH_C32(0x0a7e1760), SPH_C32(0xc625e957),
+	  SPH_C32(0x75064467) },
+	{ SPH_C32(0xb0ec0000), SPH_C32(0x18ce0000), SPH_C32(0xe6e80000),
+	  SPH_C32(0xaa4401f9), SPH_C32(0x0752ea57), SPH_C32(0x3d6847b0),
+	  SPH_C32(0x1413494a), SPH_C32(0x43de48e8), SPH_C32(0xb6a80000),
+	  SPH_C32(0xddc40000), SPH_C32(0xbdb10000), SPH_C32(0x516c00b0),
+	  SPH_C32(0x014ce186), SPH_C32(0x2467a2f9), SPH_C32(0xe32859ee),
+	  SPH_C32(0x324dce4e) },
+	{ SPH_C32(0x18360000), SPH_C32(0x8e700000), SPH_C32(0xbaf50000),
+	  SPH_C32(0xad9e01fb), SPH_C32(0x7a347fd4), SPH_C32(0x22f0373a),
+	  SPH_C32(0xaf75c142), SPH_C32(0x9959c8e8), SPH_C32(0x1d4f0000),
+	  SPH_C32(0x43c90000), SPH_C32(0x12960000), SPH_C32(0x6c7400b5),
+	  SPH_C32(0x2d03fe55), SPH_C32(0x5091b46c), SPH_C32(0x56eb1e05),
+	  SPH_C32(0x0e1031b0) },
+	{ SPH_C32(0x23570000), SPH_C32(0x23c90000), SPH_C32(0x5ce90000),
+	  SPH_C32(0x339401f1), SPH_C32(0x306b4419), SPH_C32(0xdb245092),
+	  SPH_C32(0x82ebdff9), SPH_C32(0x6ba7a344), SPH_C32(0xb73b0000),
+	  SPH_C32(0x3a460000), SPH_C32(0x504a0000), SPH_C32(0x9e6000bb),
+	  SPH_C32(0x8c9c6cde), SPH_C32(0x98c416d7), SPH_C32(0xe51e380f),
+	  SPH_C32(0x61225035) },
+	{ SPH_C32(0x8b8d0000), SPH_C32(0xb5770000), SPH_C32(0x00f40000),
+	  SPH_C32(0x344e01f3), SPH_C32(0x4d0dd19a), SPH_C32(0xc4bc2018),
+	  SPH_C32(0x398d57f1), SPH_C32(0xb1202344), SPH_C32(0x1cdc0000),
+	  SPH_C32(0xa44b0000), SPH_C32(0xff6d0000), SPH_C32(0xa37800be),
+	  SPH_C32(0xa0d3730d), SPH_C32(0xec320042), SPH_C32(0x50dd7fe4),
+	  SPH_C32(0x5d7fafcb) },
+	{ SPH_C32(0x22c40000), SPH_C32(0xc44b0000), SPH_C32(0xb1120000),
+	  SPH_C32(0xfc9801fa), SPH_C32(0xbdbbc941), SPH_C32(0x6787e4bc),
+	  SPH_C32(0x84ddbe18), SPH_C32(0x38c83d3f), SPH_C32(0x25130000),
+	  SPH_C32(0xe6c30000), SPH_C32(0x07b00000), SPH_C32(0xc8bc00b8),
+	  SPH_C32(0x36754fc8), SPH_C32(0xc22bb5db), SPH_C32(0x75d0cf5d),
+	  SPH_C32(0x1a3425e2) },
+	{ SPH_C32(0x8a1e0000), SPH_C32(0x52f50000), SPH_C32(0xed0f0000),
+	  SPH_C32(0xfb4201f8), SPH_C32(0xc0dd5cc2), SPH_C32(0x781f9436),
+	  SPH_C32(0x3fbb3610), SPH_C32(0xe24fbd3f), SPH_C32(0x8ef40000),
+	  SPH_C32(0x78ce0000), SPH_C32(0xa8970000), SPH_C32(0xf5a400bd),
+	  SPH_C32(0x1a3a501b), SPH_C32(0xb6dda34e), SPH_C32(0xc01388b6),
+	  SPH_C32(0x2669da1c) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0xd3f20000), SPH_C32(0xc1fc0000), SPH_C32(0xf5f80000),
+	  SPH_C32(0x649900a2), SPH_C32(0xe3bdd1ac), SPH_C32(0x7201e531),
+	  SPH_C32(0x9c9eb30b), SPH_C32(0x1d78e0f0), SPH_C32(0x3e5c0000),
+	  SPH_C32(0x1f480000), SPH_C32(0x94030000), SPH_C32(0x75c30145),
+	  SPH_C32(0x26c57380), SPH_C32(0x22037879), SPH_C32(0xd70a5f9c),
+	  SPH_C32(0xdbbdf56a) },
+	{ SPH_C32(0x7abb0000), SPH_C32(0xb0c00000), SPH_C32(0x441e0000),
+	  SPH_C32(0xac4f00ab), SPH_C32(0x130bc977), SPH_C32(0xd13a2195),
+	  SPH_C32(0x21ce5ae2), SPH_C32(0x9490fe8b), SPH_C32(0x07930000),
+	  SPH_C32(0x5dc00000), SPH_C32(0x6cde0000), SPH_C32(0x1e070143),
+	  SPH_C32(0xb0634f45), SPH_C32(0x0c1acde0), SPH_C32(0xf207ef25),
+	  SPH_C32(0x9cf67f43) },
+	{ SPH_C32(0xd2610000), SPH_C32(0x267e0000), SPH_C32(0x18030000),
+	  SPH_C32(0xab9500a9), SPH_C32(0x6e6d5cf4), SPH_C32(0xcea2511f),
+	  SPH_C32(0x9aa8d2ea), SPH_C32(0x4e177e8b), SPH_C32(0xac740000),
+	  SPH_C32(0xc3cd0000), SPH_C32(0xc3f90000), SPH_C32(0x231f0146),
+	  SPH_C32(0x9c2c5096), SPH_C32(0x78ecdb75), SPH_C32(0x47c4a8ce),
+	  SPH_C32(0xa0ab80bd) },
+	{ SPH_C32(0xe9000000), SPH_C32(0x8bc70000), SPH_C32(0xfe1f0000),
+	  SPH_C32(0x359f00a3), SPH_C32(0x24326739), SPH_C32(0x377636b7),
+	  SPH_C32(0xb736cc51), SPH_C32(0xbce91527), SPH_C32(0x06000000),
+	  SPH_C32(0xba420000), SPH_C32(0x81250000), SPH_C32(0xd10b0148),
+	  SPH_C32(0x3db3c21d), SPH_C32(0xb0b979ce), SPH_C32(0xf4318ec4),
+	  SPH_C32(0xcf99e138) },
+	{ SPH_C32(0x41da0000), SPH_C32(0x1d790000), SPH_C32(0xa2020000),
+	  SPH_C32(0x324500a1), SPH_C32(0x5954f2ba), SPH_C32(0x28ee463d),
+	  SPH_C32(0x0c504459), SPH_C32(0x666e9527), SPH_C32(0xade70000),
+	  SPH_C32(0x244f0000), SPH_C32(0x2e020000), SPH_C32(0xec13014d),
+	  SPH_C32(0x11fcddce), SPH_C32(0xc44f6f5b), SPH_C32(0x41f2c92f),
+	  SPH_C32(0xf3c41ec6) },
+	{ SPH_C32(0xe8930000), SPH_C32(0x6c450000), SPH_C32(0x13e40000),
+	  SPH_C32(0xfa9300a8), SPH_C32(0xa9e2ea61), SPH_C32(0x8bd58299),
+	  SPH_C32(0xb100adb0), SPH_C32(0xef868b5c), SPH_C32(0x94280000),
+	  SPH_C32(0x66c70000), SPH_C32(0xd6df0000), SPH_C32(0x87d7014b),
+	  SPH_C32(0x875ae10b), SPH_C32(0xea56dac2), SPH_C32(0x64ff7996),
+	  SPH_C32(0xb48f94ef) },
+	{ SPH_C32(0x40490000), SPH_C32(0xfafb0000), SPH_C32(0x4ff90000),
+	  SPH_C32(0xfd4900aa), SPH_C32(0xd4847fe2), SPH_C32(0x944df213),
+	  SPH_C32(0x0a6625b8), SPH_C32(0x35010b5c), SPH_C32(0x3fcf0000),
+	  SPH_C32(0xf8ca0000), SPH_C32(0x79f80000), SPH_C32(0xbacf014e),
+	  SPH_C32(0xab15fed8), SPH_C32(0x9ea0cc57), SPH_C32(0xd13c3e7d),
+	  SPH_C32(0x88d26b11) },
+	{ SPH_C32(0x24800000), SPH_C32(0x01410000), SPH_C32(0xea4b0000),
+	  SPH_C32(0x07b000b3), SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5),
+	  SPH_C32(0x73e6aebc), SPH_C32(0x495bbb99), SPH_C32(0x95ff0000),
+	  SPH_C32(0xfe0d0000), SPH_C32(0xe1580000), SPH_C32(0x62f80141),
+	  SPH_C32(0x3127a59f), SPH_C32(0xff43f26b), SPH_C32(0x61c38617),
+	  SPH_C32(0x59ea6d0a) },
+	{ SPH_C32(0x8c5a0000), SPH_C32(0x97ff0000), SPH_C32(0xb6560000),
+	  SPH_C32(0x006a00b1), SPH_C32(0xc6c35713), SPH_C32(0x6110717f),
+	  SPH_C32(0xc88026b4), SPH_C32(0x93dc3b99), SPH_C32(0x3e180000),
+	  SPH_C32(0x60000000), SPH_C32(0x4e7f0000), SPH_C32(0x5fe00144),
+	  SPH_C32(0x1d68ba4c), SPH_C32(0x8bb5e4fe), SPH_C32(0xd400c1fc),
+	  SPH_C32(0x65b792f4) },
+	{ SPH_C32(0x25130000), SPH_C32(0xe6c30000), SPH_C32(0x07b00000),
+	  SPH_C32(0xc8bc00b8), SPH_C32(0x36754fc8), SPH_C32(0xc22bb5db),
+	  SPH_C32(0x75d0cf5d), SPH_C32(0x1a3425e2), SPH_C32(0x07d70000),
+	  SPH_C32(0x22880000), SPH_C32(0xb6a20000), SPH_C32(0x34240142),
+	  SPH_C32(0x8bce8689), SPH_C32(0xa5ac5167), SPH_C32(0xf10d7145),
+	  SPH_C32(0x22fc18dd) },
+	{ SPH_C32(0x8dc90000), SPH_C32(0x707d0000), SPH_C32(0x5bad0000),
+	  SPH_C32(0xcf6600ba), SPH_C32(0x4b13da4b), SPH_C32(0xddb3c551),
+	  SPH_C32(0xceb64755), SPH_C32(0xc0b3a5e2), SPH_C32(0xac300000),
+	  SPH_C32(0xbc850000), SPH_C32(0x19850000), SPH_C32(0x093c0147),
+	  SPH_C32(0xa781995a), SPH_C32(0xd15a47f2), SPH_C32(0x44ce36ae),
+	  SPH_C32(0x1ea1e723) },
+	{ SPH_C32(0xb6a80000), SPH_C32(0xddc40000), SPH_C32(0xbdb10000),
+	  SPH_C32(0x516c00b0), SPH_C32(0x014ce186), SPH_C32(0x2467a2f9),
+	  SPH_C32(0xe32859ee), SPH_C32(0x324dce4e), SPH_C32(0x06440000),
+	  SPH_C32(0xc50a0000), SPH_C32(0x5b590000), SPH_C32(0xfb280149),
+	  SPH_C32(0x061e0bd1), SPH_C32(0x190fe549), SPH_C32(0xf73b10a4),
+	  SPH_C32(0x719386a6) },
+	{ SPH_C32(0x1e720000), SPH_C32(0x4b7a0000), SPH_C32(0xe1ac0000),
+	  SPH_C32(0x56b600b2), SPH_C32(0x7c2a7405), SPH_C32(0x3bffd273),
+	  SPH_C32(0x584ed1e6), SPH_C32(0xe8ca4e4e), SPH_C32(0xada30000),
+	  SPH_C32(0x5b070000), SPH_C32(0xf47e0000), SPH_C32(0xc630014c),
+	  SPH_C32(0x2a511402), SPH_C32(0x6df9f3dc), SPH_C32(0x42f8574f),
+	  SPH_C32(0x4dce7958) },
+	{ SPH_C32(0xb73b0000), SPH_C32(0x3a460000), SPH_C32(0x504a0000),
+	  SPH_C32(0x9e6000bb), SPH_C32(0x8c9c6cde), SPH_C32(0x98c416d7),
+	  SPH_C32(0xe51e380f), SPH_C32(0x61225035), SPH_C32(0x946c0000),
+	  SPH_C32(0x198f0000), SPH_C32(0x0ca30000), SPH_C32(0xadf4014a),
+	  SPH_C32(0xbcf728c7), SPH_C32(0x43e04645), SPH_C32(0x67f5e7f6),
+	  SPH_C32(0x0a85f371) },
+	{ SPH_C32(0x1fe10000), SPH_C32(0xacf80000), SPH_C32(0x0c570000),
+	  SPH_C32(0x99ba00b9), SPH_C32(0xf1faf95d), SPH_C32(0x875c665d),
+	  SPH_C32(0x5e78b007), SPH_C32(0xbba5d035), SPH_C32(0x3f8b0000),
+	  SPH_C32(0x87820000), SPH_C32(0xa3840000), SPH_C32(0x90ec014f),
+	  SPH_C32(0x90b83714), SPH_C32(0x371650d0), SPH_C32(0xd236a01d),
+	  SPH_C32(0x36d80c8f) },
+	{ SPH_C32(0x7b6c0000), SPH_C32(0x280a0000), SPH_C32(0x73990000),
+	  SPH_C32(0x496000a1), SPH_C32(0xa5768de3), SPH_C32(0xc42f093c),
+	  SPH_C32(0x24f2a563), SPH_C32(0x79f5076e), SPH_C32(0xca570000),
+	  SPH_C32(0xa80e0000), SPH_C32(0xa2f60000), SPH_C32(0x060b0152),
+	  SPH_C32(0x14592320), SPH_C32(0xec526625), SPH_C32(0x35dd13a8),
+	  SPH_C32(0xd74eb663) },
+	{ SPH_C32(0xd3b60000), SPH_C32(0xbeb40000), SPH_C32(0x2f840000),
+	  SPH_C32(0x4eba00a3), SPH_C32(0xd8101860), SPH_C32(0xdbb779b6),
+	  SPH_C32(0x9f942d6b), SPH_C32(0xa372876e), SPH_C32(0x61b00000),
+	  SPH_C32(0x36030000), SPH_C32(0x0dd10000), SPH_C32(0x3b130157),
+	  SPH_C32(0x38163cf3), SPH_C32(0x98a470b0), SPH_C32(0x801e5443),
+	  SPH_C32(0xeb13499d) },
+	{ SPH_C32(0x7aff0000), SPH_C32(0xcf880000), SPH_C32(0x9e620000),
+	  SPH_C32(0x866c00aa), SPH_C32(0x28a600bb), SPH_C32(0x788cbd12),
+	  SPH_C32(0x22c4c482), SPH_C32(0x2a9a9915), SPH_C32(0x587f0000),
+	  SPH_C32(0x748b0000), SPH_C32(0xf50c0000), SPH_C32(0x50d70151),
+	  SPH_C32(0xaeb00036), SPH_C32(0xb6bdc529), SPH_C32(0xa513e4fa),
+	  SPH_C32(0xac58c3b4) },
+	{ SPH_C32(0xd2250000), SPH_C32(0x59360000), SPH_C32(0xc27f0000),
+	  SPH_C32(0x81b600a8), SPH_C32(0x55c09538), SPH_C32(0x6714cd98),
+	  SPH_C32(0x99a24c8a), SPH_C32(0xf01d1915), SPH_C32(0xf3980000),
+	  SPH_C32(0xea860000), SPH_C32(0x5a2b0000), SPH_C32(0x6dcf0154),
+	  SPH_C32(0x82ff1fe5), SPH_C32(0xc24bd3bc), SPH_C32(0x10d0a311),
+	  SPH_C32(0x90053c4a) },
+	{ SPH_C32(0xe9440000), SPH_C32(0xf48f0000), SPH_C32(0x24630000),
+	  SPH_C32(0x1fbc00a2), SPH_C32(0x1f9faef5), SPH_C32(0x9ec0aa30),
+	  SPH_C32(0xb43c5231), SPH_C32(0x02e372b9), SPH_C32(0x59ec0000),
+	  SPH_C32(0x93090000), SPH_C32(0x18f70000), SPH_C32(0x9fdb015a),
+	  SPH_C32(0x23608d6e), SPH_C32(0x0a1e7107), SPH_C32(0xa325851b),
+	  SPH_C32(0xff375dcf) },
+	{ SPH_C32(0x419e0000), SPH_C32(0x62310000), SPH_C32(0x787e0000),
+	  SPH_C32(0x186600a0), SPH_C32(0x62f93b76), SPH_C32(0x8158daba),
+	  SPH_C32(0x0f5ada39), SPH_C32(0xd864f2b9), SPH_C32(0xf20b0000),
+	  SPH_C32(0x0d040000), SPH_C32(0xb7d00000), SPH_C32(0xa2c3015f),
+	  SPH_C32(0x0f2f92bd), SPH_C32(0x7ee86792), SPH_C32(0x16e6c2f0),
+	  SPH_C32(0xc36aa231) },
+	{ SPH_C32(0xe8d70000), SPH_C32(0x130d0000), SPH_C32(0xc9980000),
+	  SPH_C32(0xd0b000a9), SPH_C32(0x924f23ad), SPH_C32(0x22631e1e),
+	  SPH_C32(0xb20a33d0), SPH_C32(0x518cecc2), SPH_C32(0xcbc40000),
+	  SPH_C32(0x4f8c0000), SPH_C32(0x4f0d0000), SPH_C32(0xc9070159),
+	  SPH_C32(0x9989ae78), SPH_C32(0x50f1d20b), SPH_C32(0x33eb7249),
+	  SPH_C32(0x84212818) },
+	{ SPH_C32(0x400d0000), SPH_C32(0x85b30000), SPH_C32(0x95850000),
+	  SPH_C32(0xd76a00ab), SPH_C32(0xef29b62e), SPH_C32(0x3dfb6e94),
+	  SPH_C32(0x096cbbd8), SPH_C32(0x8b0b6cc2), SPH_C32(0x60230000),
+	  SPH_C32(0xd1810000), SPH_C32(0xe02a0000), SPH_C32(0xf41f015c),
+	  SPH_C32(0xb5c6b1ab), SPH_C32(0x2407c49e), SPH_C32(0x862835a2),
+	  SPH_C32(0xb87cd7e6) },
+	{ SPH_C32(0x24c40000), SPH_C32(0x7e090000), SPH_C32(0x30370000),
+	  SPH_C32(0x2d9300b2), SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72),
+	  SPH_C32(0x70ec30dc), SPH_C32(0xf751dc07), SPH_C32(0xca130000),
+	  SPH_C32(0xd7460000), SPH_C32(0x788a0000), SPH_C32(0x2c280153),
+	  SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2), SPH_C32(0x36d78dc8),
+	  SPH_C32(0x6944d1fd) },
+	{ SPH_C32(0x8c1e0000), SPH_C32(0xe8b70000), SPH_C32(0x6c2a0000),
+	  SPH_C32(0x2a4900b0), SPH_C32(0xfd6e9edf), SPH_C32(0xc8a6edf8),
+	  SPH_C32(0xcb8ab8d4), SPH_C32(0x2dd65c07), SPH_C32(0x61f40000),
+	  SPH_C32(0x494b0000), SPH_C32(0xd7ad0000), SPH_C32(0x11300156),
+	  SPH_C32(0x03bbf53f), SPH_C32(0x3112ec37), SPH_C32(0x8314ca23),
+	  SPH_C32(0x55192e03) },
+	{ SPH_C32(0x25570000), SPH_C32(0x998b0000), SPH_C32(0xddcc0000),
+	  SPH_C32(0xe29f00b9), SPH_C32(0x0dd88604), SPH_C32(0x6b9d295c),
+	  SPH_C32(0x76da513d), SPH_C32(0xa43e427c), SPH_C32(0x583b0000),
+	  SPH_C32(0x0bc30000), SPH_C32(0x2f700000), SPH_C32(0x7af40150),
+	  SPH_C32(0x951dc9fa), SPH_C32(0x1f0b59ae), SPH_C32(0xa6197a9a),
+	  SPH_C32(0x1252a42a) },
+	{ SPH_C32(0x8d8d0000), SPH_C32(0x0f350000), SPH_C32(0x81d10000),
+	  SPH_C32(0xe54500bb), SPH_C32(0x70be1387), SPH_C32(0x740559d6),
+	  SPH_C32(0xcdbcd935), SPH_C32(0x7eb9c27c), SPH_C32(0xf3dc0000),
+	  SPH_C32(0x95ce0000), SPH_C32(0x80570000), SPH_C32(0x47ec0155),
+	  SPH_C32(0xb952d629), SPH_C32(0x6bfd4f3b), SPH_C32(0x13da3d71),
+	  SPH_C32(0x2e0f5bd4) },
+	{ SPH_C32(0xb6ec0000), SPH_C32(0xa28c0000), SPH_C32(0x67cd0000),
+	  SPH_C32(0x7b4f00b1), SPH_C32(0x3ae1284a), SPH_C32(0x8dd13e7e),
+	  SPH_C32(0xe022c78e), SPH_C32(0x8c47a9d0), SPH_C32(0x59a80000),
+	  SPH_C32(0xec410000), SPH_C32(0xc28b0000), SPH_C32(0xb5f8015b),
+	  SPH_C32(0x18cd44a2), SPH_C32(0xa3a8ed80), SPH_C32(0xa02f1b7b),
+	  SPH_C32(0x413d3a51) },
+	{ SPH_C32(0x1e360000), SPH_C32(0x34320000), SPH_C32(0x3bd00000),
+	  SPH_C32(0x7c9500b3), SPH_C32(0x4787bdc9), SPH_C32(0x92494ef4),
+	  SPH_C32(0x5b444f86), SPH_C32(0x56c029d0), SPH_C32(0xf24f0000),
+	  SPH_C32(0x724c0000), SPH_C32(0x6dac0000), SPH_C32(0x88e0015e),
+	  SPH_C32(0x34825b71), SPH_C32(0xd75efb15), SPH_C32(0x15ec5c90),
+	  SPH_C32(0x7d60c5af) },
+	{ SPH_C32(0xb77f0000), SPH_C32(0x450e0000), SPH_C32(0x8a360000),
+	  SPH_C32(0xb44300ba), SPH_C32(0xb731a512), SPH_C32(0x31728a50),
+	  SPH_C32(0xe614a66f), SPH_C32(0xdf2837ab), SPH_C32(0xcb800000),
+	  SPH_C32(0x30c40000), SPH_C32(0x95710000), SPH_C32(0xe3240158),
+	  SPH_C32(0xa22467b4), SPH_C32(0xf9474e8c), SPH_C32(0x30e1ec29),
+	  SPH_C32(0x3a2b4f86) },
+	{ SPH_C32(0x1fa50000), SPH_C32(0xd3b00000), SPH_C32(0xd62b0000),
+	  SPH_C32(0xb39900b8), SPH_C32(0xca573091), SPH_C32(0x2eeafada),
+	  SPH_C32(0x5d722e67), SPH_C32(0x05afb7ab), SPH_C32(0x60670000),
+	  SPH_C32(0xaec90000), SPH_C32(0x3a560000), SPH_C32(0xde3c015d),
+	  SPH_C32(0x8e6b7867), SPH_C32(0x8db15819), SPH_C32(0x8522abc2),
+	  SPH_C32(0x0676b078) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) },
+	{ SPH_C32(0x3d610000), SPH_C32(0x17fb0000), SPH_C32(0x67390000),
+	  SPH_C32(0x4f010142), SPH_C32(0x77ecf9d0), SPH_C32(0x496d1e66),
+	  SPH_C32(0xd9af907f), SPH_C32(0x3d678a94), SPH_C32(0x45740000),
+	  SPH_C32(0x480a0000), SPH_C32(0x3de60000), SPH_C32(0x168001e5),
+	  SPH_C32(0xb81e37af), SPH_C32(0x4f9aedc2), SPH_C32(0xf0f2649f),
+	  SPH_C32(0x1c42959a) },
+	{ SPH_C32(0x94280000), SPH_C32(0x66c70000), SPH_C32(0xd6df0000),
+	  SPH_C32(0x87d7014b), SPH_C32(0x875ae10b), SPH_C32(0xea56dac2),
+	  SPH_C32(0x64ff7996), SPH_C32(0xb48f94ef), SPH_C32(0x7cbb0000),
+	  SPH_C32(0x0a820000), SPH_C32(0xc53b0000), SPH_C32(0x7d4401e3),
+	  SPH_C32(0x2eb80b6a), SPH_C32(0x6183585b), SPH_C32(0xd5ffd426),
+	  SPH_C32(0x5b091fb3) },
+	{ SPH_C32(0x3cf20000), SPH_C32(0xf0790000), SPH_C32(0x8ac20000),
+	  SPH_C32(0x800d0149), SPH_C32(0xfa3c7488), SPH_C32(0xf5ceaa48),
+	  SPH_C32(0xdf99f19e), SPH_C32(0x6e0814ef), SPH_C32(0xd75c0000),
+	  SPH_C32(0x948f0000), SPH_C32(0x6a1c0000), SPH_C32(0x405c01e6),
+	  SPH_C32(0x02f714b9), SPH_C32(0x15754ece), SPH_C32(0x603c93cd),
+	  SPH_C32(0x6754e04d) },
+	{ SPH_C32(0x07930000), SPH_C32(0x5dc00000), SPH_C32(0x6cde0000),
+	  SPH_C32(0x1e070143), SPH_C32(0xb0634f45), SPH_C32(0x0c1acde0),
+	  SPH_C32(0xf207ef25), SPH_C32(0x9cf67f43), SPH_C32(0x7d280000),
+	  SPH_C32(0xed000000), SPH_C32(0x28c00000), SPH_C32(0xb24801e8),
+	  SPH_C32(0xa3688632), SPH_C32(0xdd20ec75), SPH_C32(0xd3c9b5c7),
+	  SPH_C32(0x086681c8) },
+	{ SPH_C32(0xaf490000), SPH_C32(0xcb7e0000), SPH_C32(0x30c30000),
+	  SPH_C32(0x19dd0141), SPH_C32(0xcd05dac6), SPH_C32(0x1382bd6a),
+	  SPH_C32(0x4961672d), SPH_C32(0x4671ff43), SPH_C32(0xd6cf0000),
+	  SPH_C32(0x730d0000), SPH_C32(0x87e70000), SPH_C32(0x8f5001ed),
+	  SPH_C32(0x8f2799e1), SPH_C32(0xa9d6fae0), SPH_C32(0x660af22c),
+	  SPH_C32(0x343b7e36) },
+	{ SPH_C32(0x06000000), SPH_C32(0xba420000), SPH_C32(0x81250000),
+	  SPH_C32(0xd10b0148), SPH_C32(0x3db3c21d), SPH_C32(0xb0b979ce),
+	  SPH_C32(0xf4318ec4), SPH_C32(0xcf99e138), SPH_C32(0xef000000),
+	  SPH_C32(0x31850000), SPH_C32(0x7f3a0000), SPH_C32(0xe49401eb),
+	  SPH_C32(0x1981a524), SPH_C32(0x87cf4f79), SPH_C32(0x43074295),
+	  SPH_C32(0x7370f41f) },
+	{ SPH_C32(0xaeda0000), SPH_C32(0x2cfc0000), SPH_C32(0xdd380000),
+	  SPH_C32(0xd6d1014a), SPH_C32(0x40d5579e), SPH_C32(0xaf210944),
+	  SPH_C32(0x4f5706cc), SPH_C32(0x151e6138), SPH_C32(0x44e70000),
+	  SPH_C32(0xaf880000), SPH_C32(0xd01d0000), SPH_C32(0xd98c01ee),
+	  SPH_C32(0x35cebaf7), SPH_C32(0xf33959ec), SPH_C32(0xf6c4057e),
+	  SPH_C32(0x4f2d0be1) },
+	{ SPH_C32(0xca130000), SPH_C32(0xd7460000), SPH_C32(0x788a0000),
+	  SPH_C32(0x2c280153), SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2),
+	  SPH_C32(0x36d78dc8), SPH_C32(0x6944d1fd), SPH_C32(0xeed70000),
+	  SPH_C32(0xa94f0000), SPH_C32(0x48bd0000), SPH_C32(0x01bb01e1),
+	  SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0), SPH_C32(0x463bbd14),
+	  SPH_C32(0x9e150dfa) },
+	{ SPH_C32(0x62c90000), SPH_C32(0x41f80000), SPH_C32(0x24970000),
+	  SPH_C32(0x2bf20151), SPH_C32(0x52927f6f), SPH_C32(0x5a7c8a28),
+	  SPH_C32(0x8db105c0), SPH_C32(0xb3c351fd), SPH_C32(0x45300000),
+	  SPH_C32(0x37420000), SPH_C32(0xe79a0000), SPH_C32(0x3ca301e4),
+	  SPH_C32(0x83b3fe63), SPH_C32(0xe62c7145), SPH_C32(0xf3f8faff),
+	  SPH_C32(0xa248f204) },
+	{ SPH_C32(0xcb800000), SPH_C32(0x30c40000), SPH_C32(0x95710000),
+	  SPH_C32(0xe3240158), SPH_C32(0xa22467b4), SPH_C32(0xf9474e8c),
+	  SPH_C32(0x30e1ec29), SPH_C32(0x3a2b4f86), SPH_C32(0x7cff0000),
+	  SPH_C32(0x75ca0000), SPH_C32(0x1f470000), SPH_C32(0x576701e2),
+	  SPH_C32(0x1515c2a6), SPH_C32(0xc835c4dc), SPH_C32(0xd6f54a46),
+	  SPH_C32(0xe503782d) },
+	{ SPH_C32(0x635a0000), SPH_C32(0xa67a0000), SPH_C32(0xc96c0000),
+	  SPH_C32(0xe4fe015a), SPH_C32(0xdf42f237), SPH_C32(0xe6df3e06),
+	  SPH_C32(0x8b876421), SPH_C32(0xe0accf86), SPH_C32(0xd7180000),
+	  SPH_C32(0xebc70000), SPH_C32(0xb0600000), SPH_C32(0x6a7f01e7),
+	  SPH_C32(0x395add75), SPH_C32(0xbcc3d249), SPH_C32(0x63360dad),
+	  SPH_C32(0xd95e87d3) },
+	{ SPH_C32(0x583b0000), SPH_C32(0x0bc30000), SPH_C32(0x2f700000),
+	  SPH_C32(0x7af40150), SPH_C32(0x951dc9fa), SPH_C32(0x1f0b59ae),
+	  SPH_C32(0xa6197a9a), SPH_C32(0x1252a42a), SPH_C32(0x7d6c0000),
+	  SPH_C32(0x92480000), SPH_C32(0xf2bc0000), SPH_C32(0x986b01e9),
+	  SPH_C32(0x98c54ffe), SPH_C32(0x749670f2), SPH_C32(0xd0c32ba7),
+	  SPH_C32(0xb66ce656) },
+	{ SPH_C32(0xf0e10000), SPH_C32(0x9d7d0000), SPH_C32(0x736d0000),
+	  SPH_C32(0x7d2e0152), SPH_C32(0xe87b5c79), SPH_C32(0x00932924),
+	  SPH_C32(0x1d7ff292), SPH_C32(0xc8d5242a), SPH_C32(0xd68b0000),
+	  SPH_C32(0x0c450000), SPH_C32(0x5d9b0000), SPH_C32(0xa57301ec),
+	  SPH_C32(0xb48a502d), SPH_C32(0x00606667), SPH_C32(0x65006c4c),
+	  SPH_C32(0x8a3119a8) },
+	{ SPH_C32(0x59a80000), SPH_C32(0xec410000), SPH_C32(0xc28b0000),
+	  SPH_C32(0xb5f8015b), SPH_C32(0x18cd44a2), SPH_C32(0xa3a8ed80),
+	  SPH_C32(0xa02f1b7b), SPH_C32(0x413d3a51), SPH_C32(0xef440000),
+	  SPH_C32(0x4ecd0000), SPH_C32(0xa5460000), SPH_C32(0xceb701ea),
+	  SPH_C32(0x222c6ce8), SPH_C32(0x2e79d3fe), SPH_C32(0x400ddcf5),
+	  SPH_C32(0xcd7a9381) },
+	{ SPH_C32(0xf1720000), SPH_C32(0x7aff0000), SPH_C32(0x9e960000),
+	  SPH_C32(0xb2220159), SPH_C32(0x65abd121), SPH_C32(0xbc309d0a),
+	  SPH_C32(0x1b499373), SPH_C32(0x9bbaba51), SPH_C32(0x44a30000),
+	  SPH_C32(0xd0c00000), SPH_C32(0x0a610000), SPH_C32(0xf3af01ef),
+	  SPH_C32(0x0e63733b), SPH_C32(0x5a8fc56b), SPH_C32(0xf5ce9b1e),
+	  SPH_C32(0xf1276c7f) },
+	{ SPH_C32(0x95ff0000), SPH_C32(0xfe0d0000), SPH_C32(0xe1580000),
+	  SPH_C32(0x62f80141), SPH_C32(0x3127a59f), SPH_C32(0xff43f26b),
+	  SPH_C32(0x61c38617), SPH_C32(0x59ea6d0a), SPH_C32(0xb17f0000),
+	  SPH_C32(0xff4c0000), SPH_C32(0x0b130000), SPH_C32(0x654801f2),
+	  SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e), SPH_C32(0x122528ab),
+	  SPH_C32(0x10b1d693) },
+	{ SPH_C32(0x3d250000), SPH_C32(0x68b30000), SPH_C32(0xbd450000),
+	  SPH_C32(0x65220143), SPH_C32(0x4c41301c), SPH_C32(0xe0db82e1),
+	  SPH_C32(0xdaa50e1f), SPH_C32(0x836ded0a), SPH_C32(0x1a980000),
+	  SPH_C32(0x61410000), SPH_C32(0xa4340000), SPH_C32(0x585001f7),
+	  SPH_C32(0xa6cd78dc), SPH_C32(0xf53de50b), SPH_C32(0xa7e66f40),
+	  SPH_C32(0x2cec296d) },
+	{ SPH_C32(0x946c0000), SPH_C32(0x198f0000), SPH_C32(0x0ca30000),
+	  SPH_C32(0xadf4014a), SPH_C32(0xbcf728c7), SPH_C32(0x43e04645),
+	  SPH_C32(0x67f5e7f6), SPH_C32(0x0a85f371), SPH_C32(0x23570000),
+	  SPH_C32(0x23c90000), SPH_C32(0x5ce90000), SPH_C32(0x339401f1),
+	  SPH_C32(0x306b4419), SPH_C32(0xdb245092), SPH_C32(0x82ebdff9),
+	  SPH_C32(0x6ba7a344) },
+	{ SPH_C32(0x3cb60000), SPH_C32(0x8f310000), SPH_C32(0x50be0000),
+	  SPH_C32(0xaa2e0148), SPH_C32(0xc191bd44), SPH_C32(0x5c7836cf),
+	  SPH_C32(0xdc936ffe), SPH_C32(0xd0027371), SPH_C32(0x88b00000),
+	  SPH_C32(0xbdc40000), SPH_C32(0xf3ce0000), SPH_C32(0x0e8c01f4),
+	  SPH_C32(0x1c245bca), SPH_C32(0xafd24607), SPH_C32(0x37289812),
+	  SPH_C32(0x57fa5cba) },
+	{ SPH_C32(0x07d70000), SPH_C32(0x22880000), SPH_C32(0xb6a20000),
+	  SPH_C32(0x34240142), SPH_C32(0x8bce8689), SPH_C32(0xa5ac5167),
+	  SPH_C32(0xf10d7145), SPH_C32(0x22fc18dd), SPH_C32(0x22c40000),
+	  SPH_C32(0xc44b0000), SPH_C32(0xb1120000), SPH_C32(0xfc9801fa),
+	  SPH_C32(0xbdbbc941), SPH_C32(0x6787e4bc), SPH_C32(0x84ddbe18),
+	  SPH_C32(0x38c83d3f) },
+	{ SPH_C32(0xaf0d0000), SPH_C32(0xb4360000), SPH_C32(0xeabf0000),
+	  SPH_C32(0x33fe0140), SPH_C32(0xf6a8130a), SPH_C32(0xba3421ed),
+	  SPH_C32(0x4a6bf94d), SPH_C32(0xf87b98dd), SPH_C32(0x89230000),
+	  SPH_C32(0x5a460000), SPH_C32(0x1e350000), SPH_C32(0xc18001ff),
+	  SPH_C32(0x91f4d692), SPH_C32(0x1371f229), SPH_C32(0x311ef9f3),
+	  SPH_C32(0x0495c2c1) },
+	{ SPH_C32(0x06440000), SPH_C32(0xc50a0000), SPH_C32(0x5b590000),
+	  SPH_C32(0xfb280149), SPH_C32(0x061e0bd1), SPH_C32(0x190fe549),
+	  SPH_C32(0xf73b10a4), SPH_C32(0x719386a6), SPH_C32(0xb0ec0000),
+	  SPH_C32(0x18ce0000), SPH_C32(0xe6e80000), SPH_C32(0xaa4401f9),
+	  SPH_C32(0x0752ea57), SPH_C32(0x3d6847b0), SPH_C32(0x1413494a),
+	  SPH_C32(0x43de48e8) },
+	{ SPH_C32(0xae9e0000), SPH_C32(0x53b40000), SPH_C32(0x07440000),
+	  SPH_C32(0xfcf2014b), SPH_C32(0x7b789e52), SPH_C32(0x069795c3),
+	  SPH_C32(0x4c5d98ac), SPH_C32(0xab1406a6), SPH_C32(0x1b0b0000),
+	  SPH_C32(0x86c30000), SPH_C32(0x49cf0000), SPH_C32(0x975c01fc),
+	  SPH_C32(0x2b1df584), SPH_C32(0x499e5125), SPH_C32(0xa1d00ea1),
+	  SPH_C32(0x7f83b716) },
+	{ SPH_C32(0xca570000), SPH_C32(0xa80e0000), SPH_C32(0xa2f60000),
+	  SPH_C32(0x060b0152), SPH_C32(0x14592320), SPH_C32(0xec526625),
+	  SPH_C32(0x35dd13a8), SPH_C32(0xd74eb663), SPH_C32(0xb13b0000),
+	  SPH_C32(0x80040000), SPH_C32(0xd16f0000), SPH_C32(0x4f6b01f3),
+	  SPH_C32(0xb12faec3), SPH_C32(0x287d6f19), SPH_C32(0x112fb6cb),
+	  SPH_C32(0xaebbb10d) },
+	{ SPH_C32(0x628d0000), SPH_C32(0x3eb00000), SPH_C32(0xfeeb0000),
+	  SPH_C32(0x01d10150), SPH_C32(0x693fb6a3), SPH_C32(0xf3ca16af),
+	  SPH_C32(0x8ebb9ba0), SPH_C32(0x0dc93663), SPH_C32(0x1adc0000),
+	  SPH_C32(0x1e090000), SPH_C32(0x7e480000), SPH_C32(0x727301f6),
+	  SPH_C32(0x9d60b110), SPH_C32(0x5c8b798c), SPH_C32(0xa4ecf120),
+	  SPH_C32(0x92e64ef3) },
+	{ SPH_C32(0xcbc40000), SPH_C32(0x4f8c0000), SPH_C32(0x4f0d0000),
+	  SPH_C32(0xc9070159), SPH_C32(0x9989ae78), SPH_C32(0x50f1d20b),
+	  SPH_C32(0x33eb7249), SPH_C32(0x84212818), SPH_C32(0x23130000),
+	  SPH_C32(0x5c810000), SPH_C32(0x86950000), SPH_C32(0x19b701f0),
+	  SPH_C32(0x0bc68dd5), SPH_C32(0x7292cc15), SPH_C32(0x81e14199),
+	  SPH_C32(0xd5adc4da) },
+	{ SPH_C32(0x631e0000), SPH_C32(0xd9320000), SPH_C32(0x13100000),
+	  SPH_C32(0xcedd015b), SPH_C32(0xe4ef3bfb), SPH_C32(0x4f69a281),
+	  SPH_C32(0x888dfa41), SPH_C32(0x5ea6a818), SPH_C32(0x88f40000),
+	  SPH_C32(0xc28c0000), SPH_C32(0x29b20000), SPH_C32(0x24af01f5),
+	  SPH_C32(0x27899206), SPH_C32(0x0664da80), SPH_C32(0x34220672),
+	  SPH_C32(0xe9f03b24) },
+	{ SPH_C32(0x587f0000), SPH_C32(0x748b0000), SPH_C32(0xf50c0000),
+	  SPH_C32(0x50d70151), SPH_C32(0xaeb00036), SPH_C32(0xb6bdc529),
+	  SPH_C32(0xa513e4fa), SPH_C32(0xac58c3b4), SPH_C32(0x22800000),
+	  SPH_C32(0xbb030000), SPH_C32(0x6b6e0000), SPH_C32(0xd6bb01fb),
+	  SPH_C32(0x8616008d), SPH_C32(0xce31783b), SPH_C32(0x87d72078),
+	  SPH_C32(0x86c25aa1) },
+	{ SPH_C32(0xf0a50000), SPH_C32(0xe2350000), SPH_C32(0xa9110000),
+	  SPH_C32(0x570d0153), SPH_C32(0xd3d695b5), SPH_C32(0xa925b5a3),
+	  SPH_C32(0x1e756cf2), SPH_C32(0x76df43b4), SPH_C32(0x89670000),
+	  SPH_C32(0x250e0000), SPH_C32(0xc4490000), SPH_C32(0xeba301fe),
+	  SPH_C32(0xaa591f5e), SPH_C32(0xbac76eae), SPH_C32(0x32146793),
+	  SPH_C32(0xba9fa55f) },
+	{ SPH_C32(0x59ec0000), SPH_C32(0x93090000), SPH_C32(0x18f70000),
+	  SPH_C32(0x9fdb015a), SPH_C32(0x23608d6e), SPH_C32(0x0a1e7107),
+	  SPH_C32(0xa325851b), SPH_C32(0xff375dcf), SPH_C32(0xb0a80000),
+	  SPH_C32(0x67860000), SPH_C32(0x3c940000), SPH_C32(0x806701f8),
+	  SPH_C32(0x3cff239b), SPH_C32(0x94dedb37), SPH_C32(0x1719d72a),
+	  SPH_C32(0xfdd42f76) },
+	{ SPH_C32(0xf1360000), SPH_C32(0x05b70000), SPH_C32(0x44ea0000),
+	  SPH_C32(0x98010158), SPH_C32(0x5e0618ed), SPH_C32(0x1586018d),
+	  SPH_C32(0x18430d13), SPH_C32(0x25b0ddcf), SPH_C32(0x1b4f0000),
+	  SPH_C32(0xf98b0000), SPH_C32(0x93b30000), SPH_C32(0xbd7f01fd),
+	  SPH_C32(0x10b03c48), SPH_C32(0xe028cda2), SPH_C32(0xa2da90c1),
+	  SPH_C32(0xc189d088) }
+};
+
+static const sph_u32 T512_63[2][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc >> 1][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		acc = (acc << 8) | buf[1]; \
+		rp = &T512_7[(acc >> 2) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[2]; \
+		rp = &T512_14[(acc >> 3) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[3]; \
+		rp = &T512_21[(acc >> 4) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[4]; \
+		rp = &T512_28[(acc >> 5) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[5]; \
+		rp = &T512_35[(acc >> 6) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = (acc << 8) | buf[6]; \
+		rp = &T512_42[(acc >> 7) & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_49[acc & 0x7f][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[7]; \
+		rp = &T512_56[acc >> 1][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		rp = &T512_63[acc & 0x01][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#if SPH_HAMSI_EXPAND_BIG == 8
+
+static const sph_u32 T512_0[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xef0b0270), SPH_C32(0x3afd0000), SPH_C32(0x5dae0000),
+	  SPH_C32(0x69490000), SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9),
+	  SPH_C32(0x66140a51), SPH_C32(0x924f5d0a), SPH_C32(0xc96b0030),
+	  SPH_C32(0xe7250000), SPH_C32(0x2f840000), SPH_C32(0x264f0000),
+	  SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137), SPH_C32(0x509f6984),
+	  SPH_C32(0x9e69af68) },
+	{ SPH_C32(0xc96b0030), SPH_C32(0xe7250000), SPH_C32(0x2f840000),
+	  SPH_C32(0x264f0000), SPH_C32(0x08695bf9), SPH_C32(0x6dfcf137),
+	  SPH_C32(0x509f6984), SPH_C32(0x9e69af68), SPH_C32(0x26600240),
+	  SPH_C32(0xddd80000), SPH_C32(0x722a0000), SPH_C32(0x4f060000),
+	  SPH_C32(0x936667ff), SPH_C32(0x29f944ce), SPH_C32(0x368b63d5),
+	  SPH_C32(0x0c26f262) },
+	{ SPH_C32(0x26600240), SPH_C32(0xddd80000), SPH_C32(0x722a0000),
+	  SPH_C32(0x4f060000), SPH_C32(0x936667ff), SPH_C32(0x29f944ce),
+	  SPH_C32(0x368b63d5), SPH_C32(0x0c26f262), SPH_C32(0xef0b0270),
+	  SPH_C32(0x3afd0000), SPH_C32(0x5dae0000), SPH_C32(0x69490000),
+	  SPH_C32(0x9b0f3c06), SPH_C32(0x4405b5f9), SPH_C32(0x66140a51),
+	  SPH_C32(0x924f5d0a) },
+	{ SPH_C32(0x145a3c00), SPH_C32(0xb9e90000), SPH_C32(0x61270000),
+	  SPH_C32(0xf1610000), SPH_C32(0xce613d6c), SPH_C32(0xb0493d78),
+	  SPH_C32(0x47a96720), SPH_C32(0xe18e24c5), SPH_C32(0x23671400),
+	  SPH_C32(0xc8b90000), SPH_C32(0xf4c70000), SPH_C32(0xfb750000),
+	  SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549), SPH_C32(0x02c40a3f),
+	  SPH_C32(0xdc24e61f) },
+	{ SPH_C32(0xfb513e70), SPH_C32(0x83140000), SPH_C32(0x3c890000),
+	  SPH_C32(0x98280000), SPH_C32(0x556e016a), SPH_C32(0xf44c8881),
+	  SPH_C32(0x21bd6d71), SPH_C32(0x73c179cf), SPH_C32(0xea0c1430),
+	  SPH_C32(0x2f9c0000), SPH_C32(0xdb430000), SPH_C32(0xdd3a0000),
+	  SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e), SPH_C32(0x525b63bb),
+	  SPH_C32(0x424d4977) },
+	{ SPH_C32(0xdd313c30), SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000),
+	  SPH_C32(0xd72e0000), SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f),
+	  SPH_C32(0x17360ea4), SPH_C32(0x7fe78bad), SPH_C32(0x05071640),
+	  SPH_C32(0x15610000), SPH_C32(0x86ed0000), SPH_C32(0xb4730000),
+	  SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187), SPH_C32(0x344f69ea),
+	  SPH_C32(0xd002147d) },
+	{ SPH_C32(0x323a3e40), SPH_C32(0x64310000), SPH_C32(0x130d0000),
+	  SPH_C32(0xbe670000), SPH_C32(0x5d075a93), SPH_C32(0x99b079b6),
+	  SPH_C32(0x712204f5), SPH_C32(0xeda8d6a7), SPH_C32(0xcc6c1670),
+	  SPH_C32(0xf2440000), SPH_C32(0xa9690000), SPH_C32(0x923c0000),
+	  SPH_C32(0xe8c21863), SPH_C32(0xbca310b0), SPH_C32(0x64d0006e),
+	  SPH_C32(0x4e6bbb15) },
+	{ SPH_C32(0x23671400), SPH_C32(0xc8b90000), SPH_C32(0xf4c70000),
+	  SPH_C32(0xfb750000), SPH_C32(0x73cd2465), SPH_C32(0xf8a6a549),
+	  SPH_C32(0x02c40a3f), SPH_C32(0xdc24e61f), SPH_C32(0x373d2800),
+	  SPH_C32(0x71500000), SPH_C32(0x95e00000), SPH_C32(0x0a140000),
+	  SPH_C32(0xbdac1909), SPH_C32(0x48ef9831), SPH_C32(0x456d6d1f),
+	  SPH_C32(0x3daac2da) },
+	{ SPH_C32(0xcc6c1670), SPH_C32(0xf2440000), SPH_C32(0xa9690000),
+	  SPH_C32(0x923c0000), SPH_C32(0xe8c21863), SPH_C32(0xbca310b0),
+	  SPH_C32(0x64d0006e), SPH_C32(0x4e6bbb15), SPH_C32(0xfe562830),
+	  SPH_C32(0x96750000), SPH_C32(0xba640000), SPH_C32(0x2c5b0000),
+	  SPH_C32(0xb5c542f0), SPH_C32(0x25136906), SPH_C32(0x15f2049b),
+	  SPH_C32(0xa3c36db2) },
+	{ SPH_C32(0xea0c1430), SPH_C32(0x2f9c0000), SPH_C32(0xdb430000),
+	  SPH_C32(0xdd3a0000), SPH_C32(0x7ba47f9c), SPH_C32(0x955a547e),
+	  SPH_C32(0x525b63bb), SPH_C32(0x424d4977), SPH_C32(0x115d2a40),
+	  SPH_C32(0xac880000), SPH_C32(0xe7ca0000), SPH_C32(0x45120000),
+	  SPH_C32(0x2eca7ef6), SPH_C32(0x6116dcff), SPH_C32(0x73e60eca),
+	  SPH_C32(0x318c30b8) },
+	{ SPH_C32(0x05071640), SPH_C32(0x15610000), SPH_C32(0x86ed0000),
+	  SPH_C32(0xb4730000), SPH_C32(0xe0ab439a), SPH_C32(0xd15fe187),
+	  SPH_C32(0x344f69ea), SPH_C32(0xd002147d), SPH_C32(0xd8362a70),
+	  SPH_C32(0x4bad0000), SPH_C32(0xc84e0000), SPH_C32(0x635d0000),
+	  SPH_C32(0x26a3250f), SPH_C32(0x0cea2dc8), SPH_C32(0x2379674e),
+	  SPH_C32(0xafe59fd0) },
+	{ SPH_C32(0x373d2800), SPH_C32(0x71500000), SPH_C32(0x95e00000),
+	  SPH_C32(0x0a140000), SPH_C32(0xbdac1909), SPH_C32(0x48ef9831),
+	  SPH_C32(0x456d6d1f), SPH_C32(0x3daac2da), SPH_C32(0x145a3c00),
+	  SPH_C32(0xb9e90000), SPH_C32(0x61270000), SPH_C32(0xf1610000),
+	  SPH_C32(0xce613d6c), SPH_C32(0xb0493d78), SPH_C32(0x47a96720),
+	  SPH_C32(0xe18e24c5) },
+	{ SPH_C32(0xd8362a70), SPH_C32(0x4bad0000), SPH_C32(0xc84e0000),
+	  SPH_C32(0x635d0000), SPH_C32(0x26a3250f), SPH_C32(0x0cea2dc8),
+	  SPH_C32(0x2379674e), SPH_C32(0xafe59fd0), SPH_C32(0xdd313c30),
+	  SPH_C32(0x5ecc0000), SPH_C32(0x4ea30000), SPH_C32(0xd72e0000),
+	  SPH_C32(0xc6086695), SPH_C32(0xddb5cc4f), SPH_C32(0x17360ea4),
+	  SPH_C32(0x7fe78bad) },
+	{ SPH_C32(0xfe562830), SPH_C32(0x96750000), SPH_C32(0xba640000),
+	  SPH_C32(0x2c5b0000), SPH_C32(0xb5c542f0), SPH_C32(0x25136906),
+	  SPH_C32(0x15f2049b), SPH_C32(0xa3c36db2), SPH_C32(0x323a3e40),
+	  SPH_C32(0x64310000), SPH_C32(0x130d0000), SPH_C32(0xbe670000),
+	  SPH_C32(0x5d075a93), SPH_C32(0x99b079b6), SPH_C32(0x712204f5),
+	  SPH_C32(0xeda8d6a7) },
+	{ SPH_C32(0x115d2a40), SPH_C32(0xac880000), SPH_C32(0xe7ca0000),
+	  SPH_C32(0x45120000), SPH_C32(0x2eca7ef6), SPH_C32(0x6116dcff),
+	  SPH_C32(0x73e60eca), SPH_C32(0x318c30b8), SPH_C32(0xfb513e70),
+	  SPH_C32(0x83140000), SPH_C32(0x3c890000), SPH_C32(0x98280000),
+	  SPH_C32(0x556e016a), SPH_C32(0xf44c8881), SPH_C32(0x21bd6d71),
+	  SPH_C32(0x73c179cf) },
+	{ SPH_C32(0x54285c00), SPH_C32(0xeaed0000), SPH_C32(0xc5d60000),
+	  SPH_C32(0xa1c50000), SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1),
+	  SPH_C32(0x6bb0419d), SPH_C32(0x551b3782), SPH_C32(0x9cbb1800),
+	  SPH_C32(0xb0d30000), SPH_C32(0x92510000), SPH_C32(0xed930000),
+	  SPH_C32(0x593a4345), SPH_C32(0xe114d5f4), SPH_C32(0x430633da),
+	  SPH_C32(0x78cace29) },
+	{ SPH_C32(0xbb235e70), SPH_C32(0xd0100000), SPH_C32(0x98780000),
+	  SPH_C32(0xc88c0000), SPH_C32(0x28ad5b76), SPH_C32(0xd0a07118),
+	  SPH_C32(0x0da44bcc), SPH_C32(0xc7546a88), SPH_C32(0x55d01830),
+	  SPH_C32(0x57f60000), SPH_C32(0xbdd50000), SPH_C32(0xcbdc0000),
+	  SPH_C32(0x515318bc), SPH_C32(0x8ce824c3), SPH_C32(0x13995a5e),
+	  SPH_C32(0xe6a36141) },
+	{ SPH_C32(0x9d435c30), SPH_C32(0x0dc80000), SPH_C32(0xea520000),
+	  SPH_C32(0x878a0000), SPH_C32(0xbbcb3c89), SPH_C32(0xf95935d6),
+	  SPH_C32(0x3b2f2819), SPH_C32(0xcb7298ea), SPH_C32(0xbadb1a40),
+	  SPH_C32(0x6d0b0000), SPH_C32(0xe07b0000), SPH_C32(0xa2950000),
+	  SPH_C32(0xca5c24ba), SPH_C32(0xc8ed913a), SPH_C32(0x758d500f),
+	  SPH_C32(0x74ec3c4b) },
+	{ SPH_C32(0x72485e40), SPH_C32(0x37350000), SPH_C32(0xb7fc0000),
+	  SPH_C32(0xeec30000), SPH_C32(0x20c4008f), SPH_C32(0xbd5c802f),
+	  SPH_C32(0x5d3b2248), SPH_C32(0x593dc5e0), SPH_C32(0x73b01a70),
+	  SPH_C32(0x8a2e0000), SPH_C32(0xcfff0000), SPH_C32(0x84da0000),
+	  SPH_C32(0xc2357f43), SPH_C32(0xa511600d), SPH_C32(0x2512398b),
+	  SPH_C32(0xea859323) },
+	{ SPH_C32(0x40726000), SPH_C32(0x53040000), SPH_C32(0xa4f10000),
+	  SPH_C32(0x50a40000), SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999),
+	  SPH_C32(0x2c1926bd), SPH_C32(0xb4951347), SPH_C32(0xbfdc0c00),
+	  SPH_C32(0x786a0000), SPH_C32(0x66960000), SPH_C32(0x16e60000),
+	  SPH_C32(0x2af76720), SPH_C32(0x19b270bd), SPH_C32(0x41c239e5),
+	  SPH_C32(0xa4ee2836) },
+	{ SPH_C32(0xaf796270), SPH_C32(0x69f90000), SPH_C32(0xf95f0000),
+	  SPH_C32(0x39ed0000), SPH_C32(0xe6cc661a), SPH_C32(0x60e94c60),
+	  SPH_C32(0x4a0d2cec), SPH_C32(0x26da4e4d), SPH_C32(0x76b70c30),
+	  SPH_C32(0x9f4f0000), SPH_C32(0x49120000), SPH_C32(0x30a90000),
+	  SPH_C32(0x229e3cd9), SPH_C32(0x744e818a), SPH_C32(0x115d5061),
+	  SPH_C32(0x3a87875e) },
+	{ SPH_C32(0x89196030), SPH_C32(0xb4210000), SPH_C32(0x8b750000),
+	  SPH_C32(0x76eb0000), SPH_C32(0x75aa01e5), SPH_C32(0x491008ae),
+	  SPH_C32(0x7c864f39), SPH_C32(0x2afcbc2f), SPH_C32(0x99bc0e40),
+	  SPH_C32(0xa5b20000), SPH_C32(0x14bc0000), SPH_C32(0x59e00000),
+	  SPH_C32(0xb99100df), SPH_C32(0x304b3473), SPH_C32(0x77495a30),
+	  SPH_C32(0xa8c8da54) },
+	{ SPH_C32(0x66126240), SPH_C32(0x8edc0000), SPH_C32(0xd6db0000),
+	  SPH_C32(0x1fa20000), SPH_C32(0xeea53de3), SPH_C32(0x0d15bd57),
+	  SPH_C32(0x1a924568), SPH_C32(0xb8b3e125), SPH_C32(0x50d70e70),
+	  SPH_C32(0x42970000), SPH_C32(0x3b380000), SPH_C32(0x7faf0000),
+	  SPH_C32(0xb1f85b26), SPH_C32(0x5db7c544), SPH_C32(0x27d633b4),
+	  SPH_C32(0x36a1753c) },
+	{ SPH_C32(0x774f4800), SPH_C32(0x22540000), SPH_C32(0x31110000),
+	  SPH_C32(0x5ab00000), SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8),
+	  SPH_C32(0x69744ba2), SPH_C32(0x893fd19d), SPH_C32(0xab863000),
+	  SPH_C32(0xc1830000), SPH_C32(0x07b10000), SPH_C32(0xe7870000),
+	  SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5), SPH_C32(0x066b5ec5),
+	  SPH_C32(0x45600cf3) },
+	{ SPH_C32(0x98444a70), SPH_C32(0x18a90000), SPH_C32(0x6cbf0000),
+	  SPH_C32(0x33f90000), SPH_C32(0x5b607f13), SPH_C32(0x2806d451),
+	  SPH_C32(0x0f6041f3), SPH_C32(0x1b708c97), SPH_C32(0x62ed3030),
+	  SPH_C32(0x26a60000), SPH_C32(0x28350000), SPH_C32(0xc1c80000),
+	  SPH_C32(0xecff01b5), SPH_C32(0xc407bcf2), SPH_C32(0x56f43741),
+	  SPH_C32(0xdb09a39b) },
+	{ SPH_C32(0xbe244830), SPH_C32(0xc5710000), SPH_C32(0x1e950000),
+	  SPH_C32(0x7cff0000), SPH_C32(0xc80618ec), SPH_C32(0x01ff909f),
+	  SPH_C32(0x39eb2226), SPH_C32(0x17567ef5), SPH_C32(0x8de63240),
+	  SPH_C32(0x1c5b0000), SPH_C32(0x759b0000), SPH_C32(0xa8810000),
+	  SPH_C32(0x77f03db3), SPH_C32(0x8002090b), SPH_C32(0x30e03d10),
+	  SPH_C32(0x4946fe91) },
+	{ SPH_C32(0x512f4a40), SPH_C32(0xff8c0000), SPH_C32(0x433b0000),
+	  SPH_C32(0x15b60000), SPH_C32(0x530924ea), SPH_C32(0x45fa2566),
+	  SPH_C32(0x5fff2877), SPH_C32(0x851923ff), SPH_C32(0x448d3270),
+	  SPH_C32(0xfb7e0000), SPH_C32(0x5a1f0000), SPH_C32(0x8ece0000),
+	  SPH_C32(0x7f99664a), SPH_C32(0xedfef83c), SPH_C32(0x607f5494),
+	  SPH_C32(0xd72f51f9) },
+	{ SPH_C32(0x63157400), SPH_C32(0x9bbd0000), SPH_C32(0x50360000),
+	  SPH_C32(0xabd10000), SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0),
+	  SPH_C32(0x2edd2c82), SPH_C32(0x68b1f558), SPH_C32(0x88e12400),
+	  SPH_C32(0x093a0000), SPH_C32(0xf3760000), SPH_C32(0x1cf20000),
+	  SPH_C32(0x975b7e29), SPH_C32(0x515de88c), SPH_C32(0x04af54fa),
+	  SPH_C32(0x9944eaec) },
+	{ SPH_C32(0x8c1e7670), SPH_C32(0xa1400000), SPH_C32(0x0d980000),
+	  SPH_C32(0xc2980000), SPH_C32(0x9501427f), SPH_C32(0x984fe929),
+	  SPH_C32(0x48c926d3), SPH_C32(0xfafea852), SPH_C32(0x418a2430),
+	  SPH_C32(0xee1f0000), SPH_C32(0xdcf20000), SPH_C32(0x3abd0000),
+	  SPH_C32(0x9f3225d0), SPH_C32(0x3ca119bb), SPH_C32(0x54303d7e),
+	  SPH_C32(0x072d4584) },
+	{ SPH_C32(0xaa7e7430), SPH_C32(0x7c980000), SPH_C32(0x7fb20000),
+	  SPH_C32(0x8d9e0000), SPH_C32(0x06672580), SPH_C32(0xb1b6ade7),
+	  SPH_C32(0x7e424506), SPH_C32(0xf6d85a30), SPH_C32(0xae812640),
+	  SPH_C32(0xd4e20000), SPH_C32(0x815c0000), SPH_C32(0x53f40000),
+	  SPH_C32(0x043d19d6), SPH_C32(0x78a4ac42), SPH_C32(0x3224372f),
+	  SPH_C32(0x9562188e) },
+	{ SPH_C32(0x45757640), SPH_C32(0x46650000), SPH_C32(0x221c0000),
+	  SPH_C32(0xe4d70000), SPH_C32(0x9d681986), SPH_C32(0xf5b3181e),
+	  SPH_C32(0x18564f57), SPH_C32(0x6497073a), SPH_C32(0x67ea2670),
+	  SPH_C32(0x33c70000), SPH_C32(0xaed80000), SPH_C32(0x75bb0000),
+	  SPH_C32(0x0c54422f), SPH_C32(0x15585d75), SPH_C32(0x62bb5eab),
+	  SPH_C32(0x0b0bb7e6) },
+	{ SPH_C32(0x9cbb1800), SPH_C32(0xb0d30000), SPH_C32(0x92510000),
+	  SPH_C32(0xed930000), SPH_C32(0x593a4345), SPH_C32(0xe114d5f4),
+	  SPH_C32(0x430633da), SPH_C32(0x78cace29), SPH_C32(0xc8934400),
+	  SPH_C32(0x5a3e0000), SPH_C32(0x57870000), SPH_C32(0x4c560000),
+	  SPH_C32(0xea982435), SPH_C32(0x75b11115), SPH_C32(0x28b67247),
+	  SPH_C32(0x2dd1f9ab) },
+	{ SPH_C32(0x73b01a70), SPH_C32(0x8a2e0000), SPH_C32(0xcfff0000),
+	  SPH_C32(0x84da0000), SPH_C32(0xc2357f43), SPH_C32(0xa511600d),
+	  SPH_C32(0x2512398b), SPH_C32(0xea859323), SPH_C32(0x01f84430),
+	  SPH_C32(0xbd1b0000), SPH_C32(0x78030000), SPH_C32(0x6a190000),
+	  SPH_C32(0xe2f17fcc), SPH_C32(0x184de022), SPH_C32(0x78291bc3),
+	  SPH_C32(0xb3b856c3) },
+	{ SPH_C32(0x55d01830), SPH_C32(0x57f60000), SPH_C32(0xbdd50000),
+	  SPH_C32(0xcbdc0000), SPH_C32(0x515318bc), SPH_C32(0x8ce824c3),
+	  SPH_C32(0x13995a5e), SPH_C32(0xe6a36141), SPH_C32(0xeef34640),
+	  SPH_C32(0x87e60000), SPH_C32(0x25ad0000), SPH_C32(0x03500000),
+	  SPH_C32(0x79fe43ca), SPH_C32(0x5c4855db), SPH_C32(0x1e3d1192),
+	  SPH_C32(0x21f70bc9) },
+	{ SPH_C32(0xbadb1a40), SPH_C32(0x6d0b0000), SPH_C32(0xe07b0000),
+	  SPH_C32(0xa2950000), SPH_C32(0xca5c24ba), SPH_C32(0xc8ed913a),
+	  SPH_C32(0x758d500f), SPH_C32(0x74ec3c4b), SPH_C32(0x27984670),
+	  SPH_C32(0x60c30000), SPH_C32(0x0a290000), SPH_C32(0x251f0000),
+	  SPH_C32(0x71971833), SPH_C32(0x31b4a4ec), SPH_C32(0x4ea27816),
+	  SPH_C32(0xbf9ea4a1) },
+	{ SPH_C32(0x88e12400), SPH_C32(0x093a0000), SPH_C32(0xf3760000),
+	  SPH_C32(0x1cf20000), SPH_C32(0x975b7e29), SPH_C32(0x515de88c),
+	  SPH_C32(0x04af54fa), SPH_C32(0x9944eaec), SPH_C32(0xebf45000),
+	  SPH_C32(0x92870000), SPH_C32(0xa3400000), SPH_C32(0xb7230000),
+	  SPH_C32(0x99550050), SPH_C32(0x8d17b45c), SPH_C32(0x2a727878),
+	  SPH_C32(0xf1f51fb4) },
+	{ SPH_C32(0x67ea2670), SPH_C32(0x33c70000), SPH_C32(0xaed80000),
+	  SPH_C32(0x75bb0000), SPH_C32(0x0c54422f), SPH_C32(0x15585d75),
+	  SPH_C32(0x62bb5eab), SPH_C32(0x0b0bb7e6), SPH_C32(0x229f5030),
+	  SPH_C32(0x75a20000), SPH_C32(0x8cc40000), SPH_C32(0x916c0000),
+	  SPH_C32(0x913c5ba9), SPH_C32(0xe0eb456b), SPH_C32(0x7aed11fc),
+	  SPH_C32(0x6f9cb0dc) },
+	{ SPH_C32(0x418a2430), SPH_C32(0xee1f0000), SPH_C32(0xdcf20000),
+	  SPH_C32(0x3abd0000), SPH_C32(0x9f3225d0), SPH_C32(0x3ca119bb),
+	  SPH_C32(0x54303d7e), SPH_C32(0x072d4584), SPH_C32(0xcd945240),
+	  SPH_C32(0x4f5f0000), SPH_C32(0xd16a0000), SPH_C32(0xf8250000),
+	  SPH_C32(0x0a3367af), SPH_C32(0xa4eef092), SPH_C32(0x1cf91bad),
+	  SPH_C32(0xfdd3edd6) },
+	{ SPH_C32(0xae812640), SPH_C32(0xd4e20000), SPH_C32(0x815c0000),
+	  SPH_C32(0x53f40000), SPH_C32(0x043d19d6), SPH_C32(0x78a4ac42),
+	  SPH_C32(0x3224372f), SPH_C32(0x9562188e), SPH_C32(0x04ff5270),
+	  SPH_C32(0xa87a0000), SPH_C32(0xfeee0000), SPH_C32(0xde6a0000),
+	  SPH_C32(0x025a3c56), SPH_C32(0xc91201a5), SPH_C32(0x4c667229),
+	  SPH_C32(0x63ba42be) },
+	{ SPH_C32(0xbfdc0c00), SPH_C32(0x786a0000), SPH_C32(0x66960000),
+	  SPH_C32(0x16e60000), SPH_C32(0x2af76720), SPH_C32(0x19b270bd),
+	  SPH_C32(0x41c239e5), SPH_C32(0xa4ee2836), SPH_C32(0xffae6c00),
+	  SPH_C32(0x2b6e0000), SPH_C32(0xc2670000), SPH_C32(0x46420000),
+	  SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924), SPH_C32(0x6ddb1f58),
+	  SPH_C32(0x107b3b71) },
+	{ SPH_C32(0x50d70e70), SPH_C32(0x42970000), SPH_C32(0x3b380000),
+	  SPH_C32(0x7faf0000), SPH_C32(0xb1f85b26), SPH_C32(0x5db7c544),
+	  SPH_C32(0x27d633b4), SPH_C32(0x36a1753c), SPH_C32(0x36c56c30),
+	  SPH_C32(0xcc4b0000), SPH_C32(0xede30000), SPH_C32(0x600d0000),
+	  SPH_C32(0x5f5d66c5), SPH_C32(0x50a27813), SPH_C32(0x3d4476dc),
+	  SPH_C32(0x8e129419) },
+	{ SPH_C32(0x76b70c30), SPH_C32(0x9f4f0000), SPH_C32(0x49120000),
+	  SPH_C32(0x30a90000), SPH_C32(0x229e3cd9), SPH_C32(0x744e818a),
+	  SPH_C32(0x115d5061), SPH_C32(0x3a87875e), SPH_C32(0xd9ce6e40),
+	  SPH_C32(0xf6b60000), SPH_C32(0xb04d0000), SPH_C32(0x09440000),
+	  SPH_C32(0xc4525ac3), SPH_C32(0x14a7cdea), SPH_C32(0x5b507c8d),
+	  SPH_C32(0x1c5dc913) },
+	{ SPH_C32(0x99bc0e40), SPH_C32(0xa5b20000), SPH_C32(0x14bc0000),
+	  SPH_C32(0x59e00000), SPH_C32(0xb99100df), SPH_C32(0x304b3473),
+	  SPH_C32(0x77495a30), SPH_C32(0xa8c8da54), SPH_C32(0x10a56e70),
+	  SPH_C32(0x11930000), SPH_C32(0x9fc90000), SPH_C32(0x2f0b0000),
+	  SPH_C32(0xcc3b013a), SPH_C32(0x795b3cdd), SPH_C32(0x0bcf1509),
+	  SPH_C32(0x8234667b) },
+	{ SPH_C32(0xab863000), SPH_C32(0xc1830000), SPH_C32(0x07b10000),
+	  SPH_C32(0xe7870000), SPH_C32(0xe4965a4c), SPH_C32(0xa9fb4dc5),
+	  SPH_C32(0x066b5ec5), SPH_C32(0x45600cf3), SPH_C32(0xdcc97800),
+	  SPH_C32(0xe3d70000), SPH_C32(0x36a00000), SPH_C32(0xbd370000),
+	  SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d), SPH_C32(0x6f1f1567),
+	  SPH_C32(0xcc5fdd6e) },
+	{ SPH_C32(0x448d3270), SPH_C32(0xfb7e0000), SPH_C32(0x5a1f0000),
+	  SPH_C32(0x8ece0000), SPH_C32(0x7f99664a), SPH_C32(0xedfef83c),
+	  SPH_C32(0x607f5494), SPH_C32(0xd72f51f9), SPH_C32(0x15a27830),
+	  SPH_C32(0x04f20000), SPH_C32(0x19240000), SPH_C32(0x9b780000),
+	  SPH_C32(0x2c9042a0), SPH_C32(0xa804dd5a), SPH_C32(0x3f807ce3),
+	  SPH_C32(0x52367206) },
+	{ SPH_C32(0x62ed3030), SPH_C32(0x26a60000), SPH_C32(0x28350000),
+	  SPH_C32(0xc1c80000), SPH_C32(0xecff01b5), SPH_C32(0xc407bcf2),
+	  SPH_C32(0x56f43741), SPH_C32(0xdb09a39b), SPH_C32(0xfaa97a40),
+	  SPH_C32(0x3e0f0000), SPH_C32(0x448a0000), SPH_C32(0xf2310000),
+	  SPH_C32(0xb79f7ea6), SPH_C32(0xec0168a3), SPH_C32(0x599476b2),
+	  SPH_C32(0xc0792f0c) },
+	{ SPH_C32(0x8de63240), SPH_C32(0x1c5b0000), SPH_C32(0x759b0000),
+	  SPH_C32(0xa8810000), SPH_C32(0x77f03db3), SPH_C32(0x8002090b),
+	  SPH_C32(0x30e03d10), SPH_C32(0x4946fe91), SPH_C32(0x33c27a70),
+	  SPH_C32(0xd92a0000), SPH_C32(0x6b0e0000), SPH_C32(0xd47e0000),
+	  SPH_C32(0xbff6255f), SPH_C32(0x81fd9994), SPH_C32(0x090b1f36),
+	  SPH_C32(0x5e108064) },
+	{ SPH_C32(0xc8934400), SPH_C32(0x5a3e0000), SPH_C32(0x57870000),
+	  SPH_C32(0x4c560000), SPH_C32(0xea982435), SPH_C32(0x75b11115),
+	  SPH_C32(0x28b67247), SPH_C32(0x2dd1f9ab), SPH_C32(0x54285c00),
+	  SPH_C32(0xeaed0000), SPH_C32(0xc5d60000), SPH_C32(0xa1c50000),
+	  SPH_C32(0xb3a26770), SPH_C32(0x94a5c4e1), SPH_C32(0x6bb0419d),
+	  SPH_C32(0x551b3782) },
+	{ SPH_C32(0x27984670), SPH_C32(0x60c30000), SPH_C32(0x0a290000),
+	  SPH_C32(0x251f0000), SPH_C32(0x71971833), SPH_C32(0x31b4a4ec),
+	  SPH_C32(0x4ea27816), SPH_C32(0xbf9ea4a1), SPH_C32(0x9d435c30),
+	  SPH_C32(0x0dc80000), SPH_C32(0xea520000), SPH_C32(0x878a0000),
+	  SPH_C32(0xbbcb3c89), SPH_C32(0xf95935d6), SPH_C32(0x3b2f2819),
+	  SPH_C32(0xcb7298ea) },
+	{ SPH_C32(0x01f84430), SPH_C32(0xbd1b0000), SPH_C32(0x78030000),
+	  SPH_C32(0x6a190000), SPH_C32(0xe2f17fcc), SPH_C32(0x184de022),
+	  SPH_C32(0x78291bc3), SPH_C32(0xb3b856c3), SPH_C32(0x72485e40),
+	  SPH_C32(0x37350000), SPH_C32(0xb7fc0000), SPH_C32(0xeec30000),
+	  SPH_C32(0x20c4008f), SPH_C32(0xbd5c802f), SPH_C32(0x5d3b2248),
+	  SPH_C32(0x593dc5e0) },
+	{ SPH_C32(0xeef34640), SPH_C32(0x87e60000), SPH_C32(0x25ad0000),
+	  SPH_C32(0x03500000), SPH_C32(0x79fe43ca), SPH_C32(0x5c4855db),
+	  SPH_C32(0x1e3d1192), SPH_C32(0x21f70bc9), SPH_C32(0xbb235e70),
+	  SPH_C32(0xd0100000), SPH_C32(0x98780000), SPH_C32(0xc88c0000),
+	  SPH_C32(0x28ad5b76), SPH_C32(0xd0a07118), SPH_C32(0x0da44bcc),
+	  SPH_C32(0xc7546a88) },
+	{ SPH_C32(0xdcc97800), SPH_C32(0xe3d70000), SPH_C32(0x36a00000),
+	  SPH_C32(0xbd370000), SPH_C32(0x24f91959), SPH_C32(0xc5f82c6d),
+	  SPH_C32(0x6f1f1567), SPH_C32(0xcc5fdd6e), SPH_C32(0x774f4800),
+	  SPH_C32(0x22540000), SPH_C32(0x31110000), SPH_C32(0x5ab00000),
+	  SPH_C32(0xc06f4315), SPH_C32(0x6c0361a8), SPH_C32(0x69744ba2),
+	  SPH_C32(0x893fd19d) },
+	{ SPH_C32(0x33c27a70), SPH_C32(0xd92a0000), SPH_C32(0x6b0e0000),
+	  SPH_C32(0xd47e0000), SPH_C32(0xbff6255f), SPH_C32(0x81fd9994),
+	  SPH_C32(0x090b1f36), SPH_C32(0x5e108064), SPH_C32(0xbe244830),
+	  SPH_C32(0xc5710000), SPH_C32(0x1e950000), SPH_C32(0x7cff0000),
+	  SPH_C32(0xc80618ec), SPH_C32(0x01ff909f), SPH_C32(0x39eb2226),
+	  SPH_C32(0x17567ef5) },
+	{ SPH_C32(0x15a27830), SPH_C32(0x04f20000), SPH_C32(0x19240000),
+	  SPH_C32(0x9b780000), SPH_C32(0x2c9042a0), SPH_C32(0xa804dd5a),
+	  SPH_C32(0x3f807ce3), SPH_C32(0x52367206), SPH_C32(0x512f4a40),
+	  SPH_C32(0xff8c0000), SPH_C32(0x433b0000), SPH_C32(0x15b60000),
+	  SPH_C32(0x530924ea), SPH_C32(0x45fa2566), SPH_C32(0x5fff2877),
+	  SPH_C32(0x851923ff) },
+	{ SPH_C32(0xfaa97a40), SPH_C32(0x3e0f0000), SPH_C32(0x448a0000),
+	  SPH_C32(0xf2310000), SPH_C32(0xb79f7ea6), SPH_C32(0xec0168a3),
+	  SPH_C32(0x599476b2), SPH_C32(0xc0792f0c), SPH_C32(0x98444a70),
+	  SPH_C32(0x18a90000), SPH_C32(0x6cbf0000), SPH_C32(0x33f90000),
+	  SPH_C32(0x5b607f13), SPH_C32(0x2806d451), SPH_C32(0x0f6041f3),
+	  SPH_C32(0x1b708c97) },
+	{ SPH_C32(0xebf45000), SPH_C32(0x92870000), SPH_C32(0xa3400000),
+	  SPH_C32(0xb7230000), SPH_C32(0x99550050), SPH_C32(0x8d17b45c),
+	  SPH_C32(0x2a727878), SPH_C32(0xf1f51fb4), SPH_C32(0x63157400),
+	  SPH_C32(0x9bbd0000), SPH_C32(0x50360000), SPH_C32(0xabd10000),
+	  SPH_C32(0x0e0e7e79), SPH_C32(0xdc4a5cd0), SPH_C32(0x2edd2c82),
+	  SPH_C32(0x68b1f558) },
+	{ SPH_C32(0x04ff5270), SPH_C32(0xa87a0000), SPH_C32(0xfeee0000),
+	  SPH_C32(0xde6a0000), SPH_C32(0x025a3c56), SPH_C32(0xc91201a5),
+	  SPH_C32(0x4c667229), SPH_C32(0x63ba42be), SPH_C32(0xaa7e7430),
+	  SPH_C32(0x7c980000), SPH_C32(0x7fb20000), SPH_C32(0x8d9e0000),
+	  SPH_C32(0x06672580), SPH_C32(0xb1b6ade7), SPH_C32(0x7e424506),
+	  SPH_C32(0xf6d85a30) },
+	{ SPH_C32(0x229f5030), SPH_C32(0x75a20000), SPH_C32(0x8cc40000),
+	  SPH_C32(0x916c0000), SPH_C32(0x913c5ba9), SPH_C32(0xe0eb456b),
+	  SPH_C32(0x7aed11fc), SPH_C32(0x6f9cb0dc), SPH_C32(0x45757640),
+	  SPH_C32(0x46650000), SPH_C32(0x221c0000), SPH_C32(0xe4d70000),
+	  SPH_C32(0x9d681986), SPH_C32(0xf5b3181e), SPH_C32(0x18564f57),
+	  SPH_C32(0x6497073a) },
+	{ SPH_C32(0xcd945240), SPH_C32(0x4f5f0000), SPH_C32(0xd16a0000),
+	  SPH_C32(0xf8250000), SPH_C32(0x0a3367af), SPH_C32(0xa4eef092),
+	  SPH_C32(0x1cf91bad), SPH_C32(0xfdd3edd6), SPH_C32(0x8c1e7670),
+	  SPH_C32(0xa1400000), SPH_C32(0x0d980000), SPH_C32(0xc2980000),
+	  SPH_C32(0x9501427f), SPH_C32(0x984fe929), SPH_C32(0x48c926d3),
+	  SPH_C32(0xfafea852) },
+	{ SPH_C32(0xffae6c00), SPH_C32(0x2b6e0000), SPH_C32(0xc2670000),
+	  SPH_C32(0x46420000), SPH_C32(0x57343d3c), SPH_C32(0x3d5e8924),
+	  SPH_C32(0x6ddb1f58), SPH_C32(0x107b3b71), SPH_C32(0x40726000),
+	  SPH_C32(0x53040000), SPH_C32(0xa4f10000), SPH_C32(0x50a40000),
+	  SPH_C32(0x7dc35a1c), SPH_C32(0x24ecf999), SPH_C32(0x2c1926bd),
+	  SPH_C32(0xb4951347) },
+	{ SPH_C32(0x10a56e70), SPH_C32(0x11930000), SPH_C32(0x9fc90000),
+	  SPH_C32(0x2f0b0000), SPH_C32(0xcc3b013a), SPH_C32(0x795b3cdd),
+	  SPH_C32(0x0bcf1509), SPH_C32(0x8234667b), SPH_C32(0x89196030),
+	  SPH_C32(0xb4210000), SPH_C32(0x8b750000), SPH_C32(0x76eb0000),
+	  SPH_C32(0x75aa01e5), SPH_C32(0x491008ae), SPH_C32(0x7c864f39),
+	  SPH_C32(0x2afcbc2f) },
+	{ SPH_C32(0x36c56c30), SPH_C32(0xcc4b0000), SPH_C32(0xede30000),
+	  SPH_C32(0x600d0000), SPH_C32(0x5f5d66c5), SPH_C32(0x50a27813),
+	  SPH_C32(0x3d4476dc), SPH_C32(0x8e129419), SPH_C32(0x66126240),
+	  SPH_C32(0x8edc0000), SPH_C32(0xd6db0000), SPH_C32(0x1fa20000),
+	  SPH_C32(0xeea53de3), SPH_C32(0x0d15bd57), SPH_C32(0x1a924568),
+	  SPH_C32(0xb8b3e125) },
+	{ SPH_C32(0xd9ce6e40), SPH_C32(0xf6b60000), SPH_C32(0xb04d0000),
+	  SPH_C32(0x09440000), SPH_C32(0xc4525ac3), SPH_C32(0x14a7cdea),
+	  SPH_C32(0x5b507c8d), SPH_C32(0x1c5dc913), SPH_C32(0xaf796270),
+	  SPH_C32(0x69f90000), SPH_C32(0xf95f0000), SPH_C32(0x39ed0000),
+	  SPH_C32(0xe6cc661a), SPH_C32(0x60e94c60), SPH_C32(0x4a0d2cec),
+	  SPH_C32(0x26da4e4d) },
+	{ SPH_C32(0x29449c00), SPH_C32(0x64e70000), SPH_C32(0xf24b0000),
+	  SPH_C32(0xc2f30000), SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745),
+	  SPH_C32(0xf3e04259), SPH_C32(0x8d0d9ec4), SPH_C32(0x466d0c00),
+	  SPH_C32(0x08620000), SPH_C32(0xdd5d0000), SPH_C32(0xbadd0000),
+	  SPH_C32(0x6a927942), SPH_C32(0x441f2b93), SPH_C32(0x218ace6f),
+	  SPH_C32(0xbf2c0be2) },
+	{ SPH_C32(0xc64f9e70), SPH_C32(0x5e1a0000), SPH_C32(0xafe50000),
+	  SPH_C32(0xabba0000), SPH_C32(0x95d17289), SPH_C32(0x12c782bc),
+	  SPH_C32(0x95f44808), SPH_C32(0x1f42c3ce), SPH_C32(0x8f060c30),
+	  SPH_C32(0xef470000), SPH_C32(0xf2d90000), SPH_C32(0x9c920000),
+	  SPH_C32(0x62fb22bb), SPH_C32(0x29e3daa4), SPH_C32(0x7115a7eb),
+	  SPH_C32(0x2145a48a) },
+	{ SPH_C32(0xe02f9c30), SPH_C32(0x83c20000), SPH_C32(0xddcf0000),
+	  SPH_C32(0xe4bc0000), SPH_C32(0x06b71576), SPH_C32(0x3b3ec672),
+	  SPH_C32(0xa37f2bdd), SPH_C32(0x136431ac), SPH_C32(0x600d0e40),
+	  SPH_C32(0xd5ba0000), SPH_C32(0xaf770000), SPH_C32(0xf5db0000),
+	  SPH_C32(0xf9f41ebd), SPH_C32(0x6de66f5d), SPH_C32(0x1701adba),
+	  SPH_C32(0xb30af980) },
+	{ SPH_C32(0x0f249e40), SPH_C32(0xb93f0000), SPH_C32(0x80610000),
+	  SPH_C32(0x8df50000), SPH_C32(0x9db82970), SPH_C32(0x7f3b738b),
+	  SPH_C32(0xc56b218c), SPH_C32(0x812b6ca6), SPH_C32(0xa9660e70),
+	  SPH_C32(0x329f0000), SPH_C32(0x80f30000), SPH_C32(0xd3940000),
+	  SPH_C32(0xf19d4544), SPH_C32(0x001a9e6a), SPH_C32(0x479ec43e),
+	  SPH_C32(0x2d6356e8) },
+	{ SPH_C32(0x3d1ea000), SPH_C32(0xdd0e0000), SPH_C32(0x936c0000),
+	  SPH_C32(0x33920000), SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d),
+	  SPH_C32(0xb4492579), SPH_C32(0x6c83ba01), SPH_C32(0x650a1800),
+	  SPH_C32(0xc0db0000), SPH_C32(0x299a0000), SPH_C32(0x41a80000),
+	  SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda), SPH_C32(0x234ec450),
+	  SPH_C32(0x6308edfd) },
+	{ SPH_C32(0xd215a270), SPH_C32(0xe7f30000), SPH_C32(0xcec20000),
+	  SPH_C32(0x5adb0000), SPH_C32(0x5bb04fe5), SPH_C32(0xa28ebfc4),
+	  SPH_C32(0xd25d2f28), SPH_C32(0xfecce70b), SPH_C32(0xac611830),
+	  SPH_C32(0x27fe0000), SPH_C32(0x061e0000), SPH_C32(0x67e70000),
+	  SPH_C32(0x113606de), SPH_C32(0xd1457fed), SPH_C32(0x73d1add4),
+	  SPH_C32(0xfd614295) },
+	{ SPH_C32(0xf475a030), SPH_C32(0x3a2b0000), SPH_C32(0xbce80000),
+	  SPH_C32(0x15dd0000), SPH_C32(0xc8d6281a), SPH_C32(0x8b77fb0a),
+	  SPH_C32(0xe4d64cfd), SPH_C32(0xf2ea1569), SPH_C32(0x436a1a40),
+	  SPH_C32(0x1d030000), SPH_C32(0x5bb00000), SPH_C32(0x0eae0000),
+	  SPH_C32(0x8a393ad8), SPH_C32(0x9540ca14), SPH_C32(0x15c5a785),
+	  SPH_C32(0x6f2e1f9f) },
+	{ SPH_C32(0x1b7ea240), SPH_C32(0x00d60000), SPH_C32(0xe1460000),
+	  SPH_C32(0x7c940000), SPH_C32(0x53d9141c), SPH_C32(0xcf724ef3),
+	  SPH_C32(0x82c246ac), SPH_C32(0x60a54863), SPH_C32(0x8a011a70),
+	  SPH_C32(0xfa260000), SPH_C32(0x74340000), SPH_C32(0x28e10000),
+	  SPH_C32(0x82506121), SPH_C32(0xf8bc3b23), SPH_C32(0x455ace01),
+	  SPH_C32(0xf147b0f7) },
+	{ SPH_C32(0x0a238800), SPH_C32(0xac5e0000), SPH_C32(0x068c0000),
+	  SPH_C32(0x39860000), SPH_C32(0x7d136aea), SPH_C32(0xae64920c),
+	  SPH_C32(0xf1244866), SPH_C32(0x512978db), SPH_C32(0x71502400),
+	  SPH_C32(0x79320000), SPH_C32(0x48bd0000), SPH_C32(0xb0c90000),
+	  SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2), SPH_C32(0x64e7a370),
+	  SPH_C32(0x8286c938) },
+	{ SPH_C32(0xe5288a70), SPH_C32(0x96a30000), SPH_C32(0x5b220000),
+	  SPH_C32(0x50cf0000), SPH_C32(0xe61c56ec), SPH_C32(0xea6127f5),
+	  SPH_C32(0x97304237), SPH_C32(0xc36625d1), SPH_C32(0xb83b2430),
+	  SPH_C32(0x9e170000), SPH_C32(0x67390000), SPH_C32(0x96860000),
+	  SPH_C32(0xdf573bb2), SPH_C32(0x610c4295), SPH_C32(0x3478caf4),
+	  SPH_C32(0x1cef6650) },
+	{ SPH_C32(0xc3488830), SPH_C32(0x4b7b0000), SPH_C32(0x29080000),
+	  SPH_C32(0x1fc90000), SPH_C32(0x757a3113), SPH_C32(0xc398633b),
+	  SPH_C32(0xa1bb21e2), SPH_C32(0xcf40d7b3), SPH_C32(0x57302640),
+	  SPH_C32(0xa4ea0000), SPH_C32(0x3a970000), SPH_C32(0xffcf0000),
+	  SPH_C32(0x445807b4), SPH_C32(0x2509f76c), SPH_C32(0x526cc0a5),
+	  SPH_C32(0x8ea03b5a) },
+	{ SPH_C32(0x2c438a40), SPH_C32(0x71860000), SPH_C32(0x74a60000),
+	  SPH_C32(0x76800000), SPH_C32(0xee750d15), SPH_C32(0x879dd6c2),
+	  SPH_C32(0xc7af2bb3), SPH_C32(0x5d0f8ab9), SPH_C32(0x9e5b2670),
+	  SPH_C32(0x43cf0000), SPH_C32(0x15130000), SPH_C32(0xd9800000),
+	  SPH_C32(0x4c315c4d), SPH_C32(0x48f5065b), SPH_C32(0x02f3a921),
+	  SPH_C32(0x10c99432) },
+	{ SPH_C32(0x1e79b400), SPH_C32(0x15b70000), SPH_C32(0x67ab0000),
+	  SPH_C32(0xc8e70000), SPH_C32(0xb3725786), SPH_C32(0x1e2daf74),
+	  SPH_C32(0xb68d2f46), SPH_C32(0xb0a75c1e), SPH_C32(0x52373000),
+	  SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000), SPH_C32(0x4bbc0000),
+	  SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb), SPH_C32(0x6623a94f),
+	  SPH_C32(0x5ea22f27) },
+	{ SPH_C32(0xf172b670), SPH_C32(0x2f4a0000), SPH_C32(0x3a050000),
+	  SPH_C32(0xa1ae0000), SPH_C32(0x287d6b80), SPH_C32(0x5a281a8d),
+	  SPH_C32(0xd0992517), SPH_C32(0x22e80114), SPH_C32(0x9b5c3030),
+	  SPH_C32(0x56ae0000), SPH_C32(0x93fe0000), SPH_C32(0x6df30000),
+	  SPH_C32(0xac9a1fd7), SPH_C32(0x99aae7dc), SPH_C32(0x36bcc0cb),
+	  SPH_C32(0xc0cb804f) },
+	{ SPH_C32(0xd712b430), SPH_C32(0xf2920000), SPH_C32(0x482f0000),
+	  SPH_C32(0xeea80000), SPH_C32(0xbb1b0c7f), SPH_C32(0x73d15e43),
+	  SPH_C32(0xe61246c2), SPH_C32(0x2ecef376), SPH_C32(0x74573240),
+	  SPH_C32(0x6c530000), SPH_C32(0xce500000), SPH_C32(0x04ba0000),
+	  SPH_C32(0x379523d1), SPH_C32(0xddaf5225), SPH_C32(0x50a8ca9a),
+	  SPH_C32(0x5284dd45) },
+	{ SPH_C32(0x3819b640), SPH_C32(0xc86f0000), SPH_C32(0x15810000),
+	  SPH_C32(0x87e10000), SPH_C32(0x20143079), SPH_C32(0x37d4ebba),
+	  SPH_C32(0x80064c93), SPH_C32(0xbc81ae7c), SPH_C32(0xbd3c3270),
+	  SPH_C32(0x8b760000), SPH_C32(0xe1d40000), SPH_C32(0x22f50000),
+	  SPH_C32(0x3ffc7828), SPH_C32(0xb053a312), SPH_C32(0x0037a31e),
+	  SPH_C32(0xcced722d) },
+	{ SPH_C32(0x7d6cc000), SPH_C32(0x8e0a0000), SPH_C32(0x379d0000),
+	  SPH_C32(0x63360000), SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4),
+	  SPH_C32(0x985003c4), SPH_C32(0xd816a946), SPH_C32(0xdad61400),
+	  SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000), SPH_C32(0x574e0000),
+	  SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67), SPH_C32(0x628cfdb5),
+	  SPH_C32(0xc7e6c5cb) },
+	{ SPH_C32(0x9267c270), SPH_C32(0xb4f70000), SPH_C32(0x6a330000),
+	  SPH_C32(0x0a7f0000), SPH_C32(0x267315f9), SPH_C32(0x8662465d),
+	  SPH_C32(0xfe440995), SPH_C32(0x4a59f44c), SPH_C32(0x13bd1430),
+	  SPH_C32(0x5f940000), SPH_C32(0x60880000), SPH_C32(0x71010000),
+	  SPH_C32(0x3bc161fe), SPH_C32(0xc8f70f50), SPH_C32(0x32139431),
+	  SPH_C32(0x598f6aa3) },
+	{ SPH_C32(0xb407c030), SPH_C32(0x692f0000), SPH_C32(0x18190000),
+	  SPH_C32(0x45790000), SPH_C32(0xb5157206), SPH_C32(0xaf9b0293),
+	  SPH_C32(0xc8cf6a40), SPH_C32(0x467f062e), SPH_C32(0xfcb61640),
+	  SPH_C32(0x65690000), SPH_C32(0x3d260000), SPH_C32(0x18480000),
+	  SPH_C32(0xa0ce5df8), SPH_C32(0x8cf2baa9), SPH_C32(0x54079e60),
+	  SPH_C32(0xcbc037a9) },
+	{ SPH_C32(0x5b0cc240), SPH_C32(0x53d20000), SPH_C32(0x45b70000),
+	  SPH_C32(0x2c300000), SPH_C32(0x2e1a4e00), SPH_C32(0xeb9eb76a),
+	  SPH_C32(0xaedb6011), SPH_C32(0xd4305b24), SPH_C32(0x35dd1670),
+	  SPH_C32(0x824c0000), SPH_C32(0x12a20000), SPH_C32(0x3e070000),
+	  SPH_C32(0xa8a70601), SPH_C32(0xe10e4b9e), SPH_C32(0x0498f7e4),
+	  SPH_C32(0x55a998c1) },
+	{ SPH_C32(0x6936fc00), SPH_C32(0x37e30000), SPH_C32(0x56ba0000),
+	  SPH_C32(0x92570000), SPH_C32(0x731d1493), SPH_C32(0x722ecedc),
+	  SPH_C32(0xdff964e4), SPH_C32(0x39988d83), SPH_C32(0xf9b10000),
+	  SPH_C32(0x70080000), SPH_C32(0xbbcb0000), SPH_C32(0xac3b0000),
+	  SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e), SPH_C32(0x6048f78a),
+	  SPH_C32(0x1bc223d4) },
+	{ SPH_C32(0x863dfe70), SPH_C32(0x0d1e0000), SPH_C32(0x0b140000),
+	  SPH_C32(0xfb1e0000), SPH_C32(0xe8122895), SPH_C32(0x362b7b25),
+	  SPH_C32(0xb9ed6eb5), SPH_C32(0xabd7d089), SPH_C32(0x30da0030),
+	  SPH_C32(0x972d0000), SPH_C32(0x944f0000), SPH_C32(0x8a740000),
+	  SPH_C32(0x480c459b), SPH_C32(0x3051aa19), SPH_C32(0x30d79e0e),
+	  SPH_C32(0x85ab8cbc) },
+	{ SPH_C32(0xa05dfc30), SPH_C32(0xd0c60000), SPH_C32(0x793e0000),
+	  SPH_C32(0xb4180000), SPH_C32(0x7b744f6a), SPH_C32(0x1fd23feb),
+	  SPH_C32(0x8f660d60), SPH_C32(0xa7f122eb), SPH_C32(0xdfd10240),
+	  SPH_C32(0xadd00000), SPH_C32(0xc9e10000), SPH_C32(0xe33d0000),
+	  SPH_C32(0xd303799d), SPH_C32(0x74541fe0), SPH_C32(0x56c3945f),
+	  SPH_C32(0x17e4d1b6) },
+	{ SPH_C32(0x4f56fe40), SPH_C32(0xea3b0000), SPH_C32(0x24900000),
+	  SPH_C32(0xdd510000), SPH_C32(0xe07b736c), SPH_C32(0x5bd78a12),
+	  SPH_C32(0xe9720731), SPH_C32(0x35be7fe1), SPH_C32(0x16ba0270),
+	  SPH_C32(0x4af50000), SPH_C32(0xe6650000), SPH_C32(0xc5720000),
+	  SPH_C32(0xdb6a2264), SPH_C32(0x19a8eed7), SPH_C32(0x065cfddb),
+	  SPH_C32(0x898d7ede) },
+	{ SPH_C32(0x5e0bd400), SPH_C32(0x46b30000), SPH_C32(0xc35a0000),
+	  SPH_C32(0x98430000), SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed),
+	  SPH_C32(0x9a9409fb), SPH_C32(0x04324f59), SPH_C32(0xedeb3c00),
+	  SPH_C32(0xc9e10000), SPH_C32(0xdaec0000), SPH_C32(0x5d5a0000),
+	  SPH_C32(0x8e04230e), SPH_C32(0xede46656), SPH_C32(0x27e190aa),
+	  SPH_C32(0xfa4c0711) },
+	{ SPH_C32(0xb100d670), SPH_C32(0x7c4e0000), SPH_C32(0x9ef40000),
+	  SPH_C32(0xf10a0000), SPH_C32(0x55be319c), SPH_C32(0x7ec4e314),
+	  SPH_C32(0xfc8003aa), SPH_C32(0x967d1253), SPH_C32(0x24803c30),
+	  SPH_C32(0x2ec40000), SPH_C32(0xf5680000), SPH_C32(0x7b150000),
+	  SPH_C32(0x866d78f7), SPH_C32(0x80189761), SPH_C32(0x777ef92e),
+	  SPH_C32(0x6425a879) },
+	{ SPH_C32(0x9760d430), SPH_C32(0xa1960000), SPH_C32(0xecde0000),
+	  SPH_C32(0xbe0c0000), SPH_C32(0xc6d85663), SPH_C32(0x573da7da),
+	  SPH_C32(0xca0b607f), SPH_C32(0x9a5be031), SPH_C32(0xcb8b3e40),
+	  SPH_C32(0x14390000), SPH_C32(0xa8c60000), SPH_C32(0x125c0000),
+	  SPH_C32(0x1d6244f1), SPH_C32(0xc41d2298), SPH_C32(0x116af37f),
+	  SPH_C32(0xf66af573) },
+	{ SPH_C32(0x786bd640), SPH_C32(0x9b6b0000), SPH_C32(0xb1700000),
+	  SPH_C32(0xd7450000), SPH_C32(0x5dd76a65), SPH_C32(0x13381223),
+	  SPH_C32(0xac1f6a2e), SPH_C32(0x0814bd3b), SPH_C32(0x02e03e70),
+	  SPH_C32(0xf31c0000), SPH_C32(0x87420000), SPH_C32(0x34130000),
+	  SPH_C32(0x150b1f08), SPH_C32(0xa9e1d3af), SPH_C32(0x41f59afb),
+	  SPH_C32(0x68035a1b) },
+	{ SPH_C32(0x4a51e800), SPH_C32(0xff5a0000), SPH_C32(0xa27d0000),
+	  SPH_C32(0x69220000), SPH_C32(0x00d030f6), SPH_C32(0x8a886b95),
+	  SPH_C32(0xdd3d6edb), SPH_C32(0xe5bc6b9c), SPH_C32(0xce8c2800),
+	  SPH_C32(0x01580000), SPH_C32(0x2e2b0000), SPH_C32(0xa62f0000),
+	  SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f), SPH_C32(0x25259a95),
+	  SPH_C32(0x2668e10e) },
+	{ SPH_C32(0xa55aea70), SPH_C32(0xc5a70000), SPH_C32(0xffd30000),
+	  SPH_C32(0x006b0000), SPH_C32(0x9bdf0cf0), SPH_C32(0xce8dde6c),
+	  SPH_C32(0xbb29648a), SPH_C32(0x77f33696), SPH_C32(0x07e72830),
+	  SPH_C32(0xe67d0000), SPH_C32(0x01af0000), SPH_C32(0x80600000),
+	  SPH_C32(0xf5a05c92), SPH_C32(0x78be3228), SPH_C32(0x75baf311),
+	  SPH_C32(0xb8014e66) },
+	{ SPH_C32(0x833ae830), SPH_C32(0x187f0000), SPH_C32(0x8df90000),
+	  SPH_C32(0x4f6d0000), SPH_C32(0x08b96b0f), SPH_C32(0xe7749aa2),
+	  SPH_C32(0x8da2075f), SPH_C32(0x7bd5c4f4), SPH_C32(0xe8ec2a40),
+	  SPH_C32(0xdc800000), SPH_C32(0x5c010000), SPH_C32(0xe9290000),
+	  SPH_C32(0x6eaf6094), SPH_C32(0x3cbb87d1), SPH_C32(0x13aef940),
+	  SPH_C32(0x2a4e136c) },
+	{ SPH_C32(0x6c31ea40), SPH_C32(0x22820000), SPH_C32(0xd0570000),
+	  SPH_C32(0x26240000), SPH_C32(0x93b65709), SPH_C32(0xa3712f5b),
+	  SPH_C32(0xebb60d0e), SPH_C32(0xe99a99fe), SPH_C32(0x21872a70),
+	  SPH_C32(0x3ba50000), SPH_C32(0x73850000), SPH_C32(0xcf660000),
+	  SPH_C32(0x66c63b6d), SPH_C32(0x514776e6), SPH_C32(0x433190c4),
+	  SPH_C32(0xb427bc04) },
+	{ SPH_C32(0xb5ff8400), SPH_C32(0xd4340000), SPH_C32(0x601a0000),
+	  SPH_C32(0x2f600000), SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1),
+	  SPH_C32(0xb0e67183), SPH_C32(0xf5c750ed), SPH_C32(0x8efe4800),
+	  SPH_C32(0x525c0000), SPH_C32(0x8ada0000), SPH_C32(0xf68b0000),
+	  SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86), SPH_C32(0x093cbc28),
+	  SPH_C32(0x92fdf249) },
+	{ SPH_C32(0x5af48670), SPH_C32(0xeec90000), SPH_C32(0x3db40000),
+	  SPH_C32(0x46290000), SPH_C32(0xcceb31cc), SPH_C32(0xf3d35748),
+	  SPH_C32(0xd6f27bd2), SPH_C32(0x67880de7), SPH_C32(0x47954830),
+	  SPH_C32(0xb5790000), SPH_C32(0xa55e0000), SPH_C32(0xd0c40000),
+	  SPH_C32(0x8863068e), SPH_C32(0x5c52cbb1), SPH_C32(0x59a3d5ac),
+	  SPH_C32(0x0c945d21) },
+	{ SPH_C32(0x7c948430), SPH_C32(0x33110000), SPH_C32(0x4f9e0000),
+	  SPH_C32(0x092f0000), SPH_C32(0x5f8d5633), SPH_C32(0xda2a1386),
+	  SPH_C32(0xe0791807), SPH_C32(0x6baeff85), SPH_C32(0xa89e4a40),
+	  SPH_C32(0x8f840000), SPH_C32(0xf8f00000), SPH_C32(0xb98d0000),
+	  SPH_C32(0x136c3a88), SPH_C32(0x18577e48), SPH_C32(0x3fb7dffd),
+	  SPH_C32(0x9edb002b) },
+	{ SPH_C32(0x939f8640), SPH_C32(0x09ec0000), SPH_C32(0x12300000),
+	  SPH_C32(0x60660000), SPH_C32(0xc4826a35), SPH_C32(0x9e2fa67f),
+	  SPH_C32(0x866d1256), SPH_C32(0xf9e1a28f), SPH_C32(0x61f54a70),
+	  SPH_C32(0x68a10000), SPH_C32(0xd7740000), SPH_C32(0x9fc20000),
+	  SPH_C32(0x1b056171), SPH_C32(0x75ab8f7f), SPH_C32(0x6f28b679),
+	  SPH_C32(0x00b2af43) },
+	{ SPH_C32(0xa1a5b800), SPH_C32(0x6ddd0000), SPH_C32(0x013d0000),
+	  SPH_C32(0xde010000), SPH_C32(0x998530a6), SPH_C32(0x079fdfc9),
+	  SPH_C32(0xf74f16a3), SPH_C32(0x14497428), SPH_C32(0xad995c00),
+	  SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000), SPH_C32(0x0dfe0000),
+	  SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf), SPH_C32(0x0bf8b617),
+	  SPH_C32(0x4ed91456) },
+	{ SPH_C32(0x4eaeba70), SPH_C32(0x57200000), SPH_C32(0x5c930000),
+	  SPH_C32(0xb7480000), SPH_C32(0x028a0ca0), SPH_C32(0x439a6a30),
+	  SPH_C32(0x915b1cf2), SPH_C32(0x86062922), SPH_C32(0x64f25c30),
+	  SPH_C32(0x7dc00000), SPH_C32(0x51990000), SPH_C32(0x2bb10000),
+	  SPH_C32(0xfbae22eb), SPH_C32(0xa4f46ef8), SPH_C32(0x5b67df93),
+	  SPH_C32(0xd0b0bb3e) },
+	{ SPH_C32(0x68ceb830), SPH_C32(0x8af80000), SPH_C32(0x2eb90000),
+	  SPH_C32(0xf84e0000), SPH_C32(0x91ec6b5f), SPH_C32(0x6a632efe),
+	  SPH_C32(0xa7d07f27), SPH_C32(0x8a20db40), SPH_C32(0x8bf95e40),
+	  SPH_C32(0x473d0000), SPH_C32(0x0c370000), SPH_C32(0x42f80000),
+	  SPH_C32(0x60a11eed), SPH_C32(0xe0f1db01), SPH_C32(0x3d73d5c2),
+	  SPH_C32(0x42ffe634) },
+	{ SPH_C32(0x87c5ba40), SPH_C32(0xb0050000), SPH_C32(0x73170000),
+	  SPH_C32(0x91070000), SPH_C32(0x0ae35759), SPH_C32(0x2e669b07),
+	  SPH_C32(0xc1c47576), SPH_C32(0x186f864a), SPH_C32(0x42925e70),
+	  SPH_C32(0xa0180000), SPH_C32(0x23b30000), SPH_C32(0x64b70000),
+	  SPH_C32(0x68c84514), SPH_C32(0x8d0d2a36), SPH_C32(0x6decbc46),
+	  SPH_C32(0xdc96495c) },
+	{ SPH_C32(0x96989000), SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000),
+	  SPH_C32(0xd4150000), SPH_C32(0x242929af), SPH_C32(0x4f7047f8),
+	  SPH_C32(0xb2227bbc), SPH_C32(0x29e3b6f2), SPH_C32(0xb9c36000),
+	  SPH_C32(0x230c0000), SPH_C32(0x1f3a0000), SPH_C32(0xfc9f0000),
+	  SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7), SPH_C32(0x4c51d137),
+	  SPH_C32(0xaf573093) },
+	{ SPH_C32(0x79939270), SPH_C32(0x26700000), SPH_C32(0xc9730000),
+	  SPH_C32(0xbd5c0000), SPH_C32(0xbf2615a9), SPH_C32(0x0b75f201),
+	  SPH_C32(0xd43671ed), SPH_C32(0xbbacebf8), SPH_C32(0x70a86030),
+	  SPH_C32(0xc4290000), SPH_C32(0x30be0000), SPH_C32(0xdad00000),
+	  SPH_C32(0x35cf1f87), SPH_C32(0x14bd5380), SPH_C32(0x1cceb8b3),
+	  SPH_C32(0x313e9ffb) },
+	{ SPH_C32(0x5ff39030), SPH_C32(0xfba80000), SPH_C32(0xbb590000),
+	  SPH_C32(0xf25a0000), SPH_C32(0x2c407256), SPH_C32(0x228cb6cf),
+	  SPH_C32(0xe2bd1238), SPH_C32(0xb78a199a), SPH_C32(0x9fa36240),
+	  SPH_C32(0xfed40000), SPH_C32(0x6d100000), SPH_C32(0xb3990000),
+	  SPH_C32(0xaec02381), SPH_C32(0x50b8e679), SPH_C32(0x7adab2e2),
+	  SPH_C32(0xa371c2f1) },
+	{ SPH_C32(0xb0f89240), SPH_C32(0xc1550000), SPH_C32(0xe6f70000),
+	  SPH_C32(0x9b130000), SPH_C32(0xb74f4e50), SPH_C32(0x66890336),
+	  SPH_C32(0x84a91869), SPH_C32(0x25c54490), SPH_C32(0x56c86270),
+	  SPH_C32(0x19f10000), SPH_C32(0x42940000), SPH_C32(0x95d60000),
+	  SPH_C32(0xa6a97878), SPH_C32(0x3d44174e), SPH_C32(0x2a45db66),
+	  SPH_C32(0x3d186d99) },
+	{ SPH_C32(0x82c2ac00), SPH_C32(0xa5640000), SPH_C32(0xf5fa0000),
+	  SPH_C32(0x25740000), SPH_C32(0xea4814c3), SPH_C32(0xff397a80),
+	  SPH_C32(0xf58b1c9c), SPH_C32(0xc86d9237), SPH_C32(0x9aa47400),
+	  SPH_C32(0xebb50000), SPH_C32(0xebfd0000), SPH_C32(0x07ea0000),
+	  SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe), SPH_C32(0x4e95db08),
+	  SPH_C32(0x7373d68c) },
+	{ SPH_C32(0x6dc9ae70), SPH_C32(0x9f990000), SPH_C32(0xa8540000),
+	  SPH_C32(0x4c3d0000), SPH_C32(0x714728c5), SPH_C32(0xbb3ccf79),
+	  SPH_C32(0x939f16cd), SPH_C32(0x5a22cf3d), SPH_C32(0x53cf7430),
+	  SPH_C32(0x0c900000), SPH_C32(0xc4790000), SPH_C32(0x21a50000),
+	  SPH_C32(0x46023be2), SPH_C32(0xec1bf6c9), SPH_C32(0x1e0ab28c),
+	  SPH_C32(0xed1a79e4) },
+	{ SPH_C32(0x4ba9ac30), SPH_C32(0x42410000), SPH_C32(0xda7e0000),
+	  SPH_C32(0x033b0000), SPH_C32(0xe2214f3a), SPH_C32(0x92c58bb7),
+	  SPH_C32(0xa5147518), SPH_C32(0x56043d5f), SPH_C32(0xbcc47640),
+	  SPH_C32(0x366d0000), SPH_C32(0x99d70000), SPH_C32(0x48ec0000),
+	  SPH_C32(0xdd0d07e4), SPH_C32(0xa81e4330), SPH_C32(0x781eb8dd),
+	  SPH_C32(0x7f5524ee) },
+	{ SPH_C32(0xa4a2ae40), SPH_C32(0x78bc0000), SPH_C32(0x87d00000),
+	  SPH_C32(0x6a720000), SPH_C32(0x792e733c), SPH_C32(0xd6c03e4e),
+	  SPH_C32(0xc3007f49), SPH_C32(0xc44b6055), SPH_C32(0x75af7670),
+	  SPH_C32(0xd1480000), SPH_C32(0xb6530000), SPH_C32(0x6ea30000),
+	  SPH_C32(0xd5645c1d), SPH_C32(0xc5e2b207), SPH_C32(0x2881d159),
+	  SPH_C32(0xe13c8b86) },
+	{ SPH_C32(0xe1d7d800), SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000),
+	  SPH_C32(0x8ea50000), SPH_C32(0xe4466aba), SPH_C32(0x23732650),
+	  SPH_C32(0xdb56301e), SPH_C32(0xa0dc676f), SPH_C32(0x12455000),
+	  SPH_C32(0xe28f0000), SPH_C32(0x188b0000), SPH_C32(0x1b180000),
+	  SPH_C32(0xd9301e32), SPH_C32(0xd0baef72), SPH_C32(0x4a3a8ff2),
+	  SPH_C32(0xea373c60) },
+	{ SPH_C32(0x0edcda70), SPH_C32(0x04240000), SPH_C32(0xf8620000),
+	  SPH_C32(0xe7ec0000), SPH_C32(0x7f4956bc), SPH_C32(0x677693a9),
+	  SPH_C32(0xbd423a4f), SPH_C32(0x32933a65), SPH_C32(0xdb2e5030),
+	  SPH_C32(0x05aa0000), SPH_C32(0x370f0000), SPH_C32(0x3d570000),
+	  SPH_C32(0xd15945cb), SPH_C32(0xbd461e45), SPH_C32(0x1aa5e676),
+	  SPH_C32(0x745e9308) },
+	{ SPH_C32(0x28bcd830), SPH_C32(0xd9fc0000), SPH_C32(0x8a480000),
+	  SPH_C32(0xa8ea0000), SPH_C32(0xec2f3143), SPH_C32(0x4e8fd767),
+	  SPH_C32(0x8bc9599a), SPH_C32(0x3eb5c807), SPH_C32(0x34255240),
+	  SPH_C32(0x3f570000), SPH_C32(0x6aa10000), SPH_C32(0x541e0000),
+	  SPH_C32(0x4a5679cd), SPH_C32(0xf943abbc), SPH_C32(0x7cb1ec27),
+	  SPH_C32(0xe611ce02) },
+	{ SPH_C32(0xc7b7da40), SPH_C32(0xe3010000), SPH_C32(0xd7e60000),
+	  SPH_C32(0xc1a30000), SPH_C32(0x77200d45), SPH_C32(0x0a8a629e),
+	  SPH_C32(0xeddd53cb), SPH_C32(0xacfa950d), SPH_C32(0xfd4e5270),
+	  SPH_C32(0xd8720000), SPH_C32(0x45250000), SPH_C32(0x72510000),
+	  SPH_C32(0x423f2234), SPH_C32(0x94bf5a8b), SPH_C32(0x2c2e85a3),
+	  SPH_C32(0x7878616a) },
+	{ SPH_C32(0xf58de400), SPH_C32(0x87300000), SPH_C32(0xc4eb0000),
+	  SPH_C32(0x7fc40000), SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28),
+	  SPH_C32(0x9cff573e), SPH_C32(0x415243aa), SPH_C32(0x31224400),
+	  SPH_C32(0x2a360000), SPH_C32(0xec4c0000), SPH_C32(0xe06d0000),
+	  SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b), SPH_C32(0x48fe85cd),
+	  SPH_C32(0x3613da7f) },
+	{ SPH_C32(0x1a86e670), SPH_C32(0xbdcd0000), SPH_C32(0x99450000),
+	  SPH_C32(0x168d0000), SPH_C32(0xb1286bd0), SPH_C32(0xd73faed1),
+	  SPH_C32(0xfaeb5d6f), SPH_C32(0xd31d1ea0), SPH_C32(0xf8494430),
+	  SPH_C32(0xcd130000), SPH_C32(0xc3c80000), SPH_C32(0xc6220000),
+	  SPH_C32(0xa29461ae), SPH_C32(0x45e0bb0c), SPH_C32(0x1861ec49),
+	  SPH_C32(0xa87a7517) },
+	{ SPH_C32(0x3ce6e430), SPH_C32(0x60150000), SPH_C32(0xeb6f0000),
+	  SPH_C32(0x598b0000), SPH_C32(0x224e0c2f), SPH_C32(0xfec6ea1f),
+	  SPH_C32(0xcc603eba), SPH_C32(0xdf3becc2), SPH_C32(0x17424640),
+	  SPH_C32(0xf7ee0000), SPH_C32(0x9e660000), SPH_C32(0xaf6b0000),
+	  SPH_C32(0x399b5da8), SPH_C32(0x01e50ef5), SPH_C32(0x7e75e618),
+	  SPH_C32(0x3a35281d) },
+	{ SPH_C32(0xd3ede640), SPH_C32(0x5ae80000), SPH_C32(0xb6c10000),
+	  SPH_C32(0x30c20000), SPH_C32(0xb9413029), SPH_C32(0xbac35fe6),
+	  SPH_C32(0xaa7434eb), SPH_C32(0x4d74b1c8), SPH_C32(0xde294670),
+	  SPH_C32(0x10cb0000), SPH_C32(0xb1e20000), SPH_C32(0x89240000),
+	  SPH_C32(0x31f20651), SPH_C32(0x6c19ffc2), SPH_C32(0x2eea8f9c),
+	  SPH_C32(0xa45c8775) },
+	{ SPH_C32(0xc2b0cc00), SPH_C32(0xf6600000), SPH_C32(0x510b0000),
+	  SPH_C32(0x75d00000), SPH_C32(0x978b4edf), SPH_C32(0xdbd58319),
+	  SPH_C32(0xd9923a21), SPH_C32(0x7cf88170), SPH_C32(0x25787800),
+	  SPH_C32(0x93df0000), SPH_C32(0x8d6b0000), SPH_C32(0x110c0000),
+	  SPH_C32(0x649c073b), SPH_C32(0x98557743), SPH_C32(0x0f57e2ed),
+	  SPH_C32(0xd79dfeba) },
+	{ SPH_C32(0x2dbbce70), SPH_C32(0xcc9d0000), SPH_C32(0x0ca50000),
+	  SPH_C32(0x1c990000), SPH_C32(0x0c8472d9), SPH_C32(0x9fd036e0),
+	  SPH_C32(0xbf863070), SPH_C32(0xeeb7dc7a), SPH_C32(0xec137830),
+	  SPH_C32(0x74fa0000), SPH_C32(0xa2ef0000), SPH_C32(0x37430000),
+	  SPH_C32(0x6cf55cc2), SPH_C32(0xf5a98674), SPH_C32(0x5fc88b69),
+	  SPH_C32(0x49f451d2) },
+	{ SPH_C32(0x0bdbcc30), SPH_C32(0x11450000), SPH_C32(0x7e8f0000),
+	  SPH_C32(0x539f0000), SPH_C32(0x9fe21526), SPH_C32(0xb629722e),
+	  SPH_C32(0x890d53a5), SPH_C32(0xe2912e18), SPH_C32(0x03187a40),
+	  SPH_C32(0x4e070000), SPH_C32(0xff410000), SPH_C32(0x5e0a0000),
+	  SPH_C32(0xf7fa60c4), SPH_C32(0xb1ac338d), SPH_C32(0x39dc8138),
+	  SPH_C32(0xdbbb0cd8) },
+	{ SPH_C32(0xe4d0ce40), SPH_C32(0x2bb80000), SPH_C32(0x23210000),
+	  SPH_C32(0x3ad60000), SPH_C32(0x04ed2920), SPH_C32(0xf22cc7d7),
+	  SPH_C32(0xef1959f4), SPH_C32(0x70de7312), SPH_C32(0xca737a70),
+	  SPH_C32(0xa9220000), SPH_C32(0xd0c50000), SPH_C32(0x78450000),
+	  SPH_C32(0xff933b3d), SPH_C32(0xdc50c2ba), SPH_C32(0x6943e8bc),
+	  SPH_C32(0x45d2a3b0) },
+	{ SPH_C32(0xd6eaf000), SPH_C32(0x4f890000), SPH_C32(0x302c0000),
+	  SPH_C32(0x84b10000), SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61),
+	  SPH_C32(0x9e3b5d01), SPH_C32(0x9d76a5b5), SPH_C32(0x061f6c00),
+	  SPH_C32(0x5b660000), SPH_C32(0x79ac0000), SPH_C32(0xea790000),
+	  SPH_C32(0x1751235e), SPH_C32(0x60f3d20a), SPH_C32(0x0d93e8d2),
+	  SPH_C32(0x0bb918a5) },
+	{ SPH_C32(0x39e1f270), SPH_C32(0x75740000), SPH_C32(0x6d820000),
+	  SPH_C32(0xedf80000), SPH_C32(0xc2e54fb5), SPH_C32(0x2f990b98),
+	  SPH_C32(0xf82f5750), SPH_C32(0x0f39f8bf), SPH_C32(0xcf746c30),
+	  SPH_C32(0xbc430000), SPH_C32(0x56280000), SPH_C32(0xcc360000),
+	  SPH_C32(0x1f3878a7), SPH_C32(0x0d0f233d), SPH_C32(0x5d0c8156),
+	  SPH_C32(0x95d0b7cd) },
+	{ SPH_C32(0x1f81f030), SPH_C32(0xa8ac0000), SPH_C32(0x1fa80000),
+	  SPH_C32(0xa2fe0000), SPH_C32(0x5183284a), SPH_C32(0x06604f56),
+	  SPH_C32(0xcea43485), SPH_C32(0x031f0add), SPH_C32(0x207f6e40),
+	  SPH_C32(0x86be0000), SPH_C32(0x0b860000), SPH_C32(0xa57f0000),
+	  SPH_C32(0x843744a1), SPH_C32(0x490a96c4), SPH_C32(0x3b188b07),
+	  SPH_C32(0x079feac7) },
+	{ SPH_C32(0xf08af240), SPH_C32(0x92510000), SPH_C32(0x42060000),
+	  SPH_C32(0xcbb70000), SPH_C32(0xca8c144c), SPH_C32(0x4265faaf),
+	  SPH_C32(0xa8b03ed4), SPH_C32(0x915057d7), SPH_C32(0xe9146e70),
+	  SPH_C32(0x619b0000), SPH_C32(0x24020000), SPH_C32(0x83300000),
+	  SPH_C32(0x8c5e1f58), SPH_C32(0x24f667f3), SPH_C32(0x6b87e283),
+	  SPH_C32(0x99f645af) },
+	{ SPH_C32(0x466d0c00), SPH_C32(0x08620000), SPH_C32(0xdd5d0000),
+	  SPH_C32(0xbadd0000), SPH_C32(0x6a927942), SPH_C32(0x441f2b93),
+	  SPH_C32(0x218ace6f), SPH_C32(0xbf2c0be2), SPH_C32(0x6f299000),
+	  SPH_C32(0x6c850000), SPH_C32(0x2f160000), SPH_C32(0x782e0000),
+	  SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6), SPH_C32(0xd26a8c36),
+	  SPH_C32(0x32219526) },
+	{ SPH_C32(0xa9660e70), SPH_C32(0x329f0000), SPH_C32(0x80f30000),
+	  SPH_C32(0xd3940000), SPH_C32(0xf19d4544), SPH_C32(0x001a9e6a),
+	  SPH_C32(0x479ec43e), SPH_C32(0x2d6356e8), SPH_C32(0xa6429030),
+	  SPH_C32(0x8ba00000), SPH_C32(0x00920000), SPH_C32(0x5e610000),
+	  SPH_C32(0x6c256c34), SPH_C32(0x7f21ede1), SPH_C32(0x82f5e5b2),
+	  SPH_C32(0xac483a4e) },
+	{ SPH_C32(0x8f060c30), SPH_C32(0xef470000), SPH_C32(0xf2d90000),
+	  SPH_C32(0x9c920000), SPH_C32(0x62fb22bb), SPH_C32(0x29e3daa4),
+	  SPH_C32(0x7115a7eb), SPH_C32(0x2145a48a), SPH_C32(0x49499240),
+	  SPH_C32(0xb15d0000), SPH_C32(0x5d3c0000), SPH_C32(0x37280000),
+	  SPH_C32(0xf72a5032), SPH_C32(0x3b245818), SPH_C32(0xe4e1efe3),
+	  SPH_C32(0x3e076744) },
+	{ SPH_C32(0x600d0e40), SPH_C32(0xd5ba0000), SPH_C32(0xaf770000),
+	  SPH_C32(0xf5db0000), SPH_C32(0xf9f41ebd), SPH_C32(0x6de66f5d),
+	  SPH_C32(0x1701adba), SPH_C32(0xb30af980), SPH_C32(0x80229270),
+	  SPH_C32(0x56780000), SPH_C32(0x72b80000), SPH_C32(0x11670000),
+	  SPH_C32(0xff430bcb), SPH_C32(0x56d8a92f), SPH_C32(0xb47e8667),
+	  SPH_C32(0xa06ec82c) },
+	{ SPH_C32(0x52373000), SPH_C32(0xb18b0000), SPH_C32(0xbc7a0000),
+	  SPH_C32(0x4bbc0000), SPH_C32(0xa4f3442e), SPH_C32(0xf45616eb),
+	  SPH_C32(0x6623a94f), SPH_C32(0x5ea22f27), SPH_C32(0x4c4e8400),
+	  SPH_C32(0xa43c0000), SPH_C32(0xdbd10000), SPH_C32(0x835b0000),
+	  SPH_C32(0x178113a8), SPH_C32(0xea7bb99f), SPH_C32(0xd0ae8609),
+	  SPH_C32(0xee057339) },
+	{ SPH_C32(0xbd3c3270), SPH_C32(0x8b760000), SPH_C32(0xe1d40000),
+	  SPH_C32(0x22f50000), SPH_C32(0x3ffc7828), SPH_C32(0xb053a312),
+	  SPH_C32(0x0037a31e), SPH_C32(0xcced722d), SPH_C32(0x85258430),
+	  SPH_C32(0x43190000), SPH_C32(0xf4550000), SPH_C32(0xa5140000),
+	  SPH_C32(0x1fe84851), SPH_C32(0x878748a8), SPH_C32(0x8031ef8d),
+	  SPH_C32(0x706cdc51) },
+	{ SPH_C32(0x9b5c3030), SPH_C32(0x56ae0000), SPH_C32(0x93fe0000),
+	  SPH_C32(0x6df30000), SPH_C32(0xac9a1fd7), SPH_C32(0x99aae7dc),
+	  SPH_C32(0x36bcc0cb), SPH_C32(0xc0cb804f), SPH_C32(0x6a2e8640),
+	  SPH_C32(0x79e40000), SPH_C32(0xa9fb0000), SPH_C32(0xcc5d0000),
+	  SPH_C32(0x84e77457), SPH_C32(0xc382fd51), SPH_C32(0xe625e5dc),
+	  SPH_C32(0xe223815b) },
+	{ SPH_C32(0x74573240), SPH_C32(0x6c530000), SPH_C32(0xce500000),
+	  SPH_C32(0x04ba0000), SPH_C32(0x379523d1), SPH_C32(0xddaf5225),
+	  SPH_C32(0x50a8ca9a), SPH_C32(0x5284dd45), SPH_C32(0xa3458670),
+	  SPH_C32(0x9ec10000), SPH_C32(0x867f0000), SPH_C32(0xea120000),
+	  SPH_C32(0x8c8e2fae), SPH_C32(0xae7e0c66), SPH_C32(0xb6ba8c58),
+	  SPH_C32(0x7c4a2e33) },
+	{ SPH_C32(0x650a1800), SPH_C32(0xc0db0000), SPH_C32(0x299a0000),
+	  SPH_C32(0x41a80000), SPH_C32(0x195f5d27), SPH_C32(0xbcb98eda),
+	  SPH_C32(0x234ec450), SPH_C32(0x6308edfd), SPH_C32(0x5814b800),
+	  SPH_C32(0x1dd50000), SPH_C32(0xbaf60000), SPH_C32(0x723a0000),
+	  SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7), SPH_C32(0x9707e129),
+	  SPH_C32(0x0f8b57fc) },
+	{ SPH_C32(0x8a011a70), SPH_C32(0xfa260000), SPH_C32(0x74340000),
+	  SPH_C32(0x28e10000), SPH_C32(0x82506121), SPH_C32(0xf8bc3b23),
+	  SPH_C32(0x455ace01), SPH_C32(0xf147b0f7), SPH_C32(0x917fb830),
+	  SPH_C32(0xfaf00000), SPH_C32(0x95720000), SPH_C32(0x54750000),
+	  SPH_C32(0xd189753d), SPH_C32(0x37ce75d0), SPH_C32(0xc79888ad),
+	  SPH_C32(0x91e2f894) },
+	{ SPH_C32(0xac611830), SPH_C32(0x27fe0000), SPH_C32(0x061e0000),
+	  SPH_C32(0x67e70000), SPH_C32(0x113606de), SPH_C32(0xd1457fed),
+	  SPH_C32(0x73d1add4), SPH_C32(0xfd614295), SPH_C32(0x7e74ba40),
+	  SPH_C32(0xc00d0000), SPH_C32(0xc8dc0000), SPH_C32(0x3d3c0000),
+	  SPH_C32(0x4a86493b), SPH_C32(0x73cbc029), SPH_C32(0xa18c82fc),
+	  SPH_C32(0x03ada59e) },
+	{ SPH_C32(0x436a1a40), SPH_C32(0x1d030000), SPH_C32(0x5bb00000),
+	  SPH_C32(0x0eae0000), SPH_C32(0x8a393ad8), SPH_C32(0x9540ca14),
+	  SPH_C32(0x15c5a785), SPH_C32(0x6f2e1f9f), SPH_C32(0xb71fba70),
+	  SPH_C32(0x27280000), SPH_C32(0xe7580000), SPH_C32(0x1b730000),
+	  SPH_C32(0x42ef12c2), SPH_C32(0x1e37311e), SPH_C32(0xf113eb78),
+	  SPH_C32(0x9dc40af6) },
+	{ SPH_C32(0x71502400), SPH_C32(0x79320000), SPH_C32(0x48bd0000),
+	  SPH_C32(0xb0c90000), SPH_C32(0xd73e604b), SPH_C32(0x0cf0b3a2),
+	  SPH_C32(0x64e7a370), SPH_C32(0x8286c938), SPH_C32(0x7b73ac00),
+	  SPH_C32(0xd56c0000), SPH_C32(0x4e310000), SPH_C32(0x894f0000),
+	  SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae), SPH_C32(0x95c3eb16),
+	  SPH_C32(0xd3afb1e3) },
+	{ SPH_C32(0x9e5b2670), SPH_C32(0x43cf0000), SPH_C32(0x15130000),
+	  SPH_C32(0xd9800000), SPH_C32(0x4c315c4d), SPH_C32(0x48f5065b),
+	  SPH_C32(0x02f3a921), SPH_C32(0x10c99432), SPH_C32(0xb218ac30),
+	  SPH_C32(0x32490000), SPH_C32(0x61b50000), SPH_C32(0xaf000000),
+	  SPH_C32(0xa2445158), SPH_C32(0xcf68d099), SPH_C32(0xc55c8292),
+	  SPH_C32(0x4dc61e8b) },
+	{ SPH_C32(0xb83b2430), SPH_C32(0x9e170000), SPH_C32(0x67390000),
+	  SPH_C32(0x96860000), SPH_C32(0xdf573bb2), SPH_C32(0x610c4295),
+	  SPH_C32(0x3478caf4), SPH_C32(0x1cef6650), SPH_C32(0x5d13ae40),
+	  SPH_C32(0x08b40000), SPH_C32(0x3c1b0000), SPH_C32(0xc6490000),
+	  SPH_C32(0x394b6d5e), SPH_C32(0x8b6d6560), SPH_C32(0xa34888c3),
+	  SPH_C32(0xdf894381) },
+	{ SPH_C32(0x57302640), SPH_C32(0xa4ea0000), SPH_C32(0x3a970000),
+	  SPH_C32(0xffcf0000), SPH_C32(0x445807b4), SPH_C32(0x2509f76c),
+	  SPH_C32(0x526cc0a5), SPH_C32(0x8ea03b5a), SPH_C32(0x9478ae70),
+	  SPH_C32(0xef910000), SPH_C32(0x139f0000), SPH_C32(0xe0060000),
+	  SPH_C32(0x312236a7), SPH_C32(0xe6919457), SPH_C32(0xf3d7e147),
+	  SPH_C32(0x41e0ece9) },
+	{ SPH_C32(0x12455000), SPH_C32(0xe28f0000), SPH_C32(0x188b0000),
+	  SPH_C32(0x1b180000), SPH_C32(0xd9301e32), SPH_C32(0xd0baef72),
+	  SPH_C32(0x4a3a8ff2), SPH_C32(0xea373c60), SPH_C32(0xf3928800),
+	  SPH_C32(0xdc560000), SPH_C32(0xbd470000), SPH_C32(0x95bd0000),
+	  SPH_C32(0x3d767488), SPH_C32(0xf3c9c922), SPH_C32(0x916cbfec),
+	  SPH_C32(0x4aeb5b0f) },
+	{ SPH_C32(0xfd4e5270), SPH_C32(0xd8720000), SPH_C32(0x45250000),
+	  SPH_C32(0x72510000), SPH_C32(0x423f2234), SPH_C32(0x94bf5a8b),
+	  SPH_C32(0x2c2e85a3), SPH_C32(0x7878616a), SPH_C32(0x3af98830),
+	  SPH_C32(0x3b730000), SPH_C32(0x92c30000), SPH_C32(0xb3f20000),
+	  SPH_C32(0x351f2f71), SPH_C32(0x9e353815), SPH_C32(0xc1f3d668),
+	  SPH_C32(0xd482f467) },
+	{ SPH_C32(0xdb2e5030), SPH_C32(0x05aa0000), SPH_C32(0x370f0000),
+	  SPH_C32(0x3d570000), SPH_C32(0xd15945cb), SPH_C32(0xbd461e45),
+	  SPH_C32(0x1aa5e676), SPH_C32(0x745e9308), SPH_C32(0xd5f28a40),
+	  SPH_C32(0x018e0000), SPH_C32(0xcf6d0000), SPH_C32(0xdabb0000),
+	  SPH_C32(0xae101377), SPH_C32(0xda308dec), SPH_C32(0xa7e7dc39),
+	  SPH_C32(0x46cda96d) },
+	{ SPH_C32(0x34255240), SPH_C32(0x3f570000), SPH_C32(0x6aa10000),
+	  SPH_C32(0x541e0000), SPH_C32(0x4a5679cd), SPH_C32(0xf943abbc),
+	  SPH_C32(0x7cb1ec27), SPH_C32(0xe611ce02), SPH_C32(0x1c998a70),
+	  SPH_C32(0xe6ab0000), SPH_C32(0xe0e90000), SPH_C32(0xfcf40000),
+	  SPH_C32(0xa679488e), SPH_C32(0xb7cc7cdb), SPH_C32(0xf778b5bd),
+	  SPH_C32(0xd8a40605) },
+	{ SPH_C32(0x061f6c00), SPH_C32(0x5b660000), SPH_C32(0x79ac0000),
+	  SPH_C32(0xea790000), SPH_C32(0x1751235e), SPH_C32(0x60f3d20a),
+	  SPH_C32(0x0d93e8d2), SPH_C32(0x0bb918a5), SPH_C32(0xd0f59c00),
+	  SPH_C32(0x14ef0000), SPH_C32(0x49800000), SPH_C32(0x6ec80000),
+	  SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b), SPH_C32(0x93a8b5d3),
+	  SPH_C32(0x96cfbd10) },
+	{ SPH_C32(0xe9146e70), SPH_C32(0x619b0000), SPH_C32(0x24020000),
+	  SPH_C32(0x83300000), SPH_C32(0x8c5e1f58), SPH_C32(0x24f667f3),
+	  SPH_C32(0x6b87e283), SPH_C32(0x99f645af), SPH_C32(0x199e9c30),
+	  SPH_C32(0xf3ca0000), SPH_C32(0x66040000), SPH_C32(0x48870000),
+	  SPH_C32(0x46d20b14), SPH_C32(0x66939d5c), SPH_C32(0xc337dc57),
+	  SPH_C32(0x08a61278) },
+	{ SPH_C32(0xcf746c30), SPH_C32(0xbc430000), SPH_C32(0x56280000),
+	  SPH_C32(0xcc360000), SPH_C32(0x1f3878a7), SPH_C32(0x0d0f233d),
+	  SPH_C32(0x5d0c8156), SPH_C32(0x95d0b7cd), SPH_C32(0xf6959e40),
+	  SPH_C32(0xc9370000), SPH_C32(0x3baa0000), SPH_C32(0x21ce0000),
+	  SPH_C32(0xdddd3712), SPH_C32(0x229628a5), SPH_C32(0xa523d606),
+	  SPH_C32(0x9ae94f72) },
+	{ SPH_C32(0x207f6e40), SPH_C32(0x86be0000), SPH_C32(0x0b860000),
+	  SPH_C32(0xa57f0000), SPH_C32(0x843744a1), SPH_C32(0x490a96c4),
+	  SPH_C32(0x3b188b07), SPH_C32(0x079feac7), SPH_C32(0x3ffe9e70),
+	  SPH_C32(0x2e120000), SPH_C32(0x142e0000), SPH_C32(0x07810000),
+	  SPH_C32(0xd5b46ceb), SPH_C32(0x4f6ad992), SPH_C32(0xf5bcbf82),
+	  SPH_C32(0x0480e01a) },
+	{ SPH_C32(0x31224400), SPH_C32(0x2a360000), SPH_C32(0xec4c0000),
+	  SPH_C32(0xe06d0000), SPH_C32(0xaafd3a57), SPH_C32(0x281c4a3b),
+	  SPH_C32(0x48fe85cd), SPH_C32(0x3613da7f), SPH_C32(0xc4afa000),
+	  SPH_C32(0xad060000), SPH_C32(0x28a70000), SPH_C32(0x9fa90000),
+	  SPH_C32(0x80da6d81), SPH_C32(0xbb265113), SPH_C32(0xd401d2f3),
+	  SPH_C32(0x774199d5) },
+	{ SPH_C32(0xde294670), SPH_C32(0x10cb0000), SPH_C32(0xb1e20000),
+	  SPH_C32(0x89240000), SPH_C32(0x31f20651), SPH_C32(0x6c19ffc2),
+	  SPH_C32(0x2eea8f9c), SPH_C32(0xa45c8775), SPH_C32(0x0dc4a030),
+	  SPH_C32(0x4a230000), SPH_C32(0x07230000), SPH_C32(0xb9e60000),
+	  SPH_C32(0x88b33678), SPH_C32(0xd6daa024), SPH_C32(0x849ebb77),
+	  SPH_C32(0xe92836bd) },
+	{ SPH_C32(0xf8494430), SPH_C32(0xcd130000), SPH_C32(0xc3c80000),
+	  SPH_C32(0xc6220000), SPH_C32(0xa29461ae), SPH_C32(0x45e0bb0c),
+	  SPH_C32(0x1861ec49), SPH_C32(0xa87a7517), SPH_C32(0xe2cfa240),
+	  SPH_C32(0x70de0000), SPH_C32(0x5a8d0000), SPH_C32(0xd0af0000),
+	  SPH_C32(0x13bc0a7e), SPH_C32(0x92df15dd), SPH_C32(0xe28ab126),
+	  SPH_C32(0x7b676bb7) },
+	{ SPH_C32(0x17424640), SPH_C32(0xf7ee0000), SPH_C32(0x9e660000),
+	  SPH_C32(0xaf6b0000), SPH_C32(0x399b5da8), SPH_C32(0x01e50ef5),
+	  SPH_C32(0x7e75e618), SPH_C32(0x3a35281d), SPH_C32(0x2ba4a270),
+	  SPH_C32(0x97fb0000), SPH_C32(0x75090000), SPH_C32(0xf6e00000),
+	  SPH_C32(0x1bd55187), SPH_C32(0xff23e4ea), SPH_C32(0xb215d8a2),
+	  SPH_C32(0xe50ec4df) },
+	{ SPH_C32(0x25787800), SPH_C32(0x93df0000), SPH_C32(0x8d6b0000),
+	  SPH_C32(0x110c0000), SPH_C32(0x649c073b), SPH_C32(0x98557743),
+	  SPH_C32(0x0f57e2ed), SPH_C32(0xd79dfeba), SPH_C32(0xe7c8b400),
+	  SPH_C32(0x65bf0000), SPH_C32(0xdc600000), SPH_C32(0x64dc0000),
+	  SPH_C32(0xf31749e4), SPH_C32(0x4380f45a), SPH_C32(0xd6c5d8cc),
+	  SPH_C32(0xab657fca) },
+	{ SPH_C32(0xca737a70), SPH_C32(0xa9220000), SPH_C32(0xd0c50000),
+	  SPH_C32(0x78450000), SPH_C32(0xff933b3d), SPH_C32(0xdc50c2ba),
+	  SPH_C32(0x6943e8bc), SPH_C32(0x45d2a3b0), SPH_C32(0x2ea3b430),
+	  SPH_C32(0x829a0000), SPH_C32(0xf3e40000), SPH_C32(0x42930000),
+	  SPH_C32(0xfb7e121d), SPH_C32(0x2e7c056d), SPH_C32(0x865ab148),
+	  SPH_C32(0x350cd0a2) },
+	{ SPH_C32(0xec137830), SPH_C32(0x74fa0000), SPH_C32(0xa2ef0000),
+	  SPH_C32(0x37430000), SPH_C32(0x6cf55cc2), SPH_C32(0xf5a98674),
+	  SPH_C32(0x5fc88b69), SPH_C32(0x49f451d2), SPH_C32(0xc1a8b640),
+	  SPH_C32(0xb8670000), SPH_C32(0xae4a0000), SPH_C32(0x2bda0000),
+	  SPH_C32(0x60712e1b), SPH_C32(0x6a79b094), SPH_C32(0xe04ebb19),
+	  SPH_C32(0xa7438da8) },
+	{ SPH_C32(0x03187a40), SPH_C32(0x4e070000), SPH_C32(0xff410000),
+	  SPH_C32(0x5e0a0000), SPH_C32(0xf7fa60c4), SPH_C32(0xb1ac338d),
+	  SPH_C32(0x39dc8138), SPH_C32(0xdbbb0cd8), SPH_C32(0x08c3b670),
+	  SPH_C32(0x5f420000), SPH_C32(0x81ce0000), SPH_C32(0x0d950000),
+	  SPH_C32(0x681875e2), SPH_C32(0x078541a3), SPH_C32(0xb0d1d29d),
+	  SPH_C32(0x392a22c0) },
+	{ SPH_C32(0xdad61400), SPH_C32(0xb8b10000), SPH_C32(0x4f0c0000),
+	  SPH_C32(0x574e0000), SPH_C32(0x33a83a07), SPH_C32(0xa50bfe67),
+	  SPH_C32(0x628cfdb5), SPH_C32(0xc7e6c5cb), SPH_C32(0xa7bad400),
+	  SPH_C32(0x36bb0000), SPH_C32(0x78910000), SPH_C32(0x34780000),
+	  SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3), SPH_C32(0xfadcfe71),
+	  SPH_C32(0x1ff06c8d) },
+	{ SPH_C32(0x35dd1670), SPH_C32(0x824c0000), SPH_C32(0x12a20000),
+	  SPH_C32(0x3e070000), SPH_C32(0xa8a70601), SPH_C32(0xe10e4b9e),
+	  SPH_C32(0x0498f7e4), SPH_C32(0x55a998c1), SPH_C32(0x6ed1d430),
+	  SPH_C32(0xd19e0000), SPH_C32(0x57150000), SPH_C32(0x12370000),
+	  SPH_C32(0x86bd4801), SPH_C32(0x0a90fcf4), SPH_C32(0xaa4397f5),
+	  SPH_C32(0x8199c3e5) },
+	{ SPH_C32(0x13bd1430), SPH_C32(0x5f940000), SPH_C32(0x60880000),
+	  SPH_C32(0x71010000), SPH_C32(0x3bc161fe), SPH_C32(0xc8f70f50),
+	  SPH_C32(0x32139431), SPH_C32(0x598f6aa3), SPH_C32(0x81dad640),
+	  SPH_C32(0xeb630000), SPH_C32(0x0abb0000), SPH_C32(0x7b7e0000),
+	  SPH_C32(0x1db27407), SPH_C32(0x4e95490d), SPH_C32(0xcc579da4),
+	  SPH_C32(0x13d69eef) },
+	{ SPH_C32(0xfcb61640), SPH_C32(0x65690000), SPH_C32(0x3d260000),
+	  SPH_C32(0x18480000), SPH_C32(0xa0ce5df8), SPH_C32(0x8cf2baa9),
+	  SPH_C32(0x54079e60), SPH_C32(0xcbc037a9), SPH_C32(0x48b1d670),
+	  SPH_C32(0x0c460000), SPH_C32(0x253f0000), SPH_C32(0x5d310000),
+	  SPH_C32(0x15db2ffe), SPH_C32(0x2369b83a), SPH_C32(0x9cc8f420),
+	  SPH_C32(0x8dbf3187) },
+	{ SPH_C32(0xce8c2800), SPH_C32(0x01580000), SPH_C32(0x2e2b0000),
+	  SPH_C32(0xa62f0000), SPH_C32(0xfdc9076b), SPH_C32(0x1542c31f),
+	  SPH_C32(0x25259a95), SPH_C32(0x2668e10e), SPH_C32(0x84ddc000),
+	  SPH_C32(0xfe020000), SPH_C32(0x8c560000), SPH_C32(0xcf0d0000),
+	  SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a), SPH_C32(0xf818f44e),
+	  SPH_C32(0xc3d48a92) },
+	{ SPH_C32(0x21872a70), SPH_C32(0x3ba50000), SPH_C32(0x73850000),
+	  SPH_C32(0xcf660000), SPH_C32(0x66c63b6d), SPH_C32(0x514776e6),
+	  SPH_C32(0x433190c4), SPH_C32(0xb427bc04), SPH_C32(0x4db6c030),
+	  SPH_C32(0x19270000), SPH_C32(0xa3d20000), SPH_C32(0xe9420000),
+	  SPH_C32(0xf5706c64), SPH_C32(0xf23659bd), SPH_C32(0xa8879dca),
+	  SPH_C32(0x5dbd25fa) },
+	{ SPH_C32(0x07e72830), SPH_C32(0xe67d0000), SPH_C32(0x01af0000),
+	  SPH_C32(0x80600000), SPH_C32(0xf5a05c92), SPH_C32(0x78be3228),
+	  SPH_C32(0x75baf311), SPH_C32(0xb8014e66), SPH_C32(0xa2bdc240),
+	  SPH_C32(0x23da0000), SPH_C32(0xfe7c0000), SPH_C32(0x800b0000),
+	  SPH_C32(0x6e7f5062), SPH_C32(0xb633ec44), SPH_C32(0xce93979b),
+	  SPH_C32(0xcff278f0) },
+	{ SPH_C32(0xe8ec2a40), SPH_C32(0xdc800000), SPH_C32(0x5c010000),
+	  SPH_C32(0xe9290000), SPH_C32(0x6eaf6094), SPH_C32(0x3cbb87d1),
+	  SPH_C32(0x13aef940), SPH_C32(0x2a4e136c), SPH_C32(0x6bd6c270),
+	  SPH_C32(0xc4ff0000), SPH_C32(0xd1f80000), SPH_C32(0xa6440000),
+	  SPH_C32(0x66160b9b), SPH_C32(0xdbcf1d73), SPH_C32(0x9e0cfe1f),
+	  SPH_C32(0x519bd798) },
+	{ SPH_C32(0xf9b10000), SPH_C32(0x70080000), SPH_C32(0xbbcb0000),
+	  SPH_C32(0xac3b0000), SPH_C32(0x40651e62), SPH_C32(0x5dad5b2e),
+	  SPH_C32(0x6048f78a), SPH_C32(0x1bc223d4), SPH_C32(0x9087fc00),
+	  SPH_C32(0x47eb0000), SPH_C32(0xed710000), SPH_C32(0x3e6c0000),
+	  SPH_C32(0x33780af1), SPH_C32(0x2f8395f2), SPH_C32(0xbfb1936e),
+	  SPH_C32(0x225aae57) },
+	{ SPH_C32(0x16ba0270), SPH_C32(0x4af50000), SPH_C32(0xe6650000),
+	  SPH_C32(0xc5720000), SPH_C32(0xdb6a2264), SPH_C32(0x19a8eed7),
+	  SPH_C32(0x065cfddb), SPH_C32(0x898d7ede), SPH_C32(0x59ecfc30),
+	  SPH_C32(0xa0ce0000), SPH_C32(0xc2f50000), SPH_C32(0x18230000),
+	  SPH_C32(0x3b115108), SPH_C32(0x427f64c5), SPH_C32(0xef2efaea),
+	  SPH_C32(0xbc33013f) },
+	{ SPH_C32(0x30da0030), SPH_C32(0x972d0000), SPH_C32(0x944f0000),
+	  SPH_C32(0x8a740000), SPH_C32(0x480c459b), SPH_C32(0x3051aa19),
+	  SPH_C32(0x30d79e0e), SPH_C32(0x85ab8cbc), SPH_C32(0xb6e7fe40),
+	  SPH_C32(0x9a330000), SPH_C32(0x9f5b0000), SPH_C32(0x716a0000),
+	  SPH_C32(0xa01e6d0e), SPH_C32(0x067ad13c), SPH_C32(0x893af0bb),
+	  SPH_C32(0x2e7c5c35) },
+	{ SPH_C32(0xdfd10240), SPH_C32(0xadd00000), SPH_C32(0xc9e10000),
+	  SPH_C32(0xe33d0000), SPH_C32(0xd303799d), SPH_C32(0x74541fe0),
+	  SPH_C32(0x56c3945f), SPH_C32(0x17e4d1b6), SPH_C32(0x7f8cfe70),
+	  SPH_C32(0x7d160000), SPH_C32(0xb0df0000), SPH_C32(0x57250000),
+	  SPH_C32(0xa87736f7), SPH_C32(0x6b86200b), SPH_C32(0xd9a5993f),
+	  SPH_C32(0xb015f35d) },
+	{ SPH_C32(0xedeb3c00), SPH_C32(0xc9e10000), SPH_C32(0xdaec0000),
+	  SPH_C32(0x5d5a0000), SPH_C32(0x8e04230e), SPH_C32(0xede46656),
+	  SPH_C32(0x27e190aa), SPH_C32(0xfa4c0711), SPH_C32(0xb3e0e800),
+	  SPH_C32(0x8f520000), SPH_C32(0x19b60000), SPH_C32(0xc5190000),
+	  SPH_C32(0x40b52e94), SPH_C32(0xd72530bb), SPH_C32(0xbd759951),
+	  SPH_C32(0xfe7e4848) },
+	{ SPH_C32(0x02e03e70), SPH_C32(0xf31c0000), SPH_C32(0x87420000),
+	  SPH_C32(0x34130000), SPH_C32(0x150b1f08), SPH_C32(0xa9e1d3af),
+	  SPH_C32(0x41f59afb), SPH_C32(0x68035a1b), SPH_C32(0x7a8be830),
+	  SPH_C32(0x68770000), SPH_C32(0x36320000), SPH_C32(0xe3560000),
+	  SPH_C32(0x48dc756d), SPH_C32(0xbad9c18c), SPH_C32(0xedeaf0d5),
+	  SPH_C32(0x6017e720) },
+	{ SPH_C32(0x24803c30), SPH_C32(0x2ec40000), SPH_C32(0xf5680000),
+	  SPH_C32(0x7b150000), SPH_C32(0x866d78f7), SPH_C32(0x80189761),
+	  SPH_C32(0x777ef92e), SPH_C32(0x6425a879), SPH_C32(0x9580ea40),
+	  SPH_C32(0x528a0000), SPH_C32(0x6b9c0000), SPH_C32(0x8a1f0000),
+	  SPH_C32(0xd3d3496b), SPH_C32(0xfedc7475), SPH_C32(0x8bfefa84),
+	  SPH_C32(0xf258ba2a) },
+	{ SPH_C32(0xcb8b3e40), SPH_C32(0x14390000), SPH_C32(0xa8c60000),
+	  SPH_C32(0x125c0000), SPH_C32(0x1d6244f1), SPH_C32(0xc41d2298),
+	  SPH_C32(0x116af37f), SPH_C32(0xf66af573), SPH_C32(0x5cebea70),
+	  SPH_C32(0xb5af0000), SPH_C32(0x44180000), SPH_C32(0xac500000),
+	  SPH_C32(0xdbba1292), SPH_C32(0x93208542), SPH_C32(0xdb619300),
+	  SPH_C32(0x6c311542) },
+	{ SPH_C32(0x8efe4800), SPH_C32(0x525c0000), SPH_C32(0x8ada0000),
+	  SPH_C32(0xf68b0000), SPH_C32(0x800a5d77), SPH_C32(0x31ae3a86),
+	  SPH_C32(0x093cbc28), SPH_C32(0x92fdf249), SPH_C32(0x3b01cc00),
+	  SPH_C32(0x86680000), SPH_C32(0xeac00000), SPH_C32(0xd9eb0000),
+	  SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837), SPH_C32(0xb9dacdab),
+	  SPH_C32(0x673aa2a4) },
+	{ SPH_C32(0x61f54a70), SPH_C32(0x68a10000), SPH_C32(0xd7740000),
+	  SPH_C32(0x9fc20000), SPH_C32(0x1b056171), SPH_C32(0x75ab8f7f),
+	  SPH_C32(0x6f28b679), SPH_C32(0x00b2af43), SPH_C32(0xf26acc30),
+	  SPH_C32(0x614d0000), SPH_C32(0xc5440000), SPH_C32(0xffa40000),
+	  SPH_C32(0xdf870b44), SPH_C32(0xeb842900), SPH_C32(0xe945a42f),
+	  SPH_C32(0xf9530dcc) },
+	{ SPH_C32(0x47954830), SPH_C32(0xb5790000), SPH_C32(0xa55e0000),
+	  SPH_C32(0xd0c40000), SPH_C32(0x8863068e), SPH_C32(0x5c52cbb1),
+	  SPH_C32(0x59a3d5ac), SPH_C32(0x0c945d21), SPH_C32(0x1d61ce40),
+	  SPH_C32(0x5bb00000), SPH_C32(0x98ea0000), SPH_C32(0x96ed0000),
+	  SPH_C32(0x44883742), SPH_C32(0xaf819cf9), SPH_C32(0x8f51ae7e),
+	  SPH_C32(0x6b1c50c6) },
+	{ SPH_C32(0xa89e4a40), SPH_C32(0x8f840000), SPH_C32(0xf8f00000),
+	  SPH_C32(0xb98d0000), SPH_C32(0x136c3a88), SPH_C32(0x18577e48),
+	  SPH_C32(0x3fb7dffd), SPH_C32(0x9edb002b), SPH_C32(0xd40ace70),
+	  SPH_C32(0xbc950000), SPH_C32(0xb76e0000), SPH_C32(0xb0a20000),
+	  SPH_C32(0x4ce16cbb), SPH_C32(0xc27d6dce), SPH_C32(0xdfcec7fa),
+	  SPH_C32(0xf575ffae) },
+	{ SPH_C32(0x9aa47400), SPH_C32(0xebb50000), SPH_C32(0xebfd0000),
+	  SPH_C32(0x07ea0000), SPH_C32(0x4e6b601b), SPH_C32(0x81e707fe),
+	  SPH_C32(0x4e95db08), SPH_C32(0x7373d68c), SPH_C32(0x1866d800),
+	  SPH_C32(0x4ed10000), SPH_C32(0x1e070000), SPH_C32(0x229e0000),
+	  SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e), SPH_C32(0xbb1ec794),
+	  SPH_C32(0xbb1e44bb) },
+	{ SPH_C32(0x75af7670), SPH_C32(0xd1480000), SPH_C32(0xb6530000),
+	  SPH_C32(0x6ea30000), SPH_C32(0xd5645c1d), SPH_C32(0xc5e2b207),
+	  SPH_C32(0x2881d159), SPH_C32(0xe13c8b86), SPH_C32(0xd10dd830),
+	  SPH_C32(0xa9f40000), SPH_C32(0x31830000), SPH_C32(0x04d10000),
+	  SPH_C32(0xac4a2f21), SPH_C32(0x13228c49), SPH_C32(0xeb81ae10),
+	  SPH_C32(0x2577ebd3) },
+	{ SPH_C32(0x53cf7430), SPH_C32(0x0c900000), SPH_C32(0xc4790000),
+	  SPH_C32(0x21a50000), SPH_C32(0x46023be2), SPH_C32(0xec1bf6c9),
+	  SPH_C32(0x1e0ab28c), SPH_C32(0xed1a79e4), SPH_C32(0x3e06da40),
+	  SPH_C32(0x93090000), SPH_C32(0x6c2d0000), SPH_C32(0x6d980000),
+	  SPH_C32(0x37451327), SPH_C32(0x572739b0), SPH_C32(0x8d95a441),
+	  SPH_C32(0xb738b6d9) },
+	{ SPH_C32(0xbcc47640), SPH_C32(0x366d0000), SPH_C32(0x99d70000),
+	  SPH_C32(0x48ec0000), SPH_C32(0xdd0d07e4), SPH_C32(0xa81e4330),
+	  SPH_C32(0x781eb8dd), SPH_C32(0x7f5524ee), SPH_C32(0xf76dda70),
+	  SPH_C32(0x742c0000), SPH_C32(0x43a90000), SPH_C32(0x4bd70000),
+	  SPH_C32(0x3f2c48de), SPH_C32(0x3adbc887), SPH_C32(0xdd0acdc5),
+	  SPH_C32(0x295119b1) },
+	{ SPH_C32(0xad995c00), SPH_C32(0x9ae50000), SPH_C32(0x7e1d0000),
+	  SPH_C32(0x0dfe0000), SPH_C32(0xf3c77912), SPH_C32(0xc9089fcf),
+	  SPH_C32(0x0bf8b617), SPH_C32(0x4ed91456), SPH_C32(0x0c3ce400),
+	  SPH_C32(0xf7380000), SPH_C32(0x7f200000), SPH_C32(0xd3ff0000),
+	  SPH_C32(0x6a4249b4), SPH_C32(0xce974006), SPH_C32(0xfcb7a0b4),
+	  SPH_C32(0x5a90607e) },
+	{ SPH_C32(0x42925e70), SPH_C32(0xa0180000), SPH_C32(0x23b30000),
+	  SPH_C32(0x64b70000), SPH_C32(0x68c84514), SPH_C32(0x8d0d2a36),
+	  SPH_C32(0x6decbc46), SPH_C32(0xdc96495c), SPH_C32(0xc557e430),
+	  SPH_C32(0x101d0000), SPH_C32(0x50a40000), SPH_C32(0xf5b00000),
+	  SPH_C32(0x622b124d), SPH_C32(0xa36bb131), SPH_C32(0xac28c930),
+	  SPH_C32(0xc4f9cf16) },
+	{ SPH_C32(0x64f25c30), SPH_C32(0x7dc00000), SPH_C32(0x51990000),
+	  SPH_C32(0x2bb10000), SPH_C32(0xfbae22eb), SPH_C32(0xa4f46ef8),
+	  SPH_C32(0x5b67df93), SPH_C32(0xd0b0bb3e), SPH_C32(0x2a5ce640),
+	  SPH_C32(0x2ae00000), SPH_C32(0x0d0a0000), SPH_C32(0x9cf90000),
+	  SPH_C32(0xf9242e4b), SPH_C32(0xe76e04c8), SPH_C32(0xca3cc361),
+	  SPH_C32(0x56b6921c) },
+	{ SPH_C32(0x8bf95e40), SPH_C32(0x473d0000), SPH_C32(0x0c370000),
+	  SPH_C32(0x42f80000), SPH_C32(0x60a11eed), SPH_C32(0xe0f1db01),
+	  SPH_C32(0x3d73d5c2), SPH_C32(0x42ffe634), SPH_C32(0xe337e670),
+	  SPH_C32(0xcdc50000), SPH_C32(0x228e0000), SPH_C32(0xbab60000),
+	  SPH_C32(0xf14d75b2), SPH_C32(0x8a92f5ff), SPH_C32(0x9aa3aae5),
+	  SPH_C32(0xc8df3d74) },
+	{ SPH_C32(0xb9c36000), SPH_C32(0x230c0000), SPH_C32(0x1f3a0000),
+	  SPH_C32(0xfc9f0000), SPH_C32(0x3da6447e), SPH_C32(0x7941a2b7),
+	  SPH_C32(0x4c51d137), SPH_C32(0xaf573093), SPH_C32(0x2f5bf000),
+	  SPH_C32(0x3f810000), SPH_C32(0x8be70000), SPH_C32(0x288a0000),
+	  SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f), SPH_C32(0xfe73aa8b),
+	  SPH_C32(0x86b48661) },
+	{ SPH_C32(0x56c86270), SPH_C32(0x19f10000), SPH_C32(0x42940000),
+	  SPH_C32(0x95d60000), SPH_C32(0xa6a97878), SPH_C32(0x3d44174e),
+	  SPH_C32(0x2a45db66), SPH_C32(0x3d186d99), SPH_C32(0xe630f030),
+	  SPH_C32(0xd8a40000), SPH_C32(0xa4630000), SPH_C32(0x0ec50000),
+	  SPH_C32(0x11e63628), SPH_C32(0x5bcd1478), SPH_C32(0xaeecc30f),
+	  SPH_C32(0x18dd2909) },
+	{ SPH_C32(0x70a86030), SPH_C32(0xc4290000), SPH_C32(0x30be0000),
+	  SPH_C32(0xdad00000), SPH_C32(0x35cf1f87), SPH_C32(0x14bd5380),
+	  SPH_C32(0x1cceb8b3), SPH_C32(0x313e9ffb), SPH_C32(0x093bf240),
+	  SPH_C32(0xe2590000), SPH_C32(0xf9cd0000), SPH_C32(0x678c0000),
+	  SPH_C32(0x8ae90a2e), SPH_C32(0x1fc8a181), SPH_C32(0xc8f8c95e),
+	  SPH_C32(0x8a927403) },
+	{ SPH_C32(0x9fa36240), SPH_C32(0xfed40000), SPH_C32(0x6d100000),
+	  SPH_C32(0xb3990000), SPH_C32(0xaec02381), SPH_C32(0x50b8e679),
+	  SPH_C32(0x7adab2e2), SPH_C32(0xa371c2f1), SPH_C32(0xc050f270),
+	  SPH_C32(0x057c0000), SPH_C32(0xd6490000), SPH_C32(0x41c30000),
+	  SPH_C32(0x828051d7), SPH_C32(0x723450b6), SPH_C32(0x9867a0da),
+	  SPH_C32(0x14fbdb6b) },
+	{ SPH_C32(0x6f299000), SPH_C32(0x6c850000), SPH_C32(0x2f160000),
+	  SPH_C32(0x782e0000), SPH_C32(0x644c37cd), SPH_C32(0x12dd1cd6),
+	  SPH_C32(0xd26a8c36), SPH_C32(0x32219526), SPH_C32(0x29449c00),
+	  SPH_C32(0x64e70000), SPH_C32(0xf24b0000), SPH_C32(0xc2f30000),
+	  SPH_C32(0x0ede4e8f), SPH_C32(0x56c23745), SPH_C32(0xf3e04259),
+	  SPH_C32(0x8d0d9ec4) },
+	{ SPH_C32(0x80229270), SPH_C32(0x56780000), SPH_C32(0x72b80000),
+	  SPH_C32(0x11670000), SPH_C32(0xff430bcb), SPH_C32(0x56d8a92f),
+	  SPH_C32(0xb47e8667), SPH_C32(0xa06ec82c), SPH_C32(0xe02f9c30),
+	  SPH_C32(0x83c20000), SPH_C32(0xddcf0000), SPH_C32(0xe4bc0000),
+	  SPH_C32(0x06b71576), SPH_C32(0x3b3ec672), SPH_C32(0xa37f2bdd),
+	  SPH_C32(0x136431ac) },
+	{ SPH_C32(0xa6429030), SPH_C32(0x8ba00000), SPH_C32(0x00920000),
+	  SPH_C32(0x5e610000), SPH_C32(0x6c256c34), SPH_C32(0x7f21ede1),
+	  SPH_C32(0x82f5e5b2), SPH_C32(0xac483a4e), SPH_C32(0x0f249e40),
+	  SPH_C32(0xb93f0000), SPH_C32(0x80610000), SPH_C32(0x8df50000),
+	  SPH_C32(0x9db82970), SPH_C32(0x7f3b738b), SPH_C32(0xc56b218c),
+	  SPH_C32(0x812b6ca6) },
+	{ SPH_C32(0x49499240), SPH_C32(0xb15d0000), SPH_C32(0x5d3c0000),
+	  SPH_C32(0x37280000), SPH_C32(0xf72a5032), SPH_C32(0x3b245818),
+	  SPH_C32(0xe4e1efe3), SPH_C32(0x3e076744), SPH_C32(0xc64f9e70),
+	  SPH_C32(0x5e1a0000), SPH_C32(0xafe50000), SPH_C32(0xabba0000),
+	  SPH_C32(0x95d17289), SPH_C32(0x12c782bc), SPH_C32(0x95f44808),
+	  SPH_C32(0x1f42c3ce) },
+	{ SPH_C32(0x7b73ac00), SPH_C32(0xd56c0000), SPH_C32(0x4e310000),
+	  SPH_C32(0x894f0000), SPH_C32(0xaa2d0aa1), SPH_C32(0xa29421ae),
+	  SPH_C32(0x95c3eb16), SPH_C32(0xd3afb1e3), SPH_C32(0x0a238800),
+	  SPH_C32(0xac5e0000), SPH_C32(0x068c0000), SPH_C32(0x39860000),
+	  SPH_C32(0x7d136aea), SPH_C32(0xae64920c), SPH_C32(0xf1244866),
+	  SPH_C32(0x512978db) },
+	{ SPH_C32(0x9478ae70), SPH_C32(0xef910000), SPH_C32(0x139f0000),
+	  SPH_C32(0xe0060000), SPH_C32(0x312236a7), SPH_C32(0xe6919457),
+	  SPH_C32(0xf3d7e147), SPH_C32(0x41e0ece9), SPH_C32(0xc3488830),
+	  SPH_C32(0x4b7b0000), SPH_C32(0x29080000), SPH_C32(0x1fc90000),
+	  SPH_C32(0x757a3113), SPH_C32(0xc398633b), SPH_C32(0xa1bb21e2),
+	  SPH_C32(0xcf40d7b3) },
+	{ SPH_C32(0xb218ac30), SPH_C32(0x32490000), SPH_C32(0x61b50000),
+	  SPH_C32(0xaf000000), SPH_C32(0xa2445158), SPH_C32(0xcf68d099),
+	  SPH_C32(0xc55c8292), SPH_C32(0x4dc61e8b), SPH_C32(0x2c438a40),
+	  SPH_C32(0x71860000), SPH_C32(0x74a60000), SPH_C32(0x76800000),
+	  SPH_C32(0xee750d15), SPH_C32(0x879dd6c2), SPH_C32(0xc7af2bb3),
+	  SPH_C32(0x5d0f8ab9) },
+	{ SPH_C32(0x5d13ae40), SPH_C32(0x08b40000), SPH_C32(0x3c1b0000),
+	  SPH_C32(0xc6490000), SPH_C32(0x394b6d5e), SPH_C32(0x8b6d6560),
+	  SPH_C32(0xa34888c3), SPH_C32(0xdf894381), SPH_C32(0xe5288a70),
+	  SPH_C32(0x96a30000), SPH_C32(0x5b220000), SPH_C32(0x50cf0000),
+	  SPH_C32(0xe61c56ec), SPH_C32(0xea6127f5), SPH_C32(0x97304237),
+	  SPH_C32(0xc36625d1) },
+	{ SPH_C32(0x4c4e8400), SPH_C32(0xa43c0000), SPH_C32(0xdbd10000),
+	  SPH_C32(0x835b0000), SPH_C32(0x178113a8), SPH_C32(0xea7bb99f),
+	  SPH_C32(0xd0ae8609), SPH_C32(0xee057339), SPH_C32(0x1e79b400),
+	  SPH_C32(0x15b70000), SPH_C32(0x67ab0000), SPH_C32(0xc8e70000),
+	  SPH_C32(0xb3725786), SPH_C32(0x1e2daf74), SPH_C32(0xb68d2f46),
+	  SPH_C32(0xb0a75c1e) },
+	{ SPH_C32(0xa3458670), SPH_C32(0x9ec10000), SPH_C32(0x867f0000),
+	  SPH_C32(0xea120000), SPH_C32(0x8c8e2fae), SPH_C32(0xae7e0c66),
+	  SPH_C32(0xb6ba8c58), SPH_C32(0x7c4a2e33), SPH_C32(0xd712b430),
+	  SPH_C32(0xf2920000), SPH_C32(0x482f0000), SPH_C32(0xeea80000),
+	  SPH_C32(0xbb1b0c7f), SPH_C32(0x73d15e43), SPH_C32(0xe61246c2),
+	  SPH_C32(0x2ecef376) },
+	{ SPH_C32(0x85258430), SPH_C32(0x43190000), SPH_C32(0xf4550000),
+	  SPH_C32(0xa5140000), SPH_C32(0x1fe84851), SPH_C32(0x878748a8),
+	  SPH_C32(0x8031ef8d), SPH_C32(0x706cdc51), SPH_C32(0x3819b640),
+	  SPH_C32(0xc86f0000), SPH_C32(0x15810000), SPH_C32(0x87e10000),
+	  SPH_C32(0x20143079), SPH_C32(0x37d4ebba), SPH_C32(0x80064c93),
+	  SPH_C32(0xbc81ae7c) },
+	{ SPH_C32(0x6a2e8640), SPH_C32(0x79e40000), SPH_C32(0xa9fb0000),
+	  SPH_C32(0xcc5d0000), SPH_C32(0x84e77457), SPH_C32(0xc382fd51),
+	  SPH_C32(0xe625e5dc), SPH_C32(0xe223815b), SPH_C32(0xf172b670),
+	  SPH_C32(0x2f4a0000), SPH_C32(0x3a050000), SPH_C32(0xa1ae0000),
+	  SPH_C32(0x287d6b80), SPH_C32(0x5a281a8d), SPH_C32(0xd0992517),
+	  SPH_C32(0x22e80114) },
+	{ SPH_C32(0x5814b800), SPH_C32(0x1dd50000), SPH_C32(0xbaf60000),
+	  SPH_C32(0x723a0000), SPH_C32(0xd9e02ec4), SPH_C32(0x5a3284e7),
+	  SPH_C32(0x9707e129), SPH_C32(0x0f8b57fc), SPH_C32(0x3d1ea000),
+	  SPH_C32(0xdd0e0000), SPH_C32(0x936c0000), SPH_C32(0x33920000),
+	  SPH_C32(0xc0bf73e3), SPH_C32(0xe68b0a3d), SPH_C32(0xb4492579),
+	  SPH_C32(0x6c83ba01) },
+	{ SPH_C32(0xb71fba70), SPH_C32(0x27280000), SPH_C32(0xe7580000),
+	  SPH_C32(0x1b730000), SPH_C32(0x42ef12c2), SPH_C32(0x1e37311e),
+	  SPH_C32(0xf113eb78), SPH_C32(0x9dc40af6), SPH_C32(0xf475a030),
+	  SPH_C32(0x3a2b0000), SPH_C32(0xbce80000), SPH_C32(0x15dd0000),
+	  SPH_C32(0xc8d6281a), SPH_C32(0x8b77fb0a), SPH_C32(0xe4d64cfd),
+	  SPH_C32(0xf2ea1569) },
+	{ SPH_C32(0x917fb830), SPH_C32(0xfaf00000), SPH_C32(0x95720000),
+	  SPH_C32(0x54750000), SPH_C32(0xd189753d), SPH_C32(0x37ce75d0),
+	  SPH_C32(0xc79888ad), SPH_C32(0x91e2f894), SPH_C32(0x1b7ea240),
+	  SPH_C32(0x00d60000), SPH_C32(0xe1460000), SPH_C32(0x7c940000),
+	  SPH_C32(0x53d9141c), SPH_C32(0xcf724ef3), SPH_C32(0x82c246ac),
+	  SPH_C32(0x60a54863) },
+	{ SPH_C32(0x7e74ba40), SPH_C32(0xc00d0000), SPH_C32(0xc8dc0000),
+	  SPH_C32(0x3d3c0000), SPH_C32(0x4a86493b), SPH_C32(0x73cbc029),
+	  SPH_C32(0xa18c82fc), SPH_C32(0x03ada59e), SPH_C32(0xd215a270),
+	  SPH_C32(0xe7f30000), SPH_C32(0xcec20000), SPH_C32(0x5adb0000),
+	  SPH_C32(0x5bb04fe5), SPH_C32(0xa28ebfc4), SPH_C32(0xd25d2f28),
+	  SPH_C32(0xfecce70b) },
+	{ SPH_C32(0x3b01cc00), SPH_C32(0x86680000), SPH_C32(0xeac00000),
+	  SPH_C32(0xd9eb0000), SPH_C32(0xd7ee50bd), SPH_C32(0x8678d837),
+	  SPH_C32(0xb9dacdab), SPH_C32(0x673aa2a4), SPH_C32(0xb5ff8400),
+	  SPH_C32(0xd4340000), SPH_C32(0x601a0000), SPH_C32(0x2f600000),
+	  SPH_C32(0x57e40dca), SPH_C32(0xb7d6e2b1), SPH_C32(0xb0e67183),
+	  SPH_C32(0xf5c750ed) },
+	{ SPH_C32(0xd40ace70), SPH_C32(0xbc950000), SPH_C32(0xb76e0000),
+	  SPH_C32(0xb0a20000), SPH_C32(0x4ce16cbb), SPH_C32(0xc27d6dce),
+	  SPH_C32(0xdfcec7fa), SPH_C32(0xf575ffae), SPH_C32(0x7c948430),
+	  SPH_C32(0x33110000), SPH_C32(0x4f9e0000), SPH_C32(0x092f0000),
+	  SPH_C32(0x5f8d5633), SPH_C32(0xda2a1386), SPH_C32(0xe0791807),
+	  SPH_C32(0x6baeff85) },
+	{ SPH_C32(0xf26acc30), SPH_C32(0x614d0000), SPH_C32(0xc5440000),
+	  SPH_C32(0xffa40000), SPH_C32(0xdf870b44), SPH_C32(0xeb842900),
+	  SPH_C32(0xe945a42f), SPH_C32(0xf9530dcc), SPH_C32(0x939f8640),
+	  SPH_C32(0x09ec0000), SPH_C32(0x12300000), SPH_C32(0x60660000),
+	  SPH_C32(0xc4826a35), SPH_C32(0x9e2fa67f), SPH_C32(0x866d1256),
+	  SPH_C32(0xf9e1a28f) },
+	{ SPH_C32(0x1d61ce40), SPH_C32(0x5bb00000), SPH_C32(0x98ea0000),
+	  SPH_C32(0x96ed0000), SPH_C32(0x44883742), SPH_C32(0xaf819cf9),
+	  SPH_C32(0x8f51ae7e), SPH_C32(0x6b1c50c6), SPH_C32(0x5af48670),
+	  SPH_C32(0xeec90000), SPH_C32(0x3db40000), SPH_C32(0x46290000),
+	  SPH_C32(0xcceb31cc), SPH_C32(0xf3d35748), SPH_C32(0xd6f27bd2),
+	  SPH_C32(0x67880de7) },
+	{ SPH_C32(0x2f5bf000), SPH_C32(0x3f810000), SPH_C32(0x8be70000),
+	  SPH_C32(0x288a0000), SPH_C32(0x198f6dd1), SPH_C32(0x3631e54f),
+	  SPH_C32(0xfe73aa8b), SPH_C32(0x86b48661), SPH_C32(0x96989000),
+	  SPH_C32(0x1c8d0000), SPH_C32(0x94dd0000), SPH_C32(0xd4150000),
+	  SPH_C32(0x242929af), SPH_C32(0x4f7047f8), SPH_C32(0xb2227bbc),
+	  SPH_C32(0x29e3b6f2) },
+	{ SPH_C32(0xc050f270), SPH_C32(0x057c0000), SPH_C32(0xd6490000),
+	  SPH_C32(0x41c30000), SPH_C32(0x828051d7), SPH_C32(0x723450b6),
+	  SPH_C32(0x9867a0da), SPH_C32(0x14fbdb6b), SPH_C32(0x5ff39030),
+	  SPH_C32(0xfba80000), SPH_C32(0xbb590000), SPH_C32(0xf25a0000),
+	  SPH_C32(0x2c407256), SPH_C32(0x228cb6cf), SPH_C32(0xe2bd1238),
+	  SPH_C32(0xb78a199a) },
+	{ SPH_C32(0xe630f030), SPH_C32(0xd8a40000), SPH_C32(0xa4630000),
+	  SPH_C32(0x0ec50000), SPH_C32(0x11e63628), SPH_C32(0x5bcd1478),
+	  SPH_C32(0xaeecc30f), SPH_C32(0x18dd2909), SPH_C32(0xb0f89240),
+	  SPH_C32(0xc1550000), SPH_C32(0xe6f70000), SPH_C32(0x9b130000),
+	  SPH_C32(0xb74f4e50), SPH_C32(0x66890336), SPH_C32(0x84a91869),
+	  SPH_C32(0x25c54490) },
+	{ SPH_C32(0x093bf240), SPH_C32(0xe2590000), SPH_C32(0xf9cd0000),
+	  SPH_C32(0x678c0000), SPH_C32(0x8ae90a2e), SPH_C32(0x1fc8a181),
+	  SPH_C32(0xc8f8c95e), SPH_C32(0x8a927403), SPH_C32(0x79939270),
+	  SPH_C32(0x26700000), SPH_C32(0xc9730000), SPH_C32(0xbd5c0000),
+	  SPH_C32(0xbf2615a9), SPH_C32(0x0b75f201), SPH_C32(0xd43671ed),
+	  SPH_C32(0xbbacebf8) },
+	{ SPH_C32(0x1866d800), SPH_C32(0x4ed10000), SPH_C32(0x1e070000),
+	  SPH_C32(0x229e0000), SPH_C32(0xa42374d8), SPH_C32(0x7ede7d7e),
+	  SPH_C32(0xbb1ec794), SPH_C32(0xbb1e44bb), SPH_C32(0x82c2ac00),
+	  SPH_C32(0xa5640000), SPH_C32(0xf5fa0000), SPH_C32(0x25740000),
+	  SPH_C32(0xea4814c3), SPH_C32(0xff397a80), SPH_C32(0xf58b1c9c),
+	  SPH_C32(0xc86d9237) },
+	{ SPH_C32(0xf76dda70), SPH_C32(0x742c0000), SPH_C32(0x43a90000),
+	  SPH_C32(0x4bd70000), SPH_C32(0x3f2c48de), SPH_C32(0x3adbc887),
+	  SPH_C32(0xdd0acdc5), SPH_C32(0x295119b1), SPH_C32(0x4ba9ac30),
+	  SPH_C32(0x42410000), SPH_C32(0xda7e0000), SPH_C32(0x033b0000),
+	  SPH_C32(0xe2214f3a), SPH_C32(0x92c58bb7), SPH_C32(0xa5147518),
+	  SPH_C32(0x56043d5f) },
+	{ SPH_C32(0xd10dd830), SPH_C32(0xa9f40000), SPH_C32(0x31830000),
+	  SPH_C32(0x04d10000), SPH_C32(0xac4a2f21), SPH_C32(0x13228c49),
+	  SPH_C32(0xeb81ae10), SPH_C32(0x2577ebd3), SPH_C32(0xa4a2ae40),
+	  SPH_C32(0x78bc0000), SPH_C32(0x87d00000), SPH_C32(0x6a720000),
+	  SPH_C32(0x792e733c), SPH_C32(0xd6c03e4e), SPH_C32(0xc3007f49),
+	  SPH_C32(0xc44b6055) },
+	{ SPH_C32(0x3e06da40), SPH_C32(0x93090000), SPH_C32(0x6c2d0000),
+	  SPH_C32(0x6d980000), SPH_C32(0x37451327), SPH_C32(0x572739b0),
+	  SPH_C32(0x8d95a441), SPH_C32(0xb738b6d9), SPH_C32(0x6dc9ae70),
+	  SPH_C32(0x9f990000), SPH_C32(0xa8540000), SPH_C32(0x4c3d0000),
+	  SPH_C32(0x714728c5), SPH_C32(0xbb3ccf79), SPH_C32(0x939f16cd),
+	  SPH_C32(0x5a22cf3d) },
+	{ SPH_C32(0x0c3ce400), SPH_C32(0xf7380000), SPH_C32(0x7f200000),
+	  SPH_C32(0xd3ff0000), SPH_C32(0x6a4249b4), SPH_C32(0xce974006),
+	  SPH_C32(0xfcb7a0b4), SPH_C32(0x5a90607e), SPH_C32(0xa1a5b800),
+	  SPH_C32(0x6ddd0000), SPH_C32(0x013d0000), SPH_C32(0xde010000),
+	  SPH_C32(0x998530a6), SPH_C32(0x079fdfc9), SPH_C32(0xf74f16a3),
+	  SPH_C32(0x14497428) },
+	{ SPH_C32(0xe337e670), SPH_C32(0xcdc50000), SPH_C32(0x228e0000),
+	  SPH_C32(0xbab60000), SPH_C32(0xf14d75b2), SPH_C32(0x8a92f5ff),
+	  SPH_C32(0x9aa3aae5), SPH_C32(0xc8df3d74), SPH_C32(0x68ceb830),
+	  SPH_C32(0x8af80000), SPH_C32(0x2eb90000), SPH_C32(0xf84e0000),
+	  SPH_C32(0x91ec6b5f), SPH_C32(0x6a632efe), SPH_C32(0xa7d07f27),
+	  SPH_C32(0x8a20db40) },
+	{ SPH_C32(0xc557e430), SPH_C32(0x101d0000), SPH_C32(0x50a40000),
+	  SPH_C32(0xf5b00000), SPH_C32(0x622b124d), SPH_C32(0xa36bb131),
+	  SPH_C32(0xac28c930), SPH_C32(0xc4f9cf16), SPH_C32(0x87c5ba40),
+	  SPH_C32(0xb0050000), SPH_C32(0x73170000), SPH_C32(0x91070000),
+	  SPH_C32(0x0ae35759), SPH_C32(0x2e669b07), SPH_C32(0xc1c47576),
+	  SPH_C32(0x186f864a) },
+	{ SPH_C32(0x2a5ce640), SPH_C32(0x2ae00000), SPH_C32(0x0d0a0000),
+	  SPH_C32(0x9cf90000), SPH_C32(0xf9242e4b), SPH_C32(0xe76e04c8),
+	  SPH_C32(0xca3cc361), SPH_C32(0x56b6921c), SPH_C32(0x4eaeba70),
+	  SPH_C32(0x57200000), SPH_C32(0x5c930000), SPH_C32(0xb7480000),
+	  SPH_C32(0x028a0ca0), SPH_C32(0x439a6a30), SPH_C32(0x915b1cf2),
+	  SPH_C32(0x86062922) },
+	{ SPH_C32(0xf3928800), SPH_C32(0xdc560000), SPH_C32(0xbd470000),
+	  SPH_C32(0x95bd0000), SPH_C32(0x3d767488), SPH_C32(0xf3c9c922),
+	  SPH_C32(0x916cbfec), SPH_C32(0x4aeb5b0f), SPH_C32(0xe1d7d800),
+	  SPH_C32(0x3ed90000), SPH_C32(0xa5cc0000), SPH_C32(0x8ea50000),
+	  SPH_C32(0xe4466aba), SPH_C32(0x23732650), SPH_C32(0xdb56301e),
+	  SPH_C32(0xa0dc676f) },
+	{ SPH_C32(0x1c998a70), SPH_C32(0xe6ab0000), SPH_C32(0xe0e90000),
+	  SPH_C32(0xfcf40000), SPH_C32(0xa679488e), SPH_C32(0xb7cc7cdb),
+	  SPH_C32(0xf778b5bd), SPH_C32(0xd8a40605), SPH_C32(0x28bcd830),
+	  SPH_C32(0xd9fc0000), SPH_C32(0x8a480000), SPH_C32(0xa8ea0000),
+	  SPH_C32(0xec2f3143), SPH_C32(0x4e8fd767), SPH_C32(0x8bc9599a),
+	  SPH_C32(0x3eb5c807) },
+	{ SPH_C32(0x3af98830), SPH_C32(0x3b730000), SPH_C32(0x92c30000),
+	  SPH_C32(0xb3f20000), SPH_C32(0x351f2f71), SPH_C32(0x9e353815),
+	  SPH_C32(0xc1f3d668), SPH_C32(0xd482f467), SPH_C32(0xc7b7da40),
+	  SPH_C32(0xe3010000), SPH_C32(0xd7e60000), SPH_C32(0xc1a30000),
+	  SPH_C32(0x77200d45), SPH_C32(0x0a8a629e), SPH_C32(0xeddd53cb),
+	  SPH_C32(0xacfa950d) },
+	{ SPH_C32(0xd5f28a40), SPH_C32(0x018e0000), SPH_C32(0xcf6d0000),
+	  SPH_C32(0xdabb0000), SPH_C32(0xae101377), SPH_C32(0xda308dec),
+	  SPH_C32(0xa7e7dc39), SPH_C32(0x46cda96d), SPH_C32(0x0edcda70),
+	  SPH_C32(0x04240000), SPH_C32(0xf8620000), SPH_C32(0xe7ec0000),
+	  SPH_C32(0x7f4956bc), SPH_C32(0x677693a9), SPH_C32(0xbd423a4f),
+	  SPH_C32(0x32933a65) },
+	{ SPH_C32(0xe7c8b400), SPH_C32(0x65bf0000), SPH_C32(0xdc600000),
+	  SPH_C32(0x64dc0000), SPH_C32(0xf31749e4), SPH_C32(0x4380f45a),
+	  SPH_C32(0xd6c5d8cc), SPH_C32(0xab657fca), SPH_C32(0xc2b0cc00),
+	  SPH_C32(0xf6600000), SPH_C32(0x510b0000), SPH_C32(0x75d00000),
+	  SPH_C32(0x978b4edf), SPH_C32(0xdbd58319), SPH_C32(0xd9923a21),
+	  SPH_C32(0x7cf88170) },
+	{ SPH_C32(0x08c3b670), SPH_C32(0x5f420000), SPH_C32(0x81ce0000),
+	  SPH_C32(0x0d950000), SPH_C32(0x681875e2), SPH_C32(0x078541a3),
+	  SPH_C32(0xb0d1d29d), SPH_C32(0x392a22c0), SPH_C32(0x0bdbcc30),
+	  SPH_C32(0x11450000), SPH_C32(0x7e8f0000), SPH_C32(0x539f0000),
+	  SPH_C32(0x9fe21526), SPH_C32(0xb629722e), SPH_C32(0x890d53a5),
+	  SPH_C32(0xe2912e18) },
+	{ SPH_C32(0x2ea3b430), SPH_C32(0x829a0000), SPH_C32(0xf3e40000),
+	  SPH_C32(0x42930000), SPH_C32(0xfb7e121d), SPH_C32(0x2e7c056d),
+	  SPH_C32(0x865ab148), SPH_C32(0x350cd0a2), SPH_C32(0xe4d0ce40),
+	  SPH_C32(0x2bb80000), SPH_C32(0x23210000), SPH_C32(0x3ad60000),
+	  SPH_C32(0x04ed2920), SPH_C32(0xf22cc7d7), SPH_C32(0xef1959f4),
+	  SPH_C32(0x70de7312) },
+	{ SPH_C32(0xc1a8b640), SPH_C32(0xb8670000), SPH_C32(0xae4a0000),
+	  SPH_C32(0x2bda0000), SPH_C32(0x60712e1b), SPH_C32(0x6a79b094),
+	  SPH_C32(0xe04ebb19), SPH_C32(0xa7438da8), SPH_C32(0x2dbbce70),
+	  SPH_C32(0xcc9d0000), SPH_C32(0x0ca50000), SPH_C32(0x1c990000),
+	  SPH_C32(0x0c8472d9), SPH_C32(0x9fd036e0), SPH_C32(0xbf863070),
+	  SPH_C32(0xeeb7dc7a) },
+	{ SPH_C32(0xd0f59c00), SPH_C32(0x14ef0000), SPH_C32(0x49800000),
+	  SPH_C32(0x6ec80000), SPH_C32(0x4ebb50ed), SPH_C32(0x0b6f6c6b),
+	  SPH_C32(0x93a8b5d3), SPH_C32(0x96cfbd10), SPH_C32(0xd6eaf000),
+	  SPH_C32(0x4f890000), SPH_C32(0x302c0000), SPH_C32(0x84b10000),
+	  SPH_C32(0x59ea73b3), SPH_C32(0x6b9cbe61), SPH_C32(0x9e3b5d01),
+	  SPH_C32(0x9d76a5b5) },
+	{ SPH_C32(0x3ffe9e70), SPH_C32(0x2e120000), SPH_C32(0x142e0000),
+	  SPH_C32(0x07810000), SPH_C32(0xd5b46ceb), SPH_C32(0x4f6ad992),
+	  SPH_C32(0xf5bcbf82), SPH_C32(0x0480e01a), SPH_C32(0x1f81f030),
+	  SPH_C32(0xa8ac0000), SPH_C32(0x1fa80000), SPH_C32(0xa2fe0000),
+	  SPH_C32(0x5183284a), SPH_C32(0x06604f56), SPH_C32(0xcea43485),
+	  SPH_C32(0x031f0add) },
+	{ SPH_C32(0x199e9c30), SPH_C32(0xf3ca0000), SPH_C32(0x66040000),
+	  SPH_C32(0x48870000), SPH_C32(0x46d20b14), SPH_C32(0x66939d5c),
+	  SPH_C32(0xc337dc57), SPH_C32(0x08a61278), SPH_C32(0xf08af240),
+	  SPH_C32(0x92510000), SPH_C32(0x42060000), SPH_C32(0xcbb70000),
+	  SPH_C32(0xca8c144c), SPH_C32(0x4265faaf), SPH_C32(0xa8b03ed4),
+	  SPH_C32(0x915057d7) },
+	{ SPH_C32(0xf6959e40), SPH_C32(0xc9370000), SPH_C32(0x3baa0000),
+	  SPH_C32(0x21ce0000), SPH_C32(0xdddd3712), SPH_C32(0x229628a5),
+	  SPH_C32(0xa523d606), SPH_C32(0x9ae94f72), SPH_C32(0x39e1f270),
+	  SPH_C32(0x75740000), SPH_C32(0x6d820000), SPH_C32(0xedf80000),
+	  SPH_C32(0xc2e54fb5), SPH_C32(0x2f990b98), SPH_C32(0xf82f5750),
+	  SPH_C32(0x0f39f8bf) },
+	{ SPH_C32(0xc4afa000), SPH_C32(0xad060000), SPH_C32(0x28a70000),
+	  SPH_C32(0x9fa90000), SPH_C32(0x80da6d81), SPH_C32(0xbb265113),
+	  SPH_C32(0xd401d2f3), SPH_C32(0x774199d5), SPH_C32(0xf58de400),
+	  SPH_C32(0x87300000), SPH_C32(0xc4eb0000), SPH_C32(0x7fc40000),
+	  SPH_C32(0x2a2757d6), SPH_C32(0x933a1b28), SPH_C32(0x9cff573e),
+	  SPH_C32(0x415243aa) },
+	{ SPH_C32(0x2ba4a270), SPH_C32(0x97fb0000), SPH_C32(0x75090000),
+	  SPH_C32(0xf6e00000), SPH_C32(0x1bd55187), SPH_C32(0xff23e4ea),
+	  SPH_C32(0xb215d8a2), SPH_C32(0xe50ec4df), SPH_C32(0x3ce6e430),
+	  SPH_C32(0x60150000), SPH_C32(0xeb6f0000), SPH_C32(0x598b0000),
+	  SPH_C32(0x224e0c2f), SPH_C32(0xfec6ea1f), SPH_C32(0xcc603eba),
+	  SPH_C32(0xdf3becc2) },
+	{ SPH_C32(0x0dc4a030), SPH_C32(0x4a230000), SPH_C32(0x07230000),
+	  SPH_C32(0xb9e60000), SPH_C32(0x88b33678), SPH_C32(0xd6daa024),
+	  SPH_C32(0x849ebb77), SPH_C32(0xe92836bd), SPH_C32(0xd3ede640),
+	  SPH_C32(0x5ae80000), SPH_C32(0xb6c10000), SPH_C32(0x30c20000),
+	  SPH_C32(0xb9413029), SPH_C32(0xbac35fe6), SPH_C32(0xaa7434eb),
+	  SPH_C32(0x4d74b1c8) },
+	{ SPH_C32(0xe2cfa240), SPH_C32(0x70de0000), SPH_C32(0x5a8d0000),
+	  SPH_C32(0xd0af0000), SPH_C32(0x13bc0a7e), SPH_C32(0x92df15dd),
+	  SPH_C32(0xe28ab126), SPH_C32(0x7b676bb7), SPH_C32(0x1a86e670),
+	  SPH_C32(0xbdcd0000), SPH_C32(0x99450000), SPH_C32(0x168d0000),
+	  SPH_C32(0xb1286bd0), SPH_C32(0xd73faed1), SPH_C32(0xfaeb5d6f),
+	  SPH_C32(0xd31d1ea0) },
+	{ SPH_C32(0xa7bad400), SPH_C32(0x36bb0000), SPH_C32(0x78910000),
+	  SPH_C32(0x34780000), SPH_C32(0x8ed413f8), SPH_C32(0x676c0dc3),
+	  SPH_C32(0xfadcfe71), SPH_C32(0x1ff06c8d), SPH_C32(0x7d6cc000),
+	  SPH_C32(0x8e0a0000), SPH_C32(0x379d0000), SPH_C32(0x63360000),
+	  SPH_C32(0xbd7c29ff), SPH_C32(0xc267f3a4), SPH_C32(0x985003c4),
+	  SPH_C32(0xd816a946) },
+	{ SPH_C32(0x48b1d670), SPH_C32(0x0c460000), SPH_C32(0x253f0000),
+	  SPH_C32(0x5d310000), SPH_C32(0x15db2ffe), SPH_C32(0x2369b83a),
+	  SPH_C32(0x9cc8f420), SPH_C32(0x8dbf3187), SPH_C32(0xb407c030),
+	  SPH_C32(0x692f0000), SPH_C32(0x18190000), SPH_C32(0x45790000),
+	  SPH_C32(0xb5157206), SPH_C32(0xaf9b0293), SPH_C32(0xc8cf6a40),
+	  SPH_C32(0x467f062e) },
+	{ SPH_C32(0x6ed1d430), SPH_C32(0xd19e0000), SPH_C32(0x57150000),
+	  SPH_C32(0x12370000), SPH_C32(0x86bd4801), SPH_C32(0x0a90fcf4),
+	  SPH_C32(0xaa4397f5), SPH_C32(0x8199c3e5), SPH_C32(0x5b0cc240),
+	  SPH_C32(0x53d20000), SPH_C32(0x45b70000), SPH_C32(0x2c300000),
+	  SPH_C32(0x2e1a4e00), SPH_C32(0xeb9eb76a), SPH_C32(0xaedb6011),
+	  SPH_C32(0xd4305b24) },
+	{ SPH_C32(0x81dad640), SPH_C32(0xeb630000), SPH_C32(0x0abb0000),
+	  SPH_C32(0x7b7e0000), SPH_C32(0x1db27407), SPH_C32(0x4e95490d),
+	  SPH_C32(0xcc579da4), SPH_C32(0x13d69eef), SPH_C32(0x9267c270),
+	  SPH_C32(0xb4f70000), SPH_C32(0x6a330000), SPH_C32(0x0a7f0000),
+	  SPH_C32(0x267315f9), SPH_C32(0x8662465d), SPH_C32(0xfe440995),
+	  SPH_C32(0x4a59f44c) },
+	{ SPH_C32(0xb3e0e800), SPH_C32(0x8f520000), SPH_C32(0x19b60000),
+	  SPH_C32(0xc5190000), SPH_C32(0x40b52e94), SPH_C32(0xd72530bb),
+	  SPH_C32(0xbd759951), SPH_C32(0xfe7e4848), SPH_C32(0x5e0bd400),
+	  SPH_C32(0x46b30000), SPH_C32(0xc35a0000), SPH_C32(0x98430000),
+	  SPH_C32(0xceb10d9a), SPH_C32(0x3ac156ed), SPH_C32(0x9a9409fb),
+	  SPH_C32(0x04324f59) },
+	{ SPH_C32(0x5cebea70), SPH_C32(0xb5af0000), SPH_C32(0x44180000),
+	  SPH_C32(0xac500000), SPH_C32(0xdbba1292), SPH_C32(0x93208542),
+	  SPH_C32(0xdb619300), SPH_C32(0x6c311542), SPH_C32(0x9760d430),
+	  SPH_C32(0xa1960000), SPH_C32(0xecde0000), SPH_C32(0xbe0c0000),
+	  SPH_C32(0xc6d85663), SPH_C32(0x573da7da), SPH_C32(0xca0b607f),
+	  SPH_C32(0x9a5be031) },
+	{ SPH_C32(0x7a8be830), SPH_C32(0x68770000), SPH_C32(0x36320000),
+	  SPH_C32(0xe3560000), SPH_C32(0x48dc756d), SPH_C32(0xbad9c18c),
+	  SPH_C32(0xedeaf0d5), SPH_C32(0x6017e720), SPH_C32(0x786bd640),
+	  SPH_C32(0x9b6b0000), SPH_C32(0xb1700000), SPH_C32(0xd7450000),
+	  SPH_C32(0x5dd76a65), SPH_C32(0x13381223), SPH_C32(0xac1f6a2e),
+	  SPH_C32(0x0814bd3b) },
+	{ SPH_C32(0x9580ea40), SPH_C32(0x528a0000), SPH_C32(0x6b9c0000),
+	  SPH_C32(0x8a1f0000), SPH_C32(0xd3d3496b), SPH_C32(0xfedc7475),
+	  SPH_C32(0x8bfefa84), SPH_C32(0xf258ba2a), SPH_C32(0xb100d670),
+	  SPH_C32(0x7c4e0000), SPH_C32(0x9ef40000), SPH_C32(0xf10a0000),
+	  SPH_C32(0x55be319c), SPH_C32(0x7ec4e314), SPH_C32(0xfc8003aa),
+	  SPH_C32(0x967d1253) },
+	{ SPH_C32(0x84ddc000), SPH_C32(0xfe020000), SPH_C32(0x8c560000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xfd19379d), SPH_C32(0x9fcaa88a),
+	  SPH_C32(0xf818f44e), SPH_C32(0xc3d48a92), SPH_C32(0x4a51e800),
+	  SPH_C32(0xff5a0000), SPH_C32(0xa27d0000), SPH_C32(0x69220000),
+	  SPH_C32(0x00d030f6), SPH_C32(0x8a886b95), SPH_C32(0xdd3d6edb),
+	  SPH_C32(0xe5bc6b9c) },
+	{ SPH_C32(0x6bd6c270), SPH_C32(0xc4ff0000), SPH_C32(0xd1f80000),
+	  SPH_C32(0xa6440000), SPH_C32(0x66160b9b), SPH_C32(0xdbcf1d73),
+	  SPH_C32(0x9e0cfe1f), SPH_C32(0x519bd798), SPH_C32(0x833ae830),
+	  SPH_C32(0x187f0000), SPH_C32(0x8df90000), SPH_C32(0x4f6d0000),
+	  SPH_C32(0x08b96b0f), SPH_C32(0xe7749aa2), SPH_C32(0x8da2075f),
+	  SPH_C32(0x7bd5c4f4) },
+	{ SPH_C32(0x4db6c030), SPH_C32(0x19270000), SPH_C32(0xa3d20000),
+	  SPH_C32(0xe9420000), SPH_C32(0xf5706c64), SPH_C32(0xf23659bd),
+	  SPH_C32(0xa8879dca), SPH_C32(0x5dbd25fa), SPH_C32(0x6c31ea40),
+	  SPH_C32(0x22820000), SPH_C32(0xd0570000), SPH_C32(0x26240000),
+	  SPH_C32(0x93b65709), SPH_C32(0xa3712f5b), SPH_C32(0xebb60d0e),
+	  SPH_C32(0xe99a99fe) },
+	{ SPH_C32(0xa2bdc240), SPH_C32(0x23da0000), SPH_C32(0xfe7c0000),
+	  SPH_C32(0x800b0000), SPH_C32(0x6e7f5062), SPH_C32(0xb633ec44),
+	  SPH_C32(0xce93979b), SPH_C32(0xcff278f0), SPH_C32(0xa55aea70),
+	  SPH_C32(0xc5a70000), SPH_C32(0xffd30000), SPH_C32(0x006b0000),
+	  SPH_C32(0x9bdf0cf0), SPH_C32(0xce8dde6c), SPH_C32(0xbb29648a),
+	  SPH_C32(0x77f33696) },
+	{ SPH_C32(0x9087fc00), SPH_C32(0x47eb0000), SPH_C32(0xed710000),
+	  SPH_C32(0x3e6c0000), SPH_C32(0x33780af1), SPH_C32(0x2f8395f2),
+	  SPH_C32(0xbfb1936e), SPH_C32(0x225aae57), SPH_C32(0x6936fc00),
+	  SPH_C32(0x37e30000), SPH_C32(0x56ba0000), SPH_C32(0x92570000),
+	  SPH_C32(0x731d1493), SPH_C32(0x722ecedc), SPH_C32(0xdff964e4),
+	  SPH_C32(0x39988d83) },
+	{ SPH_C32(0x7f8cfe70), SPH_C32(0x7d160000), SPH_C32(0xb0df0000),
+	  SPH_C32(0x57250000), SPH_C32(0xa87736f7), SPH_C32(0x6b86200b),
+	  SPH_C32(0xd9a5993f), SPH_C32(0xb015f35d), SPH_C32(0xa05dfc30),
+	  SPH_C32(0xd0c60000), SPH_C32(0x793e0000), SPH_C32(0xb4180000),
+	  SPH_C32(0x7b744f6a), SPH_C32(0x1fd23feb), SPH_C32(0x8f660d60),
+	  SPH_C32(0xa7f122eb) },
+	{ SPH_C32(0x59ecfc30), SPH_C32(0xa0ce0000), SPH_C32(0xc2f50000),
+	  SPH_C32(0x18230000), SPH_C32(0x3b115108), SPH_C32(0x427f64c5),
+	  SPH_C32(0xef2efaea), SPH_C32(0xbc33013f), SPH_C32(0x4f56fe40),
+	  SPH_C32(0xea3b0000), SPH_C32(0x24900000), SPH_C32(0xdd510000),
+	  SPH_C32(0xe07b736c), SPH_C32(0x5bd78a12), SPH_C32(0xe9720731),
+	  SPH_C32(0x35be7fe1) },
+	{ SPH_C32(0xb6e7fe40), SPH_C32(0x9a330000), SPH_C32(0x9f5b0000),
+	  SPH_C32(0x716a0000), SPH_C32(0xa01e6d0e), SPH_C32(0x067ad13c),
+	  SPH_C32(0x893af0bb), SPH_C32(0x2e7c5c35), SPH_C32(0x863dfe70),
+	  SPH_C32(0x0d1e0000), SPH_C32(0x0b140000), SPH_C32(0xfb1e0000),
+	  SPH_C32(0xe8122895), SPH_C32(0x362b7b25), SPH_C32(0xb9ed6eb5),
+	  SPH_C32(0xabd7d089) }
+};
+
+static const sph_u32 T512_8[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xf6800005), SPH_C32(0x3443c000), SPH_C32(0x24070000),
+	  SPH_C32(0x8f3d0000), SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae),
+	  SPH_C32(0xcdc58b19), SPH_C32(0xd795ba31), SPH_C32(0xa67f0001),
+	  SPH_C32(0x71378000), SPH_C32(0x19fc0000), SPH_C32(0x96db0000),
+	  SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3), SPH_C32(0x2c6d478f),
+	  SPH_C32(0xac8e6c88) },
+	{ SPH_C32(0xa67f0001), SPH_C32(0x71378000), SPH_C32(0x19fc0000),
+	  SPH_C32(0x96db0000), SPH_C32(0x3a8b6dfd), SPH_C32(0xebcaaef3),
+	  SPH_C32(0x2c6d478f), SPH_C32(0xac8e6c88), SPH_C32(0x50ff0004),
+	  SPH_C32(0x45744000), SPH_C32(0x3dfb0000), SPH_C32(0x19e60000),
+	  SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d), SPH_C32(0xe1a8cc96),
+	  SPH_C32(0x7b1bd6b9) },
+	{ SPH_C32(0x50ff0004), SPH_C32(0x45744000), SPH_C32(0x3dfb0000),
+	  SPH_C32(0x19e60000), SPH_C32(0x1bbc5606), SPH_C32(0xe1727b5d),
+	  SPH_C32(0xe1a8cc96), SPH_C32(0x7b1bd6b9), SPH_C32(0xf6800005),
+	  SPH_C32(0x3443c000), SPH_C32(0x24070000), SPH_C32(0x8f3d0000),
+	  SPH_C32(0x21373bfb), SPH_C32(0x0ab8d5ae), SPH_C32(0xcdc58b19),
+	  SPH_C32(0xd795ba31) },
+	{ SPH_C32(0xf7750009), SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000),
+	  SPH_C32(0x04920000), SPH_C32(0x029519a9), SPH_C32(0xf8e836ba),
+	  SPH_C32(0x7a87f14e), SPH_C32(0x9e16981a), SPH_C32(0xd46a0000),
+	  SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000), SPH_C32(0x4a290000),
+	  SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c), SPH_C32(0x98369604),
+	  SPH_C32(0xf746c320) },
+	{ SPH_C32(0x01f5000c), SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000),
+	  SPH_C32(0x8baf0000), SPH_C32(0x23a22252), SPH_C32(0xf250e314),
+	  SPH_C32(0xb7427a57), SPH_C32(0x4983222b), SPH_C32(0x72150001),
+	  SPH_C32(0xfcff4000), SPH_C32(0xbc530000), SPH_C32(0xdcf20000),
+	  SPH_C32(0xc6c52f87), SPH_C32(0x227e289f), SPH_C32(0xb45bd18b),
+	  SPH_C32(0x5bc8afa8) },
+	{ SPH_C32(0x510a0008), SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000),
+	  SPH_C32(0x92490000), SPH_C32(0x381e7454), SPH_C32(0x13229849),
+	  SPH_C32(0x56eab6c1), SPH_C32(0x3298f492), SPH_C32(0x84950004),
+	  SPH_C32(0xc8bc8000), SPH_C32(0x98540000), SPH_C32(0x53cf0000),
+	  SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31), SPH_C32(0x799e5a92),
+	  SPH_C32(0x8c5d1599) },
+	{ SPH_C32(0xa78a000d), SPH_C32(0x8a488000), SPH_C32(0xfe2d0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x19294faf), SPH_C32(0x199a4de7),
+	  SPH_C32(0x9b2f3dd8), SPH_C32(0xe50d4ea3), SPH_C32(0x22ea0005),
+	  SPH_C32(0xb98b0000), SPH_C32(0x81a80000), SPH_C32(0xc5140000),
+	  SPH_C32(0xdd797981), SPH_C32(0xc30c53c2), SPH_C32(0x55f31d1d),
+	  SPH_C32(0x20d37911) },
+	{ SPH_C32(0xd46a0000), SPH_C32(0x8dc8c000), SPH_C32(0xa5af0000),
+	  SPH_C32(0x4a290000), SPH_C32(0xfc4e427a), SPH_C32(0xc9b4866c),
+	  SPH_C32(0x98369604), SPH_C32(0xf746c320), SPH_C32(0x231f0009),
+	  SPH_C32(0x42f40000), SPH_C32(0x66790000), SPH_C32(0x4ebb0000),
+	  SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6), SPH_C32(0xe2b1674a),
+	  SPH_C32(0x69505b3a) },
+	{ SPH_C32(0x22ea0005), SPH_C32(0xb98b0000), SPH_C32(0x81a80000),
+	  SPH_C32(0xc5140000), SPH_C32(0xdd797981), SPH_C32(0xc30c53c2),
+	  SPH_C32(0x55f31d1d), SPH_C32(0x20d37911), SPH_C32(0x85600008),
+	  SPH_C32(0x33c38000), SPH_C32(0x7f850000), SPH_C32(0xd8600000),
+	  SPH_C32(0xc450362e), SPH_C32(0xda961e25), SPH_C32(0xcedc20c5),
+	  SPH_C32(0xc5de37b2) },
+	{ SPH_C32(0x72150001), SPH_C32(0xfcff4000), SPH_C32(0xbc530000),
+	  SPH_C32(0xdcf20000), SPH_C32(0xc6c52f87), SPH_C32(0x227e289f),
+	  SPH_C32(0xb45bd18b), SPH_C32(0x5bc8afa8), SPH_C32(0x73e0000d),
+	  SPH_C32(0x07804000), SPH_C32(0x5b820000), SPH_C32(0x575d0000),
+	  SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b), SPH_C32(0x0319abdc),
+	  SPH_C32(0x124b8d83) },
+	{ SPH_C32(0x84950004), SPH_C32(0xc8bc8000), SPH_C32(0x98540000),
+	  SPH_C32(0x53cf0000), SPH_C32(0xe7f2147c), SPH_C32(0x28c6fd31),
+	  SPH_C32(0x799e5a92), SPH_C32(0x8c5d1599), SPH_C32(0xd59f000c),
+	  SPH_C32(0x76b7c000), SPH_C32(0x427e0000), SPH_C32(0xc1860000),
+	  SPH_C32(0xdfec6028), SPH_C32(0x3be46578), SPH_C32(0x2f74ec53),
+	  SPH_C32(0xbec5e10b) },
+	{ SPH_C32(0x231f0009), SPH_C32(0x42f40000), SPH_C32(0x66790000),
+	  SPH_C32(0x4ebb0000), SPH_C32(0xfedb5bd3), SPH_C32(0x315cb0d6),
+	  SPH_C32(0xe2b1674a), SPH_C32(0x69505b3a), SPH_C32(0xf7750009),
+	  SPH_C32(0xcf3cc000), SPH_C32(0xc3d60000), SPH_C32(0x04920000),
+	  SPH_C32(0x029519a9), SPH_C32(0xf8e836ba), SPH_C32(0x7a87f14e),
+	  SPH_C32(0x9e16981a) },
+	{ SPH_C32(0xd59f000c), SPH_C32(0x76b7c000), SPH_C32(0x427e0000),
+	  SPH_C32(0xc1860000), SPH_C32(0xdfec6028), SPH_C32(0x3be46578),
+	  SPH_C32(0x2f74ec53), SPH_C32(0xbec5e10b), SPH_C32(0x510a0008),
+	  SPH_C32(0xbe0b4000), SPH_C32(0xda2a0000), SPH_C32(0x92490000),
+	  SPH_C32(0x381e7454), SPH_C32(0x13229849), SPH_C32(0x56eab6c1),
+	  SPH_C32(0x3298f492) },
+	{ SPH_C32(0x85600008), SPH_C32(0x33c38000), SPH_C32(0x7f850000),
+	  SPH_C32(0xd8600000), SPH_C32(0xc450362e), SPH_C32(0xda961e25),
+	  SPH_C32(0xcedc20c5), SPH_C32(0xc5de37b2), SPH_C32(0xa78a000d),
+	  SPH_C32(0x8a488000), SPH_C32(0xfe2d0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x19294faf), SPH_C32(0x199a4de7), SPH_C32(0x9b2f3dd8),
+	  SPH_C32(0xe50d4ea3) },
+	{ SPH_C32(0x73e0000d), SPH_C32(0x07804000), SPH_C32(0x5b820000),
+	  SPH_C32(0x575d0000), SPH_C32(0xe5670dd5), SPH_C32(0xd02ecb8b),
+	  SPH_C32(0x0319abdc), SPH_C32(0x124b8d83), SPH_C32(0x01f5000c),
+	  SPH_C32(0xfb7f0000), SPH_C32(0xe7d10000), SPH_C32(0x8baf0000),
+	  SPH_C32(0x23a22252), SPH_C32(0xf250e314), SPH_C32(0xb7427a57),
+	  SPH_C32(0x4983222b) },
+	{ SPH_C32(0x774400f0), SPH_C32(0xf15a0000), SPH_C32(0xf5b20000),
+	  SPH_C32(0x34140000), SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25),
+	  SPH_C32(0x0bc3cd1e), SPH_C32(0xcf3775cb), SPH_C32(0xf46c0050),
+	  SPH_C32(0x96180000), SPH_C32(0x14a50000), SPH_C32(0x031f0000),
+	  SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19), SPH_C32(0x9ca470d2),
+	  SPH_C32(0x8a341574) },
+	{ SPH_C32(0x81c400f5), SPH_C32(0xc519c000), SPH_C32(0xd1b50000),
+	  SPH_C32(0xbb290000), SPH_C32(0xa8004577), SPH_C32(0x5033398b),
+	  SPH_C32(0xc6064607), SPH_C32(0x18a2cffa), SPH_C32(0x52130051),
+	  SPH_C32(0xe72f8000), SPH_C32(0x0d590000), SPH_C32(0x95c40000),
+	  SPH_C32(0x781f1345), SPH_C32(0x8d75d0ea), SPH_C32(0xb0c9375d),
+	  SPH_C32(0x26ba79fc) },
+	{ SPH_C32(0xd13b00f1), SPH_C32(0x806d8000), SPH_C32(0xec4e0000),
+	  SPH_C32(0xa2cf0000), SPH_C32(0xb3bc1371), SPH_C32(0xb14142d6),
+	  SPH_C32(0x27ae8a91), SPH_C32(0x63b91943), SPH_C32(0xa4930054),
+	  SPH_C32(0xd36c4000), SPH_C32(0x295e0000), SPH_C32(0x1af90000),
+	  SPH_C32(0x592828be), SPH_C32(0x87cd0544), SPH_C32(0x7d0cbc44),
+	  SPH_C32(0xf12fc3cd) },
+	{ SPH_C32(0x27bb00f4), SPH_C32(0xb42e4000), SPH_C32(0xc8490000),
+	  SPH_C32(0x2df20000), SPH_C32(0x928b288a), SPH_C32(0xbbf99778),
+	  SPH_C32(0xea6b0188), SPH_C32(0xb42ca372), SPH_C32(0x02ec0055),
+	  SPH_C32(0xa25bc000), SPH_C32(0x30a20000), SPH_C32(0x8c220000),
+	  SPH_C32(0x63a34543), SPH_C32(0x6c07abb7), SPH_C32(0x5161fbcb),
+	  SPH_C32(0x5da1af45) },
+	{ SPH_C32(0x803100f9), SPH_C32(0x3e66c000), SPH_C32(0x36640000),
+	  SPH_C32(0x30860000), SPH_C32(0x8ba26725), SPH_C32(0xa263da9f),
+	  SPH_C32(0x71443c50), SPH_C32(0x5121edd1), SPH_C32(0x20060050),
+	  SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000), SPH_C32(0x49360000),
+	  SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875), SPH_C32(0x0492e6d6),
+	  SPH_C32(0x7d72d654) },
+	{ SPH_C32(0x76b100fc), SPH_C32(0x0a250000), SPH_C32(0x12630000),
+	  SPH_C32(0xbfbb0000), SPH_C32(0xaa955cde), SPH_C32(0xa8db0f31),
+	  SPH_C32(0xbc81b749), SPH_C32(0x86b457e0), SPH_C32(0x86790051),
+	  SPH_C32(0x6ae74000), SPH_C32(0xa8f60000), SPH_C32(0xdfed0000),
+	  SPH_C32(0x8451513f), SPH_C32(0x44c15686), SPH_C32(0x28ffa159),
+	  SPH_C32(0xd1fcbadc) },
+	{ SPH_C32(0x264e00f8), SPH_C32(0x4f514000), SPH_C32(0x2f980000),
+	  SPH_C32(0xa65d0000), SPH_C32(0xb1290ad8), SPH_C32(0x49a9746c),
+	  SPH_C32(0x5d297bdf), SPH_C32(0xfdaf8159), SPH_C32(0x70f90054),
+	  SPH_C32(0x5ea48000), SPH_C32(0x8cf10000), SPH_C32(0x50d00000),
+	  SPH_C32(0xa5666ac4), SPH_C32(0x4e798328), SPH_C32(0xe53a2a40),
+	  SPH_C32(0x066900ed) },
+	{ SPH_C32(0xd0ce00fd), SPH_C32(0x7b128000), SPH_C32(0x0b9f0000),
+	  SPH_C32(0x29600000), SPH_C32(0x901e3123), SPH_C32(0x4311a1c2),
+	  SPH_C32(0x90ecf0c6), SPH_C32(0x2a3a3b68), SPH_C32(0xd6860055),
+	  SPH_C32(0x2f930000), SPH_C32(0x950d0000), SPH_C32(0xc60b0000),
+	  SPH_C32(0x9fed0739), SPH_C32(0xa5b32ddb), SPH_C32(0xc9576dcf),
+	  SPH_C32(0xaae76c65) },
+	{ SPH_C32(0xa32e00f0), SPH_C32(0x7c92c000), SPH_C32(0x501d0000),
+	  SPH_C32(0x7e3d0000), SPH_C32(0x75793cf6), SPH_C32(0x933f6a49),
+	  SPH_C32(0x93f55b1a), SPH_C32(0x3871b6eb), SPH_C32(0xd7730059),
+	  SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000), SPH_C32(0x4da40000),
+	  SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf), SPH_C32(0x7e151798),
+	  SPH_C32(0xe3644e4e) },
+	{ SPH_C32(0x55ae00f5), SPH_C32(0x48d10000), SPH_C32(0x741a0000),
+	  SPH_C32(0xf1000000), SPH_C32(0x544e070d), SPH_C32(0x9987bfe7),
+	  SPH_C32(0x5e30d003), SPH_C32(0xefe40cda), SPH_C32(0x710c0058),
+	  SPH_C32(0xa5db8000), SPH_C32(0x6b200000), SPH_C32(0xdb7f0000),
+	  SPH_C32(0x86c44896), SPH_C32(0xbc29603c), SPH_C32(0x52785017),
+	  SPH_C32(0x4fea22c6) },
+	{ SPH_C32(0x055100f1), SPH_C32(0x0da54000), SPH_C32(0x49e10000),
+	  SPH_C32(0xe8e60000), SPH_C32(0x4ff2510b), SPH_C32(0x78f5c4ba),
+	  SPH_C32(0xbf981c95), SPH_C32(0x94ffda63), SPH_C32(0x878c005d),
+	  SPH_C32(0x91984000), SPH_C32(0x4f270000), SPH_C32(0x54420000),
+	  SPH_C32(0xa7f3736d), SPH_C32(0xb691b592), SPH_C32(0x9fbddb0e),
+	  SPH_C32(0x987f98f7) },
+	{ SPH_C32(0xf3d100f4), SPH_C32(0x39e68000), SPH_C32(0x6de60000),
+	  SPH_C32(0x67db0000), SPH_C32(0x6ec56af0), SPH_C32(0x724d1114),
+	  SPH_C32(0x725d978c), SPH_C32(0x436a6052), SPH_C32(0x21f3005c),
+	  SPH_C32(0xe0afc000), SPH_C32(0x56db0000), SPH_C32(0xc2990000),
+	  SPH_C32(0x9d781e90), SPH_C32(0x5d5b1b61), SPH_C32(0xb3d09c81),
+	  SPH_C32(0x34f1f47f) },
+	{ SPH_C32(0x545b00f9), SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000),
+	  SPH_C32(0x7aaf0000), SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3),
+	  SPH_C32(0xe972aa54), SPH_C32(0xa6672ef1), SPH_C32(0x03190059),
+	  SPH_C32(0x5924c000), SPH_C32(0xd7730000), SPH_C32(0x078d0000),
+	  SPH_C32(0x40016711), SPH_C32(0x9e5748a3), SPH_C32(0xe623819c),
+	  SPH_C32(0x14228d6e) },
+	{ SPH_C32(0xa2db00fc), SPH_C32(0x87edc000), SPH_C32(0xb7cc0000),
+	  SPH_C32(0xf5920000), SPH_C32(0x56db1ea4), SPH_C32(0x616f895d),
+	  SPH_C32(0x24b7214d), SPH_C32(0x71f294c0), SPH_C32(0xa5660058),
+	  SPH_C32(0x28134000), SPH_C32(0xce8f0000), SPH_C32(0x91560000),
+	  SPH_C32(0x7a8a0aec), SPH_C32(0x759de650), SPH_C32(0xca4ec613),
+	  SPH_C32(0xb8ace1e6) },
+	{ SPH_C32(0xf22400f8), SPH_C32(0xc2998000), SPH_C32(0x8a370000),
+	  SPH_C32(0xec740000), SPH_C32(0x4d6748a2), SPH_C32(0x801df200),
+	  SPH_C32(0xc51feddb), SPH_C32(0x0ae94279), SPH_C32(0x53e6005d),
+	  SPH_C32(0x1c508000), SPH_C32(0xea880000), SPH_C32(0x1e6b0000),
+	  SPH_C32(0x5bbd3117), SPH_C32(0x7f2533fe), SPH_C32(0x078b4d0a),
+	  SPH_C32(0x6f395bd7) },
+	{ SPH_C32(0x04a400fd), SPH_C32(0xf6da4000), SPH_C32(0xae300000),
+	  SPH_C32(0x63490000), SPH_C32(0x6c507359), SPH_C32(0x8aa527ae),
+	  SPH_C32(0x08da66c2), SPH_C32(0xdd7cf848), SPH_C32(0xf599005c),
+	  SPH_C32(0x6d670000), SPH_C32(0xf3740000), SPH_C32(0x88b00000),
+	  SPH_C32(0x61365cea), SPH_C32(0x94ef9d0d), SPH_C32(0x2be60a85),
+	  SPH_C32(0xc3b7375f) },
+	{ SPH_C32(0xf46c0050), SPH_C32(0x96180000), SPH_C32(0x14a50000),
+	  SPH_C32(0x031f0000), SPH_C32(0x42947eb8), SPH_C32(0x66bf7e19),
+	  SPH_C32(0x9ca470d2), SPH_C32(0x8a341574), SPH_C32(0x832800a0),
+	  SPH_C32(0x67420000), SPH_C32(0xe1170000), SPH_C32(0x370b0000),
+	  SPH_C32(0xcba30034), SPH_C32(0x3c34923c), SPH_C32(0x9767bdcc),
+	  SPH_C32(0x450360bf) },
+	{ SPH_C32(0x02ec0055), SPH_C32(0xa25bc000), SPH_C32(0x30a20000),
+	  SPH_C32(0x8c220000), SPH_C32(0x63a34543), SPH_C32(0x6c07abb7),
+	  SPH_C32(0x5161fbcb), SPH_C32(0x5da1af45), SPH_C32(0x255700a1),
+	  SPH_C32(0x16758000), SPH_C32(0xf8eb0000), SPH_C32(0xa1d00000),
+	  SPH_C32(0xf1286dc9), SPH_C32(0xd7fe3ccf), SPH_C32(0xbb0afa43),
+	  SPH_C32(0xe98d0c37) },
+	{ SPH_C32(0x52130051), SPH_C32(0xe72f8000), SPH_C32(0x0d590000),
+	  SPH_C32(0x95c40000), SPH_C32(0x781f1345), SPH_C32(0x8d75d0ea),
+	  SPH_C32(0xb0c9375d), SPH_C32(0x26ba79fc), SPH_C32(0xd3d700a4),
+	  SPH_C32(0x22364000), SPH_C32(0xdcec0000), SPH_C32(0x2eed0000),
+	  SPH_C32(0xd01f5632), SPH_C32(0xdd46e961), SPH_C32(0x76cf715a),
+	  SPH_C32(0x3e18b606) },
+	{ SPH_C32(0xa4930054), SPH_C32(0xd36c4000), SPH_C32(0x295e0000),
+	  SPH_C32(0x1af90000), SPH_C32(0x592828be), SPH_C32(0x87cd0544),
+	  SPH_C32(0x7d0cbc44), SPH_C32(0xf12fc3cd), SPH_C32(0x75a800a5),
+	  SPH_C32(0x5301c000), SPH_C32(0xc5100000), SPH_C32(0xb8360000),
+	  SPH_C32(0xea943bcf), SPH_C32(0x368c4792), SPH_C32(0x5aa236d5),
+	  SPH_C32(0x9296da8e) },
+	{ SPH_C32(0x03190059), SPH_C32(0x5924c000), SPH_C32(0xd7730000),
+	  SPH_C32(0x078d0000), SPH_C32(0x40016711), SPH_C32(0x9e5748a3),
+	  SPH_C32(0xe623819c), SPH_C32(0x14228d6e), SPH_C32(0x574200a0),
+	  SPH_C32(0xea8ac000), SPH_C32(0x44b80000), SPH_C32(0x7d220000),
+	  SPH_C32(0x37ed424e), SPH_C32(0xf5801450), SPH_C32(0x0f512bc8),
+	  SPH_C32(0xb245a39f) },
+	{ SPH_C32(0xf599005c), SPH_C32(0x6d670000), SPH_C32(0xf3740000),
+	  SPH_C32(0x88b00000), SPH_C32(0x61365cea), SPH_C32(0x94ef9d0d),
+	  SPH_C32(0x2be60a85), SPH_C32(0xc3b7375f), SPH_C32(0xf13d00a1),
+	  SPH_C32(0x9bbd4000), SPH_C32(0x5d440000), SPH_C32(0xebf90000),
+	  SPH_C32(0x0d662fb3), SPH_C32(0x1e4abaa3), SPH_C32(0x233c6c47),
+	  SPH_C32(0x1ecbcf17) },
+	{ SPH_C32(0xa5660058), SPH_C32(0x28134000), SPH_C32(0xce8f0000),
+	  SPH_C32(0x91560000), SPH_C32(0x7a8a0aec), SPH_C32(0x759de650),
+	  SPH_C32(0xca4ec613), SPH_C32(0xb8ace1e6), SPH_C32(0x07bd00a4),
+	  SPH_C32(0xaffe8000), SPH_C32(0x79430000), SPH_C32(0x64c40000),
+	  SPH_C32(0x2c511448), SPH_C32(0x14f26f0d), SPH_C32(0xeef9e75e),
+	  SPH_C32(0xc95e7526) },
+	{ SPH_C32(0x53e6005d), SPH_C32(0x1c508000), SPH_C32(0xea880000),
+	  SPH_C32(0x1e6b0000), SPH_C32(0x5bbd3117), SPH_C32(0x7f2533fe),
+	  SPH_C32(0x078b4d0a), SPH_C32(0x6f395bd7), SPH_C32(0xa1c200a5),
+	  SPH_C32(0xdec90000), SPH_C32(0x60bf0000), SPH_C32(0xf21f0000),
+	  SPH_C32(0x16da79b5), SPH_C32(0xff38c1fe), SPH_C32(0xc294a0d1),
+	  SPH_C32(0x65d019ae) },
+	{ SPH_C32(0x20060050), SPH_C32(0x1bd0c000), SPH_C32(0xb10a0000),
+	  SPH_C32(0x49360000), SPH_C32(0xbeda3cc2), SPH_C32(0xaf0bf875),
+	  SPH_C32(0x0492e6d6), SPH_C32(0x7d72d654), SPH_C32(0xa03700a9),
+	  SPH_C32(0x25b60000), SPH_C32(0x876e0000), SPH_C32(0x79b00000),
+	  SPH_C32(0x35785be7), SPH_C32(0x0d6822ea), SPH_C32(0x75d6da86),
+	  SPH_C32(0x2c533b85) },
+	{ SPH_C32(0xd6860055), SPH_C32(0x2f930000), SPH_C32(0x950d0000),
+	  SPH_C32(0xc60b0000), SPH_C32(0x9fed0739), SPH_C32(0xa5b32ddb),
+	  SPH_C32(0xc9576dcf), SPH_C32(0xaae76c65), SPH_C32(0x064800a8),
+	  SPH_C32(0x54818000), SPH_C32(0x9e920000), SPH_C32(0xef6b0000),
+	  SPH_C32(0x0ff3361a), SPH_C32(0xe6a28c19), SPH_C32(0x59bb9d09),
+	  SPH_C32(0x80dd570d) },
+	{ SPH_C32(0x86790051), SPH_C32(0x6ae74000), SPH_C32(0xa8f60000),
+	  SPH_C32(0xdfed0000), SPH_C32(0x8451513f), SPH_C32(0x44c15686),
+	  SPH_C32(0x28ffa159), SPH_C32(0xd1fcbadc), SPH_C32(0xf0c800ad),
+	  SPH_C32(0x60c24000), SPH_C32(0xba950000), SPH_C32(0x60560000),
+	  SPH_C32(0x2ec40de1), SPH_C32(0xec1a59b7), SPH_C32(0x947e1610),
+	  SPH_C32(0x5748ed3c) },
+	{ SPH_C32(0x70f90054), SPH_C32(0x5ea48000), SPH_C32(0x8cf10000),
+	  SPH_C32(0x50d00000), SPH_C32(0xa5666ac4), SPH_C32(0x4e798328),
+	  SPH_C32(0xe53a2a40), SPH_C32(0x066900ed), SPH_C32(0x56b700ac),
+	  SPH_C32(0x11f5c000), SPH_C32(0xa3690000), SPH_C32(0xf68d0000),
+	  SPH_C32(0x144f601c), SPH_C32(0x07d0f744), SPH_C32(0xb813519f),
+	  SPH_C32(0xfbc681b4) },
+	{ SPH_C32(0xd7730059), SPH_C32(0xd4ec0000), SPH_C32(0x72dc0000),
+	  SPH_C32(0x4da40000), SPH_C32(0xbc4f256b), SPH_C32(0x57e3cecf),
+	  SPH_C32(0x7e151798), SPH_C32(0xe3644e4e), SPH_C32(0x745d00a9),
+	  SPH_C32(0xa87ec000), SPH_C32(0x22c10000), SPH_C32(0x33990000),
+	  SPH_C32(0xc936199d), SPH_C32(0xc4dca486), SPH_C32(0xede04c82),
+	  SPH_C32(0xdb15f8a5) },
+	{ SPH_C32(0x21f3005c), SPH_C32(0xe0afc000), SPH_C32(0x56db0000),
+	  SPH_C32(0xc2990000), SPH_C32(0x9d781e90), SPH_C32(0x5d5b1b61),
+	  SPH_C32(0xb3d09c81), SPH_C32(0x34f1f47f), SPH_C32(0xd22200a8),
+	  SPH_C32(0xd9494000), SPH_C32(0x3b3d0000), SPH_C32(0xa5420000),
+	  SPH_C32(0xf3bd7460), SPH_C32(0x2f160a75), SPH_C32(0xc18d0b0d),
+	  SPH_C32(0x779b942d) },
+	{ SPH_C32(0x710c0058), SPH_C32(0xa5db8000), SPH_C32(0x6b200000),
+	  SPH_C32(0xdb7f0000), SPH_C32(0x86c44896), SPH_C32(0xbc29603c),
+	  SPH_C32(0x52785017), SPH_C32(0x4fea22c6), SPH_C32(0x24a200ad),
+	  SPH_C32(0xed0a8000), SPH_C32(0x1f3a0000), SPH_C32(0x2a7f0000),
+	  SPH_C32(0xd28a4f9b), SPH_C32(0x25aedfdb), SPH_C32(0x0c488014),
+	  SPH_C32(0xa00e2e1c) },
+	{ SPH_C32(0x878c005d), SPH_C32(0x91984000), SPH_C32(0x4f270000),
+	  SPH_C32(0x54420000), SPH_C32(0xa7f3736d), SPH_C32(0xb691b592),
+	  SPH_C32(0x9fbddb0e), SPH_C32(0x987f98f7), SPH_C32(0x82dd00ac),
+	  SPH_C32(0x9c3d0000), SPH_C32(0x06c60000), SPH_C32(0xbca40000),
+	  SPH_C32(0xe8012266), SPH_C32(0xce647128), SPH_C32(0x2025c79b),
+	  SPH_C32(0x0c804294) },
+	{ SPH_C32(0x832800a0), SPH_C32(0x67420000), SPH_C32(0xe1170000),
+	  SPH_C32(0x370b0000), SPH_C32(0xcba30034), SPH_C32(0x3c34923c),
+	  SPH_C32(0x9767bdcc), SPH_C32(0x450360bf), SPH_C32(0x774400f0),
+	  SPH_C32(0xf15a0000), SPH_C32(0xf5b20000), SPH_C32(0x34140000),
+	  SPH_C32(0x89377e8c), SPH_C32(0x5a8bec25), SPH_C32(0x0bc3cd1e),
+	  SPH_C32(0xcf3775cb) },
+	{ SPH_C32(0x75a800a5), SPH_C32(0x5301c000), SPH_C32(0xc5100000),
+	  SPH_C32(0xb8360000), SPH_C32(0xea943bcf), SPH_C32(0x368c4792),
+	  SPH_C32(0x5aa236d5), SPH_C32(0x9296da8e), SPH_C32(0xd13b00f1),
+	  SPH_C32(0x806d8000), SPH_C32(0xec4e0000), SPH_C32(0xa2cf0000),
+	  SPH_C32(0xb3bc1371), SPH_C32(0xb14142d6), SPH_C32(0x27ae8a91),
+	  SPH_C32(0x63b91943) },
+	{ SPH_C32(0x255700a1), SPH_C32(0x16758000), SPH_C32(0xf8eb0000),
+	  SPH_C32(0xa1d00000), SPH_C32(0xf1286dc9), SPH_C32(0xd7fe3ccf),
+	  SPH_C32(0xbb0afa43), SPH_C32(0xe98d0c37), SPH_C32(0x27bb00f4),
+	  SPH_C32(0xb42e4000), SPH_C32(0xc8490000), SPH_C32(0x2df20000),
+	  SPH_C32(0x928b288a), SPH_C32(0xbbf99778), SPH_C32(0xea6b0188),
+	  SPH_C32(0xb42ca372) },
+	{ SPH_C32(0xd3d700a4), SPH_C32(0x22364000), SPH_C32(0xdcec0000),
+	  SPH_C32(0x2eed0000), SPH_C32(0xd01f5632), SPH_C32(0xdd46e961),
+	  SPH_C32(0x76cf715a), SPH_C32(0x3e18b606), SPH_C32(0x81c400f5),
+	  SPH_C32(0xc519c000), SPH_C32(0xd1b50000), SPH_C32(0xbb290000),
+	  SPH_C32(0xa8004577), SPH_C32(0x5033398b), SPH_C32(0xc6064607),
+	  SPH_C32(0x18a2cffa) },
+	{ SPH_C32(0x745d00a9), SPH_C32(0xa87ec000), SPH_C32(0x22c10000),
+	  SPH_C32(0x33990000), SPH_C32(0xc936199d), SPH_C32(0xc4dca486),
+	  SPH_C32(0xede04c82), SPH_C32(0xdb15f8a5), SPH_C32(0xa32e00f0),
+	  SPH_C32(0x7c92c000), SPH_C32(0x501d0000), SPH_C32(0x7e3d0000),
+	  SPH_C32(0x75793cf6), SPH_C32(0x933f6a49), SPH_C32(0x93f55b1a),
+	  SPH_C32(0x3871b6eb) },
+	{ SPH_C32(0x82dd00ac), SPH_C32(0x9c3d0000), SPH_C32(0x06c60000),
+	  SPH_C32(0xbca40000), SPH_C32(0xe8012266), SPH_C32(0xce647128),
+	  SPH_C32(0x2025c79b), SPH_C32(0x0c804294), SPH_C32(0x055100f1),
+	  SPH_C32(0x0da54000), SPH_C32(0x49e10000), SPH_C32(0xe8e60000),
+	  SPH_C32(0x4ff2510b), SPH_C32(0x78f5c4ba), SPH_C32(0xbf981c95),
+	  SPH_C32(0x94ffda63) },
+	{ SPH_C32(0xd22200a8), SPH_C32(0xd9494000), SPH_C32(0x3b3d0000),
+	  SPH_C32(0xa5420000), SPH_C32(0xf3bd7460), SPH_C32(0x2f160a75),
+	  SPH_C32(0xc18d0b0d), SPH_C32(0x779b942d), SPH_C32(0xf3d100f4),
+	  SPH_C32(0x39e68000), SPH_C32(0x6de60000), SPH_C32(0x67db0000),
+	  SPH_C32(0x6ec56af0), SPH_C32(0x724d1114), SPH_C32(0x725d978c),
+	  SPH_C32(0x436a6052) },
+	{ SPH_C32(0x24a200ad), SPH_C32(0xed0a8000), SPH_C32(0x1f3a0000),
+	  SPH_C32(0x2a7f0000), SPH_C32(0xd28a4f9b), SPH_C32(0x25aedfdb),
+	  SPH_C32(0x0c488014), SPH_C32(0xa00e2e1c), SPH_C32(0x55ae00f5),
+	  SPH_C32(0x48d10000), SPH_C32(0x741a0000), SPH_C32(0xf1000000),
+	  SPH_C32(0x544e070d), SPH_C32(0x9987bfe7), SPH_C32(0x5e30d003),
+	  SPH_C32(0xefe40cda) },
+	{ SPH_C32(0x574200a0), SPH_C32(0xea8ac000), SPH_C32(0x44b80000),
+	  SPH_C32(0x7d220000), SPH_C32(0x37ed424e), SPH_C32(0xf5801450),
+	  SPH_C32(0x0f512bc8), SPH_C32(0xb245a39f), SPH_C32(0x545b00f9),
+	  SPH_C32(0xb3ae0000), SPH_C32(0x93cb0000), SPH_C32(0x7aaf0000),
+	  SPH_C32(0x77ec255f), SPH_C32(0x6bd75cf3), SPH_C32(0xe972aa54),
+	  SPH_C32(0xa6672ef1) },
+	{ SPH_C32(0xa1c200a5), SPH_C32(0xdec90000), SPH_C32(0x60bf0000),
+	  SPH_C32(0xf21f0000), SPH_C32(0x16da79b5), SPH_C32(0xff38c1fe),
+	  SPH_C32(0xc294a0d1), SPH_C32(0x65d019ae), SPH_C32(0xf22400f8),
+	  SPH_C32(0xc2998000), SPH_C32(0x8a370000), SPH_C32(0xec740000),
+	  SPH_C32(0x4d6748a2), SPH_C32(0x801df200), SPH_C32(0xc51feddb),
+	  SPH_C32(0x0ae94279) },
+	{ SPH_C32(0xf13d00a1), SPH_C32(0x9bbd4000), SPH_C32(0x5d440000),
+	  SPH_C32(0xebf90000), SPH_C32(0x0d662fb3), SPH_C32(0x1e4abaa3),
+	  SPH_C32(0x233c6c47), SPH_C32(0x1ecbcf17), SPH_C32(0x04a400fd),
+	  SPH_C32(0xf6da4000), SPH_C32(0xae300000), SPH_C32(0x63490000),
+	  SPH_C32(0x6c507359), SPH_C32(0x8aa527ae), SPH_C32(0x08da66c2),
+	  SPH_C32(0xdd7cf848) },
+	{ SPH_C32(0x07bd00a4), SPH_C32(0xaffe8000), SPH_C32(0x79430000),
+	  SPH_C32(0x64c40000), SPH_C32(0x2c511448), SPH_C32(0x14f26f0d),
+	  SPH_C32(0xeef9e75e), SPH_C32(0xc95e7526), SPH_C32(0xa2db00fc),
+	  SPH_C32(0x87edc000), SPH_C32(0xb7cc0000), SPH_C32(0xf5920000),
+	  SPH_C32(0x56db1ea4), SPH_C32(0x616f895d), SPH_C32(0x24b7214d),
+	  SPH_C32(0x71f294c0) },
+	{ SPH_C32(0xa03700a9), SPH_C32(0x25b60000), SPH_C32(0x876e0000),
+	  SPH_C32(0x79b00000), SPH_C32(0x35785be7), SPH_C32(0x0d6822ea),
+	  SPH_C32(0x75d6da86), SPH_C32(0x2c533b85), SPH_C32(0x803100f9),
+	  SPH_C32(0x3e66c000), SPH_C32(0x36640000), SPH_C32(0x30860000),
+	  SPH_C32(0x8ba26725), SPH_C32(0xa263da9f), SPH_C32(0x71443c50),
+	  SPH_C32(0x5121edd1) },
+	{ SPH_C32(0x56b700ac), SPH_C32(0x11f5c000), SPH_C32(0xa3690000),
+	  SPH_C32(0xf68d0000), SPH_C32(0x144f601c), SPH_C32(0x07d0f744),
+	  SPH_C32(0xb813519f), SPH_C32(0xfbc681b4), SPH_C32(0x264e00f8),
+	  SPH_C32(0x4f514000), SPH_C32(0x2f980000), SPH_C32(0xa65d0000),
+	  SPH_C32(0xb1290ad8), SPH_C32(0x49a9746c), SPH_C32(0x5d297bdf),
+	  SPH_C32(0xfdaf8159) },
+	{ SPH_C32(0x064800a8), SPH_C32(0x54818000), SPH_C32(0x9e920000),
+	  SPH_C32(0xef6b0000), SPH_C32(0x0ff3361a), SPH_C32(0xe6a28c19),
+	  SPH_C32(0x59bb9d09), SPH_C32(0x80dd570d), SPH_C32(0xd0ce00fd),
+	  SPH_C32(0x7b128000), SPH_C32(0x0b9f0000), SPH_C32(0x29600000),
+	  SPH_C32(0x901e3123), SPH_C32(0x4311a1c2), SPH_C32(0x90ecf0c6),
+	  SPH_C32(0x2a3a3b68) },
+	{ SPH_C32(0xf0c800ad), SPH_C32(0x60c24000), SPH_C32(0xba950000),
+	  SPH_C32(0x60560000), SPH_C32(0x2ec40de1), SPH_C32(0xec1a59b7),
+	  SPH_C32(0x947e1610), SPH_C32(0x5748ed3c), SPH_C32(0x76b100fc),
+	  SPH_C32(0x0a250000), SPH_C32(0x12630000), SPH_C32(0xbfbb0000),
+	  SPH_C32(0xaa955cde), SPH_C32(0xa8db0f31), SPH_C32(0xbc81b749),
+	  SPH_C32(0x86b457e0) },
+	{ SPH_C32(0xe8870170), SPH_C32(0x9d720000), SPH_C32(0x12db0000),
+	  SPH_C32(0xd4220000), SPH_C32(0xf2886b27), SPH_C32(0xa921e543),
+	  SPH_C32(0x4ef8b518), SPH_C32(0x618813b1), SPH_C32(0xb4370060),
+	  SPH_C32(0x0c4c0000), SPH_C32(0x56c20000), SPH_C32(0x5cae0000),
+	  SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825), SPH_C32(0x1b365f3d),
+	  SPH_C32(0xf3d45758) },
+	{ SPH_C32(0x1e070175), SPH_C32(0xa931c000), SPH_C32(0x36dc0000),
+	  SPH_C32(0x5b1f0000), SPH_C32(0xd3bf50dc), SPH_C32(0xa39930ed),
+	  SPH_C32(0x833d3e01), SPH_C32(0xb61da980), SPH_C32(0x12480061),
+	  SPH_C32(0x7d7b8000), SPH_C32(0x4f3e0000), SPH_C32(0xca750000),
+	  SPH_C32(0xaedf72c2), SPH_C32(0xd0f456d6), SPH_C32(0x375b18b2),
+	  SPH_C32(0x5f5a3bd0) },
+	{ SPH_C32(0x4ef80171), SPH_C32(0xec458000), SPH_C32(0x0b270000),
+	  SPH_C32(0x42f90000), SPH_C32(0xc80306da), SPH_C32(0x42eb4bb0),
+	  SPH_C32(0x6295f297), SPH_C32(0xcd067f39), SPH_C32(0xe4c80064),
+	  SPH_C32(0x49384000), SPH_C32(0x6b390000), SPH_C32(0x45480000),
+	  SPH_C32(0x8fe84939), SPH_C32(0xda4c8378), SPH_C32(0xfa9e93ab),
+	  SPH_C32(0x88cf81e1) },
+	{ SPH_C32(0xb8780174), SPH_C32(0xd8064000), SPH_C32(0x2f200000),
+	  SPH_C32(0xcdc40000), SPH_C32(0xe9343d21), SPH_C32(0x48539e1e),
+	  SPH_C32(0xaf50798e), SPH_C32(0x1a93c508), SPH_C32(0x42b70065),
+	  SPH_C32(0x380fc000), SPH_C32(0x72c50000), SPH_C32(0xd3930000),
+	  SPH_C32(0xb56324c4), SPH_C32(0x31862d8b), SPH_C32(0xd6f3d424),
+	  SPH_C32(0x2441ed69) },
+	{ SPH_C32(0x1ff20179), SPH_C32(0x524ec000), SPH_C32(0xd10d0000),
+	  SPH_C32(0xd0b00000), SPH_C32(0xf01d728e), SPH_C32(0x51c9d3f9),
+	  SPH_C32(0x347f4456), SPH_C32(0xff9e8bab), SPH_C32(0x605d0060),
+	  SPH_C32(0x8184c000), SPH_C32(0xf36d0000), SPH_C32(0x16870000),
+	  SPH_C32(0x681a5d45), SPH_C32(0xf28a7e49), SPH_C32(0x8300c939),
+	  SPH_C32(0x04929478) },
+	{ SPH_C32(0xe972017c), SPH_C32(0x660d0000), SPH_C32(0xf50a0000),
+	  SPH_C32(0x5f8d0000), SPH_C32(0xd12a4975), SPH_C32(0x5b710657),
+	  SPH_C32(0xf9bacf4f), SPH_C32(0x280b319a), SPH_C32(0xc6220061),
+	  SPH_C32(0xf0b34000), SPH_C32(0xea910000), SPH_C32(0x805c0000),
+	  SPH_C32(0x529130b8), SPH_C32(0x1940d0ba), SPH_C32(0xaf6d8eb6),
+	  SPH_C32(0xa81cf8f0) },
+	{ SPH_C32(0xb98d0178), SPH_C32(0x23794000), SPH_C32(0xc8f10000),
+	  SPH_C32(0x466b0000), SPH_C32(0xca961f73), SPH_C32(0xba037d0a),
+	  SPH_C32(0x181203d9), SPH_C32(0x5310e723), SPH_C32(0x30a20064),
+	  SPH_C32(0xc4f08000), SPH_C32(0xce960000), SPH_C32(0x0f610000),
+	  SPH_C32(0x73a60b43), SPH_C32(0x13f80514), SPH_C32(0x62a805af),
+	  SPH_C32(0x7f8942c1) },
+	{ SPH_C32(0x4f0d017d), SPH_C32(0x173a8000), SPH_C32(0xecf60000),
+	  SPH_C32(0xc9560000), SPH_C32(0xeba12488), SPH_C32(0xb0bba8a4),
+	  SPH_C32(0xd5d788c0), SPH_C32(0x84855d12), SPH_C32(0x96dd0065),
+	  SPH_C32(0xb5c70000), SPH_C32(0xd76a0000), SPH_C32(0x99ba0000),
+	  SPH_C32(0x492d66be), SPH_C32(0xf832abe7), SPH_C32(0x4ec54220),
+	  SPH_C32(0xd3072e49) },
+	{ SPH_C32(0x3ced0170), SPH_C32(0x10bac000), SPH_C32(0xb7740000),
+	  SPH_C32(0x9e0b0000), SPH_C32(0x0ec6295d), SPH_C32(0x6095632f),
+	  SPH_C32(0xd6ce231c), SPH_C32(0x96ced091), SPH_C32(0x97280069),
+	  SPH_C32(0x4eb80000), SPH_C32(0x30bb0000), SPH_C32(0x12150000),
+	  SPH_C32(0x6a8f44ec), SPH_C32(0x0a6248f3), SPH_C32(0xf9873877),
+	  SPH_C32(0x9a840c62) },
+	{ SPH_C32(0xca6d0175), SPH_C32(0x24f90000), SPH_C32(0x93730000),
+	  SPH_C32(0x11360000), SPH_C32(0x2ff112a6), SPH_C32(0x6a2db681),
+	  SPH_C32(0x1b0ba805), SPH_C32(0x415b6aa0), SPH_C32(0x31570068),
+	  SPH_C32(0x3f8f8000), SPH_C32(0x29470000), SPH_C32(0x84ce0000),
+	  SPH_C32(0x50042911), SPH_C32(0xe1a8e600), SPH_C32(0xd5ea7ff8),
+	  SPH_C32(0x360a60ea) },
+	{ SPH_C32(0x9a920171), SPH_C32(0x618d4000), SPH_C32(0xae880000),
+	  SPH_C32(0x08d00000), SPH_C32(0x344d44a0), SPH_C32(0x8b5fcddc),
+	  SPH_C32(0xfaa36493), SPH_C32(0x3a40bc19), SPH_C32(0xc7d7006d),
+	  SPH_C32(0x0bcc4000), SPH_C32(0x0d400000), SPH_C32(0x0bf30000),
+	  SPH_C32(0x713312ea), SPH_C32(0xeb1033ae), SPH_C32(0x182ff4e1),
+	  SPH_C32(0xe19fdadb) },
+	{ SPH_C32(0x6c120174), SPH_C32(0x55ce8000), SPH_C32(0x8a8f0000),
+	  SPH_C32(0x87ed0000), SPH_C32(0x157a7f5b), SPH_C32(0x81e71872),
+	  SPH_C32(0x3766ef8a), SPH_C32(0xedd50628), SPH_C32(0x61a8006c),
+	  SPH_C32(0x7afbc000), SPH_C32(0x14bc0000), SPH_C32(0x9d280000),
+	  SPH_C32(0x4bb87f17), SPH_C32(0x00da9d5d), SPH_C32(0x3442b36e),
+	  SPH_C32(0x4d11b653) },
+	{ SPH_C32(0xcb980179), SPH_C32(0xdf860000), SPH_C32(0x74a20000),
+	  SPH_C32(0x9a990000), SPH_C32(0x0c5330f4), SPH_C32(0x987d5595),
+	  SPH_C32(0xac49d252), SPH_C32(0x08d8488b), SPH_C32(0x43420069),
+	  SPH_C32(0xc370c000), SPH_C32(0x95140000), SPH_C32(0x583c0000),
+	  SPH_C32(0x96c10696), SPH_C32(0xc3d6ce9f), SPH_C32(0x61b1ae73),
+	  SPH_C32(0x6dc2cf42) },
+	{ SPH_C32(0x3d18017c), SPH_C32(0xebc5c000), SPH_C32(0x50a50000),
+	  SPH_C32(0x15a40000), SPH_C32(0x2d640b0f), SPH_C32(0x92c5803b),
+	  SPH_C32(0x618c594b), SPH_C32(0xdf4df2ba), SPH_C32(0xe53d0068),
+	  SPH_C32(0xb2474000), SPH_C32(0x8ce80000), SPH_C32(0xcee70000),
+	  SPH_C32(0xac4a6b6b), SPH_C32(0x281c606c), SPH_C32(0x4ddce9fc),
+	  SPH_C32(0xc14ca3ca) },
+	{ SPH_C32(0x6de70178), SPH_C32(0xaeb18000), SPH_C32(0x6d5e0000),
+	  SPH_C32(0x0c420000), SPH_C32(0x36d85d09), SPH_C32(0x73b7fb66),
+	  SPH_C32(0x802495dd), SPH_C32(0xa4562403), SPH_C32(0x13bd006d),
+	  SPH_C32(0x86048000), SPH_C32(0xa8ef0000), SPH_C32(0x41da0000),
+	  SPH_C32(0x8d7d5090), SPH_C32(0x22a4b5c2), SPH_C32(0x801962e5),
+	  SPH_C32(0x16d919fb) },
+	{ SPH_C32(0x9b67017d), SPH_C32(0x9af24000), SPH_C32(0x49590000),
+	  SPH_C32(0x837f0000), SPH_C32(0x17ef66f2), SPH_C32(0x790f2ec8),
+	  SPH_C32(0x4de11ec4), SPH_C32(0x73c39e32), SPH_C32(0xb5c2006c),
+	  SPH_C32(0xf7330000), SPH_C32(0xb1130000), SPH_C32(0xd7010000),
+	  SPH_C32(0xb7f63d6d), SPH_C32(0xc96e1b31), SPH_C32(0xac74256a),
+	  SPH_C32(0xba577573) },
+	{ SPH_C32(0x9fc30180), SPH_C32(0x6c280000), SPH_C32(0xe7690000),
+	  SPH_C32(0xe0360000), SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966),
+	  SPH_C32(0x453b7806), SPH_C32(0xaebf667a), SPH_C32(0x405b0030),
+	  SPH_C32(0x9a540000), SPH_C32(0x42670000), SPH_C32(0x5fb10000),
+	  SPH_C32(0xd6c06187), SPH_C32(0x5d81863c), SPH_C32(0x87922fef),
+	  SPH_C32(0x79e0422c) },
+	{ SPH_C32(0x69430185), SPH_C32(0x586bc000), SPH_C32(0xc36e0000),
+	  SPH_C32(0x6f0b0000), SPH_C32(0x5a882e50), SPH_C32(0xf912dcc8),
+	  SPH_C32(0x88fef31f), SPH_C32(0x792adc4b), SPH_C32(0xe6240031),
+	  SPH_C32(0xeb638000), SPH_C32(0x5b9b0000), SPH_C32(0xc96a0000),
+	  SPH_C32(0xec4b0c7a), SPH_C32(0xb64b28cf), SPH_C32(0xabff6860),
+	  SPH_C32(0xd56e2ea4) },
+	{ SPH_C32(0x39bc0181), SPH_C32(0x1d1f8000), SPH_C32(0xfe950000),
+	  SPH_C32(0x76ed0000), SPH_C32(0x41347856), SPH_C32(0x1860a795),
+	  SPH_C32(0x69563f89), SPH_C32(0x02310af2), SPH_C32(0x10a40034),
+	  SPH_C32(0xdf204000), SPH_C32(0x7f9c0000), SPH_C32(0x46570000),
+	  SPH_C32(0xcd7c3781), SPH_C32(0xbcf3fd61), SPH_C32(0x663ae379),
+	  SPH_C32(0x02fb9495) },
+	{ SPH_C32(0xcf3c0184), SPH_C32(0x295c4000), SPH_C32(0xda920000),
+	  SPH_C32(0xf9d00000), SPH_C32(0x600343ad), SPH_C32(0x12d8723b),
+	  SPH_C32(0xa493b490), SPH_C32(0xd5a4b0c3), SPH_C32(0xb6db0035),
+	  SPH_C32(0xae17c000), SPH_C32(0x66600000), SPH_C32(0xd08c0000),
+	  SPH_C32(0xf7f75a7c), SPH_C32(0x57395392), SPH_C32(0x4a57a4f6),
+	  SPH_C32(0xae75f81d) },
+	{ SPH_C32(0x68b60189), SPH_C32(0xa314c000), SPH_C32(0x24bf0000),
+	  SPH_C32(0xe4a40000), SPH_C32(0x792a0c02), SPH_C32(0x0b423fdc),
+	  SPH_C32(0x3fbc8948), SPH_C32(0x30a9fe60), SPH_C32(0x94310030),
+	  SPH_C32(0x179cc000), SPH_C32(0xe7c80000), SPH_C32(0x15980000),
+	  SPH_C32(0x2a8e23fd), SPH_C32(0x94350050), SPH_C32(0x1fa4b9eb),
+	  SPH_C32(0x8ea6810c) },
+	{ SPH_C32(0x9e36018c), SPH_C32(0x97570000), SPH_C32(0x00b80000),
+	  SPH_C32(0x6b990000), SPH_C32(0x581d37f9), SPH_C32(0x01faea72),
+	  SPH_C32(0xf2790251), SPH_C32(0xe73c4451), SPH_C32(0x324e0031),
+	  SPH_C32(0x66ab4000), SPH_C32(0xfe340000), SPH_C32(0x83430000),
+	  SPH_C32(0x10054e00), SPH_C32(0x7fffaea3), SPH_C32(0x33c9fe64),
+	  SPH_C32(0x2228ed84) },
+	{ SPH_C32(0xcec90188), SPH_C32(0xd2234000), SPH_C32(0x3d430000),
+	  SPH_C32(0x727f0000), SPH_C32(0x43a161ff), SPH_C32(0xe088912f),
+	  SPH_C32(0x13d1cec7), SPH_C32(0x9c2792e8), SPH_C32(0xc4ce0034),
+	  SPH_C32(0x52e88000), SPH_C32(0xda330000), SPH_C32(0x0c7e0000),
+	  SPH_C32(0x313275fb), SPH_C32(0x75477b0d), SPH_C32(0xfe0c757d),
+	  SPH_C32(0xf5bd57b5) },
+	{ SPH_C32(0x3849018d), SPH_C32(0xe6608000), SPH_C32(0x19440000),
+	  SPH_C32(0xfd420000), SPH_C32(0x62965a04), SPH_C32(0xea304481),
+	  SPH_C32(0xde1445de), SPH_C32(0x4bb228d9), SPH_C32(0x62b10035),
+	  SPH_C32(0x23df0000), SPH_C32(0xc3cf0000), SPH_C32(0x9aa50000),
+	  SPH_C32(0x0bb91806), SPH_C32(0x9e8dd5fe), SPH_C32(0xd26132f2),
+	  SPH_C32(0x59333b3d) },
+	{ SPH_C32(0x4ba90180), SPH_C32(0xe1e0c000), SPH_C32(0x42c60000),
+	  SPH_C32(0xaa1f0000), SPH_C32(0x87f157d1), SPH_C32(0x3a1e8f0a),
+	  SPH_C32(0xdd0dee02), SPH_C32(0x59f9a55a), SPH_C32(0x63440039),
+	  SPH_C32(0xd8a00000), SPH_C32(0x241e0000), SPH_C32(0x110a0000),
+	  SPH_C32(0x281b3a54), SPH_C32(0x6cdd36ea), SPH_C32(0x652348a5),
+	  SPH_C32(0x10b01916) },
+	{ SPH_C32(0xbd290185), SPH_C32(0xd5a30000), SPH_C32(0x66c10000),
+	  SPH_C32(0x25220000), SPH_C32(0xa6c66c2a), SPH_C32(0x30a65aa4),
+	  SPH_C32(0x10c8651b), SPH_C32(0x8e6c1f6b), SPH_C32(0xc53b0038),
+	  SPH_C32(0xa9978000), SPH_C32(0x3de20000), SPH_C32(0x87d10000),
+	  SPH_C32(0x129057a9), SPH_C32(0x87179819), SPH_C32(0x494e0f2a),
+	  SPH_C32(0xbc3e759e) },
+	{ SPH_C32(0xedd60181), SPH_C32(0x90d74000), SPH_C32(0x5b3a0000),
+	  SPH_C32(0x3cc40000), SPH_C32(0xbd7a3a2c), SPH_C32(0xd1d421f9),
+	  SPH_C32(0xf160a98d), SPH_C32(0xf577c9d2), SPH_C32(0x33bb003d),
+	  SPH_C32(0x9dd44000), SPH_C32(0x19e50000), SPH_C32(0x08ec0000),
+	  SPH_C32(0x33a76c52), SPH_C32(0x8daf4db7), SPH_C32(0x848b8433),
+	  SPH_C32(0x6babcfaf) },
+	{ SPH_C32(0x1b560184), SPH_C32(0xa4948000), SPH_C32(0x7f3d0000),
+	  SPH_C32(0xb3f90000), SPH_C32(0x9c4d01d7), SPH_C32(0xdb6cf457),
+	  SPH_C32(0x3ca52294), SPH_C32(0x22e273e3), SPH_C32(0x95c4003c),
+	  SPH_C32(0xece3c000), SPH_C32(0x00190000), SPH_C32(0x9e370000),
+	  SPH_C32(0x092c01af), SPH_C32(0x6665e344), SPH_C32(0xa8e6c3bc),
+	  SPH_C32(0xc725a327) },
+	{ SPH_C32(0xbcdc0189), SPH_C32(0x2edc0000), SPH_C32(0x81100000),
+	  SPH_C32(0xae8d0000), SPH_C32(0x85644e78), SPH_C32(0xc2f6b9b0),
+	  SPH_C32(0xa78a1f4c), SPH_C32(0xc7ef3d40), SPH_C32(0xb72e0039),
+	  SPH_C32(0x5568c000), SPH_C32(0x81b10000), SPH_C32(0x5b230000),
+	  SPH_C32(0xd455782e), SPH_C32(0xa569b086), SPH_C32(0xfd15dea1),
+	  SPH_C32(0xe7f6da36) },
+	{ SPH_C32(0x4a5c018c), SPH_C32(0x1a9fc000), SPH_C32(0xa5170000),
+	  SPH_C32(0x21b00000), SPH_C32(0xa4537583), SPH_C32(0xc84e6c1e),
+	  SPH_C32(0x6a4f9455), SPH_C32(0x107a8771), SPH_C32(0x11510038),
+	  SPH_C32(0x245f4000), SPH_C32(0x984d0000), SPH_C32(0xcdf80000),
+	  SPH_C32(0xeede15d3), SPH_C32(0x4ea31e75), SPH_C32(0xd178992e),
+	  SPH_C32(0x4b78b6be) },
+	{ SPH_C32(0x1aa30188), SPH_C32(0x5feb8000), SPH_C32(0x98ec0000),
+	  SPH_C32(0x38560000), SPH_C32(0xbfef2385), SPH_C32(0x293c1743),
+	  SPH_C32(0x8be758c3), SPH_C32(0x6b6151c8), SPH_C32(0xe7d1003d),
+	  SPH_C32(0x101c8000), SPH_C32(0xbc4a0000), SPH_C32(0x42c50000),
+	  SPH_C32(0xcfe92e28), SPH_C32(0x441bcbdb), SPH_C32(0x1cbd1237),
+	  SPH_C32(0x9ced0c8f) },
+	{ SPH_C32(0xec23018d), SPH_C32(0x6ba84000), SPH_C32(0xbceb0000),
+	  SPH_C32(0xb76b0000), SPH_C32(0x9ed8187e), SPH_C32(0x2384c2ed),
+	  SPH_C32(0x4622d3da), SPH_C32(0xbcf4ebf9), SPH_C32(0x41ae003c),
+	  SPH_C32(0x612b0000), SPH_C32(0xa5b60000), SPH_C32(0xd41e0000),
+	  SPH_C32(0xf56243d5), SPH_C32(0xafd16528), SPH_C32(0x30d055b8),
+	  SPH_C32(0x30636007) },
+	{ SPH_C32(0x1ceb0120), SPH_C32(0x0b6a0000), SPH_C32(0x067e0000),
+	  SPH_C32(0xd73d0000), SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a),
+	  SPH_C32(0xd25cc5ca), SPH_C32(0xebbc06c5), SPH_C32(0x371f00c0),
+	  SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000), SPH_C32(0x6ba50000),
+	  SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19), SPH_C32(0x8c51e2f1),
+	  SPH_C32(0xb6d737e7) },
+	{ SPH_C32(0xea6b0125), SPH_C32(0x3f29c000), SPH_C32(0x22790000),
+	  SPH_C32(0x58000000), SPH_C32(0x912b2e64), SPH_C32(0xc5264ef4),
+	  SPH_C32(0x1f994ed3), SPH_C32(0x3c29bcf4), SPH_C32(0x916000c1),
+	  SPH_C32(0x1a398000), SPH_C32(0xae290000), SPH_C32(0xfd7e0000),
+	  SPH_C32(0x657c72f6), SPH_C32(0xecc0c4ea), SPH_C32(0xa03ca57e),
+	  SPH_C32(0x1a595b6f) },
+	{ SPH_C32(0xba940121), SPH_C32(0x7a5d8000), SPH_C32(0x1f820000),
+	  SPH_C32(0x41e60000), SPH_C32(0x8a977862), SPH_C32(0x245435a9),
+	  SPH_C32(0xfe318245), SPH_C32(0x47326a4d), SPH_C32(0x67e000c4),
+	  SPH_C32(0x2e7a4000), SPH_C32(0x8a2e0000), SPH_C32(0x72430000),
+	  SPH_C32(0x444b490d), SPH_C32(0xe6781144), SPH_C32(0x6df92e67),
+	  SPH_C32(0xcdcce15e) },
+	{ SPH_C32(0x4c140124), SPH_C32(0x4e1e4000), SPH_C32(0x3b850000),
+	  SPH_C32(0xcedb0000), SPH_C32(0xaba04399), SPH_C32(0x2eece007),
+	  SPH_C32(0x33f4095c), SPH_C32(0x90a7d07c), SPH_C32(0xc19f00c5),
+	  SPH_C32(0x5f4dc000), SPH_C32(0x93d20000), SPH_C32(0xe4980000),
+	  SPH_C32(0x7ec024f0), SPH_C32(0x0db2bfb7), SPH_C32(0x419469e8),
+	  SPH_C32(0x61428dd6) },
+	{ SPH_C32(0xeb9e0129), SPH_C32(0xc456c000), SPH_C32(0xc5a80000),
+	  SPH_C32(0xd3af0000), SPH_C32(0xb2890c36), SPH_C32(0x3776ade0),
+	  SPH_C32(0xa8db3484), SPH_C32(0x75aa9edf), SPH_C32(0xe37500c0),
+	  SPH_C32(0xe6c6c000), SPH_C32(0x127a0000), SPH_C32(0x218c0000),
+	  SPH_C32(0xa3b95d71), SPH_C32(0xcebeec75), SPH_C32(0x146774f5),
+	  SPH_C32(0x4191f4c7) },
+	{ SPH_C32(0x1d1e012c), SPH_C32(0xf0150000), SPH_C32(0xe1af0000),
+	  SPH_C32(0x5c920000), SPH_C32(0x93be37cd), SPH_C32(0x3dce784e),
+	  SPH_C32(0x651ebf9d), SPH_C32(0xa23f24ee), SPH_C32(0x450a00c1),
+	  SPH_C32(0x97f14000), SPH_C32(0x0b860000), SPH_C32(0xb7570000),
+	  SPH_C32(0x9932308c), SPH_C32(0x25744286), SPH_C32(0x380a337a),
+	  SPH_C32(0xed1f984f) },
+	{ SPH_C32(0x4de10128), SPH_C32(0xb5614000), SPH_C32(0xdc540000),
+	  SPH_C32(0x45740000), SPH_C32(0x880261cb), SPH_C32(0xdcbc0313),
+	  SPH_C32(0x84b6730b), SPH_C32(0xd924f257), SPH_C32(0xb38a00c4),
+	  SPH_C32(0xa3b28000), SPH_C32(0x2f810000), SPH_C32(0x386a0000),
+	  SPH_C32(0xb8050b77), SPH_C32(0x2fcc9728), SPH_C32(0xf5cfb863),
+	  SPH_C32(0x3a8a227e) },
+	{ SPH_C32(0xbb61012d), SPH_C32(0x81228000), SPH_C32(0xf8530000),
+	  SPH_C32(0xca490000), SPH_C32(0xa9355a30), SPH_C32(0xd604d6bd),
+	  SPH_C32(0x4973f812), SPH_C32(0x0eb14866), SPH_C32(0x15f500c5),
+	  SPH_C32(0xd2850000), SPH_C32(0x367d0000), SPH_C32(0xaeb10000),
+	  SPH_C32(0x828e668a), SPH_C32(0xc40639db), SPH_C32(0xd9a2ffec),
+	  SPH_C32(0x96044ef6) },
+	{ SPH_C32(0xc8810120), SPH_C32(0x86a2c000), SPH_C32(0xa3d10000),
+	  SPH_C32(0x9d140000), SPH_C32(0x4c5257e5), SPH_C32(0x062a1d36),
+	  SPH_C32(0x4a6a53ce), SPH_C32(0x1cfac5e5), SPH_C32(0x140000c9),
+	  SPH_C32(0x29fa0000), SPH_C32(0xd1ac0000), SPH_C32(0x251e0000),
+	  SPH_C32(0xa12c44d8), SPH_C32(0x3656dacf), SPH_C32(0x6ee085bb),
+	  SPH_C32(0xdf876cdd) },
+	{ SPH_C32(0x3e010125), SPH_C32(0xb2e10000), SPH_C32(0x87d60000),
+	  SPH_C32(0x12290000), SPH_C32(0x6d656c1e), SPH_C32(0x0c92c898),
+	  SPH_C32(0x87afd8d7), SPH_C32(0xcb6f7fd4), SPH_C32(0xb27f00c8),
+	  SPH_C32(0x58cd8000), SPH_C32(0xc8500000), SPH_C32(0xb3c50000),
+	  SPH_C32(0x9ba72925), SPH_C32(0xdd9c743c), SPH_C32(0x428dc234),
+	  SPH_C32(0x73090055) },
+	{ SPH_C32(0x6efe0121), SPH_C32(0xf7954000), SPH_C32(0xba2d0000),
+	  SPH_C32(0x0bcf0000), SPH_C32(0x76d93a18), SPH_C32(0xede0b3c5),
+	  SPH_C32(0x66071441), SPH_C32(0xb074a96d), SPH_C32(0x44ff00cd),
+	  SPH_C32(0x6c8e4000), SPH_C32(0xec570000), SPH_C32(0x3cf80000),
+	  SPH_C32(0xba9012de), SPH_C32(0xd724a192), SPH_C32(0x8f48492d),
+	  SPH_C32(0xa49cba64) },
+	{ SPH_C32(0x987e0124), SPH_C32(0xc3d68000), SPH_C32(0x9e2a0000),
+	  SPH_C32(0x84f20000), SPH_C32(0x57ee01e3), SPH_C32(0xe758666b),
+	  SPH_C32(0xabc29f58), SPH_C32(0x67e1135c), SPH_C32(0xe28000cc),
+	  SPH_C32(0x1db9c000), SPH_C32(0xf5ab0000), SPH_C32(0xaa230000),
+	  SPH_C32(0x801b7f23), SPH_C32(0x3cee0f61), SPH_C32(0xa3250ea2),
+	  SPH_C32(0x0812d6ec) },
+	{ SPH_C32(0x3ff40129), SPH_C32(0x499e0000), SPH_C32(0x60070000),
+	  SPH_C32(0x99860000), SPH_C32(0x4ec74e4c), SPH_C32(0xfec22b8c),
+	  SPH_C32(0x30eda280), SPH_C32(0x82ec5dff), SPH_C32(0xc06a00c9),
+	  SPH_C32(0xa432c000), SPH_C32(0x74030000), SPH_C32(0x6f370000),
+	  SPH_C32(0x5d6206a2), SPH_C32(0xffe25ca3), SPH_C32(0xf6d613bf),
+	  SPH_C32(0x28c1affd) },
+	{ SPH_C32(0xc974012c), SPH_C32(0x7dddc000), SPH_C32(0x44000000),
+	  SPH_C32(0x16bb0000), SPH_C32(0x6ff075b7), SPH_C32(0xf47afe22),
+	  SPH_C32(0xfd282999), SPH_C32(0x5579e7ce), SPH_C32(0x661500c8),
+	  SPH_C32(0xd5054000), SPH_C32(0x6dff0000), SPH_C32(0xf9ec0000),
+	  SPH_C32(0x67e96b5f), SPH_C32(0x1428f250), SPH_C32(0xdabb5430),
+	  SPH_C32(0x844fc375) },
+	{ SPH_C32(0x998b0128), SPH_C32(0x38a98000), SPH_C32(0x79fb0000),
+	  SPH_C32(0x0f5d0000), SPH_C32(0x744c23b1), SPH_C32(0x1508857f),
+	  SPH_C32(0x1c80e50f), SPH_C32(0x2e623177), SPH_C32(0x909500cd),
+	  SPH_C32(0xe1468000), SPH_C32(0x49f80000), SPH_C32(0x76d10000),
+	  SPH_C32(0x46de50a4), SPH_C32(0x1e9027fe), SPH_C32(0x177edf29),
+	  SPH_C32(0x53da7944) },
+	{ SPH_C32(0x6f0b012d), SPH_C32(0x0cea4000), SPH_C32(0x5dfc0000),
+	  SPH_C32(0x80600000), SPH_C32(0x557b184a), SPH_C32(0x1fb050d1),
+	  SPH_C32(0xd1456e16), SPH_C32(0xf9f78b46), SPH_C32(0x36ea00cc),
+	  SPH_C32(0x90710000), SPH_C32(0x50040000), SPH_C32(0xe00a0000),
+	  SPH_C32(0x7c553d59), SPH_C32(0xf55a890d), SPH_C32(0x3b1398a6),
+	  SPH_C32(0xff5415cc) },
+	{ SPH_C32(0x6baf01d0), SPH_C32(0xfa300000), SPH_C32(0xf3cc0000),
+	  SPH_C32(0xe3290000), SPH_C32(0x392b6b13), SPH_C32(0x9515777f),
+	  SPH_C32(0xd99f08d4), SPH_C32(0x248b730e), SPH_C32(0xc3730090),
+	  SPH_C32(0xfd160000), SPH_C32(0xa3700000), SPH_C32(0x68ba0000),
+	  SPH_C32(0x1d6361b3), SPH_C32(0x61b51400), SPH_C32(0x10f59223),
+	  SPH_C32(0x3ce32293) },
+	{ SPH_C32(0x9d2f01d5), SPH_C32(0xce73c000), SPH_C32(0xd7cb0000),
+	  SPH_C32(0x6c140000), SPH_C32(0x181c50e8), SPH_C32(0x9fada2d1),
+	  SPH_C32(0x145a83cd), SPH_C32(0xf31ec93f), SPH_C32(0x650c0091),
+	  SPH_C32(0x8c218000), SPH_C32(0xba8c0000), SPH_C32(0xfe610000),
+	  SPH_C32(0x27e80c4e), SPH_C32(0x8a7fbaf3), SPH_C32(0x3c98d5ac),
+	  SPH_C32(0x906d4e1b) },
+	{ SPH_C32(0xcdd001d1), SPH_C32(0x8b078000), SPH_C32(0xea300000),
+	  SPH_C32(0x75f20000), SPH_C32(0x03a006ee), SPH_C32(0x7edfd98c),
+	  SPH_C32(0xf5f24f5b), SPH_C32(0x88051f86), SPH_C32(0x938c0094),
+	  SPH_C32(0xb8624000), SPH_C32(0x9e8b0000), SPH_C32(0x715c0000),
+	  SPH_C32(0x06df37b5), SPH_C32(0x80c76f5d), SPH_C32(0xf15d5eb5),
+	  SPH_C32(0x47f8f42a) },
+	{ SPH_C32(0x3b5001d4), SPH_C32(0xbf444000), SPH_C32(0xce370000),
+	  SPH_C32(0xfacf0000), SPH_C32(0x22973d15), SPH_C32(0x74670c22),
+	  SPH_C32(0x3837c442), SPH_C32(0x5f90a5b7), SPH_C32(0x35f30095),
+	  SPH_C32(0xc955c000), SPH_C32(0x87770000), SPH_C32(0xe7870000),
+	  SPH_C32(0x3c545a48), SPH_C32(0x6b0dc1ae), SPH_C32(0xdd30193a),
+	  SPH_C32(0xeb7698a2) },
+	{ SPH_C32(0x9cda01d9), SPH_C32(0x350cc000), SPH_C32(0x301a0000),
+	  SPH_C32(0xe7bb0000), SPH_C32(0x3bbe72ba), SPH_C32(0x6dfd41c5),
+	  SPH_C32(0xa318f99a), SPH_C32(0xba9deb14), SPH_C32(0x17190090),
+	  SPH_C32(0x70dec000), SPH_C32(0x06df0000), SPH_C32(0x22930000),
+	  SPH_C32(0xe12d23c9), SPH_C32(0xa801926c), SPH_C32(0x88c30427),
+	  SPH_C32(0xcba5e1b3) },
+	{ SPH_C32(0x6a5a01dc), SPH_C32(0x014f0000), SPH_C32(0x141d0000),
+	  SPH_C32(0x68860000), SPH_C32(0x1a894941), SPH_C32(0x6745946b),
+	  SPH_C32(0x6edd7283), SPH_C32(0x6d085125), SPH_C32(0xb1660091),
+	  SPH_C32(0x01e94000), SPH_C32(0x1f230000), SPH_C32(0xb4480000),
+	  SPH_C32(0xdba64e34), SPH_C32(0x43cb3c9f), SPH_C32(0xa4ae43a8),
+	  SPH_C32(0x672b8d3b) },
+	{ SPH_C32(0x3aa501d8), SPH_C32(0x443b4000), SPH_C32(0x29e60000),
+	  SPH_C32(0x71600000), SPH_C32(0x01351f47), SPH_C32(0x8637ef36),
+	  SPH_C32(0x8f75be15), SPH_C32(0x1613879c), SPH_C32(0x47e60094),
+	  SPH_C32(0x35aa8000), SPH_C32(0x3b240000), SPH_C32(0x3b750000),
+	  SPH_C32(0xfa9175cf), SPH_C32(0x4973e931), SPH_C32(0x696bc8b1),
+	  SPH_C32(0xb0be370a) },
+	{ SPH_C32(0xcc2501dd), SPH_C32(0x70788000), SPH_C32(0x0de10000),
+	  SPH_C32(0xfe5d0000), SPH_C32(0x200224bc), SPH_C32(0x8c8f3a98),
+	  SPH_C32(0x42b0350c), SPH_C32(0xc1863dad), SPH_C32(0xe1990095),
+	  SPH_C32(0x449d0000), SPH_C32(0x22d80000), SPH_C32(0xadae0000),
+	  SPH_C32(0xc01a1832), SPH_C32(0xa2b947c2), SPH_C32(0x45068f3e),
+	  SPH_C32(0x1c305b82) },
+	{ SPH_C32(0xbfc501d0), SPH_C32(0x77f8c000), SPH_C32(0x56630000),
+	  SPH_C32(0xa9000000), SPH_C32(0xc5652969), SPH_C32(0x5ca1f113),
+	  SPH_C32(0x41a99ed0), SPH_C32(0xd3cdb02e), SPH_C32(0xe06c0099),
+	  SPH_C32(0xbfe20000), SPH_C32(0xc5090000), SPH_C32(0x26010000),
+	  SPH_C32(0xe3b83a60), SPH_C32(0x50e9a4d6), SPH_C32(0xf244f569),
+	  SPH_C32(0x55b379a9) },
+	{ SPH_C32(0x494501d5), SPH_C32(0x43bb0000), SPH_C32(0x72640000),
+	  SPH_C32(0x263d0000), SPH_C32(0xe4521292), SPH_C32(0x561924bd),
+	  SPH_C32(0x8c6c15c9), SPH_C32(0x04580a1f), SPH_C32(0x46130098),
+	  SPH_C32(0xced58000), SPH_C32(0xdcf50000), SPH_C32(0xb0da0000),
+	  SPH_C32(0xd933579d), SPH_C32(0xbb230a25), SPH_C32(0xde29b2e6),
+	  SPH_C32(0xf93d1521) },
+	{ SPH_C32(0x19ba01d1), SPH_C32(0x06cf4000), SPH_C32(0x4f9f0000),
+	  SPH_C32(0x3fdb0000), SPH_C32(0xffee4494), SPH_C32(0xb76b5fe0),
+	  SPH_C32(0x6dc4d95f), SPH_C32(0x7f43dca6), SPH_C32(0xb093009d),
+	  SPH_C32(0xfa964000), SPH_C32(0xf8f20000), SPH_C32(0x3fe70000),
+	  SPH_C32(0xf8046c66), SPH_C32(0xb19bdf8b), SPH_C32(0x13ec39ff),
+	  SPH_C32(0x2ea8af10) },
+	{ SPH_C32(0xef3a01d4), SPH_C32(0x328c8000), SPH_C32(0x6b980000),
+	  SPH_C32(0xb0e60000), SPH_C32(0xded97f6f), SPH_C32(0xbdd38a4e),
+	  SPH_C32(0xa0015246), SPH_C32(0xa8d66697), SPH_C32(0x16ec009c),
+	  SPH_C32(0x8ba1c000), SPH_C32(0xe10e0000), SPH_C32(0xa93c0000),
+	  SPH_C32(0xc28f019b), SPH_C32(0x5a517178), SPH_C32(0x3f817e70),
+	  SPH_C32(0x8226c398) },
+	{ SPH_C32(0x48b001d9), SPH_C32(0xb8c40000), SPH_C32(0x95b50000),
+	  SPH_C32(0xad920000), SPH_C32(0xc7f030c0), SPH_C32(0xa449c7a9),
+	  SPH_C32(0x3b2e6f9e), SPH_C32(0x4ddb2834), SPH_C32(0x34060099),
+	  SPH_C32(0x322ac000), SPH_C32(0x60a60000), SPH_C32(0x6c280000),
+	  SPH_C32(0x1ff6781a), SPH_C32(0x995d22ba), SPH_C32(0x6a72636d),
+	  SPH_C32(0xa2f5ba89) },
+	{ SPH_C32(0xbe3001dc), SPH_C32(0x8c87c000), SPH_C32(0xb1b20000),
+	  SPH_C32(0x22af0000), SPH_C32(0xe6c70b3b), SPH_C32(0xaef11207),
+	  SPH_C32(0xf6ebe487), SPH_C32(0x9a4e9205), SPH_C32(0x92790098),
+	  SPH_C32(0x431d4000), SPH_C32(0x795a0000), SPH_C32(0xfaf30000),
+	  SPH_C32(0x257d15e7), SPH_C32(0x72978c49), SPH_C32(0x461f24e2),
+	  SPH_C32(0x0e7bd601) },
+	{ SPH_C32(0xeecf01d8), SPH_C32(0xc9f38000), SPH_C32(0x8c490000),
+	  SPH_C32(0x3b490000), SPH_C32(0xfd7b5d3d), SPH_C32(0x4f83695a),
+	  SPH_C32(0x17432811), SPH_C32(0xe15544bc), SPH_C32(0x64f9009d),
+	  SPH_C32(0x775e8000), SPH_C32(0x5d5d0000), SPH_C32(0x75ce0000),
+	  SPH_C32(0x044a2e1c), SPH_C32(0x782f59e7), SPH_C32(0x8bdaaffb),
+	  SPH_C32(0xd9ee6c30) },
+	{ SPH_C32(0x184f01dd), SPH_C32(0xfdb04000), SPH_C32(0xa84e0000),
+	  SPH_C32(0xb4740000), SPH_C32(0xdc4c66c6), SPH_C32(0x453bbcf4),
+	  SPH_C32(0xda86a308), SPH_C32(0x36c0fe8d), SPH_C32(0xc286009c),
+	  SPH_C32(0x06690000), SPH_C32(0x44a10000), SPH_C32(0xe3150000),
+	  SPH_C32(0x3ec143e1), SPH_C32(0x93e5f714), SPH_C32(0xa7b7e874),
+	  SPH_C32(0x756000b8) },
+	{ SPH_C32(0xb4370060), SPH_C32(0x0c4c0000), SPH_C32(0x56c20000),
+	  SPH_C32(0x5cae0000), SPH_C32(0x94541f3f), SPH_C32(0x3b3ef825),
+	  SPH_C32(0x1b365f3d), SPH_C32(0xf3d45758), SPH_C32(0x5cb00110),
+	  SPH_C32(0x913e0000), SPH_C32(0x44190000), SPH_C32(0x888c0000),
+	  SPH_C32(0x66dc7418), SPH_C32(0x921f1d66), SPH_C32(0x55ceea25),
+	  SPH_C32(0x925c44e9) },
+	{ SPH_C32(0x42b70065), SPH_C32(0x380fc000), SPH_C32(0x72c50000),
+	  SPH_C32(0xd3930000), SPH_C32(0xb56324c4), SPH_C32(0x31862d8b),
+	  SPH_C32(0xd6f3d424), SPH_C32(0x2441ed69), SPH_C32(0xfacf0111),
+	  SPH_C32(0xe0098000), SPH_C32(0x5de50000), SPH_C32(0x1e570000),
+	  SPH_C32(0x5c5719e5), SPH_C32(0x79d5b395), SPH_C32(0x79a3adaa),
+	  SPH_C32(0x3ed22861) },
+	{ SPH_C32(0x12480061), SPH_C32(0x7d7b8000), SPH_C32(0x4f3e0000),
+	  SPH_C32(0xca750000), SPH_C32(0xaedf72c2), SPH_C32(0xd0f456d6),
+	  SPH_C32(0x375b18b2), SPH_C32(0x5f5a3bd0), SPH_C32(0x0c4f0114),
+	  SPH_C32(0xd44a4000), SPH_C32(0x79e20000), SPH_C32(0x916a0000),
+	  SPH_C32(0x7d60221e), SPH_C32(0x736d663b), SPH_C32(0xb46626b3),
+	  SPH_C32(0xe9479250) },
+	{ SPH_C32(0xe4c80064), SPH_C32(0x49384000), SPH_C32(0x6b390000),
+	  SPH_C32(0x45480000), SPH_C32(0x8fe84939), SPH_C32(0xda4c8378),
+	  SPH_C32(0xfa9e93ab), SPH_C32(0x88cf81e1), SPH_C32(0xaa300115),
+	  SPH_C32(0xa57dc000), SPH_C32(0x601e0000), SPH_C32(0x07b10000),
+	  SPH_C32(0x47eb4fe3), SPH_C32(0x98a7c8c8), SPH_C32(0x980b613c),
+	  SPH_C32(0x45c9fed8) },
+	{ SPH_C32(0x43420069), SPH_C32(0xc370c000), SPH_C32(0x95140000),
+	  SPH_C32(0x583c0000), SPH_C32(0x96c10696), SPH_C32(0xc3d6ce9f),
+	  SPH_C32(0x61b1ae73), SPH_C32(0x6dc2cf42), SPH_C32(0x88da0110),
+	  SPH_C32(0x1cf6c000), SPH_C32(0xe1b60000), SPH_C32(0xc2a50000),
+	  SPH_C32(0x9a923662), SPH_C32(0x5bab9b0a), SPH_C32(0xcdf87c21),
+	  SPH_C32(0x651a87c9) },
+	{ SPH_C32(0xb5c2006c), SPH_C32(0xf7330000), SPH_C32(0xb1130000),
+	  SPH_C32(0xd7010000), SPH_C32(0xb7f63d6d), SPH_C32(0xc96e1b31),
+	  SPH_C32(0xac74256a), SPH_C32(0xba577573), SPH_C32(0x2ea50111),
+	  SPH_C32(0x6dc14000), SPH_C32(0xf84a0000), SPH_C32(0x547e0000),
+	  SPH_C32(0xa0195b9f), SPH_C32(0xb06135f9), SPH_C32(0xe1953bae),
+	  SPH_C32(0xc994eb41) },
+	{ SPH_C32(0xe53d0068), SPH_C32(0xb2474000), SPH_C32(0x8ce80000),
+	  SPH_C32(0xcee70000), SPH_C32(0xac4a6b6b), SPH_C32(0x281c606c),
+	  SPH_C32(0x4ddce9fc), SPH_C32(0xc14ca3ca), SPH_C32(0xd8250114),
+	  SPH_C32(0x59828000), SPH_C32(0xdc4d0000), SPH_C32(0xdb430000),
+	  SPH_C32(0x812e6064), SPH_C32(0xbad9e057), SPH_C32(0x2c50b0b7),
+	  SPH_C32(0x1e015170) },
+	{ SPH_C32(0x13bd006d), SPH_C32(0x86048000), SPH_C32(0xa8ef0000),
+	  SPH_C32(0x41da0000), SPH_C32(0x8d7d5090), SPH_C32(0x22a4b5c2),
+	  SPH_C32(0x801962e5), SPH_C32(0x16d919fb), SPH_C32(0x7e5a0115),
+	  SPH_C32(0x28b50000), SPH_C32(0xc5b10000), SPH_C32(0x4d980000),
+	  SPH_C32(0xbba50d99), SPH_C32(0x51134ea4), SPH_C32(0x003df738),
+	  SPH_C32(0xb28f3df8) },
+	{ SPH_C32(0x605d0060), SPH_C32(0x8184c000), SPH_C32(0xf36d0000),
+	  SPH_C32(0x16870000), SPH_C32(0x681a5d45), SPH_C32(0xf28a7e49),
+	  SPH_C32(0x8300c939), SPH_C32(0x04929478), SPH_C32(0x7faf0119),
+	  SPH_C32(0xd3ca0000), SPH_C32(0x22600000), SPH_C32(0xc6370000),
+	  SPH_C32(0x98072fcb), SPH_C32(0xa343adb0), SPH_C32(0xb77f8d6f),
+	  SPH_C32(0xfb0c1fd3) },
+	{ SPH_C32(0x96dd0065), SPH_C32(0xb5c70000), SPH_C32(0xd76a0000),
+	  SPH_C32(0x99ba0000), SPH_C32(0x492d66be), SPH_C32(0xf832abe7),
+	  SPH_C32(0x4ec54220), SPH_C32(0xd3072e49), SPH_C32(0xd9d00118),
+	  SPH_C32(0xa2fd8000), SPH_C32(0x3b9c0000), SPH_C32(0x50ec0000),
+	  SPH_C32(0xa28c4236), SPH_C32(0x48890343), SPH_C32(0x9b12cae0),
+	  SPH_C32(0x5782735b) },
+	{ SPH_C32(0xc6220061), SPH_C32(0xf0b34000), SPH_C32(0xea910000),
+	  SPH_C32(0x805c0000), SPH_C32(0x529130b8), SPH_C32(0x1940d0ba),
+	  SPH_C32(0xaf6d8eb6), SPH_C32(0xa81cf8f0), SPH_C32(0x2f50011d),
+	  SPH_C32(0x96be4000), SPH_C32(0x1f9b0000), SPH_C32(0xdfd10000),
+	  SPH_C32(0x83bb79cd), SPH_C32(0x4231d6ed), SPH_C32(0x56d741f9),
+	  SPH_C32(0x8017c96a) },
+	{ SPH_C32(0x30a20064), SPH_C32(0xc4f08000), SPH_C32(0xce960000),
+	  SPH_C32(0x0f610000), SPH_C32(0x73a60b43), SPH_C32(0x13f80514),
+	  SPH_C32(0x62a805af), SPH_C32(0x7f8942c1), SPH_C32(0x892f011c),
+	  SPH_C32(0xe789c000), SPH_C32(0x06670000), SPH_C32(0x490a0000),
+	  SPH_C32(0xb9301430), SPH_C32(0xa9fb781e), SPH_C32(0x7aba0676),
+	  SPH_C32(0x2c99a5e2) },
+	{ SPH_C32(0x97280069), SPH_C32(0x4eb80000), SPH_C32(0x30bb0000),
+	  SPH_C32(0x12150000), SPH_C32(0x6a8f44ec), SPH_C32(0x0a6248f3),
+	  SPH_C32(0xf9873877), SPH_C32(0x9a840c62), SPH_C32(0xabc50119),
+	  SPH_C32(0x5e02c000), SPH_C32(0x87cf0000), SPH_C32(0x8c1e0000),
+	  SPH_C32(0x64496db1), SPH_C32(0x6af72bdc), SPH_C32(0x2f491b6b),
+	  SPH_C32(0x0c4adcf3) },
+	{ SPH_C32(0x61a8006c), SPH_C32(0x7afbc000), SPH_C32(0x14bc0000),
+	  SPH_C32(0x9d280000), SPH_C32(0x4bb87f17), SPH_C32(0x00da9d5d),
+	  SPH_C32(0x3442b36e), SPH_C32(0x4d11b653), SPH_C32(0x0dba0118),
+	  SPH_C32(0x2f354000), SPH_C32(0x9e330000), SPH_C32(0x1ac50000),
+	  SPH_C32(0x5ec2004c), SPH_C32(0x813d852f), SPH_C32(0x03245ce4),
+	  SPH_C32(0xa0c4b07b) },
+	{ SPH_C32(0x31570068), SPH_C32(0x3f8f8000), SPH_C32(0x29470000),
+	  SPH_C32(0x84ce0000), SPH_C32(0x50042911), SPH_C32(0xe1a8e600),
+	  SPH_C32(0xd5ea7ff8), SPH_C32(0x360a60ea), SPH_C32(0xfb3a011d),
+	  SPH_C32(0x1b768000), SPH_C32(0xba340000), SPH_C32(0x95f80000),
+	  SPH_C32(0x7ff53bb7), SPH_C32(0x8b855081), SPH_C32(0xcee1d7fd),
+	  SPH_C32(0x77510a4a) },
+	{ SPH_C32(0xc7d7006d), SPH_C32(0x0bcc4000), SPH_C32(0x0d400000),
+	  SPH_C32(0x0bf30000), SPH_C32(0x713312ea), SPH_C32(0xeb1033ae),
+	  SPH_C32(0x182ff4e1), SPH_C32(0xe19fdadb), SPH_C32(0x5d45011c),
+	  SPH_C32(0x6a410000), SPH_C32(0xa3c80000), SPH_C32(0x03230000),
+	  SPH_C32(0x457e564a), SPH_C32(0x604ffe72), SPH_C32(0xe28c9072),
+	  SPH_C32(0xdbdf66c2) },
+	{ SPH_C32(0xc3730090), SPH_C32(0xfd160000), SPH_C32(0xa3700000),
+	  SPH_C32(0x68ba0000), SPH_C32(0x1d6361b3), SPH_C32(0x61b51400),
+	  SPH_C32(0x10f59223), SPH_C32(0x3ce32293), SPH_C32(0xa8dc0140),
+	  SPH_C32(0x07260000), SPH_C32(0x50bc0000), SPH_C32(0x8b930000),
+	  SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f), SPH_C32(0xc96a9af7),
+	  SPH_C32(0x1868519d) },
+	{ SPH_C32(0x35f30095), SPH_C32(0xc955c000), SPH_C32(0x87770000),
+	  SPH_C32(0xe7870000), SPH_C32(0x3c545a48), SPH_C32(0x6b0dc1ae),
+	  SPH_C32(0xdd30193a), SPH_C32(0xeb7698a2), SPH_C32(0x0ea30141),
+	  SPH_C32(0x76118000), SPH_C32(0x49400000), SPH_C32(0x1d480000),
+	  SPH_C32(0x1ec3675d), SPH_C32(0x1f6acd8c), SPH_C32(0xe507dd78),
+	  SPH_C32(0xb4e63d15) },
+	{ SPH_C32(0x650c0091), SPH_C32(0x8c218000), SPH_C32(0xba8c0000),
+	  SPH_C32(0xfe610000), SPH_C32(0x27e80c4e), SPH_C32(0x8a7fbaf3),
+	  SPH_C32(0x3c98d5ac), SPH_C32(0x906d4e1b), SPH_C32(0xf8230144),
+	  SPH_C32(0x42524000), SPH_C32(0x6d470000), SPH_C32(0x92750000),
+	  SPH_C32(0x3ff45ca6), SPH_C32(0x15d21822), SPH_C32(0x28c25661),
+	  SPH_C32(0x63738724) },
+	{ SPH_C32(0x938c0094), SPH_C32(0xb8624000), SPH_C32(0x9e8b0000),
+	  SPH_C32(0x715c0000), SPH_C32(0x06df37b5), SPH_C32(0x80c76f5d),
+	  SPH_C32(0xf15d5eb5), SPH_C32(0x47f8f42a), SPH_C32(0x5e5c0145),
+	  SPH_C32(0x3365c000), SPH_C32(0x74bb0000), SPH_C32(0x04ae0000),
+	  SPH_C32(0x057f315b), SPH_C32(0xfe18b6d1), SPH_C32(0x04af11ee),
+	  SPH_C32(0xcffdebac) },
+	{ SPH_C32(0x34060099), SPH_C32(0x322ac000), SPH_C32(0x60a60000),
+	  SPH_C32(0x6c280000), SPH_C32(0x1ff6781a), SPH_C32(0x995d22ba),
+	  SPH_C32(0x6a72636d), SPH_C32(0xa2f5ba89), SPH_C32(0x7cb60140),
+	  SPH_C32(0x8aeec000), SPH_C32(0xf5130000), SPH_C32(0xc1ba0000),
+	  SPH_C32(0xd80648da), SPH_C32(0x3d14e513), SPH_C32(0x515c0cf3),
+	  SPH_C32(0xef2e92bd) },
+	{ SPH_C32(0xc286009c), SPH_C32(0x06690000), SPH_C32(0x44a10000),
+	  SPH_C32(0xe3150000), SPH_C32(0x3ec143e1), SPH_C32(0x93e5f714),
+	  SPH_C32(0xa7b7e874), SPH_C32(0x756000b8), SPH_C32(0xdac90141),
+	  SPH_C32(0xfbd94000), SPH_C32(0xecef0000), SPH_C32(0x57610000),
+	  SPH_C32(0xe28d2527), SPH_C32(0xd6de4be0), SPH_C32(0x7d314b7c),
+	  SPH_C32(0x43a0fe35) },
+	{ SPH_C32(0x92790098), SPH_C32(0x431d4000), SPH_C32(0x795a0000),
+	  SPH_C32(0xfaf30000), SPH_C32(0x257d15e7), SPH_C32(0x72978c49),
+	  SPH_C32(0x461f24e2), SPH_C32(0x0e7bd601), SPH_C32(0x2c490144),
+	  SPH_C32(0xcf9a8000), SPH_C32(0xc8e80000), SPH_C32(0xd85c0000),
+	  SPH_C32(0xc3ba1edc), SPH_C32(0xdc669e4e), SPH_C32(0xb0f4c065),
+	  SPH_C32(0x94354404) },
+	{ SPH_C32(0x64f9009d), SPH_C32(0x775e8000), SPH_C32(0x5d5d0000),
+	  SPH_C32(0x75ce0000), SPH_C32(0x044a2e1c), SPH_C32(0x782f59e7),
+	  SPH_C32(0x8bdaaffb), SPH_C32(0xd9ee6c30), SPH_C32(0x8a360145),
+	  SPH_C32(0xbead0000), SPH_C32(0xd1140000), SPH_C32(0x4e870000),
+	  SPH_C32(0xf9317321), SPH_C32(0x37ac30bd), SPH_C32(0x9c9987ea),
+	  SPH_C32(0x38bb288c) },
+	{ SPH_C32(0x17190090), SPH_C32(0x70dec000), SPH_C32(0x06df0000),
+	  SPH_C32(0x22930000), SPH_C32(0xe12d23c9), SPH_C32(0xa801926c),
+	  SPH_C32(0x88c30427), SPH_C32(0xcba5e1b3), SPH_C32(0x8bc30149),
+	  SPH_C32(0x45d20000), SPH_C32(0x36c50000), SPH_C32(0xc5280000),
+	  SPH_C32(0xda935173), SPH_C32(0xc5fcd3a9), SPH_C32(0x2bdbfdbd),
+	  SPH_C32(0x71380aa7) },
+	{ SPH_C32(0xe1990095), SPH_C32(0x449d0000), SPH_C32(0x22d80000),
+	  SPH_C32(0xadae0000), SPH_C32(0xc01a1832), SPH_C32(0xa2b947c2),
+	  SPH_C32(0x45068f3e), SPH_C32(0x1c305b82), SPH_C32(0x2dbc0148),
+	  SPH_C32(0x34e58000), SPH_C32(0x2f390000), SPH_C32(0x53f30000),
+	  SPH_C32(0xe0183c8e), SPH_C32(0x2e367d5a), SPH_C32(0x07b6ba32),
+	  SPH_C32(0xddb6662f) },
+	{ SPH_C32(0xb1660091), SPH_C32(0x01e94000), SPH_C32(0x1f230000),
+	  SPH_C32(0xb4480000), SPH_C32(0xdba64e34), SPH_C32(0x43cb3c9f),
+	  SPH_C32(0xa4ae43a8), SPH_C32(0x672b8d3b), SPH_C32(0xdb3c014d),
+	  SPH_C32(0x00a64000), SPH_C32(0x0b3e0000), SPH_C32(0xdcce0000),
+	  SPH_C32(0xc12f0775), SPH_C32(0x248ea8f4), SPH_C32(0xca73312b),
+	  SPH_C32(0x0a23dc1e) },
+	{ SPH_C32(0x47e60094), SPH_C32(0x35aa8000), SPH_C32(0x3b240000),
+	  SPH_C32(0x3b750000), SPH_C32(0xfa9175cf), SPH_C32(0x4973e931),
+	  SPH_C32(0x696bc8b1), SPH_C32(0xb0be370a), SPH_C32(0x7d43014c),
+	  SPH_C32(0x7191c000), SPH_C32(0x12c20000), SPH_C32(0x4a150000),
+	  SPH_C32(0xfba46a88), SPH_C32(0xcf440607), SPH_C32(0xe61e76a4),
+	  SPH_C32(0xa6adb096) },
+	{ SPH_C32(0xe06c0099), SPH_C32(0xbfe20000), SPH_C32(0xc5090000),
+	  SPH_C32(0x26010000), SPH_C32(0xe3b83a60), SPH_C32(0x50e9a4d6),
+	  SPH_C32(0xf244f569), SPH_C32(0x55b379a9), SPH_C32(0x5fa90149),
+	  SPH_C32(0xc81ac000), SPH_C32(0x936a0000), SPH_C32(0x8f010000),
+	  SPH_C32(0x26dd1309), SPH_C32(0x0c4855c5), SPH_C32(0xb3ed6bb9),
+	  SPH_C32(0x867ec987) },
+	{ SPH_C32(0x16ec009c), SPH_C32(0x8ba1c000), SPH_C32(0xe10e0000),
+	  SPH_C32(0xa93c0000), SPH_C32(0xc28f019b), SPH_C32(0x5a517178),
+	  SPH_C32(0x3f817e70), SPH_C32(0x8226c398), SPH_C32(0xf9d60148),
+	  SPH_C32(0xb92d4000), SPH_C32(0x8a960000), SPH_C32(0x19da0000),
+	  SPH_C32(0x1c567ef4), SPH_C32(0xe782fb36), SPH_C32(0x9f802c36),
+	  SPH_C32(0x2af0a50f) },
+	{ SPH_C32(0x46130098), SPH_C32(0xced58000), SPH_C32(0xdcf50000),
+	  SPH_C32(0xb0da0000), SPH_C32(0xd933579d), SPH_C32(0xbb230a25),
+	  SPH_C32(0xde29b2e6), SPH_C32(0xf93d1521), SPH_C32(0x0f56014d),
+	  SPH_C32(0x8d6e8000), SPH_C32(0xae910000), SPH_C32(0x96e70000),
+	  SPH_C32(0x3d61450f), SPH_C32(0xed3a2e98), SPH_C32(0x5245a72f),
+	  SPH_C32(0xfd651f3e) },
+	{ SPH_C32(0xb093009d), SPH_C32(0xfa964000), SPH_C32(0xf8f20000),
+	  SPH_C32(0x3fe70000), SPH_C32(0xf8046c66), SPH_C32(0xb19bdf8b),
+	  SPH_C32(0x13ec39ff), SPH_C32(0x2ea8af10), SPH_C32(0xa929014c),
+	  SPH_C32(0xfc590000), SPH_C32(0xb76d0000), SPH_C32(0x003c0000),
+	  SPH_C32(0x07ea28f2), SPH_C32(0x06f0806b), SPH_C32(0x7e28e0a0),
+	  SPH_C32(0x51eb73b6) },
+	{ SPH_C32(0x405b0030), SPH_C32(0x9a540000), SPH_C32(0x42670000),
+	  SPH_C32(0x5fb10000), SPH_C32(0xd6c06187), SPH_C32(0x5d81863c),
+	  SPH_C32(0x87922fef), SPH_C32(0x79e0422c), SPH_C32(0xdf9801b0),
+	  SPH_C32(0xf67c0000), SPH_C32(0xa50e0000), SPH_C32(0xbf870000),
+	  SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a), SPH_C32(0xc2a957e9),
+	  SPH_C32(0xd75f2456) },
+	{ SPH_C32(0xb6db0035), SPH_C32(0xae17c000), SPH_C32(0x66600000),
+	  SPH_C32(0xd08c0000), SPH_C32(0xf7f75a7c), SPH_C32(0x57395392),
+	  SPH_C32(0x4a57a4f6), SPH_C32(0xae75f81d), SPH_C32(0x79e701b1),
+	  SPH_C32(0x874b8000), SPH_C32(0xbcf20000), SPH_C32(0x295c0000),
+	  SPH_C32(0x97f419d1), SPH_C32(0x45e121a9), SPH_C32(0xeec41066),
+	  SPH_C32(0x7bd148de) },
+	{ SPH_C32(0xe6240031), SPH_C32(0xeb638000), SPH_C32(0x5b9b0000),
+	  SPH_C32(0xc96a0000), SPH_C32(0xec4b0c7a), SPH_C32(0xb64b28cf),
+	  SPH_C32(0xabff6860), SPH_C32(0xd56e2ea4), SPH_C32(0x8f6701b4),
+	  SPH_C32(0xb3084000), SPH_C32(0x98f50000), SPH_C32(0xa6610000),
+	  SPH_C32(0xb6c3222a), SPH_C32(0x4f59f407), SPH_C32(0x23019b7f),
+	  SPH_C32(0xac44f2ef) },
+	{ SPH_C32(0x10a40034), SPH_C32(0xdf204000), SPH_C32(0x7f9c0000),
+	  SPH_C32(0x46570000), SPH_C32(0xcd7c3781), SPH_C32(0xbcf3fd61),
+	  SPH_C32(0x663ae379), SPH_C32(0x02fb9495), SPH_C32(0x291801b5),
+	  SPH_C32(0xc23fc000), SPH_C32(0x81090000), SPH_C32(0x30ba0000),
+	  SPH_C32(0x8c484fd7), SPH_C32(0xa4935af4), SPH_C32(0x0f6cdcf0),
+	  SPH_C32(0x00ca9e67) },
+	{ SPH_C32(0xb72e0039), SPH_C32(0x5568c000), SPH_C32(0x81b10000),
+	  SPH_C32(0x5b230000), SPH_C32(0xd455782e), SPH_C32(0xa569b086),
+	  SPH_C32(0xfd15dea1), SPH_C32(0xe7f6da36), SPH_C32(0x0bf201b0),
+	  SPH_C32(0x7bb4c000), SPH_C32(0x00a10000), SPH_C32(0xf5ae0000),
+	  SPH_C32(0x51313656), SPH_C32(0x679f0936), SPH_C32(0x5a9fc1ed),
+	  SPH_C32(0x2019e776) },
+	{ SPH_C32(0x41ae003c), SPH_C32(0x612b0000), SPH_C32(0xa5b60000),
+	  SPH_C32(0xd41e0000), SPH_C32(0xf56243d5), SPH_C32(0xafd16528),
+	  SPH_C32(0x30d055b8), SPH_C32(0x30636007), SPH_C32(0xad8d01b1),
+	  SPH_C32(0x0a834000), SPH_C32(0x195d0000), SPH_C32(0x63750000),
+	  SPH_C32(0x6bba5bab), SPH_C32(0x8c55a7c5), SPH_C32(0x76f28662),
+	  SPH_C32(0x8c978bfe) },
+	{ SPH_C32(0x11510038), SPH_C32(0x245f4000), SPH_C32(0x984d0000),
+	  SPH_C32(0xcdf80000), SPH_C32(0xeede15d3), SPH_C32(0x4ea31e75),
+	  SPH_C32(0xd178992e), SPH_C32(0x4b78b6be), SPH_C32(0x5b0d01b4),
+	  SPH_C32(0x3ec08000), SPH_C32(0x3d5a0000), SPH_C32(0xec480000),
+	  SPH_C32(0x4a8d6050), SPH_C32(0x86ed726b), SPH_C32(0xbb370d7b),
+	  SPH_C32(0x5b0231cf) },
+	{ SPH_C32(0xe7d1003d), SPH_C32(0x101c8000), SPH_C32(0xbc4a0000),
+	  SPH_C32(0x42c50000), SPH_C32(0xcfe92e28), SPH_C32(0x441bcbdb),
+	  SPH_C32(0x1cbd1237), SPH_C32(0x9ced0c8f), SPH_C32(0xfd7201b5),
+	  SPH_C32(0x4ff70000), SPH_C32(0x24a60000), SPH_C32(0x7a930000),
+	  SPH_C32(0x70060dad), SPH_C32(0x6d27dc98), SPH_C32(0x975a4af4),
+	  SPH_C32(0xf78c5d47) },
+	{ SPH_C32(0x94310030), SPH_C32(0x179cc000), SPH_C32(0xe7c80000),
+	  SPH_C32(0x15980000), SPH_C32(0x2a8e23fd), SPH_C32(0x94350050),
+	  SPH_C32(0x1fa4b9eb), SPH_C32(0x8ea6810c), SPH_C32(0xfc8701b9),
+	  SPH_C32(0xb4880000), SPH_C32(0xc3770000), SPH_C32(0xf13c0000),
+	  SPH_C32(0x53a42fff), SPH_C32(0x9f773f8c), SPH_C32(0x201830a3),
+	  SPH_C32(0xbe0f7f6c) },
+	{ SPH_C32(0x62b10035), SPH_C32(0x23df0000), SPH_C32(0xc3cf0000),
+	  SPH_C32(0x9aa50000), SPH_C32(0x0bb91806), SPH_C32(0x9e8dd5fe),
+	  SPH_C32(0xd26132f2), SPH_C32(0x59333b3d), SPH_C32(0x5af801b8),
+	  SPH_C32(0xc5bf8000), SPH_C32(0xda8b0000), SPH_C32(0x67e70000),
+	  SPH_C32(0x692f4202), SPH_C32(0x74bd917f), SPH_C32(0x0c75772c),
+	  SPH_C32(0x128113e4) },
+	{ SPH_C32(0x324e0031), SPH_C32(0x66ab4000), SPH_C32(0xfe340000),
+	  SPH_C32(0x83430000), SPH_C32(0x10054e00), SPH_C32(0x7fffaea3),
+	  SPH_C32(0x33c9fe64), SPH_C32(0x2228ed84), SPH_C32(0xac7801bd),
+	  SPH_C32(0xf1fc4000), SPH_C32(0xfe8c0000), SPH_C32(0xe8da0000),
+	  SPH_C32(0x481879f9), SPH_C32(0x7e0544d1), SPH_C32(0xc1b0fc35),
+	  SPH_C32(0xc514a9d5) },
+	{ SPH_C32(0xc4ce0034), SPH_C32(0x52e88000), SPH_C32(0xda330000),
+	  SPH_C32(0x0c7e0000), SPH_C32(0x313275fb), SPH_C32(0x75477b0d),
+	  SPH_C32(0xfe0c757d), SPH_C32(0xf5bd57b5), SPH_C32(0x0a0701bc),
+	  SPH_C32(0x80cbc000), SPH_C32(0xe7700000), SPH_C32(0x7e010000),
+	  SPH_C32(0x72931404), SPH_C32(0x95cfea22), SPH_C32(0xedddbbba),
+	  SPH_C32(0x699ac55d) },
+	{ SPH_C32(0x63440039), SPH_C32(0xd8a00000), SPH_C32(0x241e0000),
+	  SPH_C32(0x110a0000), SPH_C32(0x281b3a54), SPH_C32(0x6cdd36ea),
+	  SPH_C32(0x652348a5), SPH_C32(0x10b01916), SPH_C32(0x28ed01b9),
+	  SPH_C32(0x3940c000), SPH_C32(0x66d80000), SPH_C32(0xbb150000),
+	  SPH_C32(0xafea6d85), SPH_C32(0x56c3b9e0), SPH_C32(0xb82ea6a7),
+	  SPH_C32(0x4949bc4c) },
+	{ SPH_C32(0x95c4003c), SPH_C32(0xece3c000), SPH_C32(0x00190000),
+	  SPH_C32(0x9e370000), SPH_C32(0x092c01af), SPH_C32(0x6665e344),
+	  SPH_C32(0xa8e6c3bc), SPH_C32(0xc725a327), SPH_C32(0x8e9201b8),
+	  SPH_C32(0x48774000), SPH_C32(0x7f240000), SPH_C32(0x2dce0000),
+	  SPH_C32(0x95610078), SPH_C32(0xbd091713), SPH_C32(0x9443e128),
+	  SPH_C32(0xe5c7d0c4) },
+	{ SPH_C32(0xc53b0038), SPH_C32(0xa9978000), SPH_C32(0x3de20000),
+	  SPH_C32(0x87d10000), SPH_C32(0x129057a9), SPH_C32(0x87179819),
+	  SPH_C32(0x494e0f2a), SPH_C32(0xbc3e759e), SPH_C32(0x781201bd),
+	  SPH_C32(0x7c348000), SPH_C32(0x5b230000), SPH_C32(0xa2f30000),
+	  SPH_C32(0xb4563b83), SPH_C32(0xb7b1c2bd), SPH_C32(0x59866a31),
+	  SPH_C32(0x32526af5) },
+	{ SPH_C32(0x33bb003d), SPH_C32(0x9dd44000), SPH_C32(0x19e50000),
+	  SPH_C32(0x08ec0000), SPH_C32(0x33a76c52), SPH_C32(0x8daf4db7),
+	  SPH_C32(0x848b8433), SPH_C32(0x6babcfaf), SPH_C32(0xde6d01bc),
+	  SPH_C32(0x0d030000), SPH_C32(0x42df0000), SPH_C32(0x34280000),
+	  SPH_C32(0x8edd567e), SPH_C32(0x5c7b6c4e), SPH_C32(0x75eb2dbe),
+	  SPH_C32(0x9edc067d) },
+	{ SPH_C32(0x371f00c0), SPH_C32(0x6b0e0000), SPH_C32(0xb7d50000),
+	  SPH_C32(0x6ba50000), SPH_C32(0x5ff71f0b), SPH_C32(0x070a6a19),
+	  SPH_C32(0x8c51e2f1), SPH_C32(0xb6d737e7), SPH_C32(0x2bf401e0),
+	  SPH_C32(0x60640000), SPH_C32(0xb1ab0000), SPH_C32(0xbc980000),
+	  SPH_C32(0xefeb0a94), SPH_C32(0xc894f143), SPH_C32(0x5e0d273b),
+	  SPH_C32(0x5d6b3122) },
+	{ SPH_C32(0xc19f00c5), SPH_C32(0x5f4dc000), SPH_C32(0x93d20000),
+	  SPH_C32(0xe4980000), SPH_C32(0x7ec024f0), SPH_C32(0x0db2bfb7),
+	  SPH_C32(0x419469e8), SPH_C32(0x61428dd6), SPH_C32(0x8d8b01e1),
+	  SPH_C32(0x11538000), SPH_C32(0xa8570000), SPH_C32(0x2a430000),
+	  SPH_C32(0xd5606769), SPH_C32(0x235e5fb0), SPH_C32(0x726060b4),
+	  SPH_C32(0xf1e55daa) },
+	{ SPH_C32(0x916000c1), SPH_C32(0x1a398000), SPH_C32(0xae290000),
+	  SPH_C32(0xfd7e0000), SPH_C32(0x657c72f6), SPH_C32(0xecc0c4ea),
+	  SPH_C32(0xa03ca57e), SPH_C32(0x1a595b6f), SPH_C32(0x7b0b01e4),
+	  SPH_C32(0x25104000), SPH_C32(0x8c500000), SPH_C32(0xa57e0000),
+	  SPH_C32(0xf4575c92), SPH_C32(0x29e68a1e), SPH_C32(0xbfa5ebad),
+	  SPH_C32(0x2670e79b) },
+	{ SPH_C32(0x67e000c4), SPH_C32(0x2e7a4000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0x72430000), SPH_C32(0x444b490d), SPH_C32(0xe6781144),
+	  SPH_C32(0x6df92e67), SPH_C32(0xcdcce15e), SPH_C32(0xdd7401e5),
+	  SPH_C32(0x5427c000), SPH_C32(0x95ac0000), SPH_C32(0x33a50000),
+	  SPH_C32(0xcedc316f), SPH_C32(0xc22c24ed), SPH_C32(0x93c8ac22),
+	  SPH_C32(0x8afe8b13) },
+	{ SPH_C32(0xc06a00c9), SPH_C32(0xa432c000), SPH_C32(0x74030000),
+	  SPH_C32(0x6f370000), SPH_C32(0x5d6206a2), SPH_C32(0xffe25ca3),
+	  SPH_C32(0xf6d613bf), SPH_C32(0x28c1affd), SPH_C32(0xff9e01e0),
+	  SPH_C32(0xedacc000), SPH_C32(0x14040000), SPH_C32(0xf6b10000),
+	  SPH_C32(0x13a548ee), SPH_C32(0x0120772f), SPH_C32(0xc63bb13f),
+	  SPH_C32(0xaa2df202) },
+	{ SPH_C32(0x36ea00cc), SPH_C32(0x90710000), SPH_C32(0x50040000),
+	  SPH_C32(0xe00a0000), SPH_C32(0x7c553d59), SPH_C32(0xf55a890d),
+	  SPH_C32(0x3b1398a6), SPH_C32(0xff5415cc), SPH_C32(0x59e101e1),
+	  SPH_C32(0x9c9b4000), SPH_C32(0x0df80000), SPH_C32(0x606a0000),
+	  SPH_C32(0x292e2513), SPH_C32(0xeaead9dc), SPH_C32(0xea56f6b0),
+	  SPH_C32(0x06a39e8a) },
+	{ SPH_C32(0x661500c8), SPH_C32(0xd5054000), SPH_C32(0x6dff0000),
+	  SPH_C32(0xf9ec0000), SPH_C32(0x67e96b5f), SPH_C32(0x1428f250),
+	  SPH_C32(0xdabb5430), SPH_C32(0x844fc375), SPH_C32(0xaf6101e4),
+	  SPH_C32(0xa8d88000), SPH_C32(0x29ff0000), SPH_C32(0xef570000),
+	  SPH_C32(0x08191ee8), SPH_C32(0xe0520c72), SPH_C32(0x27937da9),
+	  SPH_C32(0xd13624bb) },
+	{ SPH_C32(0x909500cd), SPH_C32(0xe1468000), SPH_C32(0x49f80000),
+	  SPH_C32(0x76d10000), SPH_C32(0x46de50a4), SPH_C32(0x1e9027fe),
+	  SPH_C32(0x177edf29), SPH_C32(0x53da7944), SPH_C32(0x091e01e5),
+	  SPH_C32(0xd9ef0000), SPH_C32(0x30030000), SPH_C32(0x798c0000),
+	  SPH_C32(0x32927315), SPH_C32(0x0b98a281), SPH_C32(0x0bfe3a26),
+	  SPH_C32(0x7db84833) },
+	{ SPH_C32(0xe37500c0), SPH_C32(0xe6c6c000), SPH_C32(0x127a0000),
+	  SPH_C32(0x218c0000), SPH_C32(0xa3b95d71), SPH_C32(0xcebeec75),
+	  SPH_C32(0x146774f5), SPH_C32(0x4191f4c7), SPH_C32(0x08eb01e9),
+	  SPH_C32(0x22900000), SPH_C32(0xd7d20000), SPH_C32(0xf2230000),
+	  SPH_C32(0x11305147), SPH_C32(0xf9c84195), SPH_C32(0xbcbc4071),
+	  SPH_C32(0x343b6a18) },
+	{ SPH_C32(0x15f500c5), SPH_C32(0xd2850000), SPH_C32(0x367d0000),
+	  SPH_C32(0xaeb10000), SPH_C32(0x828e668a), SPH_C32(0xc40639db),
+	  SPH_C32(0xd9a2ffec), SPH_C32(0x96044ef6), SPH_C32(0xae9401e8),
+	  SPH_C32(0x53a78000), SPH_C32(0xce2e0000), SPH_C32(0x64f80000),
+	  SPH_C32(0x2bbb3cba), SPH_C32(0x1202ef66), SPH_C32(0x90d107fe),
+	  SPH_C32(0x98b50690) },
+	{ SPH_C32(0x450a00c1), SPH_C32(0x97f14000), SPH_C32(0x0b860000),
+	  SPH_C32(0xb7570000), SPH_C32(0x9932308c), SPH_C32(0x25744286),
+	  SPH_C32(0x380a337a), SPH_C32(0xed1f984f), SPH_C32(0x581401ed),
+	  SPH_C32(0x67e44000), SPH_C32(0xea290000), SPH_C32(0xebc50000),
+	  SPH_C32(0x0a8c0741), SPH_C32(0x18ba3ac8), SPH_C32(0x5d148ce7),
+	  SPH_C32(0x4f20bca1) },
+	{ SPH_C32(0xb38a00c4), SPH_C32(0xa3b28000), SPH_C32(0x2f810000),
+	  SPH_C32(0x386a0000), SPH_C32(0xb8050b77), SPH_C32(0x2fcc9728),
+	  SPH_C32(0xf5cfb863), SPH_C32(0x3a8a227e), SPH_C32(0xfe6b01ec),
+	  SPH_C32(0x16d3c000), SPH_C32(0xf3d50000), SPH_C32(0x7d1e0000),
+	  SPH_C32(0x30076abc), SPH_C32(0xf370943b), SPH_C32(0x7179cb68),
+	  SPH_C32(0xe3aed029) },
+	{ SPH_C32(0x140000c9), SPH_C32(0x29fa0000), SPH_C32(0xd1ac0000),
+	  SPH_C32(0x251e0000), SPH_C32(0xa12c44d8), SPH_C32(0x3656dacf),
+	  SPH_C32(0x6ee085bb), SPH_C32(0xdf876cdd), SPH_C32(0xdc8101e9),
+	  SPH_C32(0xaf58c000), SPH_C32(0x727d0000), SPH_C32(0xb80a0000),
+	  SPH_C32(0xed7e133d), SPH_C32(0x307cc7f9), SPH_C32(0x248ad675),
+	  SPH_C32(0xc37da938) },
+	{ SPH_C32(0xe28000cc), SPH_C32(0x1db9c000), SPH_C32(0xf5ab0000),
+	  SPH_C32(0xaa230000), SPH_C32(0x801b7f23), SPH_C32(0x3cee0f61),
+	  SPH_C32(0xa3250ea2), SPH_C32(0x0812d6ec), SPH_C32(0x7afe01e8),
+	  SPH_C32(0xde6f4000), SPH_C32(0x6b810000), SPH_C32(0x2ed10000),
+	  SPH_C32(0xd7f57ec0), SPH_C32(0xdbb6690a), SPH_C32(0x08e791fa),
+	  SPH_C32(0x6ff3c5b0) },
+	{ SPH_C32(0xb27f00c8), SPH_C32(0x58cd8000), SPH_C32(0xc8500000),
+	  SPH_C32(0xb3c50000), SPH_C32(0x9ba72925), SPH_C32(0xdd9c743c),
+	  SPH_C32(0x428dc234), SPH_C32(0x73090055), SPH_C32(0x8c7e01ed),
+	  SPH_C32(0xea2c8000), SPH_C32(0x4f860000), SPH_C32(0xa1ec0000),
+	  SPH_C32(0xf6c2453b), SPH_C32(0xd10ebca4), SPH_C32(0xc5221ae3),
+	  SPH_C32(0xb8667f81) },
+	{ SPH_C32(0x44ff00cd), SPH_C32(0x6c8e4000), SPH_C32(0xec570000),
+	  SPH_C32(0x3cf80000), SPH_C32(0xba9012de), SPH_C32(0xd724a192),
+	  SPH_C32(0x8f48492d), SPH_C32(0xa49cba64), SPH_C32(0x2a0101ec),
+	  SPH_C32(0x9b1b0000), SPH_C32(0x567a0000), SPH_C32(0x37370000),
+	  SPH_C32(0xcc4928c6), SPH_C32(0x3ac41257), SPH_C32(0xe94f5d6c),
+	  SPH_C32(0x14e81309) },
+	{ SPH_C32(0x5cb00110), SPH_C32(0x913e0000), SPH_C32(0x44190000),
+	  SPH_C32(0x888c0000), SPH_C32(0x66dc7418), SPH_C32(0x921f1d66),
+	  SPH_C32(0x55ceea25), SPH_C32(0x925c44e9), SPH_C32(0xe8870170),
+	  SPH_C32(0x9d720000), SPH_C32(0x12db0000), SPH_C32(0xd4220000),
+	  SPH_C32(0xf2886b27), SPH_C32(0xa921e543), SPH_C32(0x4ef8b518),
+	  SPH_C32(0x618813b1) },
+	{ SPH_C32(0xaa300115), SPH_C32(0xa57dc000), SPH_C32(0x601e0000),
+	  SPH_C32(0x07b10000), SPH_C32(0x47eb4fe3), SPH_C32(0x98a7c8c8),
+	  SPH_C32(0x980b613c), SPH_C32(0x45c9fed8), SPH_C32(0x4ef80171),
+	  SPH_C32(0xec458000), SPH_C32(0x0b270000), SPH_C32(0x42f90000),
+	  SPH_C32(0xc80306da), SPH_C32(0x42eb4bb0), SPH_C32(0x6295f297),
+	  SPH_C32(0xcd067f39) },
+	{ SPH_C32(0xfacf0111), SPH_C32(0xe0098000), SPH_C32(0x5de50000),
+	  SPH_C32(0x1e570000), SPH_C32(0x5c5719e5), SPH_C32(0x79d5b395),
+	  SPH_C32(0x79a3adaa), SPH_C32(0x3ed22861), SPH_C32(0xb8780174),
+	  SPH_C32(0xd8064000), SPH_C32(0x2f200000), SPH_C32(0xcdc40000),
+	  SPH_C32(0xe9343d21), SPH_C32(0x48539e1e), SPH_C32(0xaf50798e),
+	  SPH_C32(0x1a93c508) },
+	{ SPH_C32(0x0c4f0114), SPH_C32(0xd44a4000), SPH_C32(0x79e20000),
+	  SPH_C32(0x916a0000), SPH_C32(0x7d60221e), SPH_C32(0x736d663b),
+	  SPH_C32(0xb46626b3), SPH_C32(0xe9479250), SPH_C32(0x1e070175),
+	  SPH_C32(0xa931c000), SPH_C32(0x36dc0000), SPH_C32(0x5b1f0000),
+	  SPH_C32(0xd3bf50dc), SPH_C32(0xa39930ed), SPH_C32(0x833d3e01),
+	  SPH_C32(0xb61da980) },
+	{ SPH_C32(0xabc50119), SPH_C32(0x5e02c000), SPH_C32(0x87cf0000),
+	  SPH_C32(0x8c1e0000), SPH_C32(0x64496db1), SPH_C32(0x6af72bdc),
+	  SPH_C32(0x2f491b6b), SPH_C32(0x0c4adcf3), SPH_C32(0x3ced0170),
+	  SPH_C32(0x10bac000), SPH_C32(0xb7740000), SPH_C32(0x9e0b0000),
+	  SPH_C32(0x0ec6295d), SPH_C32(0x6095632f), SPH_C32(0xd6ce231c),
+	  SPH_C32(0x96ced091) },
+	{ SPH_C32(0x5d45011c), SPH_C32(0x6a410000), SPH_C32(0xa3c80000),
+	  SPH_C32(0x03230000), SPH_C32(0x457e564a), SPH_C32(0x604ffe72),
+	  SPH_C32(0xe28c9072), SPH_C32(0xdbdf66c2), SPH_C32(0x9a920171),
+	  SPH_C32(0x618d4000), SPH_C32(0xae880000), SPH_C32(0x08d00000),
+	  SPH_C32(0x344d44a0), SPH_C32(0x8b5fcddc), SPH_C32(0xfaa36493),
+	  SPH_C32(0x3a40bc19) },
+	{ SPH_C32(0x0dba0118), SPH_C32(0x2f354000), SPH_C32(0x9e330000),
+	  SPH_C32(0x1ac50000), SPH_C32(0x5ec2004c), SPH_C32(0x813d852f),
+	  SPH_C32(0x03245ce4), SPH_C32(0xa0c4b07b), SPH_C32(0x6c120174),
+	  SPH_C32(0x55ce8000), SPH_C32(0x8a8f0000), SPH_C32(0x87ed0000),
+	  SPH_C32(0x157a7f5b), SPH_C32(0x81e71872), SPH_C32(0x3766ef8a),
+	  SPH_C32(0xedd50628) },
+	{ SPH_C32(0xfb3a011d), SPH_C32(0x1b768000), SPH_C32(0xba340000),
+	  SPH_C32(0x95f80000), SPH_C32(0x7ff53bb7), SPH_C32(0x8b855081),
+	  SPH_C32(0xcee1d7fd), SPH_C32(0x77510a4a), SPH_C32(0xca6d0175),
+	  SPH_C32(0x24f90000), SPH_C32(0x93730000), SPH_C32(0x11360000),
+	  SPH_C32(0x2ff112a6), SPH_C32(0x6a2db681), SPH_C32(0x1b0ba805),
+	  SPH_C32(0x415b6aa0) },
+	{ SPH_C32(0x88da0110), SPH_C32(0x1cf6c000), SPH_C32(0xe1b60000),
+	  SPH_C32(0xc2a50000), SPH_C32(0x9a923662), SPH_C32(0x5bab9b0a),
+	  SPH_C32(0xcdf87c21), SPH_C32(0x651a87c9), SPH_C32(0xcb980179),
+	  SPH_C32(0xdf860000), SPH_C32(0x74a20000), SPH_C32(0x9a990000),
+	  SPH_C32(0x0c5330f4), SPH_C32(0x987d5595), SPH_C32(0xac49d252),
+	  SPH_C32(0x08d8488b) },
+	{ SPH_C32(0x7e5a0115), SPH_C32(0x28b50000), SPH_C32(0xc5b10000),
+	  SPH_C32(0x4d980000), SPH_C32(0xbba50d99), SPH_C32(0x51134ea4),
+	  SPH_C32(0x003df738), SPH_C32(0xb28f3df8), SPH_C32(0x6de70178),
+	  SPH_C32(0xaeb18000), SPH_C32(0x6d5e0000), SPH_C32(0x0c420000),
+	  SPH_C32(0x36d85d09), SPH_C32(0x73b7fb66), SPH_C32(0x802495dd),
+	  SPH_C32(0xa4562403) },
+	{ SPH_C32(0x2ea50111), SPH_C32(0x6dc14000), SPH_C32(0xf84a0000),
+	  SPH_C32(0x547e0000), SPH_C32(0xa0195b9f), SPH_C32(0xb06135f9),
+	  SPH_C32(0xe1953bae), SPH_C32(0xc994eb41), SPH_C32(0x9b67017d),
+	  SPH_C32(0x9af24000), SPH_C32(0x49590000), SPH_C32(0x837f0000),
+	  SPH_C32(0x17ef66f2), SPH_C32(0x790f2ec8), SPH_C32(0x4de11ec4),
+	  SPH_C32(0x73c39e32) },
+	{ SPH_C32(0xd8250114), SPH_C32(0x59828000), SPH_C32(0xdc4d0000),
+	  SPH_C32(0xdb430000), SPH_C32(0x812e6064), SPH_C32(0xbad9e057),
+	  SPH_C32(0x2c50b0b7), SPH_C32(0x1e015170), SPH_C32(0x3d18017c),
+	  SPH_C32(0xebc5c000), SPH_C32(0x50a50000), SPH_C32(0x15a40000),
+	  SPH_C32(0x2d640b0f), SPH_C32(0x92c5803b), SPH_C32(0x618c594b),
+	  SPH_C32(0xdf4df2ba) },
+	{ SPH_C32(0x7faf0119), SPH_C32(0xd3ca0000), SPH_C32(0x22600000),
+	  SPH_C32(0xc6370000), SPH_C32(0x98072fcb), SPH_C32(0xa343adb0),
+	  SPH_C32(0xb77f8d6f), SPH_C32(0xfb0c1fd3), SPH_C32(0x1ff20179),
+	  SPH_C32(0x524ec000), SPH_C32(0xd10d0000), SPH_C32(0xd0b00000),
+	  SPH_C32(0xf01d728e), SPH_C32(0x51c9d3f9), SPH_C32(0x347f4456),
+	  SPH_C32(0xff9e8bab) },
+	{ SPH_C32(0x892f011c), SPH_C32(0xe789c000), SPH_C32(0x06670000),
+	  SPH_C32(0x490a0000), SPH_C32(0xb9301430), SPH_C32(0xa9fb781e),
+	  SPH_C32(0x7aba0676), SPH_C32(0x2c99a5e2), SPH_C32(0xb98d0178),
+	  SPH_C32(0x23794000), SPH_C32(0xc8f10000), SPH_C32(0x466b0000),
+	  SPH_C32(0xca961f73), SPH_C32(0xba037d0a), SPH_C32(0x181203d9),
+	  SPH_C32(0x5310e723) },
+	{ SPH_C32(0xd9d00118), SPH_C32(0xa2fd8000), SPH_C32(0x3b9c0000),
+	  SPH_C32(0x50ec0000), SPH_C32(0xa28c4236), SPH_C32(0x48890343),
+	  SPH_C32(0x9b12cae0), SPH_C32(0x5782735b), SPH_C32(0x4f0d017d),
+	  SPH_C32(0x173a8000), SPH_C32(0xecf60000), SPH_C32(0xc9560000),
+	  SPH_C32(0xeba12488), SPH_C32(0xb0bba8a4), SPH_C32(0xd5d788c0),
+	  SPH_C32(0x84855d12) },
+	{ SPH_C32(0x2f50011d), SPH_C32(0x96be4000), SPH_C32(0x1f9b0000),
+	  SPH_C32(0xdfd10000), SPH_C32(0x83bb79cd), SPH_C32(0x4231d6ed),
+	  SPH_C32(0x56d741f9), SPH_C32(0x8017c96a), SPH_C32(0xe972017c),
+	  SPH_C32(0x660d0000), SPH_C32(0xf50a0000), SPH_C32(0x5f8d0000),
+	  SPH_C32(0xd12a4975), SPH_C32(0x5b710657), SPH_C32(0xf9bacf4f),
+	  SPH_C32(0x280b319a) },
+	{ SPH_C32(0x2bf401e0), SPH_C32(0x60640000), SPH_C32(0xb1ab0000),
+	  SPH_C32(0xbc980000), SPH_C32(0xefeb0a94), SPH_C32(0xc894f143),
+	  SPH_C32(0x5e0d273b), SPH_C32(0x5d6b3122), SPH_C32(0x1ceb0120),
+	  SPH_C32(0x0b6a0000), SPH_C32(0x067e0000), SPH_C32(0xd73d0000),
+	  SPH_C32(0xb01c159f), SPH_C32(0xcf9e9b5a), SPH_C32(0xd25cc5ca),
+	  SPH_C32(0xebbc06c5) },
+	{ SPH_C32(0xdd7401e5), SPH_C32(0x5427c000), SPH_C32(0x95ac0000),
+	  SPH_C32(0x33a50000), SPH_C32(0xcedc316f), SPH_C32(0xc22c24ed),
+	  SPH_C32(0x93c8ac22), SPH_C32(0x8afe8b13), SPH_C32(0xba940121),
+	  SPH_C32(0x7a5d8000), SPH_C32(0x1f820000), SPH_C32(0x41e60000),
+	  SPH_C32(0x8a977862), SPH_C32(0x245435a9), SPH_C32(0xfe318245),
+	  SPH_C32(0x47326a4d) },
+	{ SPH_C32(0x8d8b01e1), SPH_C32(0x11538000), SPH_C32(0xa8570000),
+	  SPH_C32(0x2a430000), SPH_C32(0xd5606769), SPH_C32(0x235e5fb0),
+	  SPH_C32(0x726060b4), SPH_C32(0xf1e55daa), SPH_C32(0x4c140124),
+	  SPH_C32(0x4e1e4000), SPH_C32(0x3b850000), SPH_C32(0xcedb0000),
+	  SPH_C32(0xaba04399), SPH_C32(0x2eece007), SPH_C32(0x33f4095c),
+	  SPH_C32(0x90a7d07c) },
+	{ SPH_C32(0x7b0b01e4), SPH_C32(0x25104000), SPH_C32(0x8c500000),
+	  SPH_C32(0xa57e0000), SPH_C32(0xf4575c92), SPH_C32(0x29e68a1e),
+	  SPH_C32(0xbfa5ebad), SPH_C32(0x2670e79b), SPH_C32(0xea6b0125),
+	  SPH_C32(0x3f29c000), SPH_C32(0x22790000), SPH_C32(0x58000000),
+	  SPH_C32(0x912b2e64), SPH_C32(0xc5264ef4), SPH_C32(0x1f994ed3),
+	  SPH_C32(0x3c29bcf4) },
+	{ SPH_C32(0xdc8101e9), SPH_C32(0xaf58c000), SPH_C32(0x727d0000),
+	  SPH_C32(0xb80a0000), SPH_C32(0xed7e133d), SPH_C32(0x307cc7f9),
+	  SPH_C32(0x248ad675), SPH_C32(0xc37da938), SPH_C32(0xc8810120),
+	  SPH_C32(0x86a2c000), SPH_C32(0xa3d10000), SPH_C32(0x9d140000),
+	  SPH_C32(0x4c5257e5), SPH_C32(0x062a1d36), SPH_C32(0x4a6a53ce),
+	  SPH_C32(0x1cfac5e5) },
+	{ SPH_C32(0x2a0101ec), SPH_C32(0x9b1b0000), SPH_C32(0x567a0000),
+	  SPH_C32(0x37370000), SPH_C32(0xcc4928c6), SPH_C32(0x3ac41257),
+	  SPH_C32(0xe94f5d6c), SPH_C32(0x14e81309), SPH_C32(0x6efe0121),
+	  SPH_C32(0xf7954000), SPH_C32(0xba2d0000), SPH_C32(0x0bcf0000),
+	  SPH_C32(0x76d93a18), SPH_C32(0xede0b3c5), SPH_C32(0x66071441),
+	  SPH_C32(0xb074a96d) },
+	{ SPH_C32(0x7afe01e8), SPH_C32(0xde6f4000), SPH_C32(0x6b810000),
+	  SPH_C32(0x2ed10000), SPH_C32(0xd7f57ec0), SPH_C32(0xdbb6690a),
+	  SPH_C32(0x08e791fa), SPH_C32(0x6ff3c5b0), SPH_C32(0x987e0124),
+	  SPH_C32(0xc3d68000), SPH_C32(0x9e2a0000), SPH_C32(0x84f20000),
+	  SPH_C32(0x57ee01e3), SPH_C32(0xe758666b), SPH_C32(0xabc29f58),
+	  SPH_C32(0x67e1135c) },
+	{ SPH_C32(0x8c7e01ed), SPH_C32(0xea2c8000), SPH_C32(0x4f860000),
+	  SPH_C32(0xa1ec0000), SPH_C32(0xf6c2453b), SPH_C32(0xd10ebca4),
+	  SPH_C32(0xc5221ae3), SPH_C32(0xb8667f81), SPH_C32(0x3e010125),
+	  SPH_C32(0xb2e10000), SPH_C32(0x87d60000), SPH_C32(0x12290000),
+	  SPH_C32(0x6d656c1e), SPH_C32(0x0c92c898), SPH_C32(0x87afd8d7),
+	  SPH_C32(0xcb6f7fd4) },
+	{ SPH_C32(0xff9e01e0), SPH_C32(0xedacc000), SPH_C32(0x14040000),
+	  SPH_C32(0xf6b10000), SPH_C32(0x13a548ee), SPH_C32(0x0120772f),
+	  SPH_C32(0xc63bb13f), SPH_C32(0xaa2df202), SPH_C32(0x3ff40129),
+	  SPH_C32(0x499e0000), SPH_C32(0x60070000), SPH_C32(0x99860000),
+	  SPH_C32(0x4ec74e4c), SPH_C32(0xfec22b8c), SPH_C32(0x30eda280),
+	  SPH_C32(0x82ec5dff) },
+	{ SPH_C32(0x091e01e5), SPH_C32(0xd9ef0000), SPH_C32(0x30030000),
+	  SPH_C32(0x798c0000), SPH_C32(0x32927315), SPH_C32(0x0b98a281),
+	  SPH_C32(0x0bfe3a26), SPH_C32(0x7db84833), SPH_C32(0x998b0128),
+	  SPH_C32(0x38a98000), SPH_C32(0x79fb0000), SPH_C32(0x0f5d0000),
+	  SPH_C32(0x744c23b1), SPH_C32(0x1508857f), SPH_C32(0x1c80e50f),
+	  SPH_C32(0x2e623177) },
+	{ SPH_C32(0x59e101e1), SPH_C32(0x9c9b4000), SPH_C32(0x0df80000),
+	  SPH_C32(0x606a0000), SPH_C32(0x292e2513), SPH_C32(0xeaead9dc),
+	  SPH_C32(0xea56f6b0), SPH_C32(0x06a39e8a), SPH_C32(0x6f0b012d),
+	  SPH_C32(0x0cea4000), SPH_C32(0x5dfc0000), SPH_C32(0x80600000),
+	  SPH_C32(0x557b184a), SPH_C32(0x1fb050d1), SPH_C32(0xd1456e16),
+	  SPH_C32(0xf9f78b46) },
+	{ SPH_C32(0xaf6101e4), SPH_C32(0xa8d88000), SPH_C32(0x29ff0000),
+	  SPH_C32(0xef570000), SPH_C32(0x08191ee8), SPH_C32(0xe0520c72),
+	  SPH_C32(0x27937da9), SPH_C32(0xd13624bb), SPH_C32(0xc974012c),
+	  SPH_C32(0x7dddc000), SPH_C32(0x44000000), SPH_C32(0x16bb0000),
+	  SPH_C32(0x6ff075b7), SPH_C32(0xf47afe22), SPH_C32(0xfd282999),
+	  SPH_C32(0x5579e7ce) },
+	{ SPH_C32(0x08eb01e9), SPH_C32(0x22900000), SPH_C32(0xd7d20000),
+	  SPH_C32(0xf2230000), SPH_C32(0x11305147), SPH_C32(0xf9c84195),
+	  SPH_C32(0xbcbc4071), SPH_C32(0x343b6a18), SPH_C32(0xeb9e0129),
+	  SPH_C32(0xc456c000), SPH_C32(0xc5a80000), SPH_C32(0xd3af0000),
+	  SPH_C32(0xb2890c36), SPH_C32(0x3776ade0), SPH_C32(0xa8db3484),
+	  SPH_C32(0x75aa9edf) },
+	{ SPH_C32(0xfe6b01ec), SPH_C32(0x16d3c000), SPH_C32(0xf3d50000),
+	  SPH_C32(0x7d1e0000), SPH_C32(0x30076abc), SPH_C32(0xf370943b),
+	  SPH_C32(0x7179cb68), SPH_C32(0xe3aed029), SPH_C32(0x4de10128),
+	  SPH_C32(0xb5614000), SPH_C32(0xdc540000), SPH_C32(0x45740000),
+	  SPH_C32(0x880261cb), SPH_C32(0xdcbc0313), SPH_C32(0x84b6730b),
+	  SPH_C32(0xd924f257) },
+	{ SPH_C32(0xae9401e8), SPH_C32(0x53a78000), SPH_C32(0xce2e0000),
+	  SPH_C32(0x64f80000), SPH_C32(0x2bbb3cba), SPH_C32(0x1202ef66),
+	  SPH_C32(0x90d107fe), SPH_C32(0x98b50690), SPH_C32(0xbb61012d),
+	  SPH_C32(0x81228000), SPH_C32(0xf8530000), SPH_C32(0xca490000),
+	  SPH_C32(0xa9355a30), SPH_C32(0xd604d6bd), SPH_C32(0x4973f812),
+	  SPH_C32(0x0eb14866) },
+	{ SPH_C32(0x581401ed), SPH_C32(0x67e44000), SPH_C32(0xea290000),
+	  SPH_C32(0xebc50000), SPH_C32(0x0a8c0741), SPH_C32(0x18ba3ac8),
+	  SPH_C32(0x5d148ce7), SPH_C32(0x4f20bca1), SPH_C32(0x1d1e012c),
+	  SPH_C32(0xf0150000), SPH_C32(0xe1af0000), SPH_C32(0x5c920000),
+	  SPH_C32(0x93be37cd), SPH_C32(0x3dce784e), SPH_C32(0x651ebf9d),
+	  SPH_C32(0xa23f24ee) },
+	{ SPH_C32(0xa8dc0140), SPH_C32(0x07260000), SPH_C32(0x50bc0000),
+	  SPH_C32(0x8b930000), SPH_C32(0x24480aa0), SPH_C32(0xf4a0637f),
+	  SPH_C32(0xc96a9af7), SPH_C32(0x1868519d), SPH_C32(0x6baf01d0),
+	  SPH_C32(0xfa300000), SPH_C32(0xf3cc0000), SPH_C32(0xe3290000),
+	  SPH_C32(0x392b6b13), SPH_C32(0x9515777f), SPH_C32(0xd99f08d4),
+	  SPH_C32(0x248b730e) },
+	{ SPH_C32(0x5e5c0145), SPH_C32(0x3365c000), SPH_C32(0x74bb0000),
+	  SPH_C32(0x04ae0000), SPH_C32(0x057f315b), SPH_C32(0xfe18b6d1),
+	  SPH_C32(0x04af11ee), SPH_C32(0xcffdebac), SPH_C32(0xcdd001d1),
+	  SPH_C32(0x8b078000), SPH_C32(0xea300000), SPH_C32(0x75f20000),
+	  SPH_C32(0x03a006ee), SPH_C32(0x7edfd98c), SPH_C32(0xf5f24f5b),
+	  SPH_C32(0x88051f86) },
+	{ SPH_C32(0x0ea30141), SPH_C32(0x76118000), SPH_C32(0x49400000),
+	  SPH_C32(0x1d480000), SPH_C32(0x1ec3675d), SPH_C32(0x1f6acd8c),
+	  SPH_C32(0xe507dd78), SPH_C32(0xb4e63d15), SPH_C32(0x3b5001d4),
+	  SPH_C32(0xbf444000), SPH_C32(0xce370000), SPH_C32(0xfacf0000),
+	  SPH_C32(0x22973d15), SPH_C32(0x74670c22), SPH_C32(0x3837c442),
+	  SPH_C32(0x5f90a5b7) },
+	{ SPH_C32(0xf8230144), SPH_C32(0x42524000), SPH_C32(0x6d470000),
+	  SPH_C32(0x92750000), SPH_C32(0x3ff45ca6), SPH_C32(0x15d21822),
+	  SPH_C32(0x28c25661), SPH_C32(0x63738724), SPH_C32(0x9d2f01d5),
+	  SPH_C32(0xce73c000), SPH_C32(0xd7cb0000), SPH_C32(0x6c140000),
+	  SPH_C32(0x181c50e8), SPH_C32(0x9fada2d1), SPH_C32(0x145a83cd),
+	  SPH_C32(0xf31ec93f) },
+	{ SPH_C32(0x5fa90149), SPH_C32(0xc81ac000), SPH_C32(0x936a0000),
+	  SPH_C32(0x8f010000), SPH_C32(0x26dd1309), SPH_C32(0x0c4855c5),
+	  SPH_C32(0xb3ed6bb9), SPH_C32(0x867ec987), SPH_C32(0xbfc501d0),
+	  SPH_C32(0x77f8c000), SPH_C32(0x56630000), SPH_C32(0xa9000000),
+	  SPH_C32(0xc5652969), SPH_C32(0x5ca1f113), SPH_C32(0x41a99ed0),
+	  SPH_C32(0xd3cdb02e) },
+	{ SPH_C32(0xa929014c), SPH_C32(0xfc590000), SPH_C32(0xb76d0000),
+	  SPH_C32(0x003c0000), SPH_C32(0x07ea28f2), SPH_C32(0x06f0806b),
+	  SPH_C32(0x7e28e0a0), SPH_C32(0x51eb73b6), SPH_C32(0x19ba01d1),
+	  SPH_C32(0x06cf4000), SPH_C32(0x4f9f0000), SPH_C32(0x3fdb0000),
+	  SPH_C32(0xffee4494), SPH_C32(0xb76b5fe0), SPH_C32(0x6dc4d95f),
+	  SPH_C32(0x7f43dca6) },
+	{ SPH_C32(0xf9d60148), SPH_C32(0xb92d4000), SPH_C32(0x8a960000),
+	  SPH_C32(0x19da0000), SPH_C32(0x1c567ef4), SPH_C32(0xe782fb36),
+	  SPH_C32(0x9f802c36), SPH_C32(0x2af0a50f), SPH_C32(0xef3a01d4),
+	  SPH_C32(0x328c8000), SPH_C32(0x6b980000), SPH_C32(0xb0e60000),
+	  SPH_C32(0xded97f6f), SPH_C32(0xbdd38a4e), SPH_C32(0xa0015246),
+	  SPH_C32(0xa8d66697) },
+	{ SPH_C32(0x0f56014d), SPH_C32(0x8d6e8000), SPH_C32(0xae910000),
+	  SPH_C32(0x96e70000), SPH_C32(0x3d61450f), SPH_C32(0xed3a2e98),
+	  SPH_C32(0x5245a72f), SPH_C32(0xfd651f3e), SPH_C32(0x494501d5),
+	  SPH_C32(0x43bb0000), SPH_C32(0x72640000), SPH_C32(0x263d0000),
+	  SPH_C32(0xe4521292), SPH_C32(0x561924bd), SPH_C32(0x8c6c15c9),
+	  SPH_C32(0x04580a1f) },
+	{ SPH_C32(0x7cb60140), SPH_C32(0x8aeec000), SPH_C32(0xf5130000),
+	  SPH_C32(0xc1ba0000), SPH_C32(0xd80648da), SPH_C32(0x3d14e513),
+	  SPH_C32(0x515c0cf3), SPH_C32(0xef2e92bd), SPH_C32(0x48b001d9),
+	  SPH_C32(0xb8c40000), SPH_C32(0x95b50000), SPH_C32(0xad920000),
+	  SPH_C32(0xc7f030c0), SPH_C32(0xa449c7a9), SPH_C32(0x3b2e6f9e),
+	  SPH_C32(0x4ddb2834) },
+	{ SPH_C32(0x8a360145), SPH_C32(0xbead0000), SPH_C32(0xd1140000),
+	  SPH_C32(0x4e870000), SPH_C32(0xf9317321), SPH_C32(0x37ac30bd),
+	  SPH_C32(0x9c9987ea), SPH_C32(0x38bb288c), SPH_C32(0xeecf01d8),
+	  SPH_C32(0xc9f38000), SPH_C32(0x8c490000), SPH_C32(0x3b490000),
+	  SPH_C32(0xfd7b5d3d), SPH_C32(0x4f83695a), SPH_C32(0x17432811),
+	  SPH_C32(0xe15544bc) },
+	{ SPH_C32(0xdac90141), SPH_C32(0xfbd94000), SPH_C32(0xecef0000),
+	  SPH_C32(0x57610000), SPH_C32(0xe28d2527), SPH_C32(0xd6de4be0),
+	  SPH_C32(0x7d314b7c), SPH_C32(0x43a0fe35), SPH_C32(0x184f01dd),
+	  SPH_C32(0xfdb04000), SPH_C32(0xa84e0000), SPH_C32(0xb4740000),
+	  SPH_C32(0xdc4c66c6), SPH_C32(0x453bbcf4), SPH_C32(0xda86a308),
+	  SPH_C32(0x36c0fe8d) },
+	{ SPH_C32(0x2c490144), SPH_C32(0xcf9a8000), SPH_C32(0xc8e80000),
+	  SPH_C32(0xd85c0000), SPH_C32(0xc3ba1edc), SPH_C32(0xdc669e4e),
+	  SPH_C32(0xb0f4c065), SPH_C32(0x94354404), SPH_C32(0xbe3001dc),
+	  SPH_C32(0x8c87c000), SPH_C32(0xb1b20000), SPH_C32(0x22af0000),
+	  SPH_C32(0xe6c70b3b), SPH_C32(0xaef11207), SPH_C32(0xf6ebe487),
+	  SPH_C32(0x9a4e9205) },
+	{ SPH_C32(0x8bc30149), SPH_C32(0x45d20000), SPH_C32(0x36c50000),
+	  SPH_C32(0xc5280000), SPH_C32(0xda935173), SPH_C32(0xc5fcd3a9),
+	  SPH_C32(0x2bdbfdbd), SPH_C32(0x71380aa7), SPH_C32(0x9cda01d9),
+	  SPH_C32(0x350cc000), SPH_C32(0x301a0000), SPH_C32(0xe7bb0000),
+	  SPH_C32(0x3bbe72ba), SPH_C32(0x6dfd41c5), SPH_C32(0xa318f99a),
+	  SPH_C32(0xba9deb14) },
+	{ SPH_C32(0x7d43014c), SPH_C32(0x7191c000), SPH_C32(0x12c20000),
+	  SPH_C32(0x4a150000), SPH_C32(0xfba46a88), SPH_C32(0xcf440607),
+	  SPH_C32(0xe61e76a4), SPH_C32(0xa6adb096), SPH_C32(0x3aa501d8),
+	  SPH_C32(0x443b4000), SPH_C32(0x29e60000), SPH_C32(0x71600000),
+	  SPH_C32(0x01351f47), SPH_C32(0x8637ef36), SPH_C32(0x8f75be15),
+	  SPH_C32(0x1613879c) },
+	{ SPH_C32(0x2dbc0148), SPH_C32(0x34e58000), SPH_C32(0x2f390000),
+	  SPH_C32(0x53f30000), SPH_C32(0xe0183c8e), SPH_C32(0x2e367d5a),
+	  SPH_C32(0x07b6ba32), SPH_C32(0xddb6662f), SPH_C32(0xcc2501dd),
+	  SPH_C32(0x70788000), SPH_C32(0x0de10000), SPH_C32(0xfe5d0000),
+	  SPH_C32(0x200224bc), SPH_C32(0x8c8f3a98), SPH_C32(0x42b0350c),
+	  SPH_C32(0xc1863dad) },
+	{ SPH_C32(0xdb3c014d), SPH_C32(0x00a64000), SPH_C32(0x0b3e0000),
+	  SPH_C32(0xdcce0000), SPH_C32(0xc12f0775), SPH_C32(0x248ea8f4),
+	  SPH_C32(0xca73312b), SPH_C32(0x0a23dc1e), SPH_C32(0x6a5a01dc),
+	  SPH_C32(0x014f0000), SPH_C32(0x141d0000), SPH_C32(0x68860000),
+	  SPH_C32(0x1a894941), SPH_C32(0x6745946b), SPH_C32(0x6edd7283),
+	  SPH_C32(0x6d085125) },
+	{ SPH_C32(0xdf9801b0), SPH_C32(0xf67c0000), SPH_C32(0xa50e0000),
+	  SPH_C32(0xbf870000), SPH_C32(0xad7f742c), SPH_C32(0xae2b8f5a),
+	  SPH_C32(0xc2a957e9), SPH_C32(0xd75f2456), SPH_C32(0x9fc30180),
+	  SPH_C32(0x6c280000), SPH_C32(0xe7690000), SPH_C32(0xe0360000),
+	  SPH_C32(0x7bbf15ab), SPH_C32(0xf3aa0966), SPH_C32(0x453b7806),
+	  SPH_C32(0xaebf667a) },
+	{ SPH_C32(0x291801b5), SPH_C32(0xc23fc000), SPH_C32(0x81090000),
+	  SPH_C32(0x30ba0000), SPH_C32(0x8c484fd7), SPH_C32(0xa4935af4),
+	  SPH_C32(0x0f6cdcf0), SPH_C32(0x00ca9e67), SPH_C32(0x39bc0181),
+	  SPH_C32(0x1d1f8000), SPH_C32(0xfe950000), SPH_C32(0x76ed0000),
+	  SPH_C32(0x41347856), SPH_C32(0x1860a795), SPH_C32(0x69563f89),
+	  SPH_C32(0x02310af2) },
+	{ SPH_C32(0x79e701b1), SPH_C32(0x874b8000), SPH_C32(0xbcf20000),
+	  SPH_C32(0x295c0000), SPH_C32(0x97f419d1), SPH_C32(0x45e121a9),
+	  SPH_C32(0xeec41066), SPH_C32(0x7bd148de), SPH_C32(0xcf3c0184),
+	  SPH_C32(0x295c4000), SPH_C32(0xda920000), SPH_C32(0xf9d00000),
+	  SPH_C32(0x600343ad), SPH_C32(0x12d8723b), SPH_C32(0xa493b490),
+	  SPH_C32(0xd5a4b0c3) },
+	{ SPH_C32(0x8f6701b4), SPH_C32(0xb3084000), SPH_C32(0x98f50000),
+	  SPH_C32(0xa6610000), SPH_C32(0xb6c3222a), SPH_C32(0x4f59f407),
+	  SPH_C32(0x23019b7f), SPH_C32(0xac44f2ef), SPH_C32(0x69430185),
+	  SPH_C32(0x586bc000), SPH_C32(0xc36e0000), SPH_C32(0x6f0b0000),
+	  SPH_C32(0x5a882e50), SPH_C32(0xf912dcc8), SPH_C32(0x88fef31f),
+	  SPH_C32(0x792adc4b) },
+	{ SPH_C32(0x28ed01b9), SPH_C32(0x3940c000), SPH_C32(0x66d80000),
+	  SPH_C32(0xbb150000), SPH_C32(0xafea6d85), SPH_C32(0x56c3b9e0),
+	  SPH_C32(0xb82ea6a7), SPH_C32(0x4949bc4c), SPH_C32(0x4ba90180),
+	  SPH_C32(0xe1e0c000), SPH_C32(0x42c60000), SPH_C32(0xaa1f0000),
+	  SPH_C32(0x87f157d1), SPH_C32(0x3a1e8f0a), SPH_C32(0xdd0dee02),
+	  SPH_C32(0x59f9a55a) },
+	{ SPH_C32(0xde6d01bc), SPH_C32(0x0d030000), SPH_C32(0x42df0000),
+	  SPH_C32(0x34280000), SPH_C32(0x8edd567e), SPH_C32(0x5c7b6c4e),
+	  SPH_C32(0x75eb2dbe), SPH_C32(0x9edc067d), SPH_C32(0xedd60181),
+	  SPH_C32(0x90d74000), SPH_C32(0x5b3a0000), SPH_C32(0x3cc40000),
+	  SPH_C32(0xbd7a3a2c), SPH_C32(0xd1d421f9), SPH_C32(0xf160a98d),
+	  SPH_C32(0xf577c9d2) },
+	{ SPH_C32(0x8e9201b8), SPH_C32(0x48774000), SPH_C32(0x7f240000),
+	  SPH_C32(0x2dce0000), SPH_C32(0x95610078), SPH_C32(0xbd091713),
+	  SPH_C32(0x9443e128), SPH_C32(0xe5c7d0c4), SPH_C32(0x1b560184),
+	  SPH_C32(0xa4948000), SPH_C32(0x7f3d0000), SPH_C32(0xb3f90000),
+	  SPH_C32(0x9c4d01d7), SPH_C32(0xdb6cf457), SPH_C32(0x3ca52294),
+	  SPH_C32(0x22e273e3) },
+	{ SPH_C32(0x781201bd), SPH_C32(0x7c348000), SPH_C32(0x5b230000),
+	  SPH_C32(0xa2f30000), SPH_C32(0xb4563b83), SPH_C32(0xb7b1c2bd),
+	  SPH_C32(0x59866a31), SPH_C32(0x32526af5), SPH_C32(0xbd290185),
+	  SPH_C32(0xd5a30000), SPH_C32(0x66c10000), SPH_C32(0x25220000),
+	  SPH_C32(0xa6c66c2a), SPH_C32(0x30a65aa4), SPH_C32(0x10c8651b),
+	  SPH_C32(0x8e6c1f6b) },
+	{ SPH_C32(0x0bf201b0), SPH_C32(0x7bb4c000), SPH_C32(0x00a10000),
+	  SPH_C32(0xf5ae0000), SPH_C32(0x51313656), SPH_C32(0x679f0936),
+	  SPH_C32(0x5a9fc1ed), SPH_C32(0x2019e776), SPH_C32(0xbcdc0189),
+	  SPH_C32(0x2edc0000), SPH_C32(0x81100000), SPH_C32(0xae8d0000),
+	  SPH_C32(0x85644e78), SPH_C32(0xc2f6b9b0), SPH_C32(0xa78a1f4c),
+	  SPH_C32(0xc7ef3d40) },
+	{ SPH_C32(0xfd7201b5), SPH_C32(0x4ff70000), SPH_C32(0x24a60000),
+	  SPH_C32(0x7a930000), SPH_C32(0x70060dad), SPH_C32(0x6d27dc98),
+	  SPH_C32(0x975a4af4), SPH_C32(0xf78c5d47), SPH_C32(0x1aa30188),
+	  SPH_C32(0x5feb8000), SPH_C32(0x98ec0000), SPH_C32(0x38560000),
+	  SPH_C32(0xbfef2385), SPH_C32(0x293c1743), SPH_C32(0x8be758c3),
+	  SPH_C32(0x6b6151c8) },
+	{ SPH_C32(0xad8d01b1), SPH_C32(0x0a834000), SPH_C32(0x195d0000),
+	  SPH_C32(0x63750000), SPH_C32(0x6bba5bab), SPH_C32(0x8c55a7c5),
+	  SPH_C32(0x76f28662), SPH_C32(0x8c978bfe), SPH_C32(0xec23018d),
+	  SPH_C32(0x6ba84000), SPH_C32(0xbceb0000), SPH_C32(0xb76b0000),
+	  SPH_C32(0x9ed8187e), SPH_C32(0x2384c2ed), SPH_C32(0x4622d3da),
+	  SPH_C32(0xbcf4ebf9) },
+	{ SPH_C32(0x5b0d01b4), SPH_C32(0x3ec08000), SPH_C32(0x3d5a0000),
+	  SPH_C32(0xec480000), SPH_C32(0x4a8d6050), SPH_C32(0x86ed726b),
+	  SPH_C32(0xbb370d7b), SPH_C32(0x5b0231cf), SPH_C32(0x4a5c018c),
+	  SPH_C32(0x1a9fc000), SPH_C32(0xa5170000), SPH_C32(0x21b00000),
+	  SPH_C32(0xa4537583), SPH_C32(0xc84e6c1e), SPH_C32(0x6a4f9455),
+	  SPH_C32(0x107a8771) },
+	{ SPH_C32(0xfc8701b9), SPH_C32(0xb4880000), SPH_C32(0xc3770000),
+	  SPH_C32(0xf13c0000), SPH_C32(0x53a42fff), SPH_C32(0x9f773f8c),
+	  SPH_C32(0x201830a3), SPH_C32(0xbe0f7f6c), SPH_C32(0x68b60189),
+	  SPH_C32(0xa314c000), SPH_C32(0x24bf0000), SPH_C32(0xe4a40000),
+	  SPH_C32(0x792a0c02), SPH_C32(0x0b423fdc), SPH_C32(0x3fbc8948),
+	  SPH_C32(0x30a9fe60) },
+	{ SPH_C32(0x0a0701bc), SPH_C32(0x80cbc000), SPH_C32(0xe7700000),
+	  SPH_C32(0x7e010000), SPH_C32(0x72931404), SPH_C32(0x95cfea22),
+	  SPH_C32(0xedddbbba), SPH_C32(0x699ac55d), SPH_C32(0xcec90188),
+	  SPH_C32(0xd2234000), SPH_C32(0x3d430000), SPH_C32(0x727f0000),
+	  SPH_C32(0x43a161ff), SPH_C32(0xe088912f), SPH_C32(0x13d1cec7),
+	  SPH_C32(0x9c2792e8) },
+	{ SPH_C32(0x5af801b8), SPH_C32(0xc5bf8000), SPH_C32(0xda8b0000),
+	  SPH_C32(0x67e70000), SPH_C32(0x692f4202), SPH_C32(0x74bd917f),
+	  SPH_C32(0x0c75772c), SPH_C32(0x128113e4), SPH_C32(0x3849018d),
+	  SPH_C32(0xe6608000), SPH_C32(0x19440000), SPH_C32(0xfd420000),
+	  SPH_C32(0x62965a04), SPH_C32(0xea304481), SPH_C32(0xde1445de),
+	  SPH_C32(0x4bb228d9) },
+	{ SPH_C32(0xac7801bd), SPH_C32(0xf1fc4000), SPH_C32(0xfe8c0000),
+	  SPH_C32(0xe8da0000), SPH_C32(0x481879f9), SPH_C32(0x7e0544d1),
+	  SPH_C32(0xc1b0fc35), SPH_C32(0xc514a9d5), SPH_C32(0x9e36018c),
+	  SPH_C32(0x97570000), SPH_C32(0x00b80000), SPH_C32(0x6b990000),
+	  SPH_C32(0x581d37f9), SPH_C32(0x01faea72), SPH_C32(0xf2790251),
+	  SPH_C32(0xe73c4451) }
+};
+
+static const sph_u32 T512_16[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x0c720000), SPH_C32(0x49e50f00), SPH_C32(0x42790000),
+	  SPH_C32(0x5cea0000), SPH_C32(0x33aa301a), SPH_C32(0x15822514),
+	  SPH_C32(0x95a34b7b), SPH_C32(0xb44b0090), SPH_C32(0xfe220000),
+	  SPH_C32(0xa7580500), SPH_C32(0x25d10000), SPH_C32(0xf7600000),
+	  SPH_C32(0x893178da), SPH_C32(0x1fd4f860), SPH_C32(0x4ed0a315),
+	  SPH_C32(0xa123ff9f) },
+	{ SPH_C32(0xfe220000), SPH_C32(0xa7580500), SPH_C32(0x25d10000),
+	  SPH_C32(0xf7600000), SPH_C32(0x893178da), SPH_C32(0x1fd4f860),
+	  SPH_C32(0x4ed0a315), SPH_C32(0xa123ff9f), SPH_C32(0xf2500000),
+	  SPH_C32(0xeebd0a00), SPH_C32(0x67a80000), SPH_C32(0xab8a0000),
+	  SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74), SPH_C32(0xdb73e86e),
+	  SPH_C32(0x1568ff0f) },
+	{ SPH_C32(0xf2500000), SPH_C32(0xeebd0a00), SPH_C32(0x67a80000),
+	  SPH_C32(0xab8a0000), SPH_C32(0xba9b48c0), SPH_C32(0x0a56dd74),
+	  SPH_C32(0xdb73e86e), SPH_C32(0x1568ff0f), SPH_C32(0x0c720000),
+	  SPH_C32(0x49e50f00), SPH_C32(0x42790000), SPH_C32(0x5cea0000),
+	  SPH_C32(0x33aa301a), SPH_C32(0x15822514), SPH_C32(0x95a34b7b),
+	  SPH_C32(0xb44b0090) },
+	{ SPH_C32(0x45180000), SPH_C32(0xa5b51700), SPH_C32(0xf96a0000),
+	  SPH_C32(0x3b480000), SPH_C32(0x1ecc142c), SPH_C32(0x231395d6),
+	  SPH_C32(0x16bca6b0), SPH_C32(0xdf33f4df), SPH_C32(0xb83d0000),
+	  SPH_C32(0x16710600), SPH_C32(0x379a0000), SPH_C32(0xf5b10000),
+	  SPH_C32(0x228161ac), SPH_C32(0xae48f145), SPH_C32(0x66241616),
+	  SPH_C32(0xc5c1eb3e) },
+	{ SPH_C32(0x496a0000), SPH_C32(0xec501800), SPH_C32(0xbb130000),
+	  SPH_C32(0x67a20000), SPH_C32(0x2d662436), SPH_C32(0x3691b0c2),
+	  SPH_C32(0x831fedcb), SPH_C32(0x6b78f44f), SPH_C32(0x461f0000),
+	  SPH_C32(0xb1290300), SPH_C32(0x124b0000), SPH_C32(0x02d10000),
+	  SPH_C32(0xabb01976), SPH_C32(0xb19c0925), SPH_C32(0x28f4b503),
+	  SPH_C32(0x64e214a1) },
+	{ SPH_C32(0xbb3a0000), SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000),
+	  SPH_C32(0xcc280000), SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6),
+	  SPH_C32(0x586c05a5), SPH_C32(0x7e100b40), SPH_C32(0x4a6d0000),
+	  SPH_C32(0xf8cc0c00), SPH_C32(0x50320000), SPH_C32(0x5e3b0000),
+	  SPH_C32(0x981a296c), SPH_C32(0xa41e2c31), SPH_C32(0xbd57fe78),
+	  SPH_C32(0xd0a91431) },
+	{ SPH_C32(0xb7480000), SPH_C32(0x4b081d00), SPH_C32(0x9ec20000),
+	  SPH_C32(0x90c20000), SPH_C32(0xa4575cec), SPH_C32(0x294548a2),
+	  SPH_C32(0xcdcf4ede), SPH_C32(0xca5b0bd0), SPH_C32(0xb44f0000),
+	  SPH_C32(0x5f940900), SPH_C32(0x75e30000), SPH_C32(0xa95b0000),
+	  SPH_C32(0x112b51b6), SPH_C32(0xbbcad451), SPH_C32(0xf3875d6d),
+	  SPH_C32(0x718aebae) },
+	{ SPH_C32(0xb83d0000), SPH_C32(0x16710600), SPH_C32(0x379a0000),
+	  SPH_C32(0xf5b10000), SPH_C32(0x228161ac), SPH_C32(0xae48f145),
+	  SPH_C32(0x66241616), SPH_C32(0xc5c1eb3e), SPH_C32(0xfd250000),
+	  SPH_C32(0xb3c41100), SPH_C32(0xcef00000), SPH_C32(0xcef90000),
+	  SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493), SPH_C32(0x7098b0a6),
+	  SPH_C32(0x1af21fe1) },
+	{ SPH_C32(0xb44f0000), SPH_C32(0x5f940900), SPH_C32(0x75e30000),
+	  SPH_C32(0xa95b0000), SPH_C32(0x112b51b6), SPH_C32(0xbbcad451),
+	  SPH_C32(0xf3875d6d), SPH_C32(0x718aebae), SPH_C32(0x03070000),
+	  SPH_C32(0x149c1400), SPH_C32(0xeb210000), SPH_C32(0x39990000),
+	  SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3), SPH_C32(0x3e4813b3),
+	  SPH_C32(0xbbd1e07e) },
+	{ SPH_C32(0x461f0000), SPH_C32(0xb1290300), SPH_C32(0x124b0000),
+	  SPH_C32(0x02d10000), SPH_C32(0xabb01976), SPH_C32(0xb19c0925),
+	  SPH_C32(0x28f4b503), SPH_C32(0x64e214a1), SPH_C32(0x0f750000),
+	  SPH_C32(0x5d791b00), SPH_C32(0xa9580000), SPH_C32(0x65730000),
+	  SPH_C32(0x86d63d40), SPH_C32(0x870db9e7), SPH_C32(0xabeb58c8),
+	  SPH_C32(0x0f9ae0ee) },
+	{ SPH_C32(0x4a6d0000), SPH_C32(0xf8cc0c00), SPH_C32(0x50320000),
+	  SPH_C32(0x5e3b0000), SPH_C32(0x981a296c), SPH_C32(0xa41e2c31),
+	  SPH_C32(0xbd57fe78), SPH_C32(0xd0a91431), SPH_C32(0xf1570000),
+	  SPH_C32(0xfa211e00), SPH_C32(0x8c890000), SPH_C32(0x92130000),
+	  SPH_C32(0x0fe7459a), SPH_C32(0x98d94187), SPH_C32(0xe53bfbdd),
+	  SPH_C32(0xaeb91f71) },
+	{ SPH_C32(0xfd250000), SPH_C32(0xb3c41100), SPH_C32(0xcef00000),
+	  SPH_C32(0xcef90000), SPH_C32(0x3c4d7580), SPH_C32(0x8d5b6493),
+	  SPH_C32(0x7098b0a6), SPH_C32(0x1af21fe1), SPH_C32(0x45180000),
+	  SPH_C32(0xa5b51700), SPH_C32(0xf96a0000), SPH_C32(0x3b480000),
+	  SPH_C32(0x1ecc142c), SPH_C32(0x231395d6), SPH_C32(0x16bca6b0),
+	  SPH_C32(0xdf33f4df) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfa211e00), SPH_C32(0x8c890000),
+	  SPH_C32(0x92130000), SPH_C32(0x0fe7459a), SPH_C32(0x98d94187),
+	  SPH_C32(0xe53bfbdd), SPH_C32(0xaeb91f71), SPH_C32(0xbb3a0000),
+	  SPH_C32(0x02ed1200), SPH_C32(0xdcbb0000), SPH_C32(0xcc280000),
+	  SPH_C32(0x97fd6cf6), SPH_C32(0x3cc76db6), SPH_C32(0x586c05a5),
+	  SPH_C32(0x7e100b40) },
+	{ SPH_C32(0x03070000), SPH_C32(0x149c1400), SPH_C32(0xeb210000),
+	  SPH_C32(0x39990000), SPH_C32(0xb57c0d5a), SPH_C32(0x928f9cf3),
+	  SPH_C32(0x3e4813b3), SPH_C32(0xbbd1e07e), SPH_C32(0xb7480000),
+	  SPH_C32(0x4b081d00), SPH_C32(0x9ec20000), SPH_C32(0x90c20000),
+	  SPH_C32(0xa4575cec), SPH_C32(0x294548a2), SPH_C32(0xcdcf4ede),
+	  SPH_C32(0xca5b0bd0) },
+	{ SPH_C32(0x0f750000), SPH_C32(0x5d791b00), SPH_C32(0xa9580000),
+	  SPH_C32(0x65730000), SPH_C32(0x86d63d40), SPH_C32(0x870db9e7),
+	  SPH_C32(0xabeb58c8), SPH_C32(0x0f9ae0ee), SPH_C32(0x496a0000),
+	  SPH_C32(0xec501800), SPH_C32(0xbb130000), SPH_C32(0x67a20000),
+	  SPH_C32(0x2d662436), SPH_C32(0x3691b0c2), SPH_C32(0x831fedcb),
+	  SPH_C32(0x6b78f44f) },
+	{ SPH_C32(0x75a40000), SPH_C32(0xc28b2700), SPH_C32(0x94a40000),
+	  SPH_C32(0x90f50000), SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae),
+	  SPH_C32(0x1767c483), SPH_C32(0xaedf667e), SPH_C32(0xd1660000),
+	  SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000), SPH_C32(0xf6940000),
+	  SPH_C32(0x03024527), SPH_C32(0xcf70fcf2), SPH_C32(0xb4431b17),
+	  SPH_C32(0x857f3c2b) },
+	{ SPH_C32(0x79d60000), SPH_C32(0x8b6e2800), SPH_C32(0xd6dd0000),
+	  SPH_C32(0xcc1f0000), SPH_C32(0xc8d267fa), SPH_C32(0x5c4c2eba),
+	  SPH_C32(0x82c48ff8), SPH_C32(0x1a9466ee), SPH_C32(0x2f440000),
+	  SPH_C32(0xbce40600), SPH_C32(0xbb3d0000), SPH_C32(0x01f40000),
+	  SPH_C32(0x8a333dfd), SPH_C32(0xd0a40492), SPH_C32(0xfa93b802),
+	  SPH_C32(0x245cc3b4) },
+	{ SPH_C32(0x8b860000), SPH_C32(0x65d32200), SPH_C32(0xb1750000),
+	  SPH_C32(0x67950000), SPH_C32(0x72492f3a), SPH_C32(0x561af3ce),
+	  SPH_C32(0x59b76796), SPH_C32(0x0ffc99e1), SPH_C32(0x23360000),
+	  SPH_C32(0xf5010900), SPH_C32(0xf9440000), SPH_C32(0x5d1e0000),
+	  SPH_C32(0xb9990de7), SPH_C32(0xc5262186), SPH_C32(0x6f30f379),
+	  SPH_C32(0x9017c324) },
+	{ SPH_C32(0x87f40000), SPH_C32(0x2c362d00), SPH_C32(0xf30c0000),
+	  SPH_C32(0x3b7f0000), SPH_C32(0x41e31f20), SPH_C32(0x4398d6da),
+	  SPH_C32(0xcc142ced), SPH_C32(0xbbb79971), SPH_C32(0xdd140000),
+	  SPH_C32(0x52590c00), SPH_C32(0xdc950000), SPH_C32(0xaa7e0000),
+	  SPH_C32(0x30a8753d), SPH_C32(0xdaf2d9e6), SPH_C32(0x21e0506c),
+	  SPH_C32(0x31343cbb) },
+	{ SPH_C32(0x30bc0000), SPH_C32(0x673e3000), SPH_C32(0x6dce0000),
+	  SPH_C32(0xabbd0000), SPH_C32(0xe5b443cc), SPH_C32(0x6add9e78),
+	  SPH_C32(0x01db6233), SPH_C32(0x71ec92a1), SPH_C32(0x695b0000),
+	  SPH_C32(0x0dcd0500), SPH_C32(0xa9760000), SPH_C32(0x03250000),
+	  SPH_C32(0x2183248b), SPH_C32(0x61380db7), SPH_C32(0xd2670d01),
+	  SPH_C32(0x40bed715) },
+	{ SPH_C32(0x3cce0000), SPH_C32(0x2edb3f00), SPH_C32(0x2fb70000),
+	  SPH_C32(0xf7570000), SPH_C32(0xd61e73d6), SPH_C32(0x7f5fbb6c),
+	  SPH_C32(0x94782948), SPH_C32(0xc5a79231), SPH_C32(0x97790000),
+	  SPH_C32(0xaa950000), SPH_C32(0x8ca70000), SPH_C32(0xf4450000),
+	  SPH_C32(0xa8b25c51), SPH_C32(0x7eecf5d7), SPH_C32(0x9cb7ae14),
+	  SPH_C32(0xe19d288a) },
+	{ SPH_C32(0xce9e0000), SPH_C32(0xc0663500), SPH_C32(0x481f0000),
+	  SPH_C32(0x5cdd0000), SPH_C32(0x6c853b16), SPH_C32(0x75096618),
+	  SPH_C32(0x4f0bc126), SPH_C32(0xd0cf6d3e), SPH_C32(0x9b0b0000),
+	  SPH_C32(0xe3700f00), SPH_C32(0xcede0000), SPH_C32(0xa8af0000),
+	  SPH_C32(0x9b186c4b), SPH_C32(0x6b6ed0c3), SPH_C32(0x0914e56f),
+	  SPH_C32(0x55d6281a) },
+	{ SPH_C32(0xc2ec0000), SPH_C32(0x89833a00), SPH_C32(0x0a660000),
+	  SPH_C32(0x00370000), SPH_C32(0x5f2f0b0c), SPH_C32(0x608b430c),
+	  SPH_C32(0xdaa88a5d), SPH_C32(0x64846dae), SPH_C32(0x65290000),
+	  SPH_C32(0x44280a00), SPH_C32(0xeb0f0000), SPH_C32(0x5fcf0000),
+	  SPH_C32(0x12291491), SPH_C32(0x74ba28a3), SPH_C32(0x47c4467a),
+	  SPH_C32(0xf4f5d785) },
+	{ SPH_C32(0xcd990000), SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000),
+	  SPH_C32(0x65440000), SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb),
+	  SPH_C32(0x7143d295), SPH_C32(0x6b1e8d40), SPH_C32(0x2c430000),
+	  SPH_C32(0xa8781200), SPH_C32(0x501c0000), SPH_C32(0x386d0000),
+	  SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861), SPH_C32(0xc4dbabb1),
+	  SPH_C32(0x9f8d23ca) },
+	{ SPH_C32(0xc1eb0000), SPH_C32(0x9d1f2e00), SPH_C32(0xe1470000),
+	  SPH_C32(0x39ae0000), SPH_C32(0xea530656), SPH_C32(0xf204dfff),
+	  SPH_C32(0xe4e099ee), SPH_C32(0xdf558dd0), SPH_C32(0xd2610000),
+	  SPH_C32(0x0f201700), SPH_C32(0x75cd0000), SPH_C32(0xcf0d0000),
+	  SPH_C32(0xb67e487d), SPH_C32(0x5dff6001), SPH_C32(0x8a0b08a4),
+	  SPH_C32(0x3eaedc55) },
+	{ SPH_C32(0x33bb0000), SPH_C32(0x73a22400), SPH_C32(0x86ef0000),
+	  SPH_C32(0x92240000), SPH_C32(0x50c84e96), SPH_C32(0xf852028b),
+	  SPH_C32(0x3f937180), SPH_C32(0xca3d72df), SPH_C32(0xde130000),
+	  SPH_C32(0x46c51800), SPH_C32(0x37b40000), SPH_C32(0x93e70000),
+	  SPH_C32(0x85d47867), SPH_C32(0x487d4515), SPH_C32(0x1fa843df),
+	  SPH_C32(0x8ae5dcc5) },
+	{ SPH_C32(0x3fc90000), SPH_C32(0x3a472b00), SPH_C32(0xc4960000),
+	  SPH_C32(0xcece0000), SPH_C32(0x63627e8c), SPH_C32(0xedd0279f),
+	  SPH_C32(0xaa303afb), SPH_C32(0x7e76724f), SPH_C32(0x20310000),
+	  SPH_C32(0xe19d1d00), SPH_C32(0x12650000), SPH_C32(0x64870000),
+	  SPH_C32(0x0ce500bd), SPH_C32(0x57a9bd75), SPH_C32(0x5178e0ca),
+	  SPH_C32(0x2bc6235a) },
+	{ SPH_C32(0x88810000), SPH_C32(0x714f3600), SPH_C32(0x5a540000),
+	  SPH_C32(0x5e0c0000), SPH_C32(0xc7352260), SPH_C32(0xc4956f3d),
+	  SPH_C32(0x67ff7425), SPH_C32(0xb42d799f), SPH_C32(0x947e0000),
+	  SPH_C32(0xbe091400), SPH_C32(0x67860000), SPH_C32(0xcddc0000),
+	  SPH_C32(0x1dce510b), SPH_C32(0xec636924), SPH_C32(0xa2ffbda7),
+	  SPH_C32(0x5a4cc8f4) },
+	{ SPH_C32(0x84f30000), SPH_C32(0x38aa3900), SPH_C32(0x182d0000),
+	  SPH_C32(0x02e60000), SPH_C32(0xf49f127a), SPH_C32(0xd1174a29),
+	  SPH_C32(0xf25c3f5e), SPH_C32(0x0066790f), SPH_C32(0x6a5c0000),
+	  SPH_C32(0x19511100), SPH_C32(0x42570000), SPH_C32(0x3abc0000),
+	  SPH_C32(0x94ff29d1), SPH_C32(0xf3b79144), SPH_C32(0xec2f1eb2),
+	  SPH_C32(0xfb6f376b) },
+	{ SPH_C32(0x76a30000), SPH_C32(0xd6173300), SPH_C32(0x7f850000),
+	  SPH_C32(0xa96c0000), SPH_C32(0x4e045aba), SPH_C32(0xdb41975d),
+	  SPH_C32(0x292fd730), SPH_C32(0x150e8600), SPH_C32(0x662e0000),
+	  SPH_C32(0x50b41e00), SPH_C32(0x002e0000), SPH_C32(0x66560000),
+	  SPH_C32(0xa75519cb), SPH_C32(0xe635b450), SPH_C32(0x798c55c9),
+	  SPH_C32(0x4f2437fb) },
+	{ SPH_C32(0x7ad10000), SPH_C32(0x9ff23c00), SPH_C32(0x3dfc0000),
+	  SPH_C32(0xf5860000), SPH_C32(0x7dae6aa0), SPH_C32(0xcec3b249),
+	  SPH_C32(0xbc8c9c4b), SPH_C32(0xa1458690), SPH_C32(0x980c0000),
+	  SPH_C32(0xf7ec1b00), SPH_C32(0x25ff0000), SPH_C32(0x91360000),
+	  SPH_C32(0x2e646111), SPH_C32(0xf9e14c30), SPH_C32(0x375cf6dc),
+	  SPH_C32(0xee07c864) },
+	{ SPH_C32(0xd1660000), SPH_C32(0x1bbc0300), SPH_C32(0x9eec0000),
+	  SPH_C32(0xf6940000), SPH_C32(0x03024527), SPH_C32(0xcf70fcf2),
+	  SPH_C32(0xb4431b17), SPH_C32(0x857f3c2b), SPH_C32(0xa4c20000),
+	  SPH_C32(0xd9372400), SPH_C32(0x0a480000), SPH_C32(0x66610000),
+	  SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c), SPH_C32(0xa324df94),
+	  SPH_C32(0x2ba05a55) },
+	{ SPH_C32(0xdd140000), SPH_C32(0x52590c00), SPH_C32(0xdc950000),
+	  SPH_C32(0xaa7e0000), SPH_C32(0x30a8753d), SPH_C32(0xdaf2d9e6),
+	  SPH_C32(0x21e0506c), SPH_C32(0x31343cbb), SPH_C32(0x5ae00000),
+	  SPH_C32(0x7e6f2100), SPH_C32(0x2f990000), SPH_C32(0x91010000),
+	  SPH_C32(0x714b6a1d), SPH_C32(0x996a0f3c), SPH_C32(0xedf47c81),
+	  SPH_C32(0x8a83a5ca) },
+	{ SPH_C32(0x2f440000), SPH_C32(0xbce40600), SPH_C32(0xbb3d0000),
+	  SPH_C32(0x01f40000), SPH_C32(0x8a333dfd), SPH_C32(0xd0a40492),
+	  SPH_C32(0xfa93b802), SPH_C32(0x245cc3b4), SPH_C32(0x56920000),
+	  SPH_C32(0x378a2e00), SPH_C32(0x6de00000), SPH_C32(0xcdeb0000),
+	  SPH_C32(0x42e15a07), SPH_C32(0x8ce82a28), SPH_C32(0x785737fa),
+	  SPH_C32(0x3ec8a55a) },
+	{ SPH_C32(0x23360000), SPH_C32(0xf5010900), SPH_C32(0xf9440000),
+	  SPH_C32(0x5d1e0000), SPH_C32(0xb9990de7), SPH_C32(0xc5262186),
+	  SPH_C32(0x6f30f379), SPH_C32(0x9017c324), SPH_C32(0xa8b00000),
+	  SPH_C32(0x90d22b00), SPH_C32(0x48310000), SPH_C32(0x3a8b0000),
+	  SPH_C32(0xcbd022dd), SPH_C32(0x933cd248), SPH_C32(0x368794ef),
+	  SPH_C32(0x9feb5ac5) },
+	{ SPH_C32(0x947e0000), SPH_C32(0xbe091400), SPH_C32(0x67860000),
+	  SPH_C32(0xcddc0000), SPH_C32(0x1dce510b), SPH_C32(0xec636924),
+	  SPH_C32(0xa2ffbda7), SPH_C32(0x5a4cc8f4), SPH_C32(0x1cff0000),
+	  SPH_C32(0xcf462200), SPH_C32(0x3dd20000), SPH_C32(0x93d00000),
+	  SPH_C32(0xdafb736b), SPH_C32(0x28f60619), SPH_C32(0xc500c982),
+	  SPH_C32(0xee61b16b) },
+	{ SPH_C32(0x980c0000), SPH_C32(0xf7ec1b00), SPH_C32(0x25ff0000),
+	  SPH_C32(0x91360000), SPH_C32(0x2e646111), SPH_C32(0xf9e14c30),
+	  SPH_C32(0x375cf6dc), SPH_C32(0xee07c864), SPH_C32(0xe2dd0000),
+	  SPH_C32(0x681e2700), SPH_C32(0x18030000), SPH_C32(0x64b00000),
+	  SPH_C32(0x53ca0bb1), SPH_C32(0x3722fe79), SPH_C32(0x8bd06a97),
+	  SPH_C32(0x4f424ef4) },
+	{ SPH_C32(0x6a5c0000), SPH_C32(0x19511100), SPH_C32(0x42570000),
+	  SPH_C32(0x3abc0000), SPH_C32(0x94ff29d1), SPH_C32(0xf3b79144),
+	  SPH_C32(0xec2f1eb2), SPH_C32(0xfb6f376b), SPH_C32(0xeeaf0000),
+	  SPH_C32(0x21fb2800), SPH_C32(0x5a7a0000), SPH_C32(0x385a0000),
+	  SPH_C32(0x60603bab), SPH_C32(0x22a0db6d), SPH_C32(0x1e7321ec),
+	  SPH_C32(0xfb094e64) },
+	{ SPH_C32(0x662e0000), SPH_C32(0x50b41e00), SPH_C32(0x002e0000),
+	  SPH_C32(0x66560000), SPH_C32(0xa75519cb), SPH_C32(0xe635b450),
+	  SPH_C32(0x798c55c9), SPH_C32(0x4f2437fb), SPH_C32(0x108d0000),
+	  SPH_C32(0x86a32d00), SPH_C32(0x7fab0000), SPH_C32(0xcf3a0000),
+	  SPH_C32(0xe9514371), SPH_C32(0x3d74230d), SPH_C32(0x50a382f9),
+	  SPH_C32(0x5a2ab1fb) },
+	{ SPH_C32(0x695b0000), SPH_C32(0x0dcd0500), SPH_C32(0xa9760000),
+	  SPH_C32(0x03250000), SPH_C32(0x2183248b), SPH_C32(0x61380db7),
+	  SPH_C32(0xd2670d01), SPH_C32(0x40bed715), SPH_C32(0x59e70000),
+	  SPH_C32(0x6af33500), SPH_C32(0xc4b80000), SPH_C32(0xa8980000),
+	  SPH_C32(0xc4376747), SPH_C32(0x0be593cf), SPH_C32(0xd3bc6f32),
+	  SPH_C32(0x315245b4) },
+	{ SPH_C32(0x65290000), SPH_C32(0x44280a00), SPH_C32(0xeb0f0000),
+	  SPH_C32(0x5fcf0000), SPH_C32(0x12291491), SPH_C32(0x74ba28a3),
+	  SPH_C32(0x47c4467a), SPH_C32(0xf4f5d785), SPH_C32(0xa7c50000),
+	  SPH_C32(0xcdab3000), SPH_C32(0xe1690000), SPH_C32(0x5ff80000),
+	  SPH_C32(0x4d061f9d), SPH_C32(0x14316baf), SPH_C32(0x9d6ccc27),
+	  SPH_C32(0x9071ba2b) },
+	{ SPH_C32(0x97790000), SPH_C32(0xaa950000), SPH_C32(0x8ca70000),
+	  SPH_C32(0xf4450000), SPH_C32(0xa8b25c51), SPH_C32(0x7eecf5d7),
+	  SPH_C32(0x9cb7ae14), SPH_C32(0xe19d288a), SPH_C32(0xabb70000),
+	  SPH_C32(0x844e3f00), SPH_C32(0xa3100000), SPH_C32(0x03120000),
+	  SPH_C32(0x7eac2f87), SPH_C32(0x01b34ebb), SPH_C32(0x08cf875c),
+	  SPH_C32(0x243ababb) },
+	{ SPH_C32(0x9b0b0000), SPH_C32(0xe3700f00), SPH_C32(0xcede0000),
+	  SPH_C32(0xa8af0000), SPH_C32(0x9b186c4b), SPH_C32(0x6b6ed0c3),
+	  SPH_C32(0x0914e56f), SPH_C32(0x55d6281a), SPH_C32(0x55950000),
+	  SPH_C32(0x23163a00), SPH_C32(0x86c10000), SPH_C32(0xf4720000),
+	  SPH_C32(0xf79d575d), SPH_C32(0x1e67b6db), SPH_C32(0x461f2449),
+	  SPH_C32(0x85194524) },
+	{ SPH_C32(0x2c430000), SPH_C32(0xa8781200), SPH_C32(0x501c0000),
+	  SPH_C32(0x386d0000), SPH_C32(0x3f4f30a7), SPH_C32(0x422b9861),
+	  SPH_C32(0xc4dbabb1), SPH_C32(0x9f8d23ca), SPH_C32(0xe1da0000),
+	  SPH_C32(0x7c823300), SPH_C32(0xf3220000), SPH_C32(0x5d290000),
+	  SPH_C32(0xe6b606eb), SPH_C32(0xa5ad628a), SPH_C32(0xb5987924),
+	  SPH_C32(0xf493ae8a) },
+	{ SPH_C32(0x20310000), SPH_C32(0xe19d1d00), SPH_C32(0x12650000),
+	  SPH_C32(0x64870000), SPH_C32(0x0ce500bd), SPH_C32(0x57a9bd75),
+	  SPH_C32(0x5178e0ca), SPH_C32(0x2bc6235a), SPH_C32(0x1ff80000),
+	  SPH_C32(0xdbda3600), SPH_C32(0xd6f30000), SPH_C32(0xaa490000),
+	  SPH_C32(0x6f877e31), SPH_C32(0xba799aea), SPH_C32(0xfb48da31),
+	  SPH_C32(0x55b05115) },
+	{ SPH_C32(0xd2610000), SPH_C32(0x0f201700), SPH_C32(0x75cd0000),
+	  SPH_C32(0xcf0d0000), SPH_C32(0xb67e487d), SPH_C32(0x5dff6001),
+	  SPH_C32(0x8a0b08a4), SPH_C32(0x3eaedc55), SPH_C32(0x138a0000),
+	  SPH_C32(0x923f3900), SPH_C32(0x948a0000), SPH_C32(0xf6a30000),
+	  SPH_C32(0x5c2d4e2b), SPH_C32(0xaffbbffe), SPH_C32(0x6eeb914a),
+	  SPH_C32(0xe1fb5185) },
+	{ SPH_C32(0xde130000), SPH_C32(0x46c51800), SPH_C32(0x37b40000),
+	  SPH_C32(0x93e70000), SPH_C32(0x85d47867), SPH_C32(0x487d4515),
+	  SPH_C32(0x1fa843df), SPH_C32(0x8ae5dcc5), SPH_C32(0xeda80000),
+	  SPH_C32(0x35673c00), SPH_C32(0xb15b0000), SPH_C32(0x01c30000),
+	  SPH_C32(0xd51c36f1), SPH_C32(0xb02f479e), SPH_C32(0x203b325f),
+	  SPH_C32(0x40d8ae1a) },
+	{ SPH_C32(0xa4c20000), SPH_C32(0xd9372400), SPH_C32(0x0a480000),
+	  SPH_C32(0x66610000), SPH_C32(0xf87a12c7), SPH_C32(0x86bef75c),
+	  SPH_C32(0xa324df94), SPH_C32(0x2ba05a55), SPH_C32(0x75a40000),
+	  SPH_C32(0xc28b2700), SPH_C32(0x94a40000), SPH_C32(0x90f50000),
+	  SPH_C32(0xfb7857e0), SPH_C32(0x49ce0bae), SPH_C32(0x1767c483),
+	  SPH_C32(0xaedf667e) },
+	{ SPH_C32(0xa8b00000), SPH_C32(0x90d22b00), SPH_C32(0x48310000),
+	  SPH_C32(0x3a8b0000), SPH_C32(0xcbd022dd), SPH_C32(0x933cd248),
+	  SPH_C32(0x368794ef), SPH_C32(0x9feb5ac5), SPH_C32(0x8b860000),
+	  SPH_C32(0x65d32200), SPH_C32(0xb1750000), SPH_C32(0x67950000),
+	  SPH_C32(0x72492f3a), SPH_C32(0x561af3ce), SPH_C32(0x59b76796),
+	  SPH_C32(0x0ffc99e1) },
+	{ SPH_C32(0x5ae00000), SPH_C32(0x7e6f2100), SPH_C32(0x2f990000),
+	  SPH_C32(0x91010000), SPH_C32(0x714b6a1d), SPH_C32(0x996a0f3c),
+	  SPH_C32(0xedf47c81), SPH_C32(0x8a83a5ca), SPH_C32(0x87f40000),
+	  SPH_C32(0x2c362d00), SPH_C32(0xf30c0000), SPH_C32(0x3b7f0000),
+	  SPH_C32(0x41e31f20), SPH_C32(0x4398d6da), SPH_C32(0xcc142ced),
+	  SPH_C32(0xbbb79971) },
+	{ SPH_C32(0x56920000), SPH_C32(0x378a2e00), SPH_C32(0x6de00000),
+	  SPH_C32(0xcdeb0000), SPH_C32(0x42e15a07), SPH_C32(0x8ce82a28),
+	  SPH_C32(0x785737fa), SPH_C32(0x3ec8a55a), SPH_C32(0x79d60000),
+	  SPH_C32(0x8b6e2800), SPH_C32(0xd6dd0000), SPH_C32(0xcc1f0000),
+	  SPH_C32(0xc8d267fa), SPH_C32(0x5c4c2eba), SPH_C32(0x82c48ff8),
+	  SPH_C32(0x1a9466ee) },
+	{ SPH_C32(0xe1da0000), SPH_C32(0x7c823300), SPH_C32(0xf3220000),
+	  SPH_C32(0x5d290000), SPH_C32(0xe6b606eb), SPH_C32(0xa5ad628a),
+	  SPH_C32(0xb5987924), SPH_C32(0xf493ae8a), SPH_C32(0xcd990000),
+	  SPH_C32(0xd4fa2100), SPH_C32(0xa33e0000), SPH_C32(0x65440000),
+	  SPH_C32(0xd9f9364c), SPH_C32(0xe786faeb), SPH_C32(0x7143d295),
+	  SPH_C32(0x6b1e8d40) },
+	{ SPH_C32(0xeda80000), SPH_C32(0x35673c00), SPH_C32(0xb15b0000),
+	  SPH_C32(0x01c30000), SPH_C32(0xd51c36f1), SPH_C32(0xb02f479e),
+	  SPH_C32(0x203b325f), SPH_C32(0x40d8ae1a), SPH_C32(0x33bb0000),
+	  SPH_C32(0x73a22400), SPH_C32(0x86ef0000), SPH_C32(0x92240000),
+	  SPH_C32(0x50c84e96), SPH_C32(0xf852028b), SPH_C32(0x3f937180),
+	  SPH_C32(0xca3d72df) },
+	{ SPH_C32(0x1ff80000), SPH_C32(0xdbda3600), SPH_C32(0xd6f30000),
+	  SPH_C32(0xaa490000), SPH_C32(0x6f877e31), SPH_C32(0xba799aea),
+	  SPH_C32(0xfb48da31), SPH_C32(0x55b05115), SPH_C32(0x3fc90000),
+	  SPH_C32(0x3a472b00), SPH_C32(0xc4960000), SPH_C32(0xcece0000),
+	  SPH_C32(0x63627e8c), SPH_C32(0xedd0279f), SPH_C32(0xaa303afb),
+	  SPH_C32(0x7e76724f) },
+	{ SPH_C32(0x138a0000), SPH_C32(0x923f3900), SPH_C32(0x948a0000),
+	  SPH_C32(0xf6a30000), SPH_C32(0x5c2d4e2b), SPH_C32(0xaffbbffe),
+	  SPH_C32(0x6eeb914a), SPH_C32(0xe1fb5185), SPH_C32(0xc1eb0000),
+	  SPH_C32(0x9d1f2e00), SPH_C32(0xe1470000), SPH_C32(0x39ae0000),
+	  SPH_C32(0xea530656), SPH_C32(0xf204dfff), SPH_C32(0xe4e099ee),
+	  SPH_C32(0xdf558dd0) },
+	{ SPH_C32(0x1cff0000), SPH_C32(0xcf462200), SPH_C32(0x3dd20000),
+	  SPH_C32(0x93d00000), SPH_C32(0xdafb736b), SPH_C32(0x28f60619),
+	  SPH_C32(0xc500c982), SPH_C32(0xee61b16b), SPH_C32(0x88810000),
+	  SPH_C32(0x714f3600), SPH_C32(0x5a540000), SPH_C32(0x5e0c0000),
+	  SPH_C32(0xc7352260), SPH_C32(0xc4956f3d), SPH_C32(0x67ff7425),
+	  SPH_C32(0xb42d799f) },
+	{ SPH_C32(0x108d0000), SPH_C32(0x86a32d00), SPH_C32(0x7fab0000),
+	  SPH_C32(0xcf3a0000), SPH_C32(0xe9514371), SPH_C32(0x3d74230d),
+	  SPH_C32(0x50a382f9), SPH_C32(0x5a2ab1fb), SPH_C32(0x76a30000),
+	  SPH_C32(0xd6173300), SPH_C32(0x7f850000), SPH_C32(0xa96c0000),
+	  SPH_C32(0x4e045aba), SPH_C32(0xdb41975d), SPH_C32(0x292fd730),
+	  SPH_C32(0x150e8600) },
+	{ SPH_C32(0xe2dd0000), SPH_C32(0x681e2700), SPH_C32(0x18030000),
+	  SPH_C32(0x64b00000), SPH_C32(0x53ca0bb1), SPH_C32(0x3722fe79),
+	  SPH_C32(0x8bd06a97), SPH_C32(0x4f424ef4), SPH_C32(0x7ad10000),
+	  SPH_C32(0x9ff23c00), SPH_C32(0x3dfc0000), SPH_C32(0xf5860000),
+	  SPH_C32(0x7dae6aa0), SPH_C32(0xcec3b249), SPH_C32(0xbc8c9c4b),
+	  SPH_C32(0xa1458690) },
+	{ SPH_C32(0xeeaf0000), SPH_C32(0x21fb2800), SPH_C32(0x5a7a0000),
+	  SPH_C32(0x385a0000), SPH_C32(0x60603bab), SPH_C32(0x22a0db6d),
+	  SPH_C32(0x1e7321ec), SPH_C32(0xfb094e64), SPH_C32(0x84f30000),
+	  SPH_C32(0x38aa3900), SPH_C32(0x182d0000), SPH_C32(0x02e60000),
+	  SPH_C32(0xf49f127a), SPH_C32(0xd1174a29), SPH_C32(0xf25c3f5e),
+	  SPH_C32(0x0066790f) },
+	{ SPH_C32(0x59e70000), SPH_C32(0x6af33500), SPH_C32(0xc4b80000),
+	  SPH_C32(0xa8980000), SPH_C32(0xc4376747), SPH_C32(0x0be593cf),
+	  SPH_C32(0xd3bc6f32), SPH_C32(0x315245b4), SPH_C32(0x30bc0000),
+	  SPH_C32(0x673e3000), SPH_C32(0x6dce0000), SPH_C32(0xabbd0000),
+	  SPH_C32(0xe5b443cc), SPH_C32(0x6add9e78), SPH_C32(0x01db6233),
+	  SPH_C32(0x71ec92a1) },
+	{ SPH_C32(0x55950000), SPH_C32(0x23163a00), SPH_C32(0x86c10000),
+	  SPH_C32(0xf4720000), SPH_C32(0xf79d575d), SPH_C32(0x1e67b6db),
+	  SPH_C32(0x461f2449), SPH_C32(0x85194524), SPH_C32(0xce9e0000),
+	  SPH_C32(0xc0663500), SPH_C32(0x481f0000), SPH_C32(0x5cdd0000),
+	  SPH_C32(0x6c853b16), SPH_C32(0x75096618), SPH_C32(0x4f0bc126),
+	  SPH_C32(0xd0cf6d3e) },
+	{ SPH_C32(0xa7c50000), SPH_C32(0xcdab3000), SPH_C32(0xe1690000),
+	  SPH_C32(0x5ff80000), SPH_C32(0x4d061f9d), SPH_C32(0x14316baf),
+	  SPH_C32(0x9d6ccc27), SPH_C32(0x9071ba2b), SPH_C32(0xc2ec0000),
+	  SPH_C32(0x89833a00), SPH_C32(0x0a660000), SPH_C32(0x00370000),
+	  SPH_C32(0x5f2f0b0c), SPH_C32(0x608b430c), SPH_C32(0xdaa88a5d),
+	  SPH_C32(0x64846dae) },
+	{ SPH_C32(0xabb70000), SPH_C32(0x844e3f00), SPH_C32(0xa3100000),
+	  SPH_C32(0x03120000), SPH_C32(0x7eac2f87), SPH_C32(0x01b34ebb),
+	  SPH_C32(0x08cf875c), SPH_C32(0x243ababb), SPH_C32(0x3cce0000),
+	  SPH_C32(0x2edb3f00), SPH_C32(0x2fb70000), SPH_C32(0xf7570000),
+	  SPH_C32(0xd61e73d6), SPH_C32(0x7f5fbb6c), SPH_C32(0x94782948),
+	  SPH_C32(0xc5a79231) },
+	{ SPH_C32(0x75c90003), SPH_C32(0x0e10c000), SPH_C32(0xd1200000),
+	  SPH_C32(0xbaea0000), SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757),
+	  SPH_C32(0xbb28761d), SPH_C32(0x00b72e2b), SPH_C32(0xeecf0001),
+	  SPH_C32(0x6f564000), SPH_C32(0xf33e0000), SPH_C32(0xa79e0000),
+	  SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5), SPH_C32(0x4a3b40ba),
+	  SPH_C32(0xfeabf254) },
+	{ SPH_C32(0x79bb0003), SPH_C32(0x47f5cf00), SPH_C32(0x93590000),
+	  SPH_C32(0xe6000000), SPH_C32(0xb86e1f24), SPH_C32(0x92da9243),
+	  SPH_C32(0x2e8b3d66), SPH_C32(0xb4fc2ebb), SPH_C32(0x10ed0001),
+	  SPH_C32(0xc80e4500), SPH_C32(0xd6ef0000), SPH_C32(0x50fe0000),
+	  SPH_C32(0x34840ac3), SPH_C32(0xa8c513a5), SPH_C32(0x04ebe3af),
+	  SPH_C32(0x5f880dcb) },
+	{ SPH_C32(0x8beb0003), SPH_C32(0xa948c500), SPH_C32(0xf4f10000),
+	  SPH_C32(0x4d8a0000), SPH_C32(0x02f557e4), SPH_C32(0x988c4f37),
+	  SPH_C32(0xf5f8d508), SPH_C32(0xa194d1b4), SPH_C32(0x1c9f0001),
+	  SPH_C32(0x81eb4a00), SPH_C32(0x94960000), SPH_C32(0x0c140000),
+	  SPH_C32(0x072e3ad9), SPH_C32(0xbd4736b1), SPH_C32(0x9148a8d4),
+	  SPH_C32(0xebc30d5b) },
+	{ SPH_C32(0x87990003), SPH_C32(0xe0adca00), SPH_C32(0xb6880000),
+	  SPH_C32(0x11600000), SPH_C32(0x315f67fe), SPH_C32(0x8d0e6a23),
+	  SPH_C32(0x605b9e73), SPH_C32(0x15dfd124), SPH_C32(0xe2bd0001),
+	  SPH_C32(0x26b34f00), SPH_C32(0xb1470000), SPH_C32(0xfb740000),
+	  SPH_C32(0x8e1f4203), SPH_C32(0xa293ced1), SPH_C32(0xdf980bc1),
+	  SPH_C32(0x4ae0f2c4) },
+	{ SPH_C32(0x30d10003), SPH_C32(0xaba5d700), SPH_C32(0x284a0000),
+	  SPH_C32(0x81a20000), SPH_C32(0x95083b12), SPH_C32(0xa44b2281),
+	  SPH_C32(0xad94d0ad), SPH_C32(0xdf84daf4), SPH_C32(0x56f20001),
+	  SPH_C32(0x79274600), SPH_C32(0xc4a40000), SPH_C32(0x522f0000),
+	  SPH_C32(0x9f3413b5), SPH_C32(0x19591a80), SPH_C32(0x2c1f56ac),
+	  SPH_C32(0x3b6a196a) },
+	{ SPH_C32(0x3ca30003), SPH_C32(0xe240d800), SPH_C32(0x6a330000),
+	  SPH_C32(0xdd480000), SPH_C32(0xa6a20b08), SPH_C32(0xb1c90795),
+	  SPH_C32(0x38379bd6), SPH_C32(0x6bcfda64), SPH_C32(0xa8d00001),
+	  SPH_C32(0xde7f4300), SPH_C32(0xe1750000), SPH_C32(0xa54f0000),
+	  SPH_C32(0x16056b6f), SPH_C32(0x068de2e0), SPH_C32(0x62cff5b9),
+	  SPH_C32(0x9a49e6f5) },
+	{ SPH_C32(0xcef30003), SPH_C32(0x0cfdd200), SPH_C32(0x0d9b0000),
+	  SPH_C32(0x76c20000), SPH_C32(0x1c3943c8), SPH_C32(0xbb9fdae1),
+	  SPH_C32(0xe34473b8), SPH_C32(0x7ea7256b), SPH_C32(0xa4a20001),
+	  SPH_C32(0x979a4c00), SPH_C32(0xa30c0000), SPH_C32(0xf9a50000),
+	  SPH_C32(0x25af5b75), SPH_C32(0x130fc7f4), SPH_C32(0xf76cbec2),
+	  SPH_C32(0x2e02e665) },
+	{ SPH_C32(0xc2810003), SPH_C32(0x4518dd00), SPH_C32(0x4fe20000),
+	  SPH_C32(0x2a280000), SPH_C32(0x2f9373d2), SPH_C32(0xae1dfff5),
+	  SPH_C32(0x76e738c3), SPH_C32(0xcaec25fb), SPH_C32(0x5a800001),
+	  SPH_C32(0x30c24900), SPH_C32(0x86dd0000), SPH_C32(0x0ec50000),
+	  SPH_C32(0xac9e23af), SPH_C32(0x0cdb3f94), SPH_C32(0xb9bc1dd7),
+	  SPH_C32(0x8f2119fa) },
+	{ SPH_C32(0xcdf40003), SPH_C32(0x1861c600), SPH_C32(0xe6ba0000),
+	  SPH_C32(0x4f5b0000), SPH_C32(0xa9454e92), SPH_C32(0x29104612),
+	  SPH_C32(0xdd0c600b), SPH_C32(0xc576c515), SPH_C32(0x13ea0001),
+	  SPH_C32(0xdc925100), SPH_C32(0x3dce0000), SPH_C32(0x69670000),
+	  SPH_C32(0x81f80799), SPH_C32(0x3a4a8f56), SPH_C32(0x3aa3f01c),
+	  SPH_C32(0xe459edb5) },
+	{ SPH_C32(0xc1860003), SPH_C32(0x5184c900), SPH_C32(0xa4c30000),
+	  SPH_C32(0x13b10000), SPH_C32(0x9aef7e88), SPH_C32(0x3c926306),
+	  SPH_C32(0x48af2b70), SPH_C32(0x713dc585), SPH_C32(0xedc80001),
+	  SPH_C32(0x7bca5400), SPH_C32(0x181f0000), SPH_C32(0x9e070000),
+	  SPH_C32(0x08c97f43), SPH_C32(0x259e7736), SPH_C32(0x74735309),
+	  SPH_C32(0x457a122a) },
+	{ SPH_C32(0x33d60003), SPH_C32(0xbf39c300), SPH_C32(0xc36b0000),
+	  SPH_C32(0xb83b0000), SPH_C32(0x20743648), SPH_C32(0x36c4be72),
+	  SPH_C32(0x93dcc31e), SPH_C32(0x64553a8a), SPH_C32(0xe1ba0001),
+	  SPH_C32(0x322f5b00), SPH_C32(0x5a660000), SPH_C32(0xc2ed0000),
+	  SPH_C32(0x3b634f59), SPH_C32(0x301c5222), SPH_C32(0xe1d01872),
+	  SPH_C32(0xf13112ba) },
+	{ SPH_C32(0x3fa40003), SPH_C32(0xf6dccc00), SPH_C32(0x81120000),
+	  SPH_C32(0xe4d10000), SPH_C32(0x13de0652), SPH_C32(0x23469b66),
+	  SPH_C32(0x067f8865), SPH_C32(0xd01e3a1a), SPH_C32(0x1f980001),
+	  SPH_C32(0x95775e00), SPH_C32(0x7fb70000), SPH_C32(0x358d0000),
+	  SPH_C32(0xb2523783), SPH_C32(0x2fc8aa42), SPH_C32(0xaf00bb67),
+	  SPH_C32(0x5012ed25) },
+	{ SPH_C32(0x88ec0003), SPH_C32(0xbdd4d100), SPH_C32(0x1fd00000),
+	  SPH_C32(0x74130000), SPH_C32(0xb7895abe), SPH_C32(0x0a03d3c4),
+	  SPH_C32(0xcbb0c6bb), SPH_C32(0x1a4531ca), SPH_C32(0xabd70001),
+	  SPH_C32(0xcae35700), SPH_C32(0x0a540000), SPH_C32(0x9cd60000),
+	  SPH_C32(0xa3796635), SPH_C32(0x94027e13), SPH_C32(0x5c87e60a),
+	  SPH_C32(0x2198068b) },
+	{ SPH_C32(0x849e0003), SPH_C32(0xf431de00), SPH_C32(0x5da90000),
+	  SPH_C32(0x28f90000), SPH_C32(0x84236aa4), SPH_C32(0x1f81f6d0),
+	  SPH_C32(0x5e138dc0), SPH_C32(0xae0e315a), SPH_C32(0x55f50001),
+	  SPH_C32(0x6dbb5200), SPH_C32(0x2f850000), SPH_C32(0x6bb60000),
+	  SPH_C32(0x2a481eef), SPH_C32(0x8bd68673), SPH_C32(0x1257451f),
+	  SPH_C32(0x80bbf914) },
+	{ SPH_C32(0x76ce0003), SPH_C32(0x1a8cd400), SPH_C32(0x3a010000),
+	  SPH_C32(0x83730000), SPH_C32(0x3eb82264), SPH_C32(0x15d72ba4),
+	  SPH_C32(0x856065ae), SPH_C32(0xbb66ce55), SPH_C32(0x59870001),
+	  SPH_C32(0x245e5d00), SPH_C32(0x6dfc0000), SPH_C32(0x375c0000),
+	  SPH_C32(0x19e22ef5), SPH_C32(0x9e54a367), SPH_C32(0x87f40e64),
+	  SPH_C32(0x34f0f984) },
+	{ SPH_C32(0x7abc0003), SPH_C32(0x5369db00), SPH_C32(0x78780000),
+	  SPH_C32(0xdf990000), SPH_C32(0x0d12127e), SPH_C32(0x00550eb0),
+	  SPH_C32(0x10c32ed5), SPH_C32(0x0f2dcec5), SPH_C32(0xa7a50001),
+	  SPH_C32(0x83065800), SPH_C32(0x482d0000), SPH_C32(0xc03c0000),
+	  SPH_C32(0x90d3562f), SPH_C32(0x81805b07), SPH_C32(0xc924ad71),
+	  SPH_C32(0x95d3061b) },
+	{ SPH_C32(0x006d0003), SPH_C32(0xcc9be700), SPH_C32(0x45840000),
+	  SPH_C32(0x2a1f0000), SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9),
+	  SPH_C32(0xac4fb29e), SPH_C32(0xae684855), SPH_C32(0x3fa90001),
+	  SPH_C32(0x74ea4300), SPH_C32(0x6dd20000), SPH_C32(0x510a0000),
+	  SPH_C32(0xbeb7373e), SPH_C32(0x78611737), SPH_C32(0xfe785bad),
+	  SPH_C32(0x7bd4ce7f) },
+	{ SPH_C32(0x0c1f0003), SPH_C32(0x857ee800), SPH_C32(0x07fd0000),
+	  SPH_C32(0x76f50000), SPH_C32(0x431648c4), SPH_C32(0xdb1499ed),
+	  SPH_C32(0x39ecf9e5), SPH_C32(0x1a2348c5), SPH_C32(0xc18b0001),
+	  SPH_C32(0xd3b24600), SPH_C32(0x48030000), SPH_C32(0xa66a0000),
+	  SPH_C32(0x37864fe4), SPH_C32(0x67b5ef57), SPH_C32(0xb0a8f8b8),
+	  SPH_C32(0xdaf731e0) },
+	{ SPH_C32(0xfe4f0003), SPH_C32(0x6bc3e200), SPH_C32(0x60550000),
+	  SPH_C32(0xdd7f0000), SPH_C32(0xf98d0004), SPH_C32(0xd1424499),
+	  SPH_C32(0xe29f118b), SPH_C32(0x0f4bb7ca), SPH_C32(0xcdf90001),
+	  SPH_C32(0x9a574900), SPH_C32(0x0a7a0000), SPH_C32(0xfa800000),
+	  SPH_C32(0x042c7ffe), SPH_C32(0x7237ca43), SPH_C32(0x250bb3c3),
+	  SPH_C32(0x6ebc3170) },
+	{ SPH_C32(0xf23d0003), SPH_C32(0x2226ed00), SPH_C32(0x222c0000),
+	  SPH_C32(0x81950000), SPH_C32(0xca27301e), SPH_C32(0xc4c0618d),
+	  SPH_C32(0x773c5af0), SPH_C32(0xbb00b75a), SPH_C32(0x33db0001),
+	  SPH_C32(0x3d0f4c00), SPH_C32(0x2fab0000), SPH_C32(0x0de00000),
+	  SPH_C32(0x8d1d0724), SPH_C32(0x6de33223), SPH_C32(0x6bdb10d6),
+	  SPH_C32(0xcf9fceef) },
+	{ SPH_C32(0x45750003), SPH_C32(0x692ef000), SPH_C32(0xbcee0000),
+	  SPH_C32(0x11570000), SPH_C32(0x6e706cf2), SPH_C32(0xed85292f),
+	  SPH_C32(0xbaf3142e), SPH_C32(0x715bbc8a), SPH_C32(0x87940001),
+	  SPH_C32(0x629b4500), SPH_C32(0x5a480000), SPH_C32(0xa4bb0000),
+	  SPH_C32(0x9c365692), SPH_C32(0xd629e672), SPH_C32(0x985c4dbb),
+	  SPH_C32(0xbe152541) },
+	{ SPH_C32(0x49070003), SPH_C32(0x20cbff00), SPH_C32(0xfe970000),
+	  SPH_C32(0x4dbd0000), SPH_C32(0x5dda5ce8), SPH_C32(0xf8070c3b),
+	  SPH_C32(0x2f505f55), SPH_C32(0xc510bc1a), SPH_C32(0x79b60001),
+	  SPH_C32(0xc5c34000), SPH_C32(0x7f990000), SPH_C32(0x53db0000),
+	  SPH_C32(0x15072e48), SPH_C32(0xc9fd1e12), SPH_C32(0xd68ceeae),
+	  SPH_C32(0x1f36dade) },
+	{ SPH_C32(0xbb570003), SPH_C32(0xce76f500), SPH_C32(0x993f0000),
+	  SPH_C32(0xe6370000), SPH_C32(0xe7411428), SPH_C32(0xf251d14f),
+	  SPH_C32(0xf423b73b), SPH_C32(0xd0784315), SPH_C32(0x75c40001),
+	  SPH_C32(0x8c264f00), SPH_C32(0x3de00000), SPH_C32(0x0f310000),
+	  SPH_C32(0x26ad1e52), SPH_C32(0xdc7f3b06), SPH_C32(0x432fa5d5),
+	  SPH_C32(0xab7dda4e) },
+	{ SPH_C32(0xb7250003), SPH_C32(0x8793fa00), SPH_C32(0xdb460000),
+	  SPH_C32(0xbadd0000), SPH_C32(0xd4eb2432), SPH_C32(0xe7d3f45b),
+	  SPH_C32(0x6180fc40), SPH_C32(0x64334385), SPH_C32(0x8be60001),
+	  SPH_C32(0x2b7e4a00), SPH_C32(0x18310000), SPH_C32(0xf8510000),
+	  SPH_C32(0xaf9c6688), SPH_C32(0xc3abc366), SPH_C32(0x0dff06c0),
+	  SPH_C32(0x0a5e25d1) },
+	{ SPH_C32(0xb8500003), SPH_C32(0xdaeae100), SPH_C32(0x721e0000),
+	  SPH_C32(0xdfae0000), SPH_C32(0x523d1972), SPH_C32(0x60de4dbc),
+	  SPH_C32(0xca6ba488), SPH_C32(0x6ba9a36b), SPH_C32(0xc28c0001),
+	  SPH_C32(0xc72e5200), SPH_C32(0xa3220000), SPH_C32(0x9ff30000),
+	  SPH_C32(0x82fa42be), SPH_C32(0xf53a73a4), SPH_C32(0x8ee0eb0b),
+	  SPH_C32(0x6126d19e) },
+	{ SPH_C32(0xb4220003), SPH_C32(0x930fee00), SPH_C32(0x30670000),
+	  SPH_C32(0x83440000), SPH_C32(0x61972968), SPH_C32(0x755c68a8),
+	  SPH_C32(0x5fc8eff3), SPH_C32(0xdfe2a3fb), SPH_C32(0x3cae0001),
+	  SPH_C32(0x60765700), SPH_C32(0x86f30000), SPH_C32(0x68930000),
+	  SPH_C32(0x0bcb3a64), SPH_C32(0xeaee8bc4), SPH_C32(0xc030481e),
+	  SPH_C32(0xc0052e01) },
+	{ SPH_C32(0x46720003), SPH_C32(0x7db2e400), SPH_C32(0x57cf0000),
+	  SPH_C32(0x28ce0000), SPH_C32(0xdb0c61a8), SPH_C32(0x7f0ab5dc),
+	  SPH_C32(0x84bb079d), SPH_C32(0xca8a5cf4), SPH_C32(0x30dc0001),
+	  SPH_C32(0x29935800), SPH_C32(0xc48a0000), SPH_C32(0x34790000),
+	  SPH_C32(0x38610a7e), SPH_C32(0xff6caed0), SPH_C32(0x55930365),
+	  SPH_C32(0x744e2e91) },
+	{ SPH_C32(0x4a000003), SPH_C32(0x3457eb00), SPH_C32(0x15b60000),
+	  SPH_C32(0x74240000), SPH_C32(0xe8a651b2), SPH_C32(0x6a8890c8),
+	  SPH_C32(0x11184ce6), SPH_C32(0x7ec15c64), SPH_C32(0xcefe0001),
+	  SPH_C32(0x8ecb5d00), SPH_C32(0xe15b0000), SPH_C32(0xc3190000),
+	  SPH_C32(0xb15072a4), SPH_C32(0xe0b856b0), SPH_C32(0x1b43a070),
+	  SPH_C32(0xd56dd10e) },
+	{ SPH_C32(0xfd480003), SPH_C32(0x7f5ff600), SPH_C32(0x8b740000),
+	  SPH_C32(0xe4e60000), SPH_C32(0x4cf10d5e), SPH_C32(0x43cdd86a),
+	  SPH_C32(0xdcd70238), SPH_C32(0xb49a57b4), SPH_C32(0x7ab10001),
+	  SPH_C32(0xd15f5400), SPH_C32(0x94b80000), SPH_C32(0x6a420000),
+	  SPH_C32(0xa07b2312), SPH_C32(0x5b7282e1), SPH_C32(0xe8c4fd1d),
+	  SPH_C32(0xa4e73aa0) },
+	{ SPH_C32(0xf13a0003), SPH_C32(0x36baf900), SPH_C32(0xc90d0000),
+	  SPH_C32(0xb80c0000), SPH_C32(0x7f5b3d44), SPH_C32(0x564ffd7e),
+	  SPH_C32(0x49744943), SPH_C32(0x00d15724), SPH_C32(0x84930001),
+	  SPH_C32(0x76075100), SPH_C32(0xb1690000), SPH_C32(0x9d220000),
+	  SPH_C32(0x294a5bc8), SPH_C32(0x44a67a81), SPH_C32(0xa6145e08),
+	  SPH_C32(0x05c4c53f) },
+	{ SPH_C32(0x036a0003), SPH_C32(0xd807f300), SPH_C32(0xaea50000),
+	  SPH_C32(0x13860000), SPH_C32(0xc5c07584), SPH_C32(0x5c19200a),
+	  SPH_C32(0x9207a12d), SPH_C32(0x15b9a82b), SPH_C32(0x88e10001),
+	  SPH_C32(0x3fe25e00), SPH_C32(0xf3100000), SPH_C32(0xc1c80000),
+	  SPH_C32(0x1ae06bd2), SPH_C32(0x51245f95), SPH_C32(0x33b71573),
+	  SPH_C32(0xb18fc5af) },
+	{ SPH_C32(0x0f180003), SPH_C32(0x91e2fc00), SPH_C32(0xecdc0000),
+	  SPH_C32(0x4f6c0000), SPH_C32(0xf66a459e), SPH_C32(0x499b051e),
+	  SPH_C32(0x07a4ea56), SPH_C32(0xa1f2a8bb), SPH_C32(0x76c30001),
+	  SPH_C32(0x98ba5b00), SPH_C32(0xd6c10000), SPH_C32(0x36a80000),
+	  SPH_C32(0x93d11308), SPH_C32(0x4ef0a7f5), SPH_C32(0x7d67b666),
+	  SPH_C32(0x10ac3a30) },
+	{ SPH_C32(0xa4af0003), SPH_C32(0x15acc300), SPH_C32(0x4fcc0000),
+	  SPH_C32(0x4c7e0000), SPH_C32(0x88c66a19), SPH_C32(0x48284ba5),
+	  SPH_C32(0x0f6b6d0a), SPH_C32(0x85c81200), SPH_C32(0x4a0d0001),
+	  SPH_C32(0xb6616400), SPH_C32(0xf9760000), SPH_C32(0xc1ff0000),
+	  SPH_C32(0x45cf60de), SPH_C32(0x31af1c99), SPH_C32(0xe91f9f2e),
+	  SPH_C32(0xd50ba801) },
+	{ SPH_C32(0xa8dd0003), SPH_C32(0x5c49cc00), SPH_C32(0x0db50000),
+	  SPH_C32(0x10940000), SPH_C32(0xbb6c5a03), SPH_C32(0x5daa6eb1),
+	  SPH_C32(0x9ac82671), SPH_C32(0x31831290), SPH_C32(0xb42f0001),
+	  SPH_C32(0x11396100), SPH_C32(0xdca70000), SPH_C32(0x369f0000),
+	  SPH_C32(0xccfe1804), SPH_C32(0x2e7be4f9), SPH_C32(0xa7cf3c3b),
+	  SPH_C32(0x7428579e) },
+	{ SPH_C32(0x5a8d0003), SPH_C32(0xb2f4c600), SPH_C32(0x6a1d0000),
+	  SPH_C32(0xbb1e0000), SPH_C32(0x01f712c3), SPH_C32(0x57fcb3c5),
+	  SPH_C32(0x41bbce1f), SPH_C32(0x24ebed9f), SPH_C32(0xb85d0001),
+	  SPH_C32(0x58dc6e00), SPH_C32(0x9ede0000), SPH_C32(0x6a750000),
+	  SPH_C32(0xff54281e), SPH_C32(0x3bf9c1ed), SPH_C32(0x326c7740),
+	  SPH_C32(0xc063570e) },
+	{ SPH_C32(0x56ff0003), SPH_C32(0xfb11c900), SPH_C32(0x28640000),
+	  SPH_C32(0xe7f40000), SPH_C32(0x325d22d9), SPH_C32(0x427e96d1),
+	  SPH_C32(0xd4188564), SPH_C32(0x90a0ed0f), SPH_C32(0x467f0001),
+	  SPH_C32(0xff846b00), SPH_C32(0xbb0f0000), SPH_C32(0x9d150000),
+	  SPH_C32(0x766550c4), SPH_C32(0x242d398d), SPH_C32(0x7cbcd455),
+	  SPH_C32(0x6140a891) },
+	{ SPH_C32(0xe1b70003), SPH_C32(0xb019d400), SPH_C32(0xb6a60000),
+	  SPH_C32(0x77360000), SPH_C32(0x960a7e35), SPH_C32(0x6b3bde73),
+	  SPH_C32(0x19d7cbba), SPH_C32(0x5afbe6df), SPH_C32(0xf2300001),
+	  SPH_C32(0xa0106200), SPH_C32(0xceec0000), SPH_C32(0x344e0000),
+	  SPH_C32(0x674e0172), SPH_C32(0x9fe7eddc), SPH_C32(0x8f3b8938),
+	  SPH_C32(0x10ca433f) },
+	{ SPH_C32(0xedc50003), SPH_C32(0xf9fcdb00), SPH_C32(0xf4df0000),
+	  SPH_C32(0x2bdc0000), SPH_C32(0xa5a04e2f), SPH_C32(0x7eb9fb67),
+	  SPH_C32(0x8c7480c1), SPH_C32(0xeeb0e64f), SPH_C32(0x0c120001),
+	  SPH_C32(0x07486700), SPH_C32(0xeb3d0000), SPH_C32(0xc32e0000),
+	  SPH_C32(0xee7f79a8), SPH_C32(0x803315bc), SPH_C32(0xc1eb2a2d),
+	  SPH_C32(0xb1e9bca0) },
+	{ SPH_C32(0x1f950003), SPH_C32(0x1741d100), SPH_C32(0x93770000),
+	  SPH_C32(0x80560000), SPH_C32(0x1f3b06ef), SPH_C32(0x74ef2613),
+	  SPH_C32(0x570768af), SPH_C32(0xfbd81940), SPH_C32(0x00600001),
+	  SPH_C32(0x4ead6800), SPH_C32(0xa9440000), SPH_C32(0x9fc40000),
+	  SPH_C32(0xddd549b2), SPH_C32(0x95b130a8), SPH_C32(0x54486156),
+	  SPH_C32(0x05a2bc30) },
+	{ SPH_C32(0x13e70003), SPH_C32(0x5ea4de00), SPH_C32(0xd10e0000),
+	  SPH_C32(0xdcbc0000), SPH_C32(0x2c9136f5), SPH_C32(0x616d0307),
+	  SPH_C32(0xc2a423d4), SPH_C32(0x4f9319d0), SPH_C32(0xfe420001),
+	  SPH_C32(0xe9f56d00), SPH_C32(0x8c950000), SPH_C32(0x68a40000),
+	  SPH_C32(0x54e43168), SPH_C32(0x8a65c8c8), SPH_C32(0x1a98c243),
+	  SPH_C32(0xa48143af) },
+	{ SPH_C32(0x1c920003), SPH_C32(0x03ddc500), SPH_C32(0x78560000),
+	  SPH_C32(0xb9cf0000), SPH_C32(0xaa470bb5), SPH_C32(0xe660bae0),
+	  SPH_C32(0x694f7b1c), SPH_C32(0x4009f93e), SPH_C32(0xb7280001),
+	  SPH_C32(0x05a57500), SPH_C32(0x37860000), SPH_C32(0x0f060000),
+	  SPH_C32(0x7982155e), SPH_C32(0xbcf4780a), SPH_C32(0x99872f88),
+	  SPH_C32(0xcff9b7e0) },
+	{ SPH_C32(0x10e00003), SPH_C32(0x4a38ca00), SPH_C32(0x3a2f0000),
+	  SPH_C32(0xe5250000), SPH_C32(0x99ed3baf), SPH_C32(0xf3e29ff4),
+	  SPH_C32(0xfcec3067), SPH_C32(0xf442f9ae), SPH_C32(0x490a0001),
+	  SPH_C32(0xa2fd7000), SPH_C32(0x12570000), SPH_C32(0xf8660000),
+	  SPH_C32(0xf0b36d84), SPH_C32(0xa320806a), SPH_C32(0xd7578c9d),
+	  SPH_C32(0x6eda487f) },
+	{ SPH_C32(0xe2b00003), SPH_C32(0xa485c000), SPH_C32(0x5d870000),
+	  SPH_C32(0x4eaf0000), SPH_C32(0x2376736f), SPH_C32(0xf9b44280),
+	  SPH_C32(0x279fd809), SPH_C32(0xe12a06a1), SPH_C32(0x45780001),
+	  SPH_C32(0xeb187f00), SPH_C32(0x502e0000), SPH_C32(0xa48c0000),
+	  SPH_C32(0xc3195d9e), SPH_C32(0xb6a2a57e), SPH_C32(0x42f4c7e6),
+	  SPH_C32(0xda9148ef) },
+	{ SPH_C32(0xeec20003), SPH_C32(0xed60cf00), SPH_C32(0x1ffe0000),
+	  SPH_C32(0x12450000), SPH_C32(0x10dc4375), SPH_C32(0xec366794),
+	  SPH_C32(0xb23c9372), SPH_C32(0x55610631), SPH_C32(0xbb5a0001),
+	  SPH_C32(0x4c407a00), SPH_C32(0x75ff0000), SPH_C32(0x53ec0000),
+	  SPH_C32(0x4a282544), SPH_C32(0xa9765d1e), SPH_C32(0x0c2464f3),
+	  SPH_C32(0x7bb2b770) },
+	{ SPH_C32(0x598a0003), SPH_C32(0xa668d200), SPH_C32(0x813c0000),
+	  SPH_C32(0x82870000), SPH_C32(0xb48b1f99), SPH_C32(0xc5732f36),
+	  SPH_C32(0x7ff3ddac), SPH_C32(0x9f3a0de1), SPH_C32(0x0f150001),
+	  SPH_C32(0x13d47300), SPH_C32(0x001c0000), SPH_C32(0xfab70000),
+	  SPH_C32(0x5b0374f2), SPH_C32(0x12bc894f), SPH_C32(0xffa3399e),
+	  SPH_C32(0x0a385cde) },
+	{ SPH_C32(0x55f80003), SPH_C32(0xef8ddd00), SPH_C32(0xc3450000),
+	  SPH_C32(0xde6d0000), SPH_C32(0x87212f83), SPH_C32(0xd0f10a22),
+	  SPH_C32(0xea5096d7), SPH_C32(0x2b710d71), SPH_C32(0xf1370001),
+	  SPH_C32(0xb48c7600), SPH_C32(0x25cd0000), SPH_C32(0x0dd70000),
+	  SPH_C32(0xd2320c28), SPH_C32(0x0d68712f), SPH_C32(0xb1739a8b),
+	  SPH_C32(0xab1ba341) },
+	{ SPH_C32(0xa7a80003), SPH_C32(0x0130d700), SPH_C32(0xa4ed0000),
+	  SPH_C32(0x75e70000), SPH_C32(0x3dba6743), SPH_C32(0xdaa7d756),
+	  SPH_C32(0x31237eb9), SPH_C32(0x3e19f27e), SPH_C32(0xfd450001),
+	  SPH_C32(0xfd697900), SPH_C32(0x67b40000), SPH_C32(0x513d0000),
+	  SPH_C32(0xe1983c32), SPH_C32(0x18ea543b), SPH_C32(0x24d0d1f0),
+	  SPH_C32(0x1f50a3d1) },
+	{ SPH_C32(0xabda0003), SPH_C32(0x48d5d800), SPH_C32(0xe6940000),
+	  SPH_C32(0x290d0000), SPH_C32(0x0e105759), SPH_C32(0xcf25f242),
+	  SPH_C32(0xa48035c2), SPH_C32(0x8a52f2ee), SPH_C32(0x03670001),
+	  SPH_C32(0x5a317c00), SPH_C32(0x42650000), SPH_C32(0xa65d0000),
+	  SPH_C32(0x68a944e8), SPH_C32(0x073eac5b), SPH_C32(0x6a0072e5),
+	  SPH_C32(0xbe735c4e) },
+	{ SPH_C32(0xd10b0003), SPH_C32(0xd727e400), SPH_C32(0xdb680000),
+	  SPH_C32(0xdc8b0000), SPH_C32(0x73be3df9), SPH_C32(0x01e6400b),
+	  SPH_C32(0x180ca989), SPH_C32(0x2b17747e), SPH_C32(0x9b6b0001),
+	  SPH_C32(0xaddd6700), SPH_C32(0x679a0000), SPH_C32(0x376b0000),
+	  SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b), SPH_C32(0x5d5c8439),
+	  SPH_C32(0x5074942a) },
+	{ SPH_C32(0xdd790003), SPH_C32(0x9ec2eb00), SPH_C32(0x99110000),
+	  SPH_C32(0x80610000), SPH_C32(0x40140de3), SPH_C32(0x1464651f),
+	  SPH_C32(0x8dafe2f2), SPH_C32(0x9f5c74ee), SPH_C32(0x65490001),
+	  SPH_C32(0x0a856200), SPH_C32(0x424b0000), SPH_C32(0xc00b0000),
+	  SPH_C32(0xcffc5d23), SPH_C32(0xe10b180b), SPH_C32(0x138c272c),
+	  SPH_C32(0xf1576bb5) },
+	{ SPH_C32(0x2f290003), SPH_C32(0x707fe100), SPH_C32(0xfeb90000),
+	  SPH_C32(0x2beb0000), SPH_C32(0xfa8f4523), SPH_C32(0x1e32b86b),
+	  SPH_C32(0x56dc0a9c), SPH_C32(0x8a348be1), SPH_C32(0x693b0001),
+	  SPH_C32(0x43606d00), SPH_C32(0x00320000), SPH_C32(0x9ce10000),
+	  SPH_C32(0xfc566d39), SPH_C32(0xf4893d1f), SPH_C32(0x862f6c57),
+	  SPH_C32(0x451c6b25) },
+	{ SPH_C32(0x235b0003), SPH_C32(0x399aee00), SPH_C32(0xbcc00000),
+	  SPH_C32(0x77010000), SPH_C32(0xc9257539), SPH_C32(0x0bb09d7f),
+	  SPH_C32(0xc37f41e7), SPH_C32(0x3e7f8b71), SPH_C32(0x97190001),
+	  SPH_C32(0xe4386800), SPH_C32(0x25e30000), SPH_C32(0x6b810000),
+	  SPH_C32(0x756715e3), SPH_C32(0xeb5dc57f), SPH_C32(0xc8ffcf42),
+	  SPH_C32(0xe43f94ba) },
+	{ SPH_C32(0x94130003), SPH_C32(0x7292f300), SPH_C32(0x22020000),
+	  SPH_C32(0xe7c30000), SPH_C32(0x6d7229d5), SPH_C32(0x22f5d5dd),
+	  SPH_C32(0x0eb00f39), SPH_C32(0xf42480a1), SPH_C32(0x23560001),
+	  SPH_C32(0xbbac6100), SPH_C32(0x50000000), SPH_C32(0xc2da0000),
+	  SPH_C32(0x644c4455), SPH_C32(0x5097112e), SPH_C32(0x3b78922f),
+	  SPH_C32(0x95b57f14) },
+	{ SPH_C32(0x98610003), SPH_C32(0x3b77fc00), SPH_C32(0x607b0000),
+	  SPH_C32(0xbb290000), SPH_C32(0x5ed819cf), SPH_C32(0x3777f0c9),
+	  SPH_C32(0x9b134442), SPH_C32(0x406f8031), SPH_C32(0xdd740001),
+	  SPH_C32(0x1cf46400), SPH_C32(0x75d10000), SPH_C32(0x35ba0000),
+	  SPH_C32(0xed7d3c8f), SPH_C32(0x4f43e94e), SPH_C32(0x75a8313a),
+	  SPH_C32(0x3496808b) },
+	{ SPH_C32(0x6a310003), SPH_C32(0xd5caf600), SPH_C32(0x07d30000),
+	  SPH_C32(0x10a30000), SPH_C32(0xe443510f), SPH_C32(0x3d212dbd),
+	  SPH_C32(0x4060ac2c), SPH_C32(0x55077f3e), SPH_C32(0xd1060001),
+	  SPH_C32(0x55116b00), SPH_C32(0x37a80000), SPH_C32(0x69500000),
+	  SPH_C32(0xded70c95), SPH_C32(0x5ac1cc5a), SPH_C32(0xe00b7a41),
+	  SPH_C32(0x80dd801b) },
+	{ SPH_C32(0x66430003), SPH_C32(0x9c2ff900), SPH_C32(0x45aa0000),
+	  SPH_C32(0x4c490000), SPH_C32(0xd7e96115), SPH_C32(0x28a308a9),
+	  SPH_C32(0xd5c3e757), SPH_C32(0xe14c7fae), SPH_C32(0x2f240001),
+	  SPH_C32(0xf2496e00), SPH_C32(0x12790000), SPH_C32(0x9e300000),
+	  SPH_C32(0x57e6744f), SPH_C32(0x4515343a), SPH_C32(0xaedbd954),
+	  SPH_C32(0x21fe7f84) },
+	{ SPH_C32(0x69360003), SPH_C32(0xc156e200), SPH_C32(0xecf20000),
+	  SPH_C32(0x293a0000), SPH_C32(0x513f5c55), SPH_C32(0xafaeb14e),
+	  SPH_C32(0x7e28bf9f), SPH_C32(0xeed69f40), SPH_C32(0x664e0001),
+	  SPH_C32(0x1e197600), SPH_C32(0xa96a0000), SPH_C32(0xf9920000),
+	  SPH_C32(0x7a805079), SPH_C32(0x738484f8), SPH_C32(0x2dc4349f),
+	  SPH_C32(0x4a868bcb) },
+	{ SPH_C32(0x65440003), SPH_C32(0x88b3ed00), SPH_C32(0xae8b0000),
+	  SPH_C32(0x75d00000), SPH_C32(0x62956c4f), SPH_C32(0xba2c945a),
+	  SPH_C32(0xeb8bf4e4), SPH_C32(0x5a9d9fd0), SPH_C32(0x986c0001),
+	  SPH_C32(0xb9417300), SPH_C32(0x8cbb0000), SPH_C32(0x0ef20000),
+	  SPH_C32(0xf3b128a3), SPH_C32(0x6c507c98), SPH_C32(0x6314978a),
+	  SPH_C32(0xeba57454) },
+	{ SPH_C32(0x97140003), SPH_C32(0x660ee700), SPH_C32(0xc9230000),
+	  SPH_C32(0xde5a0000), SPH_C32(0xd80e248f), SPH_C32(0xb07a492e),
+	  SPH_C32(0x30f81c8a), SPH_C32(0x4ff560df), SPH_C32(0x941e0001),
+	  SPH_C32(0xf0a47c00), SPH_C32(0xcec20000), SPH_C32(0x52180000),
+	  SPH_C32(0xc01b18b9), SPH_C32(0x79d2598c), SPH_C32(0xf6b7dcf1),
+	  SPH_C32(0x5fee74c4) },
+	{ SPH_C32(0x9b660003), SPH_C32(0x2febe800), SPH_C32(0x8b5a0000),
+	  SPH_C32(0x82b00000), SPH_C32(0xeba41495), SPH_C32(0xa5f86c3a),
+	  SPH_C32(0xa55b57f1), SPH_C32(0xfbbe604f), SPH_C32(0x6a3c0001),
+	  SPH_C32(0x57fc7900), SPH_C32(0xeb130000), SPH_C32(0xa5780000),
+	  SPH_C32(0x492a6063), SPH_C32(0x6606a1ec), SPH_C32(0xb8677fe4),
+	  SPH_C32(0xfecd8b5b) },
+	{ SPH_C32(0x2c2e0003), SPH_C32(0x64e3f500), SPH_C32(0x15980000),
+	  SPH_C32(0x12720000), SPH_C32(0x4ff34879), SPH_C32(0x8cbd2498),
+	  SPH_C32(0x6894192f), SPH_C32(0x31e56b9f), SPH_C32(0xde730001),
+	  SPH_C32(0x08687000), SPH_C32(0x9ef00000), SPH_C32(0x0c230000),
+	  SPH_C32(0x580131d5), SPH_C32(0xddcc75bd), SPH_C32(0x4be02289),
+	  SPH_C32(0x8f4760f5) },
+	{ SPH_C32(0x205c0003), SPH_C32(0x2d06fa00), SPH_C32(0x57e10000),
+	  SPH_C32(0x4e980000), SPH_C32(0x7c597863), SPH_C32(0x993f018c),
+	  SPH_C32(0xfd375254), SPH_C32(0x85ae6b0f), SPH_C32(0x20510001),
+	  SPH_C32(0xaf307500), SPH_C32(0xbb210000), SPH_C32(0xfb430000),
+	  SPH_C32(0xd130490f), SPH_C32(0xc2188ddd), SPH_C32(0x0530819c),
+	  SPH_C32(0x2e649f6a) },
+	{ SPH_C32(0xd20c0003), SPH_C32(0xc3bbf000), SPH_C32(0x30490000),
+	  SPH_C32(0xe5120000), SPH_C32(0xc6c230a3), SPH_C32(0x9369dcf8),
+	  SPH_C32(0x2644ba3a), SPH_C32(0x90c69400), SPH_C32(0x2c230001),
+	  SPH_C32(0xe6d57a00), SPH_C32(0xf9580000), SPH_C32(0xa7a90000),
+	  SPH_C32(0xe29a7915), SPH_C32(0xd79aa8c9), SPH_C32(0x9093cae7),
+	  SPH_C32(0x9a2f9ffa) },
+	{ SPH_C32(0xde7e0003), SPH_C32(0x8a5eff00), SPH_C32(0x72300000),
+	  SPH_C32(0xb9f80000), SPH_C32(0xf56800b9), SPH_C32(0x86ebf9ec),
+	  SPH_C32(0xb3e7f141), SPH_C32(0x248d9490), SPH_C32(0xd2010001),
+	  SPH_C32(0x418d7f00), SPH_C32(0xdc890000), SPH_C32(0x50c90000),
+	  SPH_C32(0x6bab01cf), SPH_C32(0xc84e50a9), SPH_C32(0xde4369f2),
+	  SPH_C32(0x3b0c6065) },
+	{ SPH_C32(0xeecf0001), SPH_C32(0x6f564000), SPH_C32(0xf33e0000),
+	  SPH_C32(0xa79e0000), SPH_C32(0xbdb57219), SPH_C32(0xb711ebc5),
+	  SPH_C32(0x4a3b40ba), SPH_C32(0xfeabf254), SPH_C32(0x9b060002),
+	  SPH_C32(0x61468000), SPH_C32(0x221e0000), SPH_C32(0x1d740000),
+	  SPH_C32(0x36715d27), SPH_C32(0x30495c92), SPH_C32(0xf11336a7),
+	  SPH_C32(0xfe1cdc7f) },
+	{ SPH_C32(0xe2bd0001), SPH_C32(0x26b34f00), SPH_C32(0xb1470000),
+	  SPH_C32(0xfb740000), SPH_C32(0x8e1f4203), SPH_C32(0xa293ced1),
+	  SPH_C32(0xdf980bc1), SPH_C32(0x4ae0f2c4), SPH_C32(0x65240002),
+	  SPH_C32(0xc61e8500), SPH_C32(0x07cf0000), SPH_C32(0xea140000),
+	  SPH_C32(0xbf4025fd), SPH_C32(0x2f9da4f2), SPH_C32(0xbfc395b2),
+	  SPH_C32(0x5f3f23e0) },
+	{ SPH_C32(0x10ed0001), SPH_C32(0xc80e4500), SPH_C32(0xd6ef0000),
+	  SPH_C32(0x50fe0000), SPH_C32(0x34840ac3), SPH_C32(0xa8c513a5),
+	  SPH_C32(0x04ebe3af), SPH_C32(0x5f880dcb), SPH_C32(0x69560002),
+	  SPH_C32(0x8ffb8a00), SPH_C32(0x45b60000), SPH_C32(0xb6fe0000),
+	  SPH_C32(0x8cea15e7), SPH_C32(0x3a1f81e6), SPH_C32(0x2a60dec9),
+	  SPH_C32(0xeb742370) },
+	{ SPH_C32(0x1c9f0001), SPH_C32(0x81eb4a00), SPH_C32(0x94960000),
+	  SPH_C32(0x0c140000), SPH_C32(0x072e3ad9), SPH_C32(0xbd4736b1),
+	  SPH_C32(0x9148a8d4), SPH_C32(0xebc30d5b), SPH_C32(0x97740002),
+	  SPH_C32(0x28a38f00), SPH_C32(0x60670000), SPH_C32(0x419e0000),
+	  SPH_C32(0x05db6d3d), SPH_C32(0x25cb7986), SPH_C32(0x64b07ddc),
+	  SPH_C32(0x4a57dcef) },
+	{ SPH_C32(0xabd70001), SPH_C32(0xcae35700), SPH_C32(0x0a540000),
+	  SPH_C32(0x9cd60000), SPH_C32(0xa3796635), SPH_C32(0x94027e13),
+	  SPH_C32(0x5c87e60a), SPH_C32(0x2198068b), SPH_C32(0x233b0002),
+	  SPH_C32(0x77378600), SPH_C32(0x15840000), SPH_C32(0xe8c50000),
+	  SPH_C32(0x14f03c8b), SPH_C32(0x9e01add7), SPH_C32(0x973720b1),
+	  SPH_C32(0x3bdd3741) },
+	{ SPH_C32(0xa7a50001), SPH_C32(0x83065800), SPH_C32(0x482d0000),
+	  SPH_C32(0xc03c0000), SPH_C32(0x90d3562f), SPH_C32(0x81805b07),
+	  SPH_C32(0xc924ad71), SPH_C32(0x95d3061b), SPH_C32(0xdd190002),
+	  SPH_C32(0xd06f8300), SPH_C32(0x30550000), SPH_C32(0x1fa50000),
+	  SPH_C32(0x9dc14451), SPH_C32(0x81d555b7), SPH_C32(0xd9e783a4),
+	  SPH_C32(0x9afec8de) },
+	{ SPH_C32(0x55f50001), SPH_C32(0x6dbb5200), SPH_C32(0x2f850000),
+	  SPH_C32(0x6bb60000), SPH_C32(0x2a481eef), SPH_C32(0x8bd68673),
+	  SPH_C32(0x1257451f), SPH_C32(0x80bbf914), SPH_C32(0xd16b0002),
+	  SPH_C32(0x998a8c00), SPH_C32(0x722c0000), SPH_C32(0x434f0000),
+	  SPH_C32(0xae6b744b), SPH_C32(0x945770a3), SPH_C32(0x4c44c8df),
+	  SPH_C32(0x2eb5c84e) },
+	{ SPH_C32(0x59870001), SPH_C32(0x245e5d00), SPH_C32(0x6dfc0000),
+	  SPH_C32(0x375c0000), SPH_C32(0x19e22ef5), SPH_C32(0x9e54a367),
+	  SPH_C32(0x87f40e64), SPH_C32(0x34f0f984), SPH_C32(0x2f490002),
+	  SPH_C32(0x3ed28900), SPH_C32(0x57fd0000), SPH_C32(0xb42f0000),
+	  SPH_C32(0x275a0c91), SPH_C32(0x8b8388c3), SPH_C32(0x02946bca),
+	  SPH_C32(0x8f9637d1) },
+	{ SPH_C32(0x56f20001), SPH_C32(0x79274600), SPH_C32(0xc4a40000),
+	  SPH_C32(0x522f0000), SPH_C32(0x9f3413b5), SPH_C32(0x19591a80),
+	  SPH_C32(0x2c1f56ac), SPH_C32(0x3b6a196a), SPH_C32(0x66230002),
+	  SPH_C32(0xd2829100), SPH_C32(0xecee0000), SPH_C32(0xd38d0000),
+	  SPH_C32(0x0a3c28a7), SPH_C32(0xbd123801), SPH_C32(0x818b8601),
+	  SPH_C32(0xe4eec39e) },
+	{ SPH_C32(0x5a800001), SPH_C32(0x30c24900), SPH_C32(0x86dd0000),
+	  SPH_C32(0x0ec50000), SPH_C32(0xac9e23af), SPH_C32(0x0cdb3f94),
+	  SPH_C32(0xb9bc1dd7), SPH_C32(0x8f2119fa), SPH_C32(0x98010002),
+	  SPH_C32(0x75da9400), SPH_C32(0xc93f0000), SPH_C32(0x24ed0000),
+	  SPH_C32(0x830d507d), SPH_C32(0xa2c6c061), SPH_C32(0xcf5b2514),
+	  SPH_C32(0x45cd3c01) },
+	{ SPH_C32(0xa8d00001), SPH_C32(0xde7f4300), SPH_C32(0xe1750000),
+	  SPH_C32(0xa54f0000), SPH_C32(0x16056b6f), SPH_C32(0x068de2e0),
+	  SPH_C32(0x62cff5b9), SPH_C32(0x9a49e6f5), SPH_C32(0x94730002),
+	  SPH_C32(0x3c3f9b00), SPH_C32(0x8b460000), SPH_C32(0x78070000),
+	  SPH_C32(0xb0a76067), SPH_C32(0xb744e575), SPH_C32(0x5af86e6f),
+	  SPH_C32(0xf1863c91) },
+	{ SPH_C32(0xa4a20001), SPH_C32(0x979a4c00), SPH_C32(0xa30c0000),
+	  SPH_C32(0xf9a50000), SPH_C32(0x25af5b75), SPH_C32(0x130fc7f4),
+	  SPH_C32(0xf76cbec2), SPH_C32(0x2e02e665), SPH_C32(0x6a510002),
+	  SPH_C32(0x9b679e00), SPH_C32(0xae970000), SPH_C32(0x8f670000),
+	  SPH_C32(0x399618bd), SPH_C32(0xa8901d15), SPH_C32(0x1428cd7a),
+	  SPH_C32(0x50a5c30e) },
+	{ SPH_C32(0x13ea0001), SPH_C32(0xdc925100), SPH_C32(0x3dce0000),
+	  SPH_C32(0x69670000), SPH_C32(0x81f80799), SPH_C32(0x3a4a8f56),
+	  SPH_C32(0x3aa3f01c), SPH_C32(0xe459edb5), SPH_C32(0xde1e0002),
+	  SPH_C32(0xc4f39700), SPH_C32(0xdb740000), SPH_C32(0x263c0000),
+	  SPH_C32(0x28bd490b), SPH_C32(0x135ac944), SPH_C32(0xe7af9017),
+	  SPH_C32(0x212f28a0) },
+	{ SPH_C32(0x1f980001), SPH_C32(0x95775e00), SPH_C32(0x7fb70000),
+	  SPH_C32(0x358d0000), SPH_C32(0xb2523783), SPH_C32(0x2fc8aa42),
+	  SPH_C32(0xaf00bb67), SPH_C32(0x5012ed25), SPH_C32(0x203c0002),
+	  SPH_C32(0x63ab9200), SPH_C32(0xfea50000), SPH_C32(0xd15c0000),
+	  SPH_C32(0xa18c31d1), SPH_C32(0x0c8e3124), SPH_C32(0xa97f3302),
+	  SPH_C32(0x800cd73f) },
+	{ SPH_C32(0xedc80001), SPH_C32(0x7bca5400), SPH_C32(0x181f0000),
+	  SPH_C32(0x9e070000), SPH_C32(0x08c97f43), SPH_C32(0x259e7736),
+	  SPH_C32(0x74735309), SPH_C32(0x457a122a), SPH_C32(0x2c4e0002),
+	  SPH_C32(0x2a4e9d00), SPH_C32(0xbcdc0000), SPH_C32(0x8db60000),
+	  SPH_C32(0x922601cb), SPH_C32(0x190c1430), SPH_C32(0x3cdc7879),
+	  SPH_C32(0x3447d7af) },
+	{ SPH_C32(0xe1ba0001), SPH_C32(0x322f5b00), SPH_C32(0x5a660000),
+	  SPH_C32(0xc2ed0000), SPH_C32(0x3b634f59), SPH_C32(0x301c5222),
+	  SPH_C32(0xe1d01872), SPH_C32(0xf13112ba), SPH_C32(0xd26c0002),
+	  SPH_C32(0x8d169800), SPH_C32(0x990d0000), SPH_C32(0x7ad60000),
+	  SPH_C32(0x1b177911), SPH_C32(0x06d8ec50), SPH_C32(0x720cdb6c),
+	  SPH_C32(0x95642830) },
+	{ SPH_C32(0x9b6b0001), SPH_C32(0xaddd6700), SPH_C32(0x679a0000),
+	  SPH_C32(0x376b0000), SPH_C32(0x46cd25f9), SPH_C32(0xfedfe06b),
+	  SPH_C32(0x5d5c8439), SPH_C32(0x5074942a), SPH_C32(0x4a600002),
+	  SPH_C32(0x7afa8300), SPH_C32(0xbcf20000), SPH_C32(0xebe00000),
+	  SPH_C32(0x35731800), SPH_C32(0xff39a060), SPH_C32(0x45502db0),
+	  SPH_C32(0x7b63e054) },
+	{ SPH_C32(0x97190001), SPH_C32(0xe4386800), SPH_C32(0x25e30000),
+	  SPH_C32(0x6b810000), SPH_C32(0x756715e3), SPH_C32(0xeb5dc57f),
+	  SPH_C32(0xc8ffcf42), SPH_C32(0xe43f94ba), SPH_C32(0xb4420002),
+	  SPH_C32(0xdda28600), SPH_C32(0x99230000), SPH_C32(0x1c800000),
+	  SPH_C32(0xbc4260da), SPH_C32(0xe0ed5800), SPH_C32(0x0b808ea5),
+	  SPH_C32(0xda401fcb) },
+	{ SPH_C32(0x65490001), SPH_C32(0x0a856200), SPH_C32(0x424b0000),
+	  SPH_C32(0xc00b0000), SPH_C32(0xcffc5d23), SPH_C32(0xe10b180b),
+	  SPH_C32(0x138c272c), SPH_C32(0xf1576bb5), SPH_C32(0xb8300002),
+	  SPH_C32(0x94478900), SPH_C32(0xdb5a0000), SPH_C32(0x406a0000),
+	  SPH_C32(0x8fe850c0), SPH_C32(0xf56f7d14), SPH_C32(0x9e23c5de),
+	  SPH_C32(0x6e0b1f5b) },
+	{ SPH_C32(0x693b0001), SPH_C32(0x43606d00), SPH_C32(0x00320000),
+	  SPH_C32(0x9ce10000), SPH_C32(0xfc566d39), SPH_C32(0xf4893d1f),
+	  SPH_C32(0x862f6c57), SPH_C32(0x451c6b25), SPH_C32(0x46120002),
+	  SPH_C32(0x331f8c00), SPH_C32(0xfe8b0000), SPH_C32(0xb70a0000),
+	  SPH_C32(0x06d9281a), SPH_C32(0xeabb8574), SPH_C32(0xd0f366cb),
+	  SPH_C32(0xcf28e0c4) },
+	{ SPH_C32(0xde730001), SPH_C32(0x08687000), SPH_C32(0x9ef00000),
+	  SPH_C32(0x0c230000), SPH_C32(0x580131d5), SPH_C32(0xddcc75bd),
+	  SPH_C32(0x4be02289), SPH_C32(0x8f4760f5), SPH_C32(0xf25d0002),
+	  SPH_C32(0x6c8b8500), SPH_C32(0x8b680000), SPH_C32(0x1e510000),
+	  SPH_C32(0x17f279ac), SPH_C32(0x51715125), SPH_C32(0x23743ba6),
+	  SPH_C32(0xbea20b6a) },
+	{ SPH_C32(0xd2010001), SPH_C32(0x418d7f00), SPH_C32(0xdc890000),
+	  SPH_C32(0x50c90000), SPH_C32(0x6bab01cf), SPH_C32(0xc84e50a9),
+	  SPH_C32(0xde4369f2), SPH_C32(0x3b0c6065), SPH_C32(0x0c7f0002),
+	  SPH_C32(0xcbd38000), SPH_C32(0xaeb90000), SPH_C32(0xe9310000),
+	  SPH_C32(0x9ec30176), SPH_C32(0x4ea5a945), SPH_C32(0x6da498b3),
+	  SPH_C32(0x1f81f4f5) },
+	{ SPH_C32(0x20510001), SPH_C32(0xaf307500), SPH_C32(0xbb210000),
+	  SPH_C32(0xfb430000), SPH_C32(0xd130490f), SPH_C32(0xc2188ddd),
+	  SPH_C32(0x0530819c), SPH_C32(0x2e649f6a), SPH_C32(0x000d0002),
+	  SPH_C32(0x82368f00), SPH_C32(0xecc00000), SPH_C32(0xb5db0000),
+	  SPH_C32(0xad69316c), SPH_C32(0x5b278c51), SPH_C32(0xf807d3c8),
+	  SPH_C32(0xabcaf465) },
+	{ SPH_C32(0x2c230001), SPH_C32(0xe6d57a00), SPH_C32(0xf9580000),
+	  SPH_C32(0xa7a90000), SPH_C32(0xe29a7915), SPH_C32(0xd79aa8c9),
+	  SPH_C32(0x9093cae7), SPH_C32(0x9a2f9ffa), SPH_C32(0xfe2f0002),
+	  SPH_C32(0x256e8a00), SPH_C32(0xc9110000), SPH_C32(0x42bb0000),
+	  SPH_C32(0x245849b6), SPH_C32(0x44f37431), SPH_C32(0xb6d770dd),
+	  SPH_C32(0x0ae90bfa) },
+	{ SPH_C32(0x23560001), SPH_C32(0xbbac6100), SPH_C32(0x50000000),
+	  SPH_C32(0xc2da0000), SPH_C32(0x644c4455), SPH_C32(0x5097112e),
+	  SPH_C32(0x3b78922f), SPH_C32(0x95b57f14), SPH_C32(0xb7450002),
+	  SPH_C32(0xc93e9200), SPH_C32(0x72020000), SPH_C32(0x25190000),
+	  SPH_C32(0x093e6d80), SPH_C32(0x7262c4f3), SPH_C32(0x35c89d16),
+	  SPH_C32(0x6191ffb5) },
+	{ SPH_C32(0x2f240001), SPH_C32(0xf2496e00), SPH_C32(0x12790000),
+	  SPH_C32(0x9e300000), SPH_C32(0x57e6744f), SPH_C32(0x4515343a),
+	  SPH_C32(0xaedbd954), SPH_C32(0x21fe7f84), SPH_C32(0x49670002),
+	  SPH_C32(0x6e669700), SPH_C32(0x57d30000), SPH_C32(0xd2790000),
+	  SPH_C32(0x800f155a), SPH_C32(0x6db63c93), SPH_C32(0x7b183e03),
+	  SPH_C32(0xc0b2002a) },
+	{ SPH_C32(0xdd740001), SPH_C32(0x1cf46400), SPH_C32(0x75d10000),
+	  SPH_C32(0x35ba0000), SPH_C32(0xed7d3c8f), SPH_C32(0x4f43e94e),
+	  SPH_C32(0x75a8313a), SPH_C32(0x3496808b), SPH_C32(0x45150002),
+	  SPH_C32(0x27839800), SPH_C32(0x15aa0000), SPH_C32(0x8e930000),
+	  SPH_C32(0xb3a52540), SPH_C32(0x78341987), SPH_C32(0xeebb7578),
+	  SPH_C32(0x74f900ba) },
+	{ SPH_C32(0xd1060001), SPH_C32(0x55116b00), SPH_C32(0x37a80000),
+	  SPH_C32(0x69500000), SPH_C32(0xded70c95), SPH_C32(0x5ac1cc5a),
+	  SPH_C32(0xe00b7a41), SPH_C32(0x80dd801b), SPH_C32(0xbb370002),
+	  SPH_C32(0x80db9d00), SPH_C32(0x307b0000), SPH_C32(0x79f30000),
+	  SPH_C32(0x3a945d9a), SPH_C32(0x67e0e1e7), SPH_C32(0xa06bd66d),
+	  SPH_C32(0xd5daff25) },
+	{ SPH_C32(0x664e0001), SPH_C32(0x1e197600), SPH_C32(0xa96a0000),
+	  SPH_C32(0xf9920000), SPH_C32(0x7a805079), SPH_C32(0x738484f8),
+	  SPH_C32(0x2dc4349f), SPH_C32(0x4a868bcb), SPH_C32(0x0f780002),
+	  SPH_C32(0xdf4f9400), SPH_C32(0x45980000), SPH_C32(0xd0a80000),
+	  SPH_C32(0x2bbf0c2c), SPH_C32(0xdc2a35b6), SPH_C32(0x53ec8b00),
+	  SPH_C32(0xa450148b) },
+	{ SPH_C32(0x6a3c0001), SPH_C32(0x57fc7900), SPH_C32(0xeb130000),
+	  SPH_C32(0xa5780000), SPH_C32(0x492a6063), SPH_C32(0x6606a1ec),
+	  SPH_C32(0xb8677fe4), SPH_C32(0xfecd8b5b), SPH_C32(0xf15a0002),
+	  SPH_C32(0x78179100), SPH_C32(0x60490000), SPH_C32(0x27c80000),
+	  SPH_C32(0xa28e74f6), SPH_C32(0xc3fecdd6), SPH_C32(0x1d3c2815),
+	  SPH_C32(0x0573eb14) },
+	{ SPH_C32(0x986c0001), SPH_C32(0xb9417300), SPH_C32(0x8cbb0000),
+	  SPH_C32(0x0ef20000), SPH_C32(0xf3b128a3), SPH_C32(0x6c507c98),
+	  SPH_C32(0x6314978a), SPH_C32(0xeba57454), SPH_C32(0xfd280002),
+	  SPH_C32(0x31f29e00), SPH_C32(0x22300000), SPH_C32(0x7b220000),
+	  SPH_C32(0x912444ec), SPH_C32(0xd67ce8c2), SPH_C32(0x889f636e),
+	  SPH_C32(0xb138eb84) },
+	{ SPH_C32(0x941e0001), SPH_C32(0xf0a47c00), SPH_C32(0xcec20000),
+	  SPH_C32(0x52180000), SPH_C32(0xc01b18b9), SPH_C32(0x79d2598c),
+	  SPH_C32(0xf6b7dcf1), SPH_C32(0x5fee74c4), SPH_C32(0x030a0002),
+	  SPH_C32(0x96aa9b00), SPH_C32(0x07e10000), SPH_C32(0x8c420000),
+	  SPH_C32(0x18153c36), SPH_C32(0xc9a810a2), SPH_C32(0xc64fc07b),
+	  SPH_C32(0x101b141b) },
+	{ SPH_C32(0x3fa90001), SPH_C32(0x74ea4300), SPH_C32(0x6dd20000),
+	  SPH_C32(0x510a0000), SPH_C32(0xbeb7373e), SPH_C32(0x78611737),
+	  SPH_C32(0xfe785bad), SPH_C32(0x7bd4ce7f), SPH_C32(0x3fc40002),
+	  SPH_C32(0xb871a400), SPH_C32(0x28560000), SPH_C32(0x7b150000),
+	  SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce), SPH_C32(0x5237e933),
+	  SPH_C32(0xd5bc862a) },
+	{ SPH_C32(0x33db0001), SPH_C32(0x3d0f4c00), SPH_C32(0x2fab0000),
+	  SPH_C32(0x0de00000), SPH_C32(0x8d1d0724), SPH_C32(0x6de33223),
+	  SPH_C32(0x6bdb10d6), SPH_C32(0xcf9fceef), SPH_C32(0xc1e60002),
+	  SPH_C32(0x1f29a100), SPH_C32(0x0d870000), SPH_C32(0x8c750000),
+	  SPH_C32(0x473a373a), SPH_C32(0xa92353ae), SPH_C32(0x1ce74a26),
+	  SPH_C32(0x749f79b5) },
+	{ SPH_C32(0xc18b0001), SPH_C32(0xd3b24600), SPH_C32(0x48030000),
+	  SPH_C32(0xa66a0000), SPH_C32(0x37864fe4), SPH_C32(0x67b5ef57),
+	  SPH_C32(0xb0a8f8b8), SPH_C32(0xdaf731e0), SPH_C32(0xcd940002),
+	  SPH_C32(0x56ccae00), SPH_C32(0x4ffe0000), SPH_C32(0xd09f0000),
+	  SPH_C32(0x74900720), SPH_C32(0xbca176ba), SPH_C32(0x8944015d),
+	  SPH_C32(0xc0d47925) },
+	{ SPH_C32(0xcdf90001), SPH_C32(0x9a574900), SPH_C32(0x0a7a0000),
+	  SPH_C32(0xfa800000), SPH_C32(0x042c7ffe), SPH_C32(0x7237ca43),
+	  SPH_C32(0x250bb3c3), SPH_C32(0x6ebc3170), SPH_C32(0x33b60002),
+	  SPH_C32(0xf194ab00), SPH_C32(0x6a2f0000), SPH_C32(0x27ff0000),
+	  SPH_C32(0xfda17ffa), SPH_C32(0xa3758eda), SPH_C32(0xc794a248),
+	  SPH_C32(0x61f786ba) },
+	{ SPH_C32(0x7ab10001), SPH_C32(0xd15f5400), SPH_C32(0x94b80000),
+	  SPH_C32(0x6a420000), SPH_C32(0xa07b2312), SPH_C32(0x5b7282e1),
+	  SPH_C32(0xe8c4fd1d), SPH_C32(0xa4e73aa0), SPH_C32(0x87f90002),
+	  SPH_C32(0xae00a200), SPH_C32(0x1fcc0000), SPH_C32(0x8ea40000),
+	  SPH_C32(0xec8a2e4c), SPH_C32(0x18bf5a8b), SPH_C32(0x3413ff25),
+	  SPH_C32(0x107d6d14) },
+	{ SPH_C32(0x76c30001), SPH_C32(0x98ba5b00), SPH_C32(0xd6c10000),
+	  SPH_C32(0x36a80000), SPH_C32(0x93d11308), SPH_C32(0x4ef0a7f5),
+	  SPH_C32(0x7d67b666), SPH_C32(0x10ac3a30), SPH_C32(0x79db0002),
+	  SPH_C32(0x0958a700), SPH_C32(0x3a1d0000), SPH_C32(0x79c40000),
+	  SPH_C32(0x65bb5696), SPH_C32(0x076ba2eb), SPH_C32(0x7ac35c30),
+	  SPH_C32(0xb15e928b) },
+	{ SPH_C32(0x84930001), SPH_C32(0x76075100), SPH_C32(0xb1690000),
+	  SPH_C32(0x9d220000), SPH_C32(0x294a5bc8), SPH_C32(0x44a67a81),
+	  SPH_C32(0xa6145e08), SPH_C32(0x05c4c53f), SPH_C32(0x75a90002),
+	  SPH_C32(0x40bda800), SPH_C32(0x78640000), SPH_C32(0x252e0000),
+	  SPH_C32(0x5611668c), SPH_C32(0x12e987ff), SPH_C32(0xef60174b),
+	  SPH_C32(0x0515921b) },
+	{ SPH_C32(0x88e10001), SPH_C32(0x3fe25e00), SPH_C32(0xf3100000),
+	  SPH_C32(0xc1c80000), SPH_C32(0x1ae06bd2), SPH_C32(0x51245f95),
+	  SPH_C32(0x33b71573), SPH_C32(0xb18fc5af), SPH_C32(0x8b8b0002),
+	  SPH_C32(0xe7e5ad00), SPH_C32(0x5db50000), SPH_C32(0xd24e0000),
+	  SPH_C32(0xdf201e56), SPH_C32(0x0d3d7f9f), SPH_C32(0xa1b0b45e),
+	  SPH_C32(0xa4366d84) },
+	{ SPH_C32(0x87940001), SPH_C32(0x629b4500), SPH_C32(0x5a480000),
+	  SPH_C32(0xa4bb0000), SPH_C32(0x9c365692), SPH_C32(0xd629e672),
+	  SPH_C32(0x985c4dbb), SPH_C32(0xbe152541), SPH_C32(0xc2e10002),
+	  SPH_C32(0x0bb5b500), SPH_C32(0xe6a60000), SPH_C32(0xb5ec0000),
+	  SPH_C32(0xf2463a60), SPH_C32(0x3baccf5d), SPH_C32(0x22af5995),
+	  SPH_C32(0xcf4e99cb) },
+	{ SPH_C32(0x8be60001), SPH_C32(0x2b7e4a00), SPH_C32(0x18310000),
+	  SPH_C32(0xf8510000), SPH_C32(0xaf9c6688), SPH_C32(0xc3abc366),
+	  SPH_C32(0x0dff06c0), SPH_C32(0x0a5e25d1), SPH_C32(0x3cc30002),
+	  SPH_C32(0xacedb000), SPH_C32(0xc3770000), SPH_C32(0x428c0000),
+	  SPH_C32(0x7b7742ba), SPH_C32(0x2478373d), SPH_C32(0x6c7ffa80),
+	  SPH_C32(0x6e6d6654) },
+	{ SPH_C32(0x79b60001), SPH_C32(0xc5c34000), SPH_C32(0x7f990000),
+	  SPH_C32(0x53db0000), SPH_C32(0x15072e48), SPH_C32(0xc9fd1e12),
+	  SPH_C32(0xd68ceeae), SPH_C32(0x1f36dade), SPH_C32(0x30b10002),
+	  SPH_C32(0xe508bf00), SPH_C32(0x810e0000), SPH_C32(0x1e660000),
+	  SPH_C32(0x48dd72a0), SPH_C32(0x31fa1229), SPH_C32(0xf9dcb1fb),
+	  SPH_C32(0xda2666c4) },
+	{ SPH_C32(0x75c40001), SPH_C32(0x8c264f00), SPH_C32(0x3de00000),
+	  SPH_C32(0x0f310000), SPH_C32(0x26ad1e52), SPH_C32(0xdc7f3b06),
+	  SPH_C32(0x432fa5d5), SPH_C32(0xab7dda4e), SPH_C32(0xce930002),
+	  SPH_C32(0x4250ba00), SPH_C32(0xa4df0000), SPH_C32(0xe9060000),
+	  SPH_C32(0xc1ec0a7a), SPH_C32(0x2e2eea49), SPH_C32(0xb70c12ee),
+	  SPH_C32(0x7b05995b) },
+	{ SPH_C32(0xc28c0001), SPH_C32(0xc72e5200), SPH_C32(0xa3220000),
+	  SPH_C32(0x9ff30000), SPH_C32(0x82fa42be), SPH_C32(0xf53a73a4),
+	  SPH_C32(0x8ee0eb0b), SPH_C32(0x6126d19e), SPH_C32(0x7adc0002),
+	  SPH_C32(0x1dc4b300), SPH_C32(0xd13c0000), SPH_C32(0x405d0000),
+	  SPH_C32(0xd0c75bcc), SPH_C32(0x95e43e18), SPH_C32(0x448b4f83),
+	  SPH_C32(0x0a8f72f5) },
+	{ SPH_C32(0xcefe0001), SPH_C32(0x8ecb5d00), SPH_C32(0xe15b0000),
+	  SPH_C32(0xc3190000), SPH_C32(0xb15072a4), SPH_C32(0xe0b856b0),
+	  SPH_C32(0x1b43a070), SPH_C32(0xd56dd10e), SPH_C32(0x84fe0002),
+	  SPH_C32(0xba9cb600), SPH_C32(0xf4ed0000), SPH_C32(0xb73d0000),
+	  SPH_C32(0x59f62316), SPH_C32(0x8a30c678), SPH_C32(0x0a5bec96),
+	  SPH_C32(0xabac8d6a) },
+	{ SPH_C32(0x3cae0001), SPH_C32(0x60765700), SPH_C32(0x86f30000),
+	  SPH_C32(0x68930000), SPH_C32(0x0bcb3a64), SPH_C32(0xeaee8bc4),
+	  SPH_C32(0xc030481e), SPH_C32(0xc0052e01), SPH_C32(0x888c0002),
+	  SPH_C32(0xf379b900), SPH_C32(0xb6940000), SPH_C32(0xebd70000),
+	  SPH_C32(0x6a5c130c), SPH_C32(0x9fb2e36c), SPH_C32(0x9ff8a7ed),
+	  SPH_C32(0x1fe78dfa) },
+	{ SPH_C32(0x30dc0001), SPH_C32(0x29935800), SPH_C32(0xc48a0000),
+	  SPH_C32(0x34790000), SPH_C32(0x38610a7e), SPH_C32(0xff6caed0),
+	  SPH_C32(0x55930365), SPH_C32(0x744e2e91), SPH_C32(0x76ae0002),
+	  SPH_C32(0x5421bc00), SPH_C32(0x93450000), SPH_C32(0x1cb70000),
+	  SPH_C32(0xe36d6bd6), SPH_C32(0x80661b0c), SPH_C32(0xd12804f8),
+	  SPH_C32(0xbec47265) },
+	{ SPH_C32(0x4a0d0001), SPH_C32(0xb6616400), SPH_C32(0xf9760000),
+	  SPH_C32(0xc1ff0000), SPH_C32(0x45cf60de), SPH_C32(0x31af1c99),
+	  SPH_C32(0xe91f9f2e), SPH_C32(0xd50ba801), SPH_C32(0xeea20002),
+	  SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000), SPH_C32(0x8d810000),
+	  SPH_C32(0xcd090ac7), SPH_C32(0x7987573c), SPH_C32(0xe674f224),
+	  SPH_C32(0x50c3ba01) },
+	{ SPH_C32(0x467f0001), SPH_C32(0xff846b00), SPH_C32(0xbb0f0000),
+	  SPH_C32(0x9d150000), SPH_C32(0x766550c4), SPH_C32(0x242d398d),
+	  SPH_C32(0x7cbcd455), SPH_C32(0x6140a891), SPH_C32(0x10800002),
+	  SPH_C32(0x0495a200), SPH_C32(0x936b0000), SPH_C32(0x7ae10000),
+	  SPH_C32(0x4438721d), SPH_C32(0x6653af5c), SPH_C32(0xa8a45131),
+	  SPH_C32(0xf1e0459e) },
+	{ SPH_C32(0xb42f0001), SPH_C32(0x11396100), SPH_C32(0xdca70000),
+	  SPH_C32(0x369f0000), SPH_C32(0xccfe1804), SPH_C32(0x2e7be4f9),
+	  SPH_C32(0xa7cf3c3b), SPH_C32(0x7428579e), SPH_C32(0x1cf20002),
+	  SPH_C32(0x4d70ad00), SPH_C32(0xd1120000), SPH_C32(0x260b0000),
+	  SPH_C32(0x77924207), SPH_C32(0x73d18a48), SPH_C32(0x3d071a4a),
+	  SPH_C32(0x45ab450e) },
+	{ SPH_C32(0xb85d0001), SPH_C32(0x58dc6e00), SPH_C32(0x9ede0000),
+	  SPH_C32(0x6a750000), SPH_C32(0xff54281e), SPH_C32(0x3bf9c1ed),
+	  SPH_C32(0x326c7740), SPH_C32(0xc063570e), SPH_C32(0xe2d00002),
+	  SPH_C32(0xea28a800), SPH_C32(0xf4c30000), SPH_C32(0xd16b0000),
+	  SPH_C32(0xfea33add), SPH_C32(0x6c057228), SPH_C32(0x73d7b95f),
+	  SPH_C32(0xe488ba91) },
+	{ SPH_C32(0x0f150001), SPH_C32(0x13d47300), SPH_C32(0x001c0000),
+	  SPH_C32(0xfab70000), SPH_C32(0x5b0374f2), SPH_C32(0x12bc894f),
+	  SPH_C32(0xffa3399e), SPH_C32(0x0a385cde), SPH_C32(0x569f0002),
+	  SPH_C32(0xb5bca100), SPH_C32(0x81200000), SPH_C32(0x78300000),
+	  SPH_C32(0xef886b6b), SPH_C32(0xd7cfa679), SPH_C32(0x8050e432),
+	  SPH_C32(0x9502513f) },
+	{ SPH_C32(0x03670001), SPH_C32(0x5a317c00), SPH_C32(0x42650000),
+	  SPH_C32(0xa65d0000), SPH_C32(0x68a944e8), SPH_C32(0x073eac5b),
+	  SPH_C32(0x6a0072e5), SPH_C32(0xbe735c4e), SPH_C32(0xa8bd0002),
+	  SPH_C32(0x12e4a400), SPH_C32(0xa4f10000), SPH_C32(0x8f500000),
+	  SPH_C32(0x66b913b1), SPH_C32(0xc81b5e19), SPH_C32(0xce804727),
+	  SPH_C32(0x3421aea0) },
+	{ SPH_C32(0xf1370001), SPH_C32(0xb48c7600), SPH_C32(0x25cd0000),
+	  SPH_C32(0x0dd70000), SPH_C32(0xd2320c28), SPH_C32(0x0d68712f),
+	  SPH_C32(0xb1739a8b), SPH_C32(0xab1ba341), SPH_C32(0xa4cf0002),
+	  SPH_C32(0x5b01ab00), SPH_C32(0xe6880000), SPH_C32(0xd3ba0000),
+	  SPH_C32(0x551323ab), SPH_C32(0xdd997b0d), SPH_C32(0x5b230c5c),
+	  SPH_C32(0x806aae30) },
+	{ SPH_C32(0xfd450001), SPH_C32(0xfd697900), SPH_C32(0x67b40000),
+	  SPH_C32(0x513d0000), SPH_C32(0xe1983c32), SPH_C32(0x18ea543b),
+	  SPH_C32(0x24d0d1f0), SPH_C32(0x1f50a3d1), SPH_C32(0x5aed0002),
+	  SPH_C32(0xfc59ae00), SPH_C32(0xc3590000), SPH_C32(0x24da0000),
+	  SPH_C32(0xdc225b71), SPH_C32(0xc24d836d), SPH_C32(0x15f3af49),
+	  SPH_C32(0x214951af) },
+	{ SPH_C32(0xf2300001), SPH_C32(0xa0106200), SPH_C32(0xceec0000),
+	  SPH_C32(0x344e0000), SPH_C32(0x674e0172), SPH_C32(0x9fe7eddc),
+	  SPH_C32(0x8f3b8938), SPH_C32(0x10ca433f), SPH_C32(0x13870002),
+	  SPH_C32(0x1009b600), SPH_C32(0x784a0000), SPH_C32(0x43780000),
+	  SPH_C32(0xf1447f47), SPH_C32(0xf4dc33af), SPH_C32(0x96ec4282),
+	  SPH_C32(0x4a31a5e0) },
+	{ SPH_C32(0xfe420001), SPH_C32(0xe9f56d00), SPH_C32(0x8c950000),
+	  SPH_C32(0x68a40000), SPH_C32(0x54e43168), SPH_C32(0x8a65c8c8),
+	  SPH_C32(0x1a98c243), SPH_C32(0xa48143af), SPH_C32(0xeda50002),
+	  SPH_C32(0xb751b300), SPH_C32(0x5d9b0000), SPH_C32(0xb4180000),
+	  SPH_C32(0x7875079d), SPH_C32(0xeb08cbcf), SPH_C32(0xd83ce197),
+	  SPH_C32(0xeb125a7f) },
+	{ SPH_C32(0x0c120001), SPH_C32(0x07486700), SPH_C32(0xeb3d0000),
+	  SPH_C32(0xc32e0000), SPH_C32(0xee7f79a8), SPH_C32(0x803315bc),
+	  SPH_C32(0xc1eb2a2d), SPH_C32(0xb1e9bca0), SPH_C32(0xe1d70002),
+	  SPH_C32(0xfeb4bc00), SPH_C32(0x1fe20000), SPH_C32(0xe8f20000),
+	  SPH_C32(0x4bdf3787), SPH_C32(0xfe8aeedb), SPH_C32(0x4d9faaec),
+	  SPH_C32(0x5f595aef) },
+	{ SPH_C32(0x00600001), SPH_C32(0x4ead6800), SPH_C32(0xa9440000),
+	  SPH_C32(0x9fc40000), SPH_C32(0xddd549b2), SPH_C32(0x95b130a8),
+	  SPH_C32(0x54486156), SPH_C32(0x05a2bc30), SPH_C32(0x1ff50002),
+	  SPH_C32(0x59ecb900), SPH_C32(0x3a330000), SPH_C32(0x1f920000),
+	  SPH_C32(0xc2ee4f5d), SPH_C32(0xe15e16bb), SPH_C32(0x034f09f9),
+	  SPH_C32(0xfe7aa570) },
+	{ SPH_C32(0xb7280001), SPH_C32(0x05a57500), SPH_C32(0x37860000),
+	  SPH_C32(0x0f060000), SPH_C32(0x7982155e), SPH_C32(0xbcf4780a),
+	  SPH_C32(0x99872f88), SPH_C32(0xcff9b7e0), SPH_C32(0xabba0002),
+	  SPH_C32(0x0678b000), SPH_C32(0x4fd00000), SPH_C32(0xb6c90000),
+	  SPH_C32(0xd3c51eeb), SPH_C32(0x5a94c2ea), SPH_C32(0xf0c85494),
+	  SPH_C32(0x8ff04ede) },
+	{ SPH_C32(0xbb5a0001), SPH_C32(0x4c407a00), SPH_C32(0x75ff0000),
+	  SPH_C32(0x53ec0000), SPH_C32(0x4a282544), SPH_C32(0xa9765d1e),
+	  SPH_C32(0x0c2464f3), SPH_C32(0x7bb2b770), SPH_C32(0x55980002),
+	  SPH_C32(0xa120b500), SPH_C32(0x6a010000), SPH_C32(0x41a90000),
+	  SPH_C32(0x5af46631), SPH_C32(0x45403a8a), SPH_C32(0xbe18f781),
+	  SPH_C32(0x2ed3b141) },
+	{ SPH_C32(0x490a0001), SPH_C32(0xa2fd7000), SPH_C32(0x12570000),
+	  SPH_C32(0xf8660000), SPH_C32(0xf0b36d84), SPH_C32(0xa320806a),
+	  SPH_C32(0xd7578c9d), SPH_C32(0x6eda487f), SPH_C32(0x59ea0002),
+	  SPH_C32(0xe8c5ba00), SPH_C32(0x28780000), SPH_C32(0x1d430000),
+	  SPH_C32(0x695e562b), SPH_C32(0x50c21f9e), SPH_C32(0x2bbbbcfa),
+	  SPH_C32(0x9a98b1d1) },
+	{ SPH_C32(0x45780001), SPH_C32(0xeb187f00), SPH_C32(0x502e0000),
+	  SPH_C32(0xa48c0000), SPH_C32(0xc3195d9e), SPH_C32(0xb6a2a57e),
+	  SPH_C32(0x42f4c7e6), SPH_C32(0xda9148ef), SPH_C32(0xa7c80002),
+	  SPH_C32(0x4f9dbf00), SPH_C32(0x0da90000), SPH_C32(0xea230000),
+	  SPH_C32(0xe06f2ef1), SPH_C32(0x4f16e7fe), SPH_C32(0x656b1fef),
+	  SPH_C32(0x3bbb4e4e) },
+	{ SPH_C32(0x9b060002), SPH_C32(0x61468000), SPH_C32(0x221e0000),
+	  SPH_C32(0x1d740000), SPH_C32(0x36715d27), SPH_C32(0x30495c92),
+	  SPH_C32(0xf11336a7), SPH_C32(0xfe1cdc7f), SPH_C32(0x75c90003),
+	  SPH_C32(0x0e10c000), SPH_C32(0xd1200000), SPH_C32(0xbaea0000),
+	  SPH_C32(0x8bc42f3e), SPH_C32(0x8758b757), SPH_C32(0xbb28761d),
+	  SPH_C32(0x00b72e2b) },
+	{ SPH_C32(0x97740002), SPH_C32(0x28a38f00), SPH_C32(0x60670000),
+	  SPH_C32(0x419e0000), SPH_C32(0x05db6d3d), SPH_C32(0x25cb7986),
+	  SPH_C32(0x64b07ddc), SPH_C32(0x4a57dcef), SPH_C32(0x8beb0003),
+	  SPH_C32(0xa948c500), SPH_C32(0xf4f10000), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x02f557e4), SPH_C32(0x988c4f37), SPH_C32(0xf5f8d508),
+	  SPH_C32(0xa194d1b4) },
+	{ SPH_C32(0x65240002), SPH_C32(0xc61e8500), SPH_C32(0x07cf0000),
+	  SPH_C32(0xea140000), SPH_C32(0xbf4025fd), SPH_C32(0x2f9da4f2),
+	  SPH_C32(0xbfc395b2), SPH_C32(0x5f3f23e0), SPH_C32(0x87990003),
+	  SPH_C32(0xe0adca00), SPH_C32(0xb6880000), SPH_C32(0x11600000),
+	  SPH_C32(0x315f67fe), SPH_C32(0x8d0e6a23), SPH_C32(0x605b9e73),
+	  SPH_C32(0x15dfd124) },
+	{ SPH_C32(0x69560002), SPH_C32(0x8ffb8a00), SPH_C32(0x45b60000),
+	  SPH_C32(0xb6fe0000), SPH_C32(0x8cea15e7), SPH_C32(0x3a1f81e6),
+	  SPH_C32(0x2a60dec9), SPH_C32(0xeb742370), SPH_C32(0x79bb0003),
+	  SPH_C32(0x47f5cf00), SPH_C32(0x93590000), SPH_C32(0xe6000000),
+	  SPH_C32(0xb86e1f24), SPH_C32(0x92da9243), SPH_C32(0x2e8b3d66),
+	  SPH_C32(0xb4fc2ebb) },
+	{ SPH_C32(0xde1e0002), SPH_C32(0xc4f39700), SPH_C32(0xdb740000),
+	  SPH_C32(0x263c0000), SPH_C32(0x28bd490b), SPH_C32(0x135ac944),
+	  SPH_C32(0xe7af9017), SPH_C32(0x212f28a0), SPH_C32(0xcdf40003),
+	  SPH_C32(0x1861c600), SPH_C32(0xe6ba0000), SPH_C32(0x4f5b0000),
+	  SPH_C32(0xa9454e92), SPH_C32(0x29104612), SPH_C32(0xdd0c600b),
+	  SPH_C32(0xc576c515) },
+	{ SPH_C32(0xd26c0002), SPH_C32(0x8d169800), SPH_C32(0x990d0000),
+	  SPH_C32(0x7ad60000), SPH_C32(0x1b177911), SPH_C32(0x06d8ec50),
+	  SPH_C32(0x720cdb6c), SPH_C32(0x95642830), SPH_C32(0x33d60003),
+	  SPH_C32(0xbf39c300), SPH_C32(0xc36b0000), SPH_C32(0xb83b0000),
+	  SPH_C32(0x20743648), SPH_C32(0x36c4be72), SPH_C32(0x93dcc31e),
+	  SPH_C32(0x64553a8a) },
+	{ SPH_C32(0x203c0002), SPH_C32(0x63ab9200), SPH_C32(0xfea50000),
+	  SPH_C32(0xd15c0000), SPH_C32(0xa18c31d1), SPH_C32(0x0c8e3124),
+	  SPH_C32(0xa97f3302), SPH_C32(0x800cd73f), SPH_C32(0x3fa40003),
+	  SPH_C32(0xf6dccc00), SPH_C32(0x81120000), SPH_C32(0xe4d10000),
+	  SPH_C32(0x13de0652), SPH_C32(0x23469b66), SPH_C32(0x067f8865),
+	  SPH_C32(0xd01e3a1a) },
+	{ SPH_C32(0x2c4e0002), SPH_C32(0x2a4e9d00), SPH_C32(0xbcdc0000),
+	  SPH_C32(0x8db60000), SPH_C32(0x922601cb), SPH_C32(0x190c1430),
+	  SPH_C32(0x3cdc7879), SPH_C32(0x3447d7af), SPH_C32(0xc1860003),
+	  SPH_C32(0x5184c900), SPH_C32(0xa4c30000), SPH_C32(0x13b10000),
+	  SPH_C32(0x9aef7e88), SPH_C32(0x3c926306), SPH_C32(0x48af2b70),
+	  SPH_C32(0x713dc585) },
+	{ SPH_C32(0x233b0002), SPH_C32(0x77378600), SPH_C32(0x15840000),
+	  SPH_C32(0xe8c50000), SPH_C32(0x14f03c8b), SPH_C32(0x9e01add7),
+	  SPH_C32(0x973720b1), SPH_C32(0x3bdd3741), SPH_C32(0x88ec0003),
+	  SPH_C32(0xbdd4d100), SPH_C32(0x1fd00000), SPH_C32(0x74130000),
+	  SPH_C32(0xb7895abe), SPH_C32(0x0a03d3c4), SPH_C32(0xcbb0c6bb),
+	  SPH_C32(0x1a4531ca) },
+	{ SPH_C32(0x2f490002), SPH_C32(0x3ed28900), SPH_C32(0x57fd0000),
+	  SPH_C32(0xb42f0000), SPH_C32(0x275a0c91), SPH_C32(0x8b8388c3),
+	  SPH_C32(0x02946bca), SPH_C32(0x8f9637d1), SPH_C32(0x76ce0003),
+	  SPH_C32(0x1a8cd400), SPH_C32(0x3a010000), SPH_C32(0x83730000),
+	  SPH_C32(0x3eb82264), SPH_C32(0x15d72ba4), SPH_C32(0x856065ae),
+	  SPH_C32(0xbb66ce55) },
+	{ SPH_C32(0xdd190002), SPH_C32(0xd06f8300), SPH_C32(0x30550000),
+	  SPH_C32(0x1fa50000), SPH_C32(0x9dc14451), SPH_C32(0x81d555b7),
+	  SPH_C32(0xd9e783a4), SPH_C32(0x9afec8de), SPH_C32(0x7abc0003),
+	  SPH_C32(0x5369db00), SPH_C32(0x78780000), SPH_C32(0xdf990000),
+	  SPH_C32(0x0d12127e), SPH_C32(0x00550eb0), SPH_C32(0x10c32ed5),
+	  SPH_C32(0x0f2dcec5) },
+	{ SPH_C32(0xd16b0002), SPH_C32(0x998a8c00), SPH_C32(0x722c0000),
+	  SPH_C32(0x434f0000), SPH_C32(0xae6b744b), SPH_C32(0x945770a3),
+	  SPH_C32(0x4c44c8df), SPH_C32(0x2eb5c84e), SPH_C32(0x849e0003),
+	  SPH_C32(0xf431de00), SPH_C32(0x5da90000), SPH_C32(0x28f90000),
+	  SPH_C32(0x84236aa4), SPH_C32(0x1f81f6d0), SPH_C32(0x5e138dc0),
+	  SPH_C32(0xae0e315a) },
+	{ SPH_C32(0x66230002), SPH_C32(0xd2829100), SPH_C32(0xecee0000),
+	  SPH_C32(0xd38d0000), SPH_C32(0x0a3c28a7), SPH_C32(0xbd123801),
+	  SPH_C32(0x818b8601), SPH_C32(0xe4eec39e), SPH_C32(0x30d10003),
+	  SPH_C32(0xaba5d700), SPH_C32(0x284a0000), SPH_C32(0x81a20000),
+	  SPH_C32(0x95083b12), SPH_C32(0xa44b2281), SPH_C32(0xad94d0ad),
+	  SPH_C32(0xdf84daf4) },
+	{ SPH_C32(0x6a510002), SPH_C32(0x9b679e00), SPH_C32(0xae970000),
+	  SPH_C32(0x8f670000), SPH_C32(0x399618bd), SPH_C32(0xa8901d15),
+	  SPH_C32(0x1428cd7a), SPH_C32(0x50a5c30e), SPH_C32(0xcef30003),
+	  SPH_C32(0x0cfdd200), SPH_C32(0x0d9b0000), SPH_C32(0x76c20000),
+	  SPH_C32(0x1c3943c8), SPH_C32(0xbb9fdae1), SPH_C32(0xe34473b8),
+	  SPH_C32(0x7ea7256b) },
+	{ SPH_C32(0x98010002), SPH_C32(0x75da9400), SPH_C32(0xc93f0000),
+	  SPH_C32(0x24ed0000), SPH_C32(0x830d507d), SPH_C32(0xa2c6c061),
+	  SPH_C32(0xcf5b2514), SPH_C32(0x45cd3c01), SPH_C32(0xc2810003),
+	  SPH_C32(0x4518dd00), SPH_C32(0x4fe20000), SPH_C32(0x2a280000),
+	  SPH_C32(0x2f9373d2), SPH_C32(0xae1dfff5), SPH_C32(0x76e738c3),
+	  SPH_C32(0xcaec25fb) },
+	{ SPH_C32(0x94730002), SPH_C32(0x3c3f9b00), SPH_C32(0x8b460000),
+	  SPH_C32(0x78070000), SPH_C32(0xb0a76067), SPH_C32(0xb744e575),
+	  SPH_C32(0x5af86e6f), SPH_C32(0xf1863c91), SPH_C32(0x3ca30003),
+	  SPH_C32(0xe240d800), SPH_C32(0x6a330000), SPH_C32(0xdd480000),
+	  SPH_C32(0xa6a20b08), SPH_C32(0xb1c90795), SPH_C32(0x38379bd6),
+	  SPH_C32(0x6bcfda64) },
+	{ SPH_C32(0xeea20002), SPH_C32(0xa3cda700), SPH_C32(0xb6ba0000),
+	  SPH_C32(0x8d810000), SPH_C32(0xcd090ac7), SPH_C32(0x7987573c),
+	  SPH_C32(0xe674f224), SPH_C32(0x50c3ba01), SPH_C32(0xa4af0003),
+	  SPH_C32(0x15acc300), SPH_C32(0x4fcc0000), SPH_C32(0x4c7e0000),
+	  SPH_C32(0x88c66a19), SPH_C32(0x48284ba5), SPH_C32(0x0f6b6d0a),
+	  SPH_C32(0x85c81200) },
+	{ SPH_C32(0xe2d00002), SPH_C32(0xea28a800), SPH_C32(0xf4c30000),
+	  SPH_C32(0xd16b0000), SPH_C32(0xfea33add), SPH_C32(0x6c057228),
+	  SPH_C32(0x73d7b95f), SPH_C32(0xe488ba91), SPH_C32(0x5a8d0003),
+	  SPH_C32(0xb2f4c600), SPH_C32(0x6a1d0000), SPH_C32(0xbb1e0000),
+	  SPH_C32(0x01f712c3), SPH_C32(0x57fcb3c5), SPH_C32(0x41bbce1f),
+	  SPH_C32(0x24ebed9f) },
+	{ SPH_C32(0x10800002), SPH_C32(0x0495a200), SPH_C32(0x936b0000),
+	  SPH_C32(0x7ae10000), SPH_C32(0x4438721d), SPH_C32(0x6653af5c),
+	  SPH_C32(0xa8a45131), SPH_C32(0xf1e0459e), SPH_C32(0x56ff0003),
+	  SPH_C32(0xfb11c900), SPH_C32(0x28640000), SPH_C32(0xe7f40000),
+	  SPH_C32(0x325d22d9), SPH_C32(0x427e96d1), SPH_C32(0xd4188564),
+	  SPH_C32(0x90a0ed0f) },
+	{ SPH_C32(0x1cf20002), SPH_C32(0x4d70ad00), SPH_C32(0xd1120000),
+	  SPH_C32(0x260b0000), SPH_C32(0x77924207), SPH_C32(0x73d18a48),
+	  SPH_C32(0x3d071a4a), SPH_C32(0x45ab450e), SPH_C32(0xa8dd0003),
+	  SPH_C32(0x5c49cc00), SPH_C32(0x0db50000), SPH_C32(0x10940000),
+	  SPH_C32(0xbb6c5a03), SPH_C32(0x5daa6eb1), SPH_C32(0x9ac82671),
+	  SPH_C32(0x31831290) },
+	{ SPH_C32(0xabba0002), SPH_C32(0x0678b000), SPH_C32(0x4fd00000),
+	  SPH_C32(0xb6c90000), SPH_C32(0xd3c51eeb), SPH_C32(0x5a94c2ea),
+	  SPH_C32(0xf0c85494), SPH_C32(0x8ff04ede), SPH_C32(0x1c920003),
+	  SPH_C32(0x03ddc500), SPH_C32(0x78560000), SPH_C32(0xb9cf0000),
+	  SPH_C32(0xaa470bb5), SPH_C32(0xe660bae0), SPH_C32(0x694f7b1c),
+	  SPH_C32(0x4009f93e) },
+	{ SPH_C32(0xa7c80002), SPH_C32(0x4f9dbf00), SPH_C32(0x0da90000),
+	  SPH_C32(0xea230000), SPH_C32(0xe06f2ef1), SPH_C32(0x4f16e7fe),
+	  SPH_C32(0x656b1fef), SPH_C32(0x3bbb4e4e), SPH_C32(0xe2b00003),
+	  SPH_C32(0xa485c000), SPH_C32(0x5d870000), SPH_C32(0x4eaf0000),
+	  SPH_C32(0x2376736f), SPH_C32(0xf9b44280), SPH_C32(0x279fd809),
+	  SPH_C32(0xe12a06a1) },
+	{ SPH_C32(0x55980002), SPH_C32(0xa120b500), SPH_C32(0x6a010000),
+	  SPH_C32(0x41a90000), SPH_C32(0x5af46631), SPH_C32(0x45403a8a),
+	  SPH_C32(0xbe18f781), SPH_C32(0x2ed3b141), SPH_C32(0xeec20003),
+	  SPH_C32(0xed60cf00), SPH_C32(0x1ffe0000), SPH_C32(0x12450000),
+	  SPH_C32(0x10dc4375), SPH_C32(0xec366794), SPH_C32(0xb23c9372),
+	  SPH_C32(0x55610631) },
+	{ SPH_C32(0x59ea0002), SPH_C32(0xe8c5ba00), SPH_C32(0x28780000),
+	  SPH_C32(0x1d430000), SPH_C32(0x695e562b), SPH_C32(0x50c21f9e),
+	  SPH_C32(0x2bbbbcfa), SPH_C32(0x9a98b1d1), SPH_C32(0x10e00003),
+	  SPH_C32(0x4a38ca00), SPH_C32(0x3a2f0000), SPH_C32(0xe5250000),
+	  SPH_C32(0x99ed3baf), SPH_C32(0xf3e29ff4), SPH_C32(0xfcec3067),
+	  SPH_C32(0xf442f9ae) },
+	{ SPH_C32(0x569f0002), SPH_C32(0xb5bca100), SPH_C32(0x81200000),
+	  SPH_C32(0x78300000), SPH_C32(0xef886b6b), SPH_C32(0xd7cfa679),
+	  SPH_C32(0x8050e432), SPH_C32(0x9502513f), SPH_C32(0x598a0003),
+	  SPH_C32(0xa668d200), SPH_C32(0x813c0000), SPH_C32(0x82870000),
+	  SPH_C32(0xb48b1f99), SPH_C32(0xc5732f36), SPH_C32(0x7ff3ddac),
+	  SPH_C32(0x9f3a0de1) },
+	{ SPH_C32(0x5aed0002), SPH_C32(0xfc59ae00), SPH_C32(0xc3590000),
+	  SPH_C32(0x24da0000), SPH_C32(0xdc225b71), SPH_C32(0xc24d836d),
+	  SPH_C32(0x15f3af49), SPH_C32(0x214951af), SPH_C32(0xa7a80003),
+	  SPH_C32(0x0130d700), SPH_C32(0xa4ed0000), SPH_C32(0x75e70000),
+	  SPH_C32(0x3dba6743), SPH_C32(0xdaa7d756), SPH_C32(0x31237eb9),
+	  SPH_C32(0x3e19f27e) },
+	{ SPH_C32(0xa8bd0002), SPH_C32(0x12e4a400), SPH_C32(0xa4f10000),
+	  SPH_C32(0x8f500000), SPH_C32(0x66b913b1), SPH_C32(0xc81b5e19),
+	  SPH_C32(0xce804727), SPH_C32(0x3421aea0), SPH_C32(0xabda0003),
+	  SPH_C32(0x48d5d800), SPH_C32(0xe6940000), SPH_C32(0x290d0000),
+	  SPH_C32(0x0e105759), SPH_C32(0xcf25f242), SPH_C32(0xa48035c2),
+	  SPH_C32(0x8a52f2ee) },
+	{ SPH_C32(0xa4cf0002), SPH_C32(0x5b01ab00), SPH_C32(0xe6880000),
+	  SPH_C32(0xd3ba0000), SPH_C32(0x551323ab), SPH_C32(0xdd997b0d),
+	  SPH_C32(0x5b230c5c), SPH_C32(0x806aae30), SPH_C32(0x55f80003),
+	  SPH_C32(0xef8ddd00), SPH_C32(0xc3450000), SPH_C32(0xde6d0000),
+	  SPH_C32(0x87212f83), SPH_C32(0xd0f10a22), SPH_C32(0xea5096d7),
+	  SPH_C32(0x2b710d71) },
+	{ SPH_C32(0x13870002), SPH_C32(0x1009b600), SPH_C32(0x784a0000),
+	  SPH_C32(0x43780000), SPH_C32(0xf1447f47), SPH_C32(0xf4dc33af),
+	  SPH_C32(0x96ec4282), SPH_C32(0x4a31a5e0), SPH_C32(0xe1b70003),
+	  SPH_C32(0xb019d400), SPH_C32(0xb6a60000), SPH_C32(0x77360000),
+	  SPH_C32(0x960a7e35), SPH_C32(0x6b3bde73), SPH_C32(0x19d7cbba),
+	  SPH_C32(0x5afbe6df) },
+	{ SPH_C32(0x1ff50002), SPH_C32(0x59ecb900), SPH_C32(0x3a330000),
+	  SPH_C32(0x1f920000), SPH_C32(0xc2ee4f5d), SPH_C32(0xe15e16bb),
+	  SPH_C32(0x034f09f9), SPH_C32(0xfe7aa570), SPH_C32(0x1f950003),
+	  SPH_C32(0x1741d100), SPH_C32(0x93770000), SPH_C32(0x80560000),
+	  SPH_C32(0x1f3b06ef), SPH_C32(0x74ef2613), SPH_C32(0x570768af),
+	  SPH_C32(0xfbd81940) },
+	{ SPH_C32(0xeda50002), SPH_C32(0xb751b300), SPH_C32(0x5d9b0000),
+	  SPH_C32(0xb4180000), SPH_C32(0x7875079d), SPH_C32(0xeb08cbcf),
+	  SPH_C32(0xd83ce197), SPH_C32(0xeb125a7f), SPH_C32(0x13e70003),
+	  SPH_C32(0x5ea4de00), SPH_C32(0xd10e0000), SPH_C32(0xdcbc0000),
+	  SPH_C32(0x2c9136f5), SPH_C32(0x616d0307), SPH_C32(0xc2a423d4),
+	  SPH_C32(0x4f9319d0) },
+	{ SPH_C32(0xe1d70002), SPH_C32(0xfeb4bc00), SPH_C32(0x1fe20000),
+	  SPH_C32(0xe8f20000), SPH_C32(0x4bdf3787), SPH_C32(0xfe8aeedb),
+	  SPH_C32(0x4d9faaec), SPH_C32(0x5f595aef), SPH_C32(0xedc50003),
+	  SPH_C32(0xf9fcdb00), SPH_C32(0xf4df0000), SPH_C32(0x2bdc0000),
+	  SPH_C32(0xa5a04e2f), SPH_C32(0x7eb9fb67), SPH_C32(0x8c7480c1),
+	  SPH_C32(0xeeb0e64f) },
+	{ SPH_C32(0x4a600002), SPH_C32(0x7afa8300), SPH_C32(0xbcf20000),
+	  SPH_C32(0xebe00000), SPH_C32(0x35731800), SPH_C32(0xff39a060),
+	  SPH_C32(0x45502db0), SPH_C32(0x7b63e054), SPH_C32(0xd10b0003),
+	  SPH_C32(0xd727e400), SPH_C32(0xdb680000), SPH_C32(0xdc8b0000),
+	  SPH_C32(0x73be3df9), SPH_C32(0x01e6400b), SPH_C32(0x180ca989),
+	  SPH_C32(0x2b17747e) },
+	{ SPH_C32(0x46120002), SPH_C32(0x331f8c00), SPH_C32(0xfe8b0000),
+	  SPH_C32(0xb70a0000), SPH_C32(0x06d9281a), SPH_C32(0xeabb8574),
+	  SPH_C32(0xd0f366cb), SPH_C32(0xcf28e0c4), SPH_C32(0x2f290003),
+	  SPH_C32(0x707fe100), SPH_C32(0xfeb90000), SPH_C32(0x2beb0000),
+	  SPH_C32(0xfa8f4523), SPH_C32(0x1e32b86b), SPH_C32(0x56dc0a9c),
+	  SPH_C32(0x8a348be1) },
+	{ SPH_C32(0xb4420002), SPH_C32(0xdda28600), SPH_C32(0x99230000),
+	  SPH_C32(0x1c800000), SPH_C32(0xbc4260da), SPH_C32(0xe0ed5800),
+	  SPH_C32(0x0b808ea5), SPH_C32(0xda401fcb), SPH_C32(0x235b0003),
+	  SPH_C32(0x399aee00), SPH_C32(0xbcc00000), SPH_C32(0x77010000),
+	  SPH_C32(0xc9257539), SPH_C32(0x0bb09d7f), SPH_C32(0xc37f41e7),
+	  SPH_C32(0x3e7f8b71) },
+	{ SPH_C32(0xb8300002), SPH_C32(0x94478900), SPH_C32(0xdb5a0000),
+	  SPH_C32(0x406a0000), SPH_C32(0x8fe850c0), SPH_C32(0xf56f7d14),
+	  SPH_C32(0x9e23c5de), SPH_C32(0x6e0b1f5b), SPH_C32(0xdd790003),
+	  SPH_C32(0x9ec2eb00), SPH_C32(0x99110000), SPH_C32(0x80610000),
+	  SPH_C32(0x40140de3), SPH_C32(0x1464651f), SPH_C32(0x8dafe2f2),
+	  SPH_C32(0x9f5c74ee) },
+	{ SPH_C32(0x0f780002), SPH_C32(0xdf4f9400), SPH_C32(0x45980000),
+	  SPH_C32(0xd0a80000), SPH_C32(0x2bbf0c2c), SPH_C32(0xdc2a35b6),
+	  SPH_C32(0x53ec8b00), SPH_C32(0xa450148b), SPH_C32(0x69360003),
+	  SPH_C32(0xc156e200), SPH_C32(0xecf20000), SPH_C32(0x293a0000),
+	  SPH_C32(0x513f5c55), SPH_C32(0xafaeb14e), SPH_C32(0x7e28bf9f),
+	  SPH_C32(0xeed69f40) },
+	{ SPH_C32(0x030a0002), SPH_C32(0x96aa9b00), SPH_C32(0x07e10000),
+	  SPH_C32(0x8c420000), SPH_C32(0x18153c36), SPH_C32(0xc9a810a2),
+	  SPH_C32(0xc64fc07b), SPH_C32(0x101b141b), SPH_C32(0x97140003),
+	  SPH_C32(0x660ee700), SPH_C32(0xc9230000), SPH_C32(0xde5a0000),
+	  SPH_C32(0xd80e248f), SPH_C32(0xb07a492e), SPH_C32(0x30f81c8a),
+	  SPH_C32(0x4ff560df) },
+	{ SPH_C32(0xf15a0002), SPH_C32(0x78179100), SPH_C32(0x60490000),
+	  SPH_C32(0x27c80000), SPH_C32(0xa28e74f6), SPH_C32(0xc3fecdd6),
+	  SPH_C32(0x1d3c2815), SPH_C32(0x0573eb14), SPH_C32(0x9b660003),
+	  SPH_C32(0x2febe800), SPH_C32(0x8b5a0000), SPH_C32(0x82b00000),
+	  SPH_C32(0xeba41495), SPH_C32(0xa5f86c3a), SPH_C32(0xa55b57f1),
+	  SPH_C32(0xfbbe604f) },
+	{ SPH_C32(0xfd280002), SPH_C32(0x31f29e00), SPH_C32(0x22300000),
+	  SPH_C32(0x7b220000), SPH_C32(0x912444ec), SPH_C32(0xd67ce8c2),
+	  SPH_C32(0x889f636e), SPH_C32(0xb138eb84), SPH_C32(0x65440003),
+	  SPH_C32(0x88b3ed00), SPH_C32(0xae8b0000), SPH_C32(0x75d00000),
+	  SPH_C32(0x62956c4f), SPH_C32(0xba2c945a), SPH_C32(0xeb8bf4e4),
+	  SPH_C32(0x5a9d9fd0) },
+	{ SPH_C32(0xf25d0002), SPH_C32(0x6c8b8500), SPH_C32(0x8b680000),
+	  SPH_C32(0x1e510000), SPH_C32(0x17f279ac), SPH_C32(0x51715125),
+	  SPH_C32(0x23743ba6), SPH_C32(0xbea20b6a), SPH_C32(0x2c2e0003),
+	  SPH_C32(0x64e3f500), SPH_C32(0x15980000), SPH_C32(0x12720000),
+	  SPH_C32(0x4ff34879), SPH_C32(0x8cbd2498), SPH_C32(0x6894192f),
+	  SPH_C32(0x31e56b9f) },
+	{ SPH_C32(0xfe2f0002), SPH_C32(0x256e8a00), SPH_C32(0xc9110000),
+	  SPH_C32(0x42bb0000), SPH_C32(0x245849b6), SPH_C32(0x44f37431),
+	  SPH_C32(0xb6d770dd), SPH_C32(0x0ae90bfa), SPH_C32(0xd20c0003),
+	  SPH_C32(0xc3bbf000), SPH_C32(0x30490000), SPH_C32(0xe5120000),
+	  SPH_C32(0xc6c230a3), SPH_C32(0x9369dcf8), SPH_C32(0x2644ba3a),
+	  SPH_C32(0x90c69400) },
+	{ SPH_C32(0x0c7f0002), SPH_C32(0xcbd38000), SPH_C32(0xaeb90000),
+	  SPH_C32(0xe9310000), SPH_C32(0x9ec30176), SPH_C32(0x4ea5a945),
+	  SPH_C32(0x6da498b3), SPH_C32(0x1f81f4f5), SPH_C32(0xde7e0003),
+	  SPH_C32(0x8a5eff00), SPH_C32(0x72300000), SPH_C32(0xb9f80000),
+	  SPH_C32(0xf56800b9), SPH_C32(0x86ebf9ec), SPH_C32(0xb3e7f141),
+	  SPH_C32(0x248d9490) },
+	{ SPH_C32(0x000d0002), SPH_C32(0x82368f00), SPH_C32(0xecc00000),
+	  SPH_C32(0xb5db0000), SPH_C32(0xad69316c), SPH_C32(0x5b278c51),
+	  SPH_C32(0xf807d3c8), SPH_C32(0xabcaf465), SPH_C32(0x205c0003),
+	  SPH_C32(0x2d06fa00), SPH_C32(0x57e10000), SPH_C32(0x4e980000),
+	  SPH_C32(0x7c597863), SPH_C32(0x993f018c), SPH_C32(0xfd375254),
+	  SPH_C32(0x85ae6b0f) },
+	{ SPH_C32(0xb7450002), SPH_C32(0xc93e9200), SPH_C32(0x72020000),
+	  SPH_C32(0x25190000), SPH_C32(0x093e6d80), SPH_C32(0x7262c4f3),
+	  SPH_C32(0x35c89d16), SPH_C32(0x6191ffb5), SPH_C32(0x94130003),
+	  SPH_C32(0x7292f300), SPH_C32(0x22020000), SPH_C32(0xe7c30000),
+	  SPH_C32(0x6d7229d5), SPH_C32(0x22f5d5dd), SPH_C32(0x0eb00f39),
+	  SPH_C32(0xf42480a1) },
+	{ SPH_C32(0xbb370002), SPH_C32(0x80db9d00), SPH_C32(0x307b0000),
+	  SPH_C32(0x79f30000), SPH_C32(0x3a945d9a), SPH_C32(0x67e0e1e7),
+	  SPH_C32(0xa06bd66d), SPH_C32(0xd5daff25), SPH_C32(0x6a310003),
+	  SPH_C32(0xd5caf600), SPH_C32(0x07d30000), SPH_C32(0x10a30000),
+	  SPH_C32(0xe443510f), SPH_C32(0x3d212dbd), SPH_C32(0x4060ac2c),
+	  SPH_C32(0x55077f3e) },
+	{ SPH_C32(0x49670002), SPH_C32(0x6e669700), SPH_C32(0x57d30000),
+	  SPH_C32(0xd2790000), SPH_C32(0x800f155a), SPH_C32(0x6db63c93),
+	  SPH_C32(0x7b183e03), SPH_C32(0xc0b2002a), SPH_C32(0x66430003),
+	  SPH_C32(0x9c2ff900), SPH_C32(0x45aa0000), SPH_C32(0x4c490000),
+	  SPH_C32(0xd7e96115), SPH_C32(0x28a308a9), SPH_C32(0xd5c3e757),
+	  SPH_C32(0xe14c7fae) },
+	{ SPH_C32(0x45150002), SPH_C32(0x27839800), SPH_C32(0x15aa0000),
+	  SPH_C32(0x8e930000), SPH_C32(0xb3a52540), SPH_C32(0x78341987),
+	  SPH_C32(0xeebb7578), SPH_C32(0x74f900ba), SPH_C32(0x98610003),
+	  SPH_C32(0x3b77fc00), SPH_C32(0x607b0000), SPH_C32(0xbb290000),
+	  SPH_C32(0x5ed819cf), SPH_C32(0x3777f0c9), SPH_C32(0x9b134442),
+	  SPH_C32(0x406f8031) },
+	{ SPH_C32(0x3fc40002), SPH_C32(0xb871a400), SPH_C32(0x28560000),
+	  SPH_C32(0x7b150000), SPH_C32(0xce0b4fe0), SPH_C32(0xb6f7abce),
+	  SPH_C32(0x5237e933), SPH_C32(0xd5bc862a), SPH_C32(0x006d0003),
+	  SPH_C32(0xcc9be700), SPH_C32(0x45840000), SPH_C32(0x2a1f0000),
+	  SPH_C32(0x70bc78de), SPH_C32(0xce96bcf9), SPH_C32(0xac4fb29e),
+	  SPH_C32(0xae684855) },
+	{ SPH_C32(0x33b60002), SPH_C32(0xf194ab00), SPH_C32(0x6a2f0000),
+	  SPH_C32(0x27ff0000), SPH_C32(0xfda17ffa), SPH_C32(0xa3758eda),
+	  SPH_C32(0xc794a248), SPH_C32(0x61f786ba), SPH_C32(0xfe4f0003),
+	  SPH_C32(0x6bc3e200), SPH_C32(0x60550000), SPH_C32(0xdd7f0000),
+	  SPH_C32(0xf98d0004), SPH_C32(0xd1424499), SPH_C32(0xe29f118b),
+	  SPH_C32(0x0f4bb7ca) },
+	{ SPH_C32(0xc1e60002), SPH_C32(0x1f29a100), SPH_C32(0x0d870000),
+	  SPH_C32(0x8c750000), SPH_C32(0x473a373a), SPH_C32(0xa92353ae),
+	  SPH_C32(0x1ce74a26), SPH_C32(0x749f79b5), SPH_C32(0xf23d0003),
+	  SPH_C32(0x2226ed00), SPH_C32(0x222c0000), SPH_C32(0x81950000),
+	  SPH_C32(0xca27301e), SPH_C32(0xc4c0618d), SPH_C32(0x773c5af0),
+	  SPH_C32(0xbb00b75a) },
+	{ SPH_C32(0xcd940002), SPH_C32(0x56ccae00), SPH_C32(0x4ffe0000),
+	  SPH_C32(0xd09f0000), SPH_C32(0x74900720), SPH_C32(0xbca176ba),
+	  SPH_C32(0x8944015d), SPH_C32(0xc0d47925), SPH_C32(0x0c1f0003),
+	  SPH_C32(0x857ee800), SPH_C32(0x07fd0000), SPH_C32(0x76f50000),
+	  SPH_C32(0x431648c4), SPH_C32(0xdb1499ed), SPH_C32(0x39ecf9e5),
+	  SPH_C32(0x1a2348c5) },
+	{ SPH_C32(0x7adc0002), SPH_C32(0x1dc4b300), SPH_C32(0xd13c0000),
+	  SPH_C32(0x405d0000), SPH_C32(0xd0c75bcc), SPH_C32(0x95e43e18),
+	  SPH_C32(0x448b4f83), SPH_C32(0x0a8f72f5), SPH_C32(0xb8500003),
+	  SPH_C32(0xdaeae100), SPH_C32(0x721e0000), SPH_C32(0xdfae0000),
+	  SPH_C32(0x523d1972), SPH_C32(0x60de4dbc), SPH_C32(0xca6ba488),
+	  SPH_C32(0x6ba9a36b) },
+	{ SPH_C32(0x76ae0002), SPH_C32(0x5421bc00), SPH_C32(0x93450000),
+	  SPH_C32(0x1cb70000), SPH_C32(0xe36d6bd6), SPH_C32(0x80661b0c),
+	  SPH_C32(0xd12804f8), SPH_C32(0xbec47265), SPH_C32(0x46720003),
+	  SPH_C32(0x7db2e400), SPH_C32(0x57cf0000), SPH_C32(0x28ce0000),
+	  SPH_C32(0xdb0c61a8), SPH_C32(0x7f0ab5dc), SPH_C32(0x84bb079d),
+	  SPH_C32(0xca8a5cf4) },
+	{ SPH_C32(0x84fe0002), SPH_C32(0xba9cb600), SPH_C32(0xf4ed0000),
+	  SPH_C32(0xb73d0000), SPH_C32(0x59f62316), SPH_C32(0x8a30c678),
+	  SPH_C32(0x0a5bec96), SPH_C32(0xabac8d6a), SPH_C32(0x4a000003),
+	  SPH_C32(0x3457eb00), SPH_C32(0x15b60000), SPH_C32(0x74240000),
+	  SPH_C32(0xe8a651b2), SPH_C32(0x6a8890c8), SPH_C32(0x11184ce6),
+	  SPH_C32(0x7ec15c64) },
+	{ SPH_C32(0x888c0002), SPH_C32(0xf379b900), SPH_C32(0xb6940000),
+	  SPH_C32(0xebd70000), SPH_C32(0x6a5c130c), SPH_C32(0x9fb2e36c),
+	  SPH_C32(0x9ff8a7ed), SPH_C32(0x1fe78dfa), SPH_C32(0xb4220003),
+	  SPH_C32(0x930fee00), SPH_C32(0x30670000), SPH_C32(0x83440000),
+	  SPH_C32(0x61972968), SPH_C32(0x755c68a8), SPH_C32(0x5fc8eff3),
+	  SPH_C32(0xdfe2a3fb) },
+	{ SPH_C32(0x87f90002), SPH_C32(0xae00a200), SPH_C32(0x1fcc0000),
+	  SPH_C32(0x8ea40000), SPH_C32(0xec8a2e4c), SPH_C32(0x18bf5a8b),
+	  SPH_C32(0x3413ff25), SPH_C32(0x107d6d14), SPH_C32(0xfd480003),
+	  SPH_C32(0x7f5ff600), SPH_C32(0x8b740000), SPH_C32(0xe4e60000),
+	  SPH_C32(0x4cf10d5e), SPH_C32(0x43cdd86a), SPH_C32(0xdcd70238),
+	  SPH_C32(0xb49a57b4) },
+	{ SPH_C32(0x8b8b0002), SPH_C32(0xe7e5ad00), SPH_C32(0x5db50000),
+	  SPH_C32(0xd24e0000), SPH_C32(0xdf201e56), SPH_C32(0x0d3d7f9f),
+	  SPH_C32(0xa1b0b45e), SPH_C32(0xa4366d84), SPH_C32(0x036a0003),
+	  SPH_C32(0xd807f300), SPH_C32(0xaea50000), SPH_C32(0x13860000),
+	  SPH_C32(0xc5c07584), SPH_C32(0x5c19200a), SPH_C32(0x9207a12d),
+	  SPH_C32(0x15b9a82b) },
+	{ SPH_C32(0x79db0002), SPH_C32(0x0958a700), SPH_C32(0x3a1d0000),
+	  SPH_C32(0x79c40000), SPH_C32(0x65bb5696), SPH_C32(0x076ba2eb),
+	  SPH_C32(0x7ac35c30), SPH_C32(0xb15e928b), SPH_C32(0x0f180003),
+	  SPH_C32(0x91e2fc00), SPH_C32(0xecdc0000), SPH_C32(0x4f6c0000),
+	  SPH_C32(0xf66a459e), SPH_C32(0x499b051e), SPH_C32(0x07a4ea56),
+	  SPH_C32(0xa1f2a8bb) },
+	{ SPH_C32(0x75a90002), SPH_C32(0x40bda800), SPH_C32(0x78640000),
+	  SPH_C32(0x252e0000), SPH_C32(0x5611668c), SPH_C32(0x12e987ff),
+	  SPH_C32(0xef60174b), SPH_C32(0x0515921b), SPH_C32(0xf13a0003),
+	  SPH_C32(0x36baf900), SPH_C32(0xc90d0000), SPH_C32(0xb80c0000),
+	  SPH_C32(0x7f5b3d44), SPH_C32(0x564ffd7e), SPH_C32(0x49744943),
+	  SPH_C32(0x00d15724) },
+	{ SPH_C32(0xc2e10002), SPH_C32(0x0bb5b500), SPH_C32(0xe6a60000),
+	  SPH_C32(0xb5ec0000), SPH_C32(0xf2463a60), SPH_C32(0x3baccf5d),
+	  SPH_C32(0x22af5995), SPH_C32(0xcf4e99cb), SPH_C32(0x45750003),
+	  SPH_C32(0x692ef000), SPH_C32(0xbcee0000), SPH_C32(0x11570000),
+	  SPH_C32(0x6e706cf2), SPH_C32(0xed85292f), SPH_C32(0xbaf3142e),
+	  SPH_C32(0x715bbc8a) },
+	{ SPH_C32(0xce930002), SPH_C32(0x4250ba00), SPH_C32(0xa4df0000),
+	  SPH_C32(0xe9060000), SPH_C32(0xc1ec0a7a), SPH_C32(0x2e2eea49),
+	  SPH_C32(0xb70c12ee), SPH_C32(0x7b05995b), SPH_C32(0xbb570003),
+	  SPH_C32(0xce76f500), SPH_C32(0x993f0000), SPH_C32(0xe6370000),
+	  SPH_C32(0xe7411428), SPH_C32(0xf251d14f), SPH_C32(0xf423b73b),
+	  SPH_C32(0xd0784315) },
+	{ SPH_C32(0x3cc30002), SPH_C32(0xacedb000), SPH_C32(0xc3770000),
+	  SPH_C32(0x428c0000), SPH_C32(0x7b7742ba), SPH_C32(0x2478373d),
+	  SPH_C32(0x6c7ffa80), SPH_C32(0x6e6d6654), SPH_C32(0xb7250003),
+	  SPH_C32(0x8793fa00), SPH_C32(0xdb460000), SPH_C32(0xbadd0000),
+	  SPH_C32(0xd4eb2432), SPH_C32(0xe7d3f45b), SPH_C32(0x6180fc40),
+	  SPH_C32(0x64334385) },
+	{ SPH_C32(0x30b10002), SPH_C32(0xe508bf00), SPH_C32(0x810e0000),
+	  SPH_C32(0x1e660000), SPH_C32(0x48dd72a0), SPH_C32(0x31fa1229),
+	  SPH_C32(0xf9dcb1fb), SPH_C32(0xda2666c4), SPH_C32(0x49070003),
+	  SPH_C32(0x20cbff00), SPH_C32(0xfe970000), SPH_C32(0x4dbd0000),
+	  SPH_C32(0x5dda5ce8), SPH_C32(0xf8070c3b), SPH_C32(0x2f505f55),
+	  SPH_C32(0xc510bc1a) }
+};
+
+static const sph_u32 T512_24[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x86790000), SPH_C32(0x3f390002), SPH_C32(0xe19ae000),
+	  SPH_C32(0x98560000), SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea),
+	  SPH_C32(0xd3dd4944), SPH_C32(0x161ddab9), SPH_C32(0x30b70000),
+	  SPH_C32(0xe5d00000), SPH_C32(0xf4f46000), SPH_C32(0x42c40000),
+	  SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460), SPH_C32(0x21afa1ea),
+	  SPH_C32(0xb0a51834) },
+	{ SPH_C32(0x30b70000), SPH_C32(0xe5d00000), SPH_C32(0xf4f46000),
+	  SPH_C32(0x42c40000), SPH_C32(0x63b83d6a), SPH_C32(0x78ba9460),
+	  SPH_C32(0x21afa1ea), SPH_C32(0xb0a51834), SPH_C32(0xb6ce0000),
+	  SPH_C32(0xdae90002), SPH_C32(0x156e8000), SPH_C32(0xda920000),
+	  SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a), SPH_C32(0xf272e8ae),
+	  SPH_C32(0xa6b8c28d) },
+	{ SPH_C32(0xb6ce0000), SPH_C32(0xdae90002), SPH_C32(0x156e8000),
+	  SPH_C32(0xda920000), SPH_C32(0xf6dd5a64), SPH_C32(0x36325c8a),
+	  SPH_C32(0xf272e8ae), SPH_C32(0xa6b8c28d), SPH_C32(0x86790000),
+	  SPH_C32(0x3f390002), SPH_C32(0xe19ae000), SPH_C32(0x98560000),
+	  SPH_C32(0x9565670e), SPH_C32(0x4e88c8ea), SPH_C32(0xd3dd4944),
+	  SPH_C32(0x161ddab9) },
+	{ SPH_C32(0x14190000), SPH_C32(0x23ca003c), SPH_C32(0x50df0000),
+	  SPH_C32(0x44b60000), SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75),
+	  SPH_C32(0x61e610b0), SPH_C32(0xdbcadb80), SPH_C32(0xe3430000),
+	  SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000), SPH_C32(0xaa4e0000),
+	  SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15), SPH_C32(0x123db156),
+	  SPH_C32(0x3a4e99d7) },
+	{ SPH_C32(0x92600000), SPH_C32(0x1cf3003e), SPH_C32(0xb145e000),
+	  SPH_C32(0xdce00000), SPH_C32(0x8e0900be), SPH_C32(0x727b649f),
+	  SPH_C32(0xb23b59f4), SPH_C32(0xcdd70139), SPH_C32(0xd3f40000),
+	  SPH_C32(0xdf9e0014), SPH_C32(0x06326000), SPH_C32(0xe88a0000),
+	  SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75), SPH_C32(0x339210bc),
+	  SPH_C32(0x8aeb81e3) },
+	{ SPH_C32(0x24ae0000), SPH_C32(0xc61a003c), SPH_C32(0xa42b6000),
+	  SPH_C32(0x06720000), SPH_C32(0x78d45ada), SPH_C32(0x44493815),
+	  SPH_C32(0x4049b15a), SPH_C32(0x6b6fc3b4), SPH_C32(0x558d0000),
+	  SPH_C32(0xe0a70016), SPH_C32(0xe7a88000), SPH_C32(0x70dc0000),
+	  SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f), SPH_C32(0xe04f59f8),
+	  SPH_C32(0x9cf65b5a) },
+	{ SPH_C32(0xa2d70000), SPH_C32(0xf923003e), SPH_C32(0x45b18000),
+	  SPH_C32(0x9e240000), SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff),
+	  SPH_C32(0x9394f81e), SPH_C32(0x7d72190d), SPH_C32(0x653a0000),
+	  SPH_C32(0x05770016), SPH_C32(0x135ce000), SPH_C32(0x32180000),
+	  SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff), SPH_C32(0xc1e0f812),
+	  SPH_C32(0x2c53436e) },
+	{ SPH_C32(0xe3430000), SPH_C32(0x3a4e0014), SPH_C32(0xf2c60000),
+	  SPH_C32(0xaa4e0000), SPH_C32(0xdb1e42a6), SPH_C32(0x256bbe15),
+	  SPH_C32(0x123db156), SPH_C32(0x3a4e99d7), SPH_C32(0xf75a0000),
+	  SPH_C32(0x19840028), SPH_C32(0xa2190000), SPH_C32(0xeef80000),
+	  SPH_C32(0xc0722516), SPH_C32(0x19981260), SPH_C32(0x73dba1e6),
+	  SPH_C32(0xe1844257) },
+	{ SPH_C32(0x653a0000), SPH_C32(0x05770016), SPH_C32(0x135ce000),
+	  SPH_C32(0x32180000), SPH_C32(0x4e7b25a8), SPH_C32(0x6be376ff),
+	  SPH_C32(0xc1e0f812), SPH_C32(0x2c53436e), SPH_C32(0xc7ed0000),
+	  SPH_C32(0xfc540028), SPH_C32(0x56ed6000), SPH_C32(0xac3c0000),
+	  SPH_C32(0xa3ca187c), SPH_C32(0x61228600), SPH_C32(0x5274000c),
+	  SPH_C32(0x51215a63) },
+	{ SPH_C32(0xd3f40000), SPH_C32(0xdf9e0014), SPH_C32(0x06326000),
+	  SPH_C32(0xe88a0000), SPH_C32(0xb8a67fcc), SPH_C32(0x5dd12a75),
+	  SPH_C32(0x339210bc), SPH_C32(0x8aeb81e3), SPH_C32(0x41940000),
+	  SPH_C32(0xc36d002a), SPH_C32(0xb7778000), SPH_C32(0x346a0000),
+	  SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea), SPH_C32(0x81a94948),
+	  SPH_C32(0x473c80da) },
+	{ SPH_C32(0x558d0000), SPH_C32(0xe0a70016), SPH_C32(0xe7a88000),
+	  SPH_C32(0x70dc0000), SPH_C32(0x2dc318c2), SPH_C32(0x1359e29f),
+	  SPH_C32(0xe04f59f8), SPH_C32(0x9cf65b5a), SPH_C32(0x71230000),
+	  SPH_C32(0x26bd002a), SPH_C32(0x4383e000), SPH_C32(0x76ae0000),
+	  SPH_C32(0x55174218), SPH_C32(0x5710da8a), SPH_C32(0xa006e8a2),
+	  SPH_C32(0xf79998ee) },
+	{ SPH_C32(0xf75a0000), SPH_C32(0x19840028), SPH_C32(0xa2190000),
+	  SPH_C32(0xeef80000), SPH_C32(0xc0722516), SPH_C32(0x19981260),
+	  SPH_C32(0x73dba1e6), SPH_C32(0xe1844257), SPH_C32(0x14190000),
+	  SPH_C32(0x23ca003c), SPH_C32(0x50df0000), SPH_C32(0x44b60000),
+	  SPH_C32(0x1b6c67b0), SPH_C32(0x3cf3ac75), SPH_C32(0x61e610b0),
+	  SPH_C32(0xdbcadb80) },
+	{ SPH_C32(0x71230000), SPH_C32(0x26bd002a), SPH_C32(0x4383e000),
+	  SPH_C32(0x76ae0000), SPH_C32(0x55174218), SPH_C32(0x5710da8a),
+	  SPH_C32(0xa006e8a2), SPH_C32(0xf79998ee), SPH_C32(0x24ae0000),
+	  SPH_C32(0xc61a003c), SPH_C32(0xa42b6000), SPH_C32(0x06720000),
+	  SPH_C32(0x78d45ada), SPH_C32(0x44493815), SPH_C32(0x4049b15a),
+	  SPH_C32(0x6b6fc3b4) },
+	{ SPH_C32(0xc7ed0000), SPH_C32(0xfc540028), SPH_C32(0x56ed6000),
+	  SPH_C32(0xac3c0000), SPH_C32(0xa3ca187c), SPH_C32(0x61228600),
+	  SPH_C32(0x5274000c), SPH_C32(0x51215a63), SPH_C32(0xa2d70000),
+	  SPH_C32(0xf923003e), SPH_C32(0x45b18000), SPH_C32(0x9e240000),
+	  SPH_C32(0xedb13dd4), SPH_C32(0x0ac1f0ff), SPH_C32(0x9394f81e),
+	  SPH_C32(0x7d72190d) },
+	{ SPH_C32(0x41940000), SPH_C32(0xc36d002a), SPH_C32(0xb7778000),
+	  SPH_C32(0x346a0000), SPH_C32(0x36af7f72), SPH_C32(0x2faa4eea),
+	  SPH_C32(0x81a94948), SPH_C32(0x473c80da), SPH_C32(0x92600000),
+	  SPH_C32(0x1cf3003e), SPH_C32(0xb145e000), SPH_C32(0xdce00000),
+	  SPH_C32(0x8e0900be), SPH_C32(0x727b649f), SPH_C32(0xb23b59f4),
+	  SPH_C32(0xcdd70139) },
+	{ SPH_C32(0x54500000), SPH_C32(0x0671005c), SPH_C32(0x25ae0000),
+	  SPH_C32(0x6a1e0000), SPH_C32(0x2ea54edf), SPH_C32(0x664e8512),
+	  SPH_C32(0xbfba18c3), SPH_C32(0x7e715d17), SPH_C32(0xbc8d0000),
+	  SPH_C32(0xfc3b0018), SPH_C32(0x19830000), SPH_C32(0xd10b0000),
+	  SPH_C32(0xae1878c4), SPH_C32(0x42a69856), SPH_C32(0x0012da37),
+	  SPH_C32(0x2c3b504e) },
+	{ SPH_C32(0xd2290000), SPH_C32(0x3948005e), SPH_C32(0xc434e000),
+	  SPH_C32(0xf2480000), SPH_C32(0xbbc029d1), SPH_C32(0x28c64df8),
+	  SPH_C32(0x6c675187), SPH_C32(0x686c87ae), SPH_C32(0x8c3a0000),
+	  SPH_C32(0x19eb0018), SPH_C32(0xed776000), SPH_C32(0x93cf0000),
+	  SPH_C32(0xcda045ae), SPH_C32(0x3a1c0c36), SPH_C32(0x21bd7bdd),
+	  SPH_C32(0x9c9e487a) },
+	{ SPH_C32(0x64e70000), SPH_C32(0xe3a1005c), SPH_C32(0xd15a6000),
+	  SPH_C32(0x28da0000), SPH_C32(0x4d1d73b5), SPH_C32(0x1ef41172),
+	  SPH_C32(0x9e15b929), SPH_C32(0xced44523), SPH_C32(0x0a430000),
+	  SPH_C32(0x26d2001a), SPH_C32(0x0ced8000), SPH_C32(0x0b990000),
+	  SPH_C32(0x58c522a0), SPH_C32(0x7494c4dc), SPH_C32(0xf2603299),
+	  SPH_C32(0x8a8392c3) },
+	{ SPH_C32(0xe29e0000), SPH_C32(0xdc98005e), SPH_C32(0x30c08000),
+	  SPH_C32(0xb08c0000), SPH_C32(0xd87814bb), SPH_C32(0x507cd998),
+	  SPH_C32(0x4dc8f06d), SPH_C32(0xd8c99f9a), SPH_C32(0x3af40000),
+	  SPH_C32(0xc302001a), SPH_C32(0xf819e000), SPH_C32(0x495d0000),
+	  SPH_C32(0x3b7d1fca), SPH_C32(0x0c2e50bc), SPH_C32(0xd3cf9373),
+	  SPH_C32(0x3a268af7) },
+	{ SPH_C32(0x40490000), SPH_C32(0x25bb0060), SPH_C32(0x75710000),
+	  SPH_C32(0x2ea80000), SPH_C32(0x35c9296f), SPH_C32(0x5abd2967),
+	  SPH_C32(0xde5c0873), SPH_C32(0xa5bb8697), SPH_C32(0x5fce0000),
+	  SPH_C32(0xc675000c), SPH_C32(0xeb450000), SPH_C32(0x7b450000),
+	  SPH_C32(0x75063a62), SPH_C32(0x67cd2643), SPH_C32(0x122f6b61),
+	  SPH_C32(0x1675c999) },
+	{ SPH_C32(0xc6300000), SPH_C32(0x1a820062), SPH_C32(0x94ebe000),
+	  SPH_C32(0xb6fe0000), SPH_C32(0xa0ac4e61), SPH_C32(0x1435e18d),
+	  SPH_C32(0x0d814137), SPH_C32(0xb3a65c2e), SPH_C32(0x6f790000),
+	  SPH_C32(0x23a5000c), SPH_C32(0x1fb16000), SPH_C32(0x39810000),
+	  SPH_C32(0x16be0708), SPH_C32(0x1f77b223), SPH_C32(0x3380ca8b),
+	  SPH_C32(0xa6d0d1ad) },
+	{ SPH_C32(0x70fe0000), SPH_C32(0xc06b0060), SPH_C32(0x81856000),
+	  SPH_C32(0x6c6c0000), SPH_C32(0x56711405), SPH_C32(0x2207bd07),
+	  SPH_C32(0xfff3a999), SPH_C32(0x151e9ea3), SPH_C32(0xe9000000),
+	  SPH_C32(0x1c9c000e), SPH_C32(0xfe2b8000), SPH_C32(0xa1d70000),
+	  SPH_C32(0x83db6006), SPH_C32(0x51ff7ac9), SPH_C32(0xe05d83cf),
+	  SPH_C32(0xb0cd0b14) },
+	{ SPH_C32(0xf6870000), SPH_C32(0xff520062), SPH_C32(0x601f8000),
+	  SPH_C32(0xf43a0000), SPH_C32(0xc314730b), SPH_C32(0x6c8f75ed),
+	  SPH_C32(0x2c2ee0dd), SPH_C32(0x0303441a), SPH_C32(0xd9b70000),
+	  SPH_C32(0xf94c000e), SPH_C32(0x0adfe000), SPH_C32(0xe3130000),
+	  SPH_C32(0xe0635d6c), SPH_C32(0x2945eea9), SPH_C32(0xc1f22225),
+	  SPH_C32(0x00681320) },
+	{ SPH_C32(0xb7130000), SPH_C32(0x3c3f0048), SPH_C32(0xd7680000),
+	  SPH_C32(0xc0500000), SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07),
+	  SPH_C32(0xad87a995), SPH_C32(0x443fc4c0), SPH_C32(0x4bd70000),
+	  SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000), SPH_C32(0x3ff30000),
+	  SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36), SPH_C32(0x73c97bd1),
+	  SPH_C32(0xcdbf1219) },
+	{ SPH_C32(0x316a0000), SPH_C32(0x0306004a), SPH_C32(0x36f2e000),
+	  SPH_C32(0x58060000), SPH_C32(0x60de6b77), SPH_C32(0x0dadf3ed),
+	  SPH_C32(0x7e5ae0d1), SPH_C32(0x52221e79), SPH_C32(0x7b600000),
+	  SPH_C32(0x006f0030), SPH_C32(0x4f6e6000), SPH_C32(0x7d370000),
+	  SPH_C32(0x0dd260b8), SPH_C32(0x23841e56), SPH_C32(0x5266da3b),
+	  SPH_C32(0x7d1a0a2d) },
+	{ SPH_C32(0x87a40000), SPH_C32(0xd9ef0048), SPH_C32(0x239c6000),
+	  SPH_C32(0x82940000), SPH_C32(0x96033113), SPH_C32(0x3b9faf67),
+	  SPH_C32(0x8c28087f), SPH_C32(0xf49adcf4), SPH_C32(0xfd190000),
+	  SPH_C32(0x3f560032), SPH_C32(0xaef48000), SPH_C32(0xe5610000),
+	  SPH_C32(0x98b707b6), SPH_C32(0x6d0cd6bc), SPH_C32(0x81bb937f),
+	  SPH_C32(0x6b07d094) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0xe6d6004a), SPH_C32(0xc2068000),
+	  SPH_C32(0x1ac20000), SPH_C32(0x0366561d), SPH_C32(0x7517678d),
+	  SPH_C32(0x5ff5413b), SPH_C32(0xe287064d), SPH_C32(0xcdae0000),
+	  SPH_C32(0xda860032), SPH_C32(0x5a00e000), SPH_C32(0xa7a50000),
+	  SPH_C32(0xfb0f3adc), SPH_C32(0x15b642dc), SPH_C32(0xa0143295),
+	  SPH_C32(0xdba2c8a0) },
+	{ SPH_C32(0xa30a0000), SPH_C32(0x1ff50074), SPH_C32(0x87b70000),
+	  SPH_C32(0x84e60000), SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772),
+	  SPH_C32(0xcc61b925), SPH_C32(0x9ff51f40), SPH_C32(0xa8940000),
+	  SPH_C32(0xdff10024), SPH_C32(0x495c0000), SPH_C32(0x95bd0000),
+	  SPH_C32(0xb5741f74), SPH_C32(0x7e553423), SPH_C32(0x61f4ca87),
+	  SPH_C32(0xf7f18bce) },
+	{ SPH_C32(0x25730000), SPH_C32(0x20cc0076), SPH_C32(0x662de000),
+	  SPH_C32(0x1cb00000), SPH_C32(0x7bb20cc7), SPH_C32(0x315e5f98),
+	  SPH_C32(0x1fbcf061), SPH_C32(0x89e8c5f9), SPH_C32(0x98230000),
+	  SPH_C32(0x3a210024), SPH_C32(0xbda86000), SPH_C32(0xd7790000),
+	  SPH_C32(0xd6cc221e), SPH_C32(0x06efa043), SPH_C32(0x405b6b6d),
+	  SPH_C32(0x475493fa) },
+	{ SPH_C32(0x93bd0000), SPH_C32(0xfa250074), SPH_C32(0x73436000),
+	  SPH_C32(0xc6220000), SPH_C32(0x8d6f56a3), SPH_C32(0x076c0312),
+	  SPH_C32(0xedce18cf), SPH_C32(0x2f500774), SPH_C32(0x1e5a0000),
+	  SPH_C32(0x05180026), SPH_C32(0x5c328000), SPH_C32(0x4f2f0000),
+	  SPH_C32(0x43a94510), SPH_C32(0x486768a9), SPH_C32(0x93862229),
+	  SPH_C32(0x51494943) },
+	{ SPH_C32(0x15c40000), SPH_C32(0xc51c0076), SPH_C32(0x92d98000),
+	  SPH_C32(0x5e740000), SPH_C32(0x180a31ad), SPH_C32(0x49e4cbf8),
+	  SPH_C32(0x3e13518b), SPH_C32(0x394dddcd), SPH_C32(0x2eed0000),
+	  SPH_C32(0xe0c80026), SPH_C32(0xa8c6e000), SPH_C32(0x0deb0000),
+	  SPH_C32(0x2011787a), SPH_C32(0x30ddfcc9), SPH_C32(0xb22983c3),
+	  SPH_C32(0xe1ec5177) },
+	{ SPH_C32(0xbc8d0000), SPH_C32(0xfc3b0018), SPH_C32(0x19830000),
+	  SPH_C32(0xd10b0000), SPH_C32(0xae1878c4), SPH_C32(0x42a69856),
+	  SPH_C32(0x0012da37), SPH_C32(0x2c3b504e), SPH_C32(0xe8dd0000),
+	  SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000), SPH_C32(0xbb150000),
+	  SPH_C32(0x80bd361b), SPH_C32(0x24e81d44), SPH_C32(0xbfa8c2f4),
+	  SPH_C32(0x524a0d59) },
+	{ SPH_C32(0x3af40000), SPH_C32(0xc302001a), SPH_C32(0xf819e000),
+	  SPH_C32(0x495d0000), SPH_C32(0x3b7d1fca), SPH_C32(0x0c2e50bc),
+	  SPH_C32(0xd3cf9373), SPH_C32(0x3a268af7), SPH_C32(0xd86a0000),
+	  SPH_C32(0x1f9a0044), SPH_C32(0xc8d96000), SPH_C32(0xf9d10000),
+	  SPH_C32(0xe3050b71), SPH_C32(0x5c528924), SPH_C32(0x9e07631e),
+	  SPH_C32(0xe2ef156d) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0x19eb0018), SPH_C32(0xed776000),
+	  SPH_C32(0x93cf0000), SPH_C32(0xcda045ae), SPH_C32(0x3a1c0c36),
+	  SPH_C32(0x21bd7bdd), SPH_C32(0x9c9e487a), SPH_C32(0x5e130000),
+	  SPH_C32(0x20a30046), SPH_C32(0x29438000), SPH_C32(0x61870000),
+	  SPH_C32(0x76606c7f), SPH_C32(0x12da41ce), SPH_C32(0x4dda2a5a),
+	  SPH_C32(0xf4f2cfd4) },
+	{ SPH_C32(0x0a430000), SPH_C32(0x26d2001a), SPH_C32(0x0ced8000),
+	  SPH_C32(0x0b990000), SPH_C32(0x58c522a0), SPH_C32(0x7494c4dc),
+	  SPH_C32(0xf2603299), SPH_C32(0x8a8392c3), SPH_C32(0x6ea40000),
+	  SPH_C32(0xc5730046), SPH_C32(0xddb7e000), SPH_C32(0x23430000),
+	  SPH_C32(0x15d85115), SPH_C32(0x6a60d5ae), SPH_C32(0x6c758bb0),
+	  SPH_C32(0x4457d7e0) },
+	{ SPH_C32(0xa8940000), SPH_C32(0xdff10024), SPH_C32(0x495c0000),
+	  SPH_C32(0x95bd0000), SPH_C32(0xb5741f74), SPH_C32(0x7e553423),
+	  SPH_C32(0x61f4ca87), SPH_C32(0xf7f18bce), SPH_C32(0x0b9e0000),
+	  SPH_C32(0xc0040050), SPH_C32(0xceeb0000), SPH_C32(0x115b0000),
+	  SPH_C32(0x5ba374bd), SPH_C32(0x0183a351), SPH_C32(0xad9573a2),
+	  SPH_C32(0x6804948e) },
+	{ SPH_C32(0x2eed0000), SPH_C32(0xe0c80026), SPH_C32(0xa8c6e000),
+	  SPH_C32(0x0deb0000), SPH_C32(0x2011787a), SPH_C32(0x30ddfcc9),
+	  SPH_C32(0xb22983c3), SPH_C32(0xe1ec5177), SPH_C32(0x3b290000),
+	  SPH_C32(0x25d40050), SPH_C32(0x3a1f6000), SPH_C32(0x539f0000),
+	  SPH_C32(0x381b49d7), SPH_C32(0x79393731), SPH_C32(0x8c3ad248),
+	  SPH_C32(0xd8a18cba) },
+	{ SPH_C32(0x98230000), SPH_C32(0x3a210024), SPH_C32(0xbda86000),
+	  SPH_C32(0xd7790000), SPH_C32(0xd6cc221e), SPH_C32(0x06efa043),
+	  SPH_C32(0x405b6b6d), SPH_C32(0x475493fa), SPH_C32(0xbd500000),
+	  SPH_C32(0x1aed0052), SPH_C32(0xdb858000), SPH_C32(0xcbc90000),
+	  SPH_C32(0xad7e2ed9), SPH_C32(0x37b1ffdb), SPH_C32(0x5fe79b0c),
+	  SPH_C32(0xcebc5603) },
+	{ SPH_C32(0x1e5a0000), SPH_C32(0x05180026), SPH_C32(0x5c328000),
+	  SPH_C32(0x4f2f0000), SPH_C32(0x43a94510), SPH_C32(0x486768a9),
+	  SPH_C32(0x93862229), SPH_C32(0x51494943), SPH_C32(0x8de70000),
+	  SPH_C32(0xff3d0052), SPH_C32(0x2f71e000), SPH_C32(0x890d0000),
+	  SPH_C32(0xcec613b3), SPH_C32(0x4f0b6bbb), SPH_C32(0x7e483ae6),
+	  SPH_C32(0x7e194e37) },
+	{ SPH_C32(0x5fce0000), SPH_C32(0xc675000c), SPH_C32(0xeb450000),
+	  SPH_C32(0x7b450000), SPH_C32(0x75063a62), SPH_C32(0x67cd2643),
+	  SPH_C32(0x122f6b61), SPH_C32(0x1675c999), SPH_C32(0x1f870000),
+	  SPH_C32(0xe3ce006c), SPH_C32(0x9e340000), SPH_C32(0x55ed0000),
+	  SPH_C32(0x40cf130d), SPH_C32(0x3d700f24), SPH_C32(0xcc736312),
+	  SPH_C32(0xb3ce4f0e) },
+	{ SPH_C32(0xd9b70000), SPH_C32(0xf94c000e), SPH_C32(0x0adfe000),
+	  SPH_C32(0xe3130000), SPH_C32(0xe0635d6c), SPH_C32(0x2945eea9),
+	  SPH_C32(0xc1f22225), SPH_C32(0x00681320), SPH_C32(0x2f300000),
+	  SPH_C32(0x061e006c), SPH_C32(0x6ac06000), SPH_C32(0x17290000),
+	  SPH_C32(0x23772e67), SPH_C32(0x45ca9b44), SPH_C32(0xeddcc2f8),
+	  SPH_C32(0x036b573a) },
+	{ SPH_C32(0x6f790000), SPH_C32(0x23a5000c), SPH_C32(0x1fb16000),
+	  SPH_C32(0x39810000), SPH_C32(0x16be0708), SPH_C32(0x1f77b223),
+	  SPH_C32(0x3380ca8b), SPH_C32(0xa6d0d1ad), SPH_C32(0xa9490000),
+	  SPH_C32(0x3927006e), SPH_C32(0x8b5a8000), SPH_C32(0x8f7f0000),
+	  SPH_C32(0xb6124969), SPH_C32(0x0b4253ae), SPH_C32(0x3e018bbc),
+	  SPH_C32(0x15768d83) },
+	{ SPH_C32(0xe9000000), SPH_C32(0x1c9c000e), SPH_C32(0xfe2b8000),
+	  SPH_C32(0xa1d70000), SPH_C32(0x83db6006), SPH_C32(0x51ff7ac9),
+	  SPH_C32(0xe05d83cf), SPH_C32(0xb0cd0b14), SPH_C32(0x99fe0000),
+	  SPH_C32(0xdcf7006e), SPH_C32(0x7faee000), SPH_C32(0xcdbb0000),
+	  SPH_C32(0xd5aa7403), SPH_C32(0x73f8c7ce), SPH_C32(0x1fae2a56),
+	  SPH_C32(0xa5d395b7) },
+	{ SPH_C32(0x4bd70000), SPH_C32(0xe5bf0030), SPH_C32(0xbb9a0000),
+	  SPH_C32(0x3ff30000), SPH_C32(0x6e6a5dd2), SPH_C32(0x5b3e8a36),
+	  SPH_C32(0x73c97bd1), SPH_C32(0xcdbf1219), SPH_C32(0xfcc40000),
+	  SPH_C32(0xd9800078), SPH_C32(0x6cf20000), SPH_C32(0xffa30000),
+	  SPH_C32(0x9bd151ab), SPH_C32(0x181bb131), SPH_C32(0xde4ed244),
+	  SPH_C32(0x8980d6d9) },
+	{ SPH_C32(0xcdae0000), SPH_C32(0xda860032), SPH_C32(0x5a00e000),
+	  SPH_C32(0xa7a50000), SPH_C32(0xfb0f3adc), SPH_C32(0x15b642dc),
+	  SPH_C32(0xa0143295), SPH_C32(0xdba2c8a0), SPH_C32(0xcc730000),
+	  SPH_C32(0x3c500078), SPH_C32(0x98066000), SPH_C32(0xbd670000),
+	  SPH_C32(0xf8696cc1), SPH_C32(0x60a12551), SPH_C32(0xffe173ae),
+	  SPH_C32(0x3925ceed) },
+	{ SPH_C32(0x7b600000), SPH_C32(0x006f0030), SPH_C32(0x4f6e6000),
+	  SPH_C32(0x7d370000), SPH_C32(0x0dd260b8), SPH_C32(0x23841e56),
+	  SPH_C32(0x5266da3b), SPH_C32(0x7d1a0a2d), SPH_C32(0x4a0a0000),
+	  SPH_C32(0x0369007a), SPH_C32(0x799c8000), SPH_C32(0x25310000),
+	  SPH_C32(0x6d0c0bcf), SPH_C32(0x2e29edbb), SPH_C32(0x2c3c3aea),
+	  SPH_C32(0x2f381454) },
+	{ SPH_C32(0xfd190000), SPH_C32(0x3f560032), SPH_C32(0xaef48000),
+	  SPH_C32(0xe5610000), SPH_C32(0x98b707b6), SPH_C32(0x6d0cd6bc),
+	  SPH_C32(0x81bb937f), SPH_C32(0x6b07d094), SPH_C32(0x7abd0000),
+	  SPH_C32(0xe6b9007a), SPH_C32(0x8d68e000), SPH_C32(0x67f50000),
+	  SPH_C32(0x0eb436a5), SPH_C32(0x569379db), SPH_C32(0x0d939b00),
+	  SPH_C32(0x9f9d0c60) },
+	{ SPH_C32(0xe8dd0000), SPH_C32(0xfa4a0044), SPH_C32(0x3c2d0000),
+	  SPH_C32(0xbb150000), SPH_C32(0x80bd361b), SPH_C32(0x24e81d44),
+	  SPH_C32(0xbfa8c2f4), SPH_C32(0x524a0d59), SPH_C32(0x54500000),
+	  SPH_C32(0x0671005c), SPH_C32(0x25ae0000), SPH_C32(0x6a1e0000),
+	  SPH_C32(0x2ea54edf), SPH_C32(0x664e8512), SPH_C32(0xbfba18c3),
+	  SPH_C32(0x7e715d17) },
+	{ SPH_C32(0x6ea40000), SPH_C32(0xc5730046), SPH_C32(0xddb7e000),
+	  SPH_C32(0x23430000), SPH_C32(0x15d85115), SPH_C32(0x6a60d5ae),
+	  SPH_C32(0x6c758bb0), SPH_C32(0x4457d7e0), SPH_C32(0x64e70000),
+	  SPH_C32(0xe3a1005c), SPH_C32(0xd15a6000), SPH_C32(0x28da0000),
+	  SPH_C32(0x4d1d73b5), SPH_C32(0x1ef41172), SPH_C32(0x9e15b929),
+	  SPH_C32(0xced44523) },
+	{ SPH_C32(0xd86a0000), SPH_C32(0x1f9a0044), SPH_C32(0xc8d96000),
+	  SPH_C32(0xf9d10000), SPH_C32(0xe3050b71), SPH_C32(0x5c528924),
+	  SPH_C32(0x9e07631e), SPH_C32(0xe2ef156d), SPH_C32(0xe29e0000),
+	  SPH_C32(0xdc98005e), SPH_C32(0x30c08000), SPH_C32(0xb08c0000),
+	  SPH_C32(0xd87814bb), SPH_C32(0x507cd998), SPH_C32(0x4dc8f06d),
+	  SPH_C32(0xd8c99f9a) },
+	{ SPH_C32(0x5e130000), SPH_C32(0x20a30046), SPH_C32(0x29438000),
+	  SPH_C32(0x61870000), SPH_C32(0x76606c7f), SPH_C32(0x12da41ce),
+	  SPH_C32(0x4dda2a5a), SPH_C32(0xf4f2cfd4), SPH_C32(0xd2290000),
+	  SPH_C32(0x3948005e), SPH_C32(0xc434e000), SPH_C32(0xf2480000),
+	  SPH_C32(0xbbc029d1), SPH_C32(0x28c64df8), SPH_C32(0x6c675187),
+	  SPH_C32(0x686c87ae) },
+	{ SPH_C32(0xfcc40000), SPH_C32(0xd9800078), SPH_C32(0x6cf20000),
+	  SPH_C32(0xffa30000), SPH_C32(0x9bd151ab), SPH_C32(0x181bb131),
+	  SPH_C32(0xde4ed244), SPH_C32(0x8980d6d9), SPH_C32(0xb7130000),
+	  SPH_C32(0x3c3f0048), SPH_C32(0xd7680000), SPH_C32(0xc0500000),
+	  SPH_C32(0xf5bb0c79), SPH_C32(0x43253b07), SPH_C32(0xad87a995),
+	  SPH_C32(0x443fc4c0) },
+	{ SPH_C32(0x7abd0000), SPH_C32(0xe6b9007a), SPH_C32(0x8d68e000),
+	  SPH_C32(0x67f50000), SPH_C32(0x0eb436a5), SPH_C32(0x569379db),
+	  SPH_C32(0x0d939b00), SPH_C32(0x9f9d0c60), SPH_C32(0x87a40000),
+	  SPH_C32(0xd9ef0048), SPH_C32(0x239c6000), SPH_C32(0x82940000),
+	  SPH_C32(0x96033113), SPH_C32(0x3b9faf67), SPH_C32(0x8c28087f),
+	  SPH_C32(0xf49adcf4) },
+	{ SPH_C32(0xcc730000), SPH_C32(0x3c500078), SPH_C32(0x98066000),
+	  SPH_C32(0xbd670000), SPH_C32(0xf8696cc1), SPH_C32(0x60a12551),
+	  SPH_C32(0xffe173ae), SPH_C32(0x3925ceed), SPH_C32(0x01dd0000),
+	  SPH_C32(0xe6d6004a), SPH_C32(0xc2068000), SPH_C32(0x1ac20000),
+	  SPH_C32(0x0366561d), SPH_C32(0x7517678d), SPH_C32(0x5ff5413b),
+	  SPH_C32(0xe287064d) },
+	{ SPH_C32(0x4a0a0000), SPH_C32(0x0369007a), SPH_C32(0x799c8000),
+	  SPH_C32(0x25310000), SPH_C32(0x6d0c0bcf), SPH_C32(0x2e29edbb),
+	  SPH_C32(0x2c3c3aea), SPH_C32(0x2f381454), SPH_C32(0x316a0000),
+	  SPH_C32(0x0306004a), SPH_C32(0x36f2e000), SPH_C32(0x58060000),
+	  SPH_C32(0x60de6b77), SPH_C32(0x0dadf3ed), SPH_C32(0x7e5ae0d1),
+	  SPH_C32(0x52221e79) },
+	{ SPH_C32(0x0b9e0000), SPH_C32(0xc0040050), SPH_C32(0xceeb0000),
+	  SPH_C32(0x115b0000), SPH_C32(0x5ba374bd), SPH_C32(0x0183a351),
+	  SPH_C32(0xad9573a2), SPH_C32(0x6804948e), SPH_C32(0xa30a0000),
+	  SPH_C32(0x1ff50074), SPH_C32(0x87b70000), SPH_C32(0x84e60000),
+	  SPH_C32(0xeed76bc9), SPH_C32(0x7fd69772), SPH_C32(0xcc61b925),
+	  SPH_C32(0x9ff51f40) },
+	{ SPH_C32(0x8de70000), SPH_C32(0xff3d0052), SPH_C32(0x2f71e000),
+	  SPH_C32(0x890d0000), SPH_C32(0xcec613b3), SPH_C32(0x4f0b6bbb),
+	  SPH_C32(0x7e483ae6), SPH_C32(0x7e194e37), SPH_C32(0x93bd0000),
+	  SPH_C32(0xfa250074), SPH_C32(0x73436000), SPH_C32(0xc6220000),
+	  SPH_C32(0x8d6f56a3), SPH_C32(0x076c0312), SPH_C32(0xedce18cf),
+	  SPH_C32(0x2f500774) },
+	{ SPH_C32(0x3b290000), SPH_C32(0x25d40050), SPH_C32(0x3a1f6000),
+	  SPH_C32(0x539f0000), SPH_C32(0x381b49d7), SPH_C32(0x79393731),
+	  SPH_C32(0x8c3ad248), SPH_C32(0xd8a18cba), SPH_C32(0x15c40000),
+	  SPH_C32(0xc51c0076), SPH_C32(0x92d98000), SPH_C32(0x5e740000),
+	  SPH_C32(0x180a31ad), SPH_C32(0x49e4cbf8), SPH_C32(0x3e13518b),
+	  SPH_C32(0x394dddcd) },
+	{ SPH_C32(0xbd500000), SPH_C32(0x1aed0052), SPH_C32(0xdb858000),
+	  SPH_C32(0xcbc90000), SPH_C32(0xad7e2ed9), SPH_C32(0x37b1ffdb),
+	  SPH_C32(0x5fe79b0c), SPH_C32(0xcebc5603), SPH_C32(0x25730000),
+	  SPH_C32(0x20cc0076), SPH_C32(0x662de000), SPH_C32(0x1cb00000),
+	  SPH_C32(0x7bb20cc7), SPH_C32(0x315e5f98), SPH_C32(0x1fbcf061),
+	  SPH_C32(0x89e8c5f9) },
+	{ SPH_C32(0x1f870000), SPH_C32(0xe3ce006c), SPH_C32(0x9e340000),
+	  SPH_C32(0x55ed0000), SPH_C32(0x40cf130d), SPH_C32(0x3d700f24),
+	  SPH_C32(0xcc736312), SPH_C32(0xb3ce4f0e), SPH_C32(0x40490000),
+	  SPH_C32(0x25bb0060), SPH_C32(0x75710000), SPH_C32(0x2ea80000),
+	  SPH_C32(0x35c9296f), SPH_C32(0x5abd2967), SPH_C32(0xde5c0873),
+	  SPH_C32(0xa5bb8697) },
+	{ SPH_C32(0x99fe0000), SPH_C32(0xdcf7006e), SPH_C32(0x7faee000),
+	  SPH_C32(0xcdbb0000), SPH_C32(0xd5aa7403), SPH_C32(0x73f8c7ce),
+	  SPH_C32(0x1fae2a56), SPH_C32(0xa5d395b7), SPH_C32(0x70fe0000),
+	  SPH_C32(0xc06b0060), SPH_C32(0x81856000), SPH_C32(0x6c6c0000),
+	  SPH_C32(0x56711405), SPH_C32(0x2207bd07), SPH_C32(0xfff3a999),
+	  SPH_C32(0x151e9ea3) },
+	{ SPH_C32(0x2f300000), SPH_C32(0x061e006c), SPH_C32(0x6ac06000),
+	  SPH_C32(0x17290000), SPH_C32(0x23772e67), SPH_C32(0x45ca9b44),
+	  SPH_C32(0xeddcc2f8), SPH_C32(0x036b573a), SPH_C32(0xf6870000),
+	  SPH_C32(0xff520062), SPH_C32(0x601f8000), SPH_C32(0xf43a0000),
+	  SPH_C32(0xc314730b), SPH_C32(0x6c8f75ed), SPH_C32(0x2c2ee0dd),
+	  SPH_C32(0x0303441a) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x3927006e), SPH_C32(0x8b5a8000),
+	  SPH_C32(0x8f7f0000), SPH_C32(0xb6124969), SPH_C32(0x0b4253ae),
+	  SPH_C32(0x3e018bbc), SPH_C32(0x15768d83), SPH_C32(0xc6300000),
+	  SPH_C32(0x1a820062), SPH_C32(0x94ebe000), SPH_C32(0xb6fe0000),
+	  SPH_C32(0xa0ac4e61), SPH_C32(0x1435e18d), SPH_C32(0x0d814137),
+	  SPH_C32(0xb3a65c2e) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd4e1009c), SPH_C32(0xc3230000),
+	  SPH_C32(0xac2f0000), SPH_C32(0xe4950bae), SPH_C32(0xcea415dc),
+	  SPH_C32(0x87ec287c), SPH_C32(0xbce1a3ce), SPH_C32(0xc6730000),
+	  SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000), SPH_C32(0x218d0000),
+	  SPH_C32(0x23111587), SPH_C32(0x7913512f), SPH_C32(0x1d28ac88),
+	  SPH_C32(0x378dd173) },
+	{ SPH_C32(0xef280000), SPH_C32(0xebd8009e), SPH_C32(0x22b9e000),
+	  SPH_C32(0x34790000), SPH_C32(0x71f06ca0), SPH_C32(0x802cdd36),
+	  SPH_C32(0x54316138), SPH_C32(0xaafc7977), SPH_C32(0xf6c40000),
+	  SPH_C32(0x4a5d000c), SPH_C32(0x50356000), SPH_C32(0x63490000),
+	  SPH_C32(0x40a928ed), SPH_C32(0x01a9c54f), SPH_C32(0x3c870d62),
+	  SPH_C32(0x8728c947) },
+	{ SPH_C32(0x59e60000), SPH_C32(0x3131009c), SPH_C32(0x37d76000),
+	  SPH_C32(0xeeeb0000), SPH_C32(0x872d36c4), SPH_C32(0xb61e81bc),
+	  SPH_C32(0xa6438996), SPH_C32(0x0c44bbfa), SPH_C32(0x70bd0000),
+	  SPH_C32(0x7564000e), SPH_C32(0xb1af8000), SPH_C32(0xfb1f0000),
+	  SPH_C32(0xd5cc4fe3), SPH_C32(0x4f210da5), SPH_C32(0xef5a4426),
+	  SPH_C32(0x913513fe) },
+	{ SPH_C32(0xdf9f0000), SPH_C32(0x0e08009e), SPH_C32(0xd64d8000),
+	  SPH_C32(0x76bd0000), SPH_C32(0x124851ca), SPH_C32(0xf8964956),
+	  SPH_C32(0x759ec0d2), SPH_C32(0x1a596143), SPH_C32(0x400a0000),
+	  SPH_C32(0x90b4000e), SPH_C32(0x455be000), SPH_C32(0xb9db0000),
+	  SPH_C32(0xb6747289), SPH_C32(0x379b99c5), SPH_C32(0xcef5e5cc),
+	  SPH_C32(0x21900bca) },
+	{ SPH_C32(0x7d480000), SPH_C32(0xf72b00a0), SPH_C32(0x93fc0000),
+	  SPH_C32(0xe8990000), SPH_C32(0xfff96c1e), SPH_C32(0xf257b9a9),
+	  SPH_C32(0xe60a38cc), SPH_C32(0x672b784e), SPH_C32(0x25300000),
+	  SPH_C32(0x95c30018), SPH_C32(0x56070000), SPH_C32(0x8bc30000),
+	  SPH_C32(0xf80f5721), SPH_C32(0x5c78ef3a), SPH_C32(0x0f151dde),
+	  SPH_C32(0x0dc348a4) },
+	{ SPH_C32(0xfb310000), SPH_C32(0xc81200a2), SPH_C32(0x7266e000),
+	  SPH_C32(0x70cf0000), SPH_C32(0x6a9c0b10), SPH_C32(0xbcdf7143),
+	  SPH_C32(0x35d77188), SPH_C32(0x7136a2f7), SPH_C32(0x15870000),
+	  SPH_C32(0x70130018), SPH_C32(0xa2f36000), SPH_C32(0xc9070000),
+	  SPH_C32(0x9bb76a4b), SPH_C32(0x24c27b5a), SPH_C32(0x2ebabc34),
+	  SPH_C32(0xbd665090) },
+	{ SPH_C32(0x4dff0000), SPH_C32(0x12fb00a0), SPH_C32(0x67086000),
+	  SPH_C32(0xaa5d0000), SPH_C32(0x9c415174), SPH_C32(0x8aed2dc9),
+	  SPH_C32(0xc7a59926), SPH_C32(0xd78e607a), SPH_C32(0x93fe0000),
+	  SPH_C32(0x4f2a001a), SPH_C32(0x43698000), SPH_C32(0x51510000),
+	  SPH_C32(0x0ed20d45), SPH_C32(0x6a4ab3b0), SPH_C32(0xfd67f570),
+	  SPH_C32(0xab7b8a29) },
+	{ SPH_C32(0xcb860000), SPH_C32(0x2dc200a2), SPH_C32(0x86928000),
+	  SPH_C32(0x320b0000), SPH_C32(0x0924367a), SPH_C32(0xc465e523),
+	  SPH_C32(0x1478d062), SPH_C32(0xc193bac3), SPH_C32(0xa3490000),
+	  SPH_C32(0xaafa001a), SPH_C32(0xb79de000), SPH_C32(0x13950000),
+	  SPH_C32(0x6d6a302f), SPH_C32(0x12f027d0), SPH_C32(0xdcc8549a),
+	  SPH_C32(0x1bde921d) },
+	{ SPH_C32(0x8a120000), SPH_C32(0xeeaf0088), SPH_C32(0x31e50000),
+	  SPH_C32(0x06610000), SPH_C32(0x3f8b4908), SPH_C32(0xebcfabc9),
+	  SPH_C32(0x95d1992a), SPH_C32(0x86af3a19), SPH_C32(0x31290000),
+	  SPH_C32(0xb6090024), SPH_C32(0x06d80000), SPH_C32(0xcf750000),
+	  SPH_C32(0xe3633091), SPH_C32(0x608b434f), SPH_C32(0x6ef30d6e),
+	  SPH_C32(0xd6099324) },
+	{ SPH_C32(0x0c6b0000), SPH_C32(0xd196008a), SPH_C32(0xd07fe000),
+	  SPH_C32(0x9e370000), SPH_C32(0xaaee2e06), SPH_C32(0xa5476323),
+	  SPH_C32(0x460cd06e), SPH_C32(0x90b2e0a0), SPH_C32(0x019e0000),
+	  SPH_C32(0x53d90024), SPH_C32(0xf22c6000), SPH_C32(0x8db10000),
+	  SPH_C32(0x80db0dfb), SPH_C32(0x1831d72f), SPH_C32(0x4f5cac84),
+	  SPH_C32(0x66ac8b10) },
+	{ SPH_C32(0xbaa50000), SPH_C32(0x0b7f0088), SPH_C32(0xc5116000),
+	  SPH_C32(0x44a50000), SPH_C32(0x5c337462), SPH_C32(0x93753fa9),
+	  SPH_C32(0xb47e38c0), SPH_C32(0x360a222d), SPH_C32(0x87e70000),
+	  SPH_C32(0x6ce00026), SPH_C32(0x13b68000), SPH_C32(0x15e70000),
+	  SPH_C32(0x15be6af5), SPH_C32(0x56b91fc5), SPH_C32(0x9c81e5c0),
+	  SPH_C32(0x70b151a9) },
+	{ SPH_C32(0x3cdc0000), SPH_C32(0x3446008a), SPH_C32(0x248b8000),
+	  SPH_C32(0xdcf30000), SPH_C32(0xc956136c), SPH_C32(0xddfdf743),
+	  SPH_C32(0x67a37184), SPH_C32(0x2017f894), SPH_C32(0xb7500000),
+	  SPH_C32(0x89300026), SPH_C32(0xe742e000), SPH_C32(0x57230000),
+	  SPH_C32(0x7606579f), SPH_C32(0x2e038ba5), SPH_C32(0xbd2e442a),
+	  SPH_C32(0xc014499d) },
+	{ SPH_C32(0x9e0b0000), SPH_C32(0xcd6500b4), SPH_C32(0x613a0000),
+	  SPH_C32(0x42d70000), SPH_C32(0x24e72eb8), SPH_C32(0xd73c07bc),
+	  SPH_C32(0xf437899a), SPH_C32(0x5d65e199), SPH_C32(0xd26a0000),
+	  SPH_C32(0x8c470030), SPH_C32(0xf41e0000), SPH_C32(0x653b0000),
+	  SPH_C32(0x387d7237), SPH_C32(0x45e0fd5a), SPH_C32(0x7ccebc38),
+	  SPH_C32(0xec470af3) },
+	{ SPH_C32(0x18720000), SPH_C32(0xf25c00b6), SPH_C32(0x80a0e000),
+	  SPH_C32(0xda810000), SPH_C32(0xb18249b6), SPH_C32(0x99b4cf56),
+	  SPH_C32(0x27eac0de), SPH_C32(0x4b783b20), SPH_C32(0xe2dd0000),
+	  SPH_C32(0x69970030), SPH_C32(0x00ea6000), SPH_C32(0x27ff0000),
+	  SPH_C32(0x5bc54f5d), SPH_C32(0x3d5a693a), SPH_C32(0x5d611dd2),
+	  SPH_C32(0x5ce212c7) },
+	{ SPH_C32(0xaebc0000), SPH_C32(0x28b500b4), SPH_C32(0x95ce6000),
+	  SPH_C32(0x00130000), SPH_C32(0x475f13d2), SPH_C32(0xaf8693dc),
+	  SPH_C32(0xd5982870), SPH_C32(0xedc0f9ad), SPH_C32(0x64a40000),
+	  SPH_C32(0x56ae0032), SPH_C32(0xe1708000), SPH_C32(0xbfa90000),
+	  SPH_C32(0xcea02853), SPH_C32(0x73d2a1d0), SPH_C32(0x8ebc5496),
+	  SPH_C32(0x4affc87e) },
+	{ SPH_C32(0x28c50000), SPH_C32(0x178c00b6), SPH_C32(0x74548000),
+	  SPH_C32(0x98450000), SPH_C32(0xd23a74dc), SPH_C32(0xe10e5b36),
+	  SPH_C32(0x06456134), SPH_C32(0xfbdd2314), SPH_C32(0x54130000),
+	  SPH_C32(0xb37e0032), SPH_C32(0x1584e000), SPH_C32(0xfd6d0000),
+	  SPH_C32(0xad181539), SPH_C32(0x0b6835b0), SPH_C32(0xaf13f57c),
+	  SPH_C32(0xfa5ad04a) },
+	{ SPH_C32(0x3d010000), SPH_C32(0xd29000c0), SPH_C32(0xe68d0000),
+	  SPH_C32(0xc6310000), SPH_C32(0xca304571), SPH_C32(0xa8ea90ce),
+	  SPH_C32(0x385630bf), SPH_C32(0xc290fed9), SPH_C32(0x7afe0000),
+	  SPH_C32(0x53b60014), SPH_C32(0xbd420000), SPH_C32(0xf0860000),
+	  SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979), SPH_C32(0x1d3a76bf),
+	  SPH_C32(0x1bb6813d) },
+	{ SPH_C32(0xbb780000), SPH_C32(0xeda900c2), SPH_C32(0x0717e000),
+	  SPH_C32(0x5e670000), SPH_C32(0x5f55227f), SPH_C32(0xe6625824),
+	  SPH_C32(0xeb8b79fb), SPH_C32(0xd48d2460), SPH_C32(0x4a490000),
+	  SPH_C32(0xb6660014), SPH_C32(0x49b66000), SPH_C32(0xb2420000),
+	  SPH_C32(0xeeb15029), SPH_C32(0x430f5d19), SPH_C32(0x3c95d755),
+	  SPH_C32(0xab139909) },
+	{ SPH_C32(0x0db60000), SPH_C32(0x374000c0), SPH_C32(0x12796000),
+	  SPH_C32(0x84f50000), SPH_C32(0xa988781b), SPH_C32(0xd05004ae),
+	  SPH_C32(0x19f99155), SPH_C32(0x7235e6ed), SPH_C32(0xcc300000),
+	  SPH_C32(0x895f0016), SPH_C32(0xa82c8000), SPH_C32(0x2a140000),
+	  SPH_C32(0x7bd43727), SPH_C32(0x0d8795f3), SPH_C32(0xef489e11),
+	  SPH_C32(0xbd0e43b0) },
+	{ SPH_C32(0x8bcf0000), SPH_C32(0x087900c2), SPH_C32(0xf3e38000),
+	  SPH_C32(0x1ca30000), SPH_C32(0x3ced1f15), SPH_C32(0x9ed8cc44),
+	  SPH_C32(0xca24d811), SPH_C32(0x64283c54), SPH_C32(0xfc870000),
+	  SPH_C32(0x6c8f0016), SPH_C32(0x5cd8e000), SPH_C32(0x68d00000),
+	  SPH_C32(0x186c0a4d), SPH_C32(0x753d0193), SPH_C32(0xcee73ffb),
+	  SPH_C32(0x0dab5b84) },
+	{ SPH_C32(0x29180000), SPH_C32(0xf15a00fc), SPH_C32(0xb6520000),
+	  SPH_C32(0x82870000), SPH_C32(0xd15c22c1), SPH_C32(0x94193cbb),
+	  SPH_C32(0x59b0200f), SPH_C32(0x195a2559), SPH_C32(0x99bd0000),
+	  SPH_C32(0x69f80000), SPH_C32(0x4f840000), SPH_C32(0x5ac80000),
+	  SPH_C32(0x56172fe5), SPH_C32(0x1ede776c), SPH_C32(0x0f07c7e9),
+	  SPH_C32(0x21f818ea) },
+	{ SPH_C32(0xaf610000), SPH_C32(0xce6300fe), SPH_C32(0x57c8e000),
+	  SPH_C32(0x1ad10000), SPH_C32(0x443945cf), SPH_C32(0xda91f451),
+	  SPH_C32(0x8a6d694b), SPH_C32(0x0f47ffe0), SPH_C32(0xa90a0000),
+	  SPH_C32(0x8c280000), SPH_C32(0xbb706000), SPH_C32(0x180c0000),
+	  SPH_C32(0x35af128f), SPH_C32(0x6664e30c), SPH_C32(0x2ea86603),
+	  SPH_C32(0x915d00de) },
+	{ SPH_C32(0x19af0000), SPH_C32(0x148a00fc), SPH_C32(0x42a66000),
+	  SPH_C32(0xc0430000), SPH_C32(0xb2e41fab), SPH_C32(0xeca3a8db),
+	  SPH_C32(0x781f81e5), SPH_C32(0xa9ff3d6d), SPH_C32(0x2f730000),
+	  SPH_C32(0xb3110002), SPH_C32(0x5aea8000), SPH_C32(0x805a0000),
+	  SPH_C32(0xa0ca7581), SPH_C32(0x28ec2be6), SPH_C32(0xfd752f47),
+	  SPH_C32(0x8740da67) },
+	{ SPH_C32(0x9fd60000), SPH_C32(0x2bb300fe), SPH_C32(0xa33c8000),
+	  SPH_C32(0x58150000), SPH_C32(0x278178a5), SPH_C32(0xa22b6031),
+	  SPH_C32(0xabc2c8a1), SPH_C32(0xbfe2e7d4), SPH_C32(0x1fc40000),
+	  SPH_C32(0x56c10002), SPH_C32(0xae1ee000), SPH_C32(0xc29e0000),
+	  SPH_C32(0xc37248eb), SPH_C32(0x5056bf86), SPH_C32(0xdcda8ead),
+	  SPH_C32(0x37e5c253) },
+	{ SPH_C32(0xde420000), SPH_C32(0xe8de00d4), SPH_C32(0x144b0000),
+	  SPH_C32(0x6c7f0000), SPH_C32(0x112e07d7), SPH_C32(0x8d812edb),
+	  SPH_C32(0x2a6b81e9), SPH_C32(0xf8de670e), SPH_C32(0x8da40000),
+	  SPH_C32(0x4a32003c), SPH_C32(0x1f5b0000), SPH_C32(0x1e7e0000),
+	  SPH_C32(0x4d7b4855), SPH_C32(0x222ddb19), SPH_C32(0x6ee1d759),
+	  SPH_C32(0xfa32c36a) },
+	{ SPH_C32(0x583b0000), SPH_C32(0xd7e700d6), SPH_C32(0xf5d1e000),
+	  SPH_C32(0xf4290000), SPH_C32(0x844b60d9), SPH_C32(0xc309e631),
+	  SPH_C32(0xf9b6c8ad), SPH_C32(0xeec3bdb7), SPH_C32(0xbd130000),
+	  SPH_C32(0xafe2003c), SPH_C32(0xebaf6000), SPH_C32(0x5cba0000),
+	  SPH_C32(0x2ec3753f), SPH_C32(0x5a974f79), SPH_C32(0x4f4e76b3),
+	  SPH_C32(0x4a97db5e) },
+	{ SPH_C32(0xeef50000), SPH_C32(0x0d0e00d4), SPH_C32(0xe0bf6000),
+	  SPH_C32(0x2ebb0000), SPH_C32(0x72963abd), SPH_C32(0xf53bbabb),
+	  SPH_C32(0x0bc42003), SPH_C32(0x487b7f3a), SPH_C32(0x3b6a0000),
+	  SPH_C32(0x90db003e), SPH_C32(0x0a358000), SPH_C32(0xc4ec0000),
+	  SPH_C32(0xbba61231), SPH_C32(0x141f8793), SPH_C32(0x9c933ff7),
+	  SPH_C32(0x5c8a01e7) },
+	{ SPH_C32(0x688c0000), SPH_C32(0x323700d6), SPH_C32(0x01258000),
+	  SPH_C32(0xb6ed0000), SPH_C32(0xe7f35db3), SPH_C32(0xbbb37251),
+	  SPH_C32(0xd8196947), SPH_C32(0x5e66a583), SPH_C32(0x0bdd0000),
+	  SPH_C32(0x750b003e), SPH_C32(0xfec1e000), SPH_C32(0x86280000),
+	  SPH_C32(0xd81e2f5b), SPH_C32(0x6ca513f3), SPH_C32(0xbd3c9e1d),
+	  SPH_C32(0xec2f19d3) },
+	{ SPH_C32(0xca5b0000), SPH_C32(0xcb1400e8), SPH_C32(0x44940000),
+	  SPH_C32(0x28c90000), SPH_C32(0x0a426067), SPH_C32(0xb17282ae),
+	  SPH_C32(0x4b8d9159), SPH_C32(0x2314bc8e), SPH_C32(0x6ee70000),
+	  SPH_C32(0x707c0028), SPH_C32(0xed9d0000), SPH_C32(0xb4300000),
+	  SPH_C32(0x96650af3), SPH_C32(0x0746650c), SPH_C32(0x7cdc660f),
+	  SPH_C32(0xc07c5abd) },
+	{ SPH_C32(0x4c220000), SPH_C32(0xf42d00ea), SPH_C32(0xa50ee000),
+	  SPH_C32(0xb09f0000), SPH_C32(0x9f270769), SPH_C32(0xfffa4a44),
+	  SPH_C32(0x9850d81d), SPH_C32(0x35096637), SPH_C32(0x5e500000),
+	  SPH_C32(0x95ac0028), SPH_C32(0x19696000), SPH_C32(0xf6f40000),
+	  SPH_C32(0xf5dd3799), SPH_C32(0x7ffcf16c), SPH_C32(0x5d73c7e5),
+	  SPH_C32(0x70d94289) },
+	{ SPH_C32(0xfaec0000), SPH_C32(0x2ec400e8), SPH_C32(0xb0606000),
+	  SPH_C32(0x6a0d0000), SPH_C32(0x69fa5d0d), SPH_C32(0xc9c816ce),
+	  SPH_C32(0x6a2230b3), SPH_C32(0x93b1a4ba), SPH_C32(0xd8290000),
+	  SPH_C32(0xaa95002a), SPH_C32(0xf8f38000), SPH_C32(0x6ea20000),
+	  SPH_C32(0x60b85097), SPH_C32(0x31743986), SPH_C32(0x8eae8ea1),
+	  SPH_C32(0x66c49830) },
+	{ SPH_C32(0x7c950000), SPH_C32(0x11fd00ea), SPH_C32(0x51fa8000),
+	  SPH_C32(0xf25b0000), SPH_C32(0xfc9f3a03), SPH_C32(0x8740de24),
+	  SPH_C32(0xb9ff79f7), SPH_C32(0x85ac7e03), SPH_C32(0xe89e0000),
+	  SPH_C32(0x4f45002a), SPH_C32(0x0c07e000), SPH_C32(0x2c660000),
+	  SPH_C32(0x03006dfd), SPH_C32(0x49ceade6), SPH_C32(0xaf012f4b),
+	  SPH_C32(0xd6618004) },
+	{ SPH_C32(0xd5dc0000), SPH_C32(0x28da0084), SPH_C32(0xdaa00000),
+	  SPH_C32(0x7d240000), SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a),
+	  SPH_C32(0x87fef24b), SPH_C32(0x90daf380), SPH_C32(0x2eae0000),
+	  SPH_C32(0x55c70048), SPH_C32(0x98ec0000), SPH_C32(0x9a980000),
+	  SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b), SPH_C32(0xa2806e7c),
+	  SPH_C32(0x65c7dc2a) },
+	{ SPH_C32(0x53a50000), SPH_C32(0x17e30086), SPH_C32(0x3b3ae000),
+	  SPH_C32(0xe5720000), SPH_C32(0xdfe81464), SPH_C32(0xc28a4560),
+	  SPH_C32(0x5423bb0f), SPH_C32(0x86c72939), SPH_C32(0x1e190000),
+	  SPH_C32(0xb0170048), SPH_C32(0x6c186000), SPH_C32(0xd85c0000),
+	  SPH_C32(0xc0141ef6), SPH_C32(0x2541d80b), SPH_C32(0x832fcf96),
+	  SPH_C32(0xd562c41e) },
+	{ SPH_C32(0xe56b0000), SPH_C32(0xcd0a0084), SPH_C32(0x2e546000),
+	  SPH_C32(0x3fe00000), SPH_C32(0x29354e00), SPH_C32(0xf4b819ea),
+	  SPH_C32(0xa65153a1), SPH_C32(0x207febb4), SPH_C32(0x98600000),
+	  SPH_C32(0x8f2e004a), SPH_C32(0x8d828000), SPH_C32(0x400a0000),
+	  SPH_C32(0x557179f8), SPH_C32(0x6bc910e1), SPH_C32(0x50f286d2),
+	  SPH_C32(0xc37f1ea7) },
+	{ SPH_C32(0x63120000), SPH_C32(0xf2330086), SPH_C32(0xcfce8000),
+	  SPH_C32(0xa7b60000), SPH_C32(0xbc50290e), SPH_C32(0xba30d100),
+	  SPH_C32(0x758c1ae5), SPH_C32(0x3662310d), SPH_C32(0xa8d70000),
+	  SPH_C32(0x6afe004a), SPH_C32(0x7976e000), SPH_C32(0x02ce0000),
+	  SPH_C32(0x36c94492), SPH_C32(0x13738481), SPH_C32(0x715d2738),
+	  SPH_C32(0x73da0693) },
+	{ SPH_C32(0xc1c50000), SPH_C32(0x0b1000b8), SPH_C32(0x8a7f0000),
+	  SPH_C32(0x39920000), SPH_C32(0x51e114da), SPH_C32(0xb0f121ff),
+	  SPH_C32(0xe618e2fb), SPH_C32(0x4b102800), SPH_C32(0xcded0000),
+	  SPH_C32(0x6f89005c), SPH_C32(0x6a2a0000), SPH_C32(0x30d60000),
+	  SPH_C32(0x78b2613a), SPH_C32(0x7890f27e), SPH_C32(0xb0bddf2a),
+	  SPH_C32(0x5f8945fd) },
+	{ SPH_C32(0x47bc0000), SPH_C32(0x342900ba), SPH_C32(0x6be5e000),
+	  SPH_C32(0xa1c40000), SPH_C32(0xc48473d4), SPH_C32(0xfe79e915),
+	  SPH_C32(0x35c5abbf), SPH_C32(0x5d0df2b9), SPH_C32(0xfd5a0000),
+	  SPH_C32(0x8a59005c), SPH_C32(0x9ede6000), SPH_C32(0x72120000),
+	  SPH_C32(0x1b0a5c50), SPH_C32(0x002a661e), SPH_C32(0x91127ec0),
+	  SPH_C32(0xef2c5dc9) },
+	{ SPH_C32(0xf1720000), SPH_C32(0xeec000b8), SPH_C32(0x7e8b6000),
+	  SPH_C32(0x7b560000), SPH_C32(0x325929b0), SPH_C32(0xc84bb59f),
+	  SPH_C32(0xc7b74311), SPH_C32(0xfbb53034), SPH_C32(0x7b230000),
+	  SPH_C32(0xb560005e), SPH_C32(0x7f448000), SPH_C32(0xea440000),
+	  SPH_C32(0x8e6f3b5e), SPH_C32(0x4ea2aef4), SPH_C32(0x42cf3784),
+	  SPH_C32(0xf9318770) },
+	{ SPH_C32(0x770b0000), SPH_C32(0xd1f900ba), SPH_C32(0x9f118000),
+	  SPH_C32(0xe3000000), SPH_C32(0xa73c4ebe), SPH_C32(0x86c37d75),
+	  SPH_C32(0x146a0a55), SPH_C32(0xeda8ea8d), SPH_C32(0x4b940000),
+	  SPH_C32(0x50b0005e), SPH_C32(0x8bb0e000), SPH_C32(0xa8800000),
+	  SPH_C32(0xedd70634), SPH_C32(0x36183a94), SPH_C32(0x6360966e),
+	  SPH_C32(0x49949f44) },
+	{ SPH_C32(0x369f0000), SPH_C32(0x12940090), SPH_C32(0x28660000),
+	  SPH_C32(0xd76a0000), SPH_C32(0x919331cc), SPH_C32(0xa969339f),
+	  SPH_C32(0x95c3431d), SPH_C32(0xaa946a57), SPH_C32(0xd9f40000),
+	  SPH_C32(0x4c430060), SPH_C32(0x3af50000), SPH_C32(0x74600000),
+	  SPH_C32(0x63de068a), SPH_C32(0x44635e0b), SPH_C32(0xd15bcf9a),
+	  SPH_C32(0x84439e7d) },
+	{ SPH_C32(0xb0e60000), SPH_C32(0x2dad0092), SPH_C32(0xc9fce000),
+	  SPH_C32(0x4f3c0000), SPH_C32(0x04f656c2), SPH_C32(0xe7e1fb75),
+	  SPH_C32(0x461e0a59), SPH_C32(0xbc89b0ee), SPH_C32(0xe9430000),
+	  SPH_C32(0xa9930060), SPH_C32(0xce016000), SPH_C32(0x36a40000),
+	  SPH_C32(0x00663be0), SPH_C32(0x3cd9ca6b), SPH_C32(0xf0f46e70),
+	  SPH_C32(0x34e68649) },
+	{ SPH_C32(0x06280000), SPH_C32(0xf7440090), SPH_C32(0xdc926000),
+	  SPH_C32(0x95ae0000), SPH_C32(0xf22b0ca6), SPH_C32(0xd1d3a7ff),
+	  SPH_C32(0xb46ce2f7), SPH_C32(0x1a317263), SPH_C32(0x6f3a0000),
+	  SPH_C32(0x96aa0062), SPH_C32(0x2f9b8000), SPH_C32(0xaef20000),
+	  SPH_C32(0x95035cee), SPH_C32(0x72510281), SPH_C32(0x23292734),
+	  SPH_C32(0x22fb5cf0) },
+	{ SPH_C32(0x80510000), SPH_C32(0xc87d0092), SPH_C32(0x3d088000),
+	  SPH_C32(0x0df80000), SPH_C32(0x674e6ba8), SPH_C32(0x9f5b6f15),
+	  SPH_C32(0x67b1abb3), SPH_C32(0x0c2ca8da), SPH_C32(0x5f8d0000),
+	  SPH_C32(0x737a0062), SPH_C32(0xdb6fe000), SPH_C32(0xec360000),
+	  SPH_C32(0xf6bb6184), SPH_C32(0x0aeb96e1), SPH_C32(0x028686de),
+	  SPH_C32(0x925e44c4) },
+	{ SPH_C32(0x22860000), SPH_C32(0x315e00ac), SPH_C32(0x78b90000),
+	  SPH_C32(0x93dc0000), SPH_C32(0x8aff567c), SPH_C32(0x959a9fea),
+	  SPH_C32(0xf42553ad), SPH_C32(0x715eb1d7), SPH_C32(0x3ab70000),
+	  SPH_C32(0x760d0074), SPH_C32(0xc8330000), SPH_C32(0xde2e0000),
+	  SPH_C32(0xb8c0442c), SPH_C32(0x6108e01e), SPH_C32(0xc3667ecc),
+	  SPH_C32(0xbe0d07aa) },
+	{ SPH_C32(0xa4ff0000), SPH_C32(0x0e6700ae), SPH_C32(0x9923e000),
+	  SPH_C32(0x0b8a0000), SPH_C32(0x1f9a3172), SPH_C32(0xdb125700),
+	  SPH_C32(0x27f81ae9), SPH_C32(0x67436b6e), SPH_C32(0x0a000000),
+	  SPH_C32(0x93dd0074), SPH_C32(0x3cc76000), SPH_C32(0x9cea0000),
+	  SPH_C32(0xdb787946), SPH_C32(0x19b2747e), SPH_C32(0xe2c9df26),
+	  SPH_C32(0x0ea81f9e) },
+	{ SPH_C32(0x12310000), SPH_C32(0xd48e00ac), SPH_C32(0x8c4d6000),
+	  SPH_C32(0xd1180000), SPH_C32(0xe9476b16), SPH_C32(0xed200b8a),
+	  SPH_C32(0xd58af247), SPH_C32(0xc1fba9e3), SPH_C32(0x8c790000),
+	  SPH_C32(0xace40076), SPH_C32(0xdd5d8000), SPH_C32(0x04bc0000),
+	  SPH_C32(0x4e1d1e48), SPH_C32(0x573abc94), SPH_C32(0x31149662),
+	  SPH_C32(0x18b5c527) },
+	{ SPH_C32(0x94480000), SPH_C32(0xebb700ae), SPH_C32(0x6dd78000),
+	  SPH_C32(0x494e0000), SPH_C32(0x7c220c18), SPH_C32(0xa3a8c360),
+	  SPH_C32(0x0657bb03), SPH_C32(0xd7e6735a), SPH_C32(0xbcce0000),
+	  SPH_C32(0x49340076), SPH_C32(0x29a9e000), SPH_C32(0x46780000),
+	  SPH_C32(0x2da52322), SPH_C32(0x2f8028f4), SPH_C32(0x10bb3788),
+	  SPH_C32(0xa810dd13) },
+	{ SPH_C32(0x818c0000), SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000),
+	  SPH_C32(0x173a0000), SPH_C32(0x64283db5), SPH_C32(0xea4c0898),
+	  SPH_C32(0x3844ea88), SPH_C32(0xeeabae97), SPH_C32(0x92230000),
+	  SPH_C32(0xa9fc0050), SPH_C32(0x816f0000), SPH_C32(0x4b930000),
+	  SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d), SPH_C32(0xa292b44b),
+	  SPH_C32(0x49fc8c64) },
+	{ SPH_C32(0x07f50000), SPH_C32(0x119200da), SPH_C32(0x1e94e000),
+	  SPH_C32(0x8f6c0000), SPH_C32(0xf14d5abb), SPH_C32(0xa4c4c072),
+	  SPH_C32(0xeb99a3cc), SPH_C32(0xf8b6742e), SPH_C32(0xa2940000),
+	  SPH_C32(0x4c2c0050), SPH_C32(0x759b6000), SPH_C32(0x09570000),
+	  SPH_C32(0x6e0c6632), SPH_C32(0x67e7405d), SPH_C32(0x833d15a1),
+	  SPH_C32(0xf9599450) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0xcb7b00d8), SPH_C32(0x0bfa6000),
+	  SPH_C32(0x55fe0000), SPH_C32(0x079000df), SPH_C32(0x92f69cf8),
+	  SPH_C32(0x19eb4b62), SPH_C32(0x5e0eb6a3), SPH_C32(0x24ed0000),
+	  SPH_C32(0x73150052), SPH_C32(0x94018000), SPH_C32(0x91010000),
+	  SPH_C32(0xfb69013c), SPH_C32(0x296f88b7), SPH_C32(0x50e05ce5),
+	  SPH_C32(0xef444ee9) },
+	{ SPH_C32(0x37420000), SPH_C32(0xf44200da), SPH_C32(0xea608000),
+	  SPH_C32(0xcda80000), SPH_C32(0x92f567d1), SPH_C32(0xdc7e5412),
+	  SPH_C32(0xca360226), SPH_C32(0x48136c1a), SPH_C32(0x145a0000),
+	  SPH_C32(0x96c50052), SPH_C32(0x60f5e000), SPH_C32(0xd3c50000),
+	  SPH_C32(0x98d13c56), SPH_C32(0x51d51cd7), SPH_C32(0x714ffd0f),
+	  SPH_C32(0x5fe156dd) },
+	{ SPH_C32(0x95950000), SPH_C32(0x0d6100e4), SPH_C32(0xafd10000),
+	  SPH_C32(0x538c0000), SPH_C32(0x7f445a05), SPH_C32(0xd6bfa4ed),
+	  SPH_C32(0x59a2fa38), SPH_C32(0x35617517), SPH_C32(0x71600000),
+	  SPH_C32(0x93b20044), SPH_C32(0x73a90000), SPH_C32(0xe1dd0000),
+	  SPH_C32(0xd6aa19fe), SPH_C32(0x3a366a28), SPH_C32(0xb0af051d),
+	  SPH_C32(0x73b215b3) },
+	{ SPH_C32(0x13ec0000), SPH_C32(0x325800e6), SPH_C32(0x4e4be000),
+	  SPH_C32(0xcbda0000), SPH_C32(0xea213d0b), SPH_C32(0x98376c07),
+	  SPH_C32(0x8a7fb37c), SPH_C32(0x237cafae), SPH_C32(0x41d70000),
+	  SPH_C32(0x76620044), SPH_C32(0x875d6000), SPH_C32(0xa3190000),
+	  SPH_C32(0xb5122494), SPH_C32(0x428cfe48), SPH_C32(0x9100a4f7),
+	  SPH_C32(0xc3170d87) },
+	{ SPH_C32(0xa5220000), SPH_C32(0xe8b100e4), SPH_C32(0x5b256000),
+	  SPH_C32(0x11480000), SPH_C32(0x1cfc676f), SPH_C32(0xae05308d),
+	  SPH_C32(0x780d5bd2), SPH_C32(0x85c46d23), SPH_C32(0xc7ae0000),
+	  SPH_C32(0x495b0046), SPH_C32(0x66c78000), SPH_C32(0x3b4f0000),
+	  SPH_C32(0x2077439a), SPH_C32(0x0c0436a2), SPH_C32(0x42ddedb3),
+	  SPH_C32(0xd50ad73e) },
+	{ SPH_C32(0x235b0000), SPH_C32(0xd78800e6), SPH_C32(0xbabf8000),
+	  SPH_C32(0x891e0000), SPH_C32(0x89990061), SPH_C32(0xe08df867),
+	  SPH_C32(0xabd01296), SPH_C32(0x93d9b79a), SPH_C32(0xf7190000),
+	  SPH_C32(0xac8b0046), SPH_C32(0x9233e000), SPH_C32(0x798b0000),
+	  SPH_C32(0x43cf7ef0), SPH_C32(0x74bea2c2), SPH_C32(0x63724c59),
+	  SPH_C32(0x65afcf0a) },
+	{ SPH_C32(0x62cf0000), SPH_C32(0x14e500cc), SPH_C32(0x0dc80000),
+	  SPH_C32(0xbd740000), SPH_C32(0xbf367f13), SPH_C32(0xcf27b68d),
+	  SPH_C32(0x2a795bde), SPH_C32(0xd4e53740), SPH_C32(0x65790000),
+	  SPH_C32(0xb0780078), SPH_C32(0x23760000), SPH_C32(0xa56b0000),
+	  SPH_C32(0xcdc67e4e), SPH_C32(0x06c5c65d), SPH_C32(0xd14915ad),
+	  SPH_C32(0xa878ce33) },
+	{ SPH_C32(0xe4b60000), SPH_C32(0x2bdc00ce), SPH_C32(0xec52e000),
+	  SPH_C32(0x25220000), SPH_C32(0x2a53181d), SPH_C32(0x81af7e67),
+	  SPH_C32(0xf9a4129a), SPH_C32(0xc2f8edf9), SPH_C32(0x55ce0000),
+	  SPH_C32(0x55a80078), SPH_C32(0xd7826000), SPH_C32(0xe7af0000),
+	  SPH_C32(0xae7e4324), SPH_C32(0x7e7f523d), SPH_C32(0xf0e6b447),
+	  SPH_C32(0x18ddd607) },
+	{ SPH_C32(0x52780000), SPH_C32(0xf13500cc), SPH_C32(0xf93c6000),
+	  SPH_C32(0xffb00000), SPH_C32(0xdc8e4279), SPH_C32(0xb79d22ed),
+	  SPH_C32(0x0bd6fa34), SPH_C32(0x64402f74), SPH_C32(0xd3b70000),
+	  SPH_C32(0x6a91007a), SPH_C32(0x36188000), SPH_C32(0x7ff90000),
+	  SPH_C32(0x3b1b242a), SPH_C32(0x30f79ad7), SPH_C32(0x233bfd03),
+	  SPH_C32(0x0ec00cbe) },
+	{ SPH_C32(0xd4010000), SPH_C32(0xce0c00ce), SPH_C32(0x18a68000),
+	  SPH_C32(0x67e60000), SPH_C32(0x49eb2577), SPH_C32(0xf915ea07),
+	  SPH_C32(0xd80bb370), SPH_C32(0x725df5cd), SPH_C32(0xe3000000),
+	  SPH_C32(0x8f41007a), SPH_C32(0xc2ece000), SPH_C32(0x3d3d0000),
+	  SPH_C32(0x58a31940), SPH_C32(0x484d0eb7), SPH_C32(0x02945ce9),
+	  SPH_C32(0xbe65148a) },
+	{ SPH_C32(0x76d60000), SPH_C32(0x372f00f0), SPH_C32(0x5d170000),
+	  SPH_C32(0xf9c20000), SPH_C32(0xa45a18a3), SPH_C32(0xf3d41af8),
+	  SPH_C32(0x4b9f4b6e), SPH_C32(0x0f2fecc0), SPH_C32(0x863a0000),
+	  SPH_C32(0x8a36006c), SPH_C32(0xd1b00000), SPH_C32(0x0f250000),
+	  SPH_C32(0x16d83ce8), SPH_C32(0x23ae7848), SPH_C32(0xc374a4fb),
+	  SPH_C32(0x923657e4) },
+	{ SPH_C32(0xf0af0000), SPH_C32(0x081600f2), SPH_C32(0xbc8de000),
+	  SPH_C32(0x61940000), SPH_C32(0x313f7fad), SPH_C32(0xbd5cd212),
+	  SPH_C32(0x9842022a), SPH_C32(0x19323679), SPH_C32(0xb68d0000),
+	  SPH_C32(0x6fe6006c), SPH_C32(0x25446000), SPH_C32(0x4de10000),
+	  SPH_C32(0x75600182), SPH_C32(0x5b14ec28), SPH_C32(0xe2db0511),
+	  SPH_C32(0x22934fd0) },
+	{ SPH_C32(0x46610000), SPH_C32(0xd2ff00f0), SPH_C32(0xa9e36000),
+	  SPH_C32(0xbb060000), SPH_C32(0xc7e225c9), SPH_C32(0x8b6e8e98),
+	  SPH_C32(0x6a30ea84), SPH_C32(0xbf8af4f4), SPH_C32(0x30f40000),
+	  SPH_C32(0x50df006e), SPH_C32(0xc4de8000), SPH_C32(0xd5b70000),
+	  SPH_C32(0xe005668c), SPH_C32(0x159c24c2), SPH_C32(0x31064c55),
+	  SPH_C32(0x348e9569) },
+	{ SPH_C32(0xc0180000), SPH_C32(0xedc600f2), SPH_C32(0x48798000),
+	  SPH_C32(0x23500000), SPH_C32(0x528742c7), SPH_C32(0xc5e64672),
+	  SPH_C32(0xb9eda3c0), SPH_C32(0xa9972e4d), SPH_C32(0x00430000),
+	  SPH_C32(0xb50f006e), SPH_C32(0x302ae000), SPH_C32(0x97730000),
+	  SPH_C32(0x83bd5be6), SPH_C32(0x6d26b0a2), SPH_C32(0x10a9edbf),
+	  SPH_C32(0x842b8d5d) },
+	{ SPH_C32(0xc6730000), SPH_C32(0xaf8d000c), SPH_C32(0xa4c10000),
+	  SPH_C32(0x218d0000), SPH_C32(0x23111587), SPH_C32(0x7913512f),
+	  SPH_C32(0x1d28ac88), SPH_C32(0x378dd173), SPH_C32(0xaf220000),
+	  SPH_C32(0x7b6c0090), SPH_C32(0x67e20000), SPH_C32(0x8da20000),
+	  SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3), SPH_C32(0x9ac484f4),
+	  SPH_C32(0x8b6c72bd) },
+	{ SPH_C32(0x400a0000), SPH_C32(0x90b4000e), SPH_C32(0x455be000),
+	  SPH_C32(0xb9db0000), SPH_C32(0xb6747289), SPH_C32(0x379b99c5),
+	  SPH_C32(0xcef5e5cc), SPH_C32(0x21900bca), SPH_C32(0x9f950000),
+	  SPH_C32(0x9ebc0090), SPH_C32(0x93166000), SPH_C32(0xcf660000),
+	  SPH_C32(0xa43c2343), SPH_C32(0xcf0dd093), SPH_C32(0xbb6b251e),
+	  SPH_C32(0x3bc96a89) },
+	{ SPH_C32(0xf6c40000), SPH_C32(0x4a5d000c), SPH_C32(0x50356000),
+	  SPH_C32(0x63490000), SPH_C32(0x40a928ed), SPH_C32(0x01a9c54f),
+	  SPH_C32(0x3c870d62), SPH_C32(0x8728c947), SPH_C32(0x19ec0000),
+	  SPH_C32(0xa1850092), SPH_C32(0x728c8000), SPH_C32(0x57300000),
+	  SPH_C32(0x3159444d), SPH_C32(0x81851879), SPH_C32(0x68b66c5a),
+	  SPH_C32(0x2dd4b030) },
+	{ SPH_C32(0x70bd0000), SPH_C32(0x7564000e), SPH_C32(0xb1af8000),
+	  SPH_C32(0xfb1f0000), SPH_C32(0xd5cc4fe3), SPH_C32(0x4f210da5),
+	  SPH_C32(0xef5a4426), SPH_C32(0x913513fe), SPH_C32(0x295b0000),
+	  SPH_C32(0x44550092), SPH_C32(0x8678e000), SPH_C32(0x15f40000),
+	  SPH_C32(0x52e17927), SPH_C32(0xf93f8c19), SPH_C32(0x4919cdb0),
+	  SPH_C32(0x9d71a804) },
+	{ SPH_C32(0xd26a0000), SPH_C32(0x8c470030), SPH_C32(0xf41e0000),
+	  SPH_C32(0x653b0000), SPH_C32(0x387d7237), SPH_C32(0x45e0fd5a),
+	  SPH_C32(0x7ccebc38), SPH_C32(0xec470af3), SPH_C32(0x4c610000),
+	  SPH_C32(0x41220084), SPH_C32(0x95240000), SPH_C32(0x27ec0000),
+	  SPH_C32(0x1c9a5c8f), SPH_C32(0x92dcfae6), SPH_C32(0x88f935a2),
+	  SPH_C32(0xb122eb6a) },
+	{ SPH_C32(0x54130000), SPH_C32(0xb37e0032), SPH_C32(0x1584e000),
+	  SPH_C32(0xfd6d0000), SPH_C32(0xad181539), SPH_C32(0x0b6835b0),
+	  SPH_C32(0xaf13f57c), SPH_C32(0xfa5ad04a), SPH_C32(0x7cd60000),
+	  SPH_C32(0xa4f20084), SPH_C32(0x61d06000), SPH_C32(0x65280000),
+	  SPH_C32(0x7f2261e5), SPH_C32(0xea666e86), SPH_C32(0xa9569448),
+	  SPH_C32(0x0187f35e) },
+	{ SPH_C32(0xe2dd0000), SPH_C32(0x69970030), SPH_C32(0x00ea6000),
+	  SPH_C32(0x27ff0000), SPH_C32(0x5bc54f5d), SPH_C32(0x3d5a693a),
+	  SPH_C32(0x5d611dd2), SPH_C32(0x5ce212c7), SPH_C32(0xfaaf0000),
+	  SPH_C32(0x9bcb0086), SPH_C32(0x804a8000), SPH_C32(0xfd7e0000),
+	  SPH_C32(0xea4706eb), SPH_C32(0xa4eea66c), SPH_C32(0x7a8bdd0c),
+	  SPH_C32(0x179a29e7) },
+	{ SPH_C32(0x64a40000), SPH_C32(0x56ae0032), SPH_C32(0xe1708000),
+	  SPH_C32(0xbfa90000), SPH_C32(0xcea02853), SPH_C32(0x73d2a1d0),
+	  SPH_C32(0x8ebc5496), SPH_C32(0x4affc87e), SPH_C32(0xca180000),
+	  SPH_C32(0x7e1b0086), SPH_C32(0x74bee000), SPH_C32(0xbfba0000),
+	  SPH_C32(0x89ff3b81), SPH_C32(0xdc54320c), SPH_C32(0x5b247ce6),
+	  SPH_C32(0xa73f31d3) },
+	{ SPH_C32(0x25300000), SPH_C32(0x95c30018), SPH_C32(0x56070000),
+	  SPH_C32(0x8bc30000), SPH_C32(0xf80f5721), SPH_C32(0x5c78ef3a),
+	  SPH_C32(0x0f151dde), SPH_C32(0x0dc348a4), SPH_C32(0x58780000),
+	  SPH_C32(0x62e800b8), SPH_C32(0xc5fb0000), SPH_C32(0x635a0000),
+	  SPH_C32(0x07f63b3f), SPH_C32(0xae2f5693), SPH_C32(0xe91f2512),
+	  SPH_C32(0x6ae830ea) },
+	{ SPH_C32(0xa3490000), SPH_C32(0xaafa001a), SPH_C32(0xb79de000),
+	  SPH_C32(0x13950000), SPH_C32(0x6d6a302f), SPH_C32(0x12f027d0),
+	  SPH_C32(0xdcc8549a), SPH_C32(0x1bde921d), SPH_C32(0x68cf0000),
+	  SPH_C32(0x873800b8), SPH_C32(0x310f6000), SPH_C32(0x219e0000),
+	  SPH_C32(0x644e0655), SPH_C32(0xd695c2f3), SPH_C32(0xc8b084f8),
+	  SPH_C32(0xda4d28de) },
+	{ SPH_C32(0x15870000), SPH_C32(0x70130018), SPH_C32(0xa2f36000),
+	  SPH_C32(0xc9070000), SPH_C32(0x9bb76a4b), SPH_C32(0x24c27b5a),
+	  SPH_C32(0x2ebabc34), SPH_C32(0xbd665090), SPH_C32(0xeeb60000),
+	  SPH_C32(0xb80100ba), SPH_C32(0xd0958000), SPH_C32(0xb9c80000),
+	  SPH_C32(0xf12b615b), SPH_C32(0x981d0a19), SPH_C32(0x1b6dcdbc),
+	  SPH_C32(0xcc50f267) },
+	{ SPH_C32(0x93fe0000), SPH_C32(0x4f2a001a), SPH_C32(0x43698000),
+	  SPH_C32(0x51510000), SPH_C32(0x0ed20d45), SPH_C32(0x6a4ab3b0),
+	  SPH_C32(0xfd67f570), SPH_C32(0xab7b8a29), SPH_C32(0xde010000),
+	  SPH_C32(0x5dd100ba), SPH_C32(0x2461e000), SPH_C32(0xfb0c0000),
+	  SPH_C32(0x92935c31), SPH_C32(0xe0a79e79), SPH_C32(0x3ac26c56),
+	  SPH_C32(0x7cf5ea53) },
+	{ SPH_C32(0x31290000), SPH_C32(0xb6090024), SPH_C32(0x06d80000),
+	  SPH_C32(0xcf750000), SPH_C32(0xe3633091), SPH_C32(0x608b434f),
+	  SPH_C32(0x6ef30d6e), SPH_C32(0xd6099324), SPH_C32(0xbb3b0000),
+	  SPH_C32(0x58a600ac), SPH_C32(0x373d0000), SPH_C32(0xc9140000),
+	  SPH_C32(0xdce87999), SPH_C32(0x8b44e886), SPH_C32(0xfb229444),
+	  SPH_C32(0x50a6a93d) },
+	{ SPH_C32(0xb7500000), SPH_C32(0x89300026), SPH_C32(0xe742e000),
+	  SPH_C32(0x57230000), SPH_C32(0x7606579f), SPH_C32(0x2e038ba5),
+	  SPH_C32(0xbd2e442a), SPH_C32(0xc014499d), SPH_C32(0x8b8c0000),
+	  SPH_C32(0xbd7600ac), SPH_C32(0xc3c96000), SPH_C32(0x8bd00000),
+	  SPH_C32(0xbf5044f3), SPH_C32(0xf3fe7ce6), SPH_C32(0xda8d35ae),
+	  SPH_C32(0xe003b109) },
+	{ SPH_C32(0x019e0000), SPH_C32(0x53d90024), SPH_C32(0xf22c6000),
+	  SPH_C32(0x8db10000), SPH_C32(0x80db0dfb), SPH_C32(0x1831d72f),
+	  SPH_C32(0x4f5cac84), SPH_C32(0x66ac8b10), SPH_C32(0x0df50000),
+	  SPH_C32(0x824f00ae), SPH_C32(0x22538000), SPH_C32(0x13860000),
+	  SPH_C32(0x2a3523fd), SPH_C32(0xbd76b40c), SPH_C32(0x09507cea),
+	  SPH_C32(0xf61e6bb0) },
+	{ SPH_C32(0x87e70000), SPH_C32(0x6ce00026), SPH_C32(0x13b68000),
+	  SPH_C32(0x15e70000), SPH_C32(0x15be6af5), SPH_C32(0x56b91fc5),
+	  SPH_C32(0x9c81e5c0), SPH_C32(0x70b151a9), SPH_C32(0x3d420000),
+	  SPH_C32(0x679f00ae), SPH_C32(0xd6a7e000), SPH_C32(0x51420000),
+	  SPH_C32(0x498d1e97), SPH_C32(0xc5cc206c), SPH_C32(0x28ffdd00),
+	  SPH_C32(0x46bb7384) },
+	{ SPH_C32(0x92230000), SPH_C32(0xa9fc0050), SPH_C32(0x816f0000),
+	  SPH_C32(0x4b930000), SPH_C32(0x0db45b58), SPH_C32(0x1f5dd43d),
+	  SPH_C32(0xa292b44b), SPH_C32(0x49fc8c64), SPH_C32(0x13af0000),
+	  SPH_C32(0x87570088), SPH_C32(0x7e610000), SPH_C32(0x5ca90000),
+	  SPH_C32(0x699c66ed), SPH_C32(0xf511dca5), SPH_C32(0x9ad65ec3),
+	  SPH_C32(0xa75722f3) },
+	{ SPH_C32(0x145a0000), SPH_C32(0x96c50052), SPH_C32(0x60f5e000),
+	  SPH_C32(0xd3c50000), SPH_C32(0x98d13c56), SPH_C32(0x51d51cd7),
+	  SPH_C32(0x714ffd0f), SPH_C32(0x5fe156dd), SPH_C32(0x23180000),
+	  SPH_C32(0x62870088), SPH_C32(0x8a956000), SPH_C32(0x1e6d0000),
+	  SPH_C32(0x0a245b87), SPH_C32(0x8dab48c5), SPH_C32(0xbb79ff29),
+	  SPH_C32(0x17f23ac7) },
+	{ SPH_C32(0xa2940000), SPH_C32(0x4c2c0050), SPH_C32(0x759b6000),
+	  SPH_C32(0x09570000), SPH_C32(0x6e0c6632), SPH_C32(0x67e7405d),
+	  SPH_C32(0x833d15a1), SPH_C32(0xf9599450), SPH_C32(0xa5610000),
+	  SPH_C32(0x5dbe008a), SPH_C32(0x6b0f8000), SPH_C32(0x863b0000),
+	  SPH_C32(0x9f413c89), SPH_C32(0xc323802f), SPH_C32(0x68a4b66d),
+	  SPH_C32(0x01efe07e) },
+	{ SPH_C32(0x24ed0000), SPH_C32(0x73150052), SPH_C32(0x94018000),
+	  SPH_C32(0x91010000), SPH_C32(0xfb69013c), SPH_C32(0x296f88b7),
+	  SPH_C32(0x50e05ce5), SPH_C32(0xef444ee9), SPH_C32(0x95d60000),
+	  SPH_C32(0xb86e008a), SPH_C32(0x9ffbe000), SPH_C32(0xc4ff0000),
+	  SPH_C32(0xfcf901e3), SPH_C32(0xbb99144f), SPH_C32(0x490b1787),
+	  SPH_C32(0xb14af84a) },
+	{ SPH_C32(0x863a0000), SPH_C32(0x8a36006c), SPH_C32(0xd1b00000),
+	  SPH_C32(0x0f250000), SPH_C32(0x16d83ce8), SPH_C32(0x23ae7848),
+	  SPH_C32(0xc374a4fb), SPH_C32(0x923657e4), SPH_C32(0xf0ec0000),
+	  SPH_C32(0xbd19009c), SPH_C32(0x8ca70000), SPH_C32(0xf6e70000),
+	  SPH_C32(0xb282244b), SPH_C32(0xd07a62b0), SPH_C32(0x88ebef95),
+	  SPH_C32(0x9d19bb24) },
+	{ SPH_C32(0x00430000), SPH_C32(0xb50f006e), SPH_C32(0x302ae000),
+	  SPH_C32(0x97730000), SPH_C32(0x83bd5be6), SPH_C32(0x6d26b0a2),
+	  SPH_C32(0x10a9edbf), SPH_C32(0x842b8d5d), SPH_C32(0xc05b0000),
+	  SPH_C32(0x58c9009c), SPH_C32(0x78536000), SPH_C32(0xb4230000),
+	  SPH_C32(0xd13a1921), SPH_C32(0xa8c0f6d0), SPH_C32(0xa9444e7f),
+	  SPH_C32(0x2dbca310) },
+	{ SPH_C32(0xb68d0000), SPH_C32(0x6fe6006c), SPH_C32(0x25446000),
+	  SPH_C32(0x4de10000), SPH_C32(0x75600182), SPH_C32(0x5b14ec28),
+	  SPH_C32(0xe2db0511), SPH_C32(0x22934fd0), SPH_C32(0x46220000),
+	  SPH_C32(0x67f0009e), SPH_C32(0x99c98000), SPH_C32(0x2c750000),
+	  SPH_C32(0x445f7e2f), SPH_C32(0xe6483e3a), SPH_C32(0x7a99073b),
+	  SPH_C32(0x3ba179a9) },
+	{ SPH_C32(0x30f40000), SPH_C32(0x50df006e), SPH_C32(0xc4de8000),
+	  SPH_C32(0xd5b70000), SPH_C32(0xe005668c), SPH_C32(0x159c24c2),
+	  SPH_C32(0x31064c55), SPH_C32(0x348e9569), SPH_C32(0x76950000),
+	  SPH_C32(0x8220009e), SPH_C32(0x6d3de000), SPH_C32(0x6eb10000),
+	  SPH_C32(0x27e74345), SPH_C32(0x9ef2aa5a), SPH_C32(0x5b36a6d1),
+	  SPH_C32(0x8b04619d) },
+	{ SPH_C32(0x71600000), SPH_C32(0x93b20044), SPH_C32(0x73a90000),
+	  SPH_C32(0xe1dd0000), SPH_C32(0xd6aa19fe), SPH_C32(0x3a366a28),
+	  SPH_C32(0xb0af051d), SPH_C32(0x73b215b3), SPH_C32(0xe4f50000),
+	  SPH_C32(0x9ed300a0), SPH_C32(0xdc780000), SPH_C32(0xb2510000),
+	  SPH_C32(0xa9ee43fb), SPH_C32(0xec89cec5), SPH_C32(0xe90dff25),
+	  SPH_C32(0x46d360a4) },
+	{ SPH_C32(0xf7190000), SPH_C32(0xac8b0046), SPH_C32(0x9233e000),
+	  SPH_C32(0x798b0000), SPH_C32(0x43cf7ef0), SPH_C32(0x74bea2c2),
+	  SPH_C32(0x63724c59), SPH_C32(0x65afcf0a), SPH_C32(0xd4420000),
+	  SPH_C32(0x7b0300a0), SPH_C32(0x288c6000), SPH_C32(0xf0950000),
+	  SPH_C32(0xca567e91), SPH_C32(0x94335aa5), SPH_C32(0xc8a25ecf),
+	  SPH_C32(0xf6767890) },
+	{ SPH_C32(0x41d70000), SPH_C32(0x76620044), SPH_C32(0x875d6000),
+	  SPH_C32(0xa3190000), SPH_C32(0xb5122494), SPH_C32(0x428cfe48),
+	  SPH_C32(0x9100a4f7), SPH_C32(0xc3170d87), SPH_C32(0x523b0000),
+	  SPH_C32(0x443a00a2), SPH_C32(0xc9168000), SPH_C32(0x68c30000),
+	  SPH_C32(0x5f33199f), SPH_C32(0xdabb924f), SPH_C32(0x1b7f178b),
+	  SPH_C32(0xe06ba229) },
+	{ SPH_C32(0xc7ae0000), SPH_C32(0x495b0046), SPH_C32(0x66c78000),
+	  SPH_C32(0x3b4f0000), SPH_C32(0x2077439a), SPH_C32(0x0c0436a2),
+	  SPH_C32(0x42ddedb3), SPH_C32(0xd50ad73e), SPH_C32(0x628c0000),
+	  SPH_C32(0xa1ea00a2), SPH_C32(0x3de2e000), SPH_C32(0x2a070000),
+	  SPH_C32(0x3c8b24f5), SPH_C32(0xa201062f), SPH_C32(0x3ad0b661),
+	  SPH_C32(0x50ceba1d) },
+	{ SPH_C32(0x65790000), SPH_C32(0xb0780078), SPH_C32(0x23760000),
+	  SPH_C32(0xa56b0000), SPH_C32(0xcdc67e4e), SPH_C32(0x06c5c65d),
+	  SPH_C32(0xd14915ad), SPH_C32(0xa878ce33), SPH_C32(0x07b60000),
+	  SPH_C32(0xa49d00b4), SPH_C32(0x2ebe0000), SPH_C32(0x181f0000),
+	  SPH_C32(0x72f0015d), SPH_C32(0xc9e270d0), SPH_C32(0xfb304e73),
+	  SPH_C32(0x7c9df973) },
+	{ SPH_C32(0xe3000000), SPH_C32(0x8f41007a), SPH_C32(0xc2ece000),
+	  SPH_C32(0x3d3d0000), SPH_C32(0x58a31940), SPH_C32(0x484d0eb7),
+	  SPH_C32(0x02945ce9), SPH_C32(0xbe65148a), SPH_C32(0x37010000),
+	  SPH_C32(0x414d00b4), SPH_C32(0xda4a6000), SPH_C32(0x5adb0000),
+	  SPH_C32(0x11483c37), SPH_C32(0xb158e4b0), SPH_C32(0xda9fef99),
+	  SPH_C32(0xcc38e147) },
+	{ SPH_C32(0x55ce0000), SPH_C32(0x55a80078), SPH_C32(0xd7826000),
+	  SPH_C32(0xe7af0000), SPH_C32(0xae7e4324), SPH_C32(0x7e7f523d),
+	  SPH_C32(0xf0e6b447), SPH_C32(0x18ddd607), SPH_C32(0xb1780000),
+	  SPH_C32(0x7e7400b6), SPH_C32(0x3bd08000), SPH_C32(0xc28d0000),
+	  SPH_C32(0x842d5b39), SPH_C32(0xffd02c5a), SPH_C32(0x0942a6dd),
+	  SPH_C32(0xda253bfe) },
+	{ SPH_C32(0xd3b70000), SPH_C32(0x6a91007a), SPH_C32(0x36188000),
+	  SPH_C32(0x7ff90000), SPH_C32(0x3b1b242a), SPH_C32(0x30f79ad7),
+	  SPH_C32(0x233bfd03), SPH_C32(0x0ec00cbe), SPH_C32(0x81cf0000),
+	  SPH_C32(0x9ba400b6), SPH_C32(0xcf24e000), SPH_C32(0x80490000),
+	  SPH_C32(0xe7956653), SPH_C32(0x876ab83a), SPH_C32(0x28ed0737),
+	  SPH_C32(0x6a8023ca) },
+	{ SPH_C32(0x7afe0000), SPH_C32(0x53b60014), SPH_C32(0xbd420000),
+	  SPH_C32(0xf0860000), SPH_C32(0x8d096d43), SPH_C32(0x3bb5c979),
+	  SPH_C32(0x1d3a76bf), SPH_C32(0x1bb6813d), SPH_C32(0x47ff0000),
+	  SPH_C32(0x812600d4), SPH_C32(0x5bcf0000), SPH_C32(0x36b70000),
+	  SPH_C32(0x47392832), SPH_C32(0x935f59b7), SPH_C32(0x256c4600),
+	  SPH_C32(0xd9267fe4) },
+	{ SPH_C32(0xfc870000), SPH_C32(0x6c8f0016), SPH_C32(0x5cd8e000),
+	  SPH_C32(0x68d00000), SPH_C32(0x186c0a4d), SPH_C32(0x753d0193),
+	  SPH_C32(0xcee73ffb), SPH_C32(0x0dab5b84), SPH_C32(0x77480000),
+	  SPH_C32(0x64f600d4), SPH_C32(0xaf3b6000), SPH_C32(0x74730000),
+	  SPH_C32(0x24811558), SPH_C32(0xebe5cdd7), SPH_C32(0x04c3e7ea),
+	  SPH_C32(0x698367d0) },
+	{ SPH_C32(0x4a490000), SPH_C32(0xb6660014), SPH_C32(0x49b66000),
+	  SPH_C32(0xb2420000), SPH_C32(0xeeb15029), SPH_C32(0x430f5d19),
+	  SPH_C32(0x3c95d755), SPH_C32(0xab139909), SPH_C32(0xf1310000),
+	  SPH_C32(0x5bcf00d6), SPH_C32(0x4ea18000), SPH_C32(0xec250000),
+	  SPH_C32(0xb1e47256), SPH_C32(0xa56d053d), SPH_C32(0xd71eaeae),
+	  SPH_C32(0x7f9ebd69) },
+	{ SPH_C32(0xcc300000), SPH_C32(0x895f0016), SPH_C32(0xa82c8000),
+	  SPH_C32(0x2a140000), SPH_C32(0x7bd43727), SPH_C32(0x0d8795f3),
+	  SPH_C32(0xef489e11), SPH_C32(0xbd0e43b0), SPH_C32(0xc1860000),
+	  SPH_C32(0xbe1f00d6), SPH_C32(0xba55e000), SPH_C32(0xaee10000),
+	  SPH_C32(0xd25c4f3c), SPH_C32(0xddd7915d), SPH_C32(0xf6b10f44),
+	  SPH_C32(0xcf3ba55d) },
+	{ SPH_C32(0x6ee70000), SPH_C32(0x707c0028), SPH_C32(0xed9d0000),
+	  SPH_C32(0xb4300000), SPH_C32(0x96650af3), SPH_C32(0x0746650c),
+	  SPH_C32(0x7cdc660f), SPH_C32(0xc07c5abd), SPH_C32(0xa4bc0000),
+	  SPH_C32(0xbb6800c0), SPH_C32(0xa9090000), SPH_C32(0x9cf90000),
+	  SPH_C32(0x9c276a94), SPH_C32(0xb634e7a2), SPH_C32(0x3751f756),
+	  SPH_C32(0xe368e633) },
+	{ SPH_C32(0xe89e0000), SPH_C32(0x4f45002a), SPH_C32(0x0c07e000),
+	  SPH_C32(0x2c660000), SPH_C32(0x03006dfd), SPH_C32(0x49ceade6),
+	  SPH_C32(0xaf012f4b), SPH_C32(0xd6618004), SPH_C32(0x940b0000),
+	  SPH_C32(0x5eb800c0), SPH_C32(0x5dfd6000), SPH_C32(0xde3d0000),
+	  SPH_C32(0xff9f57fe), SPH_C32(0xce8e73c2), SPH_C32(0x16fe56bc),
+	  SPH_C32(0x53cdfe07) },
+	{ SPH_C32(0x5e500000), SPH_C32(0x95ac0028), SPH_C32(0x19696000),
+	  SPH_C32(0xf6f40000), SPH_C32(0xf5dd3799), SPH_C32(0x7ffcf16c),
+	  SPH_C32(0x5d73c7e5), SPH_C32(0x70d94289), SPH_C32(0x12720000),
+	  SPH_C32(0x618100c2), SPH_C32(0xbc678000), SPH_C32(0x466b0000),
+	  SPH_C32(0x6afa30f0), SPH_C32(0x8006bb28), SPH_C32(0xc5231ff8),
+	  SPH_C32(0x45d024be) },
+	{ SPH_C32(0xd8290000), SPH_C32(0xaa95002a), SPH_C32(0xf8f38000),
+	  SPH_C32(0x6ea20000), SPH_C32(0x60b85097), SPH_C32(0x31743986),
+	  SPH_C32(0x8eae8ea1), SPH_C32(0x66c49830), SPH_C32(0x22c50000),
+	  SPH_C32(0x845100c2), SPH_C32(0x4893e000), SPH_C32(0x04af0000),
+	  SPH_C32(0x09420d9a), SPH_C32(0xf8bc2f48), SPH_C32(0xe48cbe12),
+	  SPH_C32(0xf5753c8a) },
+	{ SPH_C32(0x99bd0000), SPH_C32(0x69f80000), SPH_C32(0x4f840000),
+	  SPH_C32(0x5ac80000), SPH_C32(0x56172fe5), SPH_C32(0x1ede776c),
+	  SPH_C32(0x0f07c7e9), SPH_C32(0x21f818ea), SPH_C32(0xb0a50000),
+	  SPH_C32(0x98a200fc), SPH_C32(0xf9d60000), SPH_C32(0xd84f0000),
+	  SPH_C32(0x874b0d24), SPH_C32(0x8ac74bd7), SPH_C32(0x56b7e7e6),
+	  SPH_C32(0x38a23db3) },
+	{ SPH_C32(0x1fc40000), SPH_C32(0x56c10002), SPH_C32(0xae1ee000),
+	  SPH_C32(0xc29e0000), SPH_C32(0xc37248eb), SPH_C32(0x5056bf86),
+	  SPH_C32(0xdcda8ead), SPH_C32(0x37e5c253), SPH_C32(0x80120000),
+	  SPH_C32(0x7d7200fc), SPH_C32(0x0d226000), SPH_C32(0x9a8b0000),
+	  SPH_C32(0xe4f3304e), SPH_C32(0xf27ddfb7), SPH_C32(0x7718460c),
+	  SPH_C32(0x88072587) },
+	{ SPH_C32(0xa90a0000), SPH_C32(0x8c280000), SPH_C32(0xbb706000),
+	  SPH_C32(0x180c0000), SPH_C32(0x35af128f), SPH_C32(0x6664e30c),
+	  SPH_C32(0x2ea86603), SPH_C32(0x915d00de), SPH_C32(0x066b0000),
+	  SPH_C32(0x424b00fe), SPH_C32(0xecb88000), SPH_C32(0x02dd0000),
+	  SPH_C32(0x71965740), SPH_C32(0xbcf5175d), SPH_C32(0xa4c50f48),
+	  SPH_C32(0x9e1aff3e) },
+	{ SPH_C32(0x2f730000), SPH_C32(0xb3110002), SPH_C32(0x5aea8000),
+	  SPH_C32(0x805a0000), SPH_C32(0xa0ca7581), SPH_C32(0x28ec2be6),
+	  SPH_C32(0xfd752f47), SPH_C32(0x8740da67), SPH_C32(0x36dc0000),
+	  SPH_C32(0xa79b00fe), SPH_C32(0x184ce000), SPH_C32(0x40190000),
+	  SPH_C32(0x122e6a2a), SPH_C32(0xc44f833d), SPH_C32(0x856aaea2),
+	  SPH_C32(0x2ebfe70a) },
+	{ SPH_C32(0x8da40000), SPH_C32(0x4a32003c), SPH_C32(0x1f5b0000),
+	  SPH_C32(0x1e7e0000), SPH_C32(0x4d7b4855), SPH_C32(0x222ddb19),
+	  SPH_C32(0x6ee1d759), SPH_C32(0xfa32c36a), SPH_C32(0x53e60000),
+	  SPH_C32(0xa2ec00e8), SPH_C32(0x0b100000), SPH_C32(0x72010000),
+	  SPH_C32(0x5c554f82), SPH_C32(0xafacf5c2), SPH_C32(0x448a56b0),
+	  SPH_C32(0x02eca464) },
+	{ SPH_C32(0x0bdd0000), SPH_C32(0x750b003e), SPH_C32(0xfec1e000),
+	  SPH_C32(0x86280000), SPH_C32(0xd81e2f5b), SPH_C32(0x6ca513f3),
+	  SPH_C32(0xbd3c9e1d), SPH_C32(0xec2f19d3), SPH_C32(0x63510000),
+	  SPH_C32(0x473c00e8), SPH_C32(0xffe46000), SPH_C32(0x30c50000),
+	  SPH_C32(0x3fed72e8), SPH_C32(0xd71661a2), SPH_C32(0x6525f75a),
+	  SPH_C32(0xb249bc50) },
+	{ SPH_C32(0xbd130000), SPH_C32(0xafe2003c), SPH_C32(0xebaf6000),
+	  SPH_C32(0x5cba0000), SPH_C32(0x2ec3753f), SPH_C32(0x5a974f79),
+	  SPH_C32(0x4f4e76b3), SPH_C32(0x4a97db5e), SPH_C32(0xe5280000),
+	  SPH_C32(0x780500ea), SPH_C32(0x1e7e8000), SPH_C32(0xa8930000),
+	  SPH_C32(0xaa8815e6), SPH_C32(0x999ea948), SPH_C32(0xb6f8be1e),
+	  SPH_C32(0xa45466e9) },
+	{ SPH_C32(0x3b6a0000), SPH_C32(0x90db003e), SPH_C32(0x0a358000),
+	  SPH_C32(0xc4ec0000), SPH_C32(0xbba61231), SPH_C32(0x141f8793),
+	  SPH_C32(0x9c933ff7), SPH_C32(0x5c8a01e7), SPH_C32(0xd59f0000),
+	  SPH_C32(0x9dd500ea), SPH_C32(0xea8ae000), SPH_C32(0xea570000),
+	  SPH_C32(0xc930288c), SPH_C32(0xe1243d28), SPH_C32(0x97571ff4),
+	  SPH_C32(0x14f17edd) },
+	{ SPH_C32(0x2eae0000), SPH_C32(0x55c70048), SPH_C32(0x98ec0000),
+	  SPH_C32(0x9a980000), SPH_C32(0xa3ac239c), SPH_C32(0x5dfb4c6b),
+	  SPH_C32(0xa2806e7c), SPH_C32(0x65c7dc2a), SPH_C32(0xfb720000),
+	  SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000), SPH_C32(0xe7bc0000),
+	  SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1), SPH_C32(0x257e9c37),
+	  SPH_C32(0xf51d2faa) },
+	{ SPH_C32(0xa8d70000), SPH_C32(0x6afe004a), SPH_C32(0x7976e000),
+	  SPH_C32(0x02ce0000), SPH_C32(0x36c94492), SPH_C32(0x13738481),
+	  SPH_C32(0x715d2738), SPH_C32(0x73da0693), SPH_C32(0xcbc50000),
+	  SPH_C32(0x98cd00cc), SPH_C32(0xb6b86000), SPH_C32(0xa5780000),
+	  SPH_C32(0x8a996d9c), SPH_C32(0xa9435581), SPH_C32(0x04d13ddd),
+	  SPH_C32(0x45b8379e) },
+	{ SPH_C32(0x1e190000), SPH_C32(0xb0170048), SPH_C32(0x6c186000),
+	  SPH_C32(0xd85c0000), SPH_C32(0xc0141ef6), SPH_C32(0x2541d80b),
+	  SPH_C32(0x832fcf96), SPH_C32(0xd562c41e), SPH_C32(0x4dbc0000),
+	  SPH_C32(0xa7f400ce), SPH_C32(0x57228000), SPH_C32(0x3d2e0000),
+	  SPH_C32(0x1ffc0a92), SPH_C32(0xe7cb9d6b), SPH_C32(0xd70c7499),
+	  SPH_C32(0x53a5ed27) },
+	{ SPH_C32(0x98600000), SPH_C32(0x8f2e004a), SPH_C32(0x8d828000),
+	  SPH_C32(0x400a0000), SPH_C32(0x557179f8), SPH_C32(0x6bc910e1),
+	  SPH_C32(0x50f286d2), SPH_C32(0xc37f1ea7), SPH_C32(0x7d0b0000),
+	  SPH_C32(0x422400ce), SPH_C32(0xa3d6e000), SPH_C32(0x7fea0000),
+	  SPH_C32(0x7c4437f8), SPH_C32(0x9f71090b), SPH_C32(0xf6a3d573),
+	  SPH_C32(0xe300f513) },
+	{ SPH_C32(0x3ab70000), SPH_C32(0x760d0074), SPH_C32(0xc8330000),
+	  SPH_C32(0xde2e0000), SPH_C32(0xb8c0442c), SPH_C32(0x6108e01e),
+	  SPH_C32(0xc3667ecc), SPH_C32(0xbe0d07aa), SPH_C32(0x18310000),
+	  SPH_C32(0x475300d8), SPH_C32(0xb08a0000), SPH_C32(0x4df20000),
+	  SPH_C32(0x323f1250), SPH_C32(0xf4927ff4), SPH_C32(0x37432d61),
+	  SPH_C32(0xcf53b67d) },
+	{ SPH_C32(0xbcce0000), SPH_C32(0x49340076), SPH_C32(0x29a9e000),
+	  SPH_C32(0x46780000), SPH_C32(0x2da52322), SPH_C32(0x2f8028f4),
+	  SPH_C32(0x10bb3788), SPH_C32(0xa810dd13), SPH_C32(0x28860000),
+	  SPH_C32(0xa28300d8), SPH_C32(0x447e6000), SPH_C32(0x0f360000),
+	  SPH_C32(0x51872f3a), SPH_C32(0x8c28eb94), SPH_C32(0x16ec8c8b),
+	  SPH_C32(0x7ff6ae49) },
+	{ SPH_C32(0x0a000000), SPH_C32(0x93dd0074), SPH_C32(0x3cc76000),
+	  SPH_C32(0x9cea0000), SPH_C32(0xdb787946), SPH_C32(0x19b2747e),
+	  SPH_C32(0xe2c9df26), SPH_C32(0x0ea81f9e), SPH_C32(0xaeff0000),
+	  SPH_C32(0x9dba00da), SPH_C32(0xa5e48000), SPH_C32(0x97600000),
+	  SPH_C32(0xc4e24834), SPH_C32(0xc2a0237e), SPH_C32(0xc531c5cf),
+	  SPH_C32(0x69eb74f0) },
+	{ SPH_C32(0x8c790000), SPH_C32(0xace40076), SPH_C32(0xdd5d8000),
+	  SPH_C32(0x04bc0000), SPH_C32(0x4e1d1e48), SPH_C32(0x573abc94),
+	  SPH_C32(0x31149662), SPH_C32(0x18b5c527), SPH_C32(0x9e480000),
+	  SPH_C32(0x786a00da), SPH_C32(0x5110e000), SPH_C32(0xd5a40000),
+	  SPH_C32(0xa75a755e), SPH_C32(0xba1ab71e), SPH_C32(0xe49e6425),
+	  SPH_C32(0xd94e6cc4) },
+	{ SPH_C32(0xcded0000), SPH_C32(0x6f89005c), SPH_C32(0x6a2a0000),
+	  SPH_C32(0x30d60000), SPH_C32(0x78b2613a), SPH_C32(0x7890f27e),
+	  SPH_C32(0xb0bddf2a), SPH_C32(0x5f8945fd), SPH_C32(0x0c280000),
+	  SPH_C32(0x649900e4), SPH_C32(0xe0550000), SPH_C32(0x09440000),
+	  SPH_C32(0x295375e0), SPH_C32(0xc861d381), SPH_C32(0x56a53dd1),
+	  SPH_C32(0x14996dfd) },
+	{ SPH_C32(0x4b940000), SPH_C32(0x50b0005e), SPH_C32(0x8bb0e000),
+	  SPH_C32(0xa8800000), SPH_C32(0xedd70634), SPH_C32(0x36183a94),
+	  SPH_C32(0x6360966e), SPH_C32(0x49949f44), SPH_C32(0x3c9f0000),
+	  SPH_C32(0x814900e4), SPH_C32(0x14a16000), SPH_C32(0x4b800000),
+	  SPH_C32(0x4aeb488a), SPH_C32(0xb0db47e1), SPH_C32(0x770a9c3b),
+	  SPH_C32(0xa43c75c9) },
+	{ SPH_C32(0xfd5a0000), SPH_C32(0x8a59005c), SPH_C32(0x9ede6000),
+	  SPH_C32(0x72120000), SPH_C32(0x1b0a5c50), SPH_C32(0x002a661e),
+	  SPH_C32(0x91127ec0), SPH_C32(0xef2c5dc9), SPH_C32(0xbae60000),
+	  SPH_C32(0xbe7000e6), SPH_C32(0xf53b8000), SPH_C32(0xd3d60000),
+	  SPH_C32(0xdf8e2f84), SPH_C32(0xfe538f0b), SPH_C32(0xa4d7d57f),
+	  SPH_C32(0xb221af70) },
+	{ SPH_C32(0x7b230000), SPH_C32(0xb560005e), SPH_C32(0x7f448000),
+	  SPH_C32(0xea440000), SPH_C32(0x8e6f3b5e), SPH_C32(0x4ea2aef4),
+	  SPH_C32(0x42cf3784), SPH_C32(0xf9318770), SPH_C32(0x8a510000),
+	  SPH_C32(0x5ba000e6), SPH_C32(0x01cfe000), SPH_C32(0x91120000),
+	  SPH_C32(0xbc3612ee), SPH_C32(0x86e91b6b), SPH_C32(0x85787495),
+	  SPH_C32(0x0284b744) },
+	{ SPH_C32(0xd9f40000), SPH_C32(0x4c430060), SPH_C32(0x3af50000),
+	  SPH_C32(0x74600000), SPH_C32(0x63de068a), SPH_C32(0x44635e0b),
+	  SPH_C32(0xd15bcf9a), SPH_C32(0x84439e7d), SPH_C32(0xef6b0000),
+	  SPH_C32(0x5ed700f0), SPH_C32(0x12930000), SPH_C32(0xa30a0000),
+	  SPH_C32(0xf24d3746), SPH_C32(0xed0a6d94), SPH_C32(0x44988c87),
+	  SPH_C32(0x2ed7f42a) },
+	{ SPH_C32(0x5f8d0000), SPH_C32(0x737a0062), SPH_C32(0xdb6fe000),
+	  SPH_C32(0xec360000), SPH_C32(0xf6bb6184), SPH_C32(0x0aeb96e1),
+	  SPH_C32(0x028686de), SPH_C32(0x925e44c4), SPH_C32(0xdfdc0000),
+	  SPH_C32(0xbb0700f0), SPH_C32(0xe6676000), SPH_C32(0xe1ce0000),
+	  SPH_C32(0x91f50a2c), SPH_C32(0x95b0f9f4), SPH_C32(0x65372d6d),
+	  SPH_C32(0x9e72ec1e) },
+	{ SPH_C32(0xe9430000), SPH_C32(0xa9930060), SPH_C32(0xce016000),
+	  SPH_C32(0x36a40000), SPH_C32(0x00663be0), SPH_C32(0x3cd9ca6b),
+	  SPH_C32(0xf0f46e70), SPH_C32(0x34e68649), SPH_C32(0x59a50000),
+	  SPH_C32(0x843e00f2), SPH_C32(0x07fd8000), SPH_C32(0x79980000),
+	  SPH_C32(0x04906d22), SPH_C32(0xdb38311e), SPH_C32(0xb6ea6429),
+	  SPH_C32(0x886f36a7) },
+	{ SPH_C32(0x6f3a0000), SPH_C32(0x96aa0062), SPH_C32(0x2f9b8000),
+	  SPH_C32(0xaef20000), SPH_C32(0x95035cee), SPH_C32(0x72510281),
+	  SPH_C32(0x23292734), SPH_C32(0x22fb5cf0), SPH_C32(0x69120000),
+	  SPH_C32(0x61ee00f2), SPH_C32(0xf309e000), SPH_C32(0x3b5c0000),
+	  SPH_C32(0x67285048), SPH_C32(0xa382a57e), SPH_C32(0x9745c5c3),
+	  SPH_C32(0x38ca2e93) },
+	{ SPH_C32(0xaf220000), SPH_C32(0x7b6c0090), SPH_C32(0x67e20000),
+	  SPH_C32(0x8da20000), SPH_C32(0xc7841e29), SPH_C32(0xb7b744f3),
+	  SPH_C32(0x9ac484f4), SPH_C32(0x8b6c72bd), SPH_C32(0x69510000),
+	  SPH_C32(0xd4e1009c), SPH_C32(0xc3230000), SPH_C32(0xac2f0000),
+	  SPH_C32(0xe4950bae), SPH_C32(0xcea415dc), SPH_C32(0x87ec287c),
+	  SPH_C32(0xbce1a3ce) },
+	{ SPH_C32(0x295b0000), SPH_C32(0x44550092), SPH_C32(0x8678e000),
+	  SPH_C32(0x15f40000), SPH_C32(0x52e17927), SPH_C32(0xf93f8c19),
+	  SPH_C32(0x4919cdb0), SPH_C32(0x9d71a804), SPH_C32(0x59e60000),
+	  SPH_C32(0x3131009c), SPH_C32(0x37d76000), SPH_C32(0xeeeb0000),
+	  SPH_C32(0x872d36c4), SPH_C32(0xb61e81bc), SPH_C32(0xa6438996),
+	  SPH_C32(0x0c44bbfa) },
+	{ SPH_C32(0x9f950000), SPH_C32(0x9ebc0090), SPH_C32(0x93166000),
+	  SPH_C32(0xcf660000), SPH_C32(0xa43c2343), SPH_C32(0xcf0dd093),
+	  SPH_C32(0xbb6b251e), SPH_C32(0x3bc96a89), SPH_C32(0xdf9f0000),
+	  SPH_C32(0x0e08009e), SPH_C32(0xd64d8000), SPH_C32(0x76bd0000),
+	  SPH_C32(0x124851ca), SPH_C32(0xf8964956), SPH_C32(0x759ec0d2),
+	  SPH_C32(0x1a596143) },
+	{ SPH_C32(0x19ec0000), SPH_C32(0xa1850092), SPH_C32(0x728c8000),
+	  SPH_C32(0x57300000), SPH_C32(0x3159444d), SPH_C32(0x81851879),
+	  SPH_C32(0x68b66c5a), SPH_C32(0x2dd4b030), SPH_C32(0xef280000),
+	  SPH_C32(0xebd8009e), SPH_C32(0x22b9e000), SPH_C32(0x34790000),
+	  SPH_C32(0x71f06ca0), SPH_C32(0x802cdd36), SPH_C32(0x54316138),
+	  SPH_C32(0xaafc7977) },
+	{ SPH_C32(0xbb3b0000), SPH_C32(0x58a600ac), SPH_C32(0x373d0000),
+	  SPH_C32(0xc9140000), SPH_C32(0xdce87999), SPH_C32(0x8b44e886),
+	  SPH_C32(0xfb229444), SPH_C32(0x50a6a93d), SPH_C32(0x8a120000),
+	  SPH_C32(0xeeaf0088), SPH_C32(0x31e50000), SPH_C32(0x06610000),
+	  SPH_C32(0x3f8b4908), SPH_C32(0xebcfabc9), SPH_C32(0x95d1992a),
+	  SPH_C32(0x86af3a19) },
+	{ SPH_C32(0x3d420000), SPH_C32(0x679f00ae), SPH_C32(0xd6a7e000),
+	  SPH_C32(0x51420000), SPH_C32(0x498d1e97), SPH_C32(0xc5cc206c),
+	  SPH_C32(0x28ffdd00), SPH_C32(0x46bb7384), SPH_C32(0xbaa50000),
+	  SPH_C32(0x0b7f0088), SPH_C32(0xc5116000), SPH_C32(0x44a50000),
+	  SPH_C32(0x5c337462), SPH_C32(0x93753fa9), SPH_C32(0xb47e38c0),
+	  SPH_C32(0x360a222d) },
+	{ SPH_C32(0x8b8c0000), SPH_C32(0xbd7600ac), SPH_C32(0xc3c96000),
+	  SPH_C32(0x8bd00000), SPH_C32(0xbf5044f3), SPH_C32(0xf3fe7ce6),
+	  SPH_C32(0xda8d35ae), SPH_C32(0xe003b109), SPH_C32(0x3cdc0000),
+	  SPH_C32(0x3446008a), SPH_C32(0x248b8000), SPH_C32(0xdcf30000),
+	  SPH_C32(0xc956136c), SPH_C32(0xddfdf743), SPH_C32(0x67a37184),
+	  SPH_C32(0x2017f894) },
+	{ SPH_C32(0x0df50000), SPH_C32(0x824f00ae), SPH_C32(0x22538000),
+	  SPH_C32(0x13860000), SPH_C32(0x2a3523fd), SPH_C32(0xbd76b40c),
+	  SPH_C32(0x09507cea), SPH_C32(0xf61e6bb0), SPH_C32(0x0c6b0000),
+	  SPH_C32(0xd196008a), SPH_C32(0xd07fe000), SPH_C32(0x9e370000),
+	  SPH_C32(0xaaee2e06), SPH_C32(0xa5476323), SPH_C32(0x460cd06e),
+	  SPH_C32(0x90b2e0a0) },
+	{ SPH_C32(0x4c610000), SPH_C32(0x41220084), SPH_C32(0x95240000),
+	  SPH_C32(0x27ec0000), SPH_C32(0x1c9a5c8f), SPH_C32(0x92dcfae6),
+	  SPH_C32(0x88f935a2), SPH_C32(0xb122eb6a), SPH_C32(0x9e0b0000),
+	  SPH_C32(0xcd6500b4), SPH_C32(0x613a0000), SPH_C32(0x42d70000),
+	  SPH_C32(0x24e72eb8), SPH_C32(0xd73c07bc), SPH_C32(0xf437899a),
+	  SPH_C32(0x5d65e199) },
+	{ SPH_C32(0xca180000), SPH_C32(0x7e1b0086), SPH_C32(0x74bee000),
+	  SPH_C32(0xbfba0000), SPH_C32(0x89ff3b81), SPH_C32(0xdc54320c),
+	  SPH_C32(0x5b247ce6), SPH_C32(0xa73f31d3), SPH_C32(0xaebc0000),
+	  SPH_C32(0x28b500b4), SPH_C32(0x95ce6000), SPH_C32(0x00130000),
+	  SPH_C32(0x475f13d2), SPH_C32(0xaf8693dc), SPH_C32(0xd5982870),
+	  SPH_C32(0xedc0f9ad) },
+	{ SPH_C32(0x7cd60000), SPH_C32(0xa4f20084), SPH_C32(0x61d06000),
+	  SPH_C32(0x65280000), SPH_C32(0x7f2261e5), SPH_C32(0xea666e86),
+	  SPH_C32(0xa9569448), SPH_C32(0x0187f35e), SPH_C32(0x28c50000),
+	  SPH_C32(0x178c00b6), SPH_C32(0x74548000), SPH_C32(0x98450000),
+	  SPH_C32(0xd23a74dc), SPH_C32(0xe10e5b36), SPH_C32(0x06456134),
+	  SPH_C32(0xfbdd2314) },
+	{ SPH_C32(0xfaaf0000), SPH_C32(0x9bcb0086), SPH_C32(0x804a8000),
+	  SPH_C32(0xfd7e0000), SPH_C32(0xea4706eb), SPH_C32(0xa4eea66c),
+	  SPH_C32(0x7a8bdd0c), SPH_C32(0x179a29e7), SPH_C32(0x18720000),
+	  SPH_C32(0xf25c00b6), SPH_C32(0x80a0e000), SPH_C32(0xda810000),
+	  SPH_C32(0xb18249b6), SPH_C32(0x99b4cf56), SPH_C32(0x27eac0de),
+	  SPH_C32(0x4b783b20) },
+	{ SPH_C32(0x58780000), SPH_C32(0x62e800b8), SPH_C32(0xc5fb0000),
+	  SPH_C32(0x635a0000), SPH_C32(0x07f63b3f), SPH_C32(0xae2f5693),
+	  SPH_C32(0xe91f2512), SPH_C32(0x6ae830ea), SPH_C32(0x7d480000),
+	  SPH_C32(0xf72b00a0), SPH_C32(0x93fc0000), SPH_C32(0xe8990000),
+	  SPH_C32(0xfff96c1e), SPH_C32(0xf257b9a9), SPH_C32(0xe60a38cc),
+	  SPH_C32(0x672b784e) },
+	{ SPH_C32(0xde010000), SPH_C32(0x5dd100ba), SPH_C32(0x2461e000),
+	  SPH_C32(0xfb0c0000), SPH_C32(0x92935c31), SPH_C32(0xe0a79e79),
+	  SPH_C32(0x3ac26c56), SPH_C32(0x7cf5ea53), SPH_C32(0x4dff0000),
+	  SPH_C32(0x12fb00a0), SPH_C32(0x67086000), SPH_C32(0xaa5d0000),
+	  SPH_C32(0x9c415174), SPH_C32(0x8aed2dc9), SPH_C32(0xc7a59926),
+	  SPH_C32(0xd78e607a) },
+	{ SPH_C32(0x68cf0000), SPH_C32(0x873800b8), SPH_C32(0x310f6000),
+	  SPH_C32(0x219e0000), SPH_C32(0x644e0655), SPH_C32(0xd695c2f3),
+	  SPH_C32(0xc8b084f8), SPH_C32(0xda4d28de), SPH_C32(0xcb860000),
+	  SPH_C32(0x2dc200a2), SPH_C32(0x86928000), SPH_C32(0x320b0000),
+	  SPH_C32(0x0924367a), SPH_C32(0xc465e523), SPH_C32(0x1478d062),
+	  SPH_C32(0xc193bac3) },
+	{ SPH_C32(0xeeb60000), SPH_C32(0xb80100ba), SPH_C32(0xd0958000),
+	  SPH_C32(0xb9c80000), SPH_C32(0xf12b615b), SPH_C32(0x981d0a19),
+	  SPH_C32(0x1b6dcdbc), SPH_C32(0xcc50f267), SPH_C32(0xfb310000),
+	  SPH_C32(0xc81200a2), SPH_C32(0x7266e000), SPH_C32(0x70cf0000),
+	  SPH_C32(0x6a9c0b10), SPH_C32(0xbcdf7143), SPH_C32(0x35d77188),
+	  SPH_C32(0x7136a2f7) },
+	{ SPH_C32(0xfb720000), SPH_C32(0x7d1d00cc), SPH_C32(0x424c0000),
+	  SPH_C32(0xe7bc0000), SPH_C32(0xe92150f6), SPH_C32(0xd1f9c1e1),
+	  SPH_C32(0x257e9c37), SPH_C32(0xf51d2faa), SPH_C32(0xd5dc0000),
+	  SPH_C32(0x28da0084), SPH_C32(0xdaa00000), SPH_C32(0x7d240000),
+	  SPH_C32(0x4a8d736a), SPH_C32(0x8c028d8a), SPH_C32(0x87fef24b),
+	  SPH_C32(0x90daf380) },
+	{ SPH_C32(0x7d0b0000), SPH_C32(0x422400ce), SPH_C32(0xa3d6e000),
+	  SPH_C32(0x7fea0000), SPH_C32(0x7c4437f8), SPH_C32(0x9f71090b),
+	  SPH_C32(0xf6a3d573), SPH_C32(0xe300f513), SPH_C32(0xe56b0000),
+	  SPH_C32(0xcd0a0084), SPH_C32(0x2e546000), SPH_C32(0x3fe00000),
+	  SPH_C32(0x29354e00), SPH_C32(0xf4b819ea), SPH_C32(0xa65153a1),
+	  SPH_C32(0x207febb4) },
+	{ SPH_C32(0xcbc50000), SPH_C32(0x98cd00cc), SPH_C32(0xb6b86000),
+	  SPH_C32(0xa5780000), SPH_C32(0x8a996d9c), SPH_C32(0xa9435581),
+	  SPH_C32(0x04d13ddd), SPH_C32(0x45b8379e), SPH_C32(0x63120000),
+	  SPH_C32(0xf2330086), SPH_C32(0xcfce8000), SPH_C32(0xa7b60000),
+	  SPH_C32(0xbc50290e), SPH_C32(0xba30d100), SPH_C32(0x758c1ae5),
+	  SPH_C32(0x3662310d) },
+	{ SPH_C32(0x4dbc0000), SPH_C32(0xa7f400ce), SPH_C32(0x57228000),
+	  SPH_C32(0x3d2e0000), SPH_C32(0x1ffc0a92), SPH_C32(0xe7cb9d6b),
+	  SPH_C32(0xd70c7499), SPH_C32(0x53a5ed27), SPH_C32(0x53a50000),
+	  SPH_C32(0x17e30086), SPH_C32(0x3b3ae000), SPH_C32(0xe5720000),
+	  SPH_C32(0xdfe81464), SPH_C32(0xc28a4560), SPH_C32(0x5423bb0f),
+	  SPH_C32(0x86c72939) },
+	{ SPH_C32(0xef6b0000), SPH_C32(0x5ed700f0), SPH_C32(0x12930000),
+	  SPH_C32(0xa30a0000), SPH_C32(0xf24d3746), SPH_C32(0xed0a6d94),
+	  SPH_C32(0x44988c87), SPH_C32(0x2ed7f42a), SPH_C32(0x369f0000),
+	  SPH_C32(0x12940090), SPH_C32(0x28660000), SPH_C32(0xd76a0000),
+	  SPH_C32(0x919331cc), SPH_C32(0xa969339f), SPH_C32(0x95c3431d),
+	  SPH_C32(0xaa946a57) },
+	{ SPH_C32(0x69120000), SPH_C32(0x61ee00f2), SPH_C32(0xf309e000),
+	  SPH_C32(0x3b5c0000), SPH_C32(0x67285048), SPH_C32(0xa382a57e),
+	  SPH_C32(0x9745c5c3), SPH_C32(0x38ca2e93), SPH_C32(0x06280000),
+	  SPH_C32(0xf7440090), SPH_C32(0xdc926000), SPH_C32(0x95ae0000),
+	  SPH_C32(0xf22b0ca6), SPH_C32(0xd1d3a7ff), SPH_C32(0xb46ce2f7),
+	  SPH_C32(0x1a317263) },
+	{ SPH_C32(0xdfdc0000), SPH_C32(0xbb0700f0), SPH_C32(0xe6676000),
+	  SPH_C32(0xe1ce0000), SPH_C32(0x91f50a2c), SPH_C32(0x95b0f9f4),
+	  SPH_C32(0x65372d6d), SPH_C32(0x9e72ec1e), SPH_C32(0x80510000),
+	  SPH_C32(0xc87d0092), SPH_C32(0x3d088000), SPH_C32(0x0df80000),
+	  SPH_C32(0x674e6ba8), SPH_C32(0x9f5b6f15), SPH_C32(0x67b1abb3),
+	  SPH_C32(0x0c2ca8da) },
+	{ SPH_C32(0x59a50000), SPH_C32(0x843e00f2), SPH_C32(0x07fd8000),
+	  SPH_C32(0x79980000), SPH_C32(0x04906d22), SPH_C32(0xdb38311e),
+	  SPH_C32(0xb6ea6429), SPH_C32(0x886f36a7), SPH_C32(0xb0e60000),
+	  SPH_C32(0x2dad0092), SPH_C32(0xc9fce000), SPH_C32(0x4f3c0000),
+	  SPH_C32(0x04f656c2), SPH_C32(0xe7e1fb75), SPH_C32(0x461e0a59),
+	  SPH_C32(0xbc89b0ee) },
+	{ SPH_C32(0x18310000), SPH_C32(0x475300d8), SPH_C32(0xb08a0000),
+	  SPH_C32(0x4df20000), SPH_C32(0x323f1250), SPH_C32(0xf4927ff4),
+	  SPH_C32(0x37432d61), SPH_C32(0xcf53b67d), SPH_C32(0x22860000),
+	  SPH_C32(0x315e00ac), SPH_C32(0x78b90000), SPH_C32(0x93dc0000),
+	  SPH_C32(0x8aff567c), SPH_C32(0x959a9fea), SPH_C32(0xf42553ad),
+	  SPH_C32(0x715eb1d7) },
+	{ SPH_C32(0x9e480000), SPH_C32(0x786a00da), SPH_C32(0x5110e000),
+	  SPH_C32(0xd5a40000), SPH_C32(0xa75a755e), SPH_C32(0xba1ab71e),
+	  SPH_C32(0xe49e6425), SPH_C32(0xd94e6cc4), SPH_C32(0x12310000),
+	  SPH_C32(0xd48e00ac), SPH_C32(0x8c4d6000), SPH_C32(0xd1180000),
+	  SPH_C32(0xe9476b16), SPH_C32(0xed200b8a), SPH_C32(0xd58af247),
+	  SPH_C32(0xc1fba9e3) },
+	{ SPH_C32(0x28860000), SPH_C32(0xa28300d8), SPH_C32(0x447e6000),
+	  SPH_C32(0x0f360000), SPH_C32(0x51872f3a), SPH_C32(0x8c28eb94),
+	  SPH_C32(0x16ec8c8b), SPH_C32(0x7ff6ae49), SPH_C32(0x94480000),
+	  SPH_C32(0xebb700ae), SPH_C32(0x6dd78000), SPH_C32(0x494e0000),
+	  SPH_C32(0x7c220c18), SPH_C32(0xa3a8c360), SPH_C32(0x0657bb03),
+	  SPH_C32(0xd7e6735a) },
+	{ SPH_C32(0xaeff0000), SPH_C32(0x9dba00da), SPH_C32(0xa5e48000),
+	  SPH_C32(0x97600000), SPH_C32(0xc4e24834), SPH_C32(0xc2a0237e),
+	  SPH_C32(0xc531c5cf), SPH_C32(0x69eb74f0), SPH_C32(0xa4ff0000),
+	  SPH_C32(0x0e6700ae), SPH_C32(0x9923e000), SPH_C32(0x0b8a0000),
+	  SPH_C32(0x1f9a3172), SPH_C32(0xdb125700), SPH_C32(0x27f81ae9),
+	  SPH_C32(0x67436b6e) },
+	{ SPH_C32(0x0c280000), SPH_C32(0x649900e4), SPH_C32(0xe0550000),
+	  SPH_C32(0x09440000), SPH_C32(0x295375e0), SPH_C32(0xc861d381),
+	  SPH_C32(0x56a53dd1), SPH_C32(0x14996dfd), SPH_C32(0xc1c50000),
+	  SPH_C32(0x0b1000b8), SPH_C32(0x8a7f0000), SPH_C32(0x39920000),
+	  SPH_C32(0x51e114da), SPH_C32(0xb0f121ff), SPH_C32(0xe618e2fb),
+	  SPH_C32(0x4b102800) },
+	{ SPH_C32(0x8a510000), SPH_C32(0x5ba000e6), SPH_C32(0x01cfe000),
+	  SPH_C32(0x91120000), SPH_C32(0xbc3612ee), SPH_C32(0x86e91b6b),
+	  SPH_C32(0x85787495), SPH_C32(0x0284b744), SPH_C32(0xf1720000),
+	  SPH_C32(0xeec000b8), SPH_C32(0x7e8b6000), SPH_C32(0x7b560000),
+	  SPH_C32(0x325929b0), SPH_C32(0xc84bb59f), SPH_C32(0xc7b74311),
+	  SPH_C32(0xfbb53034) },
+	{ SPH_C32(0x3c9f0000), SPH_C32(0x814900e4), SPH_C32(0x14a16000),
+	  SPH_C32(0x4b800000), SPH_C32(0x4aeb488a), SPH_C32(0xb0db47e1),
+	  SPH_C32(0x770a9c3b), SPH_C32(0xa43c75c9), SPH_C32(0x770b0000),
+	  SPH_C32(0xd1f900ba), SPH_C32(0x9f118000), SPH_C32(0xe3000000),
+	  SPH_C32(0xa73c4ebe), SPH_C32(0x86c37d75), SPH_C32(0x146a0a55),
+	  SPH_C32(0xeda8ea8d) },
+	{ SPH_C32(0xbae60000), SPH_C32(0xbe7000e6), SPH_C32(0xf53b8000),
+	  SPH_C32(0xd3d60000), SPH_C32(0xdf8e2f84), SPH_C32(0xfe538f0b),
+	  SPH_C32(0xa4d7d57f), SPH_C32(0xb221af70), SPH_C32(0x47bc0000),
+	  SPH_C32(0x342900ba), SPH_C32(0x6be5e000), SPH_C32(0xa1c40000),
+	  SPH_C32(0xc48473d4), SPH_C32(0xfe79e915), SPH_C32(0x35c5abbf),
+	  SPH_C32(0x5d0df2b9) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x87570088), SPH_C32(0x7e610000),
+	  SPH_C32(0x5ca90000), SPH_C32(0x699c66ed), SPH_C32(0xf511dca5),
+	  SPH_C32(0x9ad65ec3), SPH_C32(0xa75722f3), SPH_C32(0x818c0000),
+	  SPH_C32(0x2eab00d8), SPH_C32(0xff0e0000), SPH_C32(0x173a0000),
+	  SPH_C32(0x64283db5), SPH_C32(0xea4c0898), SPH_C32(0x3844ea88),
+	  SPH_C32(0xeeabae97) },
+	{ SPH_C32(0x95d60000), SPH_C32(0xb86e008a), SPH_C32(0x9ffbe000),
+	  SPH_C32(0xc4ff0000), SPH_C32(0xfcf901e3), SPH_C32(0xbb99144f),
+	  SPH_C32(0x490b1787), SPH_C32(0xb14af84a), SPH_C32(0xb13b0000),
+	  SPH_C32(0xcb7b00d8), SPH_C32(0x0bfa6000), SPH_C32(0x55fe0000),
+	  SPH_C32(0x079000df), SPH_C32(0x92f69cf8), SPH_C32(0x19eb4b62),
+	  SPH_C32(0x5e0eb6a3) },
+	{ SPH_C32(0x23180000), SPH_C32(0x62870088), SPH_C32(0x8a956000),
+	  SPH_C32(0x1e6d0000), SPH_C32(0x0a245b87), SPH_C32(0x8dab48c5),
+	  SPH_C32(0xbb79ff29), SPH_C32(0x17f23ac7), SPH_C32(0x37420000),
+	  SPH_C32(0xf44200da), SPH_C32(0xea608000), SPH_C32(0xcda80000),
+	  SPH_C32(0x92f567d1), SPH_C32(0xdc7e5412), SPH_C32(0xca360226),
+	  SPH_C32(0x48136c1a) },
+	{ SPH_C32(0xa5610000), SPH_C32(0x5dbe008a), SPH_C32(0x6b0f8000),
+	  SPH_C32(0x863b0000), SPH_C32(0x9f413c89), SPH_C32(0xc323802f),
+	  SPH_C32(0x68a4b66d), SPH_C32(0x01efe07e), SPH_C32(0x07f50000),
+	  SPH_C32(0x119200da), SPH_C32(0x1e94e000), SPH_C32(0x8f6c0000),
+	  SPH_C32(0xf14d5abb), SPH_C32(0xa4c4c072), SPH_C32(0xeb99a3cc),
+	  SPH_C32(0xf8b6742e) },
+	{ SPH_C32(0x07b60000), SPH_C32(0xa49d00b4), SPH_C32(0x2ebe0000),
+	  SPH_C32(0x181f0000), SPH_C32(0x72f0015d), SPH_C32(0xc9e270d0),
+	  SPH_C32(0xfb304e73), SPH_C32(0x7c9df973), SPH_C32(0x62cf0000),
+	  SPH_C32(0x14e500cc), SPH_C32(0x0dc80000), SPH_C32(0xbd740000),
+	  SPH_C32(0xbf367f13), SPH_C32(0xcf27b68d), SPH_C32(0x2a795bde),
+	  SPH_C32(0xd4e53740) },
+	{ SPH_C32(0x81cf0000), SPH_C32(0x9ba400b6), SPH_C32(0xcf24e000),
+	  SPH_C32(0x80490000), SPH_C32(0xe7956653), SPH_C32(0x876ab83a),
+	  SPH_C32(0x28ed0737), SPH_C32(0x6a8023ca), SPH_C32(0x52780000),
+	  SPH_C32(0xf13500cc), SPH_C32(0xf93c6000), SPH_C32(0xffb00000),
+	  SPH_C32(0xdc8e4279), SPH_C32(0xb79d22ed), SPH_C32(0x0bd6fa34),
+	  SPH_C32(0x64402f74) },
+	{ SPH_C32(0x37010000), SPH_C32(0x414d00b4), SPH_C32(0xda4a6000),
+	  SPH_C32(0x5adb0000), SPH_C32(0x11483c37), SPH_C32(0xb158e4b0),
+	  SPH_C32(0xda9fef99), SPH_C32(0xcc38e147), SPH_C32(0xd4010000),
+	  SPH_C32(0xce0c00ce), SPH_C32(0x18a68000), SPH_C32(0x67e60000),
+	  SPH_C32(0x49eb2577), SPH_C32(0xf915ea07), SPH_C32(0xd80bb370),
+	  SPH_C32(0x725df5cd) },
+	{ SPH_C32(0xb1780000), SPH_C32(0x7e7400b6), SPH_C32(0x3bd08000),
+	  SPH_C32(0xc28d0000), SPH_C32(0x842d5b39), SPH_C32(0xffd02c5a),
+	  SPH_C32(0x0942a6dd), SPH_C32(0xda253bfe), SPH_C32(0xe4b60000),
+	  SPH_C32(0x2bdc00ce), SPH_C32(0xec52e000), SPH_C32(0x25220000),
+	  SPH_C32(0x2a53181d), SPH_C32(0x81af7e67), SPH_C32(0xf9a4129a),
+	  SPH_C32(0xc2f8edf9) },
+	{ SPH_C32(0xf0ec0000), SPH_C32(0xbd19009c), SPH_C32(0x8ca70000),
+	  SPH_C32(0xf6e70000), SPH_C32(0xb282244b), SPH_C32(0xd07a62b0),
+	  SPH_C32(0x88ebef95), SPH_C32(0x9d19bb24), SPH_C32(0x76d60000),
+	  SPH_C32(0x372f00f0), SPH_C32(0x5d170000), SPH_C32(0xf9c20000),
+	  SPH_C32(0xa45a18a3), SPH_C32(0xf3d41af8), SPH_C32(0x4b9f4b6e),
+	  SPH_C32(0x0f2fecc0) },
+	{ SPH_C32(0x76950000), SPH_C32(0x8220009e), SPH_C32(0x6d3de000),
+	  SPH_C32(0x6eb10000), SPH_C32(0x27e74345), SPH_C32(0x9ef2aa5a),
+	  SPH_C32(0x5b36a6d1), SPH_C32(0x8b04619d), SPH_C32(0x46610000),
+	  SPH_C32(0xd2ff00f0), SPH_C32(0xa9e36000), SPH_C32(0xbb060000),
+	  SPH_C32(0xc7e225c9), SPH_C32(0x8b6e8e98), SPH_C32(0x6a30ea84),
+	  SPH_C32(0xbf8af4f4) },
+	{ SPH_C32(0xc05b0000), SPH_C32(0x58c9009c), SPH_C32(0x78536000),
+	  SPH_C32(0xb4230000), SPH_C32(0xd13a1921), SPH_C32(0xa8c0f6d0),
+	  SPH_C32(0xa9444e7f), SPH_C32(0x2dbca310), SPH_C32(0xc0180000),
+	  SPH_C32(0xedc600f2), SPH_C32(0x48798000), SPH_C32(0x23500000),
+	  SPH_C32(0x528742c7), SPH_C32(0xc5e64672), SPH_C32(0xb9eda3c0),
+	  SPH_C32(0xa9972e4d) },
+	{ SPH_C32(0x46220000), SPH_C32(0x67f0009e), SPH_C32(0x99c98000),
+	  SPH_C32(0x2c750000), SPH_C32(0x445f7e2f), SPH_C32(0xe6483e3a),
+	  SPH_C32(0x7a99073b), SPH_C32(0x3ba179a9), SPH_C32(0xf0af0000),
+	  SPH_C32(0x081600f2), SPH_C32(0xbc8de000), SPH_C32(0x61940000),
+	  SPH_C32(0x313f7fad), SPH_C32(0xbd5cd212), SPH_C32(0x9842022a),
+	  SPH_C32(0x19323679) },
+	{ SPH_C32(0xe4f50000), SPH_C32(0x9ed300a0), SPH_C32(0xdc780000),
+	  SPH_C32(0xb2510000), SPH_C32(0xa9ee43fb), SPH_C32(0xec89cec5),
+	  SPH_C32(0xe90dff25), SPH_C32(0x46d360a4), SPH_C32(0x95950000),
+	  SPH_C32(0x0d6100e4), SPH_C32(0xafd10000), SPH_C32(0x538c0000),
+	  SPH_C32(0x7f445a05), SPH_C32(0xd6bfa4ed), SPH_C32(0x59a2fa38),
+	  SPH_C32(0x35617517) },
+	{ SPH_C32(0x628c0000), SPH_C32(0xa1ea00a2), SPH_C32(0x3de2e000),
+	  SPH_C32(0x2a070000), SPH_C32(0x3c8b24f5), SPH_C32(0xa201062f),
+	  SPH_C32(0x3ad0b661), SPH_C32(0x50ceba1d), SPH_C32(0xa5220000),
+	  SPH_C32(0xe8b100e4), SPH_C32(0x5b256000), SPH_C32(0x11480000),
+	  SPH_C32(0x1cfc676f), SPH_C32(0xae05308d), SPH_C32(0x780d5bd2),
+	  SPH_C32(0x85c46d23) },
+	{ SPH_C32(0xd4420000), SPH_C32(0x7b0300a0), SPH_C32(0x288c6000),
+	  SPH_C32(0xf0950000), SPH_C32(0xca567e91), SPH_C32(0x94335aa5),
+	  SPH_C32(0xc8a25ecf), SPH_C32(0xf6767890), SPH_C32(0x235b0000),
+	  SPH_C32(0xd78800e6), SPH_C32(0xbabf8000), SPH_C32(0x891e0000),
+	  SPH_C32(0x89990061), SPH_C32(0xe08df867), SPH_C32(0xabd01296),
+	  SPH_C32(0x93d9b79a) },
+	{ SPH_C32(0x523b0000), SPH_C32(0x443a00a2), SPH_C32(0xc9168000),
+	  SPH_C32(0x68c30000), SPH_C32(0x5f33199f), SPH_C32(0xdabb924f),
+	  SPH_C32(0x1b7f178b), SPH_C32(0xe06ba229), SPH_C32(0x13ec0000),
+	  SPH_C32(0x325800e6), SPH_C32(0x4e4be000), SPH_C32(0xcbda0000),
+	  SPH_C32(0xea213d0b), SPH_C32(0x98376c07), SPH_C32(0x8a7fb37c),
+	  SPH_C32(0x237cafae) },
+	{ SPH_C32(0x47ff0000), SPH_C32(0x812600d4), SPH_C32(0x5bcf0000),
+	  SPH_C32(0x36b70000), SPH_C32(0x47392832), SPH_C32(0x935f59b7),
+	  SPH_C32(0x256c4600), SPH_C32(0xd9267fe4), SPH_C32(0x3d010000),
+	  SPH_C32(0xd29000c0), SPH_C32(0xe68d0000), SPH_C32(0xc6310000),
+	  SPH_C32(0xca304571), SPH_C32(0xa8ea90ce), SPH_C32(0x385630bf),
+	  SPH_C32(0xc290fed9) },
+	{ SPH_C32(0xc1860000), SPH_C32(0xbe1f00d6), SPH_C32(0xba55e000),
+	  SPH_C32(0xaee10000), SPH_C32(0xd25c4f3c), SPH_C32(0xddd7915d),
+	  SPH_C32(0xf6b10f44), SPH_C32(0xcf3ba55d), SPH_C32(0x0db60000),
+	  SPH_C32(0x374000c0), SPH_C32(0x12796000), SPH_C32(0x84f50000),
+	  SPH_C32(0xa988781b), SPH_C32(0xd05004ae), SPH_C32(0x19f99155),
+	  SPH_C32(0x7235e6ed) },
+	{ SPH_C32(0x77480000), SPH_C32(0x64f600d4), SPH_C32(0xaf3b6000),
+	  SPH_C32(0x74730000), SPH_C32(0x24811558), SPH_C32(0xebe5cdd7),
+	  SPH_C32(0x04c3e7ea), SPH_C32(0x698367d0), SPH_C32(0x8bcf0000),
+	  SPH_C32(0x087900c2), SPH_C32(0xf3e38000), SPH_C32(0x1ca30000),
+	  SPH_C32(0x3ced1f15), SPH_C32(0x9ed8cc44), SPH_C32(0xca24d811),
+	  SPH_C32(0x64283c54) },
+	{ SPH_C32(0xf1310000), SPH_C32(0x5bcf00d6), SPH_C32(0x4ea18000),
+	  SPH_C32(0xec250000), SPH_C32(0xb1e47256), SPH_C32(0xa56d053d),
+	  SPH_C32(0xd71eaeae), SPH_C32(0x7f9ebd69), SPH_C32(0xbb780000),
+	  SPH_C32(0xeda900c2), SPH_C32(0x0717e000), SPH_C32(0x5e670000),
+	  SPH_C32(0x5f55227f), SPH_C32(0xe6625824), SPH_C32(0xeb8b79fb),
+	  SPH_C32(0xd48d2460) },
+	{ SPH_C32(0x53e60000), SPH_C32(0xa2ec00e8), SPH_C32(0x0b100000),
+	  SPH_C32(0x72010000), SPH_C32(0x5c554f82), SPH_C32(0xafacf5c2),
+	  SPH_C32(0x448a56b0), SPH_C32(0x02eca464), SPH_C32(0xde420000),
+	  SPH_C32(0xe8de00d4), SPH_C32(0x144b0000), SPH_C32(0x6c7f0000),
+	  SPH_C32(0x112e07d7), SPH_C32(0x8d812edb), SPH_C32(0x2a6b81e9),
+	  SPH_C32(0xf8de670e) },
+	{ SPH_C32(0xd59f0000), SPH_C32(0x9dd500ea), SPH_C32(0xea8ae000),
+	  SPH_C32(0xea570000), SPH_C32(0xc930288c), SPH_C32(0xe1243d28),
+	  SPH_C32(0x97571ff4), SPH_C32(0x14f17edd), SPH_C32(0xeef50000),
+	  SPH_C32(0x0d0e00d4), SPH_C32(0xe0bf6000), SPH_C32(0x2ebb0000),
+	  SPH_C32(0x72963abd), SPH_C32(0xf53bbabb), SPH_C32(0x0bc42003),
+	  SPH_C32(0x487b7f3a) },
+	{ SPH_C32(0x63510000), SPH_C32(0x473c00e8), SPH_C32(0xffe46000),
+	  SPH_C32(0x30c50000), SPH_C32(0x3fed72e8), SPH_C32(0xd71661a2),
+	  SPH_C32(0x6525f75a), SPH_C32(0xb249bc50), SPH_C32(0x688c0000),
+	  SPH_C32(0x323700d6), SPH_C32(0x01258000), SPH_C32(0xb6ed0000),
+	  SPH_C32(0xe7f35db3), SPH_C32(0xbbb37251), SPH_C32(0xd8196947),
+	  SPH_C32(0x5e66a583) },
+	{ SPH_C32(0xe5280000), SPH_C32(0x780500ea), SPH_C32(0x1e7e8000),
+	  SPH_C32(0xa8930000), SPH_C32(0xaa8815e6), SPH_C32(0x999ea948),
+	  SPH_C32(0xb6f8be1e), SPH_C32(0xa45466e9), SPH_C32(0x583b0000),
+	  SPH_C32(0xd7e700d6), SPH_C32(0xf5d1e000), SPH_C32(0xf4290000),
+	  SPH_C32(0x844b60d9), SPH_C32(0xc309e631), SPH_C32(0xf9b6c8ad),
+	  SPH_C32(0xeec3bdb7) },
+	{ SPH_C32(0xa4bc0000), SPH_C32(0xbb6800c0), SPH_C32(0xa9090000),
+	  SPH_C32(0x9cf90000), SPH_C32(0x9c276a94), SPH_C32(0xb634e7a2),
+	  SPH_C32(0x3751f756), SPH_C32(0xe368e633), SPH_C32(0xca5b0000),
+	  SPH_C32(0xcb1400e8), SPH_C32(0x44940000), SPH_C32(0x28c90000),
+	  SPH_C32(0x0a426067), SPH_C32(0xb17282ae), SPH_C32(0x4b8d9159),
+	  SPH_C32(0x2314bc8e) },
+	{ SPH_C32(0x22c50000), SPH_C32(0x845100c2), SPH_C32(0x4893e000),
+	  SPH_C32(0x04af0000), SPH_C32(0x09420d9a), SPH_C32(0xf8bc2f48),
+	  SPH_C32(0xe48cbe12), SPH_C32(0xf5753c8a), SPH_C32(0xfaec0000),
+	  SPH_C32(0x2ec400e8), SPH_C32(0xb0606000), SPH_C32(0x6a0d0000),
+	  SPH_C32(0x69fa5d0d), SPH_C32(0xc9c816ce), SPH_C32(0x6a2230b3),
+	  SPH_C32(0x93b1a4ba) },
+	{ SPH_C32(0x940b0000), SPH_C32(0x5eb800c0), SPH_C32(0x5dfd6000),
+	  SPH_C32(0xde3d0000), SPH_C32(0xff9f57fe), SPH_C32(0xce8e73c2),
+	  SPH_C32(0x16fe56bc), SPH_C32(0x53cdfe07), SPH_C32(0x7c950000),
+	  SPH_C32(0x11fd00ea), SPH_C32(0x51fa8000), SPH_C32(0xf25b0000),
+	  SPH_C32(0xfc9f3a03), SPH_C32(0x8740de24), SPH_C32(0xb9ff79f7),
+	  SPH_C32(0x85ac7e03) },
+	{ SPH_C32(0x12720000), SPH_C32(0x618100c2), SPH_C32(0xbc678000),
+	  SPH_C32(0x466b0000), SPH_C32(0x6afa30f0), SPH_C32(0x8006bb28),
+	  SPH_C32(0xc5231ff8), SPH_C32(0x45d024be), SPH_C32(0x4c220000),
+	  SPH_C32(0xf42d00ea), SPH_C32(0xa50ee000), SPH_C32(0xb09f0000),
+	  SPH_C32(0x9f270769), SPH_C32(0xfffa4a44), SPH_C32(0x9850d81d),
+	  SPH_C32(0x35096637) },
+	{ SPH_C32(0xb0a50000), SPH_C32(0x98a200fc), SPH_C32(0xf9d60000),
+	  SPH_C32(0xd84f0000), SPH_C32(0x874b0d24), SPH_C32(0x8ac74bd7),
+	  SPH_C32(0x56b7e7e6), SPH_C32(0x38a23db3), SPH_C32(0x29180000),
+	  SPH_C32(0xf15a00fc), SPH_C32(0xb6520000), SPH_C32(0x82870000),
+	  SPH_C32(0xd15c22c1), SPH_C32(0x94193cbb), SPH_C32(0x59b0200f),
+	  SPH_C32(0x195a2559) },
+	{ SPH_C32(0x36dc0000), SPH_C32(0xa79b00fe), SPH_C32(0x184ce000),
+	  SPH_C32(0x40190000), SPH_C32(0x122e6a2a), SPH_C32(0xc44f833d),
+	  SPH_C32(0x856aaea2), SPH_C32(0x2ebfe70a), SPH_C32(0x19af0000),
+	  SPH_C32(0x148a00fc), SPH_C32(0x42a66000), SPH_C32(0xc0430000),
+	  SPH_C32(0xb2e41fab), SPH_C32(0xeca3a8db), SPH_C32(0x781f81e5),
+	  SPH_C32(0xa9ff3d6d) },
+	{ SPH_C32(0x80120000), SPH_C32(0x7d7200fc), SPH_C32(0x0d226000),
+	  SPH_C32(0x9a8b0000), SPH_C32(0xe4f3304e), SPH_C32(0xf27ddfb7),
+	  SPH_C32(0x7718460c), SPH_C32(0x88072587), SPH_C32(0x9fd60000),
+	  SPH_C32(0x2bb300fe), SPH_C32(0xa33c8000), SPH_C32(0x58150000),
+	  SPH_C32(0x278178a5), SPH_C32(0xa22b6031), SPH_C32(0xabc2c8a1),
+	  SPH_C32(0xbfe2e7d4) },
+	{ SPH_C32(0x066b0000), SPH_C32(0x424b00fe), SPH_C32(0xecb88000),
+	  SPH_C32(0x02dd0000), SPH_C32(0x71965740), SPH_C32(0xbcf5175d),
+	  SPH_C32(0xa4c50f48), SPH_C32(0x9e1aff3e), SPH_C32(0xaf610000),
+	  SPH_C32(0xce6300fe), SPH_C32(0x57c8e000), SPH_C32(0x1ad10000),
+	  SPH_C32(0x443945cf), SPH_C32(0xda91f451), SPH_C32(0x8a6d694b),
+	  SPH_C32(0x0f47ffe0) }
+};
+
+static const sph_u32 T512_32[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xcc140000), SPH_C32(0xa5630000), SPH_C32(0x5ab90780),
+	  SPH_C32(0x3b500000), SPH_C32(0x4bd013ff), SPH_C32(0x879b3418),
+	  SPH_C32(0x694348c1), SPH_C32(0xca5a87fe), SPH_C32(0x819e0000),
+	  SPH_C32(0xec570000), SPH_C32(0x66320280), SPH_C32(0x95f30000),
+	  SPH_C32(0x5da92802), SPH_C32(0x48f43cbc), SPH_C32(0xe65aa22d),
+	  SPH_C32(0x8e67b7fa) },
+	{ SPH_C32(0x819e0000), SPH_C32(0xec570000), SPH_C32(0x66320280),
+	  SPH_C32(0x95f30000), SPH_C32(0x5da92802), SPH_C32(0x48f43cbc),
+	  SPH_C32(0xe65aa22d), SPH_C32(0x8e67b7fa), SPH_C32(0x4d8a0000),
+	  SPH_C32(0x49340000), SPH_C32(0x3c8b0500), SPH_C32(0xaea30000),
+	  SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4), SPH_C32(0x8f19eaec),
+	  SPH_C32(0x443d3004) },
+	{ SPH_C32(0x4d8a0000), SPH_C32(0x49340000), SPH_C32(0x3c8b0500),
+	  SPH_C32(0xaea30000), SPH_C32(0x16793bfd), SPH_C32(0xcf6f08a4),
+	  SPH_C32(0x8f19eaec), SPH_C32(0x443d3004), SPH_C32(0xcc140000),
+	  SPH_C32(0xa5630000), SPH_C32(0x5ab90780), SPH_C32(0x3b500000),
+	  SPH_C32(0x4bd013ff), SPH_C32(0x879b3418), SPH_C32(0x694348c1),
+	  SPH_C32(0xca5a87fe) },
+	{ SPH_C32(0x78230000), SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80),
+	  SPH_C32(0x90a50000), SPH_C32(0x713e2879), SPH_C32(0x7ee98924),
+	  SPH_C32(0xf08ca062), SPH_C32(0x636f8bab), SPH_C32(0x02af0000),
+	  SPH_C32(0xb7280000), SPH_C32(0xba1c0300), SPH_C32(0x56980000),
+	  SPH_C32(0xba8d45d3), SPH_C32(0x8048c667), SPH_C32(0xa95c149a),
+	  SPH_C32(0xf4f6ea7b) },
+	{ SPH_C32(0xb4370000), SPH_C32(0xb79f0000), SPH_C32(0xf3830c00),
+	  SPH_C32(0xabf50000), SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c),
+	  SPH_C32(0x99cfe8a3), SPH_C32(0xa9350c55), SPH_C32(0x83310000),
+	  SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180), SPH_C32(0xc36b0000),
+	  SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb), SPH_C32(0x4f06b6b7),
+	  SPH_C32(0x7a915d81) },
+	{ SPH_C32(0xf9bd0000), SPH_C32(0xfeab0000), SPH_C32(0xcf080900),
+	  SPH_C32(0x05560000), SPH_C32(0x2c97007b), SPH_C32(0x361db598),
+	  SPH_C32(0x16d6024f), SPH_C32(0xed083c51), SPH_C32(0x4f250000),
+	  SPH_C32(0xfe1c0000), SPH_C32(0x86970600), SPH_C32(0xf83b0000),
+	  SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3), SPH_C32(0x2645fe76),
+	  SPH_C32(0xb0cbda7f) },
+	{ SPH_C32(0x35a90000), SPH_C32(0x5bc80000), SPH_C32(0x95b10e80),
+	  SPH_C32(0x3e060000), SPH_C32(0x67471384), SPH_C32(0xb1868180),
+	  SPH_C32(0x7f954a8e), SPH_C32(0x2752bbaf), SPH_C32(0xcebb0000),
+	  SPH_C32(0x124b0000), SPH_C32(0xe0a50480), SPH_C32(0x6dc80000),
+	  SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f), SPH_C32(0xc01f5c5b),
+	  SPH_C32(0x3eac6d85) },
+	{ SPH_C32(0x02af0000), SPH_C32(0xb7280000), SPH_C32(0xba1c0300),
+	  SPH_C32(0x56980000), SPH_C32(0xba8d45d3), SPH_C32(0x8048c667),
+	  SPH_C32(0xa95c149a), SPH_C32(0xf4f6ea7b), SPH_C32(0x7a8c0000),
+	  SPH_C32(0xa5d40000), SPH_C32(0x13260880), SPH_C32(0xc63d0000),
+	  SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43), SPH_C32(0x59d0b4f8),
+	  SPH_C32(0x979961d0) },
+	{ SPH_C32(0xcebb0000), SPH_C32(0x124b0000), SPH_C32(0xe0a50480),
+	  SPH_C32(0x6dc80000), SPH_C32(0xf15d562c), SPH_C32(0x07d3f27f),
+	  SPH_C32(0xc01f5c5b), SPH_C32(0x3eac6d85), SPH_C32(0xfb120000),
+	  SPH_C32(0x49830000), SPH_C32(0x75140a00), SPH_C32(0x53ce0000),
+	  SPH_C32(0x961a45a8), SPH_C32(0xb65573ff), SPH_C32(0xbf8a16d5),
+	  SPH_C32(0x19fed62a) },
+	{ SPH_C32(0x83310000), SPH_C32(0x5b7f0000), SPH_C32(0xdc2e0180),
+	  SPH_C32(0xc36b0000), SPH_C32(0xe7246dd1), SPH_C32(0xc8bcfadb),
+	  SPH_C32(0x4f06b6b7), SPH_C32(0x7a915d81), SPH_C32(0x37060000),
+	  SPH_C32(0xece00000), SPH_C32(0x2fad0d80), SPH_C32(0x689e0000),
+	  SPH_C32(0xddca5657), SPH_C32(0x31ce47e7), SPH_C32(0xd6c95e14),
+	  SPH_C32(0xd3a451d4) },
+	{ SPH_C32(0x4f250000), SPH_C32(0xfe1c0000), SPH_C32(0x86970600),
+	  SPH_C32(0xf83b0000), SPH_C32(0xacf47e2e), SPH_C32(0x4f27cec3),
+	  SPH_C32(0x2645fe76), SPH_C32(0xb0cbda7f), SPH_C32(0xb6980000),
+	  SPH_C32(0x00b70000), SPH_C32(0x499f0f00), SPH_C32(0xfd6d0000),
+	  SPH_C32(0x80637e55), SPH_C32(0x793a7b5b), SPH_C32(0x3093fc39),
+	  SPH_C32(0x5dc3e62e) },
+	{ SPH_C32(0x7a8c0000), SPH_C32(0xa5d40000), SPH_C32(0x13260880),
+	  SPH_C32(0xc63d0000), SPH_C32(0xcbb36daa), SPH_C32(0xfea14f43),
+	  SPH_C32(0x59d0b4f8), SPH_C32(0x979961d0), SPH_C32(0x78230000),
+	  SPH_C32(0x12fc0000), SPH_C32(0xa93a0b80), SPH_C32(0x90a50000),
+	  SPH_C32(0x713e2879), SPH_C32(0x7ee98924), SPH_C32(0xf08ca062),
+	  SPH_C32(0x636f8bab) },
+	{ SPH_C32(0xb6980000), SPH_C32(0x00b70000), SPH_C32(0x499f0f00),
+	  SPH_C32(0xfd6d0000), SPH_C32(0x80637e55), SPH_C32(0x793a7b5b),
+	  SPH_C32(0x3093fc39), SPH_C32(0x5dc3e62e), SPH_C32(0xf9bd0000),
+	  SPH_C32(0xfeab0000), SPH_C32(0xcf080900), SPH_C32(0x05560000),
+	  SPH_C32(0x2c97007b), SPH_C32(0x361db598), SPH_C32(0x16d6024f),
+	  SPH_C32(0xed083c51) },
+	{ SPH_C32(0xfb120000), SPH_C32(0x49830000), SPH_C32(0x75140a00),
+	  SPH_C32(0x53ce0000), SPH_C32(0x961a45a8), SPH_C32(0xb65573ff),
+	  SPH_C32(0xbf8a16d5), SPH_C32(0x19fed62a), SPH_C32(0x35a90000),
+	  SPH_C32(0x5bc80000), SPH_C32(0x95b10e80), SPH_C32(0x3e060000),
+	  SPH_C32(0x67471384), SPH_C32(0xb1868180), SPH_C32(0x7f954a8e),
+	  SPH_C32(0x2752bbaf) },
+	{ SPH_C32(0x37060000), SPH_C32(0xece00000), SPH_C32(0x2fad0d80),
+	  SPH_C32(0x689e0000), SPH_C32(0xddca5657), SPH_C32(0x31ce47e7),
+	  SPH_C32(0xd6c95e14), SPH_C32(0xd3a451d4), SPH_C32(0xb4370000),
+	  SPH_C32(0xb79f0000), SPH_C32(0xf3830c00), SPH_C32(0xabf50000),
+	  SPH_C32(0x3aee3b86), SPH_C32(0xf972bd3c), SPH_C32(0x99cfe8a3),
+	  SPH_C32(0xa9350c55) },
+	{ SPH_C32(0xac480000), SPH_C32(0x1ba60000), SPH_C32(0x45fb1380),
+	  SPH_C32(0x03430000), SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6),
+	  SPH_C32(0xfe72c7fe), SPH_C32(0x91e478f6), SPH_C32(0x1e4e0000),
+	  SPH_C32(0xdecf0000), SPH_C32(0x6df80180), SPH_C32(0x77240000),
+	  SPH_C32(0xec47079e), SPH_C32(0xf4a0694e), SPH_C32(0xcda31812),
+	  SPH_C32(0x98aa496e) },
+	{ SPH_C32(0x605c0000), SPH_C32(0xbec50000), SPH_C32(0x1f421400),
+	  SPH_C32(0x38130000), SPH_C32(0x11552295), SPH_C32(0x982964ae),
+	  SPH_C32(0x97318f3f), SPH_C32(0x5bbeff08), SPH_C32(0x9fd00000),
+	  SPH_C32(0x32980000), SPH_C32(0x0bca0300), SPH_C32(0xe2d70000),
+	  SPH_C32(0xb1ee2f9c), SPH_C32(0xbc5455f2), SPH_C32(0x2bf9ba3f),
+	  SPH_C32(0x16cdfe94) },
+	{ SPH_C32(0x2dd60000), SPH_C32(0xf7f10000), SPH_C32(0x23c91100),
+	  SPH_C32(0x96b00000), SPH_C32(0x072c1968), SPH_C32(0x57466c0a),
+	  SPH_C32(0x182865d3), SPH_C32(0x1f83cf0c), SPH_C32(0x53c40000),
+	  SPH_C32(0x97fb0000), SPH_C32(0x51730480), SPH_C32(0xd9870000),
+	  SPH_C32(0xfa3e3c63), SPH_C32(0x3bcf61ea), SPH_C32(0x42baf2fe),
+	  SPH_C32(0xdc97796a) },
+	{ SPH_C32(0xe1c20000), SPH_C32(0x52920000), SPH_C32(0x79701680),
+	  SPH_C32(0xade00000), SPH_C32(0x4cfc0a97), SPH_C32(0xd0dd5812),
+	  SPH_C32(0x716b2d12), SPH_C32(0xd5d948f2), SPH_C32(0xd25a0000),
+	  SPH_C32(0x7bac0000), SPH_C32(0x37410600), SPH_C32(0x4c740000),
+	  SPH_C32(0xa7971461), SPH_C32(0x733b5d56), SPH_C32(0xa4e050d3),
+	  SPH_C32(0x52f0ce90) },
+	{ SPH_C32(0xd46b0000), SPH_C32(0x095a0000), SPH_C32(0xecc11800),
+	  SPH_C32(0x93e60000), SPH_C32(0x2bbb1913), SPH_C32(0x615bd992),
+	  SPH_C32(0x0efe679c), SPH_C32(0xf28bf35d), SPH_C32(0x1ce10000),
+	  SPH_C32(0x69e70000), SPH_C32(0xd7e40280), SPH_C32(0x21bc0000),
+	  SPH_C32(0x56ca424d), SPH_C32(0x74e8af29), SPH_C32(0x64ff0c88),
+	  SPH_C32(0x6c5ca315) },
+	{ SPH_C32(0x187f0000), SPH_C32(0xac390000), SPH_C32(0xb6781f80),
+	  SPH_C32(0xa8b60000), SPH_C32(0x606b0aec), SPH_C32(0xe6c0ed8a),
+	  SPH_C32(0x67bd2f5d), SPH_C32(0x38d174a3), SPH_C32(0x9d7f0000),
+	  SPH_C32(0x85b00000), SPH_C32(0xb1d60000), SPH_C32(0xb44f0000),
+	  SPH_C32(0x0b636a4f), SPH_C32(0x3c1c9395), SPH_C32(0x82a5aea5),
+	  SPH_C32(0xe23b14ef) },
+	{ SPH_C32(0x55f50000), SPH_C32(0xe50d0000), SPH_C32(0x8af31a80),
+	  SPH_C32(0x06150000), SPH_C32(0x76123111), SPH_C32(0x29afe52e),
+	  SPH_C32(0xe8a4c5b1), SPH_C32(0x7cec44a7), SPH_C32(0x516b0000),
+	  SPH_C32(0x20d30000), SPH_C32(0xeb6f0780), SPH_C32(0x8f1f0000),
+	  SPH_C32(0x40b379b0), SPH_C32(0xbb87a78d), SPH_C32(0xebe6e664),
+	  SPH_C32(0x28619311) },
+	{ SPH_C32(0x99e10000), SPH_C32(0x406e0000), SPH_C32(0xd04a1d00),
+	  SPH_C32(0x3d450000), SPH_C32(0x3dc222ee), SPH_C32(0xae34d136),
+	  SPH_C32(0x81e78d70), SPH_C32(0xb6b6c359), SPH_C32(0xd0f50000),
+	  SPH_C32(0xcc840000), SPH_C32(0x8d5d0500), SPH_C32(0x1aec0000),
+	  SPH_C32(0x1d1a51b2), SPH_C32(0xf3739b31), SPH_C32(0x0dbc4449),
+	  SPH_C32(0xa60624eb) },
+	{ SPH_C32(0xaee70000), SPH_C32(0xac8e0000), SPH_C32(0xffe71080),
+	  SPH_C32(0x55db0000), SPH_C32(0xe00874b9), SPH_C32(0x9ffa96d1),
+	  SPH_C32(0x572ed364), SPH_C32(0x6512928d), SPH_C32(0x64c20000),
+	  SPH_C32(0x7b1b0000), SPH_C32(0x7ede0900), SPH_C32(0xb1190000),
+	  SPH_C32(0x27f46a34), SPH_C32(0x0a01260d), SPH_C32(0x9473acea),
+	  SPH_C32(0x0f3328be) },
+	{ SPH_C32(0x62f30000), SPH_C32(0x09ed0000), SPH_C32(0xa55e1700),
+	  SPH_C32(0x6e8b0000), SPH_C32(0xabd86746), SPH_C32(0x1861a2c9),
+	  SPH_C32(0x3e6d9ba5), SPH_C32(0xaf481573), SPH_C32(0xe55c0000),
+	  SPH_C32(0x974c0000), SPH_C32(0x18ec0b80), SPH_C32(0x24ea0000),
+	  SPH_C32(0x7a5d4236), SPH_C32(0x42f51ab1), SPH_C32(0x72290ec7),
+	  SPH_C32(0x81549f44) },
+	{ SPH_C32(0x2f790000), SPH_C32(0x40d90000), SPH_C32(0x99d51200),
+	  SPH_C32(0xc0280000), SPH_C32(0xbda15cbb), SPH_C32(0xd70eaa6d),
+	  SPH_C32(0xb1747149), SPH_C32(0xeb752577), SPH_C32(0x29480000),
+	  SPH_C32(0x322f0000), SPH_C32(0x42550c00), SPH_C32(0x1fba0000),
+	  SPH_C32(0x318d51c9), SPH_C32(0xc56e2ea9), SPH_C32(0x1b6a4606),
+	  SPH_C32(0x4b0e18ba) },
+	{ SPH_C32(0xe36d0000), SPH_C32(0xe5ba0000), SPH_C32(0xc36c1580),
+	  SPH_C32(0xfb780000), SPH_C32(0xf6714f44), SPH_C32(0x50959e75),
+	  SPH_C32(0xd8373988), SPH_C32(0x212fa289), SPH_C32(0xa8d60000),
+	  SPH_C32(0xde780000), SPH_C32(0x24670e80), SPH_C32(0x8a490000),
+	  SPH_C32(0x6c2479cb), SPH_C32(0x8d9a1215), SPH_C32(0xfd30e42b),
+	  SPH_C32(0xc569af40) },
+	{ SPH_C32(0xd6c40000), SPH_C32(0xbe720000), SPH_C32(0x56dd1b00),
+	  SPH_C32(0xc57e0000), SPH_C32(0x91365cc0), SPH_C32(0xe1131ff5),
+	  SPH_C32(0xa7a27306), SPH_C32(0x067d1926), SPH_C32(0x666d0000),
+	  SPH_C32(0xcc330000), SPH_C32(0xc4c20a00), SPH_C32(0xe7810000),
+	  SPH_C32(0x9d792fe7), SPH_C32(0x8a49e06a), SPH_C32(0x3d2fb870),
+	  SPH_C32(0xfbc5c2c5) },
+	{ SPH_C32(0x1ad00000), SPH_C32(0x1b110000), SPH_C32(0x0c641c80),
+	  SPH_C32(0xfe2e0000), SPH_C32(0xdae64f3f), SPH_C32(0x66882bed),
+	  SPH_C32(0xcee13bc7), SPH_C32(0xcc279ed8), SPH_C32(0xe7f30000),
+	  SPH_C32(0x20640000), SPH_C32(0xa2f00880), SPH_C32(0x72720000),
+	  SPH_C32(0xc0d007e5), SPH_C32(0xc2bddcd6), SPH_C32(0xdb751a5d),
+	  SPH_C32(0x75a2753f) },
+	{ SPH_C32(0x575a0000), SPH_C32(0x52250000), SPH_C32(0x30ef1980),
+	  SPH_C32(0x508d0000), SPH_C32(0xcc9f74c2), SPH_C32(0xa9e72349),
+	  SPH_C32(0x41f8d12b), SPH_C32(0x881aaedc), SPH_C32(0x2be70000),
+	  SPH_C32(0x85070000), SPH_C32(0xf8490f00), SPH_C32(0x49220000),
+	  SPH_C32(0x8b00141a), SPH_C32(0x4526e8ce), SPH_C32(0xb236529c),
+	  SPH_C32(0xbff8f2c1) },
+	{ SPH_C32(0x9b4e0000), SPH_C32(0xf7460000), SPH_C32(0x6a561e00),
+	  SPH_C32(0x6bdd0000), SPH_C32(0x874f673d), SPH_C32(0x2e7c1751),
+	  SPH_C32(0x28bb99ea), SPH_C32(0x42402922), SPH_C32(0xaa790000),
+	  SPH_C32(0x69500000), SPH_C32(0x9e7b0d80), SPH_C32(0xdcd10000),
+	  SPH_C32(0xd6a93c18), SPH_C32(0x0dd2d472), SPH_C32(0x546cf0b1),
+	  SPH_C32(0x319f453b) },
+	{ SPH_C32(0x1e4e0000), SPH_C32(0xdecf0000), SPH_C32(0x6df80180),
+	  SPH_C32(0x77240000), SPH_C32(0xec47079e), SPH_C32(0xf4a0694e),
+	  SPH_C32(0xcda31812), SPH_C32(0x98aa496e), SPH_C32(0xb2060000),
+	  SPH_C32(0xc5690000), SPH_C32(0x28031200), SPH_C32(0x74670000),
+	  SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8), SPH_C32(0x33d1dfec),
+	  SPH_C32(0x094e3198) },
+	{ SPH_C32(0xd25a0000), SPH_C32(0x7bac0000), SPH_C32(0x37410600),
+	  SPH_C32(0x4c740000), SPH_C32(0xa7971461), SPH_C32(0x733b5d56),
+	  SPH_C32(0xa4e050d3), SPH_C32(0x52f0ce90), SPH_C32(0x33980000),
+	  SPH_C32(0x293e0000), SPH_C32(0x4e311080), SPH_C32(0xe1940000),
+	  SPH_C32(0xeb6b1ef6), SPH_C32(0xa3e60544), SPH_C32(0xd58b7dc1),
+	  SPH_C32(0x87298662) },
+	{ SPH_C32(0x9fd00000), SPH_C32(0x32980000), SPH_C32(0x0bca0300),
+	  SPH_C32(0xe2d70000), SPH_C32(0xb1ee2f9c), SPH_C32(0xbc5455f2),
+	  SPH_C32(0x2bf9ba3f), SPH_C32(0x16cdfe94), SPH_C32(0xff8c0000),
+	  SPH_C32(0x8c5d0000), SPH_C32(0x14881700), SPH_C32(0xdac40000),
+	  SPH_C32(0xa0bb0d09), SPH_C32(0x247d315c), SPH_C32(0xbcc83500),
+	  SPH_C32(0x4d73019c) },
+	{ SPH_C32(0x53c40000), SPH_C32(0x97fb0000), SPH_C32(0x51730480),
+	  SPH_C32(0xd9870000), SPH_C32(0xfa3e3c63), SPH_C32(0x3bcf61ea),
+	  SPH_C32(0x42baf2fe), SPH_C32(0xdc97796a), SPH_C32(0x7e120000),
+	  SPH_C32(0x600a0000), SPH_C32(0x72ba1580), SPH_C32(0x4f370000),
+	  SPH_C32(0xfd12250b), SPH_C32(0x6c890de0), SPH_C32(0x5a92972d),
+	  SPH_C32(0xc314b666) },
+	{ SPH_C32(0x666d0000), SPH_C32(0xcc330000), SPH_C32(0xc4c20a00),
+	  SPH_C32(0xe7810000), SPH_C32(0x9d792fe7), SPH_C32(0x8a49e06a),
+	  SPH_C32(0x3d2fb870), SPH_C32(0xfbc5c2c5), SPH_C32(0xb0a90000),
+	  SPH_C32(0x72410000), SPH_C32(0x921f1100), SPH_C32(0x22ff0000),
+	  SPH_C32(0x0c4f7327), SPH_C32(0x6b5aff9f), SPH_C32(0x9a8dcb76),
+	  SPH_C32(0xfdb8dbe3) },
+	{ SPH_C32(0xaa790000), SPH_C32(0x69500000), SPH_C32(0x9e7b0d80),
+	  SPH_C32(0xdcd10000), SPH_C32(0xd6a93c18), SPH_C32(0x0dd2d472),
+	  SPH_C32(0x546cf0b1), SPH_C32(0x319f453b), SPH_C32(0x31370000),
+	  SPH_C32(0x9e160000), SPH_C32(0xf42d1380), SPH_C32(0xb70c0000),
+	  SPH_C32(0x51e65b25), SPH_C32(0x23aec323), SPH_C32(0x7cd7695b),
+	  SPH_C32(0x73df6c19) },
+	{ SPH_C32(0xe7f30000), SPH_C32(0x20640000), SPH_C32(0xa2f00880),
+	  SPH_C32(0x72720000), SPH_C32(0xc0d007e5), SPH_C32(0xc2bddcd6),
+	  SPH_C32(0xdb751a5d), SPH_C32(0x75a2753f), SPH_C32(0xfd230000),
+	  SPH_C32(0x3b750000), SPH_C32(0xae941400), SPH_C32(0x8c5c0000),
+	  SPH_C32(0x1a3648da), SPH_C32(0xa435f73b), SPH_C32(0x1594219a),
+	  SPH_C32(0xb985ebe7) },
+	{ SPH_C32(0x2be70000), SPH_C32(0x85070000), SPH_C32(0xf8490f00),
+	  SPH_C32(0x49220000), SPH_C32(0x8b00141a), SPH_C32(0x4526e8ce),
+	  SPH_C32(0xb236529c), SPH_C32(0xbff8f2c1), SPH_C32(0x7cbd0000),
+	  SPH_C32(0xd7220000), SPH_C32(0xc8a61680), SPH_C32(0x19af0000),
+	  SPH_C32(0x479f60d8), SPH_C32(0xecc1cb87), SPH_C32(0xf3ce83b7),
+	  SPH_C32(0x37e25c1d) },
+	{ SPH_C32(0x1ce10000), SPH_C32(0x69e70000), SPH_C32(0xd7e40280),
+	  SPH_C32(0x21bc0000), SPH_C32(0x56ca424d), SPH_C32(0x74e8af29),
+	  SPH_C32(0x64ff0c88), SPH_C32(0x6c5ca315), SPH_C32(0xc88a0000),
+	  SPH_C32(0x60bd0000), SPH_C32(0x3b251a80), SPH_C32(0xb25a0000),
+	  SPH_C32(0x7d715b5e), SPH_C32(0x15b376bb), SPH_C32(0x6a016b14),
+	  SPH_C32(0x9ed75048) },
+	{ SPH_C32(0xd0f50000), SPH_C32(0xcc840000), SPH_C32(0x8d5d0500),
+	  SPH_C32(0x1aec0000), SPH_C32(0x1d1a51b2), SPH_C32(0xf3739b31),
+	  SPH_C32(0x0dbc4449), SPH_C32(0xa60624eb), SPH_C32(0x49140000),
+	  SPH_C32(0x8cea0000), SPH_C32(0x5d171800), SPH_C32(0x27a90000),
+	  SPH_C32(0x20d8735c), SPH_C32(0x5d474a07), SPH_C32(0x8c5bc939),
+	  SPH_C32(0x10b0e7b2) },
+	{ SPH_C32(0x9d7f0000), SPH_C32(0x85b00000), SPH_C32(0xb1d60000),
+	  SPH_C32(0xb44f0000), SPH_C32(0x0b636a4f), SPH_C32(0x3c1c9395),
+	  SPH_C32(0x82a5aea5), SPH_C32(0xe23b14ef), SPH_C32(0x85000000),
+	  SPH_C32(0x29890000), SPH_C32(0x07ae1f80), SPH_C32(0x1cf90000),
+	  SPH_C32(0x6b0860a3), SPH_C32(0xdadc7e1f), SPH_C32(0xe51881f8),
+	  SPH_C32(0xdaea604c) },
+	{ SPH_C32(0x516b0000), SPH_C32(0x20d30000), SPH_C32(0xeb6f0780),
+	  SPH_C32(0x8f1f0000), SPH_C32(0x40b379b0), SPH_C32(0xbb87a78d),
+	  SPH_C32(0xebe6e664), SPH_C32(0x28619311), SPH_C32(0x049e0000),
+	  SPH_C32(0xc5de0000), SPH_C32(0x619c1d00), SPH_C32(0x890a0000),
+	  SPH_C32(0x36a148a1), SPH_C32(0x922842a3), SPH_C32(0x034223d5),
+	  SPH_C32(0x548dd7b6) },
+	{ SPH_C32(0x64c20000), SPH_C32(0x7b1b0000), SPH_C32(0x7ede0900),
+	  SPH_C32(0xb1190000), SPH_C32(0x27f46a34), SPH_C32(0x0a01260d),
+	  SPH_C32(0x9473acea), SPH_C32(0x0f3328be), SPH_C32(0xca250000),
+	  SPH_C32(0xd7950000), SPH_C32(0x81391980), SPH_C32(0xe4c20000),
+	  SPH_C32(0xc7fc1e8d), SPH_C32(0x95fbb0dc), SPH_C32(0xc35d7f8e),
+	  SPH_C32(0x6a21ba33) },
+	{ SPH_C32(0xa8d60000), SPH_C32(0xde780000), SPH_C32(0x24670e80),
+	  SPH_C32(0x8a490000), SPH_C32(0x6c2479cb), SPH_C32(0x8d9a1215),
+	  SPH_C32(0xfd30e42b), SPH_C32(0xc569af40), SPH_C32(0x4bbb0000),
+	  SPH_C32(0x3bc20000), SPH_C32(0xe70b1b00), SPH_C32(0x71310000),
+	  SPH_C32(0x9a55368f), SPH_C32(0xdd0f8c60), SPH_C32(0x2507dda3),
+	  SPH_C32(0xe4460dc9) },
+	{ SPH_C32(0xe55c0000), SPH_C32(0x974c0000), SPH_C32(0x18ec0b80),
+	  SPH_C32(0x24ea0000), SPH_C32(0x7a5d4236), SPH_C32(0x42f51ab1),
+	  SPH_C32(0x72290ec7), SPH_C32(0x81549f44), SPH_C32(0x87af0000),
+	  SPH_C32(0x9ea10000), SPH_C32(0xbdb21c80), SPH_C32(0x4a610000),
+	  SPH_C32(0xd1852570), SPH_C32(0x5a94b878), SPH_C32(0x4c449562),
+	  SPH_C32(0x2e1c8a37) },
+	{ SPH_C32(0x29480000), SPH_C32(0x322f0000), SPH_C32(0x42550c00),
+	  SPH_C32(0x1fba0000), SPH_C32(0x318d51c9), SPH_C32(0xc56e2ea9),
+	  SPH_C32(0x1b6a4606), SPH_C32(0x4b0e18ba), SPH_C32(0x06310000),
+	  SPH_C32(0x72f60000), SPH_C32(0xdb801e00), SPH_C32(0xdf920000),
+	  SPH_C32(0x8c2c0d72), SPH_C32(0x126084c4), SPH_C32(0xaa1e374f),
+	  SPH_C32(0xa07b3dcd) },
+	{ SPH_C32(0xb2060000), SPH_C32(0xc5690000), SPH_C32(0x28031200),
+	  SPH_C32(0x74670000), SPH_C32(0xb6c236f4), SPH_C32(0xeb1239f8),
+	  SPH_C32(0x33d1dfec), SPH_C32(0x094e3198), SPH_C32(0xac480000),
+	  SPH_C32(0x1ba60000), SPH_C32(0x45fb1380), SPH_C32(0x03430000),
+	  SPH_C32(0x5a85316a), SPH_C32(0x1fb250b6), SPH_C32(0xfe72c7fe),
+	  SPH_C32(0x91e478f6) },
+	{ SPH_C32(0x7e120000), SPH_C32(0x600a0000), SPH_C32(0x72ba1580),
+	  SPH_C32(0x4f370000), SPH_C32(0xfd12250b), SPH_C32(0x6c890de0),
+	  SPH_C32(0x5a92972d), SPH_C32(0xc314b666), SPH_C32(0x2dd60000),
+	  SPH_C32(0xf7f10000), SPH_C32(0x23c91100), SPH_C32(0x96b00000),
+	  SPH_C32(0x072c1968), SPH_C32(0x57466c0a), SPH_C32(0x182865d3),
+	  SPH_C32(0x1f83cf0c) },
+	{ SPH_C32(0x33980000), SPH_C32(0x293e0000), SPH_C32(0x4e311080),
+	  SPH_C32(0xe1940000), SPH_C32(0xeb6b1ef6), SPH_C32(0xa3e60544),
+	  SPH_C32(0xd58b7dc1), SPH_C32(0x87298662), SPH_C32(0xe1c20000),
+	  SPH_C32(0x52920000), SPH_C32(0x79701680), SPH_C32(0xade00000),
+	  SPH_C32(0x4cfc0a97), SPH_C32(0xd0dd5812), SPH_C32(0x716b2d12),
+	  SPH_C32(0xd5d948f2) },
+	{ SPH_C32(0xff8c0000), SPH_C32(0x8c5d0000), SPH_C32(0x14881700),
+	  SPH_C32(0xdac40000), SPH_C32(0xa0bb0d09), SPH_C32(0x247d315c),
+	  SPH_C32(0xbcc83500), SPH_C32(0x4d73019c), SPH_C32(0x605c0000),
+	  SPH_C32(0xbec50000), SPH_C32(0x1f421400), SPH_C32(0x38130000),
+	  SPH_C32(0x11552295), SPH_C32(0x982964ae), SPH_C32(0x97318f3f),
+	  SPH_C32(0x5bbeff08) },
+	{ SPH_C32(0xca250000), SPH_C32(0xd7950000), SPH_C32(0x81391980),
+	  SPH_C32(0xe4c20000), SPH_C32(0xc7fc1e8d), SPH_C32(0x95fbb0dc),
+	  SPH_C32(0xc35d7f8e), SPH_C32(0x6a21ba33), SPH_C32(0xaee70000),
+	  SPH_C32(0xac8e0000), SPH_C32(0xffe71080), SPH_C32(0x55db0000),
+	  SPH_C32(0xe00874b9), SPH_C32(0x9ffa96d1), SPH_C32(0x572ed364),
+	  SPH_C32(0x6512928d) },
+	{ SPH_C32(0x06310000), SPH_C32(0x72f60000), SPH_C32(0xdb801e00),
+	  SPH_C32(0xdf920000), SPH_C32(0x8c2c0d72), SPH_C32(0x126084c4),
+	  SPH_C32(0xaa1e374f), SPH_C32(0xa07b3dcd), SPH_C32(0x2f790000),
+	  SPH_C32(0x40d90000), SPH_C32(0x99d51200), SPH_C32(0xc0280000),
+	  SPH_C32(0xbda15cbb), SPH_C32(0xd70eaa6d), SPH_C32(0xb1747149),
+	  SPH_C32(0xeb752577) },
+	{ SPH_C32(0x4bbb0000), SPH_C32(0x3bc20000), SPH_C32(0xe70b1b00),
+	  SPH_C32(0x71310000), SPH_C32(0x9a55368f), SPH_C32(0xdd0f8c60),
+	  SPH_C32(0x2507dda3), SPH_C32(0xe4460dc9), SPH_C32(0xe36d0000),
+	  SPH_C32(0xe5ba0000), SPH_C32(0xc36c1580), SPH_C32(0xfb780000),
+	  SPH_C32(0xf6714f44), SPH_C32(0x50959e75), SPH_C32(0xd8373988),
+	  SPH_C32(0x212fa289) },
+	{ SPH_C32(0x87af0000), SPH_C32(0x9ea10000), SPH_C32(0xbdb21c80),
+	  SPH_C32(0x4a610000), SPH_C32(0xd1852570), SPH_C32(0x5a94b878),
+	  SPH_C32(0x4c449562), SPH_C32(0x2e1c8a37), SPH_C32(0x62f30000),
+	  SPH_C32(0x09ed0000), SPH_C32(0xa55e1700), SPH_C32(0x6e8b0000),
+	  SPH_C32(0xabd86746), SPH_C32(0x1861a2c9), SPH_C32(0x3e6d9ba5),
+	  SPH_C32(0xaf481573) },
+	{ SPH_C32(0xb0a90000), SPH_C32(0x72410000), SPH_C32(0x921f1100),
+	  SPH_C32(0x22ff0000), SPH_C32(0x0c4f7327), SPH_C32(0x6b5aff9f),
+	  SPH_C32(0x9a8dcb76), SPH_C32(0xfdb8dbe3), SPH_C32(0xd6c40000),
+	  SPH_C32(0xbe720000), SPH_C32(0x56dd1b00), SPH_C32(0xc57e0000),
+	  SPH_C32(0x91365cc0), SPH_C32(0xe1131ff5), SPH_C32(0xa7a27306),
+	  SPH_C32(0x067d1926) },
+	{ SPH_C32(0x7cbd0000), SPH_C32(0xd7220000), SPH_C32(0xc8a61680),
+	  SPH_C32(0x19af0000), SPH_C32(0x479f60d8), SPH_C32(0xecc1cb87),
+	  SPH_C32(0xf3ce83b7), SPH_C32(0x37e25c1d), SPH_C32(0x575a0000),
+	  SPH_C32(0x52250000), SPH_C32(0x30ef1980), SPH_C32(0x508d0000),
+	  SPH_C32(0xcc9f74c2), SPH_C32(0xa9e72349), SPH_C32(0x41f8d12b),
+	  SPH_C32(0x881aaedc) },
+	{ SPH_C32(0x31370000), SPH_C32(0x9e160000), SPH_C32(0xf42d1380),
+	  SPH_C32(0xb70c0000), SPH_C32(0x51e65b25), SPH_C32(0x23aec323),
+	  SPH_C32(0x7cd7695b), SPH_C32(0x73df6c19), SPH_C32(0x9b4e0000),
+	  SPH_C32(0xf7460000), SPH_C32(0x6a561e00), SPH_C32(0x6bdd0000),
+	  SPH_C32(0x874f673d), SPH_C32(0x2e7c1751), SPH_C32(0x28bb99ea),
+	  SPH_C32(0x42402922) },
+	{ SPH_C32(0xfd230000), SPH_C32(0x3b750000), SPH_C32(0xae941400),
+	  SPH_C32(0x8c5c0000), SPH_C32(0x1a3648da), SPH_C32(0xa435f73b),
+	  SPH_C32(0x1594219a), SPH_C32(0xb985ebe7), SPH_C32(0x1ad00000),
+	  SPH_C32(0x1b110000), SPH_C32(0x0c641c80), SPH_C32(0xfe2e0000),
+	  SPH_C32(0xdae64f3f), SPH_C32(0x66882bed), SPH_C32(0xcee13bc7),
+	  SPH_C32(0xcc279ed8) },
+	{ SPH_C32(0xc88a0000), SPH_C32(0x60bd0000), SPH_C32(0x3b251a80),
+	  SPH_C32(0xb25a0000), SPH_C32(0x7d715b5e), SPH_C32(0x15b376bb),
+	  SPH_C32(0x6a016b14), SPH_C32(0x9ed75048), SPH_C32(0xd46b0000),
+	  SPH_C32(0x095a0000), SPH_C32(0xecc11800), SPH_C32(0x93e60000),
+	  SPH_C32(0x2bbb1913), SPH_C32(0x615bd992), SPH_C32(0x0efe679c),
+	  SPH_C32(0xf28bf35d) },
+	{ SPH_C32(0x049e0000), SPH_C32(0xc5de0000), SPH_C32(0x619c1d00),
+	  SPH_C32(0x890a0000), SPH_C32(0x36a148a1), SPH_C32(0x922842a3),
+	  SPH_C32(0x034223d5), SPH_C32(0x548dd7b6), SPH_C32(0x55f50000),
+	  SPH_C32(0xe50d0000), SPH_C32(0x8af31a80), SPH_C32(0x06150000),
+	  SPH_C32(0x76123111), SPH_C32(0x29afe52e), SPH_C32(0xe8a4c5b1),
+	  SPH_C32(0x7cec44a7) },
+	{ SPH_C32(0x49140000), SPH_C32(0x8cea0000), SPH_C32(0x5d171800),
+	  SPH_C32(0x27a90000), SPH_C32(0x20d8735c), SPH_C32(0x5d474a07),
+	  SPH_C32(0x8c5bc939), SPH_C32(0x10b0e7b2), SPH_C32(0x99e10000),
+	  SPH_C32(0x406e0000), SPH_C32(0xd04a1d00), SPH_C32(0x3d450000),
+	  SPH_C32(0x3dc222ee), SPH_C32(0xae34d136), SPH_C32(0x81e78d70),
+	  SPH_C32(0xb6b6c359) },
+	{ SPH_C32(0x85000000), SPH_C32(0x29890000), SPH_C32(0x07ae1f80),
+	  SPH_C32(0x1cf90000), SPH_C32(0x6b0860a3), SPH_C32(0xdadc7e1f),
+	  SPH_C32(0xe51881f8), SPH_C32(0xdaea604c), SPH_C32(0x187f0000),
+	  SPH_C32(0xac390000), SPH_C32(0xb6781f80), SPH_C32(0xa8b60000),
+	  SPH_C32(0x606b0aec), SPH_C32(0xe6c0ed8a), SPH_C32(0x67bd2f5d),
+	  SPH_C32(0x38d174a3) },
+	{ SPH_C32(0xaec30000), SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000),
+	  SPH_C32(0x2c150000), SPH_C32(0x45cc75b3), SPH_C32(0x6650b736),
+	  SPH_C32(0xab92f78f), SPH_C32(0xa312567b), SPH_C32(0xdb250000),
+	  SPH_C32(0x09290000), SPH_C32(0x49aac000), SPH_C32(0x81e10000),
+	  SPH_C32(0xcafe6b59), SPH_C32(0x42793431), SPH_C32(0x43566b76),
+	  SPH_C32(0xe86cba2e) },
+	{ SPH_C32(0x62d70000), SPH_C32(0x392c0001), SPH_C32(0x2368e780),
+	  SPH_C32(0x17450000), SPH_C32(0x0e1c664c), SPH_C32(0xe1cb832e),
+	  SPH_C32(0xc2d1bf4e), SPH_C32(0x6948d185), SPH_C32(0x5abb0000),
+	  SPH_C32(0xe57e0000), SPH_C32(0x2f98c280), SPH_C32(0x14120000),
+	  SPH_C32(0x9757435b), SPH_C32(0x0a8d088d), SPH_C32(0xa50cc95b),
+	  SPH_C32(0x660b0dd4) },
+	{ SPH_C32(0x2f5d0000), SPH_C32(0x70180001), SPH_C32(0x1fe3e280),
+	  SPH_C32(0xb9e60000), SPH_C32(0x18655db1), SPH_C32(0x2ea48b8a),
+	  SPH_C32(0x4dc855a2), SPH_C32(0x2d75e181), SPH_C32(0x96af0000),
+	  SPH_C32(0x401d0000), SPH_C32(0x7521c500), SPH_C32(0x2f420000),
+	  SPH_C32(0xdc8750a4), SPH_C32(0x8d163c95), SPH_C32(0xcc4f819a),
+	  SPH_C32(0xac518a2a) },
+	{ SPH_C32(0xe3490000), SPH_C32(0xd57b0001), SPH_C32(0x455ae500),
+	  SPH_C32(0x82b60000), SPH_C32(0x53b54e4e), SPH_C32(0xa93fbf92),
+	  SPH_C32(0x248b1d63), SPH_C32(0xe72f667f), SPH_C32(0x17310000),
+	  SPH_C32(0xac4a0000), SPH_C32(0x1313c780), SPH_C32(0xbab10000),
+	  SPH_C32(0x812e78a6), SPH_C32(0xc5e20029), SPH_C32(0x2a1523b7),
+	  SPH_C32(0x22363dd0) },
+	{ SPH_C32(0xd6e00000), SPH_C32(0x8eb30001), SPH_C32(0xd0ebeb80),
+	  SPH_C32(0xbcb00000), SPH_C32(0x34f25dca), SPH_C32(0x18b93e12),
+	  SPH_C32(0x5b1e57ed), SPH_C32(0xc07dddd0), SPH_C32(0xd98a0000),
+	  SPH_C32(0xbe010000), SPH_C32(0xf3b6c300), SPH_C32(0xd7790000),
+	  SPH_C32(0x70732e8a), SPH_C32(0xc231f256), SPH_C32(0xea0a7fec),
+	  SPH_C32(0x1c9a5055) },
+	{ SPH_C32(0x1af40000), SPH_C32(0x2bd00001), SPH_C32(0x8a52ec00),
+	  SPH_C32(0x87e00000), SPH_C32(0x7f224e35), SPH_C32(0x9f220a0a),
+	  SPH_C32(0x325d1f2c), SPH_C32(0x0a275a2e), SPH_C32(0x58140000),
+	  SPH_C32(0x52560000), SPH_C32(0x9584c180), SPH_C32(0x428a0000),
+	  SPH_C32(0x2dda0688), SPH_C32(0x8ac5ceea), SPH_C32(0x0c50ddc1),
+	  SPH_C32(0x92fde7af) },
+	{ SPH_C32(0x577e0000), SPH_C32(0x62e40001), SPH_C32(0xb6d9e900),
+	  SPH_C32(0x29430000), SPH_C32(0x695b75c8), SPH_C32(0x504d02ae),
+	  SPH_C32(0xbd44f5c0), SPH_C32(0x4e1a6a2a), SPH_C32(0x94000000),
+	  SPH_C32(0xf7350000), SPH_C32(0xcf3dc600), SPH_C32(0x79da0000),
+	  SPH_C32(0x660a1577), SPH_C32(0x0d5efaf2), SPH_C32(0x65139500),
+	  SPH_C32(0x58a76051) },
+	{ SPH_C32(0x9b6a0000), SPH_C32(0xc7870001), SPH_C32(0xec60ee80),
+	  SPH_C32(0x12130000), SPH_C32(0x228b6637), SPH_C32(0xd7d636b6),
+	  SPH_C32(0xd407bd01), SPH_C32(0x8440edd4), SPH_C32(0x159e0000),
+	  SPH_C32(0x1b620000), SPH_C32(0xa90fc480), SPH_C32(0xec290000),
+	  SPH_C32(0x3ba33d75), SPH_C32(0x45aac64e), SPH_C32(0x8349372d),
+	  SPH_C32(0xd6c0d7ab) },
+	{ SPH_C32(0xac6c0000), SPH_C32(0x2b670001), SPH_C32(0xc3cde300),
+	  SPH_C32(0x7a8d0000), SPH_C32(0xff413060), SPH_C32(0xe6187151),
+	  SPH_C32(0x02cee315), SPH_C32(0x57e4bc00), SPH_C32(0xa1a90000),
+	  SPH_C32(0xacfd0000), SPH_C32(0x5a8cc880), SPH_C32(0x47dc0000),
+	  SPH_C32(0x014d06f3), SPH_C32(0xbcd87b72), SPH_C32(0x1a86df8e),
+	  SPH_C32(0x7ff5dbfe) },
+	{ SPH_C32(0x60780000), SPH_C32(0x8e040001), SPH_C32(0x9974e480),
+	  SPH_C32(0x41dd0000), SPH_C32(0xb491239f), SPH_C32(0x61834549),
+	  SPH_C32(0x6b8dabd4), SPH_C32(0x9dbe3bfe), SPH_C32(0x20370000),
+	  SPH_C32(0x40aa0000), SPH_C32(0x3cbeca00), SPH_C32(0xd22f0000),
+	  SPH_C32(0x5ce42ef1), SPH_C32(0xf42c47ce), SPH_C32(0xfcdc7da3),
+	  SPH_C32(0xf1926c04) },
+	{ SPH_C32(0x2df20000), SPH_C32(0xc7300001), SPH_C32(0xa5ffe180),
+	  SPH_C32(0xef7e0000), SPH_C32(0xa2e81862), SPH_C32(0xaeec4ded),
+	  SPH_C32(0xe4944138), SPH_C32(0xd9830bfa), SPH_C32(0xec230000),
+	  SPH_C32(0xe5c90000), SPH_C32(0x6607cd80), SPH_C32(0xe97f0000),
+	  SPH_C32(0x17343d0e), SPH_C32(0x73b773d6), SPH_C32(0x959f3562),
+	  SPH_C32(0x3bc8ebfa) },
+	{ SPH_C32(0xe1e60000), SPH_C32(0x62530001), SPH_C32(0xff46e600),
+	  SPH_C32(0xd42e0000), SPH_C32(0xe9380b9d), SPH_C32(0x297779f5),
+	  SPH_C32(0x8dd709f9), SPH_C32(0x13d98c04), SPH_C32(0x6dbd0000),
+	  SPH_C32(0x099e0000), SPH_C32(0x0035cf00), SPH_C32(0x7c8c0000),
+	  SPH_C32(0x4a9d150c), SPH_C32(0x3b434f6a), SPH_C32(0x73c5974f),
+	  SPH_C32(0xb5af5c00) },
+	{ SPH_C32(0xd44f0000), SPH_C32(0x399b0001), SPH_C32(0x6af7e880),
+	  SPH_C32(0xea280000), SPH_C32(0x8e7f1819), SPH_C32(0x98f1f875),
+	  SPH_C32(0xf2424377), SPH_C32(0x348b37ab), SPH_C32(0xa3060000),
+	  SPH_C32(0x1bd50000), SPH_C32(0xe090cb80), SPH_C32(0x11440000),
+	  SPH_C32(0xbbc04320), SPH_C32(0x3c90bd15), SPH_C32(0xb3dacb14),
+	  SPH_C32(0x8b033185) },
+	{ SPH_C32(0x185b0000), SPH_C32(0x9cf80001), SPH_C32(0x304eef00),
+	  SPH_C32(0xd1780000), SPH_C32(0xc5af0be6), SPH_C32(0x1f6acc6d),
+	  SPH_C32(0x9b010bb6), SPH_C32(0xfed1b055), SPH_C32(0x22980000),
+	  SPH_C32(0xf7820000), SPH_C32(0x86a2c900), SPH_C32(0x84b70000),
+	  SPH_C32(0xe6696b22), SPH_C32(0x746481a9), SPH_C32(0x55806939),
+	  SPH_C32(0x0564867f) },
+	{ SPH_C32(0x55d10000), SPH_C32(0xd5cc0001), SPH_C32(0x0cc5ea00),
+	  SPH_C32(0x7fdb0000), SPH_C32(0xd3d6301b), SPH_C32(0xd005c4c9),
+	  SPH_C32(0x1418e15a), SPH_C32(0xbaec8051), SPH_C32(0xee8c0000),
+	  SPH_C32(0x52e10000), SPH_C32(0xdc1bce80), SPH_C32(0xbfe70000),
+	  SPH_C32(0xadb978dd), SPH_C32(0xf3ffb5b1), SPH_C32(0x3cc321f8),
+	  SPH_C32(0xcf3e0181) },
+	{ SPH_C32(0x99c50000), SPH_C32(0x70af0001), SPH_C32(0x567ced80),
+	  SPH_C32(0x448b0000), SPH_C32(0x980623e4), SPH_C32(0x579ef0d1),
+	  SPH_C32(0x7d5ba99b), SPH_C32(0x70b607af), SPH_C32(0x6f120000),
+	  SPH_C32(0xbeb60000), SPH_C32(0xba29cc00), SPH_C32(0x2a140000),
+	  SPH_C32(0xf01050df), SPH_C32(0xbb0b890d), SPH_C32(0xda9983d5),
+	  SPH_C32(0x4159b67b) },
+	{ SPH_C32(0x028b0000), SPH_C32(0x87e90001), SPH_C32(0x3c2af380),
+	  SPH_C32(0x2f560000), SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780),
+	  SPH_C32(0x55e03071), SPH_C32(0x32f62e8d), SPH_C32(0xc56b0000),
+	  SPH_C32(0xd7e60000), SPH_C32(0x2452c180), SPH_C32(0xf6c50000),
+	  SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f), SPH_C32(0x8ef57364),
+	  SPH_C32(0x70c6f340) },
+	{ SPH_C32(0xce9f0000), SPH_C32(0x228a0001), SPH_C32(0x6693f400),
+	  SPH_C32(0x14060000), SPH_C32(0x54995726), SPH_C32(0xfe79d398),
+	  SPH_C32(0x3ca378b0), SPH_C32(0xf8aca973), SPH_C32(0x44f50000),
+	  SPH_C32(0x3bb10000), SPH_C32(0x4260c300), SPH_C32(0x63360000),
+	  SPH_C32(0x7b1044c5), SPH_C32(0xfe2d61c3), SPH_C32(0x68afd149),
+	  SPH_C32(0xfea144ba) },
+	{ SPH_C32(0x83150000), SPH_C32(0x6bbe0001), SPH_C32(0x5a18f100),
+	  SPH_C32(0xbaa50000), SPH_C32(0x42e06cdb), SPH_C32(0x3116db3c),
+	  SPH_C32(0xb3ba925c), SPH_C32(0xbc919977), SPH_C32(0x88e10000),
+	  SPH_C32(0x9ed20000), SPH_C32(0x18d9c480), SPH_C32(0x58660000),
+	  SPH_C32(0x30c0573a), SPH_C32(0x79b655db), SPH_C32(0x01ec9988),
+	  SPH_C32(0x34fbc344) },
+	{ SPH_C32(0x4f010000), SPH_C32(0xcedd0001), SPH_C32(0x00a1f680),
+	  SPH_C32(0x81f50000), SPH_C32(0x09307f24), SPH_C32(0xb68def24),
+	  SPH_C32(0xdaf9da9d), SPH_C32(0x76cb1e89), SPH_C32(0x097f0000),
+	  SPH_C32(0x72850000), SPH_C32(0x7eebc600), SPH_C32(0xcd950000),
+	  SPH_C32(0x6d697f38), SPH_C32(0x31426967), SPH_C32(0xe7b63ba5),
+	  SPH_C32(0xba9c74be) },
+	{ SPH_C32(0x7aa80000), SPH_C32(0x95150001), SPH_C32(0x9510f800),
+	  SPH_C32(0xbff30000), SPH_C32(0x6e776ca0), SPH_C32(0x070b6ea4),
+	  SPH_C32(0xa56c9013), SPH_C32(0x5199a526), SPH_C32(0xc7c40000),
+	  SPH_C32(0x60ce0000), SPH_C32(0x9e4ec280), SPH_C32(0xa05d0000),
+	  SPH_C32(0x9c342914), SPH_C32(0x36919b18), SPH_C32(0x27a967fe),
+	  SPH_C32(0x8430193b) },
+	{ SPH_C32(0xb6bc0000), SPH_C32(0x30760001), SPH_C32(0xcfa9ff80),
+	  SPH_C32(0x84a30000), SPH_C32(0x25a77f5f), SPH_C32(0x80905abc),
+	  SPH_C32(0xcc2fd8d2), SPH_C32(0x9bc322d8), SPH_C32(0x465a0000),
+	  SPH_C32(0x8c990000), SPH_C32(0xf87cc000), SPH_C32(0x35ae0000),
+	  SPH_C32(0xc19d0116), SPH_C32(0x7e65a7a4), SPH_C32(0xc1f3c5d3),
+	  SPH_C32(0x0a57aec1) },
+	{ SPH_C32(0xfb360000), SPH_C32(0x79420001), SPH_C32(0xf322fa80),
+	  SPH_C32(0x2a000000), SPH_C32(0x33de44a2), SPH_C32(0x4fff5218),
+	  SPH_C32(0x4336323e), SPH_C32(0xdffe12dc), SPH_C32(0x8a4e0000),
+	  SPH_C32(0x29fa0000), SPH_C32(0xa2c5c780), SPH_C32(0x0efe0000),
+	  SPH_C32(0x8a4d12e9), SPH_C32(0xf9fe93bc), SPH_C32(0xa8b08d12),
+	  SPH_C32(0xc00d293f) },
+	{ SPH_C32(0x37220000), SPH_C32(0xdc210001), SPH_C32(0xa99bfd00),
+	  SPH_C32(0x11500000), SPH_C32(0x780e575d), SPH_C32(0xc8646600),
+	  SPH_C32(0x2a757aff), SPH_C32(0x15a49522), SPH_C32(0x0bd00000),
+	  SPH_C32(0xc5ad0000), SPH_C32(0xc4f7c500), SPH_C32(0x9b0d0000),
+	  SPH_C32(0xd7e43aeb), SPH_C32(0xb10aaf00), SPH_C32(0x4eea2f3f),
+	  SPH_C32(0x4e6a9ec5) },
+	{ SPH_C32(0x00240000), SPH_C32(0x30c10001), SPH_C32(0x8636f080),
+	  SPH_C32(0x79ce0000), SPH_C32(0xa5c4010a), SPH_C32(0xf9aa21e7),
+	  SPH_C32(0xfcbc24eb), SPH_C32(0xc600c4f6), SPH_C32(0xbfe70000),
+	  SPH_C32(0x72320000), SPH_C32(0x3774c900), SPH_C32(0x30f80000),
+	  SPH_C32(0xed0a016d), SPH_C32(0x4878123c), SPH_C32(0xd725c79c),
+	  SPH_C32(0xe75f9290) },
+	{ SPH_C32(0xcc300000), SPH_C32(0x95a20001), SPH_C32(0xdc8ff700),
+	  SPH_C32(0x429e0000), SPH_C32(0xee1412f5), SPH_C32(0x7e3115ff),
+	  SPH_C32(0x95ff6c2a), SPH_C32(0x0c5a4308), SPH_C32(0x3e790000),
+	  SPH_C32(0x9e650000), SPH_C32(0x5146cb80), SPH_C32(0xa50b0000),
+	  SPH_C32(0xb0a3296f), SPH_C32(0x008c2e80), SPH_C32(0x317f65b1),
+	  SPH_C32(0x6938256a) },
+	{ SPH_C32(0x81ba0000), SPH_C32(0xdc960001), SPH_C32(0xe004f200),
+	  SPH_C32(0xec3d0000), SPH_C32(0xf86d2908), SPH_C32(0xb15e1d5b),
+	  SPH_C32(0x1ae686c6), SPH_C32(0x4867730c), SPH_C32(0xf26d0000),
+	  SPH_C32(0x3b060000), SPH_C32(0x0bffcc00), SPH_C32(0x9e5b0000),
+	  SPH_C32(0xfb733a90), SPH_C32(0x87171a98), SPH_C32(0x583c2d70),
+	  SPH_C32(0xa362a294) },
+	{ SPH_C32(0x4dae0000), SPH_C32(0x79f50001), SPH_C32(0xbabdf580),
+	  SPH_C32(0xd76d0000), SPH_C32(0xb3bd3af7), SPH_C32(0x36c52943),
+	  SPH_C32(0x73a5ce07), SPH_C32(0x823df4f2), SPH_C32(0x73f30000),
+	  SPH_C32(0xd7510000), SPH_C32(0x6dcdce80), SPH_C32(0x0ba80000),
+	  SPH_C32(0xa6da1292), SPH_C32(0xcfe32624), SPH_C32(0xbe668f5d),
+	  SPH_C32(0x2d05156e) },
+	{ SPH_C32(0x78070000), SPH_C32(0x223d0001), SPH_C32(0x2f0cfb00),
+	  SPH_C32(0xe96b0000), SPH_C32(0xd4fa2973), SPH_C32(0x8743a8c3),
+	  SPH_C32(0x0c308489), SPH_C32(0xa56f4f5d), SPH_C32(0xbd480000),
+	  SPH_C32(0xc51a0000), SPH_C32(0x8d68ca00), SPH_C32(0x66600000),
+	  SPH_C32(0x578744be), SPH_C32(0xc830d45b), SPH_C32(0x7e79d306),
+	  SPH_C32(0x13a978eb) },
+	{ SPH_C32(0xb4130000), SPH_C32(0x875e0001), SPH_C32(0x75b5fc80),
+	  SPH_C32(0xd23b0000), SPH_C32(0x9f2a3a8c), SPH_C32(0x00d89cdb),
+	  SPH_C32(0x6573cc48), SPH_C32(0x6f35c8a3), SPH_C32(0x3cd60000),
+	  SPH_C32(0x294d0000), SPH_C32(0xeb5ac880), SPH_C32(0xf3930000),
+	  SPH_C32(0x0a2e6cbc), SPH_C32(0x80c4e8e7), SPH_C32(0x9823712b),
+	  SPH_C32(0x9dcecf11) },
+	{ SPH_C32(0xf9990000), SPH_C32(0xce6a0001), SPH_C32(0x493ef980),
+	  SPH_C32(0x7c980000), SPH_C32(0x89530171), SPH_C32(0xcfb7947f),
+	  SPH_C32(0xea6a26a4), SPH_C32(0x2b08f8a7), SPH_C32(0xf0c20000),
+	  SPH_C32(0x8c2e0000), SPH_C32(0xb1e3cf00), SPH_C32(0xc8c30000),
+	  SPH_C32(0x41fe7f43), SPH_C32(0x075fdcff), SPH_C32(0xf16039ea),
+	  SPH_C32(0x579448ef) },
+	{ SPH_C32(0x358d0000), SPH_C32(0x6b090001), SPH_C32(0x1387fe00),
+	  SPH_C32(0x47c80000), SPH_C32(0xc283128e), SPH_C32(0x482ca067),
+	  SPH_C32(0x83296e65), SPH_C32(0xe1527f59), SPH_C32(0x715c0000),
+	  SPH_C32(0x60790000), SPH_C32(0xd7d1cd80), SPH_C32(0x5d300000),
+	  SPH_C32(0x1c575741), SPH_C32(0x4fabe043), SPH_C32(0x173a9bc7),
+	  SPH_C32(0xd9f3ff15) },
+	{ SPH_C32(0xb08d0000), SPH_C32(0x42800001), SPH_C32(0x1429e180),
+	  SPH_C32(0x5b310000), SPH_C32(0xa98b722d), SPH_C32(0x92f0de78),
+	  SPH_C32(0x6631ef9d), SPH_C32(0x3bb81f15), SPH_C32(0x69230000),
+	  SPH_C32(0xcc400000), SPH_C32(0x61a9d200), SPH_C32(0xf5860000),
+	  SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9), SPH_C32(0x7087b49a),
+	  SPH_C32(0xe1228bb6) },
+	{ SPH_C32(0x7c990000), SPH_C32(0xe7e30001), SPH_C32(0x4e90e600),
+	  SPH_C32(0x60610000), SPH_C32(0xe25b61d2), SPH_C32(0x156bea60),
+	  SPH_C32(0x0f72a75c), SPH_C32(0xf1e298eb), SPH_C32(0xe8bd0000),
+	  SPH_C32(0x20170000), SPH_C32(0x079bd080), SPH_C32(0x60750000),
+	  SPH_C32(0x219575af), SPH_C32(0xe19f3175), SPH_C32(0x96dd16b7),
+	  SPH_C32(0x6f453c4c) },
+	{ SPH_C32(0x31130000), SPH_C32(0xaed70001), SPH_C32(0x721be300),
+	  SPH_C32(0xcec20000), SPH_C32(0xf4225a2f), SPH_C32(0xda04e2c4),
+	  SPH_C32(0x806b4db0), SPH_C32(0xb5dfa8ef), SPH_C32(0x24a90000),
+	  SPH_C32(0x85740000), SPH_C32(0x5d22d700), SPH_C32(0x5b250000),
+	  SPH_C32(0x6a456650), SPH_C32(0x6604056d), SPH_C32(0xff9e5e76),
+	  SPH_C32(0xa51fbbb2) },
+	{ SPH_C32(0xfd070000), SPH_C32(0x0bb40001), SPH_C32(0x28a2e480),
+	  SPH_C32(0xf5920000), SPH_C32(0xbff249d0), SPH_C32(0x5d9fd6dc),
+	  SPH_C32(0xe9280571), SPH_C32(0x7f852f11), SPH_C32(0xa5370000),
+	  SPH_C32(0x69230000), SPH_C32(0x3b10d580), SPH_C32(0xced60000),
+	  SPH_C32(0x37ec4e52), SPH_C32(0x2ef039d1), SPH_C32(0x19c4fc5b),
+	  SPH_C32(0x2b780c48) },
+	{ SPH_C32(0xc8ae0000), SPH_C32(0x507c0001), SPH_C32(0xbd13ea00),
+	  SPH_C32(0xcb940000), SPH_C32(0xd8b55a54), SPH_C32(0xec19575c),
+	  SPH_C32(0x96bd4fff), SPH_C32(0x58d794be), SPH_C32(0x6b8c0000),
+	  SPH_C32(0x7b680000), SPH_C32(0xdbb5d100), SPH_C32(0xa31e0000),
+	  SPH_C32(0xc6b1187e), SPH_C32(0x2923cbae), SPH_C32(0xd9dba000),
+	  SPH_C32(0x15d461cd) },
+	{ SPH_C32(0x04ba0000), SPH_C32(0xf51f0001), SPH_C32(0xe7aaed80),
+	  SPH_C32(0xf0c40000), SPH_C32(0x936549ab), SPH_C32(0x6b826344),
+	  SPH_C32(0xfffe073e), SPH_C32(0x928d1340), SPH_C32(0xea120000),
+	  SPH_C32(0x973f0000), SPH_C32(0xbd87d380), SPH_C32(0x36ed0000),
+	  SPH_C32(0x9b18307c), SPH_C32(0x61d7f712), SPH_C32(0x3f81022d),
+	  SPH_C32(0x9bb3d637) },
+	{ SPH_C32(0x49300000), SPH_C32(0xbc2b0001), SPH_C32(0xdb21e880),
+	  SPH_C32(0x5e670000), SPH_C32(0x851c7256), SPH_C32(0xa4ed6be0),
+	  SPH_C32(0x70e7edd2), SPH_C32(0xd6b02344), SPH_C32(0x26060000),
+	  SPH_C32(0x325c0000), SPH_C32(0xe73ed400), SPH_C32(0x0dbd0000),
+	  SPH_C32(0xd0c82383), SPH_C32(0xe64cc30a), SPH_C32(0x56c24aec),
+	  SPH_C32(0x51e951c9) },
+	{ SPH_C32(0x85240000), SPH_C32(0x19480001), SPH_C32(0x8198ef00),
+	  SPH_C32(0x65370000), SPH_C32(0xcecc61a9), SPH_C32(0x23765ff8),
+	  SPH_C32(0x19a4a513), SPH_C32(0x1ceaa4ba), SPH_C32(0xa7980000),
+	  SPH_C32(0xde0b0000), SPH_C32(0x810cd680), SPH_C32(0x984e0000),
+	  SPH_C32(0x8d610b81), SPH_C32(0xaeb8ffb6), SPH_C32(0xb098e8c1),
+	  SPH_C32(0xdf8ee633) },
+	{ SPH_C32(0xb2220000), SPH_C32(0xf5a80001), SPH_C32(0xae35e280),
+	  SPH_C32(0x0da90000), SPH_C32(0x130637fe), SPH_C32(0x12b8181f),
+	  SPH_C32(0xcf6dfb07), SPH_C32(0xcf4ef56e), SPH_C32(0x13af0000),
+	  SPH_C32(0x69940000), SPH_C32(0x728fda80), SPH_C32(0x33bb0000),
+	  SPH_C32(0xb78f3007), SPH_C32(0x57ca428a), SPH_C32(0x29570062),
+	  SPH_C32(0x76bbea66) },
+	{ SPH_C32(0x7e360000), SPH_C32(0x50cb0001), SPH_C32(0xf48ce500),
+	  SPH_C32(0x36f90000), SPH_C32(0x58d62401), SPH_C32(0x95232c07),
+	  SPH_C32(0xa62eb3c6), SPH_C32(0x05147290), SPH_C32(0x92310000),
+	  SPH_C32(0x85c30000), SPH_C32(0x14bdd800), SPH_C32(0xa6480000),
+	  SPH_C32(0xea261805), SPH_C32(0x1f3e7e36), SPH_C32(0xcf0da24f),
+	  SPH_C32(0xf8dc5d9c) },
+	{ SPH_C32(0x33bc0000), SPH_C32(0x19ff0001), SPH_C32(0xc807e000),
+	  SPH_C32(0x985a0000), SPH_C32(0x4eaf1ffc), SPH_C32(0x5a4c24a3),
+	  SPH_C32(0x2937592a), SPH_C32(0x41294294), SPH_C32(0x5e250000),
+	  SPH_C32(0x20a00000), SPH_C32(0x4e04df80), SPH_C32(0x9d180000),
+	  SPH_C32(0xa1f60bfa), SPH_C32(0x98a54a2e), SPH_C32(0xa64eea8e),
+	  SPH_C32(0x3286da62) },
+	{ SPH_C32(0xffa80000), SPH_C32(0xbc9c0001), SPH_C32(0x92bee780),
+	  SPH_C32(0xa30a0000), SPH_C32(0x057f0c03), SPH_C32(0xddd710bb),
+	  SPH_C32(0x407411eb), SPH_C32(0x8b73c56a), SPH_C32(0xdfbb0000),
+	  SPH_C32(0xccf70000), SPH_C32(0x2836dd00), SPH_C32(0x08eb0000),
+	  SPH_C32(0xfc5f23f8), SPH_C32(0xd0517692), SPH_C32(0x401448a3),
+	  SPH_C32(0xbce16d98) },
+	{ SPH_C32(0xca010000), SPH_C32(0xe7540001), SPH_C32(0x070fe900),
+	  SPH_C32(0x9d0c0000), SPH_C32(0x62381f87), SPH_C32(0x6c51913b),
+	  SPH_C32(0x3fe15b65), SPH_C32(0xac217ec5), SPH_C32(0x11000000),
+	  SPH_C32(0xdebc0000), SPH_C32(0xc893d980), SPH_C32(0x65230000),
+	  SPH_C32(0x0d0275d4), SPH_C32(0xd78284ed), SPH_C32(0x800b14f8),
+	  SPH_C32(0x824d001d) },
+	{ SPH_C32(0x06150000), SPH_C32(0x42370001), SPH_C32(0x5db6ee80),
+	  SPH_C32(0xa65c0000), SPH_C32(0x29e80c78), SPH_C32(0xebcaa523),
+	  SPH_C32(0x56a213a4), SPH_C32(0x667bf93b), SPH_C32(0x909e0000),
+	  SPH_C32(0x32eb0000), SPH_C32(0xaea1db00), SPH_C32(0xf0d00000),
+	  SPH_C32(0x50ab5dd6), SPH_C32(0x9f76b851), SPH_C32(0x6651b6d5),
+	  SPH_C32(0x0c2ab7e7) },
+	{ SPH_C32(0x4b9f0000), SPH_C32(0x0b030001), SPH_C32(0x613deb80),
+	  SPH_C32(0x08ff0000), SPH_C32(0x3f913785), SPH_C32(0x24a5ad87),
+	  SPH_C32(0xd9bbf948), SPH_C32(0x2246c93f), SPH_C32(0x5c8a0000),
+	  SPH_C32(0x97880000), SPH_C32(0xf418dc80), SPH_C32(0xcb800000),
+	  SPH_C32(0x1b7b4e29), SPH_C32(0x18ed8c49), SPH_C32(0x0f12fe14),
+	  SPH_C32(0xc6703019) },
+	{ SPH_C32(0x878b0000), SPH_C32(0xae600001), SPH_C32(0x3b84ec00),
+	  SPH_C32(0x33af0000), SPH_C32(0x7441247a), SPH_C32(0xa33e999f),
+	  SPH_C32(0xb0f8b189), SPH_C32(0xe81c4ec1), SPH_C32(0xdd140000),
+	  SPH_C32(0x7bdf0000), SPH_C32(0x922ade00), SPH_C32(0x5e730000),
+	  SPH_C32(0x46d2662b), SPH_C32(0x5019b0f5), SPH_C32(0xe9485c39),
+	  SPH_C32(0x481787e3) },
+	{ SPH_C32(0x1cc50000), SPH_C32(0x59260001), SPH_C32(0x51d2f200),
+	  SPH_C32(0x58720000), SPH_C32(0xf30e4347), SPH_C32(0x8d428ece),
+	  SPH_C32(0x98432863), SPH_C32(0xaa5c67e3), SPH_C32(0x776d0000),
+	  SPH_C32(0x128f0000), SPH_C32(0x0c51d380), SPH_C32(0x82a20000),
+	  SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487), SPH_C32(0xbd24ac88),
+	  SPH_C32(0x7988c2d8) },
+	{ SPH_C32(0xd0d10000), SPH_C32(0xfc450001), SPH_C32(0x0b6bf580),
+	  SPH_C32(0x63220000), SPH_C32(0xb8de50b8), SPH_C32(0x0ad9bad6),
+	  SPH_C32(0xf10060a2), SPH_C32(0x6006e01d), SPH_C32(0xf6f30000),
+	  SPH_C32(0xfed80000), SPH_C32(0x6a63d100), SPH_C32(0x17510000),
+	  SPH_C32(0xcdd27231), SPH_C32(0x153f583b), SPH_C32(0x5b7e0ea5),
+	  SPH_C32(0xf7ef7522) },
+	{ SPH_C32(0x9d5b0000), SPH_C32(0xb5710001), SPH_C32(0x37e0f080),
+	  SPH_C32(0xcd810000), SPH_C32(0xaea76b45), SPH_C32(0xc5b6b272),
+	  SPH_C32(0x7e198a4e), SPH_C32(0x243bd019), SPH_C32(0x3ae70000),
+	  SPH_C32(0x5bbb0000), SPH_C32(0x30dad680), SPH_C32(0x2c010000),
+	  SPH_C32(0x860261ce), SPH_C32(0x92a46c23), SPH_C32(0x323d4664),
+	  SPH_C32(0x3db5f2dc) },
+	{ SPH_C32(0x514f0000), SPH_C32(0x10120001), SPH_C32(0x6d59f700),
+	  SPH_C32(0xf6d10000), SPH_C32(0xe57778ba), SPH_C32(0x422d866a),
+	  SPH_C32(0x175ac28f), SPH_C32(0xee6157e7), SPH_C32(0xbb790000),
+	  SPH_C32(0xb7ec0000), SPH_C32(0x56e8d400), SPH_C32(0xb9f20000),
+	  SPH_C32(0xdbab49cc), SPH_C32(0xda50509f), SPH_C32(0xd467e449),
+	  SPH_C32(0xb3d24526) },
+	{ SPH_C32(0x64e60000), SPH_C32(0x4bda0001), SPH_C32(0xf8e8f980),
+	  SPH_C32(0xc8d70000), SPH_C32(0x82306b3e), SPH_C32(0xf3ab07ea),
+	  SPH_C32(0x68cf8801), SPH_C32(0xc933ec48), SPH_C32(0x75c20000),
+	  SPH_C32(0xa5a70000), SPH_C32(0xb64dd080), SPH_C32(0xd43a0000),
+	  SPH_C32(0x2af61fe0), SPH_C32(0xdd83a2e0), SPH_C32(0x1478b812),
+	  SPH_C32(0x8d7e28a3) },
+	{ SPH_C32(0xa8f20000), SPH_C32(0xeeb90001), SPH_C32(0xa251fe00),
+	  SPH_C32(0xf3870000), SPH_C32(0xc9e078c1), SPH_C32(0x743033f2),
+	  SPH_C32(0x018cc0c0), SPH_C32(0x03696bb6), SPH_C32(0xf45c0000),
+	  SPH_C32(0x49f00000), SPH_C32(0xd07fd200), SPH_C32(0x41c90000),
+	  SPH_C32(0x775f37e2), SPH_C32(0x95779e5c), SPH_C32(0xf2221a3f),
+	  SPH_C32(0x03199f59) },
+	{ SPH_C32(0xe5780000), SPH_C32(0xa78d0001), SPH_C32(0x9edafb00),
+	  SPH_C32(0x5d240000), SPH_C32(0xdf99433c), SPH_C32(0xbb5f3b56),
+	  SPH_C32(0x8e952a2c), SPH_C32(0x47545bb2), SPH_C32(0x38480000),
+	  SPH_C32(0xec930000), SPH_C32(0x8ac6d580), SPH_C32(0x7a990000),
+	  SPH_C32(0x3c8f241d), SPH_C32(0x12ecaa44), SPH_C32(0x9b6152fe),
+	  SPH_C32(0xc94318a7) },
+	{ SPH_C32(0x296c0000), SPH_C32(0x02ee0001), SPH_C32(0xc463fc80),
+	  SPH_C32(0x66740000), SPH_C32(0x944950c3), SPH_C32(0x3cc40f4e),
+	  SPH_C32(0xe7d662ed), SPH_C32(0x8d0edc4c), SPH_C32(0xb9d60000),
+	  SPH_C32(0x00c40000), SPH_C32(0xecf4d700), SPH_C32(0xef6a0000),
+	  SPH_C32(0x61260c1f), SPH_C32(0x5a1896f8), SPH_C32(0x7d3bf0d3),
+	  SPH_C32(0x4724af5d) },
+	{ SPH_C32(0x1e6a0000), SPH_C32(0xee0e0001), SPH_C32(0xebcef100),
+	  SPH_C32(0x0eea0000), SPH_C32(0x49830694), SPH_C32(0x0d0a48a9),
+	  SPH_C32(0x311f3cf9), SPH_C32(0x5eaa8d98), SPH_C32(0x0de10000),
+	  SPH_C32(0xb75b0000), SPH_C32(0x1f77db00), SPH_C32(0x449f0000),
+	  SPH_C32(0x5bc83799), SPH_C32(0xa36a2bc4), SPH_C32(0xe4f41870),
+	  SPH_C32(0xee11a308) },
+	{ SPH_C32(0xd27e0000), SPH_C32(0x4b6d0001), SPH_C32(0xb177f680),
+	  SPH_C32(0x35ba0000), SPH_C32(0x0253156b), SPH_C32(0x8a917cb1),
+	  SPH_C32(0x585c7438), SPH_C32(0x94f00a66), SPH_C32(0x8c7f0000),
+	  SPH_C32(0x5b0c0000), SPH_C32(0x7945d980), SPH_C32(0xd16c0000),
+	  SPH_C32(0x06611f9b), SPH_C32(0xeb9e1778), SPH_C32(0x02aeba5d),
+	  SPH_C32(0x607614f2) },
+	{ SPH_C32(0x9ff40000), SPH_C32(0x02590001), SPH_C32(0x8dfcf380),
+	  SPH_C32(0x9b190000), SPH_C32(0x142a2e96), SPH_C32(0x45fe7415),
+	  SPH_C32(0xd7459ed4), SPH_C32(0xd0cd3a62), SPH_C32(0x406b0000),
+	  SPH_C32(0xfe6f0000), SPH_C32(0x23fcde00), SPH_C32(0xea3c0000),
+	  SPH_C32(0x4db10c64), SPH_C32(0x6c052360), SPH_C32(0x6bedf29c),
+	  SPH_C32(0xaa2c930c) },
+	{ SPH_C32(0x53e00000), SPH_C32(0xa73a0001), SPH_C32(0xd745f400),
+	  SPH_C32(0xa0490000), SPH_C32(0x5ffa3d69), SPH_C32(0xc265400d),
+	  SPH_C32(0xbe06d615), SPH_C32(0x1a97bd9c), SPH_C32(0xc1f50000),
+	  SPH_C32(0x12380000), SPH_C32(0x45cedc80), SPH_C32(0x7fcf0000),
+	  SPH_C32(0x10182466), SPH_C32(0x24f11fdc), SPH_C32(0x8db750b1),
+	  SPH_C32(0x244b24f6) },
+	{ SPH_C32(0x66490000), SPH_C32(0xfcf20001), SPH_C32(0x42f4fa80),
+	  SPH_C32(0x9e4f0000), SPH_C32(0x38bd2eed), SPH_C32(0x73e3c18d),
+	  SPH_C32(0xc1939c9b), SPH_C32(0x3dc50633), SPH_C32(0x0f4e0000),
+	  SPH_C32(0x00730000), SPH_C32(0xa56bd800), SPH_C32(0x12070000),
+	  SPH_C32(0xe145724a), SPH_C32(0x2322eda3), SPH_C32(0x4da80cea),
+	  SPH_C32(0x1ae74973) },
+	{ SPH_C32(0xaa5d0000), SPH_C32(0x59910001), SPH_C32(0x184dfd00),
+	  SPH_C32(0xa51f0000), SPH_C32(0x736d3d12), SPH_C32(0xf478f595),
+	  SPH_C32(0xa8d0d45a), SPH_C32(0xf79f81cd), SPH_C32(0x8ed00000),
+	  SPH_C32(0xec240000), SPH_C32(0xc359da80), SPH_C32(0x87f40000),
+	  SPH_C32(0xbcec5a48), SPH_C32(0x6bd6d11f), SPH_C32(0xabf2aec7),
+	  SPH_C32(0x9480fe89) },
+	{ SPH_C32(0xe7d70000), SPH_C32(0x10a50001), SPH_C32(0x24c6f800),
+	  SPH_C32(0x0bbc0000), SPH_C32(0x651406ef), SPH_C32(0x3b17fd31),
+	  SPH_C32(0x27c93eb6), SPH_C32(0xb3a2b1c9), SPH_C32(0x42c40000),
+	  SPH_C32(0x49470000), SPH_C32(0x99e0dd00), SPH_C32(0xbca40000),
+	  SPH_C32(0xf73c49b7), SPH_C32(0xec4de507), SPH_C32(0xc2b1e606),
+	  SPH_C32(0x5eda7977) },
+	{ SPH_C32(0x2bc30000), SPH_C32(0xb5c60001), SPH_C32(0x7e7fff80),
+	  SPH_C32(0x30ec0000), SPH_C32(0x2ec41510), SPH_C32(0xbc8cc929),
+	  SPH_C32(0x4e8a7677), SPH_C32(0x79f83637), SPH_C32(0xc35a0000),
+	  SPH_C32(0xa5100000), SPH_C32(0xffd2df80), SPH_C32(0x29570000),
+	  SPH_C32(0xaa9561b5), SPH_C32(0xa4b9d9bb), SPH_C32(0x24eb442b),
+	  SPH_C32(0xd0bdce8d) },
+	{ SPH_C32(0xdb250000), SPH_C32(0x09290000), SPH_C32(0x49aac000),
+	  SPH_C32(0x81e10000), SPH_C32(0xcafe6b59), SPH_C32(0x42793431),
+	  SPH_C32(0x43566b76), SPH_C32(0xe86cba2e), SPH_C32(0x75e60000),
+	  SPH_C32(0x95660001), SPH_C32(0x307b2000), SPH_C32(0xadf40000),
+	  SPH_C32(0x8f321eea), SPH_C32(0x24298307), SPH_C32(0xe8c49cf9),
+	  SPH_C32(0x4b7eec55) },
+	{ SPH_C32(0x17310000), SPH_C32(0xac4a0000), SPH_C32(0x1313c780),
+	  SPH_C32(0xbab10000), SPH_C32(0x812e78a6), SPH_C32(0xc5e20029),
+	  SPH_C32(0x2a1523b7), SPH_C32(0x22363dd0), SPH_C32(0xf4780000),
+	  SPH_C32(0x79310001), SPH_C32(0x56492280), SPH_C32(0x38070000),
+	  SPH_C32(0xd29b36e8), SPH_C32(0x6cddbfbb), SPH_C32(0x0e9e3ed4),
+	  SPH_C32(0xc5195baf) },
+	{ SPH_C32(0x5abb0000), SPH_C32(0xe57e0000), SPH_C32(0x2f98c280),
+	  SPH_C32(0x14120000), SPH_C32(0x9757435b), SPH_C32(0x0a8d088d),
+	  SPH_C32(0xa50cc95b), SPH_C32(0x660b0dd4), SPH_C32(0x386c0000),
+	  SPH_C32(0xdc520001), SPH_C32(0x0cf02500), SPH_C32(0x03570000),
+	  SPH_C32(0x994b2517), SPH_C32(0xeb468ba3), SPH_C32(0x67dd7615),
+	  SPH_C32(0x0f43dc51) },
+	{ SPH_C32(0x96af0000), SPH_C32(0x401d0000), SPH_C32(0x7521c500),
+	  SPH_C32(0x2f420000), SPH_C32(0xdc8750a4), SPH_C32(0x8d163c95),
+	  SPH_C32(0xcc4f819a), SPH_C32(0xac518a2a), SPH_C32(0xb9f20000),
+	  SPH_C32(0x30050001), SPH_C32(0x6ac22780), SPH_C32(0x96a40000),
+	  SPH_C32(0xc4e20d15), SPH_C32(0xa3b2b71f), SPH_C32(0x8187d438),
+	  SPH_C32(0x81246bab) },
+	{ SPH_C32(0xa3060000), SPH_C32(0x1bd50000), SPH_C32(0xe090cb80),
+	  SPH_C32(0x11440000), SPH_C32(0xbbc04320), SPH_C32(0x3c90bd15),
+	  SPH_C32(0xb3dacb14), SPH_C32(0x8b033185), SPH_C32(0x77490000),
+	  SPH_C32(0x224e0001), SPH_C32(0x8a672300), SPH_C32(0xfb6c0000),
+	  SPH_C32(0x35bf5b39), SPH_C32(0xa4614560), SPH_C32(0x41988863),
+	  SPH_C32(0xbf88062e) },
+	{ SPH_C32(0x6f120000), SPH_C32(0xbeb60000), SPH_C32(0xba29cc00),
+	  SPH_C32(0x2a140000), SPH_C32(0xf01050df), SPH_C32(0xbb0b890d),
+	  SPH_C32(0xda9983d5), SPH_C32(0x4159b67b), SPH_C32(0xf6d70000),
+	  SPH_C32(0xce190001), SPH_C32(0xec552180), SPH_C32(0x6e9f0000),
+	  SPH_C32(0x6816733b), SPH_C32(0xec9579dc), SPH_C32(0xa7c22a4e),
+	  SPH_C32(0x31efb1d4) },
+	{ SPH_C32(0x22980000), SPH_C32(0xf7820000), SPH_C32(0x86a2c900),
+	  SPH_C32(0x84b70000), SPH_C32(0xe6696b22), SPH_C32(0x746481a9),
+	  SPH_C32(0x55806939), SPH_C32(0x0564867f), SPH_C32(0x3ac30000),
+	  SPH_C32(0x6b7a0001), SPH_C32(0xb6ec2600), SPH_C32(0x55cf0000),
+	  SPH_C32(0x23c660c4), SPH_C32(0x6b0e4dc4), SPH_C32(0xce81628f),
+	  SPH_C32(0xfbb5362a) },
+	{ SPH_C32(0xee8c0000), SPH_C32(0x52e10000), SPH_C32(0xdc1bce80),
+	  SPH_C32(0xbfe70000), SPH_C32(0xadb978dd), SPH_C32(0xf3ffb5b1),
+	  SPH_C32(0x3cc321f8), SPH_C32(0xcf3e0181), SPH_C32(0xbb5d0000),
+	  SPH_C32(0x872d0001), SPH_C32(0xd0de2480), SPH_C32(0xc03c0000),
+	  SPH_C32(0x7e6f48c6), SPH_C32(0x23fa7178), SPH_C32(0x28dbc0a2),
+	  SPH_C32(0x75d281d0) },
+	{ SPH_C32(0xd98a0000), SPH_C32(0xbe010000), SPH_C32(0xf3b6c300),
+	  SPH_C32(0xd7790000), SPH_C32(0x70732e8a), SPH_C32(0xc231f256),
+	  SPH_C32(0xea0a7fec), SPH_C32(0x1c9a5055), SPH_C32(0x0f6a0000),
+	  SPH_C32(0x30b20001), SPH_C32(0x235d2880), SPH_C32(0x6bc90000),
+	  SPH_C32(0x44817340), SPH_C32(0xda88cc44), SPH_C32(0xb1142801),
+	  SPH_C32(0xdce78d85) },
+	{ SPH_C32(0x159e0000), SPH_C32(0x1b620000), SPH_C32(0xa90fc480),
+	  SPH_C32(0xec290000), SPH_C32(0x3ba33d75), SPH_C32(0x45aac64e),
+	  SPH_C32(0x8349372d), SPH_C32(0xd6c0d7ab), SPH_C32(0x8ef40000),
+	  SPH_C32(0xdce50001), SPH_C32(0x456f2a00), SPH_C32(0xfe3a0000),
+	  SPH_C32(0x19285b42), SPH_C32(0x927cf0f8), SPH_C32(0x574e8a2c),
+	  SPH_C32(0x52803a7f) },
+	{ SPH_C32(0x58140000), SPH_C32(0x52560000), SPH_C32(0x9584c180),
+	  SPH_C32(0x428a0000), SPH_C32(0x2dda0688), SPH_C32(0x8ac5ceea),
+	  SPH_C32(0x0c50ddc1), SPH_C32(0x92fde7af), SPH_C32(0x42e00000),
+	  SPH_C32(0x79860001), SPH_C32(0x1fd62d80), SPH_C32(0xc56a0000),
+	  SPH_C32(0x52f848bd), SPH_C32(0x15e7c4e0), SPH_C32(0x3e0dc2ed),
+	  SPH_C32(0x98dabd81) },
+	{ SPH_C32(0x94000000), SPH_C32(0xf7350000), SPH_C32(0xcf3dc600),
+	  SPH_C32(0x79da0000), SPH_C32(0x660a1577), SPH_C32(0x0d5efaf2),
+	  SPH_C32(0x65139500), SPH_C32(0x58a76051), SPH_C32(0xc37e0000),
+	  SPH_C32(0x95d10001), SPH_C32(0x79e42f00), SPH_C32(0x50990000),
+	  SPH_C32(0x0f5160bf), SPH_C32(0x5d13f85c), SPH_C32(0xd85760c0),
+	  SPH_C32(0x16bd0a7b) },
+	{ SPH_C32(0xa1a90000), SPH_C32(0xacfd0000), SPH_C32(0x5a8cc880),
+	  SPH_C32(0x47dc0000), SPH_C32(0x014d06f3), SPH_C32(0xbcd87b72),
+	  SPH_C32(0x1a86df8e), SPH_C32(0x7ff5dbfe), SPH_C32(0x0dc50000),
+	  SPH_C32(0x879a0001), SPH_C32(0x99412b80), SPH_C32(0x3d510000),
+	  SPH_C32(0xfe0c3693), SPH_C32(0x5ac00a23), SPH_C32(0x18483c9b),
+	  SPH_C32(0x281167fe) },
+	{ SPH_C32(0x6dbd0000), SPH_C32(0x099e0000), SPH_C32(0x0035cf00),
+	  SPH_C32(0x7c8c0000), SPH_C32(0x4a9d150c), SPH_C32(0x3b434f6a),
+	  SPH_C32(0x73c5974f), SPH_C32(0xb5af5c00), SPH_C32(0x8c5b0000),
+	  SPH_C32(0x6bcd0001), SPH_C32(0xff732900), SPH_C32(0xa8a20000),
+	  SPH_C32(0xa3a51e91), SPH_C32(0x1234369f), SPH_C32(0xfe129eb6),
+	  SPH_C32(0xa676d004) },
+	{ SPH_C32(0x20370000), SPH_C32(0x40aa0000), SPH_C32(0x3cbeca00),
+	  SPH_C32(0xd22f0000), SPH_C32(0x5ce42ef1), SPH_C32(0xf42c47ce),
+	  SPH_C32(0xfcdc7da3), SPH_C32(0xf1926c04), SPH_C32(0x404f0000),
+	  SPH_C32(0xceae0001), SPH_C32(0xa5ca2e80), SPH_C32(0x93f20000),
+	  SPH_C32(0xe8750d6e), SPH_C32(0x95af0287), SPH_C32(0x9751d677),
+	  SPH_C32(0x6c2c57fa) },
+	{ SPH_C32(0xec230000), SPH_C32(0xe5c90000), SPH_C32(0x6607cd80),
+	  SPH_C32(0xe97f0000), SPH_C32(0x17343d0e), SPH_C32(0x73b773d6),
+	  SPH_C32(0x959f3562), SPH_C32(0x3bc8ebfa), SPH_C32(0xc1d10000),
+	  SPH_C32(0x22f90001), SPH_C32(0xc3f82c00), SPH_C32(0x06010000),
+	  SPH_C32(0xb5dc256c), SPH_C32(0xdd5b3e3b), SPH_C32(0x710b745a),
+	  SPH_C32(0xe24be000) },
+	{ SPH_C32(0x776d0000), SPH_C32(0x128f0000), SPH_C32(0x0c51d380),
+	  SPH_C32(0x82a20000), SPH_C32(0x907b5a33), SPH_C32(0x5dcb6487),
+	  SPH_C32(0xbd24ac88), SPH_C32(0x7988c2d8), SPH_C32(0x6ba80000),
+	  SPH_C32(0x4ba90001), SPH_C32(0x5d832180), SPH_C32(0xdad00000),
+	  SPH_C32(0x63751974), SPH_C32(0xd089ea49), SPH_C32(0x256784eb),
+	  SPH_C32(0xd3d4a53b) },
+	{ SPH_C32(0xbb790000), SPH_C32(0xb7ec0000), SPH_C32(0x56e8d400),
+	  SPH_C32(0xb9f20000), SPH_C32(0xdbab49cc), SPH_C32(0xda50509f),
+	  SPH_C32(0xd467e449), SPH_C32(0xb3d24526), SPH_C32(0xea360000),
+	  SPH_C32(0xa7fe0001), SPH_C32(0x3bb12300), SPH_C32(0x4f230000),
+	  SPH_C32(0x3edc3176), SPH_C32(0x987dd6f5), SPH_C32(0xc33d26c6),
+	  SPH_C32(0x5db312c1) },
+	{ SPH_C32(0xf6f30000), SPH_C32(0xfed80000), SPH_C32(0x6a63d100),
+	  SPH_C32(0x17510000), SPH_C32(0xcdd27231), SPH_C32(0x153f583b),
+	  SPH_C32(0x5b7e0ea5), SPH_C32(0xf7ef7522), SPH_C32(0x26220000),
+	  SPH_C32(0x029d0001), SPH_C32(0x61082480), SPH_C32(0x74730000),
+	  SPH_C32(0x750c2289), SPH_C32(0x1fe6e2ed), SPH_C32(0xaa7e6e07),
+	  SPH_C32(0x97e9953f) },
+	{ SPH_C32(0x3ae70000), SPH_C32(0x5bbb0000), SPH_C32(0x30dad680),
+	  SPH_C32(0x2c010000), SPH_C32(0x860261ce), SPH_C32(0x92a46c23),
+	  SPH_C32(0x323d4664), SPH_C32(0x3db5f2dc), SPH_C32(0xa7bc0000),
+	  SPH_C32(0xeeca0001), SPH_C32(0x073a2600), SPH_C32(0xe1800000),
+	  SPH_C32(0x28a50a8b), SPH_C32(0x5712de51), SPH_C32(0x4c24cc2a),
+	  SPH_C32(0x198e22c5) },
+	{ SPH_C32(0x0f4e0000), SPH_C32(0x00730000), SPH_C32(0xa56bd800),
+	  SPH_C32(0x12070000), SPH_C32(0xe145724a), SPH_C32(0x2322eda3),
+	  SPH_C32(0x4da80cea), SPH_C32(0x1ae74973), SPH_C32(0x69070000),
+	  SPH_C32(0xfc810001), SPH_C32(0xe79f2280), SPH_C32(0x8c480000),
+	  SPH_C32(0xd9f85ca7), SPH_C32(0x50c12c2e), SPH_C32(0x8c3b9071),
+	  SPH_C32(0x27224f40) },
+	{ SPH_C32(0xc35a0000), SPH_C32(0xa5100000), SPH_C32(0xffd2df80),
+	  SPH_C32(0x29570000), SPH_C32(0xaa9561b5), SPH_C32(0xa4b9d9bb),
+	  SPH_C32(0x24eb442b), SPH_C32(0xd0bdce8d), SPH_C32(0xe8990000),
+	  SPH_C32(0x10d60001), SPH_C32(0x81ad2000), SPH_C32(0x19bb0000),
+	  SPH_C32(0x845174a5), SPH_C32(0x18351092), SPH_C32(0x6a61325c),
+	  SPH_C32(0xa945f8ba) },
+	{ SPH_C32(0x8ed00000), SPH_C32(0xec240000), SPH_C32(0xc359da80),
+	  SPH_C32(0x87f40000), SPH_C32(0xbcec5a48), SPH_C32(0x6bd6d11f),
+	  SPH_C32(0xabf2aec7), SPH_C32(0x9480fe89), SPH_C32(0x248d0000),
+	  SPH_C32(0xb5b50001), SPH_C32(0xdb142780), SPH_C32(0x22eb0000),
+	  SPH_C32(0xcf81675a), SPH_C32(0x9fae248a), SPH_C32(0x03227a9d),
+	  SPH_C32(0x631f7f44) },
+	{ SPH_C32(0x42c40000), SPH_C32(0x49470000), SPH_C32(0x99e0dd00),
+	  SPH_C32(0xbca40000), SPH_C32(0xf73c49b7), SPH_C32(0xec4de507),
+	  SPH_C32(0xc2b1e606), SPH_C32(0x5eda7977), SPH_C32(0xa5130000),
+	  SPH_C32(0x59e20001), SPH_C32(0xbd262500), SPH_C32(0xb7180000),
+	  SPH_C32(0x92284f58), SPH_C32(0xd75a1836), SPH_C32(0xe578d8b0),
+	  SPH_C32(0xed78c8be) },
+	{ SPH_C32(0x75c20000), SPH_C32(0xa5a70000), SPH_C32(0xb64dd080),
+	  SPH_C32(0xd43a0000), SPH_C32(0x2af61fe0), SPH_C32(0xdd83a2e0),
+	  SPH_C32(0x1478b812), SPH_C32(0x8d7e28a3), SPH_C32(0x11240000),
+	  SPH_C32(0xee7d0001), SPH_C32(0x4ea52900), SPH_C32(0x1ced0000),
+	  SPH_C32(0xa8c674de), SPH_C32(0x2e28a50a), SPH_C32(0x7cb73013),
+	  SPH_C32(0x444dc4eb) },
+	{ SPH_C32(0xb9d60000), SPH_C32(0x00c40000), SPH_C32(0xecf4d700),
+	  SPH_C32(0xef6a0000), SPH_C32(0x61260c1f), SPH_C32(0x5a1896f8),
+	  SPH_C32(0x7d3bf0d3), SPH_C32(0x4724af5d), SPH_C32(0x90ba0000),
+	  SPH_C32(0x022a0001), SPH_C32(0x28972b80), SPH_C32(0x891e0000),
+	  SPH_C32(0xf56f5cdc), SPH_C32(0x66dc99b6), SPH_C32(0x9aed923e),
+	  SPH_C32(0xca2a7311) },
+	{ SPH_C32(0xf45c0000), SPH_C32(0x49f00000), SPH_C32(0xd07fd200),
+	  SPH_C32(0x41c90000), SPH_C32(0x775f37e2), SPH_C32(0x95779e5c),
+	  SPH_C32(0xf2221a3f), SPH_C32(0x03199f59), SPH_C32(0x5cae0000),
+	  SPH_C32(0xa7490001), SPH_C32(0x722e2c00), SPH_C32(0xb24e0000),
+	  SPH_C32(0xbebf4f23), SPH_C32(0xe147adae), SPH_C32(0xf3aedaff),
+	  SPH_C32(0x0070f4ef) },
+	{ SPH_C32(0x38480000), SPH_C32(0xec930000), SPH_C32(0x8ac6d580),
+	  SPH_C32(0x7a990000), SPH_C32(0x3c8f241d), SPH_C32(0x12ecaa44),
+	  SPH_C32(0x9b6152fe), SPH_C32(0xc94318a7), SPH_C32(0xdd300000),
+	  SPH_C32(0x4b1e0001), SPH_C32(0x141c2e80), SPH_C32(0x27bd0000),
+	  SPH_C32(0xe3166721), SPH_C32(0xa9b39112), SPH_C32(0x15f478d2),
+	  SPH_C32(0x8e174315) },
+	{ SPH_C32(0x0de10000), SPH_C32(0xb75b0000), SPH_C32(0x1f77db00),
+	  SPH_C32(0x449f0000), SPH_C32(0x5bc83799), SPH_C32(0xa36a2bc4),
+	  SPH_C32(0xe4f41870), SPH_C32(0xee11a308), SPH_C32(0x138b0000),
+	  SPH_C32(0x59550001), SPH_C32(0xf4b92a00), SPH_C32(0x4a750000),
+	  SPH_C32(0x124b310d), SPH_C32(0xae60636d), SPH_C32(0xd5eb2489),
+	  SPH_C32(0xb0bb2e90) },
+	{ SPH_C32(0xc1f50000), SPH_C32(0x12380000), SPH_C32(0x45cedc80),
+	  SPH_C32(0x7fcf0000), SPH_C32(0x10182466), SPH_C32(0x24f11fdc),
+	  SPH_C32(0x8db750b1), SPH_C32(0x244b24f6), SPH_C32(0x92150000),
+	  SPH_C32(0xb5020001), SPH_C32(0x928b2880), SPH_C32(0xdf860000),
+	  SPH_C32(0x4fe2190f), SPH_C32(0xe6945fd1), SPH_C32(0x33b186a4),
+	  SPH_C32(0x3edc996a) },
+	{ SPH_C32(0x8c7f0000), SPH_C32(0x5b0c0000), SPH_C32(0x7945d980),
+	  SPH_C32(0xd16c0000), SPH_C32(0x06611f9b), SPH_C32(0xeb9e1778),
+	  SPH_C32(0x02aeba5d), SPH_C32(0x607614f2), SPH_C32(0x5e010000),
+	  SPH_C32(0x10610001), SPH_C32(0xc8322f00), SPH_C32(0xe4d60000),
+	  SPH_C32(0x04320af0), SPH_C32(0x610f6bc9), SPH_C32(0x5af2ce65),
+	  SPH_C32(0xf4861e94) },
+	{ SPH_C32(0x406b0000), SPH_C32(0xfe6f0000), SPH_C32(0x23fcde00),
+	  SPH_C32(0xea3c0000), SPH_C32(0x4db10c64), SPH_C32(0x6c052360),
+	  SPH_C32(0x6bedf29c), SPH_C32(0xaa2c930c), SPH_C32(0xdf9f0000),
+	  SPH_C32(0xfc360001), SPH_C32(0xae002d80), SPH_C32(0x71250000),
+	  SPH_C32(0x599b22f2), SPH_C32(0x29fb5775), SPH_C32(0xbca86c48),
+	  SPH_C32(0x7ae1a96e) },
+	{ SPH_C32(0xc56b0000), SPH_C32(0xd7e60000), SPH_C32(0x2452c180),
+	  SPH_C32(0xf6c50000), SPH_C32(0x26b96cc7), SPH_C32(0xb6d95d7f),
+	  SPH_C32(0x8ef57364), SPH_C32(0x70c6f340), SPH_C32(0xc7e00000),
+	  SPH_C32(0x500f0001), SPH_C32(0x18783200), SPH_C32(0xd9930000),
+	  SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff), SPH_C32(0xdb154315),
+	  SPH_C32(0x4230ddcd) },
+	{ SPH_C32(0x097f0000), SPH_C32(0x72850000), SPH_C32(0x7eebc600),
+	  SPH_C32(0xcd950000), SPH_C32(0x6d697f38), SPH_C32(0x31426967),
+	  SPH_C32(0xe7b63ba5), SPH_C32(0xba9c74be), SPH_C32(0x467e0000),
+	  SPH_C32(0xbc580001), SPH_C32(0x7e4a3080), SPH_C32(0x4c600000),
+	  SPH_C32(0x6459001c), SPH_C32(0x87cf8643), SPH_C32(0x3d4fe138),
+	  SPH_C32(0xcc576a37) },
+	{ SPH_C32(0x44f50000), SPH_C32(0x3bb10000), SPH_C32(0x4260c300),
+	  SPH_C32(0x63360000), SPH_C32(0x7b1044c5), SPH_C32(0xfe2d61c3),
+	  SPH_C32(0x68afd149), SPH_C32(0xfea144ba), SPH_C32(0x8a6a0000),
+	  SPH_C32(0x193b0001), SPH_C32(0x24f33700), SPH_C32(0x77300000),
+	  SPH_C32(0x2f8913e3), SPH_C32(0x0054b25b), SPH_C32(0x540ca9f9),
+	  SPH_C32(0x060dedc9) },
+	{ SPH_C32(0x88e10000), SPH_C32(0x9ed20000), SPH_C32(0x18d9c480),
+	  SPH_C32(0x58660000), SPH_C32(0x30c0573a), SPH_C32(0x79b655db),
+	  SPH_C32(0x01ec9988), SPH_C32(0x34fbc344), SPH_C32(0x0bf40000),
+	  SPH_C32(0xf56c0001), SPH_C32(0x42c13580), SPH_C32(0xe2c30000),
+	  SPH_C32(0x72203be1), SPH_C32(0x48a08ee7), SPH_C32(0xb2560bd4),
+	  SPH_C32(0x886a5a33) },
+	{ SPH_C32(0xbd480000), SPH_C32(0xc51a0000), SPH_C32(0x8d68ca00),
+	  SPH_C32(0x66600000), SPH_C32(0x578744be), SPH_C32(0xc830d45b),
+	  SPH_C32(0x7e79d306), SPH_C32(0x13a978eb), SPH_C32(0xc54f0000),
+	  SPH_C32(0xe7270001), SPH_C32(0xa2643100), SPH_C32(0x8f0b0000),
+	  SPH_C32(0x837d6dcd), SPH_C32(0x4f737c98), SPH_C32(0x7249578f),
+	  SPH_C32(0xb6c637b6) },
+	{ SPH_C32(0x715c0000), SPH_C32(0x60790000), SPH_C32(0xd7d1cd80),
+	  SPH_C32(0x5d300000), SPH_C32(0x1c575741), SPH_C32(0x4fabe043),
+	  SPH_C32(0x173a9bc7), SPH_C32(0xd9f3ff15), SPH_C32(0x44d10000),
+	  SPH_C32(0x0b700001), SPH_C32(0xc4563380), SPH_C32(0x1af80000),
+	  SPH_C32(0xded445cf), SPH_C32(0x07874024), SPH_C32(0x9413f5a2),
+	  SPH_C32(0x38a1804c) },
+	{ SPH_C32(0x3cd60000), SPH_C32(0x294d0000), SPH_C32(0xeb5ac880),
+	  SPH_C32(0xf3930000), SPH_C32(0x0a2e6cbc), SPH_C32(0x80c4e8e7),
+	  SPH_C32(0x9823712b), SPH_C32(0x9dcecf11), SPH_C32(0x88c50000),
+	  SPH_C32(0xae130001), SPH_C32(0x9eef3400), SPH_C32(0x21a80000),
+	  SPH_C32(0x95045630), SPH_C32(0x801c743c), SPH_C32(0xfd50bd63),
+	  SPH_C32(0xf2fb07b2) },
+	{ SPH_C32(0xf0c20000), SPH_C32(0x8c2e0000), SPH_C32(0xb1e3cf00),
+	  SPH_C32(0xc8c30000), SPH_C32(0x41fe7f43), SPH_C32(0x075fdcff),
+	  SPH_C32(0xf16039ea), SPH_C32(0x579448ef), SPH_C32(0x095b0000),
+	  SPH_C32(0x42440001), SPH_C32(0xf8dd3680), SPH_C32(0xb45b0000),
+	  SPH_C32(0xc8ad7e32), SPH_C32(0xc8e84880), SPH_C32(0x1b0a1f4e),
+	  SPH_C32(0x7c9cb048) },
+	{ SPH_C32(0xc7c40000), SPH_C32(0x60ce0000), SPH_C32(0x9e4ec280),
+	  SPH_C32(0xa05d0000), SPH_C32(0x9c342914), SPH_C32(0x36919b18),
+	  SPH_C32(0x27a967fe), SPH_C32(0x8430193b), SPH_C32(0xbd6c0000),
+	  SPH_C32(0xf5db0001), SPH_C32(0x0b5e3a80), SPH_C32(0x1fae0000),
+	  SPH_C32(0xf24345b4), SPH_C32(0x319af5bc), SPH_C32(0x82c5f7ed),
+	  SPH_C32(0xd5a9bc1d) },
+	{ SPH_C32(0x0bd00000), SPH_C32(0xc5ad0000), SPH_C32(0xc4f7c500),
+	  SPH_C32(0x9b0d0000), SPH_C32(0xd7e43aeb), SPH_C32(0xb10aaf00),
+	  SPH_C32(0x4eea2f3f), SPH_C32(0x4e6a9ec5), SPH_C32(0x3cf20000),
+	  SPH_C32(0x198c0001), SPH_C32(0x6d6c3800), SPH_C32(0x8a5d0000),
+	  SPH_C32(0xafea6db6), SPH_C32(0x796ec900), SPH_C32(0x649f55c0),
+	  SPH_C32(0x5bce0be7) },
+	{ SPH_C32(0x465a0000), SPH_C32(0x8c990000), SPH_C32(0xf87cc000),
+	  SPH_C32(0x35ae0000), SPH_C32(0xc19d0116), SPH_C32(0x7e65a7a4),
+	  SPH_C32(0xc1f3c5d3), SPH_C32(0x0a57aec1), SPH_C32(0xf0e60000),
+	  SPH_C32(0xbcef0001), SPH_C32(0x37d53f80), SPH_C32(0xb10d0000),
+	  SPH_C32(0xe43a7e49), SPH_C32(0xfef5fd18), SPH_C32(0x0ddc1d01),
+	  SPH_C32(0x91948c19) },
+	{ SPH_C32(0x8a4e0000), SPH_C32(0x29fa0000), SPH_C32(0xa2c5c780),
+	  SPH_C32(0x0efe0000), SPH_C32(0x8a4d12e9), SPH_C32(0xf9fe93bc),
+	  SPH_C32(0xa8b08d12), SPH_C32(0xc00d293f), SPH_C32(0x71780000),
+	  SPH_C32(0x50b80001), SPH_C32(0x51e73d00), SPH_C32(0x24fe0000),
+	  SPH_C32(0xb993564b), SPH_C32(0xb601c1a4), SPH_C32(0xeb86bf2c),
+	  SPH_C32(0x1ff33be3) },
+	{ SPH_C32(0xbfe70000), SPH_C32(0x72320000), SPH_C32(0x3774c900),
+	  SPH_C32(0x30f80000), SPH_C32(0xed0a016d), SPH_C32(0x4878123c),
+	  SPH_C32(0xd725c79c), SPH_C32(0xe75f9290), SPH_C32(0xbfc30000),
+	  SPH_C32(0x42f30001), SPH_C32(0xb1423980), SPH_C32(0x49360000),
+	  SPH_C32(0x48ce0067), SPH_C32(0xb1d233db), SPH_C32(0x2b99e377),
+	  SPH_C32(0x215f5666) },
+	{ SPH_C32(0x73f30000), SPH_C32(0xd7510000), SPH_C32(0x6dcdce80),
+	  SPH_C32(0x0ba80000), SPH_C32(0xa6da1292), SPH_C32(0xcfe32624),
+	  SPH_C32(0xbe668f5d), SPH_C32(0x2d05156e), SPH_C32(0x3e5d0000),
+	  SPH_C32(0xaea40001), SPH_C32(0xd7703b00), SPH_C32(0xdcc50000),
+	  SPH_C32(0x15672865), SPH_C32(0xf9260f67), SPH_C32(0xcdc3415a),
+	  SPH_C32(0xaf38e19c) },
+	{ SPH_C32(0x3e790000), SPH_C32(0x9e650000), SPH_C32(0x5146cb80),
+	  SPH_C32(0xa50b0000), SPH_C32(0xb0a3296f), SPH_C32(0x008c2e80),
+	  SPH_C32(0x317f65b1), SPH_C32(0x6938256a), SPH_C32(0xf2490000),
+	  SPH_C32(0x0bc70001), SPH_C32(0x8dc93c80), SPH_C32(0xe7950000),
+	  SPH_C32(0x5eb73b9a), SPH_C32(0x7ebd3b7f), SPH_C32(0xa480099b),
+	  SPH_C32(0x65626662) },
+	{ SPH_C32(0xf26d0000), SPH_C32(0x3b060000), SPH_C32(0x0bffcc00),
+	  SPH_C32(0x9e5b0000), SPH_C32(0xfb733a90), SPH_C32(0x87171a98),
+	  SPH_C32(0x583c2d70), SPH_C32(0xa362a294), SPH_C32(0x73d70000),
+	  SPH_C32(0xe7900001), SPH_C32(0xebfb3e00), SPH_C32(0x72660000),
+	  SPH_C32(0x031e1398), SPH_C32(0x364907c3), SPH_C32(0x42daabb6),
+	  SPH_C32(0xeb05d198) },
+	{ SPH_C32(0x69230000), SPH_C32(0xcc400000), SPH_C32(0x61a9d200),
+	  SPH_C32(0xf5860000), SPH_C32(0x7c3c5dad), SPH_C32(0xa96b0dc9),
+	  SPH_C32(0x7087b49a), SPH_C32(0xe1228bb6), SPH_C32(0xd9ae0000),
+	  SPH_C32(0x8ec00001), SPH_C32(0x75803380), SPH_C32(0xaeb70000),
+	  SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1), SPH_C32(0x16b65b07),
+	  SPH_C32(0xda9a94a3) },
+	{ SPH_C32(0xa5370000), SPH_C32(0x69230000), SPH_C32(0x3b10d580),
+	  SPH_C32(0xced60000), SPH_C32(0x37ec4e52), SPH_C32(0x2ef039d1),
+	  SPH_C32(0x19c4fc5b), SPH_C32(0x2b780c48), SPH_C32(0x58300000),
+	  SPH_C32(0x62970001), SPH_C32(0x13b23100), SPH_C32(0x3b440000),
+	  SPH_C32(0x881e0782), SPH_C32(0x736fef0d), SPH_C32(0xf0ecf92a),
+	  SPH_C32(0x54fd2359) },
+	{ SPH_C32(0xe8bd0000), SPH_C32(0x20170000), SPH_C32(0x079bd080),
+	  SPH_C32(0x60750000), SPH_C32(0x219575af), SPH_C32(0xe19f3175),
+	  SPH_C32(0x96dd16b7), SPH_C32(0x6f453c4c), SPH_C32(0x94240000),
+	  SPH_C32(0xc7f40001), SPH_C32(0x490b3680), SPH_C32(0x00140000),
+	  SPH_C32(0xc3ce147d), SPH_C32(0xf4f4db15), SPH_C32(0x99afb1eb),
+	  SPH_C32(0x9ea7a4a7) },
+	{ SPH_C32(0x24a90000), SPH_C32(0x85740000), SPH_C32(0x5d22d700),
+	  SPH_C32(0x5b250000), SPH_C32(0x6a456650), SPH_C32(0x6604056d),
+	  SPH_C32(0xff9e5e76), SPH_C32(0xa51fbbb2), SPH_C32(0x15ba0000),
+	  SPH_C32(0x2ba30001), SPH_C32(0x2f393400), SPH_C32(0x95e70000),
+	  SPH_C32(0x9e673c7f), SPH_C32(0xbc00e7a9), SPH_C32(0x7ff513c6),
+	  SPH_C32(0x10c0135d) },
+	{ SPH_C32(0x11000000), SPH_C32(0xdebc0000), SPH_C32(0xc893d980),
+	  SPH_C32(0x65230000), SPH_C32(0x0d0275d4), SPH_C32(0xd78284ed),
+	  SPH_C32(0x800b14f8), SPH_C32(0x824d001d), SPH_C32(0xdb010000),
+	  SPH_C32(0x39e80001), SPH_C32(0xcf9c3080), SPH_C32(0xf82f0000),
+	  SPH_C32(0x6f3a6a53), SPH_C32(0xbbd315d6), SPH_C32(0xbfea4f9d),
+	  SPH_C32(0x2e6c7ed8) },
+	{ SPH_C32(0xdd140000), SPH_C32(0x7bdf0000), SPH_C32(0x922ade00),
+	  SPH_C32(0x5e730000), SPH_C32(0x46d2662b), SPH_C32(0x5019b0f5),
+	  SPH_C32(0xe9485c39), SPH_C32(0x481787e3), SPH_C32(0x5a9f0000),
+	  SPH_C32(0xd5bf0001), SPH_C32(0xa9ae3200), SPH_C32(0x6ddc0000),
+	  SPH_C32(0x32934251), SPH_C32(0xf327296a), SPH_C32(0x59b0edb0),
+	  SPH_C32(0xa00bc922) },
+	{ SPH_C32(0x909e0000), SPH_C32(0x32eb0000), SPH_C32(0xaea1db00),
+	  SPH_C32(0xf0d00000), SPH_C32(0x50ab5dd6), SPH_C32(0x9f76b851),
+	  SPH_C32(0x6651b6d5), SPH_C32(0x0c2ab7e7), SPH_C32(0x968b0000),
+	  SPH_C32(0x70dc0001), SPH_C32(0xf3173580), SPH_C32(0x568c0000),
+	  SPH_C32(0x794351ae), SPH_C32(0x74bc1d72), SPH_C32(0x30f3a571),
+	  SPH_C32(0x6a514edc) },
+	{ SPH_C32(0x5c8a0000), SPH_C32(0x97880000), SPH_C32(0xf418dc80),
+	  SPH_C32(0xcb800000), SPH_C32(0x1b7b4e29), SPH_C32(0x18ed8c49),
+	  SPH_C32(0x0f12fe14), SPH_C32(0xc6703019), SPH_C32(0x17150000),
+	  SPH_C32(0x9c8b0001), SPH_C32(0x95253700), SPH_C32(0xc37f0000),
+	  SPH_C32(0x24ea79ac), SPH_C32(0x3c4821ce), SPH_C32(0xd6a9075c),
+	  SPH_C32(0xe436f926) },
+	{ SPH_C32(0x6b8c0000), SPH_C32(0x7b680000), SPH_C32(0xdbb5d100),
+	  SPH_C32(0xa31e0000), SPH_C32(0xc6b1187e), SPH_C32(0x2923cbae),
+	  SPH_C32(0xd9dba000), SPH_C32(0x15d461cd), SPH_C32(0xa3220000),
+	  SPH_C32(0x2b140001), SPH_C32(0x66a63b00), SPH_C32(0x688a0000),
+	  SPH_C32(0x1e04422a), SPH_C32(0xc53a9cf2), SPH_C32(0x4f66efff),
+	  SPH_C32(0x4d03f573) },
+	{ SPH_C32(0xa7980000), SPH_C32(0xde0b0000), SPH_C32(0x810cd680),
+	  SPH_C32(0x984e0000), SPH_C32(0x8d610b81), SPH_C32(0xaeb8ffb6),
+	  SPH_C32(0xb098e8c1), SPH_C32(0xdf8ee633), SPH_C32(0x22bc0000),
+	  SPH_C32(0xc7430001), SPH_C32(0x00943980), SPH_C32(0xfd790000),
+	  SPH_C32(0x43ad6a28), SPH_C32(0x8dcea04e), SPH_C32(0xa93c4dd2),
+	  SPH_C32(0xc3644289) },
+	{ SPH_C32(0xea120000), SPH_C32(0x973f0000), SPH_C32(0xbd87d380),
+	  SPH_C32(0x36ed0000), SPH_C32(0x9b18307c), SPH_C32(0x61d7f712),
+	  SPH_C32(0x3f81022d), SPH_C32(0x9bb3d637), SPH_C32(0xeea80000),
+	  SPH_C32(0x62200001), SPH_C32(0x5a2d3e00), SPH_C32(0xc6290000),
+	  SPH_C32(0x087d79d7), SPH_C32(0x0a559456), SPH_C32(0xc07f0513),
+	  SPH_C32(0x093ec577) },
+	{ SPH_C32(0x26060000), SPH_C32(0x325c0000), SPH_C32(0xe73ed400),
+	  SPH_C32(0x0dbd0000), SPH_C32(0xd0c82383), SPH_C32(0xe64cc30a),
+	  SPH_C32(0x56c24aec), SPH_C32(0x51e951c9), SPH_C32(0x6f360000),
+	  SPH_C32(0x8e770001), SPH_C32(0x3c1f3c80), SPH_C32(0x53da0000),
+	  SPH_C32(0x55d451d5), SPH_C32(0x42a1a8ea), SPH_C32(0x2625a73e),
+	  SPH_C32(0x8759728d) },
+	{ SPH_C32(0x13af0000), SPH_C32(0x69940000), SPH_C32(0x728fda80),
+	  SPH_C32(0x33bb0000), SPH_C32(0xb78f3007), SPH_C32(0x57ca428a),
+	  SPH_C32(0x29570062), SPH_C32(0x76bbea66), SPH_C32(0xa18d0000),
+	  SPH_C32(0x9c3c0001), SPH_C32(0xdcba3800), SPH_C32(0x3e120000),
+	  SPH_C32(0xa48907f9), SPH_C32(0x45725a95), SPH_C32(0xe63afb65),
+	  SPH_C32(0xb9f51f08) },
+	{ SPH_C32(0xdfbb0000), SPH_C32(0xccf70000), SPH_C32(0x2836dd00),
+	  SPH_C32(0x08eb0000), SPH_C32(0xfc5f23f8), SPH_C32(0xd0517692),
+	  SPH_C32(0x401448a3), SPH_C32(0xbce16d98), SPH_C32(0x20130000),
+	  SPH_C32(0x706b0001), SPH_C32(0xba883a80), SPH_C32(0xabe10000),
+	  SPH_C32(0xf9202ffb), SPH_C32(0x0d866629), SPH_C32(0x00605948),
+	  SPH_C32(0x3792a8f2) },
+	{ SPH_C32(0x92310000), SPH_C32(0x85c30000), SPH_C32(0x14bdd800),
+	  SPH_C32(0xa6480000), SPH_C32(0xea261805), SPH_C32(0x1f3e7e36),
+	  SPH_C32(0xcf0da24f), SPH_C32(0xf8dc5d9c), SPH_C32(0xec070000),
+	  SPH_C32(0xd5080001), SPH_C32(0xe0313d00), SPH_C32(0x90b10000),
+	  SPH_C32(0xb2f03c04), SPH_C32(0x8a1d5231), SPH_C32(0x69231189),
+	  SPH_C32(0xfdc82f0c) },
+	{ SPH_C32(0x5e250000), SPH_C32(0x20a00000), SPH_C32(0x4e04df80),
+	  SPH_C32(0x9d180000), SPH_C32(0xa1f60bfa), SPH_C32(0x98a54a2e),
+	  SPH_C32(0xa64eea8e), SPH_C32(0x3286da62), SPH_C32(0x6d990000),
+	  SPH_C32(0x395f0001), SPH_C32(0x86033f80), SPH_C32(0x05420000),
+	  SPH_C32(0xef591406), SPH_C32(0xc2e96e8d), SPH_C32(0x8f79b3a4),
+	  SPH_C32(0x73af98f6) },
+	{ SPH_C32(0x75e60000), SPH_C32(0x95660001), SPH_C32(0x307b2000),
+	  SPH_C32(0xadf40000), SPH_C32(0x8f321eea), SPH_C32(0x24298307),
+	  SPH_C32(0xe8c49cf9), SPH_C32(0x4b7eec55), SPH_C32(0xaec30000),
+	  SPH_C32(0x9c4f0001), SPH_C32(0x79d1e000), SPH_C32(0x2c150000),
+	  SPH_C32(0x45cc75b3), SPH_C32(0x6650b736), SPH_C32(0xab92f78f),
+	  SPH_C32(0xa312567b) },
+	{ SPH_C32(0xb9f20000), SPH_C32(0x30050001), SPH_C32(0x6ac22780),
+	  SPH_C32(0x96a40000), SPH_C32(0xc4e20d15), SPH_C32(0xa3b2b71f),
+	  SPH_C32(0x8187d438), SPH_C32(0x81246bab), SPH_C32(0x2f5d0000),
+	  SPH_C32(0x70180001), SPH_C32(0x1fe3e280), SPH_C32(0xb9e60000),
+	  SPH_C32(0x18655db1), SPH_C32(0x2ea48b8a), SPH_C32(0x4dc855a2),
+	  SPH_C32(0x2d75e181) },
+	{ SPH_C32(0xf4780000), SPH_C32(0x79310001), SPH_C32(0x56492280),
+	  SPH_C32(0x38070000), SPH_C32(0xd29b36e8), SPH_C32(0x6cddbfbb),
+	  SPH_C32(0x0e9e3ed4), SPH_C32(0xc5195baf), SPH_C32(0xe3490000),
+	  SPH_C32(0xd57b0001), SPH_C32(0x455ae500), SPH_C32(0x82b60000),
+	  SPH_C32(0x53b54e4e), SPH_C32(0xa93fbf92), SPH_C32(0x248b1d63),
+	  SPH_C32(0xe72f667f) },
+	{ SPH_C32(0x386c0000), SPH_C32(0xdc520001), SPH_C32(0x0cf02500),
+	  SPH_C32(0x03570000), SPH_C32(0x994b2517), SPH_C32(0xeb468ba3),
+	  SPH_C32(0x67dd7615), SPH_C32(0x0f43dc51), SPH_C32(0x62d70000),
+	  SPH_C32(0x392c0001), SPH_C32(0x2368e780), SPH_C32(0x17450000),
+	  SPH_C32(0x0e1c664c), SPH_C32(0xe1cb832e), SPH_C32(0xc2d1bf4e),
+	  SPH_C32(0x6948d185) },
+	{ SPH_C32(0x0dc50000), SPH_C32(0x879a0001), SPH_C32(0x99412b80),
+	  SPH_C32(0x3d510000), SPH_C32(0xfe0c3693), SPH_C32(0x5ac00a23),
+	  SPH_C32(0x18483c9b), SPH_C32(0x281167fe), SPH_C32(0xac6c0000),
+	  SPH_C32(0x2b670001), SPH_C32(0xc3cde300), SPH_C32(0x7a8d0000),
+	  SPH_C32(0xff413060), SPH_C32(0xe6187151), SPH_C32(0x02cee315),
+	  SPH_C32(0x57e4bc00) },
+	{ SPH_C32(0xc1d10000), SPH_C32(0x22f90001), SPH_C32(0xc3f82c00),
+	  SPH_C32(0x06010000), SPH_C32(0xb5dc256c), SPH_C32(0xdd5b3e3b),
+	  SPH_C32(0x710b745a), SPH_C32(0xe24be000), SPH_C32(0x2df20000),
+	  SPH_C32(0xc7300001), SPH_C32(0xa5ffe180), SPH_C32(0xef7e0000),
+	  SPH_C32(0xa2e81862), SPH_C32(0xaeec4ded), SPH_C32(0xe4944138),
+	  SPH_C32(0xd9830bfa) },
+	{ SPH_C32(0x8c5b0000), SPH_C32(0x6bcd0001), SPH_C32(0xff732900),
+	  SPH_C32(0xa8a20000), SPH_C32(0xa3a51e91), SPH_C32(0x1234369f),
+	  SPH_C32(0xfe129eb6), SPH_C32(0xa676d004), SPH_C32(0xe1e60000),
+	  SPH_C32(0x62530001), SPH_C32(0xff46e600), SPH_C32(0xd42e0000),
+	  SPH_C32(0xe9380b9d), SPH_C32(0x297779f5), SPH_C32(0x8dd709f9),
+	  SPH_C32(0x13d98c04) },
+	{ SPH_C32(0x404f0000), SPH_C32(0xceae0001), SPH_C32(0xa5ca2e80),
+	  SPH_C32(0x93f20000), SPH_C32(0xe8750d6e), SPH_C32(0x95af0287),
+	  SPH_C32(0x9751d677), SPH_C32(0x6c2c57fa), SPH_C32(0x60780000),
+	  SPH_C32(0x8e040001), SPH_C32(0x9974e480), SPH_C32(0x41dd0000),
+	  SPH_C32(0xb491239f), SPH_C32(0x61834549), SPH_C32(0x6b8dabd4),
+	  SPH_C32(0x9dbe3bfe) },
+	{ SPH_C32(0x77490000), SPH_C32(0x224e0001), SPH_C32(0x8a672300),
+	  SPH_C32(0xfb6c0000), SPH_C32(0x35bf5b39), SPH_C32(0xa4614560),
+	  SPH_C32(0x41988863), SPH_C32(0xbf88062e), SPH_C32(0xd44f0000),
+	  SPH_C32(0x399b0001), SPH_C32(0x6af7e880), SPH_C32(0xea280000),
+	  SPH_C32(0x8e7f1819), SPH_C32(0x98f1f875), SPH_C32(0xf2424377),
+	  SPH_C32(0x348b37ab) },
+	{ SPH_C32(0xbb5d0000), SPH_C32(0x872d0001), SPH_C32(0xd0de2480),
+	  SPH_C32(0xc03c0000), SPH_C32(0x7e6f48c6), SPH_C32(0x23fa7178),
+	  SPH_C32(0x28dbc0a2), SPH_C32(0x75d281d0), SPH_C32(0x55d10000),
+	  SPH_C32(0xd5cc0001), SPH_C32(0x0cc5ea00), SPH_C32(0x7fdb0000),
+	  SPH_C32(0xd3d6301b), SPH_C32(0xd005c4c9), SPH_C32(0x1418e15a),
+	  SPH_C32(0xbaec8051) },
+	{ SPH_C32(0xf6d70000), SPH_C32(0xce190001), SPH_C32(0xec552180),
+	  SPH_C32(0x6e9f0000), SPH_C32(0x6816733b), SPH_C32(0xec9579dc),
+	  SPH_C32(0xa7c22a4e), SPH_C32(0x31efb1d4), SPH_C32(0x99c50000),
+	  SPH_C32(0x70af0001), SPH_C32(0x567ced80), SPH_C32(0x448b0000),
+	  SPH_C32(0x980623e4), SPH_C32(0x579ef0d1), SPH_C32(0x7d5ba99b),
+	  SPH_C32(0x70b607af) },
+	{ SPH_C32(0x3ac30000), SPH_C32(0x6b7a0001), SPH_C32(0xb6ec2600),
+	  SPH_C32(0x55cf0000), SPH_C32(0x23c660c4), SPH_C32(0x6b0e4dc4),
+	  SPH_C32(0xce81628f), SPH_C32(0xfbb5362a), SPH_C32(0x185b0000),
+	  SPH_C32(0x9cf80001), SPH_C32(0x304eef00), SPH_C32(0xd1780000),
+	  SPH_C32(0xc5af0be6), SPH_C32(0x1f6acc6d), SPH_C32(0x9b010bb6),
+	  SPH_C32(0xfed1b055) },
+	{ SPH_C32(0x0f6a0000), SPH_C32(0x30b20001), SPH_C32(0x235d2880),
+	  SPH_C32(0x6bc90000), SPH_C32(0x44817340), SPH_C32(0xda88cc44),
+	  SPH_C32(0xb1142801), SPH_C32(0xdce78d85), SPH_C32(0xd6e00000),
+	  SPH_C32(0x8eb30001), SPH_C32(0xd0ebeb80), SPH_C32(0xbcb00000),
+	  SPH_C32(0x34f25dca), SPH_C32(0x18b93e12), SPH_C32(0x5b1e57ed),
+	  SPH_C32(0xc07dddd0) },
+	{ SPH_C32(0xc37e0000), SPH_C32(0x95d10001), SPH_C32(0x79e42f00),
+	  SPH_C32(0x50990000), SPH_C32(0x0f5160bf), SPH_C32(0x5d13f85c),
+	  SPH_C32(0xd85760c0), SPH_C32(0x16bd0a7b), SPH_C32(0x577e0000),
+	  SPH_C32(0x62e40001), SPH_C32(0xb6d9e900), SPH_C32(0x29430000),
+	  SPH_C32(0x695b75c8), SPH_C32(0x504d02ae), SPH_C32(0xbd44f5c0),
+	  SPH_C32(0x4e1a6a2a) },
+	{ SPH_C32(0x8ef40000), SPH_C32(0xdce50001), SPH_C32(0x456f2a00),
+	  SPH_C32(0xfe3a0000), SPH_C32(0x19285b42), SPH_C32(0x927cf0f8),
+	  SPH_C32(0x574e8a2c), SPH_C32(0x52803a7f), SPH_C32(0x9b6a0000),
+	  SPH_C32(0xc7870001), SPH_C32(0xec60ee80), SPH_C32(0x12130000),
+	  SPH_C32(0x228b6637), SPH_C32(0xd7d636b6), SPH_C32(0xd407bd01),
+	  SPH_C32(0x8440edd4) },
+	{ SPH_C32(0x42e00000), SPH_C32(0x79860001), SPH_C32(0x1fd62d80),
+	  SPH_C32(0xc56a0000), SPH_C32(0x52f848bd), SPH_C32(0x15e7c4e0),
+	  SPH_C32(0x3e0dc2ed), SPH_C32(0x98dabd81), SPH_C32(0x1af40000),
+	  SPH_C32(0x2bd00001), SPH_C32(0x8a52ec00), SPH_C32(0x87e00000),
+	  SPH_C32(0x7f224e35), SPH_C32(0x9f220a0a), SPH_C32(0x325d1f2c),
+	  SPH_C32(0x0a275a2e) },
+	{ SPH_C32(0xd9ae0000), SPH_C32(0x8ec00001), SPH_C32(0x75803380),
+	  SPH_C32(0xaeb70000), SPH_C32(0xd5b72f80), SPH_C32(0x3b9bd3b1),
+	  SPH_C32(0x16b65b07), SPH_C32(0xda9a94a3), SPH_C32(0xb08d0000),
+	  SPH_C32(0x42800001), SPH_C32(0x1429e180), SPH_C32(0x5b310000),
+	  SPH_C32(0xa98b722d), SPH_C32(0x92f0de78), SPH_C32(0x6631ef9d),
+	  SPH_C32(0x3bb81f15) },
+	{ SPH_C32(0x15ba0000), SPH_C32(0x2ba30001), SPH_C32(0x2f393400),
+	  SPH_C32(0x95e70000), SPH_C32(0x9e673c7f), SPH_C32(0xbc00e7a9),
+	  SPH_C32(0x7ff513c6), SPH_C32(0x10c0135d), SPH_C32(0x31130000),
+	  SPH_C32(0xaed70001), SPH_C32(0x721be300), SPH_C32(0xcec20000),
+	  SPH_C32(0xf4225a2f), SPH_C32(0xda04e2c4), SPH_C32(0x806b4db0),
+	  SPH_C32(0xb5dfa8ef) },
+	{ SPH_C32(0x58300000), SPH_C32(0x62970001), SPH_C32(0x13b23100),
+	  SPH_C32(0x3b440000), SPH_C32(0x881e0782), SPH_C32(0x736fef0d),
+	  SPH_C32(0xf0ecf92a), SPH_C32(0x54fd2359), SPH_C32(0xfd070000),
+	  SPH_C32(0x0bb40001), SPH_C32(0x28a2e480), SPH_C32(0xf5920000),
+	  SPH_C32(0xbff249d0), SPH_C32(0x5d9fd6dc), SPH_C32(0xe9280571),
+	  SPH_C32(0x7f852f11) },
+	{ SPH_C32(0x94240000), SPH_C32(0xc7f40001), SPH_C32(0x490b3680),
+	  SPH_C32(0x00140000), SPH_C32(0xc3ce147d), SPH_C32(0xf4f4db15),
+	  SPH_C32(0x99afb1eb), SPH_C32(0x9ea7a4a7), SPH_C32(0x7c990000),
+	  SPH_C32(0xe7e30001), SPH_C32(0x4e90e600), SPH_C32(0x60610000),
+	  SPH_C32(0xe25b61d2), SPH_C32(0x156bea60), SPH_C32(0x0f72a75c),
+	  SPH_C32(0xf1e298eb) },
+	{ SPH_C32(0xa18d0000), SPH_C32(0x9c3c0001), SPH_C32(0xdcba3800),
+	  SPH_C32(0x3e120000), SPH_C32(0xa48907f9), SPH_C32(0x45725a95),
+	  SPH_C32(0xe63afb65), SPH_C32(0xb9f51f08), SPH_C32(0xb2220000),
+	  SPH_C32(0xf5a80001), SPH_C32(0xae35e280), SPH_C32(0x0da90000),
+	  SPH_C32(0x130637fe), SPH_C32(0x12b8181f), SPH_C32(0xcf6dfb07),
+	  SPH_C32(0xcf4ef56e) },
+	{ SPH_C32(0x6d990000), SPH_C32(0x395f0001), SPH_C32(0x86033f80),
+	  SPH_C32(0x05420000), SPH_C32(0xef591406), SPH_C32(0xc2e96e8d),
+	  SPH_C32(0x8f79b3a4), SPH_C32(0x73af98f6), SPH_C32(0x33bc0000),
+	  SPH_C32(0x19ff0001), SPH_C32(0xc807e000), SPH_C32(0x985a0000),
+	  SPH_C32(0x4eaf1ffc), SPH_C32(0x5a4c24a3), SPH_C32(0x2937592a),
+	  SPH_C32(0x41294294) },
+	{ SPH_C32(0x20130000), SPH_C32(0x706b0001), SPH_C32(0xba883a80),
+	  SPH_C32(0xabe10000), SPH_C32(0xf9202ffb), SPH_C32(0x0d866629),
+	  SPH_C32(0x00605948), SPH_C32(0x3792a8f2), SPH_C32(0xffa80000),
+	  SPH_C32(0xbc9c0001), SPH_C32(0x92bee780), SPH_C32(0xa30a0000),
+	  SPH_C32(0x057f0c03), SPH_C32(0xddd710bb), SPH_C32(0x407411eb),
+	  SPH_C32(0x8b73c56a) },
+	{ SPH_C32(0xec070000), SPH_C32(0xd5080001), SPH_C32(0xe0313d00),
+	  SPH_C32(0x90b10000), SPH_C32(0xb2f03c04), SPH_C32(0x8a1d5231),
+	  SPH_C32(0x69231189), SPH_C32(0xfdc82f0c), SPH_C32(0x7e360000),
+	  SPH_C32(0x50cb0001), SPH_C32(0xf48ce500), SPH_C32(0x36f90000),
+	  SPH_C32(0x58d62401), SPH_C32(0x95232c07), SPH_C32(0xa62eb3c6),
+	  SPH_C32(0x05147290) },
+	{ SPH_C32(0xdb010000), SPH_C32(0x39e80001), SPH_C32(0xcf9c3080),
+	  SPH_C32(0xf82f0000), SPH_C32(0x6f3a6a53), SPH_C32(0xbbd315d6),
+	  SPH_C32(0xbfea4f9d), SPH_C32(0x2e6c7ed8), SPH_C32(0xca010000),
+	  SPH_C32(0xe7540001), SPH_C32(0x070fe900), SPH_C32(0x9d0c0000),
+	  SPH_C32(0x62381f87), SPH_C32(0x6c51913b), SPH_C32(0x3fe15b65),
+	  SPH_C32(0xac217ec5) },
+	{ SPH_C32(0x17150000), SPH_C32(0x9c8b0001), SPH_C32(0x95253700),
+	  SPH_C32(0xc37f0000), SPH_C32(0x24ea79ac), SPH_C32(0x3c4821ce),
+	  SPH_C32(0xd6a9075c), SPH_C32(0xe436f926), SPH_C32(0x4b9f0000),
+	  SPH_C32(0x0b030001), SPH_C32(0x613deb80), SPH_C32(0x08ff0000),
+	  SPH_C32(0x3f913785), SPH_C32(0x24a5ad87), SPH_C32(0xd9bbf948),
+	  SPH_C32(0x2246c93f) },
+	{ SPH_C32(0x5a9f0000), SPH_C32(0xd5bf0001), SPH_C32(0xa9ae3200),
+	  SPH_C32(0x6ddc0000), SPH_C32(0x32934251), SPH_C32(0xf327296a),
+	  SPH_C32(0x59b0edb0), SPH_C32(0xa00bc922), SPH_C32(0x878b0000),
+	  SPH_C32(0xae600001), SPH_C32(0x3b84ec00), SPH_C32(0x33af0000),
+	  SPH_C32(0x7441247a), SPH_C32(0xa33e999f), SPH_C32(0xb0f8b189),
+	  SPH_C32(0xe81c4ec1) },
+	{ SPH_C32(0x968b0000), SPH_C32(0x70dc0001), SPH_C32(0xf3173580),
+	  SPH_C32(0x568c0000), SPH_C32(0x794351ae), SPH_C32(0x74bc1d72),
+	  SPH_C32(0x30f3a571), SPH_C32(0x6a514edc), SPH_C32(0x06150000),
+	  SPH_C32(0x42370001), SPH_C32(0x5db6ee80), SPH_C32(0xa65c0000),
+	  SPH_C32(0x29e80c78), SPH_C32(0xebcaa523), SPH_C32(0x56a213a4),
+	  SPH_C32(0x667bf93b) },
+	{ SPH_C32(0xa3220000), SPH_C32(0x2b140001), SPH_C32(0x66a63b00),
+	  SPH_C32(0x688a0000), SPH_C32(0x1e04422a), SPH_C32(0xc53a9cf2),
+	  SPH_C32(0x4f66efff), SPH_C32(0x4d03f573), SPH_C32(0xc8ae0000),
+	  SPH_C32(0x507c0001), SPH_C32(0xbd13ea00), SPH_C32(0xcb940000),
+	  SPH_C32(0xd8b55a54), SPH_C32(0xec19575c), SPH_C32(0x96bd4fff),
+	  SPH_C32(0x58d794be) },
+	{ SPH_C32(0x6f360000), SPH_C32(0x8e770001), SPH_C32(0x3c1f3c80),
+	  SPH_C32(0x53da0000), SPH_C32(0x55d451d5), SPH_C32(0x42a1a8ea),
+	  SPH_C32(0x2625a73e), SPH_C32(0x8759728d), SPH_C32(0x49300000),
+	  SPH_C32(0xbc2b0001), SPH_C32(0xdb21e880), SPH_C32(0x5e670000),
+	  SPH_C32(0x851c7256), SPH_C32(0xa4ed6be0), SPH_C32(0x70e7edd2),
+	  SPH_C32(0xd6b02344) },
+	{ SPH_C32(0x22bc0000), SPH_C32(0xc7430001), SPH_C32(0x00943980),
+	  SPH_C32(0xfd790000), SPH_C32(0x43ad6a28), SPH_C32(0x8dcea04e),
+	  SPH_C32(0xa93c4dd2), SPH_C32(0xc3644289), SPH_C32(0x85240000),
+	  SPH_C32(0x19480001), SPH_C32(0x8198ef00), SPH_C32(0x65370000),
+	  SPH_C32(0xcecc61a9), SPH_C32(0x23765ff8), SPH_C32(0x19a4a513),
+	  SPH_C32(0x1ceaa4ba) },
+	{ SPH_C32(0xeea80000), SPH_C32(0x62200001), SPH_C32(0x5a2d3e00),
+	  SPH_C32(0xc6290000), SPH_C32(0x087d79d7), SPH_C32(0x0a559456),
+	  SPH_C32(0xc07f0513), SPH_C32(0x093ec577), SPH_C32(0x04ba0000),
+	  SPH_C32(0xf51f0001), SPH_C32(0xe7aaed80), SPH_C32(0xf0c40000),
+	  SPH_C32(0x936549ab), SPH_C32(0x6b826344), SPH_C32(0xfffe073e),
+	  SPH_C32(0x928d1340) },
+	{ SPH_C32(0x6ba80000), SPH_C32(0x4ba90001), SPH_C32(0x5d832180),
+	  SPH_C32(0xdad00000), SPH_C32(0x63751974), SPH_C32(0xd089ea49),
+	  SPH_C32(0x256784eb), SPH_C32(0xd3d4a53b), SPH_C32(0x1cc50000),
+	  SPH_C32(0x59260001), SPH_C32(0x51d2f200), SPH_C32(0x58720000),
+	  SPH_C32(0xf30e4347), SPH_C32(0x8d428ece), SPH_C32(0x98432863),
+	  SPH_C32(0xaa5c67e3) },
+	{ SPH_C32(0xa7bc0000), SPH_C32(0xeeca0001), SPH_C32(0x073a2600),
+	  SPH_C32(0xe1800000), SPH_C32(0x28a50a8b), SPH_C32(0x5712de51),
+	  SPH_C32(0x4c24cc2a), SPH_C32(0x198e22c5), SPH_C32(0x9d5b0000),
+	  SPH_C32(0xb5710001), SPH_C32(0x37e0f080), SPH_C32(0xcd810000),
+	  SPH_C32(0xaea76b45), SPH_C32(0xc5b6b272), SPH_C32(0x7e198a4e),
+	  SPH_C32(0x243bd019) },
+	{ SPH_C32(0xea360000), SPH_C32(0xa7fe0001), SPH_C32(0x3bb12300),
+	  SPH_C32(0x4f230000), SPH_C32(0x3edc3176), SPH_C32(0x987dd6f5),
+	  SPH_C32(0xc33d26c6), SPH_C32(0x5db312c1), SPH_C32(0x514f0000),
+	  SPH_C32(0x10120001), SPH_C32(0x6d59f700), SPH_C32(0xf6d10000),
+	  SPH_C32(0xe57778ba), SPH_C32(0x422d866a), SPH_C32(0x175ac28f),
+	  SPH_C32(0xee6157e7) },
+	{ SPH_C32(0x26220000), SPH_C32(0x029d0001), SPH_C32(0x61082480),
+	  SPH_C32(0x74730000), SPH_C32(0x750c2289), SPH_C32(0x1fe6e2ed),
+	  SPH_C32(0xaa7e6e07), SPH_C32(0x97e9953f), SPH_C32(0xd0d10000),
+	  SPH_C32(0xfc450001), SPH_C32(0x0b6bf580), SPH_C32(0x63220000),
+	  SPH_C32(0xb8de50b8), SPH_C32(0x0ad9bad6), SPH_C32(0xf10060a2),
+	  SPH_C32(0x6006e01d) },
+	{ SPH_C32(0x138b0000), SPH_C32(0x59550001), SPH_C32(0xf4b92a00),
+	  SPH_C32(0x4a750000), SPH_C32(0x124b310d), SPH_C32(0xae60636d),
+	  SPH_C32(0xd5eb2489), SPH_C32(0xb0bb2e90), SPH_C32(0x1e6a0000),
+	  SPH_C32(0xee0e0001), SPH_C32(0xebcef100), SPH_C32(0x0eea0000),
+	  SPH_C32(0x49830694), SPH_C32(0x0d0a48a9), SPH_C32(0x311f3cf9),
+	  SPH_C32(0x5eaa8d98) },
+	{ SPH_C32(0xdf9f0000), SPH_C32(0xfc360001), SPH_C32(0xae002d80),
+	  SPH_C32(0x71250000), SPH_C32(0x599b22f2), SPH_C32(0x29fb5775),
+	  SPH_C32(0xbca86c48), SPH_C32(0x7ae1a96e), SPH_C32(0x9ff40000),
+	  SPH_C32(0x02590001), SPH_C32(0x8dfcf380), SPH_C32(0x9b190000),
+	  SPH_C32(0x142a2e96), SPH_C32(0x45fe7415), SPH_C32(0xd7459ed4),
+	  SPH_C32(0xd0cd3a62) },
+	{ SPH_C32(0x92150000), SPH_C32(0xb5020001), SPH_C32(0x928b2880),
+	  SPH_C32(0xdf860000), SPH_C32(0x4fe2190f), SPH_C32(0xe6945fd1),
+	  SPH_C32(0x33b186a4), SPH_C32(0x3edc996a), SPH_C32(0x53e00000),
+	  SPH_C32(0xa73a0001), SPH_C32(0xd745f400), SPH_C32(0xa0490000),
+	  SPH_C32(0x5ffa3d69), SPH_C32(0xc265400d), SPH_C32(0xbe06d615),
+	  SPH_C32(0x1a97bd9c) },
+	{ SPH_C32(0x5e010000), SPH_C32(0x10610001), SPH_C32(0xc8322f00),
+	  SPH_C32(0xe4d60000), SPH_C32(0x04320af0), SPH_C32(0x610f6bc9),
+	  SPH_C32(0x5af2ce65), SPH_C32(0xf4861e94), SPH_C32(0xd27e0000),
+	  SPH_C32(0x4b6d0001), SPH_C32(0xb177f680), SPH_C32(0x35ba0000),
+	  SPH_C32(0x0253156b), SPH_C32(0x8a917cb1), SPH_C32(0x585c7438),
+	  SPH_C32(0x94f00a66) },
+	{ SPH_C32(0x69070000), SPH_C32(0xfc810001), SPH_C32(0xe79f2280),
+	  SPH_C32(0x8c480000), SPH_C32(0xd9f85ca7), SPH_C32(0x50c12c2e),
+	  SPH_C32(0x8c3b9071), SPH_C32(0x27224f40), SPH_C32(0x66490000),
+	  SPH_C32(0xfcf20001), SPH_C32(0x42f4fa80), SPH_C32(0x9e4f0000),
+	  SPH_C32(0x38bd2eed), SPH_C32(0x73e3c18d), SPH_C32(0xc1939c9b),
+	  SPH_C32(0x3dc50633) },
+	{ SPH_C32(0xa5130000), SPH_C32(0x59e20001), SPH_C32(0xbd262500),
+	  SPH_C32(0xb7180000), SPH_C32(0x92284f58), SPH_C32(0xd75a1836),
+	  SPH_C32(0xe578d8b0), SPH_C32(0xed78c8be), SPH_C32(0xe7d70000),
+	  SPH_C32(0x10a50001), SPH_C32(0x24c6f800), SPH_C32(0x0bbc0000),
+	  SPH_C32(0x651406ef), SPH_C32(0x3b17fd31), SPH_C32(0x27c93eb6),
+	  SPH_C32(0xb3a2b1c9) },
+	{ SPH_C32(0xe8990000), SPH_C32(0x10d60001), SPH_C32(0x81ad2000),
+	  SPH_C32(0x19bb0000), SPH_C32(0x845174a5), SPH_C32(0x18351092),
+	  SPH_C32(0x6a61325c), SPH_C32(0xa945f8ba), SPH_C32(0x2bc30000),
+	  SPH_C32(0xb5c60001), SPH_C32(0x7e7fff80), SPH_C32(0x30ec0000),
+	  SPH_C32(0x2ec41510), SPH_C32(0xbc8cc929), SPH_C32(0x4e8a7677),
+	  SPH_C32(0x79f83637) },
+	{ SPH_C32(0x248d0000), SPH_C32(0xb5b50001), SPH_C32(0xdb142780),
+	  SPH_C32(0x22eb0000), SPH_C32(0xcf81675a), SPH_C32(0x9fae248a),
+	  SPH_C32(0x03227a9d), SPH_C32(0x631f7f44), SPH_C32(0xaa5d0000),
+	  SPH_C32(0x59910001), SPH_C32(0x184dfd00), SPH_C32(0xa51f0000),
+	  SPH_C32(0x736d3d12), SPH_C32(0xf478f595), SPH_C32(0xa8d0d45a),
+	  SPH_C32(0xf79f81cd) },
+	{ SPH_C32(0x11240000), SPH_C32(0xee7d0001), SPH_C32(0x4ea52900),
+	  SPH_C32(0x1ced0000), SPH_C32(0xa8c674de), SPH_C32(0x2e28a50a),
+	  SPH_C32(0x7cb73013), SPH_C32(0x444dc4eb), SPH_C32(0x64e60000),
+	  SPH_C32(0x4bda0001), SPH_C32(0xf8e8f980), SPH_C32(0xc8d70000),
+	  SPH_C32(0x82306b3e), SPH_C32(0xf3ab07ea), SPH_C32(0x68cf8801),
+	  SPH_C32(0xc933ec48) },
+	{ SPH_C32(0xdd300000), SPH_C32(0x4b1e0001), SPH_C32(0x141c2e80),
+	  SPH_C32(0x27bd0000), SPH_C32(0xe3166721), SPH_C32(0xa9b39112),
+	  SPH_C32(0x15f478d2), SPH_C32(0x8e174315), SPH_C32(0xe5780000),
+	  SPH_C32(0xa78d0001), SPH_C32(0x9edafb00), SPH_C32(0x5d240000),
+	  SPH_C32(0xdf99433c), SPH_C32(0xbb5f3b56), SPH_C32(0x8e952a2c),
+	  SPH_C32(0x47545bb2) },
+	{ SPH_C32(0x90ba0000), SPH_C32(0x022a0001), SPH_C32(0x28972b80),
+	  SPH_C32(0x891e0000), SPH_C32(0xf56f5cdc), SPH_C32(0x66dc99b6),
+	  SPH_C32(0x9aed923e), SPH_C32(0xca2a7311), SPH_C32(0x296c0000),
+	  SPH_C32(0x02ee0001), SPH_C32(0xc463fc80), SPH_C32(0x66740000),
+	  SPH_C32(0x944950c3), SPH_C32(0x3cc40f4e), SPH_C32(0xe7d662ed),
+	  SPH_C32(0x8d0edc4c) },
+	{ SPH_C32(0x5cae0000), SPH_C32(0xa7490001), SPH_C32(0x722e2c00),
+	  SPH_C32(0xb24e0000), SPH_C32(0xbebf4f23), SPH_C32(0xe147adae),
+	  SPH_C32(0xf3aedaff), SPH_C32(0x0070f4ef), SPH_C32(0xa8f20000),
+	  SPH_C32(0xeeb90001), SPH_C32(0xa251fe00), SPH_C32(0xf3870000),
+	  SPH_C32(0xc9e078c1), SPH_C32(0x743033f2), SPH_C32(0x018cc0c0),
+	  SPH_C32(0x03696bb6) },
+	{ SPH_C32(0xc7e00000), SPH_C32(0x500f0001), SPH_C32(0x18783200),
+	  SPH_C32(0xd9930000), SPH_C32(0x39f0281e), SPH_C32(0xcf3bbaff),
+	  SPH_C32(0xdb154315), SPH_C32(0x4230ddcd), SPH_C32(0x028b0000),
+	  SPH_C32(0x87e90001), SPH_C32(0x3c2af380), SPH_C32(0x2f560000),
+	  SPH_C32(0x1f4944d9), SPH_C32(0x79e2e780), SPH_C32(0x55e03071),
+	  SPH_C32(0x32f62e8d) },
+	{ SPH_C32(0x0bf40000), SPH_C32(0xf56c0001), SPH_C32(0x42c13580),
+	  SPH_C32(0xe2c30000), SPH_C32(0x72203be1), SPH_C32(0x48a08ee7),
+	  SPH_C32(0xb2560bd4), SPH_C32(0x886a5a33), SPH_C32(0x83150000),
+	  SPH_C32(0x6bbe0001), SPH_C32(0x5a18f100), SPH_C32(0xbaa50000),
+	  SPH_C32(0x42e06cdb), SPH_C32(0x3116db3c), SPH_C32(0xb3ba925c),
+	  SPH_C32(0xbc919977) },
+	{ SPH_C32(0x467e0000), SPH_C32(0xbc580001), SPH_C32(0x7e4a3080),
+	  SPH_C32(0x4c600000), SPH_C32(0x6459001c), SPH_C32(0x87cf8643),
+	  SPH_C32(0x3d4fe138), SPH_C32(0xcc576a37), SPH_C32(0x4f010000),
+	  SPH_C32(0xcedd0001), SPH_C32(0x00a1f680), SPH_C32(0x81f50000),
+	  SPH_C32(0x09307f24), SPH_C32(0xb68def24), SPH_C32(0xdaf9da9d),
+	  SPH_C32(0x76cb1e89) },
+	{ SPH_C32(0x8a6a0000), SPH_C32(0x193b0001), SPH_C32(0x24f33700),
+	  SPH_C32(0x77300000), SPH_C32(0x2f8913e3), SPH_C32(0x0054b25b),
+	  SPH_C32(0x540ca9f9), SPH_C32(0x060dedc9), SPH_C32(0xce9f0000),
+	  SPH_C32(0x228a0001), SPH_C32(0x6693f400), SPH_C32(0x14060000),
+	  SPH_C32(0x54995726), SPH_C32(0xfe79d398), SPH_C32(0x3ca378b0),
+	  SPH_C32(0xf8aca973) },
+	{ SPH_C32(0xbfc30000), SPH_C32(0x42f30001), SPH_C32(0xb1423980),
+	  SPH_C32(0x49360000), SPH_C32(0x48ce0067), SPH_C32(0xb1d233db),
+	  SPH_C32(0x2b99e377), SPH_C32(0x215f5666), SPH_C32(0x00240000),
+	  SPH_C32(0x30c10001), SPH_C32(0x8636f080), SPH_C32(0x79ce0000),
+	  SPH_C32(0xa5c4010a), SPH_C32(0xf9aa21e7), SPH_C32(0xfcbc24eb),
+	  SPH_C32(0xc600c4f6) },
+	{ SPH_C32(0x73d70000), SPH_C32(0xe7900001), SPH_C32(0xebfb3e00),
+	  SPH_C32(0x72660000), SPH_C32(0x031e1398), SPH_C32(0x364907c3),
+	  SPH_C32(0x42daabb6), SPH_C32(0xeb05d198), SPH_C32(0x81ba0000),
+	  SPH_C32(0xdc960001), SPH_C32(0xe004f200), SPH_C32(0xec3d0000),
+	  SPH_C32(0xf86d2908), SPH_C32(0xb15e1d5b), SPH_C32(0x1ae686c6),
+	  SPH_C32(0x4867730c) },
+	{ SPH_C32(0x3e5d0000), SPH_C32(0xaea40001), SPH_C32(0xd7703b00),
+	  SPH_C32(0xdcc50000), SPH_C32(0x15672865), SPH_C32(0xf9260f67),
+	  SPH_C32(0xcdc3415a), SPH_C32(0xaf38e19c), SPH_C32(0x4dae0000),
+	  SPH_C32(0x79f50001), SPH_C32(0xbabdf580), SPH_C32(0xd76d0000),
+	  SPH_C32(0xb3bd3af7), SPH_C32(0x36c52943), SPH_C32(0x73a5ce07),
+	  SPH_C32(0x823df4f2) },
+	{ SPH_C32(0xf2490000), SPH_C32(0x0bc70001), SPH_C32(0x8dc93c80),
+	  SPH_C32(0xe7950000), SPH_C32(0x5eb73b9a), SPH_C32(0x7ebd3b7f),
+	  SPH_C32(0xa480099b), SPH_C32(0x65626662), SPH_C32(0xcc300000),
+	  SPH_C32(0x95a20001), SPH_C32(0xdc8ff700), SPH_C32(0x429e0000),
+	  SPH_C32(0xee1412f5), SPH_C32(0x7e3115ff), SPH_C32(0x95ff6c2a),
+	  SPH_C32(0x0c5a4308) },
+	{ SPH_C32(0xc54f0000), SPH_C32(0xe7270001), SPH_C32(0xa2643100),
+	  SPH_C32(0x8f0b0000), SPH_C32(0x837d6dcd), SPH_C32(0x4f737c98),
+	  SPH_C32(0x7249578f), SPH_C32(0xb6c637b6), SPH_C32(0x78070000),
+	  SPH_C32(0x223d0001), SPH_C32(0x2f0cfb00), SPH_C32(0xe96b0000),
+	  SPH_C32(0xd4fa2973), SPH_C32(0x8743a8c3), SPH_C32(0x0c308489),
+	  SPH_C32(0xa56f4f5d) },
+	{ SPH_C32(0x095b0000), SPH_C32(0x42440001), SPH_C32(0xf8dd3680),
+	  SPH_C32(0xb45b0000), SPH_C32(0xc8ad7e32), SPH_C32(0xc8e84880),
+	  SPH_C32(0x1b0a1f4e), SPH_C32(0x7c9cb048), SPH_C32(0xf9990000),
+	  SPH_C32(0xce6a0001), SPH_C32(0x493ef980), SPH_C32(0x7c980000),
+	  SPH_C32(0x89530171), SPH_C32(0xcfb7947f), SPH_C32(0xea6a26a4),
+	  SPH_C32(0x2b08f8a7) },
+	{ SPH_C32(0x44d10000), SPH_C32(0x0b700001), SPH_C32(0xc4563380),
+	  SPH_C32(0x1af80000), SPH_C32(0xded445cf), SPH_C32(0x07874024),
+	  SPH_C32(0x9413f5a2), SPH_C32(0x38a1804c), SPH_C32(0x358d0000),
+	  SPH_C32(0x6b090001), SPH_C32(0x1387fe00), SPH_C32(0x47c80000),
+	  SPH_C32(0xc283128e), SPH_C32(0x482ca067), SPH_C32(0x83296e65),
+	  SPH_C32(0xe1527f59) },
+	{ SPH_C32(0x88c50000), SPH_C32(0xae130001), SPH_C32(0x9eef3400),
+	  SPH_C32(0x21a80000), SPH_C32(0x95045630), SPH_C32(0x801c743c),
+	  SPH_C32(0xfd50bd63), SPH_C32(0xf2fb07b2), SPH_C32(0xb4130000),
+	  SPH_C32(0x875e0001), SPH_C32(0x75b5fc80), SPH_C32(0xd23b0000),
+	  SPH_C32(0x9f2a3a8c), SPH_C32(0x00d89cdb), SPH_C32(0x6573cc48),
+	  SPH_C32(0x6f35c8a3) },
+	{ SPH_C32(0xbd6c0000), SPH_C32(0xf5db0001), SPH_C32(0x0b5e3a80),
+	  SPH_C32(0x1fae0000), SPH_C32(0xf24345b4), SPH_C32(0x319af5bc),
+	  SPH_C32(0x82c5f7ed), SPH_C32(0xd5a9bc1d), SPH_C32(0x7aa80000),
+	  SPH_C32(0x95150001), SPH_C32(0x9510f800), SPH_C32(0xbff30000),
+	  SPH_C32(0x6e776ca0), SPH_C32(0x070b6ea4), SPH_C32(0xa56c9013),
+	  SPH_C32(0x5199a526) },
+	{ SPH_C32(0x71780000), SPH_C32(0x50b80001), SPH_C32(0x51e73d00),
+	  SPH_C32(0x24fe0000), SPH_C32(0xb993564b), SPH_C32(0xb601c1a4),
+	  SPH_C32(0xeb86bf2c), SPH_C32(0x1ff33be3), SPH_C32(0xfb360000),
+	  SPH_C32(0x79420001), SPH_C32(0xf322fa80), SPH_C32(0x2a000000),
+	  SPH_C32(0x33de44a2), SPH_C32(0x4fff5218), SPH_C32(0x4336323e),
+	  SPH_C32(0xdffe12dc) },
+	{ SPH_C32(0x3cf20000), SPH_C32(0x198c0001), SPH_C32(0x6d6c3800),
+	  SPH_C32(0x8a5d0000), SPH_C32(0xafea6db6), SPH_C32(0x796ec900),
+	  SPH_C32(0x649f55c0), SPH_C32(0x5bce0be7), SPH_C32(0x37220000),
+	  SPH_C32(0xdc210001), SPH_C32(0xa99bfd00), SPH_C32(0x11500000),
+	  SPH_C32(0x780e575d), SPH_C32(0xc8646600), SPH_C32(0x2a757aff),
+	  SPH_C32(0x15a49522) },
+	{ SPH_C32(0xf0e60000), SPH_C32(0xbcef0001), SPH_C32(0x37d53f80),
+	  SPH_C32(0xb10d0000), SPH_C32(0xe43a7e49), SPH_C32(0xfef5fd18),
+	  SPH_C32(0x0ddc1d01), SPH_C32(0x91948c19), SPH_C32(0xb6bc0000),
+	  SPH_C32(0x30760001), SPH_C32(0xcfa9ff80), SPH_C32(0x84a30000),
+	  SPH_C32(0x25a77f5f), SPH_C32(0x80905abc), SPH_C32(0xcc2fd8d2),
+	  SPH_C32(0x9bc322d8) }
+};
+
+static const sph_u32 T512_40[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x58430000), SPH_C32(0x807e0000), SPH_C32(0x78330001),
+	  SPH_C32(0xc66b3800), SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd),
+	  SPH_C32(0xac73fe6f), SPH_C32(0x3a4479b1), SPH_C32(0x1d5a0000),
+	  SPH_C32(0x2b720000), SPH_C32(0x488d0000), SPH_C32(0xaf611800),
+	  SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0), SPH_C32(0x81a20429),
+	  SPH_C32(0x1e7536a6) },
+	{ SPH_C32(0x1d5a0000), SPH_C32(0x2b720000), SPH_C32(0x488d0000),
+	  SPH_C32(0xaf611800), SPH_C32(0x25cb2ec5), SPH_C32(0xc879bfd0),
+	  SPH_C32(0x81a20429), SPH_C32(0x1e7536a6), SPH_C32(0x45190000),
+	  SPH_C32(0xab0c0000), SPH_C32(0x30be0001), SPH_C32(0x690a2000),
+	  SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d), SPH_C32(0x2dd1fa46),
+	  SPH_C32(0x24314f17) },
+	{ SPH_C32(0x45190000), SPH_C32(0xab0c0000), SPH_C32(0x30be0001),
+	  SPH_C32(0x690a2000), SPH_C32(0xc2fc7219), SPH_C32(0xb1d4800d),
+	  SPH_C32(0x2dd1fa46), SPH_C32(0x24314f17), SPH_C32(0x58430000),
+	  SPH_C32(0x807e0000), SPH_C32(0x78330001), SPH_C32(0xc66b3800),
+	  SPH_C32(0xe7375cdc), SPH_C32(0x79ad3fdd), SPH_C32(0xac73fe6f),
+	  SPH_C32(0x3a4479b1) },
+	{ SPH_C32(0xa53b0000), SPH_C32(0x14260000), SPH_C32(0x4e30001e),
+	  SPH_C32(0x7cae0000), SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d),
+	  SPH_C32(0xf73168d8), SPH_C32(0x0b1b4946), SPH_C32(0x07ed0000),
+	  SPH_C32(0xb2500000), SPH_C32(0x8774000a), SPH_C32(0x970d0000),
+	  SPH_C32(0x437223ae), SPH_C32(0x48c76ea4), SPH_C32(0xf4786222),
+	  SPH_C32(0x9075b1ce) },
+	{ SPH_C32(0xfd780000), SPH_C32(0x94580000), SPH_C32(0x3603001f),
+	  SPH_C32(0xbac53800), SPH_C32(0x68a95109), SPH_C32(0x017295e0),
+	  SPH_C32(0x5b4296b7), SPH_C32(0x315f30f7), SPH_C32(0x1ab70000),
+	  SPH_C32(0x99220000), SPH_C32(0xcff9000a), SPH_C32(0x386c1800),
+	  SPH_C32(0x66b90d6b), SPH_C32(0x80bed174), SPH_C32(0x75da660b),
+	  SPH_C32(0x8e008768) },
+	{ SPH_C32(0xb8610000), SPH_C32(0x3f540000), SPH_C32(0x06bd001e),
+	  SPH_C32(0xd3cf1800), SPH_C32(0xaa552310), SPH_C32(0xb0a615ed),
+	  SPH_C32(0x76936cf1), SPH_C32(0x156e7fe0), SPH_C32(0x42f40000),
+	  SPH_C32(0x195c0000), SPH_C32(0xb7ca000b), SPH_C32(0xfe072000),
+	  SPH_C32(0x818e51b7), SPH_C32(0xf913eea9), SPH_C32(0xd9a99864),
+	  SPH_C32(0xb444fed9) },
+	{ SPH_C32(0xe0220000), SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f),
+	  SPH_C32(0x15a42000), SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30),
+	  SPH_C32(0xdae0929e), SPH_C32(0x2f2a0651), SPH_C32(0x5fae0000),
+	  SPH_C32(0x322e0000), SPH_C32(0xff47000b), SPH_C32(0x51663800),
+	  SPH_C32(0xa4457f72), SPH_C32(0x316a5179), SPH_C32(0x580b9c4d),
+	  SPH_C32(0xaa31c87f) },
+	{ SPH_C32(0x07ed0000), SPH_C32(0xb2500000), SPH_C32(0x8774000a),
+	  SPH_C32(0x970d0000), SPH_C32(0x437223ae), SPH_C32(0x48c76ea4),
+	  SPH_C32(0xf4786222), SPH_C32(0x9075b1ce), SPH_C32(0xa2d60000),
+	  SPH_C32(0xa6760000), SPH_C32(0xc9440014), SPH_C32(0xeba30000),
+	  SPH_C32(0xccec2e7b), SPH_C32(0x3018c499), SPH_C32(0x03490afa),
+	  SPH_C32(0x9b6ef888) },
+	{ SPH_C32(0x5fae0000), SPH_C32(0x322e0000), SPH_C32(0xff47000b),
+	  SPH_C32(0x51663800), SPH_C32(0xa4457f72), SPH_C32(0x316a5179),
+	  SPH_C32(0x580b9c4d), SPH_C32(0xaa31c87f), SPH_C32(0xbf8c0000),
+	  SPH_C32(0x8d040000), SPH_C32(0x81c90014), SPH_C32(0x44c21800),
+	  SPH_C32(0xe92700be), SPH_C32(0xf8617b49), SPH_C32(0x82eb0ed3),
+	  SPH_C32(0x851bce2e) },
+	{ SPH_C32(0x1ab70000), SPH_C32(0x99220000), SPH_C32(0xcff9000a),
+	  SPH_C32(0x386c1800), SPH_C32(0x66b90d6b), SPH_C32(0x80bed174),
+	  SPH_C32(0x75da660b), SPH_C32(0x8e008768), SPH_C32(0xe7cf0000),
+	  SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015), SPH_C32(0x82a92000),
+	  SPH_C32(0x0e105c62), SPH_C32(0x81cc4494), SPH_C32(0x2e98f0bc),
+	  SPH_C32(0xbf5fb79f) },
+	{ SPH_C32(0x42f40000), SPH_C32(0x195c0000), SPH_C32(0xb7ca000b),
+	  SPH_C32(0xfe072000), SPH_C32(0x818e51b7), SPH_C32(0xf913eea9),
+	  SPH_C32(0xd9a99864), SPH_C32(0xb444fed9), SPH_C32(0xfa950000),
+	  SPH_C32(0x26080000), SPH_C32(0xb1770015), SPH_C32(0x2dc83800),
+	  SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44), SPH_C32(0xaf3af495),
+	  SPH_C32(0xa12a8139) },
+	{ SPH_C32(0xa2d60000), SPH_C32(0xa6760000), SPH_C32(0xc9440014),
+	  SPH_C32(0xeba30000), SPH_C32(0xccec2e7b), SPH_C32(0x3018c499),
+	  SPH_C32(0x03490afa), SPH_C32(0x9b6ef888), SPH_C32(0xa53b0000),
+	  SPH_C32(0x14260000), SPH_C32(0x4e30001e), SPH_C32(0x7cae0000),
+	  SPH_C32(0x8f9e0dd5), SPH_C32(0x78dfaa3d), SPH_C32(0xf73168d8),
+	  SPH_C32(0x0b1b4946) },
+	{ SPH_C32(0xfa950000), SPH_C32(0x26080000), SPH_C32(0xb1770015),
+	  SPH_C32(0x2dc83800), SPH_C32(0x2bdb72a7), SPH_C32(0x49b5fb44),
+	  SPH_C32(0xaf3af495), SPH_C32(0xa12a8139), SPH_C32(0xb8610000),
+	  SPH_C32(0x3f540000), SPH_C32(0x06bd001e), SPH_C32(0xd3cf1800),
+	  SPH_C32(0xaa552310), SPH_C32(0xb0a615ed), SPH_C32(0x76936cf1),
+	  SPH_C32(0x156e7fe0) },
+	{ SPH_C32(0xbf8c0000), SPH_C32(0x8d040000), SPH_C32(0x81c90014),
+	  SPH_C32(0x44c21800), SPH_C32(0xe92700be), SPH_C32(0xf8617b49),
+	  SPH_C32(0x82eb0ed3), SPH_C32(0x851bce2e), SPH_C32(0xe0220000),
+	  SPH_C32(0xbf2a0000), SPH_C32(0x7e8e001f), SPH_C32(0x15a42000),
+	  SPH_C32(0x4d627fcc), SPH_C32(0xc90b2a30), SPH_C32(0xdae0929e),
+	  SPH_C32(0x2f2a0651) },
+	{ SPH_C32(0xe7cf0000), SPH_C32(0x0d7a0000), SPH_C32(0xf9fa0015),
+	  SPH_C32(0x82a92000), SPH_C32(0x0e105c62), SPH_C32(0x81cc4494),
+	  SPH_C32(0x2e98f0bc), SPH_C32(0xbf5fb79f), SPH_C32(0xfd780000),
+	  SPH_C32(0x94580000), SPH_C32(0x3603001f), SPH_C32(0xbac53800),
+	  SPH_C32(0x68a95109), SPH_C32(0x017295e0), SPH_C32(0x5b4296b7),
+	  SPH_C32(0x315f30f7) },
+	{ SPH_C32(0x88980000), SPH_C32(0x1f940000), SPH_C32(0x7fcf002e),
+	  SPH_C32(0xfb4e0000), SPH_C32(0xf158079a), SPH_C32(0x61ae9167),
+	  SPH_C32(0xa895706c), SPH_C32(0xe6107494), SPH_C32(0x0bc20000),
+	  SPH_C32(0xdb630000), SPH_C32(0x7e88000c), SPH_C32(0x15860000),
+	  SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43), SPH_C32(0xf460449e),
+	  SPH_C32(0xd8b61463) },
+	{ SPH_C32(0xd0db0000), SPH_C32(0x9fea0000), SPH_C32(0x07fc002f),
+	  SPH_C32(0x3d253800), SPH_C32(0x166f5b46), SPH_C32(0x1803aeba),
+	  SPH_C32(0x04e68e03), SPH_C32(0xdc540d25), SPH_C32(0x16980000),
+	  SPH_C32(0xf0110000), SPH_C32(0x3605000c), SPH_C32(0xbae71800),
+	  SPH_C32(0xb4366636), SPH_C32(0xbdf80493), SPH_C32(0x75c240b7),
+	  SPH_C32(0xc6c322c5) },
+	{ SPH_C32(0x95c20000), SPH_C32(0x34e60000), SPH_C32(0x3742002e),
+	  SPH_C32(0x542f1800), SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7),
+	  SPH_C32(0x29377445), SPH_C32(0xf8654232), SPH_C32(0x4edb0000),
+	  SPH_C32(0x706f0000), SPH_C32(0x4e36000d), SPH_C32(0x7c8c2000),
+	  SPH_C32(0x53013aea), SPH_C32(0xc4553b4e), SPH_C32(0xd9b1bed8),
+	  SPH_C32(0xfc875b74) },
+	{ SPH_C32(0xcd810000), SPH_C32(0xb4980000), SPH_C32(0x4f71002f),
+	  SPH_C32(0x92442000), SPH_C32(0x33a47583), SPH_C32(0xd07a116a),
+	  SPH_C32(0x85448a2a), SPH_C32(0xc2213b83), SPH_C32(0x53810000),
+	  SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d), SPH_C32(0xd3ed3800),
+	  SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e), SPH_C32(0x5813baf1),
+	  SPH_C32(0xe2f26dd2) },
+	{ SPH_C32(0x2da30000), SPH_C32(0x0bb20000), SPH_C32(0x31ff0030),
+	  SPH_C32(0x87e00000), SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a),
+	  SPH_C32(0x5fa418b4), SPH_C32(0xed0b3dd2), SPH_C32(0x0c2f0000),
+	  SPH_C32(0x69330000), SPH_C32(0xf9fc0006), SPH_C32(0x828b0000),
+	  SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7), SPH_C32(0x001826bc),
+	  SPH_C32(0x48c3a5ad) },
+	{ SPH_C32(0x75e00000), SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031),
+	  SPH_C32(0x418b3800), SPH_C32(0x99f15693), SPH_C32(0x60dc0487),
+	  SPH_C32(0xf3d7e6db), SPH_C32(0xd74f4463), SPH_C32(0x11750000),
+	  SPH_C32(0x42410000), SPH_C32(0xb1710006), SPH_C32(0x2dea1800),
+	  SPH_C32(0xf7444598), SPH_C32(0xf53f6a37), SPH_C32(0x81ba2295),
+	  SPH_C32(0x56b6930b) },
+	{ SPH_C32(0x30f90000), SPH_C32(0x20c00000), SPH_C32(0x79720030),
+	  SPH_C32(0x28811800), SPH_C32(0x5b0d248a), SPH_C32(0xd108848a),
+	  SPH_C32(0xde061c9d), SPH_C32(0xf37e0b74), SPH_C32(0x49360000),
+	  SPH_C32(0xc23f0000), SPH_C32(0xc9420007), SPH_C32(0xeb812000),
+	  SPH_C32(0x10731944), SPH_C32(0x8c9255ea), SPH_C32(0x2dc9dcfa),
+	  SPH_C32(0x6cf2eaba) },
+	{ SPH_C32(0x68ba0000), SPH_C32(0xa0be0000), SPH_C32(0x01410031),
+	  SPH_C32(0xeeea2000), SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57),
+	  SPH_C32(0x7275e2f2), SPH_C32(0xc93a72c5), SPH_C32(0x546c0000),
+	  SPH_C32(0xe94d0000), SPH_C32(0x81cf0007), SPH_C32(0x44e03800),
+	  SPH_C32(0x35b83781), SPH_C32(0x44ebea3a), SPH_C32(0xac6bd8d3),
+	  SPH_C32(0x7287dc1c) },
+	{ SPH_C32(0x8f750000), SPH_C32(0xadc40000), SPH_C32(0xf8bb0024),
+	  SPH_C32(0x6c430000), SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3),
+	  SPH_C32(0x5ced124e), SPH_C32(0x7665c55a), SPH_C32(0xa9140000),
+	  SPH_C32(0x7d150000), SPH_C32(0xb7cc0018), SPH_C32(0xfe250000),
+	  SPH_C32(0x5d116688), SPH_C32(0x45997fda), SPH_C32(0xf7294e64),
+	  SPH_C32(0x43d8eceb) },
+	{ SPH_C32(0xd7360000), SPH_C32(0x2dba0000), SPH_C32(0x80880025),
+	  SPH_C32(0xaa283800), SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e),
+	  SPH_C32(0xf09eec21), SPH_C32(0x4c21bceb), SPH_C32(0xb44e0000),
+	  SPH_C32(0x56670000), SPH_C32(0xff410018), SPH_C32(0x51441800),
+	  SPH_C32(0x78da484d), SPH_C32(0x8de0c00a), SPH_C32(0x768b4a4d),
+	  SPH_C32(0x5dadda4d) },
+	{ SPH_C32(0x922f0000), SPH_C32(0x86b60000), SPH_C32(0xb0360024),
+	  SPH_C32(0xc3221800), SPH_C32(0x97e10af1), SPH_C32(0xe1104013),
+	  SPH_C32(0xdd4f1667), SPH_C32(0x6810f3fc), SPH_C32(0xec0d0000),
+	  SPH_C32(0xd6190000), SPH_C32(0x87720019), SPH_C32(0x972f2000),
+	  SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7), SPH_C32(0xdaf8b422),
+	  SPH_C32(0x67e9a3fc) },
+	{ SPH_C32(0xca6c0000), SPH_C32(0x06c80000), SPH_C32(0xc8050025),
+	  SPH_C32(0x05492000), SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce),
+	  SPH_C32(0x713ce808), SPH_C32(0x52548a4d), SPH_C32(0xf1570000),
+	  SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019), SPH_C32(0x384e3800),
+	  SPH_C32(0xba263a54), SPH_C32(0x3c344007), SPH_C32(0x5b5ab00b),
+	  SPH_C32(0x799c955a) },
+	{ SPH_C32(0x2a4e0000), SPH_C32(0xb9e20000), SPH_C32(0xb68b003a),
+	  SPH_C32(0x10ed0000), SPH_C32(0x3db429e1), SPH_C32(0x51b655fe),
+	  SPH_C32(0xabdc7a96), SPH_C32(0x7d7e8c1c), SPH_C32(0xaef90000),
+	  SPH_C32(0xcf450000), SPH_C32(0x30b80012), SPH_C32(0x69280000),
+	  SPH_C32(0x1e634526), SPH_C32(0x0d5e117e), SPH_C32(0x03512c46),
+	  SPH_C32(0xd3ad5d25) },
+	{ SPH_C32(0x720d0000), SPH_C32(0x399c0000), SPH_C32(0xceb8003b),
+	  SPH_C32(0xd6863800), SPH_C32(0xda83753d), SPH_C32(0x281b6a23),
+	  SPH_C32(0x07af84f9), SPH_C32(0x473af5ad), SPH_C32(0xb3a30000),
+	  SPH_C32(0xe4370000), SPH_C32(0x78350012), SPH_C32(0xc6491800),
+	  SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae), SPH_C32(0x82f3286f),
+	  SPH_C32(0xcdd86b83) },
+	{ SPH_C32(0x37140000), SPH_C32(0x92900000), SPH_C32(0xfe06003a),
+	  SPH_C32(0xbf8c1800), SPH_C32(0x187f0724), SPH_C32(0x99cfea2e),
+	  SPH_C32(0x2a7e7ebf), SPH_C32(0x630bbaba), SPH_C32(0xebe00000),
+	  SPH_C32(0x64490000), SPH_C32(0x00060013), SPH_C32(0x00222000),
+	  SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173), SPH_C32(0x2e80d600),
+	  SPH_C32(0xf79c1232) },
+	{ SPH_C32(0x6f570000), SPH_C32(0x12ee0000), SPH_C32(0x8635003b),
+	  SPH_C32(0x79e72000), SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3),
+	  SPH_C32(0x860d80d0), SPH_C32(0x594fc30b), SPH_C32(0xf6ba0000),
+	  SPH_C32(0x4f3b0000), SPH_C32(0x488b0013), SPH_C32(0xaf433800),
+	  SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3), SPH_C32(0xaf22d229),
+	  SPH_C32(0xe9e92494) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0xdb630000), SPH_C32(0x7e88000c),
+	  SPH_C32(0x15860000), SPH_C32(0x91fd48f3), SPH_C32(0x7581bb43),
+	  SPH_C32(0xf460449e), SPH_C32(0xd8b61463), SPH_C32(0x835a0000),
+	  SPH_C32(0xc4f70000), SPH_C32(0x01470022), SPH_C32(0xeec80000),
+	  SPH_C32(0x60a54f69), SPH_C32(0x142f2a24), SPH_C32(0x5cf534f2),
+	  SPH_C32(0x3ea660f7) },
+	{ SPH_C32(0x53810000), SPH_C32(0x5b1d0000), SPH_C32(0x06bb000d),
+	  SPH_C32(0xd3ed3800), SPH_C32(0x76ca142f), SPH_C32(0x0c2c849e),
+	  SPH_C32(0x5813baf1), SPH_C32(0xe2f26dd2), SPH_C32(0x9e000000),
+	  SPH_C32(0xef850000), SPH_C32(0x49ca0022), SPH_C32(0x41a91800),
+	  SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4), SPH_C32(0xdd5730db),
+	  SPH_C32(0x20d35651) },
+	{ SPH_C32(0x16980000), SPH_C32(0xf0110000), SPH_C32(0x3605000c),
+	  SPH_C32(0xbae71800), SPH_C32(0xb4366636), SPH_C32(0xbdf80493),
+	  SPH_C32(0x75c240b7), SPH_C32(0xc6c322c5), SPH_C32(0xc6430000),
+	  SPH_C32(0x6ffb0000), SPH_C32(0x31f90023), SPH_C32(0x87c22000),
+	  SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29), SPH_C32(0x7124ceb4),
+	  SPH_C32(0x1a972fe0) },
+	{ SPH_C32(0x4edb0000), SPH_C32(0x706f0000), SPH_C32(0x4e36000d),
+	  SPH_C32(0x7c8c2000), SPH_C32(0x53013aea), SPH_C32(0xc4553b4e),
+	  SPH_C32(0xd9b1bed8), SPH_C32(0xfc875b74), SPH_C32(0xdb190000),
+	  SPH_C32(0x44890000), SPH_C32(0x79740023), SPH_C32(0x28a33800),
+	  SPH_C32(0x879213b5), SPH_C32(0x6d8215f9), SPH_C32(0xf086ca9d),
+	  SPH_C32(0x04e21946) },
+	{ SPH_C32(0xaef90000), SPH_C32(0xcf450000), SPH_C32(0x30b80012),
+	  SPH_C32(0x69280000), SPH_C32(0x1e634526), SPH_C32(0x0d5e117e),
+	  SPH_C32(0x03512c46), SPH_C32(0xd3ad5d25), SPH_C32(0x84b70000),
+	  SPH_C32(0x76a70000), SPH_C32(0x86330028), SPH_C32(0x79c50000),
+	  SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480), SPH_C32(0xa88d56d0),
+	  SPH_C32(0xaed3d139) },
+	{ SPH_C32(0xf6ba0000), SPH_C32(0x4f3b0000), SPH_C32(0x488b0013),
+	  SPH_C32(0xaf433800), SPH_C32(0xf95419fa), SPH_C32(0x74f32ea3),
+	  SPH_C32(0xaf22d229), SPH_C32(0xe9e92494), SPH_C32(0x99ed0000),
+	  SPH_C32(0x5dd50000), SPH_C32(0xcebe0028), SPH_C32(0xd6a41800),
+	  SPH_C32(0x061c4202), SPH_C32(0x9491fb50), SPH_C32(0x292f52f9),
+	  SPH_C32(0xb0a6e79f) },
+	{ SPH_C32(0xb3a30000), SPH_C32(0xe4370000), SPH_C32(0x78350012),
+	  SPH_C32(0xc6491800), SPH_C32(0x3ba86be3), SPH_C32(0xc527aeae),
+	  SPH_C32(0x82f3286f), SPH_C32(0xcdd86b83), SPH_C32(0xc1ae0000),
+	  SPH_C32(0xddab0000), SPH_C32(0xb68d0029), SPH_C32(0x10cf2000),
+	  SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d), SPH_C32(0x855cac96),
+	  SPH_C32(0x8ae29e2e) },
+	{ SPH_C32(0xebe00000), SPH_C32(0x64490000), SPH_C32(0x00060013),
+	  SPH_C32(0x00222000), SPH_C32(0xdc9f373f), SPH_C32(0xbc8a9173),
+	  SPH_C32(0x2e80d600), SPH_C32(0xf79c1232), SPH_C32(0xdcf40000),
+	  SPH_C32(0xf6d90000), SPH_C32(0xfe000029), SPH_C32(0xbfae3800),
+	  SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d), SPH_C32(0x04fea8bf),
+	  SPH_C32(0x9497a888) },
+	{ SPH_C32(0x0c2f0000), SPH_C32(0x69330000), SPH_C32(0xf9fc0006),
+	  SPH_C32(0x828b0000), SPH_C32(0xd28f6b5d), SPH_C32(0x3d46d5e7),
+	  SPH_C32(0x001826bc), SPH_C32(0x48c3a5ad), SPH_C32(0x218c0000),
+	  SPH_C32(0x62810000), SPH_C32(0xc8030036), SPH_C32(0x056b0000),
+	  SPH_C32(0xac496112), SPH_C32(0x2437eebd), SPH_C32(0x5fbc3e08),
+	  SPH_C32(0xa5c8987f) },
+	{ SPH_C32(0x546c0000), SPH_C32(0xe94d0000), SPH_C32(0x81cf0007),
+	  SPH_C32(0x44e03800), SPH_C32(0x35b83781), SPH_C32(0x44ebea3a),
+	  SPH_C32(0xac6bd8d3), SPH_C32(0x7287dc1c), SPH_C32(0x3cd60000),
+	  SPH_C32(0x49f30000), SPH_C32(0x808e0036), SPH_C32(0xaa0a1800),
+	  SPH_C32(0x89824fd7), SPH_C32(0xec4e516d), SPH_C32(0xde1e3a21),
+	  SPH_C32(0xbbbdaed9) },
+	{ SPH_C32(0x11750000), SPH_C32(0x42410000), SPH_C32(0xb1710006),
+	  SPH_C32(0x2dea1800), SPH_C32(0xf7444598), SPH_C32(0xf53f6a37),
+	  SPH_C32(0x81ba2295), SPH_C32(0x56b6930b), SPH_C32(0x64950000),
+	  SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037), SPH_C32(0x6c612000),
+	  SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0), SPH_C32(0x726dc44e),
+	  SPH_C32(0x81f9d768) },
+	{ SPH_C32(0x49360000), SPH_C32(0xc23f0000), SPH_C32(0xc9420007),
+	  SPH_C32(0xeb812000), SPH_C32(0x10731944), SPH_C32(0x8c9255ea),
+	  SPH_C32(0x2dc9dcfa), SPH_C32(0x6cf2eaba), SPH_C32(0x79cf0000),
+	  SPH_C32(0xe2ff0000), SPH_C32(0xb0300037), SPH_C32(0xc3003800),
+	  SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160), SPH_C32(0xf3cfc067),
+	  SPH_C32(0x9f8ce1ce) },
+	{ SPH_C32(0xa9140000), SPH_C32(0x7d150000), SPH_C32(0xb7cc0018),
+	  SPH_C32(0xfe250000), SPH_C32(0x5d116688), SPH_C32(0x45997fda),
+	  SPH_C32(0xf7294e64), SPH_C32(0x43d8eceb), SPH_C32(0x26610000),
+	  SPH_C32(0xd0d10000), SPH_C32(0x4f77003c), SPH_C32(0x92660000),
+	  SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019), SPH_C32(0xabc45c2a),
+	  SPH_C32(0x35bd29b1) },
+	{ SPH_C32(0xf1570000), SPH_C32(0xfd6b0000), SPH_C32(0xcfff0019),
+	  SPH_C32(0x384e3800), SPH_C32(0xba263a54), SPH_C32(0x3c344007),
+	  SPH_C32(0x5b5ab00b), SPH_C32(0x799c955a), SPH_C32(0x3b3b0000),
+	  SPH_C32(0xfba30000), SPH_C32(0x07fa003c), SPH_C32(0x3d071800),
+	  SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9), SPH_C32(0x2a665803),
+	  SPH_C32(0x2bc81f17) },
+	{ SPH_C32(0xb44e0000), SPH_C32(0x56670000), SPH_C32(0xff410018),
+	  SPH_C32(0x51441800), SPH_C32(0x78da484d), SPH_C32(0x8de0c00a),
+	  SPH_C32(0x768b4a4d), SPH_C32(0x5dadda4d), SPH_C32(0x63780000),
+	  SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d), SPH_C32(0xfb6c2000),
+	  SPH_C32(0x2dc730a5), SPH_C32(0xdd240014), SPH_C32(0x8615a66c),
+	  SPH_C32(0x118c66a6) },
+	{ SPH_C32(0xec0d0000), SPH_C32(0xd6190000), SPH_C32(0x87720019),
+	  SPH_C32(0x972f2000), SPH_C32(0x9fed1491), SPH_C32(0xf44dffd7),
+	  SPH_C32(0xdaf8b422), SPH_C32(0x67e9a3fc), SPH_C32(0x7e220000),
+	  SPH_C32(0x50af0000), SPH_C32(0x3744003d), SPH_C32(0x540d3800),
+	  SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4), SPH_C32(0x07b7a245),
+	  SPH_C32(0x0ff95000) },
+	{ SPH_C32(0x835a0000), SPH_C32(0xc4f70000), SPH_C32(0x01470022),
+	  SPH_C32(0xeec80000), SPH_C32(0x60a54f69), SPH_C32(0x142f2a24),
+	  SPH_C32(0x5cf534f2), SPH_C32(0x3ea660f7), SPH_C32(0x88980000),
+	  SPH_C32(0x1f940000), SPH_C32(0x7fcf002e), SPH_C32(0xfb4e0000),
+	  SPH_C32(0xf158079a), SPH_C32(0x61ae9167), SPH_C32(0xa895706c),
+	  SPH_C32(0xe6107494) },
+	{ SPH_C32(0xdb190000), SPH_C32(0x44890000), SPH_C32(0x79740023),
+	  SPH_C32(0x28a33800), SPH_C32(0x879213b5), SPH_C32(0x6d8215f9),
+	  SPH_C32(0xf086ca9d), SPH_C32(0x04e21946), SPH_C32(0x95c20000),
+	  SPH_C32(0x34e60000), SPH_C32(0x3742002e), SPH_C32(0x542f1800),
+	  SPH_C32(0xd493295f), SPH_C32(0xa9d72eb7), SPH_C32(0x29377445),
+	  SPH_C32(0xf8654232) },
+	{ SPH_C32(0x9e000000), SPH_C32(0xef850000), SPH_C32(0x49ca0022),
+	  SPH_C32(0x41a91800), SPH_C32(0x456e61ac), SPH_C32(0xdc5695f4),
+	  SPH_C32(0xdd5730db), SPH_C32(0x20d35651), SPH_C32(0xcd810000),
+	  SPH_C32(0xb4980000), SPH_C32(0x4f71002f), SPH_C32(0x92442000),
+	  SPH_C32(0x33a47583), SPH_C32(0xd07a116a), SPH_C32(0x85448a2a),
+	  SPH_C32(0xc2213b83) },
+	{ SPH_C32(0xc6430000), SPH_C32(0x6ffb0000), SPH_C32(0x31f90023),
+	  SPH_C32(0x87c22000), SPH_C32(0xa2593d70), SPH_C32(0xa5fbaa29),
+	  SPH_C32(0x7124ceb4), SPH_C32(0x1a972fe0), SPH_C32(0xd0db0000),
+	  SPH_C32(0x9fea0000), SPH_C32(0x07fc002f), SPH_C32(0x3d253800),
+	  SPH_C32(0x166f5b46), SPH_C32(0x1803aeba), SPH_C32(0x04e68e03),
+	  SPH_C32(0xdc540d25) },
+	{ SPH_C32(0x26610000), SPH_C32(0xd0d10000), SPH_C32(0x4f77003c),
+	  SPH_C32(0x92660000), SPH_C32(0xef3b42bc), SPH_C32(0x6cf08019),
+	  SPH_C32(0xabc45c2a), SPH_C32(0x35bd29b1), SPH_C32(0x8f750000),
+	  SPH_C32(0xadc40000), SPH_C32(0xf8bb0024), SPH_C32(0x6c430000),
+	  SPH_C32(0xb22a2434), SPH_C32(0x2969ffc3), SPH_C32(0x5ced124e),
+	  SPH_C32(0x7665c55a) },
+	{ SPH_C32(0x7e220000), SPH_C32(0x50af0000), SPH_C32(0x3744003d),
+	  SPH_C32(0x540d3800), SPH_C32(0x080c1e60), SPH_C32(0x155dbfc4),
+	  SPH_C32(0x07b7a245), SPH_C32(0x0ff95000), SPH_C32(0x922f0000),
+	  SPH_C32(0x86b60000), SPH_C32(0xb0360024), SPH_C32(0xc3221800),
+	  SPH_C32(0x97e10af1), SPH_C32(0xe1104013), SPH_C32(0xdd4f1667),
+	  SPH_C32(0x6810f3fc) },
+	{ SPH_C32(0x3b3b0000), SPH_C32(0xfba30000), SPH_C32(0x07fa003c),
+	  SPH_C32(0x3d071800), SPH_C32(0xcaf06c79), SPH_C32(0xa4893fc9),
+	  SPH_C32(0x2a665803), SPH_C32(0x2bc81f17), SPH_C32(0xca6c0000),
+	  SPH_C32(0x06c80000), SPH_C32(0xc8050025), SPH_C32(0x05492000),
+	  SPH_C32(0x70d6562d), SPH_C32(0x98bd7fce), SPH_C32(0x713ce808),
+	  SPH_C32(0x52548a4d) },
+	{ SPH_C32(0x63780000), SPH_C32(0x7bdd0000), SPH_C32(0x7fc9003d),
+	  SPH_C32(0xfb6c2000), SPH_C32(0x2dc730a5), SPH_C32(0xdd240014),
+	  SPH_C32(0x8615a66c), SPH_C32(0x118c66a6), SPH_C32(0xd7360000),
+	  SPH_C32(0x2dba0000), SPH_C32(0x80880025), SPH_C32(0xaa283800),
+	  SPH_C32(0x551d78e8), SPH_C32(0x50c4c01e), SPH_C32(0xf09eec21),
+	  SPH_C32(0x4c21bceb) },
+	{ SPH_C32(0x84b70000), SPH_C32(0x76a70000), SPH_C32(0x86330028),
+	  SPH_C32(0x79c50000), SPH_C32(0x23d76cc7), SPH_C32(0x5ce84480),
+	  SPH_C32(0xa88d56d0), SPH_C32(0xaed3d139), SPH_C32(0x2a4e0000),
+	  SPH_C32(0xb9e20000), SPH_C32(0xb68b003a), SPH_C32(0x10ed0000),
+	  SPH_C32(0x3db429e1), SPH_C32(0x51b655fe), SPH_C32(0xabdc7a96),
+	  SPH_C32(0x7d7e8c1c) },
+	{ SPH_C32(0xdcf40000), SPH_C32(0xf6d90000), SPH_C32(0xfe000029),
+	  SPH_C32(0xbfae3800), SPH_C32(0xc4e0301b), SPH_C32(0x25457b5d),
+	  SPH_C32(0x04fea8bf), SPH_C32(0x9497a888), SPH_C32(0x37140000),
+	  SPH_C32(0x92900000), SPH_C32(0xfe06003a), SPH_C32(0xbf8c1800),
+	  SPH_C32(0x187f0724), SPH_C32(0x99cfea2e), SPH_C32(0x2a7e7ebf),
+	  SPH_C32(0x630bbaba) },
+	{ SPH_C32(0x99ed0000), SPH_C32(0x5dd50000), SPH_C32(0xcebe0028),
+	  SPH_C32(0xd6a41800), SPH_C32(0x061c4202), SPH_C32(0x9491fb50),
+	  SPH_C32(0x292f52f9), SPH_C32(0xb0a6e79f), SPH_C32(0x6f570000),
+	  SPH_C32(0x12ee0000), SPH_C32(0x8635003b), SPH_C32(0x79e72000),
+	  SPH_C32(0xff485bf8), SPH_C32(0xe062d5f3), SPH_C32(0x860d80d0),
+	  SPH_C32(0x594fc30b) },
+	{ SPH_C32(0xc1ae0000), SPH_C32(0xddab0000), SPH_C32(0xb68d0029),
+	  SPH_C32(0x10cf2000), SPH_C32(0xe12b1ede), SPH_C32(0xed3cc48d),
+	  SPH_C32(0x855cac96), SPH_C32(0x8ae29e2e), SPH_C32(0x720d0000),
+	  SPH_C32(0x399c0000), SPH_C32(0xceb8003b), SPH_C32(0xd6863800),
+	  SPH_C32(0xda83753d), SPH_C32(0x281b6a23), SPH_C32(0x07af84f9),
+	  SPH_C32(0x473af5ad) },
+	{ SPH_C32(0x218c0000), SPH_C32(0x62810000), SPH_C32(0xc8030036),
+	  SPH_C32(0x056b0000), SPH_C32(0xac496112), SPH_C32(0x2437eebd),
+	  SPH_C32(0x5fbc3e08), SPH_C32(0xa5c8987f), SPH_C32(0x2da30000),
+	  SPH_C32(0x0bb20000), SPH_C32(0x31ff0030), SPH_C32(0x87e00000),
+	  SPH_C32(0x7ec60a4f), SPH_C32(0x19713b5a), SPH_C32(0x5fa418b4),
+	  SPH_C32(0xed0b3dd2) },
+	{ SPH_C32(0x79cf0000), SPH_C32(0xe2ff0000), SPH_C32(0xb0300037),
+	  SPH_C32(0xc3003800), SPH_C32(0x4b7e3dce), SPH_C32(0x5d9ad160),
+	  SPH_C32(0xf3cfc067), SPH_C32(0x9f8ce1ce), SPH_C32(0x30f90000),
+	  SPH_C32(0x20c00000), SPH_C32(0x79720030), SPH_C32(0x28811800),
+	  SPH_C32(0x5b0d248a), SPH_C32(0xd108848a), SPH_C32(0xde061c9d),
+	  SPH_C32(0xf37e0b74) },
+	{ SPH_C32(0x3cd60000), SPH_C32(0x49f30000), SPH_C32(0x808e0036),
+	  SPH_C32(0xaa0a1800), SPH_C32(0x89824fd7), SPH_C32(0xec4e516d),
+	  SPH_C32(0xde1e3a21), SPH_C32(0xbbbdaed9), SPH_C32(0x68ba0000),
+	  SPH_C32(0xa0be0000), SPH_C32(0x01410031), SPH_C32(0xeeea2000),
+	  SPH_C32(0xbc3a7856), SPH_C32(0xa8a5bb57), SPH_C32(0x7275e2f2),
+	  SPH_C32(0xc93a72c5) },
+	{ SPH_C32(0x64950000), SPH_C32(0xc98d0000), SPH_C32(0xf8bd0037),
+	  SPH_C32(0x6c612000), SPH_C32(0x6eb5130b), SPH_C32(0x95e36eb0),
+	  SPH_C32(0x726dc44e), SPH_C32(0x81f9d768), SPH_C32(0x75e00000),
+	  SPH_C32(0x8bcc0000), SPH_C32(0x49cc0031), SPH_C32(0x418b3800),
+	  SPH_C32(0x99f15693), SPH_C32(0x60dc0487), SPH_C32(0xf3d7e6db),
+	  SPH_C32(0xd74f4463) },
+	{ SPH_C32(0x52500000), SPH_C32(0x29540000), SPH_C32(0x6a61004e),
+	  SPH_C32(0xf0ff0000), SPH_C32(0x9a317eec), SPH_C32(0x452341ce),
+	  SPH_C32(0xcf568fe5), SPH_C32(0x5303130f), SPH_C32(0x538d0000),
+	  SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006), SPH_C32(0x56ff0000),
+	  SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9), SPH_C32(0xa9444018),
+	  SPH_C32(0x7f975691) },
+	{ SPH_C32(0x0a130000), SPH_C32(0xa92a0000), SPH_C32(0x1252004f),
+	  SPH_C32(0x36943800), SPH_C32(0x7d062230), SPH_C32(0x3c8e7e13),
+	  SPH_C32(0x6325718a), SPH_C32(0x69476abe), SPH_C32(0x4ed70000),
+	  SPH_C32(0x828e0000), SPH_C32(0xd67a0006), SPH_C32(0xf99e1800),
+	  SPH_C32(0x2f2f2e8b), SPH_C32(0x5abc7229), SPH_C32(0x28e64431),
+	  SPH_C32(0x61e26037) },
+	{ SPH_C32(0x4f0a0000), SPH_C32(0x02260000), SPH_C32(0x22ec004e),
+	  SPH_C32(0x5f9e1800), SPH_C32(0xbffa5029), SPH_C32(0x8d5afe1e),
+	  SPH_C32(0x4ef48bcc), SPH_C32(0x4d7625a9), SPH_C32(0x16940000),
+	  SPH_C32(0x02f00000), SPH_C32(0xae490007), SPH_C32(0x3ff52000),
+	  SPH_C32(0xc8187257), SPH_C32(0x23114df4), SPH_C32(0x8495ba5e),
+	  SPH_C32(0x5ba61986) },
+	{ SPH_C32(0x17490000), SPH_C32(0x82580000), SPH_C32(0x5adf004f),
+	  SPH_C32(0x99f52000), SPH_C32(0x58cd0cf5), SPH_C32(0xf4f7c1c3),
+	  SPH_C32(0xe28775a3), SPH_C32(0x77325c18), SPH_C32(0x0bce0000),
+	  SPH_C32(0x29820000), SPH_C32(0xe6c40007), SPH_C32(0x90943800),
+	  SPH_C32(0xedd35c92), SPH_C32(0xeb68f224), SPH_C32(0x0537be77),
+	  SPH_C32(0x45d32f20) },
+	{ SPH_C32(0xf76b0000), SPH_C32(0x3d720000), SPH_C32(0x24510050),
+	  SPH_C32(0x8c510000), SPH_C32(0x15af7339), SPH_C32(0x3dfcebf3),
+	  SPH_C32(0x3867e73d), SPH_C32(0x58185a49), SPH_C32(0x54600000),
+	  SPH_C32(0x1bac0000), SPH_C32(0x1983000c), SPH_C32(0xc1f20000),
+	  SPH_C32(0x499623e0), SPH_C32(0xda02a35d), SPH_C32(0x5d3c223a),
+	  SPH_C32(0xefe2e75f) },
+	{ SPH_C32(0xaf280000), SPH_C32(0xbd0c0000), SPH_C32(0x5c620051),
+	  SPH_C32(0x4a3a3800), SPH_C32(0xf2982fe5), SPH_C32(0x4451d42e),
+	  SPH_C32(0x94141952), SPH_C32(0x625c23f8), SPH_C32(0x493a0000),
+	  SPH_C32(0x30de0000), SPH_C32(0x510e000c), SPH_C32(0x6e931800),
+	  SPH_C32(0x6c5d0d25), SPH_C32(0x127b1c8d), SPH_C32(0xdc9e2613),
+	  SPH_C32(0xf197d1f9) },
+	{ SPH_C32(0xea310000), SPH_C32(0x16000000), SPH_C32(0x6cdc0050),
+	  SPH_C32(0x23301800), SPH_C32(0x30645dfc), SPH_C32(0xf5855423),
+	  SPH_C32(0xb9c5e314), SPH_C32(0x466d6cef), SPH_C32(0x11790000),
+	  SPH_C32(0xb0a00000), SPH_C32(0x293d000d), SPH_C32(0xa8f82000),
+	  SPH_C32(0x8b6a51f9), SPH_C32(0x6bd62350), SPH_C32(0x70edd87c),
+	  SPH_C32(0xcbd3a848) },
+	{ SPH_C32(0xb2720000), SPH_C32(0x967e0000), SPH_C32(0x14ef0051),
+	  SPH_C32(0xe55b2000), SPH_C32(0xd7530120), SPH_C32(0x8c286bfe),
+	  SPH_C32(0x15b61d7b), SPH_C32(0x7c29155e), SPH_C32(0x0c230000),
+	  SPH_C32(0x9bd20000), SPH_C32(0x61b0000d), SPH_C32(0x07993800),
+	  SPH_C32(0xaea17f3c), SPH_C32(0xa3af9c80), SPH_C32(0xf14fdc55),
+	  SPH_C32(0xd5a69eee) },
+	{ SPH_C32(0x55bd0000), SPH_C32(0x9b040000), SPH_C32(0xed150044),
+	  SPH_C32(0x67f20000), SPH_C32(0xd9435d42), SPH_C32(0x0de42f6a),
+	  SPH_C32(0x3b2eedc7), SPH_C32(0xc376a2c1), SPH_C32(0xf15b0000),
+	  SPH_C32(0x0f8a0000), SPH_C32(0x57b30012), SPH_C32(0xbd5c0000),
+	  SPH_C32(0xc6082e35), SPH_C32(0xa2dd0960), SPH_C32(0xaa0d4ae2),
+	  SPH_C32(0xe4f9ae19) },
+	{ SPH_C32(0x0dfe0000), SPH_C32(0x1b7a0000), SPH_C32(0x95260045),
+	  SPH_C32(0xa1993800), SPH_C32(0x3e74019e), SPH_C32(0x744910b7),
+	  SPH_C32(0x975d13a8), SPH_C32(0xf932db70), SPH_C32(0xec010000),
+	  SPH_C32(0x24f80000), SPH_C32(0x1f3e0012), SPH_C32(0x123d1800),
+	  SPH_C32(0xe3c300f0), SPH_C32(0x6aa4b6b0), SPH_C32(0x2baf4ecb),
+	  SPH_C32(0xfa8c98bf) },
+	{ SPH_C32(0x48e70000), SPH_C32(0xb0760000), SPH_C32(0xa5980044),
+	  SPH_C32(0xc8931800), SPH_C32(0xfc887387), SPH_C32(0xc59d90ba),
+	  SPH_C32(0xba8ce9ee), SPH_C32(0xdd039467), SPH_C32(0xb4420000),
+	  SPH_C32(0xa4860000), SPH_C32(0x670d0013), SPH_C32(0xd4562000),
+	  SPH_C32(0x04f45c2c), SPH_C32(0x1309896d), SPH_C32(0x87dcb0a4),
+	  SPH_C32(0xc0c8e10e) },
+	{ SPH_C32(0x10a40000), SPH_C32(0x30080000), SPH_C32(0xddab0045),
+	  SPH_C32(0x0ef82000), SPH_C32(0x1bbf2f5b), SPH_C32(0xbc30af67),
+	  SPH_C32(0x16ff1781), SPH_C32(0xe747edd6), SPH_C32(0xa9180000),
+	  SPH_C32(0x8ff40000), SPH_C32(0x2f800013), SPH_C32(0x7b373800),
+	  SPH_C32(0x213f72e9), SPH_C32(0xdb7036bd), SPH_C32(0x067eb48d),
+	  SPH_C32(0xdebdd7a8) },
+	{ SPH_C32(0xf0860000), SPH_C32(0x8f220000), SPH_C32(0xa325005a),
+	  SPH_C32(0x1b5c0000), SPH_C32(0x56dd5097), SPH_C32(0x753b8557),
+	  SPH_C32(0xcc1f851f), SPH_C32(0xc86deb87), SPH_C32(0xf6b60000),
+	  SPH_C32(0xbdda0000), SPH_C32(0xd0c70018), SPH_C32(0x2a510000),
+	  SPH_C32(0x857a0d9b), SPH_C32(0xea1a67c4), SPH_C32(0x5e7528c0),
+	  SPH_C32(0x748c1fd7) },
+	{ SPH_C32(0xa8c50000), SPH_C32(0x0f5c0000), SPH_C32(0xdb16005b),
+	  SPH_C32(0xdd373800), SPH_C32(0xb1ea0c4b), SPH_C32(0x0c96ba8a),
+	  SPH_C32(0x606c7b70), SPH_C32(0xf2299236), SPH_C32(0xebec0000),
+	  SPH_C32(0x96a80000), SPH_C32(0x984a0018), SPH_C32(0x85301800),
+	  SPH_C32(0xa0b1235e), SPH_C32(0x2263d814), SPH_C32(0xdfd72ce9),
+	  SPH_C32(0x6af92971) },
+	{ SPH_C32(0xeddc0000), SPH_C32(0xa4500000), SPH_C32(0xeba8005a),
+	  SPH_C32(0xb43d1800), SPH_C32(0x73167e52), SPH_C32(0xbd423a87),
+	  SPH_C32(0x4dbd8136), SPH_C32(0xd618dd21), SPH_C32(0xb3af0000),
+	  SPH_C32(0x16d60000), SPH_C32(0xe0790019), SPH_C32(0x435b2000),
+	  SPH_C32(0x47867f82), SPH_C32(0x5bcee7c9), SPH_C32(0x73a4d286),
+	  SPH_C32(0x50bd50c0) },
+	{ SPH_C32(0xb59f0000), SPH_C32(0x242e0000), SPH_C32(0x939b005b),
+	  SPH_C32(0x72562000), SPH_C32(0x9421228e), SPH_C32(0xc4ef055a),
+	  SPH_C32(0xe1ce7f59), SPH_C32(0xec5ca490), SPH_C32(0xaef50000),
+	  SPH_C32(0x3da40000), SPH_C32(0xa8f40019), SPH_C32(0xec3a3800),
+	  SPH_C32(0x624d5147), SPH_C32(0x93b75819), SPH_C32(0xf206d6af),
+	  SPH_C32(0x4ec86666) },
+	{ SPH_C32(0xdac80000), SPH_C32(0x36c00000), SPH_C32(0x15ae0060),
+	  SPH_C32(0x0bb10000), SPH_C32(0x6b697976), SPH_C32(0x248dd0a9),
+	  SPH_C32(0x67c3ff89), SPH_C32(0xb513679b), SPH_C32(0x584f0000),
+	  SPH_C32(0x729f0000), SPH_C32(0xe07f000a), SPH_C32(0x43790000),
+	  SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba), SPH_C32(0x5d240486),
+	  SPH_C32(0xa72142f2) },
+	{ SPH_C32(0x828b0000), SPH_C32(0xb6be0000), SPH_C32(0x6d9d0061),
+	  SPH_C32(0xcdda3800), SPH_C32(0x8c5e25aa), SPH_C32(0x5d20ef74),
+	  SPH_C32(0xcbb001e6), SPH_C32(0x8f571e2a), SPH_C32(0x45150000),
+	  SPH_C32(0x59ed0000), SPH_C32(0xa8f2000a), SPH_C32(0xec181800),
+	  SPH_C32(0xbed26678), SPH_C32(0x2f3dc96a), SPH_C32(0xdc8600af),
+	  SPH_C32(0xb9547454) },
+	{ SPH_C32(0xc7920000), SPH_C32(0x1db20000), SPH_C32(0x5d230060),
+	  SPH_C32(0xa4d01800), SPH_C32(0x4ea257b3), SPH_C32(0xecf46f79),
+	  SPH_C32(0xe661fba0), SPH_C32(0xab66513d), SPH_C32(0x1d560000),
+	  SPH_C32(0xd9930000), SPH_C32(0xd0c1000b), SPH_C32(0x2a732000),
+	  SPH_C32(0x59e53aa4), SPH_C32(0x5690f6b7), SPH_C32(0x70f5fec0),
+	  SPH_C32(0x83100de5) },
+	{ SPH_C32(0x9fd10000), SPH_C32(0x9dcc0000), SPH_C32(0x25100061),
+	  SPH_C32(0x62bb2000), SPH_C32(0xa9950b6f), SPH_C32(0x955950a4),
+	  SPH_C32(0x4a1205cf), SPH_C32(0x9122288c), SPH_C32(0x000c0000),
+	  SPH_C32(0xf2e10000), SPH_C32(0x984c000b), SPH_C32(0x85123800),
+	  SPH_C32(0x7c2e1461), SPH_C32(0x9ee94967), SPH_C32(0xf157fae9),
+	  SPH_C32(0x9d653b43) },
+	{ SPH_C32(0x7ff30000), SPH_C32(0x22e60000), SPH_C32(0x5b9e007e),
+	  SPH_C32(0x771f0000), SPH_C32(0xe4f774a3), SPH_C32(0x5c527a94),
+	  SPH_C32(0x90f29751), SPH_C32(0xbe082edd), SPH_C32(0x5fa20000),
+	  SPH_C32(0xc0cf0000), SPH_C32(0x670b0000), SPH_C32(0xd4740000),
+	  SPH_C32(0xd86b6b13), SPH_C32(0xaf83181e), SPH_C32(0xa95c66a4),
+	  SPH_C32(0x3754f33c) },
+	{ SPH_C32(0x27b00000), SPH_C32(0xa2980000), SPH_C32(0x23ad007f),
+	  SPH_C32(0xb1743800), SPH_C32(0x03c0287f), SPH_C32(0x25ff4549),
+	  SPH_C32(0x3c81693e), SPH_C32(0x844c576c), SPH_C32(0x42f80000),
+	  SPH_C32(0xebbd0000), SPH_C32(0x2f860000), SPH_C32(0x7b151800),
+	  SPH_C32(0xfda045d6), SPH_C32(0x67faa7ce), SPH_C32(0x28fe628d),
+	  SPH_C32(0x2921c59a) },
+	{ SPH_C32(0x62a90000), SPH_C32(0x09940000), SPH_C32(0x1313007e),
+	  SPH_C32(0xd87e1800), SPH_C32(0xc13c5a66), SPH_C32(0x942bc544),
+	  SPH_C32(0x11509378), SPH_C32(0xa07d187b), SPH_C32(0x1abb0000),
+	  SPH_C32(0x6bc30000), SPH_C32(0x57b50001), SPH_C32(0xbd7e2000),
+	  SPH_C32(0x1a97190a), SPH_C32(0x1e579813), SPH_C32(0x848d9ce2),
+	  SPH_C32(0x1365bc2b) },
+	{ SPH_C32(0x3aea0000), SPH_C32(0x89ea0000), SPH_C32(0x6b20007f),
+	  SPH_C32(0x1e152000), SPH_C32(0x260b06ba), SPH_C32(0xed86fa99),
+	  SPH_C32(0xbd236d17), SPH_C32(0x9a3961ca), SPH_C32(0x07e10000),
+	  SPH_C32(0x40b10000), SPH_C32(0x1f380001), SPH_C32(0x121f3800),
+	  SPH_C32(0x3f5c37cf), SPH_C32(0xd62e27c3), SPH_C32(0x052f98cb),
+	  SPH_C32(0x0d108a8d) },
+	{ SPH_C32(0xdd250000), SPH_C32(0x84900000), SPH_C32(0x92da006a),
+	  SPH_C32(0x9cbc0000), SPH_C32(0x281b5ad8), SPH_C32(0x6c4abe0d),
+	  SPH_C32(0x93bb9dab), SPH_C32(0x2566d655), SPH_C32(0xfa990000),
+	  SPH_C32(0xd4e90000), SPH_C32(0x293b001e), SPH_C32(0xa8da0000),
+	  SPH_C32(0x57f566c6), SPH_C32(0xd75cb223), SPH_C32(0x5e6d0e7c),
+	  SPH_C32(0x3c4fba7a) },
+	{ SPH_C32(0x85660000), SPH_C32(0x04ee0000), SPH_C32(0xeae9006b),
+	  SPH_C32(0x5ad73800), SPH_C32(0xcf2c0604), SPH_C32(0x15e781d0),
+	  SPH_C32(0x3fc863c4), SPH_C32(0x1f22afe4), SPH_C32(0xe7c30000),
+	  SPH_C32(0xff9b0000), SPH_C32(0x61b6001e), SPH_C32(0x07bb1800),
+	  SPH_C32(0x723e4803), SPH_C32(0x1f250df3), SPH_C32(0xdfcf0a55),
+	  SPH_C32(0x223a8cdc) },
+	{ SPH_C32(0xc07f0000), SPH_C32(0xafe20000), SPH_C32(0xda57006a),
+	  SPH_C32(0x33dd1800), SPH_C32(0x0dd0741d), SPH_C32(0xa43301dd),
+	  SPH_C32(0x12199982), SPH_C32(0x3b13e0f3), SPH_C32(0xbf800000),
+	  SPH_C32(0x7fe50000), SPH_C32(0x1985001f), SPH_C32(0xc1d02000),
+	  SPH_C32(0x950914df), SPH_C32(0x6688322e), SPH_C32(0x73bcf43a),
+	  SPH_C32(0x187ef56d) },
+	{ SPH_C32(0x983c0000), SPH_C32(0x2f9c0000), SPH_C32(0xa264006b),
+	  SPH_C32(0xf5b62000), SPH_C32(0xeae728c1), SPH_C32(0xdd9e3e00),
+	  SPH_C32(0xbe6a67ed), SPH_C32(0x01579942), SPH_C32(0xa2da0000),
+	  SPH_C32(0x54970000), SPH_C32(0x5108001f), SPH_C32(0x6eb13800),
+	  SPH_C32(0xb0c23a1a), SPH_C32(0xaef18dfe), SPH_C32(0xf21ef013),
+	  SPH_C32(0x060bc3cb) },
+	{ SPH_C32(0x781e0000), SPH_C32(0x90b60000), SPH_C32(0xdcea0074),
+	  SPH_C32(0xe0120000), SPH_C32(0xa785570d), SPH_C32(0x14951430),
+	  SPH_C32(0x648af573), SPH_C32(0x2e7d9f13), SPH_C32(0xfd740000),
+	  SPH_C32(0x66b90000), SPH_C32(0xae4f0014), SPH_C32(0x3fd70000),
+	  SPH_C32(0x14874568), SPH_C32(0x9f9bdc87), SPH_C32(0xaa156c5e),
+	  SPH_C32(0xac3a0bb4) },
+	{ SPH_C32(0x205d0000), SPH_C32(0x10c80000), SPH_C32(0xa4d90075),
+	  SPH_C32(0x26793800), SPH_C32(0x40b20bd1), SPH_C32(0x6d382bed),
+	  SPH_C32(0xc8f90b1c), SPH_C32(0x1439e6a2), SPH_C32(0xe02e0000),
+	  SPH_C32(0x4dcb0000), SPH_C32(0xe6c20014), SPH_C32(0x90b61800),
+	  SPH_C32(0x314c6bad), SPH_C32(0x57e26357), SPH_C32(0x2bb76877),
+	  SPH_C32(0xb24f3d12) },
+	{ SPH_C32(0x65440000), SPH_C32(0xbbc40000), SPH_C32(0x94670074),
+	  SPH_C32(0x4f731800), SPH_C32(0x824e79c8), SPH_C32(0xdcecabe0),
+	  SPH_C32(0xe528f15a), SPH_C32(0x3008a9b5), SPH_C32(0xb86d0000),
+	  SPH_C32(0xcdb50000), SPH_C32(0x9ef10015), SPH_C32(0x56dd2000),
+	  SPH_C32(0xd67b3771), SPH_C32(0x2e4f5c8a), SPH_C32(0x87c49618),
+	  SPH_C32(0x880b44a3) },
+	{ SPH_C32(0x3d070000), SPH_C32(0x3bba0000), SPH_C32(0xec540075),
+	  SPH_C32(0x89182000), SPH_C32(0x65792514), SPH_C32(0xa541943d),
+	  SPH_C32(0x495b0f35), SPH_C32(0x0a4cd004), SPH_C32(0xa5370000),
+	  SPH_C32(0xe6c70000), SPH_C32(0xd67c0015), SPH_C32(0xf9bc3800),
+	  SPH_C32(0xf3b019b4), SPH_C32(0xe636e35a), SPH_C32(0x06669231),
+	  SPH_C32(0x967e7205) },
+	{ SPH_C32(0x59920000), SPH_C32(0xf2370000), SPH_C32(0x14e90042),
+	  SPH_C32(0xe5790000), SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d),
+	  SPH_C32(0x3b36cb7b), SPH_C32(0x8bb5076c), SPH_C32(0xd0d70000),
+	  SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024), SPH_C32(0xb8370000),
+	  SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd), SPH_C32(0xf5b174ea),
+	  SPH_C32(0x41313666) },
+	{ SPH_C32(0x01d10000), SPH_C32(0x72490000), SPH_C32(0x6cda0043),
+	  SPH_C32(0x23123800), SPH_C32(0xecfb6ac3), SPH_C32(0x490fc550),
+	  SPH_C32(0x97453514), SPH_C32(0xb1f17edd), SPH_C32(0xcd8d0000),
+	  SPH_C32(0x46790000), SPH_C32(0xd73d0024), SPH_C32(0x17561800),
+	  SPH_C32(0x4f8a61e2), SPH_C32(0x4e93580d), SPH_C32(0x741370c3),
+	  SPH_C32(0x5f4400c0) },
+	{ SPH_C32(0x44c80000), SPH_C32(0xd9450000), SPH_C32(0x5c640042),
+	  SPH_C32(0x4a181800), SPH_C32(0x2e0718da), SPH_C32(0xf8db455d),
+	  SPH_C32(0xba94cf52), SPH_C32(0x95c031ca), SPH_C32(0x95ce0000),
+	  SPH_C32(0xc6070000), SPH_C32(0xaf0e0025), SPH_C32(0xd13d2000),
+	  SPH_C32(0xa8bd3d3e), SPH_C32(0x373e67d0), SPH_C32(0xd8608eac),
+	  SPH_C32(0x65007971) },
+	{ SPH_C32(0x1c8b0000), SPH_C32(0x593b0000), SPH_C32(0x24570043),
+	  SPH_C32(0x8c732000), SPH_C32(0xc9304406), SPH_C32(0x81767a80),
+	  SPH_C32(0x16e7313d), SPH_C32(0xaf84487b), SPH_C32(0x88940000),
+	  SPH_C32(0xed750000), SPH_C32(0xe7830025), SPH_C32(0x7e5c3800),
+	  SPH_C32(0x8d7613fb), SPH_C32(0xff47d800), SPH_C32(0x59c28a85),
+	  SPH_C32(0x7b754fd7) },
+	{ SPH_C32(0xfca90000), SPH_C32(0xe6110000), SPH_C32(0x5ad9005c),
+	  SPH_C32(0x99d70000), SPH_C32(0x84523bca), SPH_C32(0x487d50b0),
+	  SPH_C32(0xcc07a3a3), SPH_C32(0x80ae4e2a), SPH_C32(0xd73a0000),
+	  SPH_C32(0xdf5b0000), SPH_C32(0x18c4002e), SPH_C32(0x2f3a0000),
+	  SPH_C32(0x29336c89), SPH_C32(0xce2d8979), SPH_C32(0x01c916c8),
+	  SPH_C32(0xd14487a8) },
+	{ SPH_C32(0xa4ea0000), SPH_C32(0x666f0000), SPH_C32(0x22ea005d),
+	  SPH_C32(0x5fbc3800), SPH_C32(0x63656716), SPH_C32(0x31d06f6d),
+	  SPH_C32(0x60745dcc), SPH_C32(0xbaea379b), SPH_C32(0xca600000),
+	  SPH_C32(0xf4290000), SPH_C32(0x5049002e), SPH_C32(0x805b1800),
+	  SPH_C32(0x0cf8424c), SPH_C32(0x065436a9), SPH_C32(0x806b12e1),
+	  SPH_C32(0xcf31b10e) },
+	{ SPH_C32(0xe1f30000), SPH_C32(0xcd630000), SPH_C32(0x1254005c),
+	  SPH_C32(0x36b61800), SPH_C32(0xa199150f), SPH_C32(0x8004ef60),
+	  SPH_C32(0x4da5a78a), SPH_C32(0x9edb788c), SPH_C32(0x92230000),
+	  SPH_C32(0x74570000), SPH_C32(0x287a002f), SPH_C32(0x46302000),
+	  SPH_C32(0xebcf1e90), SPH_C32(0x7ff90974), SPH_C32(0x2c18ec8e),
+	  SPH_C32(0xf575c8bf) },
+	{ SPH_C32(0xb9b00000), SPH_C32(0x4d1d0000), SPH_C32(0x6a67005d),
+	  SPH_C32(0xf0dd2000), SPH_C32(0x46ae49d3), SPH_C32(0xf9a9d0bd),
+	  SPH_C32(0xe1d659e5), SPH_C32(0xa49f013d), SPH_C32(0x8f790000),
+	  SPH_C32(0x5f250000), SPH_C32(0x60f7002f), SPH_C32(0xe9513800),
+	  SPH_C32(0xce043055), SPH_C32(0xb780b6a4), SPH_C32(0xadbae8a7),
+	  SPH_C32(0xeb00fe19) },
+	{ SPH_C32(0x5e7f0000), SPH_C32(0x40670000), SPH_C32(0x939d0048),
+	  SPH_C32(0x72740000), SPH_C32(0x48be15b1), SPH_C32(0x78659429),
+	  SPH_C32(0xcf4ea959), SPH_C32(0x1bc0b6a2), SPH_C32(0x72010000),
+	  SPH_C32(0xcb7d0000), SPH_C32(0x56f40030), SPH_C32(0x53940000),
+	  SPH_C32(0xa6ad615c), SPH_C32(0xb6f22344), SPH_C32(0xf6f87e10),
+	  SPH_C32(0xda5fceee) },
+	{ SPH_C32(0x063c0000), SPH_C32(0xc0190000), SPH_C32(0xebae0049),
+	  SPH_C32(0xb41f3800), SPH_C32(0xaf89496d), SPH_C32(0x01c8abf4),
+	  SPH_C32(0x633d5736), SPH_C32(0x2184cf13), SPH_C32(0x6f5b0000),
+	  SPH_C32(0xe00f0000), SPH_C32(0x1e790030), SPH_C32(0xfcf51800),
+	  SPH_C32(0x83664f99), SPH_C32(0x7e8b9c94), SPH_C32(0x775a7a39),
+	  SPH_C32(0xc42af848) },
+	{ SPH_C32(0x43250000), SPH_C32(0x6b150000), SPH_C32(0xdb100048),
+	  SPH_C32(0xdd151800), SPH_C32(0x6d753b74), SPH_C32(0xb01c2bf9),
+	  SPH_C32(0x4eecad70), SPH_C32(0x05b58004), SPH_C32(0x37180000),
+	  SPH_C32(0x60710000), SPH_C32(0x664a0031), SPH_C32(0x3a9e2000),
+	  SPH_C32(0x64511345), SPH_C32(0x0726a349), SPH_C32(0xdb298456),
+	  SPH_C32(0xfe6e81f9) },
+	{ SPH_C32(0x1b660000), SPH_C32(0xeb6b0000), SPH_C32(0xa3230049),
+	  SPH_C32(0x1b7e2000), SPH_C32(0x8a4267a8), SPH_C32(0xc9b11424),
+	  SPH_C32(0xe29f531f), SPH_C32(0x3ff1f9b5), SPH_C32(0x2a420000),
+	  SPH_C32(0x4b030000), SPH_C32(0x2ec70031), SPH_C32(0x95ff3800),
+	  SPH_C32(0x419a3d80), SPH_C32(0xcf5f1c99), SPH_C32(0x5a8b807f),
+	  SPH_C32(0xe01bb75f) },
+	{ SPH_C32(0xfb440000), SPH_C32(0x54410000), SPH_C32(0xddad0056),
+	  SPH_C32(0x0eda0000), SPH_C32(0xc7201864), SPH_C32(0x00ba3e14),
+	  SPH_C32(0x387fc181), SPH_C32(0x10dbffe4), SPH_C32(0x75ec0000),
+	  SPH_C32(0x792d0000), SPH_C32(0xd180003a), SPH_C32(0xc4990000),
+	  SPH_C32(0xe5df42f2), SPH_C32(0xfe354de0), SPH_C32(0x02801c32),
+	  SPH_C32(0x4a2a7f20) },
+	{ SPH_C32(0xa3070000), SPH_C32(0xd43f0000), SPH_C32(0xa59e0057),
+	  SPH_C32(0xc8b13800), SPH_C32(0x201744b8), SPH_C32(0x791701c9),
+	  SPH_C32(0x940c3fee), SPH_C32(0x2a9f8655), SPH_C32(0x68b60000),
+	  SPH_C32(0x525f0000), SPH_C32(0x990d003a), SPH_C32(0x6bf81800),
+	  SPH_C32(0xc0146c37), SPH_C32(0x364cf230), SPH_C32(0x8322181b),
+	  SPH_C32(0x545f4986) },
+	{ SPH_C32(0xe61e0000), SPH_C32(0x7f330000), SPH_C32(0x95200056),
+	  SPH_C32(0xa1bb1800), SPH_C32(0xe2eb36a1), SPH_C32(0xc8c381c4),
+	  SPH_C32(0xb9ddc5a8), SPH_C32(0x0eaec942), SPH_C32(0x30f50000),
+	  SPH_C32(0xd2210000), SPH_C32(0xe13e003b), SPH_C32(0xad932000),
+	  SPH_C32(0x272330eb), SPH_C32(0x4fe1cded), SPH_C32(0x2f51e674),
+	  SPH_C32(0x6e1b3037) },
+	{ SPH_C32(0xbe5d0000), SPH_C32(0xff4d0000), SPH_C32(0xed130057),
+	  SPH_C32(0x67d02000), SPH_C32(0x05dc6a7d), SPH_C32(0xb16ebe19),
+	  SPH_C32(0x15ae3bc7), SPH_C32(0x34eab0f3), SPH_C32(0x2daf0000),
+	  SPH_C32(0xf9530000), SPH_C32(0xa9b3003b), SPH_C32(0x02f23800),
+	  SPH_C32(0x02e81e2e), SPH_C32(0x8798723d), SPH_C32(0xaef3e25d),
+	  SPH_C32(0x706e0691) },
+	{ SPH_C32(0xd10a0000), SPH_C32(0xeda30000), SPH_C32(0x6b26006c),
+	  SPH_C32(0x1e370000), SPH_C32(0xfa943185), SPH_C32(0x510c6bea),
+	  SPH_C32(0x93a3bb17), SPH_C32(0x6da573f8), SPH_C32(0xdb150000),
+	  SPH_C32(0xb6680000), SPH_C32(0xe1380028), SPH_C32(0xadb10000),
+	  SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e), SPH_C32(0x01d13074),
+	  SPH_C32(0x99872205) },
+	{ SPH_C32(0x89490000), SPH_C32(0x6ddd0000), SPH_C32(0x1315006d),
+	  SPH_C32(0xd85c3800), SPH_C32(0x1da36d59), SPH_C32(0x28a15437),
+	  SPH_C32(0x3fd04578), SPH_C32(0x57e10a49), SPH_C32(0xc64f0000),
+	  SPH_C32(0x9d1a0000), SPH_C32(0xa9b50028), SPH_C32(0x02d01800),
+	  SPH_C32(0xde772911), SPH_C32(0x3b12e34e), SPH_C32(0x8073345d),
+	  SPH_C32(0x87f214a3) },
+	{ SPH_C32(0xcc500000), SPH_C32(0xc6d10000), SPH_C32(0x23ab006c),
+	  SPH_C32(0xb1561800), SPH_C32(0xdf5f1f40), SPH_C32(0x9975d43a),
+	  SPH_C32(0x1201bf3e), SPH_C32(0x73d0455e), SPH_C32(0x9e0c0000),
+	  SPH_C32(0x1d640000), SPH_C32(0xd1860029), SPH_C32(0xc4bb2000),
+	  SPH_C32(0x394075cd), SPH_C32(0x42bfdc93), SPH_C32(0x2c00ca32),
+	  SPH_C32(0xbdb66d12) },
+	{ SPH_C32(0x94130000), SPH_C32(0x46af0000), SPH_C32(0x5b98006d),
+	  SPH_C32(0x773d2000), SPH_C32(0x3868439c), SPH_C32(0xe0d8ebe7),
+	  SPH_C32(0xbe724151), SPH_C32(0x49943cef), SPH_C32(0x83560000),
+	  SPH_C32(0x36160000), SPH_C32(0x990b0029), SPH_C32(0x6bda3800),
+	  SPH_C32(0x1c8b5b08), SPH_C32(0x8ac66343), SPH_C32(0xada2ce1b),
+	  SPH_C32(0xa3c35bb4) },
+	{ SPH_C32(0x74310000), SPH_C32(0xf9850000), SPH_C32(0x25160072),
+	  SPH_C32(0x62990000), SPH_C32(0x750a3c50), SPH_C32(0x29d3c1d7),
+	  SPH_C32(0x6492d3cf), SPH_C32(0x66be3abe), SPH_C32(0xdcf80000),
+	  SPH_C32(0x04380000), SPH_C32(0x664c0022), SPH_C32(0x3abc0000),
+	  SPH_C32(0xb8ce247a), SPH_C32(0xbbac323a), SPH_C32(0xf5a95256),
+	  SPH_C32(0x09f293cb) },
+	{ SPH_C32(0x2c720000), SPH_C32(0x79fb0000), SPH_C32(0x5d250073),
+	  SPH_C32(0xa4f23800), SPH_C32(0x923d608c), SPH_C32(0x507efe0a),
+	  SPH_C32(0xc8e12da0), SPH_C32(0x5cfa430f), SPH_C32(0xc1a20000),
+	  SPH_C32(0x2f4a0000), SPH_C32(0x2ec10022), SPH_C32(0x95dd1800),
+	  SPH_C32(0x9d050abf), SPH_C32(0x73d58dea), SPH_C32(0x740b567f),
+	  SPH_C32(0x1787a56d) },
+	{ SPH_C32(0x696b0000), SPH_C32(0xd2f70000), SPH_C32(0x6d9b0072),
+	  SPH_C32(0xcdf81800), SPH_C32(0x50c11295), SPH_C32(0xe1aa7e07),
+	  SPH_C32(0xe530d7e6), SPH_C32(0x78cb0c18), SPH_C32(0x99e10000),
+	  SPH_C32(0xaf340000), SPH_C32(0x56f20023), SPH_C32(0x53b62000),
+	  SPH_C32(0x7a325663), SPH_C32(0x0a78b237), SPH_C32(0xd878a810),
+	  SPH_C32(0x2dc3dcdc) },
+	{ SPH_C32(0x31280000), SPH_C32(0x52890000), SPH_C32(0x15a80073),
+	  SPH_C32(0x0b932000), SPH_C32(0xb7f64e49), SPH_C32(0x980741da),
+	  SPH_C32(0x49432989), SPH_C32(0x428f75a9), SPH_C32(0x84bb0000),
+	  SPH_C32(0x84460000), SPH_C32(0x1e7f0023), SPH_C32(0xfcd73800),
+	  SPH_C32(0x5ff978a6), SPH_C32(0xc2010de7), SPH_C32(0x59daac39),
+	  SPH_C32(0x33b6ea7a) },
+	{ SPH_C32(0xd6e70000), SPH_C32(0x5ff30000), SPH_C32(0xec520066),
+	  SPH_C32(0x893a0000), SPH_C32(0xb9e6122b), SPH_C32(0x19cb054e),
+	  SPH_C32(0x67dbd935), SPH_C32(0xfdd0c236), SPH_C32(0x79c30000),
+	  SPH_C32(0x101e0000), SPH_C32(0x287c003c), SPH_C32(0x46120000),
+	  SPH_C32(0x375029af), SPH_C32(0xc3739807), SPH_C32(0x02983a8e),
+	  SPH_C32(0x02e9da8d) },
+	{ SPH_C32(0x8ea40000), SPH_C32(0xdf8d0000), SPH_C32(0x94610067),
+	  SPH_C32(0x4f513800), SPH_C32(0x5ed14ef7), SPH_C32(0x60663a93),
+	  SPH_C32(0xcba8275a), SPH_C32(0xc794bb87), SPH_C32(0x64990000),
+	  SPH_C32(0x3b6c0000), SPH_C32(0x60f1003c), SPH_C32(0xe9731800),
+	  SPH_C32(0x129b076a), SPH_C32(0x0b0a27d7), SPH_C32(0x833a3ea7),
+	  SPH_C32(0x1c9cec2b) },
+	{ SPH_C32(0xcbbd0000), SPH_C32(0x74810000), SPH_C32(0xa4df0066),
+	  SPH_C32(0x265b1800), SPH_C32(0x9c2d3cee), SPH_C32(0xd1b2ba9e),
+	  SPH_C32(0xe679dd1c), SPH_C32(0xe3a5f490), SPH_C32(0x3cda0000),
+	  SPH_C32(0xbb120000), SPH_C32(0x18c2003d), SPH_C32(0x2f182000),
+	  SPH_C32(0xf5ac5bb6), SPH_C32(0x72a7180a), SPH_C32(0x2f49c0c8),
+	  SPH_C32(0x26d8959a) },
+	{ SPH_C32(0x93fe0000), SPH_C32(0xf4ff0000), SPH_C32(0xdcec0067),
+	  SPH_C32(0xe0302000), SPH_C32(0x7b1a6032), SPH_C32(0xa81f8543),
+	  SPH_C32(0x4a0a2373), SPH_C32(0xd9e18d21), SPH_C32(0x21800000),
+	  SPH_C32(0x90600000), SPH_C32(0x504f003d), SPH_C32(0x80793800),
+	  SPH_C32(0xd0677573), SPH_C32(0xbadea7da), SPH_C32(0xaeebc4e1),
+	  SPH_C32(0x38ada33c) },
+	{ SPH_C32(0x73dc0000), SPH_C32(0x4bd50000), SPH_C32(0xa2620078),
+	  SPH_C32(0xf5940000), SPH_C32(0x36781ffe), SPH_C32(0x6114af73),
+	  SPH_C32(0x90eab1ed), SPH_C32(0xf6cb8b70), SPH_C32(0x7e2e0000),
+	  SPH_C32(0xa24e0000), SPH_C32(0xaf080036), SPH_C32(0xd11f0000),
+	  SPH_C32(0x74220a01), SPH_C32(0x8bb4f6a3), SPH_C32(0xf6e058ac),
+	  SPH_C32(0x929c6b43) },
+	{ SPH_C32(0x2b9f0000), SPH_C32(0xcbab0000), SPH_C32(0xda510079),
+	  SPH_C32(0x33ff3800), SPH_C32(0xd14f4322), SPH_C32(0x18b990ae),
+	  SPH_C32(0x3c994f82), SPH_C32(0xcc8ff2c1), SPH_C32(0x63740000),
+	  SPH_C32(0x893c0000), SPH_C32(0xe7850036), SPH_C32(0x7e7e1800),
+	  SPH_C32(0x51e924c4), SPH_C32(0x43cd4973), SPH_C32(0x77425c85),
+	  SPH_C32(0x8ce95de5) },
+	{ SPH_C32(0x6e860000), SPH_C32(0x60a70000), SPH_C32(0xeaef0078),
+	  SPH_C32(0x5af51800), SPH_C32(0x13b3313b), SPH_C32(0xa96d10a3),
+	  SPH_C32(0x1148b5c4), SPH_C32(0xe8bebdd6), SPH_C32(0x3b370000),
+	  SPH_C32(0x09420000), SPH_C32(0x9fb60037), SPH_C32(0xb8152000),
+	  SPH_C32(0xb6de7818), SPH_C32(0x3a6076ae), SPH_C32(0xdb31a2ea),
+	  SPH_C32(0xb6ad2454) },
+	{ SPH_C32(0x36c50000), SPH_C32(0xe0d90000), SPH_C32(0x92dc0079),
+	  SPH_C32(0x9c9e2000), SPH_C32(0xf4846de7), SPH_C32(0xd0c02f7e),
+	  SPH_C32(0xbd3b4bab), SPH_C32(0xd2fac467), SPH_C32(0x266d0000),
+	  SPH_C32(0x22300000), SPH_C32(0xd73b0037), SPH_C32(0x17743800),
+	  SPH_C32(0x931556dd), SPH_C32(0xf219c97e), SPH_C32(0x5a93a6c3),
+	  SPH_C32(0xa8d812f2) },
+	{ SPH_C32(0x538d0000), SPH_C32(0xa9fc0000), SPH_C32(0x9ef70006),
+	  SPH_C32(0x56ff0000), SPH_C32(0x0ae4004e), SPH_C32(0x92c5cdf9),
+	  SPH_C32(0xa9444018), SPH_C32(0x7f975691), SPH_C32(0x01dd0000),
+	  SPH_C32(0x80a80000), SPH_C32(0xf4960048), SPH_C32(0xa6000000),
+	  SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37), SPH_C32(0x6612cffd),
+	  SPH_C32(0x2c94459e) },
+	{ SPH_C32(0x0bce0000), SPH_C32(0x29820000), SPH_C32(0xe6c40007),
+	  SPH_C32(0x90943800), SPH_C32(0xedd35c92), SPH_C32(0xeb68f224),
+	  SPH_C32(0x0537be77), SPH_C32(0x45d32f20), SPH_C32(0x1c870000),
+	  SPH_C32(0xabda0000), SPH_C32(0xbc1b0048), SPH_C32(0x09611800),
+	  SPH_C32(0xb51e5067), SPH_C32(0x1f9f33e7), SPH_C32(0xe7b0cbd4),
+	  SPH_C32(0x32e17338) },
+	{ SPH_C32(0x4ed70000), SPH_C32(0x828e0000), SPH_C32(0xd67a0006),
+	  SPH_C32(0xf99e1800), SPH_C32(0x2f2f2e8b), SPH_C32(0x5abc7229),
+	  SPH_C32(0x28e64431), SPH_C32(0x61e26037), SPH_C32(0x44c40000),
+	  SPH_C32(0x2ba40000), SPH_C32(0xc4280049), SPH_C32(0xcf0a2000),
+	  SPH_C32(0x52290cbb), SPH_C32(0x66320c3a), SPH_C32(0x4bc335bb),
+	  SPH_C32(0x08a50a89) },
+	{ SPH_C32(0x16940000), SPH_C32(0x02f00000), SPH_C32(0xae490007),
+	  SPH_C32(0x3ff52000), SPH_C32(0xc8187257), SPH_C32(0x23114df4),
+	  SPH_C32(0x8495ba5e), SPH_C32(0x5ba61986), SPH_C32(0x599e0000),
+	  SPH_C32(0x00d60000), SPH_C32(0x8ca50049), SPH_C32(0x606b3800),
+	  SPH_C32(0x77e2227e), SPH_C32(0xae4bb3ea), SPH_C32(0xca613192),
+	  SPH_C32(0x16d03c2f) },
+	{ SPH_C32(0xf6b60000), SPH_C32(0xbdda0000), SPH_C32(0xd0c70018),
+	  SPH_C32(0x2a510000), SPH_C32(0x857a0d9b), SPH_C32(0xea1a67c4),
+	  SPH_C32(0x5e7528c0), SPH_C32(0x748c1fd7), SPH_C32(0x06300000),
+	  SPH_C32(0x32f80000), SPH_C32(0x73e20042), SPH_C32(0x310d0000),
+	  SPH_C32(0xd3a75d0c), SPH_C32(0x9f21e293), SPH_C32(0x926aaddf),
+	  SPH_C32(0xbce1f450) },
+	{ SPH_C32(0xaef50000), SPH_C32(0x3da40000), SPH_C32(0xa8f40019),
+	  SPH_C32(0xec3a3800), SPH_C32(0x624d5147), SPH_C32(0x93b75819),
+	  SPH_C32(0xf206d6af), SPH_C32(0x4ec86666), SPH_C32(0x1b6a0000),
+	  SPH_C32(0x198a0000), SPH_C32(0x3b6f0042), SPH_C32(0x9e6c1800),
+	  SPH_C32(0xf66c73c9), SPH_C32(0x57585d43), SPH_C32(0x13c8a9f6),
+	  SPH_C32(0xa294c2f6) },
+	{ SPH_C32(0xebec0000), SPH_C32(0x96a80000), SPH_C32(0x984a0018),
+	  SPH_C32(0x85301800), SPH_C32(0xa0b1235e), SPH_C32(0x2263d814),
+	  SPH_C32(0xdfd72ce9), SPH_C32(0x6af92971), SPH_C32(0x43290000),
+	  SPH_C32(0x99f40000), SPH_C32(0x435c0043), SPH_C32(0x58072000),
+	  SPH_C32(0x115b2f15), SPH_C32(0x2ef5629e), SPH_C32(0xbfbb5799),
+	  SPH_C32(0x98d0bb47) },
+	{ SPH_C32(0xb3af0000), SPH_C32(0x16d60000), SPH_C32(0xe0790019),
+	  SPH_C32(0x435b2000), SPH_C32(0x47867f82), SPH_C32(0x5bcee7c9),
+	  SPH_C32(0x73a4d286), SPH_C32(0x50bd50c0), SPH_C32(0x5e730000),
+	  SPH_C32(0xb2860000), SPH_C32(0x0bd10043), SPH_C32(0xf7663800),
+	  SPH_C32(0x349001d0), SPH_C32(0xe68cdd4e), SPH_C32(0x3e1953b0),
+	  SPH_C32(0x86a58de1) },
+	{ SPH_C32(0x54600000), SPH_C32(0x1bac0000), SPH_C32(0x1983000c),
+	  SPH_C32(0xc1f20000), SPH_C32(0x499623e0), SPH_C32(0xda02a35d),
+	  SPH_C32(0x5d3c223a), SPH_C32(0xefe2e75f), SPH_C32(0xa30b0000),
+	  SPH_C32(0x26de0000), SPH_C32(0x3dd2005c), SPH_C32(0x4da30000),
+	  SPH_C32(0x5c3950d9), SPH_C32(0xe7fe48ae), SPH_C32(0x655bc507),
+	  SPH_C32(0xb7fabd16) },
+	{ SPH_C32(0x0c230000), SPH_C32(0x9bd20000), SPH_C32(0x61b0000d),
+	  SPH_C32(0x07993800), SPH_C32(0xaea17f3c), SPH_C32(0xa3af9c80),
+	  SPH_C32(0xf14fdc55), SPH_C32(0xd5a69eee), SPH_C32(0xbe510000),
+	  SPH_C32(0x0dac0000), SPH_C32(0x755f005c), SPH_C32(0xe2c21800),
+	  SPH_C32(0x79f27e1c), SPH_C32(0x2f87f77e), SPH_C32(0xe4f9c12e),
+	  SPH_C32(0xa98f8bb0) },
+	{ SPH_C32(0x493a0000), SPH_C32(0x30de0000), SPH_C32(0x510e000c),
+	  SPH_C32(0x6e931800), SPH_C32(0x6c5d0d25), SPH_C32(0x127b1c8d),
+	  SPH_C32(0xdc9e2613), SPH_C32(0xf197d1f9), SPH_C32(0xe6120000),
+	  SPH_C32(0x8dd20000), SPH_C32(0x0d6c005d), SPH_C32(0x24a92000),
+	  SPH_C32(0x9ec522c0), SPH_C32(0x562ac8a3), SPH_C32(0x488a3f41),
+	  SPH_C32(0x93cbf201) },
+	{ SPH_C32(0x11790000), SPH_C32(0xb0a00000), SPH_C32(0x293d000d),
+	  SPH_C32(0xa8f82000), SPH_C32(0x8b6a51f9), SPH_C32(0x6bd62350),
+	  SPH_C32(0x70edd87c), SPH_C32(0xcbd3a848), SPH_C32(0xfb480000),
+	  SPH_C32(0xa6a00000), SPH_C32(0x45e1005d), SPH_C32(0x8bc83800),
+	  SPH_C32(0xbb0e0c05), SPH_C32(0x9e537773), SPH_C32(0xc9283b68),
+	  SPH_C32(0x8dbec4a7) },
+	{ SPH_C32(0xf15b0000), SPH_C32(0x0f8a0000), SPH_C32(0x57b30012),
+	  SPH_C32(0xbd5c0000), SPH_C32(0xc6082e35), SPH_C32(0xa2dd0960),
+	  SPH_C32(0xaa0d4ae2), SPH_C32(0xe4f9ae19), SPH_C32(0xa4e60000),
+	  SPH_C32(0x948e0000), SPH_C32(0xbaa60056), SPH_C32(0xdaae0000),
+	  SPH_C32(0x1f4b7377), SPH_C32(0xaf39260a), SPH_C32(0x9123a725),
+	  SPH_C32(0x278f0cd8) },
+	{ SPH_C32(0xa9180000), SPH_C32(0x8ff40000), SPH_C32(0x2f800013),
+	  SPH_C32(0x7b373800), SPH_C32(0x213f72e9), SPH_C32(0xdb7036bd),
+	  SPH_C32(0x067eb48d), SPH_C32(0xdebdd7a8), SPH_C32(0xb9bc0000),
+	  SPH_C32(0xbffc0000), SPH_C32(0xf22b0056), SPH_C32(0x75cf1800),
+	  SPH_C32(0x3a805db2), SPH_C32(0x674099da), SPH_C32(0x1081a30c),
+	  SPH_C32(0x39fa3a7e) },
+	{ SPH_C32(0xec010000), SPH_C32(0x24f80000), SPH_C32(0x1f3e0012),
+	  SPH_C32(0x123d1800), SPH_C32(0xe3c300f0), SPH_C32(0x6aa4b6b0),
+	  SPH_C32(0x2baf4ecb), SPH_C32(0xfa8c98bf), SPH_C32(0xe1ff0000),
+	  SPH_C32(0x3f820000), SPH_C32(0x8a180057), SPH_C32(0xb3a42000),
+	  SPH_C32(0xddb7016e), SPH_C32(0x1eeda607), SPH_C32(0xbcf25d63),
+	  SPH_C32(0x03be43cf) },
+	{ SPH_C32(0xb4420000), SPH_C32(0xa4860000), SPH_C32(0x670d0013),
+	  SPH_C32(0xd4562000), SPH_C32(0x04f45c2c), SPH_C32(0x1309896d),
+	  SPH_C32(0x87dcb0a4), SPH_C32(0xc0c8e10e), SPH_C32(0xfca50000),
+	  SPH_C32(0x14f00000), SPH_C32(0xc2950057), SPH_C32(0x1cc53800),
+	  SPH_C32(0xf87c2fab), SPH_C32(0xd69419d7), SPH_C32(0x3d50594a),
+	  SPH_C32(0x1dcb7569) },
+	{ SPH_C32(0xdb150000), SPH_C32(0xb6680000), SPH_C32(0xe1380028),
+	  SPH_C32(0xadb10000), SPH_C32(0xfbbc07d4), SPH_C32(0xf36b5c9e),
+	  SPH_C32(0x01d13074), SPH_C32(0x99872205), SPH_C32(0x0a1f0000),
+	  SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044), SPH_C32(0xb3860000),
+	  SPH_C32(0x01283651), SPH_C32(0xa2673774), SPH_C32(0x92728b63),
+	  SPH_C32(0xf42251fd) },
+	{ SPH_C32(0x83560000), SPH_C32(0x36160000), SPH_C32(0x990b0029),
+	  SPH_C32(0x6bda3800), SPH_C32(0x1c8b5b08), SPH_C32(0x8ac66343),
+	  SPH_C32(0xada2ce1b), SPH_C32(0xa3c35bb4), SPH_C32(0x17450000),
+	  SPH_C32(0x70b90000), SPH_C32(0xc2930044), SPH_C32(0x1ce71800),
+	  SPH_C32(0x24e31894), SPH_C32(0x6a1e88a4), SPH_C32(0x13d08f4a),
+	  SPH_C32(0xea57675b) },
+	{ SPH_C32(0xc64f0000), SPH_C32(0x9d1a0000), SPH_C32(0xa9b50028),
+	  SPH_C32(0x02d01800), SPH_C32(0xde772911), SPH_C32(0x3b12e34e),
+	  SPH_C32(0x8073345d), SPH_C32(0x87f214a3), SPH_C32(0x4f060000),
+	  SPH_C32(0xf0c70000), SPH_C32(0xbaa00045), SPH_C32(0xda8c2000),
+	  SPH_C32(0xc3d44448), SPH_C32(0x13b3b779), SPH_C32(0xbfa37125),
+	  SPH_C32(0xd0131eea) },
+	{ SPH_C32(0x9e0c0000), SPH_C32(0x1d640000), SPH_C32(0xd1860029),
+	  SPH_C32(0xc4bb2000), SPH_C32(0x394075cd), SPH_C32(0x42bfdc93),
+	  SPH_C32(0x2c00ca32), SPH_C32(0xbdb66d12), SPH_C32(0x525c0000),
+	  SPH_C32(0xdbb50000), SPH_C32(0xf22d0045), SPH_C32(0x75ed3800),
+	  SPH_C32(0xe61f6a8d), SPH_C32(0xdbca08a9), SPH_C32(0x3e01750c),
+	  SPH_C32(0xce66284c) },
+	{ SPH_C32(0x7e2e0000), SPH_C32(0xa24e0000), SPH_C32(0xaf080036),
+	  SPH_C32(0xd11f0000), SPH_C32(0x74220a01), SPH_C32(0x8bb4f6a3),
+	  SPH_C32(0xf6e058ac), SPH_C32(0x929c6b43), SPH_C32(0x0df20000),
+	  SPH_C32(0xe99b0000), SPH_C32(0x0d6a004e), SPH_C32(0x248b0000),
+	  SPH_C32(0x425a15ff), SPH_C32(0xeaa059d0), SPH_C32(0x660ae941),
+	  SPH_C32(0x6457e033) },
+	{ SPH_C32(0x266d0000), SPH_C32(0x22300000), SPH_C32(0xd73b0037),
+	  SPH_C32(0x17743800), SPH_C32(0x931556dd), SPH_C32(0xf219c97e),
+	  SPH_C32(0x5a93a6c3), SPH_C32(0xa8d812f2), SPH_C32(0x10a80000),
+	  SPH_C32(0xc2e90000), SPH_C32(0x45e7004e), SPH_C32(0x8bea1800),
+	  SPH_C32(0x67913b3a), SPH_C32(0x22d9e600), SPH_C32(0xe7a8ed68),
+	  SPH_C32(0x7a22d695) },
+	{ SPH_C32(0x63740000), SPH_C32(0x893c0000), SPH_C32(0xe7850036),
+	  SPH_C32(0x7e7e1800), SPH_C32(0x51e924c4), SPH_C32(0x43cd4973),
+	  SPH_C32(0x77425c85), SPH_C32(0x8ce95de5), SPH_C32(0x48eb0000),
+	  SPH_C32(0x42970000), SPH_C32(0x3dd4004f), SPH_C32(0x4d812000),
+	  SPH_C32(0x80a667e6), SPH_C32(0x5b74d9dd), SPH_C32(0x4bdb1307),
+	  SPH_C32(0x4066af24) },
+	{ SPH_C32(0x3b370000), SPH_C32(0x09420000), SPH_C32(0x9fb60037),
+	  SPH_C32(0xb8152000), SPH_C32(0xb6de7818), SPH_C32(0x3a6076ae),
+	  SPH_C32(0xdb31a2ea), SPH_C32(0xb6ad2454), SPH_C32(0x55b10000),
+	  SPH_C32(0x69e50000), SPH_C32(0x7559004f), SPH_C32(0xe2e03800),
+	  SPH_C32(0xa56d4923), SPH_C32(0x930d660d), SPH_C32(0xca79172e),
+	  SPH_C32(0x5e139982) },
+	{ SPH_C32(0xdcf80000), SPH_C32(0x04380000), SPH_C32(0x664c0022),
+	  SPH_C32(0x3abc0000), SPH_C32(0xb8ce247a), SPH_C32(0xbbac323a),
+	  SPH_C32(0xf5a95256), SPH_C32(0x09f293cb), SPH_C32(0xa8c90000),
+	  SPH_C32(0xfdbd0000), SPH_C32(0x435a0050), SPH_C32(0x58250000),
+	  SPH_C32(0xcdc4182a), SPH_C32(0x927ff3ed), SPH_C32(0x913b8199),
+	  SPH_C32(0x6f4ca975) },
+	{ SPH_C32(0x84bb0000), SPH_C32(0x84460000), SPH_C32(0x1e7f0023),
+	  SPH_C32(0xfcd73800), SPH_C32(0x5ff978a6), SPH_C32(0xc2010de7),
+	  SPH_C32(0x59daac39), SPH_C32(0x33b6ea7a), SPH_C32(0xb5930000),
+	  SPH_C32(0xd6cf0000), SPH_C32(0x0bd70050), SPH_C32(0xf7441800),
+	  SPH_C32(0xe80f36ef), SPH_C32(0x5a064c3d), SPH_C32(0x109985b0),
+	  SPH_C32(0x71399fd3) },
+	{ SPH_C32(0xc1a20000), SPH_C32(0x2f4a0000), SPH_C32(0x2ec10022),
+	  SPH_C32(0x95dd1800), SPH_C32(0x9d050abf), SPH_C32(0x73d58dea),
+	  SPH_C32(0x740b567f), SPH_C32(0x1787a56d), SPH_C32(0xedd00000),
+	  SPH_C32(0x56b10000), SPH_C32(0x73e40051), SPH_C32(0x312f2000),
+	  SPH_C32(0x0f386a33), SPH_C32(0x23ab73e0), SPH_C32(0xbcea7bdf),
+	  SPH_C32(0x4b7de662) },
+	{ SPH_C32(0x99e10000), SPH_C32(0xaf340000), SPH_C32(0x56f20023),
+	  SPH_C32(0x53b62000), SPH_C32(0x7a325663), SPH_C32(0x0a78b237),
+	  SPH_C32(0xd878a810), SPH_C32(0x2dc3dcdc), SPH_C32(0xf08a0000),
+	  SPH_C32(0x7dc30000), SPH_C32(0x3b690051), SPH_C32(0x9e4e3800),
+	  SPH_C32(0x2af344f6), SPH_C32(0xebd2cc30), SPH_C32(0x3d487ff6),
+	  SPH_C32(0x5508d0c4) },
+	{ SPH_C32(0x79c30000), SPH_C32(0x101e0000), SPH_C32(0x287c003c),
+	  SPH_C32(0x46120000), SPH_C32(0x375029af), SPH_C32(0xc3739807),
+	  SPH_C32(0x02983a8e), SPH_C32(0x02e9da8d), SPH_C32(0xaf240000),
+	  SPH_C32(0x4fed0000), SPH_C32(0xc42e005a), SPH_C32(0xcf280000),
+	  SPH_C32(0x8eb63b84), SPH_C32(0xdab89d49), SPH_C32(0x6543e3bb),
+	  SPH_C32(0xff3918bb) },
+	{ SPH_C32(0x21800000), SPH_C32(0x90600000), SPH_C32(0x504f003d),
+	  SPH_C32(0x80793800), SPH_C32(0xd0677573), SPH_C32(0xbadea7da),
+	  SPH_C32(0xaeebc4e1), SPH_C32(0x38ada33c), SPH_C32(0xb27e0000),
+	  SPH_C32(0x649f0000), SPH_C32(0x8ca3005a), SPH_C32(0x60491800),
+	  SPH_C32(0xab7d1541), SPH_C32(0x12c12299), SPH_C32(0xe4e1e792),
+	  SPH_C32(0xe14c2e1d) },
+	{ SPH_C32(0x64990000), SPH_C32(0x3b6c0000), SPH_C32(0x60f1003c),
+	  SPH_C32(0xe9731800), SPH_C32(0x129b076a), SPH_C32(0x0b0a27d7),
+	  SPH_C32(0x833a3ea7), SPH_C32(0x1c9cec2b), SPH_C32(0xea3d0000),
+	  SPH_C32(0xe4e10000), SPH_C32(0xf490005b), SPH_C32(0xa6222000),
+	  SPH_C32(0x4c4a499d), SPH_C32(0x6b6c1d44), SPH_C32(0x489219fd),
+	  SPH_C32(0xdb0857ac) },
+	{ SPH_C32(0x3cda0000), SPH_C32(0xbb120000), SPH_C32(0x18c2003d),
+	  SPH_C32(0x2f182000), SPH_C32(0xf5ac5bb6), SPH_C32(0x72a7180a),
+	  SPH_C32(0x2f49c0c8), SPH_C32(0x26d8959a), SPH_C32(0xf7670000),
+	  SPH_C32(0xcf930000), SPH_C32(0xbc1d005b), SPH_C32(0x09433800),
+	  SPH_C32(0x69816758), SPH_C32(0xa315a294), SPH_C32(0xc9301dd4),
+	  SPH_C32(0xc57d610a) },
+	{ SPH_C32(0x584f0000), SPH_C32(0x729f0000), SPH_C32(0xe07f000a),
+	  SPH_C32(0x43790000), SPH_C32(0x9b1948bd), SPH_C32(0xe74476ba),
+	  SPH_C32(0x5d240486), SPH_C32(0xa72142f2), SPH_C32(0x82870000),
+	  SPH_C32(0x445f0000), SPH_C32(0xf5d1006a), SPH_C32(0x48c80000),
+	  SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613), SPH_C32(0x3ae7fb0f),
+	  SPH_C32(0x12322569) },
+	{ SPH_C32(0x000c0000), SPH_C32(0xf2e10000), SPH_C32(0x984c000b),
+	  SPH_C32(0x85123800), SPH_C32(0x7c2e1461), SPH_C32(0x9ee94967),
+	  SPH_C32(0xf157fae9), SPH_C32(0x9d653b43), SPH_C32(0x9fdd0000),
+	  SPH_C32(0x6f2d0000), SPH_C32(0xbd5c006a), SPH_C32(0xe7a91800),
+	  SPH_C32(0xd5bb1f0e), SPH_C32(0x0bb019c3), SPH_C32(0xbb45ff26),
+	  SPH_C32(0x0c4713cf) },
+	{ SPH_C32(0x45150000), SPH_C32(0x59ed0000), SPH_C32(0xa8f2000a),
+	  SPH_C32(0xec181800), SPH_C32(0xbed26678), SPH_C32(0x2f3dc96a),
+	  SPH_C32(0xdc8600af), SPH_C32(0xb9547454), SPH_C32(0xc79e0000),
+	  SPH_C32(0xef530000), SPH_C32(0xc56f006b), SPH_C32(0x21c22000),
+	  SPH_C32(0x328c43d2), SPH_C32(0x721d261e), SPH_C32(0x17360149),
+	  SPH_C32(0x36036a7e) },
+	{ SPH_C32(0x1d560000), SPH_C32(0xd9930000), SPH_C32(0xd0c1000b),
+	  SPH_C32(0x2a732000), SPH_C32(0x59e53aa4), SPH_C32(0x5690f6b7),
+	  SPH_C32(0x70f5fec0), SPH_C32(0x83100de5), SPH_C32(0xdac40000),
+	  SPH_C32(0xc4210000), SPH_C32(0x8de2006b), SPH_C32(0x8ea33800),
+	  SPH_C32(0x17476d17), SPH_C32(0xba6499ce), SPH_C32(0x96940560),
+	  SPH_C32(0x28765cd8) },
+	{ SPH_C32(0xfd740000), SPH_C32(0x66b90000), SPH_C32(0xae4f0014),
+	  SPH_C32(0x3fd70000), SPH_C32(0x14874568), SPH_C32(0x9f9bdc87),
+	  SPH_C32(0xaa156c5e), SPH_C32(0xac3a0bb4), SPH_C32(0x856a0000),
+	  SPH_C32(0xf60f0000), SPH_C32(0x72a50060), SPH_C32(0xdfc50000),
+	  SPH_C32(0xb3021265), SPH_C32(0x8b0ec8b7), SPH_C32(0xce9f992d),
+	  SPH_C32(0x824794a7) },
+	{ SPH_C32(0xa5370000), SPH_C32(0xe6c70000), SPH_C32(0xd67c0015),
+	  SPH_C32(0xf9bc3800), SPH_C32(0xf3b019b4), SPH_C32(0xe636e35a),
+	  SPH_C32(0x06669231), SPH_C32(0x967e7205), SPH_C32(0x98300000),
+	  SPH_C32(0xdd7d0000), SPH_C32(0x3a280060), SPH_C32(0x70a41800),
+	  SPH_C32(0x96c93ca0), SPH_C32(0x43777767), SPH_C32(0x4f3d9d04),
+	  SPH_C32(0x9c32a201) },
+	{ SPH_C32(0xe02e0000), SPH_C32(0x4dcb0000), SPH_C32(0xe6c20014),
+	  SPH_C32(0x90b61800), SPH_C32(0x314c6bad), SPH_C32(0x57e26357),
+	  SPH_C32(0x2bb76877), SPH_C32(0xb24f3d12), SPH_C32(0xc0730000),
+	  SPH_C32(0x5d030000), SPH_C32(0x421b0061), SPH_C32(0xb6cf2000),
+	  SPH_C32(0x71fe607c), SPH_C32(0x3ada48ba), SPH_C32(0xe34e636b),
+	  SPH_C32(0xa676dbb0) },
+	{ SPH_C32(0xb86d0000), SPH_C32(0xcdb50000), SPH_C32(0x9ef10015),
+	  SPH_C32(0x56dd2000), SPH_C32(0xd67b3771), SPH_C32(0x2e4f5c8a),
+	  SPH_C32(0x87c49618), SPH_C32(0x880b44a3), SPH_C32(0xdd290000),
+	  SPH_C32(0x76710000), SPH_C32(0x0a960061), SPH_C32(0x19ae3800),
+	  SPH_C32(0x54354eb9), SPH_C32(0xf2a3f76a), SPH_C32(0x62ec6742),
+	  SPH_C32(0xb803ed16) },
+	{ SPH_C32(0x5fa20000), SPH_C32(0xc0cf0000), SPH_C32(0x670b0000),
+	  SPH_C32(0xd4740000), SPH_C32(0xd86b6b13), SPH_C32(0xaf83181e),
+	  SPH_C32(0xa95c66a4), SPH_C32(0x3754f33c), SPH_C32(0x20510000),
+	  SPH_C32(0xe2290000), SPH_C32(0x3c95007e), SPH_C32(0xa36b0000),
+	  SPH_C32(0x3c9c1fb0), SPH_C32(0xf3d1628a), SPH_C32(0x39aef1f5),
+	  SPH_C32(0x895cdde1) },
+	{ SPH_C32(0x07e10000), SPH_C32(0x40b10000), SPH_C32(0x1f380001),
+	  SPH_C32(0x121f3800), SPH_C32(0x3f5c37cf), SPH_C32(0xd62e27c3),
+	  SPH_C32(0x052f98cb), SPH_C32(0x0d108a8d), SPH_C32(0x3d0b0000),
+	  SPH_C32(0xc95b0000), SPH_C32(0x7418007e), SPH_C32(0x0c0a1800),
+	  SPH_C32(0x19573175), SPH_C32(0x3ba8dd5a), SPH_C32(0xb80cf5dc),
+	  SPH_C32(0x9729eb47) },
+	{ SPH_C32(0x42f80000), SPH_C32(0xebbd0000), SPH_C32(0x2f860000),
+	  SPH_C32(0x7b151800), SPH_C32(0xfda045d6), SPH_C32(0x67faa7ce),
+	  SPH_C32(0x28fe628d), SPH_C32(0x2921c59a), SPH_C32(0x65480000),
+	  SPH_C32(0x49250000), SPH_C32(0x0c2b007f), SPH_C32(0xca612000),
+	  SPH_C32(0xfe606da9), SPH_C32(0x4205e287), SPH_C32(0x147f0bb3),
+	  SPH_C32(0xad6d92f6) },
+	{ SPH_C32(0x1abb0000), SPH_C32(0x6bc30000), SPH_C32(0x57b50001),
+	  SPH_C32(0xbd7e2000), SPH_C32(0x1a97190a), SPH_C32(0x1e579813),
+	  SPH_C32(0x848d9ce2), SPH_C32(0x1365bc2b), SPH_C32(0x78120000),
+	  SPH_C32(0x62570000), SPH_C32(0x44a6007f), SPH_C32(0x65003800),
+	  SPH_C32(0xdbab436c), SPH_C32(0x8a7c5d57), SPH_C32(0x95dd0f9a),
+	  SPH_C32(0xb318a450) },
+	{ SPH_C32(0xfa990000), SPH_C32(0xd4e90000), SPH_C32(0x293b001e),
+	  SPH_C32(0xa8da0000), SPH_C32(0x57f566c6), SPH_C32(0xd75cb223),
+	  SPH_C32(0x5e6d0e7c), SPH_C32(0x3c4fba7a), SPH_C32(0x27bc0000),
+	  SPH_C32(0x50790000), SPH_C32(0xbbe10074), SPH_C32(0x34660000),
+	  SPH_C32(0x7fee3c1e), SPH_C32(0xbb160c2e), SPH_C32(0xcdd693d7),
+	  SPH_C32(0x19296c2f) },
+	{ SPH_C32(0xa2da0000), SPH_C32(0x54970000), SPH_C32(0x5108001f),
+	  SPH_C32(0x6eb13800), SPH_C32(0xb0c23a1a), SPH_C32(0xaef18dfe),
+	  SPH_C32(0xf21ef013), SPH_C32(0x060bc3cb), SPH_C32(0x3ae60000),
+	  SPH_C32(0x7b0b0000), SPH_C32(0xf36c0074), SPH_C32(0x9b071800),
+	  SPH_C32(0x5a2512db), SPH_C32(0x736fb3fe), SPH_C32(0x4c7497fe),
+	  SPH_C32(0x075c5a89) },
+	{ SPH_C32(0xe7c30000), SPH_C32(0xff9b0000), SPH_C32(0x61b6001e),
+	  SPH_C32(0x07bb1800), SPH_C32(0x723e4803), SPH_C32(0x1f250df3),
+	  SPH_C32(0xdfcf0a55), SPH_C32(0x223a8cdc), SPH_C32(0x62a50000),
+	  SPH_C32(0xfb750000), SPH_C32(0x8b5f0075), SPH_C32(0x5d6c2000),
+	  SPH_C32(0xbd124e07), SPH_C32(0x0ac28c23), SPH_C32(0xe0076991),
+	  SPH_C32(0x3d182338) },
+	{ SPH_C32(0xbf800000), SPH_C32(0x7fe50000), SPH_C32(0x1985001f),
+	  SPH_C32(0xc1d02000), SPH_C32(0x950914df), SPH_C32(0x6688322e),
+	  SPH_C32(0x73bcf43a), SPH_C32(0x187ef56d), SPH_C32(0x7fff0000),
+	  SPH_C32(0xd0070000), SPH_C32(0xc3d20075), SPH_C32(0xf20d3800),
+	  SPH_C32(0x98d960c2), SPH_C32(0xc2bb33f3), SPH_C32(0x61a56db8),
+	  SPH_C32(0x236d159e) },
+	{ SPH_C32(0xd0d70000), SPH_C32(0x6d0b0000), SPH_C32(0x9fb00024),
+	  SPH_C32(0xb8370000), SPH_C32(0x6a414f27), SPH_C32(0x86eae7dd),
+	  SPH_C32(0xf5b174ea), SPH_C32(0x41313666), SPH_C32(0x89450000),
+	  SPH_C32(0x9f3c0000), SPH_C32(0x8b590066), SPH_C32(0x5d4e0000),
+	  SPH_C32(0x618d7938), SPH_C32(0xb6481d50), SPH_C32(0xce87bf91),
+	  SPH_C32(0xca84310a) },
+	{ SPH_C32(0x88940000), SPH_C32(0xed750000), SPH_C32(0xe7830025),
+	  SPH_C32(0x7e5c3800), SPH_C32(0x8d7613fb), SPH_C32(0xff47d800),
+	  SPH_C32(0x59c28a85), SPH_C32(0x7b754fd7), SPH_C32(0x941f0000),
+	  SPH_C32(0xb44e0000), SPH_C32(0xc3d40066), SPH_C32(0xf22f1800),
+	  SPH_C32(0x444657fd), SPH_C32(0x7e31a280), SPH_C32(0x4f25bbb8),
+	  SPH_C32(0xd4f107ac) },
+	{ SPH_C32(0xcd8d0000), SPH_C32(0x46790000), SPH_C32(0xd73d0024),
+	  SPH_C32(0x17561800), SPH_C32(0x4f8a61e2), SPH_C32(0x4e93580d),
+	  SPH_C32(0x741370c3), SPH_C32(0x5f4400c0), SPH_C32(0xcc5c0000),
+	  SPH_C32(0x34300000), SPH_C32(0xbbe70067), SPH_C32(0x34442000),
+	  SPH_C32(0xa3710b21), SPH_C32(0x079c9d5d), SPH_C32(0xe35645d7),
+	  SPH_C32(0xeeb57e1d) },
+	{ SPH_C32(0x95ce0000), SPH_C32(0xc6070000), SPH_C32(0xaf0e0025),
+	  SPH_C32(0xd13d2000), SPH_C32(0xa8bd3d3e), SPH_C32(0x373e67d0),
+	  SPH_C32(0xd8608eac), SPH_C32(0x65007971), SPH_C32(0xd1060000),
+	  SPH_C32(0x1f420000), SPH_C32(0xf36a0067), SPH_C32(0x9b253800),
+	  SPH_C32(0x86ba25e4), SPH_C32(0xcfe5228d), SPH_C32(0x62f441fe),
+	  SPH_C32(0xf0c048bb) },
+	{ SPH_C32(0x75ec0000), SPH_C32(0x792d0000), SPH_C32(0xd180003a),
+	  SPH_C32(0xc4990000), SPH_C32(0xe5df42f2), SPH_C32(0xfe354de0),
+	  SPH_C32(0x02801c32), SPH_C32(0x4a2a7f20), SPH_C32(0x8ea80000),
+	  SPH_C32(0x2d6c0000), SPH_C32(0x0c2d006c), SPH_C32(0xca430000),
+	  SPH_C32(0x22ff5a96), SPH_C32(0xfe8f73f4), SPH_C32(0x3affddb3),
+	  SPH_C32(0x5af180c4) },
+	{ SPH_C32(0x2daf0000), SPH_C32(0xf9530000), SPH_C32(0xa9b3003b),
+	  SPH_C32(0x02f23800), SPH_C32(0x02e81e2e), SPH_C32(0x8798723d),
+	  SPH_C32(0xaef3e25d), SPH_C32(0x706e0691), SPH_C32(0x93f20000),
+	  SPH_C32(0x061e0000), SPH_C32(0x44a0006c), SPH_C32(0x65221800),
+	  SPH_C32(0x07347453), SPH_C32(0x36f6cc24), SPH_C32(0xbb5dd99a),
+	  SPH_C32(0x4484b662) },
+	{ SPH_C32(0x68b60000), SPH_C32(0x525f0000), SPH_C32(0x990d003a),
+	  SPH_C32(0x6bf81800), SPH_C32(0xc0146c37), SPH_C32(0x364cf230),
+	  SPH_C32(0x8322181b), SPH_C32(0x545f4986), SPH_C32(0xcbb10000),
+	  SPH_C32(0x86600000), SPH_C32(0x3c93006d), SPH_C32(0xa3492000),
+	  SPH_C32(0xe003288f), SPH_C32(0x4f5bf3f9), SPH_C32(0x172e27f5),
+	  SPH_C32(0x7ec0cfd3) },
+	{ SPH_C32(0x30f50000), SPH_C32(0xd2210000), SPH_C32(0xe13e003b),
+	  SPH_C32(0xad932000), SPH_C32(0x272330eb), SPH_C32(0x4fe1cded),
+	  SPH_C32(0x2f51e674), SPH_C32(0x6e1b3037), SPH_C32(0xd6eb0000),
+	  SPH_C32(0xad120000), SPH_C32(0x741e006d), SPH_C32(0x0c283800),
+	  SPH_C32(0xc5c8064a), SPH_C32(0x87224c29), SPH_C32(0x968c23dc),
+	  SPH_C32(0x60b5f975) },
+	{ SPH_C32(0xd73a0000), SPH_C32(0xdf5b0000), SPH_C32(0x18c4002e),
+	  SPH_C32(0x2f3a0000), SPH_C32(0x29336c89), SPH_C32(0xce2d8979),
+	  SPH_C32(0x01c916c8), SPH_C32(0xd14487a8), SPH_C32(0x2b930000),
+	  SPH_C32(0x394a0000), SPH_C32(0x421d0072), SPH_C32(0xb6ed0000),
+	  SPH_C32(0xad615743), SPH_C32(0x8650d9c9), SPH_C32(0xcdceb56b),
+	  SPH_C32(0x51eac982) },
+	{ SPH_C32(0x8f790000), SPH_C32(0x5f250000), SPH_C32(0x60f7002f),
+	  SPH_C32(0xe9513800), SPH_C32(0xce043055), SPH_C32(0xb780b6a4),
+	  SPH_C32(0xadbae8a7), SPH_C32(0xeb00fe19), SPH_C32(0x36c90000),
+	  SPH_C32(0x12380000), SPH_C32(0x0a900072), SPH_C32(0x198c1800),
+	  SPH_C32(0x88aa7986), SPH_C32(0x4e296619), SPH_C32(0x4c6cb142),
+	  SPH_C32(0x4f9fff24) },
+	{ SPH_C32(0xca600000), SPH_C32(0xf4290000), SPH_C32(0x5049002e),
+	  SPH_C32(0x805b1800), SPH_C32(0x0cf8424c), SPH_C32(0x065436a9),
+	  SPH_C32(0x806b12e1), SPH_C32(0xcf31b10e), SPH_C32(0x6e8a0000),
+	  SPH_C32(0x92460000), SPH_C32(0x72a30073), SPH_C32(0xdfe72000),
+	  SPH_C32(0x6f9d255a), SPH_C32(0x378459c4), SPH_C32(0xe01f4f2d),
+	  SPH_C32(0x75db8695) },
+	{ SPH_C32(0x92230000), SPH_C32(0x74570000), SPH_C32(0x287a002f),
+	  SPH_C32(0x46302000), SPH_C32(0xebcf1e90), SPH_C32(0x7ff90974),
+	  SPH_C32(0x2c18ec8e), SPH_C32(0xf575c8bf), SPH_C32(0x73d00000),
+	  SPH_C32(0xb9340000), SPH_C32(0x3a2e0073), SPH_C32(0x70863800),
+	  SPH_C32(0x4a560b9f), SPH_C32(0xfffde614), SPH_C32(0x61bd4b04),
+	  SPH_C32(0x6baeb033) },
+	{ SPH_C32(0x72010000), SPH_C32(0xcb7d0000), SPH_C32(0x56f40030),
+	  SPH_C32(0x53940000), SPH_C32(0xa6ad615c), SPH_C32(0xb6f22344),
+	  SPH_C32(0xf6f87e10), SPH_C32(0xda5fceee), SPH_C32(0x2c7e0000),
+	  SPH_C32(0x8b1a0000), SPH_C32(0xc5690078), SPH_C32(0x21e00000),
+	  SPH_C32(0xee1374ed), SPH_C32(0xce97b76d), SPH_C32(0x39b6d749),
+	  SPH_C32(0xc19f784c) },
+	{ SPH_C32(0x2a420000), SPH_C32(0x4b030000), SPH_C32(0x2ec70031),
+	  SPH_C32(0x95ff3800), SPH_C32(0x419a3d80), SPH_C32(0xcf5f1c99),
+	  SPH_C32(0x5a8b807f), SPH_C32(0xe01bb75f), SPH_C32(0x31240000),
+	  SPH_C32(0xa0680000), SPH_C32(0x8de40078), SPH_C32(0x8e811800),
+	  SPH_C32(0xcbd85a28), SPH_C32(0x06ee08bd), SPH_C32(0xb814d360),
+	  SPH_C32(0xdfea4eea) },
+	{ SPH_C32(0x6f5b0000), SPH_C32(0xe00f0000), SPH_C32(0x1e790030),
+	  SPH_C32(0xfcf51800), SPH_C32(0x83664f99), SPH_C32(0x7e8b9c94),
+	  SPH_C32(0x775a7a39), SPH_C32(0xc42af848), SPH_C32(0x69670000),
+	  SPH_C32(0x20160000), SPH_C32(0xf5d70079), SPH_C32(0x48ea2000),
+	  SPH_C32(0x2cef06f4), SPH_C32(0x7f433760), SPH_C32(0x14672d0f),
+	  SPH_C32(0xe5ae375b) },
+	{ SPH_C32(0x37180000), SPH_C32(0x60710000), SPH_C32(0x664a0031),
+	  SPH_C32(0x3a9e2000), SPH_C32(0x64511345), SPH_C32(0x0726a349),
+	  SPH_C32(0xdb298456), SPH_C32(0xfe6e81f9), SPH_C32(0x743d0000),
+	  SPH_C32(0x0b640000), SPH_C32(0xbd5a0079), SPH_C32(0xe78b3800),
+	  SPH_C32(0x09242831), SPH_C32(0xb73a88b0), SPH_C32(0x95c52926),
+	  SPH_C32(0xfbdb01fd) },
+	{ SPH_C32(0x01dd0000), SPH_C32(0x80a80000), SPH_C32(0xf4960048),
+	  SPH_C32(0xa6000000), SPH_C32(0x90d57ea2), SPH_C32(0xd7e68c37),
+	  SPH_C32(0x6612cffd), SPH_C32(0x2c94459e), SPH_C32(0x52500000),
+	  SPH_C32(0x29540000), SPH_C32(0x6a61004e), SPH_C32(0xf0ff0000),
+	  SPH_C32(0x9a317eec), SPH_C32(0x452341ce), SPH_C32(0xcf568fe5),
+	  SPH_C32(0x5303130f) },
+	{ SPH_C32(0x599e0000), SPH_C32(0x00d60000), SPH_C32(0x8ca50049),
+	  SPH_C32(0x606b3800), SPH_C32(0x77e2227e), SPH_C32(0xae4bb3ea),
+	  SPH_C32(0xca613192), SPH_C32(0x16d03c2f), SPH_C32(0x4f0a0000),
+	  SPH_C32(0x02260000), SPH_C32(0x22ec004e), SPH_C32(0x5f9e1800),
+	  SPH_C32(0xbffa5029), SPH_C32(0x8d5afe1e), SPH_C32(0x4ef48bcc),
+	  SPH_C32(0x4d7625a9) },
+	{ SPH_C32(0x1c870000), SPH_C32(0xabda0000), SPH_C32(0xbc1b0048),
+	  SPH_C32(0x09611800), SPH_C32(0xb51e5067), SPH_C32(0x1f9f33e7),
+	  SPH_C32(0xe7b0cbd4), SPH_C32(0x32e17338), SPH_C32(0x17490000),
+	  SPH_C32(0x82580000), SPH_C32(0x5adf004f), SPH_C32(0x99f52000),
+	  SPH_C32(0x58cd0cf5), SPH_C32(0xf4f7c1c3), SPH_C32(0xe28775a3),
+	  SPH_C32(0x77325c18) },
+	{ SPH_C32(0x44c40000), SPH_C32(0x2ba40000), SPH_C32(0xc4280049),
+	  SPH_C32(0xcf0a2000), SPH_C32(0x52290cbb), SPH_C32(0x66320c3a),
+	  SPH_C32(0x4bc335bb), SPH_C32(0x08a50a89), SPH_C32(0x0a130000),
+	  SPH_C32(0xa92a0000), SPH_C32(0x1252004f), SPH_C32(0x36943800),
+	  SPH_C32(0x7d062230), SPH_C32(0x3c8e7e13), SPH_C32(0x6325718a),
+	  SPH_C32(0x69476abe) },
+	{ SPH_C32(0xa4e60000), SPH_C32(0x948e0000), SPH_C32(0xbaa60056),
+	  SPH_C32(0xdaae0000), SPH_C32(0x1f4b7377), SPH_C32(0xaf39260a),
+	  SPH_C32(0x9123a725), SPH_C32(0x278f0cd8), SPH_C32(0x55bd0000),
+	  SPH_C32(0x9b040000), SPH_C32(0xed150044), SPH_C32(0x67f20000),
+	  SPH_C32(0xd9435d42), SPH_C32(0x0de42f6a), SPH_C32(0x3b2eedc7),
+	  SPH_C32(0xc376a2c1) },
+	{ SPH_C32(0xfca50000), SPH_C32(0x14f00000), SPH_C32(0xc2950057),
+	  SPH_C32(0x1cc53800), SPH_C32(0xf87c2fab), SPH_C32(0xd69419d7),
+	  SPH_C32(0x3d50594a), SPH_C32(0x1dcb7569), SPH_C32(0x48e70000),
+	  SPH_C32(0xb0760000), SPH_C32(0xa5980044), SPH_C32(0xc8931800),
+	  SPH_C32(0xfc887387), SPH_C32(0xc59d90ba), SPH_C32(0xba8ce9ee),
+	  SPH_C32(0xdd039467) },
+	{ SPH_C32(0xb9bc0000), SPH_C32(0xbffc0000), SPH_C32(0xf22b0056),
+	  SPH_C32(0x75cf1800), SPH_C32(0x3a805db2), SPH_C32(0x674099da),
+	  SPH_C32(0x1081a30c), SPH_C32(0x39fa3a7e), SPH_C32(0x10a40000),
+	  SPH_C32(0x30080000), SPH_C32(0xddab0045), SPH_C32(0x0ef82000),
+	  SPH_C32(0x1bbf2f5b), SPH_C32(0xbc30af67), SPH_C32(0x16ff1781),
+	  SPH_C32(0xe747edd6) },
+	{ SPH_C32(0xe1ff0000), SPH_C32(0x3f820000), SPH_C32(0x8a180057),
+	  SPH_C32(0xb3a42000), SPH_C32(0xddb7016e), SPH_C32(0x1eeda607),
+	  SPH_C32(0xbcf25d63), SPH_C32(0x03be43cf), SPH_C32(0x0dfe0000),
+	  SPH_C32(0x1b7a0000), SPH_C32(0x95260045), SPH_C32(0xa1993800),
+	  SPH_C32(0x3e74019e), SPH_C32(0x744910b7), SPH_C32(0x975d13a8),
+	  SPH_C32(0xf932db70) },
+	{ SPH_C32(0x06300000), SPH_C32(0x32f80000), SPH_C32(0x73e20042),
+	  SPH_C32(0x310d0000), SPH_C32(0xd3a75d0c), SPH_C32(0x9f21e293),
+	  SPH_C32(0x926aaddf), SPH_C32(0xbce1f450), SPH_C32(0xf0860000),
+	  SPH_C32(0x8f220000), SPH_C32(0xa325005a), SPH_C32(0x1b5c0000),
+	  SPH_C32(0x56dd5097), SPH_C32(0x753b8557), SPH_C32(0xcc1f851f),
+	  SPH_C32(0xc86deb87) },
+	{ SPH_C32(0x5e730000), SPH_C32(0xb2860000), SPH_C32(0x0bd10043),
+	  SPH_C32(0xf7663800), SPH_C32(0x349001d0), SPH_C32(0xe68cdd4e),
+	  SPH_C32(0x3e1953b0), SPH_C32(0x86a58de1), SPH_C32(0xeddc0000),
+	  SPH_C32(0xa4500000), SPH_C32(0xeba8005a), SPH_C32(0xb43d1800),
+	  SPH_C32(0x73167e52), SPH_C32(0xbd423a87), SPH_C32(0x4dbd8136),
+	  SPH_C32(0xd618dd21) },
+	{ SPH_C32(0x1b6a0000), SPH_C32(0x198a0000), SPH_C32(0x3b6f0042),
+	  SPH_C32(0x9e6c1800), SPH_C32(0xf66c73c9), SPH_C32(0x57585d43),
+	  SPH_C32(0x13c8a9f6), SPH_C32(0xa294c2f6), SPH_C32(0xb59f0000),
+	  SPH_C32(0x242e0000), SPH_C32(0x939b005b), SPH_C32(0x72562000),
+	  SPH_C32(0x9421228e), SPH_C32(0xc4ef055a), SPH_C32(0xe1ce7f59),
+	  SPH_C32(0xec5ca490) },
+	{ SPH_C32(0x43290000), SPH_C32(0x99f40000), SPH_C32(0x435c0043),
+	  SPH_C32(0x58072000), SPH_C32(0x115b2f15), SPH_C32(0x2ef5629e),
+	  SPH_C32(0xbfbb5799), SPH_C32(0x98d0bb47), SPH_C32(0xa8c50000),
+	  SPH_C32(0x0f5c0000), SPH_C32(0xdb16005b), SPH_C32(0xdd373800),
+	  SPH_C32(0xb1ea0c4b), SPH_C32(0x0c96ba8a), SPH_C32(0x606c7b70),
+	  SPH_C32(0xf2299236) },
+	{ SPH_C32(0xa30b0000), SPH_C32(0x26de0000), SPH_C32(0x3dd2005c),
+	  SPH_C32(0x4da30000), SPH_C32(0x5c3950d9), SPH_C32(0xe7fe48ae),
+	  SPH_C32(0x655bc507), SPH_C32(0xb7fabd16), SPH_C32(0xf76b0000),
+	  SPH_C32(0x3d720000), SPH_C32(0x24510050), SPH_C32(0x8c510000),
+	  SPH_C32(0x15af7339), SPH_C32(0x3dfcebf3), SPH_C32(0x3867e73d),
+	  SPH_C32(0x58185a49) },
+	{ SPH_C32(0xfb480000), SPH_C32(0xa6a00000), SPH_C32(0x45e1005d),
+	  SPH_C32(0x8bc83800), SPH_C32(0xbb0e0c05), SPH_C32(0x9e537773),
+	  SPH_C32(0xc9283b68), SPH_C32(0x8dbec4a7), SPH_C32(0xea310000),
+	  SPH_C32(0x16000000), SPH_C32(0x6cdc0050), SPH_C32(0x23301800),
+	  SPH_C32(0x30645dfc), SPH_C32(0xf5855423), SPH_C32(0xb9c5e314),
+	  SPH_C32(0x466d6cef) },
+	{ SPH_C32(0xbe510000), SPH_C32(0x0dac0000), SPH_C32(0x755f005c),
+	  SPH_C32(0xe2c21800), SPH_C32(0x79f27e1c), SPH_C32(0x2f87f77e),
+	  SPH_C32(0xe4f9c12e), SPH_C32(0xa98f8bb0), SPH_C32(0xb2720000),
+	  SPH_C32(0x967e0000), SPH_C32(0x14ef0051), SPH_C32(0xe55b2000),
+	  SPH_C32(0xd7530120), SPH_C32(0x8c286bfe), SPH_C32(0x15b61d7b),
+	  SPH_C32(0x7c29155e) },
+	{ SPH_C32(0xe6120000), SPH_C32(0x8dd20000), SPH_C32(0x0d6c005d),
+	  SPH_C32(0x24a92000), SPH_C32(0x9ec522c0), SPH_C32(0x562ac8a3),
+	  SPH_C32(0x488a3f41), SPH_C32(0x93cbf201), SPH_C32(0xaf280000),
+	  SPH_C32(0xbd0c0000), SPH_C32(0x5c620051), SPH_C32(0x4a3a3800),
+	  SPH_C32(0xf2982fe5), SPH_C32(0x4451d42e), SPH_C32(0x94141952),
+	  SPH_C32(0x625c23f8) },
+	{ SPH_C32(0x89450000), SPH_C32(0x9f3c0000), SPH_C32(0x8b590066),
+	  SPH_C32(0x5d4e0000), SPH_C32(0x618d7938), SPH_C32(0xb6481d50),
+	  SPH_C32(0xce87bf91), SPH_C32(0xca84310a), SPH_C32(0x59920000),
+	  SPH_C32(0xf2370000), SPH_C32(0x14e90042), SPH_C32(0xe5790000),
+	  SPH_C32(0x0bcc361f), SPH_C32(0x30a2fa8d), SPH_C32(0x3b36cb7b),
+	  SPH_C32(0x8bb5076c) },
+	{ SPH_C32(0xd1060000), SPH_C32(0x1f420000), SPH_C32(0xf36a0067),
+	  SPH_C32(0x9b253800), SPH_C32(0x86ba25e4), SPH_C32(0xcfe5228d),
+	  SPH_C32(0x62f441fe), SPH_C32(0xf0c048bb), SPH_C32(0x44c80000),
+	  SPH_C32(0xd9450000), SPH_C32(0x5c640042), SPH_C32(0x4a181800),
+	  SPH_C32(0x2e0718da), SPH_C32(0xf8db455d), SPH_C32(0xba94cf52),
+	  SPH_C32(0x95c031ca) },
+	{ SPH_C32(0x941f0000), SPH_C32(0xb44e0000), SPH_C32(0xc3d40066),
+	  SPH_C32(0xf22f1800), SPH_C32(0x444657fd), SPH_C32(0x7e31a280),
+	  SPH_C32(0x4f25bbb8), SPH_C32(0xd4f107ac), SPH_C32(0x1c8b0000),
+	  SPH_C32(0x593b0000), SPH_C32(0x24570043), SPH_C32(0x8c732000),
+	  SPH_C32(0xc9304406), SPH_C32(0x81767a80), SPH_C32(0x16e7313d),
+	  SPH_C32(0xaf84487b) },
+	{ SPH_C32(0xcc5c0000), SPH_C32(0x34300000), SPH_C32(0xbbe70067),
+	  SPH_C32(0x34442000), SPH_C32(0xa3710b21), SPH_C32(0x079c9d5d),
+	  SPH_C32(0xe35645d7), SPH_C32(0xeeb57e1d), SPH_C32(0x01d10000),
+	  SPH_C32(0x72490000), SPH_C32(0x6cda0043), SPH_C32(0x23123800),
+	  SPH_C32(0xecfb6ac3), SPH_C32(0x490fc550), SPH_C32(0x97453514),
+	  SPH_C32(0xb1f17edd) },
+	{ SPH_C32(0x2c7e0000), SPH_C32(0x8b1a0000), SPH_C32(0xc5690078),
+	  SPH_C32(0x21e00000), SPH_C32(0xee1374ed), SPH_C32(0xce97b76d),
+	  SPH_C32(0x39b6d749), SPH_C32(0xc19f784c), SPH_C32(0x5e7f0000),
+	  SPH_C32(0x40670000), SPH_C32(0x939d0048), SPH_C32(0x72740000),
+	  SPH_C32(0x48be15b1), SPH_C32(0x78659429), SPH_C32(0xcf4ea959),
+	  SPH_C32(0x1bc0b6a2) },
+	{ SPH_C32(0x743d0000), SPH_C32(0x0b640000), SPH_C32(0xbd5a0079),
+	  SPH_C32(0xe78b3800), SPH_C32(0x09242831), SPH_C32(0xb73a88b0),
+	  SPH_C32(0x95c52926), SPH_C32(0xfbdb01fd), SPH_C32(0x43250000),
+	  SPH_C32(0x6b150000), SPH_C32(0xdb100048), SPH_C32(0xdd151800),
+	  SPH_C32(0x6d753b74), SPH_C32(0xb01c2bf9), SPH_C32(0x4eecad70),
+	  SPH_C32(0x05b58004) },
+	{ SPH_C32(0x31240000), SPH_C32(0xa0680000), SPH_C32(0x8de40078),
+	  SPH_C32(0x8e811800), SPH_C32(0xcbd85a28), SPH_C32(0x06ee08bd),
+	  SPH_C32(0xb814d360), SPH_C32(0xdfea4eea), SPH_C32(0x1b660000),
+	  SPH_C32(0xeb6b0000), SPH_C32(0xa3230049), SPH_C32(0x1b7e2000),
+	  SPH_C32(0x8a4267a8), SPH_C32(0xc9b11424), SPH_C32(0xe29f531f),
+	  SPH_C32(0x3ff1f9b5) },
+	{ SPH_C32(0x69670000), SPH_C32(0x20160000), SPH_C32(0xf5d70079),
+	  SPH_C32(0x48ea2000), SPH_C32(0x2cef06f4), SPH_C32(0x7f433760),
+	  SPH_C32(0x14672d0f), SPH_C32(0xe5ae375b), SPH_C32(0x063c0000),
+	  SPH_C32(0xc0190000), SPH_C32(0xebae0049), SPH_C32(0xb41f3800),
+	  SPH_C32(0xaf89496d), SPH_C32(0x01c8abf4), SPH_C32(0x633d5736),
+	  SPH_C32(0x2184cf13) },
+	{ SPH_C32(0x8ea80000), SPH_C32(0x2d6c0000), SPH_C32(0x0c2d006c),
+	  SPH_C32(0xca430000), SPH_C32(0x22ff5a96), SPH_C32(0xfe8f73f4),
+	  SPH_C32(0x3affddb3), SPH_C32(0x5af180c4), SPH_C32(0xfb440000),
+	  SPH_C32(0x54410000), SPH_C32(0xddad0056), SPH_C32(0x0eda0000),
+	  SPH_C32(0xc7201864), SPH_C32(0x00ba3e14), SPH_C32(0x387fc181),
+	  SPH_C32(0x10dbffe4) },
+	{ SPH_C32(0xd6eb0000), SPH_C32(0xad120000), SPH_C32(0x741e006d),
+	  SPH_C32(0x0c283800), SPH_C32(0xc5c8064a), SPH_C32(0x87224c29),
+	  SPH_C32(0x968c23dc), SPH_C32(0x60b5f975), SPH_C32(0xe61e0000),
+	  SPH_C32(0x7f330000), SPH_C32(0x95200056), SPH_C32(0xa1bb1800),
+	  SPH_C32(0xe2eb36a1), SPH_C32(0xc8c381c4), SPH_C32(0xb9ddc5a8),
+	  SPH_C32(0x0eaec942) },
+	{ SPH_C32(0x93f20000), SPH_C32(0x061e0000), SPH_C32(0x44a0006c),
+	  SPH_C32(0x65221800), SPH_C32(0x07347453), SPH_C32(0x36f6cc24),
+	  SPH_C32(0xbb5dd99a), SPH_C32(0x4484b662), SPH_C32(0xbe5d0000),
+	  SPH_C32(0xff4d0000), SPH_C32(0xed130057), SPH_C32(0x67d02000),
+	  SPH_C32(0x05dc6a7d), SPH_C32(0xb16ebe19), SPH_C32(0x15ae3bc7),
+	  SPH_C32(0x34eab0f3) },
+	{ SPH_C32(0xcbb10000), SPH_C32(0x86600000), SPH_C32(0x3c93006d),
+	  SPH_C32(0xa3492000), SPH_C32(0xe003288f), SPH_C32(0x4f5bf3f9),
+	  SPH_C32(0x172e27f5), SPH_C32(0x7ec0cfd3), SPH_C32(0xa3070000),
+	  SPH_C32(0xd43f0000), SPH_C32(0xa59e0057), SPH_C32(0xc8b13800),
+	  SPH_C32(0x201744b8), SPH_C32(0x791701c9), SPH_C32(0x940c3fee),
+	  SPH_C32(0x2a9f8655) },
+	{ SPH_C32(0x2b930000), SPH_C32(0x394a0000), SPH_C32(0x421d0072),
+	  SPH_C32(0xb6ed0000), SPH_C32(0xad615743), SPH_C32(0x8650d9c9),
+	  SPH_C32(0xcdceb56b), SPH_C32(0x51eac982), SPH_C32(0xfca90000),
+	  SPH_C32(0xe6110000), SPH_C32(0x5ad9005c), SPH_C32(0x99d70000),
+	  SPH_C32(0x84523bca), SPH_C32(0x487d50b0), SPH_C32(0xcc07a3a3),
+	  SPH_C32(0x80ae4e2a) },
+	{ SPH_C32(0x73d00000), SPH_C32(0xb9340000), SPH_C32(0x3a2e0073),
+	  SPH_C32(0x70863800), SPH_C32(0x4a560b9f), SPH_C32(0xfffde614),
+	  SPH_C32(0x61bd4b04), SPH_C32(0x6baeb033), SPH_C32(0xe1f30000),
+	  SPH_C32(0xcd630000), SPH_C32(0x1254005c), SPH_C32(0x36b61800),
+	  SPH_C32(0xa199150f), SPH_C32(0x8004ef60), SPH_C32(0x4da5a78a),
+	  SPH_C32(0x9edb788c) },
+	{ SPH_C32(0x36c90000), SPH_C32(0x12380000), SPH_C32(0x0a900072),
+	  SPH_C32(0x198c1800), SPH_C32(0x88aa7986), SPH_C32(0x4e296619),
+	  SPH_C32(0x4c6cb142), SPH_C32(0x4f9fff24), SPH_C32(0xb9b00000),
+	  SPH_C32(0x4d1d0000), SPH_C32(0x6a67005d), SPH_C32(0xf0dd2000),
+	  SPH_C32(0x46ae49d3), SPH_C32(0xf9a9d0bd), SPH_C32(0xe1d659e5),
+	  SPH_C32(0xa49f013d) },
+	{ SPH_C32(0x6e8a0000), SPH_C32(0x92460000), SPH_C32(0x72a30073),
+	  SPH_C32(0xdfe72000), SPH_C32(0x6f9d255a), SPH_C32(0x378459c4),
+	  SPH_C32(0xe01f4f2d), SPH_C32(0x75db8695), SPH_C32(0xa4ea0000),
+	  SPH_C32(0x666f0000), SPH_C32(0x22ea005d), SPH_C32(0x5fbc3800),
+	  SPH_C32(0x63656716), SPH_C32(0x31d06f6d), SPH_C32(0x60745dcc),
+	  SPH_C32(0xbaea379b) },
+	{ SPH_C32(0x0a1f0000), SPH_C32(0x5bcb0000), SPH_C32(0x8a1e0044),
+	  SPH_C32(0xb3860000), SPH_C32(0x01283651), SPH_C32(0xa2673774),
+	  SPH_C32(0x92728b63), SPH_C32(0xf42251fd), SPH_C32(0xd10a0000),
+	  SPH_C32(0xeda30000), SPH_C32(0x6b26006c), SPH_C32(0x1e370000),
+	  SPH_C32(0xfa943185), SPH_C32(0x510c6bea), SPH_C32(0x93a3bb17),
+	  SPH_C32(0x6da573f8) },
+	{ SPH_C32(0x525c0000), SPH_C32(0xdbb50000), SPH_C32(0xf22d0045),
+	  SPH_C32(0x75ed3800), SPH_C32(0xe61f6a8d), SPH_C32(0xdbca08a9),
+	  SPH_C32(0x3e01750c), SPH_C32(0xce66284c), SPH_C32(0xcc500000),
+	  SPH_C32(0xc6d10000), SPH_C32(0x23ab006c), SPH_C32(0xb1561800),
+	  SPH_C32(0xdf5f1f40), SPH_C32(0x9975d43a), SPH_C32(0x1201bf3e),
+	  SPH_C32(0x73d0455e) },
+	{ SPH_C32(0x17450000), SPH_C32(0x70b90000), SPH_C32(0xc2930044),
+	  SPH_C32(0x1ce71800), SPH_C32(0x24e31894), SPH_C32(0x6a1e88a4),
+	  SPH_C32(0x13d08f4a), SPH_C32(0xea57675b), SPH_C32(0x94130000),
+	  SPH_C32(0x46af0000), SPH_C32(0x5b98006d), SPH_C32(0x773d2000),
+	  SPH_C32(0x3868439c), SPH_C32(0xe0d8ebe7), SPH_C32(0xbe724151),
+	  SPH_C32(0x49943cef) },
+	{ SPH_C32(0x4f060000), SPH_C32(0xf0c70000), SPH_C32(0xbaa00045),
+	  SPH_C32(0xda8c2000), SPH_C32(0xc3d44448), SPH_C32(0x13b3b779),
+	  SPH_C32(0xbfa37125), SPH_C32(0xd0131eea), SPH_C32(0x89490000),
+	  SPH_C32(0x6ddd0000), SPH_C32(0x1315006d), SPH_C32(0xd85c3800),
+	  SPH_C32(0x1da36d59), SPH_C32(0x28a15437), SPH_C32(0x3fd04578),
+	  SPH_C32(0x57e10a49) },
+	{ SPH_C32(0xaf240000), SPH_C32(0x4fed0000), SPH_C32(0xc42e005a),
+	  SPH_C32(0xcf280000), SPH_C32(0x8eb63b84), SPH_C32(0xdab89d49),
+	  SPH_C32(0x6543e3bb), SPH_C32(0xff3918bb), SPH_C32(0xd6e70000),
+	  SPH_C32(0x5ff30000), SPH_C32(0xec520066), SPH_C32(0x893a0000),
+	  SPH_C32(0xb9e6122b), SPH_C32(0x19cb054e), SPH_C32(0x67dbd935),
+	  SPH_C32(0xfdd0c236) },
+	{ SPH_C32(0xf7670000), SPH_C32(0xcf930000), SPH_C32(0xbc1d005b),
+	  SPH_C32(0x09433800), SPH_C32(0x69816758), SPH_C32(0xa315a294),
+	  SPH_C32(0xc9301dd4), SPH_C32(0xc57d610a), SPH_C32(0xcbbd0000),
+	  SPH_C32(0x74810000), SPH_C32(0xa4df0066), SPH_C32(0x265b1800),
+	  SPH_C32(0x9c2d3cee), SPH_C32(0xd1b2ba9e), SPH_C32(0xe679dd1c),
+	  SPH_C32(0xe3a5f490) },
+	{ SPH_C32(0xb27e0000), SPH_C32(0x649f0000), SPH_C32(0x8ca3005a),
+	  SPH_C32(0x60491800), SPH_C32(0xab7d1541), SPH_C32(0x12c12299),
+	  SPH_C32(0xe4e1e792), SPH_C32(0xe14c2e1d), SPH_C32(0x93fe0000),
+	  SPH_C32(0xf4ff0000), SPH_C32(0xdcec0067), SPH_C32(0xe0302000),
+	  SPH_C32(0x7b1a6032), SPH_C32(0xa81f8543), SPH_C32(0x4a0a2373),
+	  SPH_C32(0xd9e18d21) },
+	{ SPH_C32(0xea3d0000), SPH_C32(0xe4e10000), SPH_C32(0xf490005b),
+	  SPH_C32(0xa6222000), SPH_C32(0x4c4a499d), SPH_C32(0x6b6c1d44),
+	  SPH_C32(0x489219fd), SPH_C32(0xdb0857ac), SPH_C32(0x8ea40000),
+	  SPH_C32(0xdf8d0000), SPH_C32(0x94610067), SPH_C32(0x4f513800),
+	  SPH_C32(0x5ed14ef7), SPH_C32(0x60663a93), SPH_C32(0xcba8275a),
+	  SPH_C32(0xc794bb87) },
+	{ SPH_C32(0x0df20000), SPH_C32(0xe99b0000), SPH_C32(0x0d6a004e),
+	  SPH_C32(0x248b0000), SPH_C32(0x425a15ff), SPH_C32(0xeaa059d0),
+	  SPH_C32(0x660ae941), SPH_C32(0x6457e033), SPH_C32(0x73dc0000),
+	  SPH_C32(0x4bd50000), SPH_C32(0xa2620078), SPH_C32(0xf5940000),
+	  SPH_C32(0x36781ffe), SPH_C32(0x6114af73), SPH_C32(0x90eab1ed),
+	  SPH_C32(0xf6cb8b70) },
+	{ SPH_C32(0x55b10000), SPH_C32(0x69e50000), SPH_C32(0x7559004f),
+	  SPH_C32(0xe2e03800), SPH_C32(0xa56d4923), SPH_C32(0x930d660d),
+	  SPH_C32(0xca79172e), SPH_C32(0x5e139982), SPH_C32(0x6e860000),
+	  SPH_C32(0x60a70000), SPH_C32(0xeaef0078), SPH_C32(0x5af51800),
+	  SPH_C32(0x13b3313b), SPH_C32(0xa96d10a3), SPH_C32(0x1148b5c4),
+	  SPH_C32(0xe8bebdd6) },
+	{ SPH_C32(0x10a80000), SPH_C32(0xc2e90000), SPH_C32(0x45e7004e),
+	  SPH_C32(0x8bea1800), SPH_C32(0x67913b3a), SPH_C32(0x22d9e600),
+	  SPH_C32(0xe7a8ed68), SPH_C32(0x7a22d695), SPH_C32(0x36c50000),
+	  SPH_C32(0xe0d90000), SPH_C32(0x92dc0079), SPH_C32(0x9c9e2000),
+	  SPH_C32(0xf4846de7), SPH_C32(0xd0c02f7e), SPH_C32(0xbd3b4bab),
+	  SPH_C32(0xd2fac467) },
+	{ SPH_C32(0x48eb0000), SPH_C32(0x42970000), SPH_C32(0x3dd4004f),
+	  SPH_C32(0x4d812000), SPH_C32(0x80a667e6), SPH_C32(0x5b74d9dd),
+	  SPH_C32(0x4bdb1307), SPH_C32(0x4066af24), SPH_C32(0x2b9f0000),
+	  SPH_C32(0xcbab0000), SPH_C32(0xda510079), SPH_C32(0x33ff3800),
+	  SPH_C32(0xd14f4322), SPH_C32(0x18b990ae), SPH_C32(0x3c994f82),
+	  SPH_C32(0xcc8ff2c1) },
+	{ SPH_C32(0xa8c90000), SPH_C32(0xfdbd0000), SPH_C32(0x435a0050),
+	  SPH_C32(0x58250000), SPH_C32(0xcdc4182a), SPH_C32(0x927ff3ed),
+	  SPH_C32(0x913b8199), SPH_C32(0x6f4ca975), SPH_C32(0x74310000),
+	  SPH_C32(0xf9850000), SPH_C32(0x25160072), SPH_C32(0x62990000),
+	  SPH_C32(0x750a3c50), SPH_C32(0x29d3c1d7), SPH_C32(0x6492d3cf),
+	  SPH_C32(0x66be3abe) },
+	{ SPH_C32(0xf08a0000), SPH_C32(0x7dc30000), SPH_C32(0x3b690051),
+	  SPH_C32(0x9e4e3800), SPH_C32(0x2af344f6), SPH_C32(0xebd2cc30),
+	  SPH_C32(0x3d487ff6), SPH_C32(0x5508d0c4), SPH_C32(0x696b0000),
+	  SPH_C32(0xd2f70000), SPH_C32(0x6d9b0072), SPH_C32(0xcdf81800),
+	  SPH_C32(0x50c11295), SPH_C32(0xe1aa7e07), SPH_C32(0xe530d7e6),
+	  SPH_C32(0x78cb0c18) },
+	{ SPH_C32(0xb5930000), SPH_C32(0xd6cf0000), SPH_C32(0x0bd70050),
+	  SPH_C32(0xf7441800), SPH_C32(0xe80f36ef), SPH_C32(0x5a064c3d),
+	  SPH_C32(0x109985b0), SPH_C32(0x71399fd3), SPH_C32(0x31280000),
+	  SPH_C32(0x52890000), SPH_C32(0x15a80073), SPH_C32(0x0b932000),
+	  SPH_C32(0xb7f64e49), SPH_C32(0x980741da), SPH_C32(0x49432989),
+	  SPH_C32(0x428f75a9) },
+	{ SPH_C32(0xedd00000), SPH_C32(0x56b10000), SPH_C32(0x73e40051),
+	  SPH_C32(0x312f2000), SPH_C32(0x0f386a33), SPH_C32(0x23ab73e0),
+	  SPH_C32(0xbcea7bdf), SPH_C32(0x4b7de662), SPH_C32(0x2c720000),
+	  SPH_C32(0x79fb0000), SPH_C32(0x5d250073), SPH_C32(0xa4f23800),
+	  SPH_C32(0x923d608c), SPH_C32(0x507efe0a), SPH_C32(0xc8e12da0),
+	  SPH_C32(0x5cfa430f) },
+	{ SPH_C32(0x82870000), SPH_C32(0x445f0000), SPH_C32(0xf5d1006a),
+	  SPH_C32(0x48c80000), SPH_C32(0xf07031cb), SPH_C32(0xc3c9a613),
+	  SPH_C32(0x3ae7fb0f), SPH_C32(0x12322569), SPH_C32(0xdac80000),
+	  SPH_C32(0x36c00000), SPH_C32(0x15ae0060), SPH_C32(0x0bb10000),
+	  SPH_C32(0x6b697976), SPH_C32(0x248dd0a9), SPH_C32(0x67c3ff89),
+	  SPH_C32(0xb513679b) },
+	{ SPH_C32(0xdac40000), SPH_C32(0xc4210000), SPH_C32(0x8de2006b),
+	  SPH_C32(0x8ea33800), SPH_C32(0x17476d17), SPH_C32(0xba6499ce),
+	  SPH_C32(0x96940560), SPH_C32(0x28765cd8), SPH_C32(0xc7920000),
+	  SPH_C32(0x1db20000), SPH_C32(0x5d230060), SPH_C32(0xa4d01800),
+	  SPH_C32(0x4ea257b3), SPH_C32(0xecf46f79), SPH_C32(0xe661fba0),
+	  SPH_C32(0xab66513d) },
+	{ SPH_C32(0x9fdd0000), SPH_C32(0x6f2d0000), SPH_C32(0xbd5c006a),
+	  SPH_C32(0xe7a91800), SPH_C32(0xd5bb1f0e), SPH_C32(0x0bb019c3),
+	  SPH_C32(0xbb45ff26), SPH_C32(0x0c4713cf), SPH_C32(0x9fd10000),
+	  SPH_C32(0x9dcc0000), SPH_C32(0x25100061), SPH_C32(0x62bb2000),
+	  SPH_C32(0xa9950b6f), SPH_C32(0x955950a4), SPH_C32(0x4a1205cf),
+	  SPH_C32(0x9122288c) },
+	{ SPH_C32(0xc79e0000), SPH_C32(0xef530000), SPH_C32(0xc56f006b),
+	  SPH_C32(0x21c22000), SPH_C32(0x328c43d2), SPH_C32(0x721d261e),
+	  SPH_C32(0x17360149), SPH_C32(0x36036a7e), SPH_C32(0x828b0000),
+	  SPH_C32(0xb6be0000), SPH_C32(0x6d9d0061), SPH_C32(0xcdda3800),
+	  SPH_C32(0x8c5e25aa), SPH_C32(0x5d20ef74), SPH_C32(0xcbb001e6),
+	  SPH_C32(0x8f571e2a) },
+	{ SPH_C32(0x27bc0000), SPH_C32(0x50790000), SPH_C32(0xbbe10074),
+	  SPH_C32(0x34660000), SPH_C32(0x7fee3c1e), SPH_C32(0xbb160c2e),
+	  SPH_C32(0xcdd693d7), SPH_C32(0x19296c2f), SPH_C32(0xdd250000),
+	  SPH_C32(0x84900000), SPH_C32(0x92da006a), SPH_C32(0x9cbc0000),
+	  SPH_C32(0x281b5ad8), SPH_C32(0x6c4abe0d), SPH_C32(0x93bb9dab),
+	  SPH_C32(0x2566d655) },
+	{ SPH_C32(0x7fff0000), SPH_C32(0xd0070000), SPH_C32(0xc3d20075),
+	  SPH_C32(0xf20d3800), SPH_C32(0x98d960c2), SPH_C32(0xc2bb33f3),
+	  SPH_C32(0x61a56db8), SPH_C32(0x236d159e), SPH_C32(0xc07f0000),
+	  SPH_C32(0xafe20000), SPH_C32(0xda57006a), SPH_C32(0x33dd1800),
+	  SPH_C32(0x0dd0741d), SPH_C32(0xa43301dd), SPH_C32(0x12199982),
+	  SPH_C32(0x3b13e0f3) },
+	{ SPH_C32(0x3ae60000), SPH_C32(0x7b0b0000), SPH_C32(0xf36c0074),
+	  SPH_C32(0x9b071800), SPH_C32(0x5a2512db), SPH_C32(0x736fb3fe),
+	  SPH_C32(0x4c7497fe), SPH_C32(0x075c5a89), SPH_C32(0x983c0000),
+	  SPH_C32(0x2f9c0000), SPH_C32(0xa264006b), SPH_C32(0xf5b62000),
+	  SPH_C32(0xeae728c1), SPH_C32(0xdd9e3e00), SPH_C32(0xbe6a67ed),
+	  SPH_C32(0x01579942) },
+	{ SPH_C32(0x62a50000), SPH_C32(0xfb750000), SPH_C32(0x8b5f0075),
+	  SPH_C32(0x5d6c2000), SPH_C32(0xbd124e07), SPH_C32(0x0ac28c23),
+	  SPH_C32(0xe0076991), SPH_C32(0x3d182338), SPH_C32(0x85660000),
+	  SPH_C32(0x04ee0000), SPH_C32(0xeae9006b), SPH_C32(0x5ad73800),
+	  SPH_C32(0xcf2c0604), SPH_C32(0x15e781d0), SPH_C32(0x3fc863c4),
+	  SPH_C32(0x1f22afe4) },
+	{ SPH_C32(0x856a0000), SPH_C32(0xf60f0000), SPH_C32(0x72a50060),
+	  SPH_C32(0xdfc50000), SPH_C32(0xb3021265), SPH_C32(0x8b0ec8b7),
+	  SPH_C32(0xce9f992d), SPH_C32(0x824794a7), SPH_C32(0x781e0000),
+	  SPH_C32(0x90b60000), SPH_C32(0xdcea0074), SPH_C32(0xe0120000),
+	  SPH_C32(0xa785570d), SPH_C32(0x14951430), SPH_C32(0x648af573),
+	  SPH_C32(0x2e7d9f13) },
+	{ SPH_C32(0xdd290000), SPH_C32(0x76710000), SPH_C32(0x0a960061),
+	  SPH_C32(0x19ae3800), SPH_C32(0x54354eb9), SPH_C32(0xf2a3f76a),
+	  SPH_C32(0x62ec6742), SPH_C32(0xb803ed16), SPH_C32(0x65440000),
+	  SPH_C32(0xbbc40000), SPH_C32(0x94670074), SPH_C32(0x4f731800),
+	  SPH_C32(0x824e79c8), SPH_C32(0xdcecabe0), SPH_C32(0xe528f15a),
+	  SPH_C32(0x3008a9b5) },
+	{ SPH_C32(0x98300000), SPH_C32(0xdd7d0000), SPH_C32(0x3a280060),
+	  SPH_C32(0x70a41800), SPH_C32(0x96c93ca0), SPH_C32(0x43777767),
+	  SPH_C32(0x4f3d9d04), SPH_C32(0x9c32a201), SPH_C32(0x3d070000),
+	  SPH_C32(0x3bba0000), SPH_C32(0xec540075), SPH_C32(0x89182000),
+	  SPH_C32(0x65792514), SPH_C32(0xa541943d), SPH_C32(0x495b0f35),
+	  SPH_C32(0x0a4cd004) },
+	{ SPH_C32(0xc0730000), SPH_C32(0x5d030000), SPH_C32(0x421b0061),
+	  SPH_C32(0xb6cf2000), SPH_C32(0x71fe607c), SPH_C32(0x3ada48ba),
+	  SPH_C32(0xe34e636b), SPH_C32(0xa676dbb0), SPH_C32(0x205d0000),
+	  SPH_C32(0x10c80000), SPH_C32(0xa4d90075), SPH_C32(0x26793800),
+	  SPH_C32(0x40b20bd1), SPH_C32(0x6d382bed), SPH_C32(0xc8f90b1c),
+	  SPH_C32(0x1439e6a2) },
+	{ SPH_C32(0x20510000), SPH_C32(0xe2290000), SPH_C32(0x3c95007e),
+	  SPH_C32(0xa36b0000), SPH_C32(0x3c9c1fb0), SPH_C32(0xf3d1628a),
+	  SPH_C32(0x39aef1f5), SPH_C32(0x895cdde1), SPH_C32(0x7ff30000),
+	  SPH_C32(0x22e60000), SPH_C32(0x5b9e007e), SPH_C32(0x771f0000),
+	  SPH_C32(0xe4f774a3), SPH_C32(0x5c527a94), SPH_C32(0x90f29751),
+	  SPH_C32(0xbe082edd) },
+	{ SPH_C32(0x78120000), SPH_C32(0x62570000), SPH_C32(0x44a6007f),
+	  SPH_C32(0x65003800), SPH_C32(0xdbab436c), SPH_C32(0x8a7c5d57),
+	  SPH_C32(0x95dd0f9a), SPH_C32(0xb318a450), SPH_C32(0x62a90000),
+	  SPH_C32(0x09940000), SPH_C32(0x1313007e), SPH_C32(0xd87e1800),
+	  SPH_C32(0xc13c5a66), SPH_C32(0x942bc544), SPH_C32(0x11509378),
+	  SPH_C32(0xa07d187b) },
+	{ SPH_C32(0x3d0b0000), SPH_C32(0xc95b0000), SPH_C32(0x7418007e),
+	  SPH_C32(0x0c0a1800), SPH_C32(0x19573175), SPH_C32(0x3ba8dd5a),
+	  SPH_C32(0xb80cf5dc), SPH_C32(0x9729eb47), SPH_C32(0x3aea0000),
+	  SPH_C32(0x89ea0000), SPH_C32(0x6b20007f), SPH_C32(0x1e152000),
+	  SPH_C32(0x260b06ba), SPH_C32(0xed86fa99), SPH_C32(0xbd236d17),
+	  SPH_C32(0x9a3961ca) },
+	{ SPH_C32(0x65480000), SPH_C32(0x49250000), SPH_C32(0x0c2b007f),
+	  SPH_C32(0xca612000), SPH_C32(0xfe606da9), SPH_C32(0x4205e287),
+	  SPH_C32(0x147f0bb3), SPH_C32(0xad6d92f6), SPH_C32(0x27b00000),
+	  SPH_C32(0xa2980000), SPH_C32(0x23ad007f), SPH_C32(0xb1743800),
+	  SPH_C32(0x03c0287f), SPH_C32(0x25ff4549), SPH_C32(0x3c81693e),
+	  SPH_C32(0x844c576c) }
+};
+
+static const sph_u32 T512_48[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0xe6280000), SPH_C32(0x4c4b0000), SPH_C32(0xa8550000),
+	  SPH_C32(0xd3d002e0), SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da),
+	  SPH_C32(0x289506b4), SPH_C32(0xd75a4897), SPH_C32(0xf0c50000),
+	  SPH_C32(0x59230000), SPH_C32(0x45820000), SPH_C32(0xe18d00c0),
+	  SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699), SPH_C32(0xcbe0fe1c),
+	  SPH_C32(0x56a7b19f) },
+	{ SPH_C32(0xf0c50000), SPH_C32(0x59230000), SPH_C32(0x45820000),
+	  SPH_C32(0xe18d00c0), SPH_C32(0x3b6d0631), SPH_C32(0xc2ed5699),
+	  SPH_C32(0xcbe0fe1c), SPH_C32(0x56a7b19f), SPH_C32(0x16ed0000),
+	  SPH_C32(0x15680000), SPH_C32(0xedd70000), SPH_C32(0x325d0220),
+	  SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643), SPH_C32(0xe375f8a8),
+	  SPH_C32(0x81fdf908) },
+	{ SPH_C32(0x16ed0000), SPH_C32(0x15680000), SPH_C32(0xedd70000),
+	  SPH_C32(0x325d0220), SPH_C32(0xe30c3689), SPH_C32(0x5a4ae643),
+	  SPH_C32(0xe375f8a8), SPH_C32(0x81fdf908), SPH_C32(0xe6280000),
+	  SPH_C32(0x4c4b0000), SPH_C32(0xa8550000), SPH_C32(0xd3d002e0),
+	  SPH_C32(0xd86130b8), SPH_C32(0x98a7b0da), SPH_C32(0x289506b4),
+	  SPH_C32(0xd75a4897) },
+	{ SPH_C32(0xb4310000), SPH_C32(0x77330000), SPH_C32(0xb15d0000),
+	  SPH_C32(0x7fd004e0), SPH_C32(0x78a26138), SPH_C32(0xd116c35d),
+	  SPH_C32(0xd256d489), SPH_C32(0x4e6f74de), SPH_C32(0xe3060000),
+	  SPH_C32(0xbdc10000), SPH_C32(0x87130000), SPH_C32(0xbff20060),
+	  SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751), SPH_C32(0x73c5ab06),
+	  SPH_C32(0x5bd61539) },
+	{ SPH_C32(0x52190000), SPH_C32(0x3b780000), SPH_C32(0x19080000),
+	  SPH_C32(0xac000600), SPH_C32(0xa0c35180), SPH_C32(0x49b17387),
+	  SPH_C32(0xfac3d23d), SPH_C32(0x99353c49), SPH_C32(0x13c30000),
+	  SPH_C32(0xe4e20000), SPH_C32(0xc2910000), SPH_C32(0x5e7f00a0),
+	  SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8), SPH_C32(0xb825551a),
+	  SPH_C32(0x0d71a4a6) },
+	{ SPH_C32(0x44f40000), SPH_C32(0x2e100000), SPH_C32(0xf4df0000),
+	  SPH_C32(0x9e5d0420), SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4),
+	  SPH_C32(0x19b62a95), SPH_C32(0x18c8c541), SPH_C32(0xf5eb0000),
+	  SPH_C32(0xa8a90000), SPH_C32(0x6ac40000), SPH_C32(0x8daf0240),
+	  SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112), SPH_C32(0x90b053ae),
+	  SPH_C32(0xda2bec31) },
+	{ SPH_C32(0xa2dc0000), SPH_C32(0x625b0000), SPH_C32(0x5c8a0000),
+	  SPH_C32(0x4d8d06c0), SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e),
+	  SPH_C32(0x31232c21), SPH_C32(0xcf928dd6), SPH_C32(0x052e0000),
+	  SPH_C32(0xf18a0000), SPH_C32(0x2f460000), SPH_C32(0x6c220280),
+	  SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b), SPH_C32(0x5b50adb2),
+	  SPH_C32(0x8c8c5dae) },
+	{ SPH_C32(0xe3060000), SPH_C32(0xbdc10000), SPH_C32(0x87130000),
+	  SPH_C32(0xbff20060), SPH_C32(0x2eba0a1a), SPH_C32(0x8db53751),
+	  SPH_C32(0x73c5ab06), SPH_C32(0x5bd61539), SPH_C32(0x57370000),
+	  SPH_C32(0xcaf20000), SPH_C32(0x364e0000), SPH_C32(0xc0220480),
+	  SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c), SPH_C32(0xa1937f8f),
+	  SPH_C32(0x15b961e7) },
+	{ SPH_C32(0x052e0000), SPH_C32(0xf18a0000), SPH_C32(0x2f460000),
+	  SPH_C32(0x6c220280), SPH_C32(0xf6db3aa2), SPH_C32(0x1512878b),
+	  SPH_C32(0x5b50adb2), SPH_C32(0x8c8c5dae), SPH_C32(0xa7f20000),
+	  SPH_C32(0x93d10000), SPH_C32(0x73cc0000), SPH_C32(0x21af0440),
+	  SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295), SPH_C32(0x6a738193),
+	  SPH_C32(0x431ed078) },
+	{ SPH_C32(0x13c30000), SPH_C32(0xe4e20000), SPH_C32(0xc2910000),
+	  SPH_C32(0x5e7f00a0), SPH_C32(0x15d70c2b), SPH_C32(0x4f5861c8),
+	  SPH_C32(0xb825551a), SPH_C32(0x0d71a4a6), SPH_C32(0x41da0000),
+	  SPH_C32(0xdf9a0000), SPH_C32(0xdb990000), SPH_C32(0xf27f06a0),
+	  SPH_C32(0xb5145dab), SPH_C32(0x06e9124f), SPH_C32(0x42e68727),
+	  SPH_C32(0x944498ef) },
+	{ SPH_C32(0xf5eb0000), SPH_C32(0xa8a90000), SPH_C32(0x6ac40000),
+	  SPH_C32(0x8daf0240), SPH_C32(0xcdb63c93), SPH_C32(0xd7ffd112),
+	  SPH_C32(0x90b053ae), SPH_C32(0xda2bec31), SPH_C32(0xb11f0000),
+	  SPH_C32(0x86b90000), SPH_C32(0x9e1b0000), SPH_C32(0x13f20660),
+	  SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6), SPH_C32(0x8906793b),
+	  SPH_C32(0xc2e32970) },
+	{ SPH_C32(0x57370000), SPH_C32(0xcaf20000), SPH_C32(0x364e0000),
+	  SPH_C32(0xc0220480), SPH_C32(0x56186b22), SPH_C32(0x5ca3f40c),
+	  SPH_C32(0xa1937f8f), SPH_C32(0x15b961e7), SPH_C32(0xb4310000),
+	  SPH_C32(0x77330000), SPH_C32(0xb15d0000), SPH_C32(0x7fd004e0),
+	  SPH_C32(0x78a26138), SPH_C32(0xd116c35d), SPH_C32(0xd256d489),
+	  SPH_C32(0x4e6f74de) },
+	{ SPH_C32(0xb11f0000), SPH_C32(0x86b90000), SPH_C32(0x9e1b0000),
+	  SPH_C32(0x13f20660), SPH_C32(0x8e795b9a), SPH_C32(0xc40444d6),
+	  SPH_C32(0x8906793b), SPH_C32(0xc2e32970), SPH_C32(0x44f40000),
+	  SPH_C32(0x2e100000), SPH_C32(0xf4df0000), SPH_C32(0x9e5d0420),
+	  SPH_C32(0x43cf6709), SPH_C32(0x13fb95c4), SPH_C32(0x19b62a95),
+	  SPH_C32(0x18c8c541) },
+	{ SPH_C32(0xa7f20000), SPH_C32(0x93d10000), SPH_C32(0x73cc0000),
+	  SPH_C32(0x21af0440), SPH_C32(0x6d756d13), SPH_C32(0x9e4ea295),
+	  SPH_C32(0x6a738193), SPH_C32(0x431ed078), SPH_C32(0xa2dc0000),
+	  SPH_C32(0x625b0000), SPH_C32(0x5c8a0000), SPH_C32(0x4d8d06c0),
+	  SPH_C32(0x9bae57b1), SPH_C32(0x8b5c251e), SPH_C32(0x31232c21),
+	  SPH_C32(0xcf928dd6) },
+	{ SPH_C32(0x41da0000), SPH_C32(0xdf9a0000), SPH_C32(0xdb990000),
+	  SPH_C32(0xf27f06a0), SPH_C32(0xb5145dab), SPH_C32(0x06e9124f),
+	  SPH_C32(0x42e68727), SPH_C32(0x944498ef), SPH_C32(0x52190000),
+	  SPH_C32(0x3b780000), SPH_C32(0x19080000), SPH_C32(0xac000600),
+	  SPH_C32(0xa0c35180), SPH_C32(0x49b17387), SPH_C32(0xfac3d23d),
+	  SPH_C32(0x99353c49) },
+	{ SPH_C32(0x02f20000), SPH_C32(0xa2810000), SPH_C32(0x873f0000),
+	  SPH_C32(0xe36c7800), SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6),
+	  SPH_C32(0xc4c23237), SPH_C32(0x7f32259e), SPH_C32(0xbadd0000),
+	  SPH_C32(0x13ad0000), SPH_C32(0xb7e70000), SPH_C32(0xf7282800),
+	  SPH_C32(0xdf45144d), SPH_C32(0x361ac33a), SPH_C32(0xea5a8d14),
+	  SPH_C32(0x2a2c18f0) },
+	{ SPH_C32(0xe4da0000), SPH_C32(0xeeca0000), SPH_C32(0x2f6a0000),
+	  SPH_C32(0x30bc7ae0), SPH_C32(0xc67c4457), SPH_C32(0x9f9a9b0c),
+	  SPH_C32(0xec573483), SPH_C32(0xa8686d09), SPH_C32(0x4a180000),
+	  SPH_C32(0x4a8e0000), SPH_C32(0xf2650000), SPH_C32(0x16a528c0),
+	  SPH_C32(0xe428127c), SPH_C32(0xf4f795a3), SPH_C32(0x21ba7308),
+	  SPH_C32(0x7c8ba96f) },
+	{ SPH_C32(0xf2370000), SPH_C32(0xfba20000), SPH_C32(0xc2bd0000),
+	  SPH_C32(0x02e178c0), SPH_C32(0x257072de), SPH_C32(0xc5d07d4f),
+	  SPH_C32(0x0f22cc2b), SPH_C32(0x29959401), SPH_C32(0xac300000),
+	  SPH_C32(0x06c50000), SPH_C32(0x5a300000), SPH_C32(0xc5752a20),
+	  SPH_C32(0x3c4922c4), SPH_C32(0x6c502579), SPH_C32(0x092f75bc),
+	  SPH_C32(0xabd1e1f8) },
+	{ SPH_C32(0x141f0000), SPH_C32(0xb7e90000), SPH_C32(0x6ae80000),
+	  SPH_C32(0xd1317a20), SPH_C32(0xfd114266), SPH_C32(0x5d77cd95),
+	  SPH_C32(0x27b7ca9f), SPH_C32(0xfecfdc96), SPH_C32(0x5cf50000),
+	  SPH_C32(0x5fe60000), SPH_C32(0x1fb20000), SPH_C32(0x24f82ae0),
+	  SPH_C32(0x072424f5), SPH_C32(0xaebd73e0), SPH_C32(0xc2cf8ba0),
+	  SPH_C32(0xfd765067) },
+	{ SPH_C32(0xb6c30000), SPH_C32(0xd5b20000), SPH_C32(0x36620000),
+	  SPH_C32(0x9cbc7ce0), SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b),
+	  SPH_C32(0x1694e6be), SPH_C32(0x315d5140), SPH_C32(0x59db0000),
+	  SPH_C32(0xae6c0000), SPH_C32(0x30f40000), SPH_C32(0x48da2860),
+	  SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b), SPH_C32(0x999f2612),
+	  SPH_C32(0x71fa0dc9) },
+	{ SPH_C32(0x50eb0000), SPH_C32(0x99f90000), SPH_C32(0x9e370000),
+	  SPH_C32(0x4f6c7e00), SPH_C32(0xbede256f), SPH_C32(0x4e8c5851),
+	  SPH_C32(0x3e01e00a), SPH_C32(0xe60719d7), SPH_C32(0xa91e0000),
+	  SPH_C32(0xf74f0000), SPH_C32(0x75760000), SPH_C32(0xa95728a0),
+	  SPH_C32(0xca921866), SPH_C32(0x7942a2f2), SPH_C32(0x527fd80e),
+	  SPH_C32(0x275dbc56) },
+	{ SPH_C32(0x46060000), SPH_C32(0x8c910000), SPH_C32(0x73e00000),
+	  SPH_C32(0x7d317c20), SPH_C32(0x5dd213e6), SPH_C32(0x14c6be12),
+	  SPH_C32(0xdd7418a2), SPH_C32(0x67fae0df), SPH_C32(0x4f360000),
+	  SPH_C32(0xbb040000), SPH_C32(0xdd230000), SPH_C32(0x7a872a40),
+	  SPH_C32(0x12f328de), SPH_C32(0xe1e51228), SPH_C32(0x7aeadeba),
+	  SPH_C32(0xf007f4c1) },
+	{ SPH_C32(0xa02e0000), SPH_C32(0xc0da0000), SPH_C32(0xdbb50000),
+	  SPH_C32(0xaee17ec0), SPH_C32(0x85b3235e), SPH_C32(0x8c610ec8),
+	  SPH_C32(0xf5e11e16), SPH_C32(0xb0a0a848), SPH_C32(0xbff30000),
+	  SPH_C32(0xe2270000), SPH_C32(0x98a10000), SPH_C32(0x9b0a2a80),
+	  SPH_C32(0x299e2eef), SPH_C32(0x230844b1), SPH_C32(0xb10a20a6),
+	  SPH_C32(0xa6a0455e) },
+	{ SPH_C32(0xe1f40000), SPH_C32(0x1f400000), SPH_C32(0x002c0000),
+	  SPH_C32(0x5c9e7860), SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87),
+	  SPH_C32(0xb7079931), SPH_C32(0x24e430a7), SPH_C32(0xedea0000),
+	  SPH_C32(0xd95f0000), SPH_C32(0x81a90000), SPH_C32(0x370a2c80),
+	  SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736), SPH_C32(0x4bc9f29b),
+	  SPH_C32(0x3f957917) },
+	{ SPH_C32(0x07dc0000), SPH_C32(0x530b0000), SPH_C32(0xa8790000),
+	  SPH_C32(0x8f4e7a80), SPH_C32(0xe8c64e4d), SPH_C32(0x122fac5d),
+	  SPH_C32(0x9f929f85), SPH_C32(0xf3be7830), SPH_C32(0x1d2f0000),
+	  SPH_C32(0x807c0000), SPH_C32(0xc42b0000), SPH_C32(0xd6872c40),
+	  SPH_C32(0xb230795e), SPH_C32(0xa85461af), SPH_C32(0x80290c87),
+	  SPH_C32(0x6932c888) },
+	{ SPH_C32(0x11310000), SPH_C32(0x46630000), SPH_C32(0x45ae0000),
+	  SPH_C32(0xbd1378a0), SPH_C32(0x0bca78c4), SPH_C32(0x48654a1e),
+	  SPH_C32(0x7ce7672d), SPH_C32(0x72438138), SPH_C32(0xfb070000),
+	  SPH_C32(0xcc370000), SPH_C32(0x6c7e0000), SPH_C32(0x05572ea0),
+	  SPH_C32(0x6a5149e6), SPH_C32(0x30f3d175), SPH_C32(0xa8bc0a33),
+	  SPH_C32(0xbe68801f) },
+	{ SPH_C32(0xf7190000), SPH_C32(0x0a280000), SPH_C32(0xedfb0000),
+	  SPH_C32(0x6ec37a40), SPH_C32(0xd3ab487c), SPH_C32(0xd0c2fac4),
+	  SPH_C32(0x54726199), SPH_C32(0xa519c9af), SPH_C32(0x0bc20000),
+	  SPH_C32(0x95140000), SPH_C32(0x29fc0000), SPH_C32(0xe4da2e60),
+	  SPH_C32(0x513c4fd7), SPH_C32(0xf21e87ec), SPH_C32(0x635cf42f),
+	  SPH_C32(0xe8cf3180) },
+	{ SPH_C32(0x55c50000), SPH_C32(0x68730000), SPH_C32(0xb1710000),
+	  SPH_C32(0x234e7c80), SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda),
+	  SPH_C32(0x65514db8), SPH_C32(0x6a8b4479), SPH_C32(0x0eec0000),
+	  SPH_C32(0x649e0000), SPH_C32(0x06ba0000), SPH_C32(0x88f82ce0),
+	  SPH_C32(0xa7e77575), SPH_C32(0xe70c0067), SPH_C32(0x380c599d),
+	  SPH_C32(0x64436c2e) },
+	{ SPH_C32(0xb3ed0000), SPH_C32(0x24380000), SPH_C32(0x19240000),
+	  SPH_C32(0xf09e7e60), SPH_C32(0x90642f75), SPH_C32(0xc3396f00),
+	  SPH_C32(0x4dc44b0c), SPH_C32(0xbdd10cee), SPH_C32(0xfe290000),
+	  SPH_C32(0x3dbd0000), SPH_C32(0x43380000), SPH_C32(0x69752c20),
+	  SPH_C32(0x9c8a7344), SPH_C32(0x25e156fe), SPH_C32(0xf3eca781),
+	  SPH_C32(0x32e4ddb1) },
+	{ SPH_C32(0xa5000000), SPH_C32(0x31500000), SPH_C32(0xf4f30000),
+	  SPH_C32(0xc2c37c40), SPH_C32(0x736819fc), SPH_C32(0x99738943),
+	  SPH_C32(0xaeb1b3a4), SPH_C32(0x3c2cf5e6), SPH_C32(0x18010000),
+	  SPH_C32(0x71f60000), SPH_C32(0xeb6d0000), SPH_C32(0xbaa52ec0),
+	  SPH_C32(0x44eb43fc), SPH_C32(0xbd46e624), SPH_C32(0xdb79a135),
+	  SPH_C32(0xe5be9526) },
+	{ SPH_C32(0x43280000), SPH_C32(0x7d1b0000), SPH_C32(0x5ca60000),
+	  SPH_C32(0x11137ea0), SPH_C32(0xab092944), SPH_C32(0x01d43999),
+	  SPH_C32(0x8624b510), SPH_C32(0xeb76bd71), SPH_C32(0xe8c40000),
+	  SPH_C32(0x28d50000), SPH_C32(0xaeef0000), SPH_C32(0x5b282e00),
+	  SPH_C32(0x7f8645cd), SPH_C32(0x7fabb0bd), SPH_C32(0x10995f29),
+	  SPH_C32(0xb31924b9) },
+	{ SPH_C32(0xbadd0000), SPH_C32(0x13ad0000), SPH_C32(0xb7e70000),
+	  SPH_C32(0xf7282800), SPH_C32(0xdf45144d), SPH_C32(0x361ac33a),
+	  SPH_C32(0xea5a8d14), SPH_C32(0x2a2c18f0), SPH_C32(0xb82f0000),
+	  SPH_C32(0xb12c0000), SPH_C32(0x30d80000), SPH_C32(0x14445000),
+	  SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec), SPH_C32(0x2e98bf23),
+	  SPH_C32(0x551e3d6e) },
+	{ SPH_C32(0x5cf50000), SPH_C32(0x5fe60000), SPH_C32(0x1fb20000),
+	  SPH_C32(0x24f82ae0), SPH_C32(0x072424f5), SPH_C32(0xaebd73e0),
+	  SPH_C32(0xc2cf8ba0), SPH_C32(0xfd765067), SPH_C32(0x48ea0000),
+	  SPH_C32(0xe80f0000), SPH_C32(0x755a0000), SPH_C32(0xf5c950c0),
+	  SPH_C32(0xfa356693), SPH_C32(0xf3cabe75), SPH_C32(0xe578413f),
+	  SPH_C32(0x03b98cf1) },
+	{ SPH_C32(0x4a180000), SPH_C32(0x4a8e0000), SPH_C32(0xf2650000),
+	  SPH_C32(0x16a528c0), SPH_C32(0xe428127c), SPH_C32(0xf4f795a3),
+	  SPH_C32(0x21ba7308), SPH_C32(0x7c8ba96f), SPH_C32(0xaec20000),
+	  SPH_C32(0xa4440000), SPH_C32(0xdd0f0000), SPH_C32(0x26195220),
+	  SPH_C32(0x2254562b), SPH_C32(0x6b6d0eaf), SPH_C32(0xcded478b),
+	  SPH_C32(0xd4e3c466) },
+	{ SPH_C32(0xac300000), SPH_C32(0x06c50000), SPH_C32(0x5a300000),
+	  SPH_C32(0xc5752a20), SPH_C32(0x3c4922c4), SPH_C32(0x6c502579),
+	  SPH_C32(0x092f75bc), SPH_C32(0xabd1e1f8), SPH_C32(0x5e070000),
+	  SPH_C32(0xfd670000), SPH_C32(0x988d0000), SPH_C32(0xc79452e0),
+	  SPH_C32(0x1939501a), SPH_C32(0xa9805836), SPH_C32(0x060db997),
+	  SPH_C32(0x824475f9) },
+	{ SPH_C32(0x0eec0000), SPH_C32(0x649e0000), SPH_C32(0x06ba0000),
+	  SPH_C32(0x88f82ce0), SPH_C32(0xa7e77575), SPH_C32(0xe70c0067),
+	  SPH_C32(0x380c599d), SPH_C32(0x64436c2e), SPH_C32(0x5b290000),
+	  SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000), SPH_C32(0xabb65060),
+	  SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd), SPH_C32(0x5d5d1425),
+	  SPH_C32(0x0ec82857) },
+	{ SPH_C32(0xe8c40000), SPH_C32(0x28d50000), SPH_C32(0xaeef0000),
+	  SPH_C32(0x5b282e00), SPH_C32(0x7f8645cd), SPH_C32(0x7fabb0bd),
+	  SPH_C32(0x10995f29), SPH_C32(0xb31924b9), SPH_C32(0xabec0000),
+	  SPH_C32(0x55ce0000), SPH_C32(0xf2490000), SPH_C32(0x4a3b50a0),
+	  SPH_C32(0xd48f6c89), SPH_C32(0x7e7f8924), SPH_C32(0x96bdea39),
+	  SPH_C32(0x586f99c8) },
+	{ SPH_C32(0xfe290000), SPH_C32(0x3dbd0000), SPH_C32(0x43380000),
+	  SPH_C32(0x69752c20), SPH_C32(0x9c8a7344), SPH_C32(0x25e156fe),
+	  SPH_C32(0xf3eca781), SPH_C32(0x32e4ddb1), SPH_C32(0x4dc40000),
+	  SPH_C32(0x19850000), SPH_C32(0x5a1c0000), SPH_C32(0x99eb5240),
+	  SPH_C32(0x0cee5c31), SPH_C32(0xe6d839fe), SPH_C32(0xbe28ec8d),
+	  SPH_C32(0x8f35d15f) },
+	{ SPH_C32(0x18010000), SPH_C32(0x71f60000), SPH_C32(0xeb6d0000),
+	  SPH_C32(0xbaa52ec0), SPH_C32(0x44eb43fc), SPH_C32(0xbd46e624),
+	  SPH_C32(0xdb79a135), SPH_C32(0xe5be9526), SPH_C32(0xbd010000),
+	  SPH_C32(0x40a60000), SPH_C32(0x1f9e0000), SPH_C32(0x78665280),
+	  SPH_C32(0x37835a00), SPH_C32(0x24356f67), SPH_C32(0x75c81291),
+	  SPH_C32(0xd99260c0) },
+	{ SPH_C32(0x59db0000), SPH_C32(0xae6c0000), SPH_C32(0x30f40000),
+	  SPH_C32(0x48da2860), SPH_C32(0xf1ff1e57), SPH_C32(0xbbaff46b),
+	  SPH_C32(0x999f2612), SPH_C32(0x71fa0dc9), SPH_C32(0xef180000),
+	  SPH_C32(0x7bde0000), SPH_C32(0x06960000), SPH_C32(0xd4665480),
+	  SPH_C32(0x97400b80), SPH_C32(0x6d841ce0), SPH_C32(0x8f0bc0ac),
+	  SPH_C32(0x40a75c89) },
+	{ SPH_C32(0xbff30000), SPH_C32(0xe2270000), SPH_C32(0x98a10000),
+	  SPH_C32(0x9b0a2a80), SPH_C32(0x299e2eef), SPH_C32(0x230844b1),
+	  SPH_C32(0xb10a20a6), SPH_C32(0xa6a0455e), SPH_C32(0x1fdd0000),
+	  SPH_C32(0x22fd0000), SPH_C32(0x43140000), SPH_C32(0x35eb5440),
+	  SPH_C32(0xac2d0db1), SPH_C32(0xaf694a79), SPH_C32(0x44eb3eb0),
+	  SPH_C32(0x1600ed16) },
+	{ SPH_C32(0xa91e0000), SPH_C32(0xf74f0000), SPH_C32(0x75760000),
+	  SPH_C32(0xa95728a0), SPH_C32(0xca921866), SPH_C32(0x7942a2f2),
+	  SPH_C32(0x527fd80e), SPH_C32(0x275dbc56), SPH_C32(0xf9f50000),
+	  SPH_C32(0x6eb60000), SPH_C32(0xeb410000), SPH_C32(0xe63b56a0),
+	  SPH_C32(0x744c3d09), SPH_C32(0x37cefaa3), SPH_C32(0x6c7e3804),
+	  SPH_C32(0xc15aa581) },
+	{ SPH_C32(0x4f360000), SPH_C32(0xbb040000), SPH_C32(0xdd230000),
+	  SPH_C32(0x7a872a40), SPH_C32(0x12f328de), SPH_C32(0xe1e51228),
+	  SPH_C32(0x7aeadeba), SPH_C32(0xf007f4c1), SPH_C32(0x09300000),
+	  SPH_C32(0x37950000), SPH_C32(0xaec30000), SPH_C32(0x07b65660),
+	  SPH_C32(0x4f213b38), SPH_C32(0xf523ac3a), SPH_C32(0xa79ec618),
+	  SPH_C32(0x97fd141e) },
+	{ SPH_C32(0xedea0000), SPH_C32(0xd95f0000), SPH_C32(0x81a90000),
+	  SPH_C32(0x370a2c80), SPH_C32(0x895d7f6f), SPH_C32(0x6ab93736),
+	  SPH_C32(0x4bc9f29b), SPH_C32(0x3f957917), SPH_C32(0x0c1e0000),
+	  SPH_C32(0xc61f0000), SPH_C32(0x81850000), SPH_C32(0x6b9454e0),
+	  SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1), SPH_C32(0xfcce6baa),
+	  SPH_C32(0x1b7149b0) },
+	{ SPH_C32(0x0bc20000), SPH_C32(0x95140000), SPH_C32(0x29fc0000),
+	  SPH_C32(0xe4da2e60), SPH_C32(0x513c4fd7), SPH_C32(0xf21e87ec),
+	  SPH_C32(0x635cf42f), SPH_C32(0xe8cf3180), SPH_C32(0xfcdb0000),
+	  SPH_C32(0x9f3c0000), SPH_C32(0xc4070000), SPH_C32(0x8a195420),
+	  SPH_C32(0x829707ab), SPH_C32(0x22dc7d28), SPH_C32(0x372e95b6),
+	  SPH_C32(0x4dd6f82f) },
+	{ SPH_C32(0x1d2f0000), SPH_C32(0x807c0000), SPH_C32(0xc42b0000),
+	  SPH_C32(0xd6872c40), SPH_C32(0xb230795e), SPH_C32(0xa85461af),
+	  SPH_C32(0x80290c87), SPH_C32(0x6932c888), SPH_C32(0x1af30000),
+	  SPH_C32(0xd3770000), SPH_C32(0x6c520000), SPH_C32(0x59c956c0),
+	  SPH_C32(0x5af63713), SPH_C32(0xba7bcdf2), SPH_C32(0x1fbb9302),
+	  SPH_C32(0x9a8cb0b8) },
+	{ SPH_C32(0xfb070000), SPH_C32(0xcc370000), SPH_C32(0x6c7e0000),
+	  SPH_C32(0x05572ea0), SPH_C32(0x6a5149e6), SPH_C32(0x30f3d175),
+	  SPH_C32(0xa8bc0a33), SPH_C32(0xbe68801f), SPH_C32(0xea360000),
+	  SPH_C32(0x8a540000), SPH_C32(0x29d00000), SPH_C32(0xb8445600),
+	  SPH_C32(0x619b3122), SPH_C32(0x78969b6b), SPH_C32(0xd45b6d1e),
+	  SPH_C32(0xcc2b0127) },
+	{ SPH_C32(0xb82f0000), SPH_C32(0xb12c0000), SPH_C32(0x30d80000),
+	  SPH_C32(0x14445000), SPH_C32(0xc15860a2), SPH_C32(0x3127e8ec),
+	  SPH_C32(0x2e98bf23), SPH_C32(0x551e3d6e), SPH_C32(0x02f20000),
+	  SPH_C32(0xa2810000), SPH_C32(0x873f0000), SPH_C32(0xe36c7800),
+	  SPH_C32(0x1e1d74ef), SPH_C32(0x073d2bd6), SPH_C32(0xc4c23237),
+	  SPH_C32(0x7f32259e) },
+	{ SPH_C32(0x5e070000), SPH_C32(0xfd670000), SPH_C32(0x988d0000),
+	  SPH_C32(0xc79452e0), SPH_C32(0x1939501a), SPH_C32(0xa9805836),
+	  SPH_C32(0x060db997), SPH_C32(0x824475f9), SPH_C32(0xf2370000),
+	  SPH_C32(0xfba20000), SPH_C32(0xc2bd0000), SPH_C32(0x02e178c0),
+	  SPH_C32(0x257072de), SPH_C32(0xc5d07d4f), SPH_C32(0x0f22cc2b),
+	  SPH_C32(0x29959401) },
+	{ SPH_C32(0x48ea0000), SPH_C32(0xe80f0000), SPH_C32(0x755a0000),
+	  SPH_C32(0xf5c950c0), SPH_C32(0xfa356693), SPH_C32(0xf3cabe75),
+	  SPH_C32(0xe578413f), SPH_C32(0x03b98cf1), SPH_C32(0x141f0000),
+	  SPH_C32(0xb7e90000), SPH_C32(0x6ae80000), SPH_C32(0xd1317a20),
+	  SPH_C32(0xfd114266), SPH_C32(0x5d77cd95), SPH_C32(0x27b7ca9f),
+	  SPH_C32(0xfecfdc96) },
+	{ SPH_C32(0xaec20000), SPH_C32(0xa4440000), SPH_C32(0xdd0f0000),
+	  SPH_C32(0x26195220), SPH_C32(0x2254562b), SPH_C32(0x6b6d0eaf),
+	  SPH_C32(0xcded478b), SPH_C32(0xd4e3c466), SPH_C32(0xe4da0000),
+	  SPH_C32(0xeeca0000), SPH_C32(0x2f6a0000), SPH_C32(0x30bc7ae0),
+	  SPH_C32(0xc67c4457), SPH_C32(0x9f9a9b0c), SPH_C32(0xec573483),
+	  SPH_C32(0xa8686d09) },
+	{ SPH_C32(0x0c1e0000), SPH_C32(0xc61f0000), SPH_C32(0x81850000),
+	  SPH_C32(0x6b9454e0), SPH_C32(0xb9fa019a), SPH_C32(0xe0312bb1),
+	  SPH_C32(0xfcce6baa), SPH_C32(0x1b7149b0), SPH_C32(0xe1f40000),
+	  SPH_C32(0x1f400000), SPH_C32(0x002c0000), SPH_C32(0x5c9e7860),
+	  SPH_C32(0x30a77ef5), SPH_C32(0x8a881c87), SPH_C32(0xb7079931),
+	  SPH_C32(0x24e430a7) },
+	{ SPH_C32(0xea360000), SPH_C32(0x8a540000), SPH_C32(0x29d00000),
+	  SPH_C32(0xb8445600), SPH_C32(0x619b3122), SPH_C32(0x78969b6b),
+	  SPH_C32(0xd45b6d1e), SPH_C32(0xcc2b0127), SPH_C32(0x11310000),
+	  SPH_C32(0x46630000), SPH_C32(0x45ae0000), SPH_C32(0xbd1378a0),
+	  SPH_C32(0x0bca78c4), SPH_C32(0x48654a1e), SPH_C32(0x7ce7672d),
+	  SPH_C32(0x72438138) },
+	{ SPH_C32(0xfcdb0000), SPH_C32(0x9f3c0000), SPH_C32(0xc4070000),
+	  SPH_C32(0x8a195420), SPH_C32(0x829707ab), SPH_C32(0x22dc7d28),
+	  SPH_C32(0x372e95b6), SPH_C32(0x4dd6f82f), SPH_C32(0xf7190000),
+	  SPH_C32(0x0a280000), SPH_C32(0xedfb0000), SPH_C32(0x6ec37a40),
+	  SPH_C32(0xd3ab487c), SPH_C32(0xd0c2fac4), SPH_C32(0x54726199),
+	  SPH_C32(0xa519c9af) },
+	{ SPH_C32(0x1af30000), SPH_C32(0xd3770000), SPH_C32(0x6c520000),
+	  SPH_C32(0x59c956c0), SPH_C32(0x5af63713), SPH_C32(0xba7bcdf2),
+	  SPH_C32(0x1fbb9302), SPH_C32(0x9a8cb0b8), SPH_C32(0x07dc0000),
+	  SPH_C32(0x530b0000), SPH_C32(0xa8790000), SPH_C32(0x8f4e7a80),
+	  SPH_C32(0xe8c64e4d), SPH_C32(0x122fac5d), SPH_C32(0x9f929f85),
+	  SPH_C32(0xf3be7830) },
+	{ SPH_C32(0x5b290000), SPH_C32(0x0ced0000), SPH_C32(0xb7cb0000),
+	  SPH_C32(0xabb65060), SPH_C32(0xefe26ab8), SPH_C32(0xbc92dfbd),
+	  SPH_C32(0x5d5d1425), SPH_C32(0x0ec82857), SPH_C32(0x55c50000),
+	  SPH_C32(0x68730000), SPH_C32(0xb1710000), SPH_C32(0x234e7c80),
+	  SPH_C32(0x48051fcd), SPH_C32(0x5b9edfda), SPH_C32(0x65514db8),
+	  SPH_C32(0x6a8b4479) },
+	{ SPH_C32(0xbd010000), SPH_C32(0x40a60000), SPH_C32(0x1f9e0000),
+	  SPH_C32(0x78665280), SPH_C32(0x37835a00), SPH_C32(0x24356f67),
+	  SPH_C32(0x75c81291), SPH_C32(0xd99260c0), SPH_C32(0xa5000000),
+	  SPH_C32(0x31500000), SPH_C32(0xf4f30000), SPH_C32(0xc2c37c40),
+	  SPH_C32(0x736819fc), SPH_C32(0x99738943), SPH_C32(0xaeb1b3a4),
+	  SPH_C32(0x3c2cf5e6) },
+	{ SPH_C32(0xabec0000), SPH_C32(0x55ce0000), SPH_C32(0xf2490000),
+	  SPH_C32(0x4a3b50a0), SPH_C32(0xd48f6c89), SPH_C32(0x7e7f8924),
+	  SPH_C32(0x96bdea39), SPH_C32(0x586f99c8), SPH_C32(0x43280000),
+	  SPH_C32(0x7d1b0000), SPH_C32(0x5ca60000), SPH_C32(0x11137ea0),
+	  SPH_C32(0xab092944), SPH_C32(0x01d43999), SPH_C32(0x8624b510),
+	  SPH_C32(0xeb76bd71) },
+	{ SPH_C32(0x4dc40000), SPH_C32(0x19850000), SPH_C32(0x5a1c0000),
+	  SPH_C32(0x99eb5240), SPH_C32(0x0cee5c31), SPH_C32(0xe6d839fe),
+	  SPH_C32(0xbe28ec8d), SPH_C32(0x8f35d15f), SPH_C32(0xb3ed0000),
+	  SPH_C32(0x24380000), SPH_C32(0x19240000), SPH_C32(0xf09e7e60),
+	  SPH_C32(0x90642f75), SPH_C32(0xc3396f00), SPH_C32(0x4dc44b0c),
+	  SPH_C32(0xbdd10cee) },
+	{ SPH_C32(0xef180000), SPH_C32(0x7bde0000), SPH_C32(0x06960000),
+	  SPH_C32(0xd4665480), SPH_C32(0x97400b80), SPH_C32(0x6d841ce0),
+	  SPH_C32(0x8f0bc0ac), SPH_C32(0x40a75c89), SPH_C32(0xb6c30000),
+	  SPH_C32(0xd5b20000), SPH_C32(0x36620000), SPH_C32(0x9cbc7ce0),
+	  SPH_C32(0x66bf15d7), SPH_C32(0xd62be88b), SPH_C32(0x1694e6be),
+	  SPH_C32(0x315d5140) },
+	{ SPH_C32(0x09300000), SPH_C32(0x37950000), SPH_C32(0xaec30000),
+	  SPH_C32(0x07b65660), SPH_C32(0x4f213b38), SPH_C32(0xf523ac3a),
+	  SPH_C32(0xa79ec618), SPH_C32(0x97fd141e), SPH_C32(0x46060000),
+	  SPH_C32(0x8c910000), SPH_C32(0x73e00000), SPH_C32(0x7d317c20),
+	  SPH_C32(0x5dd213e6), SPH_C32(0x14c6be12), SPH_C32(0xdd7418a2),
+	  SPH_C32(0x67fae0df) },
+	{ SPH_C32(0x1fdd0000), SPH_C32(0x22fd0000), SPH_C32(0x43140000),
+	  SPH_C32(0x35eb5440), SPH_C32(0xac2d0db1), SPH_C32(0xaf694a79),
+	  SPH_C32(0x44eb3eb0), SPH_C32(0x1600ed16), SPH_C32(0xa02e0000),
+	  SPH_C32(0xc0da0000), SPH_C32(0xdbb50000), SPH_C32(0xaee17ec0),
+	  SPH_C32(0x85b3235e), SPH_C32(0x8c610ec8), SPH_C32(0xf5e11e16),
+	  SPH_C32(0xb0a0a848) },
+	{ SPH_C32(0xf9f50000), SPH_C32(0x6eb60000), SPH_C32(0xeb410000),
+	  SPH_C32(0xe63b56a0), SPH_C32(0x744c3d09), SPH_C32(0x37cefaa3),
+	  SPH_C32(0x6c7e3804), SPH_C32(0xc15aa581), SPH_C32(0x50eb0000),
+	  SPH_C32(0x99f90000), SPH_C32(0x9e370000), SPH_C32(0x4f6c7e00),
+	  SPH_C32(0xbede256f), SPH_C32(0x4e8c5851), SPH_C32(0x3e01e00a),
+	  SPH_C32(0xe60719d7) },
+	{ SPH_C32(0x1e6c0000), SPH_C32(0xc4420000), SPH_C32(0x8a2e0000),
+	  SPH_C32(0xbcb6b800), SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da),
+	  SPH_C32(0x6a0c1bc8), SPH_C32(0xb99dc2eb), SPH_C32(0x92560000),
+	  SPH_C32(0x1eda0000), SPH_C32(0xea510000), SPH_C32(0xe8b13000),
+	  SPH_C32(0xa93556a5), SPH_C32(0xebfb6199), SPH_C32(0xb15c2254),
+	  SPH_C32(0x33c5244f) },
+	{ SPH_C32(0xf8440000), SPH_C32(0x88090000), SPH_C32(0x227b0000),
+	  SPH_C32(0x6f66bae0), SPH_C32(0xf425230e), SPH_C32(0x135a6300),
+	  SPH_C32(0x42991d7c), SPH_C32(0x6ec78a7c), SPH_C32(0x62930000),
+	  SPH_C32(0x47f90000), SPH_C32(0xafd30000), SPH_C32(0x093c30c0),
+	  SPH_C32(0x92585094), SPH_C32(0x29163700), SPH_C32(0x7abcdc48),
+	  SPH_C32(0x656295d0) },
+	{ SPH_C32(0xeea90000), SPH_C32(0x9d610000), SPH_C32(0xcfac0000),
+	  SPH_C32(0x5d3bb8c0), SPH_C32(0x17291587), SPH_C32(0x49108543),
+	  SPH_C32(0xa1ece5d4), SPH_C32(0xef3a7374), SPH_C32(0x84bb0000),
+	  SPH_C32(0x0bb20000), SPH_C32(0x07860000), SPH_C32(0xdaec3220),
+	  SPH_C32(0x4a39602c), SPH_C32(0xb1b187da), SPH_C32(0x5229dafc),
+	  SPH_C32(0xb238dd47) },
+	{ SPH_C32(0x08810000), SPH_C32(0xd12a0000), SPH_C32(0x67f90000),
+	  SPH_C32(0x8eebba20), SPH_C32(0xcf48253f), SPH_C32(0xd1b73599),
+	  SPH_C32(0x8979e360), SPH_C32(0x38603be3), SPH_C32(0x747e0000),
+	  SPH_C32(0x52910000), SPH_C32(0x42040000), SPH_C32(0x3b6132e0),
+	  SPH_C32(0x7154661d), SPH_C32(0x735cd143), SPH_C32(0x99c924e0),
+	  SPH_C32(0xe49f6cd8) },
+	{ SPH_C32(0xaa5d0000), SPH_C32(0xb3710000), SPH_C32(0x3b730000),
+	  SPH_C32(0xc366bce0), SPH_C32(0x54e6728e), SPH_C32(0x5aeb1087),
+	  SPH_C32(0xb85acf41), SPH_C32(0xf7f2b635), SPH_C32(0x71500000),
+	  SPH_C32(0xa31b0000), SPH_C32(0x6d420000), SPH_C32(0x57433060),
+	  SPH_C32(0x878f5cbf), SPH_C32(0x664e56c8), SPH_C32(0xc2998952),
+	  SPH_C32(0x68133176) },
+	{ SPH_C32(0x4c750000), SPH_C32(0xff3a0000), SPH_C32(0x93260000),
+	  SPH_C32(0x10b6be00), SPH_C32(0x8c874236), SPH_C32(0xc24ca05d),
+	  SPH_C32(0x90cfc9f5), SPH_C32(0x20a8fea2), SPH_C32(0x81950000),
+	  SPH_C32(0xfa380000), SPH_C32(0x28c00000), SPH_C32(0xb6ce30a0),
+	  SPH_C32(0xbce25a8e), SPH_C32(0xa4a30051), SPH_C32(0x0979774e),
+	  SPH_C32(0x3eb480e9) },
+	{ SPH_C32(0x5a980000), SPH_C32(0xea520000), SPH_C32(0x7ef10000),
+	  SPH_C32(0x22ebbc20), SPH_C32(0x6f8b74bf), SPH_C32(0x9806461e),
+	  SPH_C32(0x73ba315d), SPH_C32(0xa15507aa), SPH_C32(0x67bd0000),
+	  SPH_C32(0xb6730000), SPH_C32(0x80950000), SPH_C32(0x651e3240),
+	  SPH_C32(0x64836a36), SPH_C32(0x3c04b08b), SPH_C32(0x21ec71fa),
+	  SPH_C32(0xe9eec87e) },
+	{ SPH_C32(0xbcb00000), SPH_C32(0xa6190000), SPH_C32(0xd6a40000),
+	  SPH_C32(0xf13bbec0), SPH_C32(0xb7ea4407), SPH_C32(0x00a1f6c4),
+	  SPH_C32(0x5b2f37e9), SPH_C32(0x760f4f3d), SPH_C32(0x97780000),
+	  SPH_C32(0xef500000), SPH_C32(0xc5170000), SPH_C32(0x84933280),
+	  SPH_C32(0x5fee6c07), SPH_C32(0xfee9e612), SPH_C32(0xea0c8fe6),
+	  SPH_C32(0xbf4979e1) },
+	{ SPH_C32(0xfd6a0000), SPH_C32(0x79830000), SPH_C32(0x0d3d0000),
+	  SPH_C32(0x0344b860), SPH_C32(0x02fe19ac), SPH_C32(0x0648e48b),
+	  SPH_C32(0x19c9b0ce), SPH_C32(0xe24bd7d2), SPH_C32(0xc5610000),
+	  SPH_C32(0xd4280000), SPH_C32(0xdc1f0000), SPH_C32(0x28933480),
+	  SPH_C32(0xff2d3d87), SPH_C32(0xb7589595), SPH_C32(0x10cf5ddb),
+	  SPH_C32(0x267c45a8) },
+	{ SPH_C32(0x1b420000), SPH_C32(0x35c80000), SPH_C32(0xa5680000),
+	  SPH_C32(0xd094ba80), SPH_C32(0xda9f2914), SPH_C32(0x9eef5451),
+	  SPH_C32(0x315cb67a), SPH_C32(0x35119f45), SPH_C32(0x35a40000),
+	  SPH_C32(0x8d0b0000), SPH_C32(0x999d0000), SPH_C32(0xc91e3440),
+	  SPH_C32(0xc4403bb6), SPH_C32(0x75b5c30c), SPH_C32(0xdb2fa3c7),
+	  SPH_C32(0x70dbf437) },
+	{ SPH_C32(0x0daf0000), SPH_C32(0x20a00000), SPH_C32(0x48bf0000),
+	  SPH_C32(0xe2c9b8a0), SPH_C32(0x39931f9d), SPH_C32(0xc4a5b212),
+	  SPH_C32(0xd2294ed2), SPH_C32(0xb4ec664d), SPH_C32(0xd38c0000),
+	  SPH_C32(0xc1400000), SPH_C32(0x31c80000), SPH_C32(0x1ace36a0),
+	  SPH_C32(0x1c210b0e), SPH_C32(0xed1273d6), SPH_C32(0xf3baa573),
+	  SPH_C32(0xa781bca0) },
+	{ SPH_C32(0xeb870000), SPH_C32(0x6ceb0000), SPH_C32(0xe0ea0000),
+	  SPH_C32(0x3119ba40), SPH_C32(0xe1f22f25), SPH_C32(0x5c0202c8),
+	  SPH_C32(0xfabc4866), SPH_C32(0x63b62eda), SPH_C32(0x23490000),
+	  SPH_C32(0x98630000), SPH_C32(0x744a0000), SPH_C32(0xfb433660),
+	  SPH_C32(0x274c0d3f), SPH_C32(0x2fff254f), SPH_C32(0x385a5b6f),
+	  SPH_C32(0xf1260d3f) },
+	{ SPH_C32(0x495b0000), SPH_C32(0x0eb00000), SPH_C32(0xbc600000),
+	  SPH_C32(0x7c94bc80), SPH_C32(0x7a5c7894), SPH_C32(0xd75e27d6),
+	  SPH_C32(0xcb9f6447), SPH_C32(0xac24a30c), SPH_C32(0x26670000),
+	  SPH_C32(0x69e90000), SPH_C32(0x5b0c0000), SPH_C32(0x976134e0),
+	  SPH_C32(0xd197379d), SPH_C32(0x3aeda2c4), SPH_C32(0x630af6dd),
+	  SPH_C32(0x7daa5091) },
+	{ SPH_C32(0xaf730000), SPH_C32(0x42fb0000), SPH_C32(0x14350000),
+	  SPH_C32(0xaf44be60), SPH_C32(0xa23d482c), SPH_C32(0x4ff9970c),
+	  SPH_C32(0xe30a62f3), SPH_C32(0x7b7eeb9b), SPH_C32(0xd6a20000),
+	  SPH_C32(0x30ca0000), SPH_C32(0x1e8e0000), SPH_C32(0x76ec3420),
+	  SPH_C32(0xeafa31ac), SPH_C32(0xf800f45d), SPH_C32(0xa8ea08c1),
+	  SPH_C32(0x2b0de10e) },
+	{ SPH_C32(0xb99e0000), SPH_C32(0x57930000), SPH_C32(0xf9e20000),
+	  SPH_C32(0x9d19bc40), SPH_C32(0x41317ea5), SPH_C32(0x15b3714f),
+	  SPH_C32(0x007f9a5b), SPH_C32(0xfa831293), SPH_C32(0x308a0000),
+	  SPH_C32(0x7c810000), SPH_C32(0xb6db0000), SPH_C32(0xa53c36c0),
+	  SPH_C32(0x329b0114), SPH_C32(0x60a74487), SPH_C32(0x807f0e75),
+	  SPH_C32(0xfc57a999) },
+	{ SPH_C32(0x5fb60000), SPH_C32(0x1bd80000), SPH_C32(0x51b70000),
+	  SPH_C32(0x4ec9bea0), SPH_C32(0x99504e1d), SPH_C32(0x8d14c195),
+	  SPH_C32(0x28ea9cef), SPH_C32(0x2dd95a04), SPH_C32(0xc04f0000),
+	  SPH_C32(0x25a20000), SPH_C32(0xf3590000), SPH_C32(0x44b13600),
+	  SPH_C32(0x09f60725), SPH_C32(0xa24a121e), SPH_C32(0x4b9ff069),
+	  SPH_C32(0xaaf01806) },
+	{ SPH_C32(0x1c9e0000), SPH_C32(0x66c30000), SPH_C32(0x0d110000),
+	  SPH_C32(0x5fdac000), SPH_C32(0x32596759), SPH_C32(0x8cc0f80c),
+	  SPH_C32(0xaece29ff), SPH_C32(0xc6afe775), SPH_C32(0x288b0000),
+	  SPH_C32(0x0d770000), SPH_C32(0x5db60000), SPH_C32(0x1f991800),
+	  SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3), SPH_C32(0x5b06af40),
+	  SPH_C32(0x19e93cbf) },
+	{ SPH_C32(0xfab60000), SPH_C32(0x2a880000), SPH_C32(0xa5440000),
+	  SPH_C32(0x8c0ac2e0), SPH_C32(0xea3857e1), SPH_C32(0x146748d6),
+	  SPH_C32(0x865b2f4b), SPH_C32(0x11f5afe2), SPH_C32(0xd84e0000),
+	  SPH_C32(0x54540000), SPH_C32(0x18340000), SPH_C32(0xfe1418c0),
+	  SPH_C32(0x4d1d44d9), SPH_C32(0x1f0cf43a), SPH_C32(0x90e6515c),
+	  SPH_C32(0x4f4e8d20) },
+	{ SPH_C32(0xec5b0000), SPH_C32(0x3fe00000), SPH_C32(0x48930000),
+	  SPH_C32(0xbe57c0c0), SPH_C32(0x09346168), SPH_C32(0x4e2dae95),
+	  SPH_C32(0x652ed7e3), SPH_C32(0x900856ea), SPH_C32(0x3e660000),
+	  SPH_C32(0x181f0000), SPH_C32(0xb0610000), SPH_C32(0x2dc41a20),
+	  SPH_C32(0x957c7461), SPH_C32(0x87ab44e0), SPH_C32(0xb87357e8),
+	  SPH_C32(0x9814c5b7) },
+	{ SPH_C32(0x0a730000), SPH_C32(0x73ab0000), SPH_C32(0xe0c60000),
+	  SPH_C32(0x6d87c220), SPH_C32(0xd15551d0), SPH_C32(0xd68a1e4f),
+	  SPH_C32(0x4dbbd157), SPH_C32(0x47521e7d), SPH_C32(0xcea30000),
+	  SPH_C32(0x413c0000), SPH_C32(0xf5e30000), SPH_C32(0xcc491ae0),
+	  SPH_C32(0xae117250), SPH_C32(0x45461279), SPH_C32(0x7393a9f4),
+	  SPH_C32(0xceb37428) },
+	{ SPH_C32(0xa8af0000), SPH_C32(0x11f00000), SPH_C32(0xbc4c0000),
+	  SPH_C32(0x200ac4e0), SPH_C32(0x4afb0661), SPH_C32(0x5dd63b51),
+	  SPH_C32(0x7c98fd76), SPH_C32(0x88c093ab), SPH_C32(0xcb8d0000),
+	  SPH_C32(0xb0b60000), SPH_C32(0xdaa50000), SPH_C32(0xa06b1860),
+	  SPH_C32(0x58ca48f2), SPH_C32(0x505495f2), SPH_C32(0x28c30446),
+	  SPH_C32(0x423f2986) },
+	{ SPH_C32(0x4e870000), SPH_C32(0x5dbb0000), SPH_C32(0x14190000),
+	  SPH_C32(0xf3dac600), SPH_C32(0x929a36d9), SPH_C32(0xc5718b8b),
+	  SPH_C32(0x540dfbc2), SPH_C32(0x5f9adb3c), SPH_C32(0x3b480000),
+	  SPH_C32(0xe9950000), SPH_C32(0x9f270000), SPH_C32(0x41e618a0),
+	  SPH_C32(0x63a74ec3), SPH_C32(0x92b9c36b), SPH_C32(0xe323fa5a),
+	  SPH_C32(0x14989819) },
+	{ SPH_C32(0x586a0000), SPH_C32(0x48d30000), SPH_C32(0xf9ce0000),
+	  SPH_C32(0xc187c420), SPH_C32(0x71960050), SPH_C32(0x9f3b6dc8),
+	  SPH_C32(0xb778036a), SPH_C32(0xde672234), SPH_C32(0xdd600000),
+	  SPH_C32(0xa5de0000), SPH_C32(0x37720000), SPH_C32(0x92361a40),
+	  SPH_C32(0xbbc67e7b), SPH_C32(0x0a1e73b1), SPH_C32(0xcbb6fcee),
+	  SPH_C32(0xc3c2d08e) },
+	{ SPH_C32(0xbe420000), SPH_C32(0x04980000), SPH_C32(0x519b0000),
+	  SPH_C32(0x1257c6c0), SPH_C32(0xa9f730e8), SPH_C32(0x079cdd12),
+	  SPH_C32(0x9fed05de), SPH_C32(0x093d6aa3), SPH_C32(0x2da50000),
+	  SPH_C32(0xfcfd0000), SPH_C32(0x72f00000), SPH_C32(0x73bb1a80),
+	  SPH_C32(0x80ab784a), SPH_C32(0xc8f32528), SPH_C32(0x005602f2),
+	  SPH_C32(0x95656111) },
+	{ SPH_C32(0xff980000), SPH_C32(0xdb020000), SPH_C32(0x8a020000),
+	  SPH_C32(0xe028c060), SPH_C32(0x1ce36d43), SPH_C32(0x0175cf5d),
+	  SPH_C32(0xdd0b82f9), SPH_C32(0x9d79f24c), SPH_C32(0x7fbc0000),
+	  SPH_C32(0xc7850000), SPH_C32(0x6bf80000), SPH_C32(0xdfbb1c80),
+	  SPH_C32(0x206829ca), SPH_C32(0x814256af), SPH_C32(0xfa95d0cf),
+	  SPH_C32(0x0c505d58) },
+	{ SPH_C32(0x19b00000), SPH_C32(0x97490000), SPH_C32(0x22570000),
+	  SPH_C32(0x33f8c280), SPH_C32(0xc4825dfb), SPH_C32(0x99d27f87),
+	  SPH_C32(0xf59e844d), SPH_C32(0x4a23badb), SPH_C32(0x8f790000),
+	  SPH_C32(0x9ea60000), SPH_C32(0x2e7a0000), SPH_C32(0x3e361c40),
+	  SPH_C32(0x1b052ffb), SPH_C32(0x43af0036), SPH_C32(0x31752ed3),
+	  SPH_C32(0x5af7ecc7) },
+	{ SPH_C32(0x0f5d0000), SPH_C32(0x82210000), SPH_C32(0xcf800000),
+	  SPH_C32(0x01a5c0a0), SPH_C32(0x278e6b72), SPH_C32(0xc39899c4),
+	  SPH_C32(0x16eb7ce5), SPH_C32(0xcbde43d3), SPH_C32(0x69510000),
+	  SPH_C32(0xd2ed0000), SPH_C32(0x862f0000), SPH_C32(0xede61ea0),
+	  SPH_C32(0xc3641f43), SPH_C32(0xdb08b0ec), SPH_C32(0x19e02867),
+	  SPH_C32(0x8dada450) },
+	{ SPH_C32(0xe9750000), SPH_C32(0xce6a0000), SPH_C32(0x67d50000),
+	  SPH_C32(0xd275c240), SPH_C32(0xffef5bca), SPH_C32(0x5b3f291e),
+	  SPH_C32(0x3e7e7a51), SPH_C32(0x1c840b44), SPH_C32(0x99940000),
+	  SPH_C32(0x8bce0000), SPH_C32(0xc3ad0000), SPH_C32(0x0c6b1e60),
+	  SPH_C32(0xf8091972), SPH_C32(0x19e5e675), SPH_C32(0xd200d67b),
+	  SPH_C32(0xdb0a15cf) },
+	{ SPH_C32(0x4ba90000), SPH_C32(0xac310000), SPH_C32(0x3b5f0000),
+	  SPH_C32(0x9ff8c480), SPH_C32(0x64410c7b), SPH_C32(0xd0630c00),
+	  SPH_C32(0x0f5d5670), SPH_C32(0xd3168692), SPH_C32(0x9cba0000),
+	  SPH_C32(0x7a440000), SPH_C32(0xeceb0000), SPH_C32(0x60491ce0),
+	  SPH_C32(0x0ed223d0), SPH_C32(0x0cf761fe), SPH_C32(0x89507bc9),
+	  SPH_C32(0x57864861) },
+	{ SPH_C32(0xad810000), SPH_C32(0xe07a0000), SPH_C32(0x930a0000),
+	  SPH_C32(0x4c28c660), SPH_C32(0xbc203cc3), SPH_C32(0x48c4bcda),
+	  SPH_C32(0x27c850c4), SPH_C32(0x044cce05), SPH_C32(0x6c7f0000),
+	  SPH_C32(0x23670000), SPH_C32(0xa9690000), SPH_C32(0x81c41c20),
+	  SPH_C32(0x35bf25e1), SPH_C32(0xce1a3767), SPH_C32(0x42b085d5),
+	  SPH_C32(0x0121f9fe) },
+	{ SPH_C32(0xbb6c0000), SPH_C32(0xf5120000), SPH_C32(0x7edd0000),
+	  SPH_C32(0x7e75c440), SPH_C32(0x5f2c0a4a), SPH_C32(0x128e5a99),
+	  SPH_C32(0xc4bda86c), SPH_C32(0x85b1370d), SPH_C32(0x8a570000),
+	  SPH_C32(0x6f2c0000), SPH_C32(0x013c0000), SPH_C32(0x52141ec0),
+	  SPH_C32(0xedde1559), SPH_C32(0x56bd87bd), SPH_C32(0x6a258361),
+	  SPH_C32(0xd67bb169) },
+	{ SPH_C32(0x5d440000), SPH_C32(0xb9590000), SPH_C32(0xd6880000),
+	  SPH_C32(0xada5c6a0), SPH_C32(0x874d3af2), SPH_C32(0x8a29ea43),
+	  SPH_C32(0xec28aed8), SPH_C32(0x52eb7f9a), SPH_C32(0x7a920000),
+	  SPH_C32(0x360f0000), SPH_C32(0x44be0000), SPH_C32(0xb3991e00),
+	  SPH_C32(0xd6b31368), SPH_C32(0x9450d124), SPH_C32(0xa1c57d7d),
+	  SPH_C32(0x80dc00f6) },
+	{ SPH_C32(0xa4b10000), SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000),
+	  SPH_C32(0x4b9e9000), SPH_C32(0xf30107fb), SPH_C32(0xbde710e0),
+	  SPH_C32(0x805696dc), SPH_C32(0x93b1da1b), SPH_C32(0x2a790000),
+	  SPH_C32(0xaff60000), SPH_C32(0xda890000), SPH_C32(0xfcf56000),
+	  SPH_C32(0x686d3607), SPH_C32(0xdadc8975), SPH_C32(0x9fc49d77),
+	  SPH_C32(0x66db1921) },
+	{ SPH_C32(0x42990000), SPH_C32(0x9ba40000), SPH_C32(0x959c0000),
+	  SPH_C32(0x984e92e0), SPH_C32(0x2b603743), SPH_C32(0x2540a03a),
+	  SPH_C32(0xa8c39068), SPH_C32(0x44eb928c), SPH_C32(0xdabc0000),
+	  SPH_C32(0xf6d50000), SPH_C32(0x9f0b0000), SPH_C32(0x1d7860c0),
+	  SPH_C32(0x53003036), SPH_C32(0x1831dfec), SPH_C32(0x5424636b),
+	  SPH_C32(0x307ca8be) },
+	{ SPH_C32(0x54740000), SPH_C32(0x8ecc0000), SPH_C32(0x784b0000),
+	  SPH_C32(0xaa1390c0), SPH_C32(0xc86c01ca), SPH_C32(0x7f0a4679),
+	  SPH_C32(0x4bb668c0), SPH_C32(0xc5166b84), SPH_C32(0x3c940000),
+	  SPH_C32(0xba9e0000), SPH_C32(0x375e0000), SPH_C32(0xcea86220),
+	  SPH_C32(0x8b61008e), SPH_C32(0x80966f36), SPH_C32(0x7cb165df),
+	  SPH_C32(0xe726e029) },
+	{ SPH_C32(0xb25c0000), SPH_C32(0xc2870000), SPH_C32(0xd01e0000),
+	  SPH_C32(0x79c39220), SPH_C32(0x100d3172), SPH_C32(0xe7adf6a3),
+	  SPH_C32(0x63236e74), SPH_C32(0x124c2313), SPH_C32(0xcc510000),
+	  SPH_C32(0xe3bd0000), SPH_C32(0x72dc0000), SPH_C32(0x2f2562e0),
+	  SPH_C32(0xb00c06bf), SPH_C32(0x427b39af), SPH_C32(0xb7519bc3),
+	  SPH_C32(0xb18151b6) },
+	{ SPH_C32(0x10800000), SPH_C32(0xa0dc0000), SPH_C32(0x8c940000),
+	  SPH_C32(0x344e94e0), SPH_C32(0x8ba366c3), SPH_C32(0x6cf1d3bd),
+	  SPH_C32(0x52004255), SPH_C32(0xdddeaec5), SPH_C32(0xc97f0000),
+	  SPH_C32(0x12370000), SPH_C32(0x5d9a0000), SPH_C32(0x43076060),
+	  SPH_C32(0x46d73c1d), SPH_C32(0x5769be24), SPH_C32(0xec013671),
+	  SPH_C32(0x3d0d0c18) },
+	{ SPH_C32(0xf6a80000), SPH_C32(0xec970000), SPH_C32(0x24c10000),
+	  SPH_C32(0xe79e9600), SPH_C32(0x53c2567b), SPH_C32(0xf4566367),
+	  SPH_C32(0x7a9544e1), SPH_C32(0x0a84e652), SPH_C32(0x39ba0000),
+	  SPH_C32(0x4b140000), SPH_C32(0x18180000), SPH_C32(0xa28a60a0),
+	  SPH_C32(0x7dba3a2c), SPH_C32(0x9584e8bd), SPH_C32(0x27e1c86d),
+	  SPH_C32(0x6baabd87) },
+	{ SPH_C32(0xe0450000), SPH_C32(0xf9ff0000), SPH_C32(0xc9160000),
+	  SPH_C32(0xd5c39420), SPH_C32(0xb0ce60f2), SPH_C32(0xae1c8524),
+	  SPH_C32(0x99e0bc49), SPH_C32(0x8b791f5a), SPH_C32(0xdf920000),
+	  SPH_C32(0x075f0000), SPH_C32(0xb04d0000), SPH_C32(0x715a6240),
+	  SPH_C32(0xa5db0a94), SPH_C32(0x0d235867), SPH_C32(0x0f74ced9),
+	  SPH_C32(0xbcf0f510) },
+	{ SPH_C32(0x066d0000), SPH_C32(0xb5b40000), SPH_C32(0x61430000),
+	  SPH_C32(0x061396c0), SPH_C32(0x68af504a), SPH_C32(0x36bb35fe),
+	  SPH_C32(0xb175bafd), SPH_C32(0x5c2357cd), SPH_C32(0x2f570000),
+	  SPH_C32(0x5e7c0000), SPH_C32(0xf5cf0000), SPH_C32(0x90d76280),
+	  SPH_C32(0x9eb60ca5), SPH_C32(0xcfce0efe), SPH_C32(0xc49430c5),
+	  SPH_C32(0xea57448f) },
+	{ SPH_C32(0x47b70000), SPH_C32(0x6a2e0000), SPH_C32(0xbada0000),
+	  SPH_C32(0xf46c9060), SPH_C32(0xddbb0de1), SPH_C32(0x305227b1),
+	  SPH_C32(0xf3933dda), SPH_C32(0xc867cf22), SPH_C32(0x7d4e0000),
+	  SPH_C32(0x65040000), SPH_C32(0xecc70000), SPH_C32(0x3cd76480),
+	  SPH_C32(0x3e755d25), SPH_C32(0x867f7d79), SPH_C32(0x3e57e2f8),
+	  SPH_C32(0x736278c6) },
+	{ SPH_C32(0xa19f0000), SPH_C32(0x26650000), SPH_C32(0x128f0000),
+	  SPH_C32(0x27bc9280), SPH_C32(0x05da3d59), SPH_C32(0xa8f5976b),
+	  SPH_C32(0xdb063b6e), SPH_C32(0x1f3d87b5), SPH_C32(0x8d8b0000),
+	  SPH_C32(0x3c270000), SPH_C32(0xa9450000), SPH_C32(0xdd5a6440),
+	  SPH_C32(0x05185b14), SPH_C32(0x44922be0), SPH_C32(0xf5b71ce4),
+	  SPH_C32(0x25c5c959) },
+	{ SPH_C32(0xb7720000), SPH_C32(0x330d0000), SPH_C32(0xff580000),
+	  SPH_C32(0x15e190a0), SPH_C32(0xe6d60bd0), SPH_C32(0xf2bf7128),
+	  SPH_C32(0x3873c3c6), SPH_C32(0x9ec07ebd), SPH_C32(0x6ba30000),
+	  SPH_C32(0x706c0000), SPH_C32(0x01100000), SPH_C32(0x0e8a66a0),
+	  SPH_C32(0xdd796bac), SPH_C32(0xdc359b3a), SPH_C32(0xdd221a50),
+	  SPH_C32(0xf29f81ce) },
+	{ SPH_C32(0x515a0000), SPH_C32(0x7f460000), SPH_C32(0x570d0000),
+	  SPH_C32(0xc6319240), SPH_C32(0x3eb73b68), SPH_C32(0x6a18c1f2),
+	  SPH_C32(0x10e6c572), SPH_C32(0x499a362a), SPH_C32(0x9b660000),
+	  SPH_C32(0x294f0000), SPH_C32(0x44920000), SPH_C32(0xef076660),
+	  SPH_C32(0xe6146d9d), SPH_C32(0x1ed8cda3), SPH_C32(0x16c2e44c),
+	  SPH_C32(0xa4383051) },
+	{ SPH_C32(0xf3860000), SPH_C32(0x1d1d0000), SPH_C32(0x0b870000),
+	  SPH_C32(0x8bbc9480), SPH_C32(0xa5196cd9), SPH_C32(0xe144e4ec),
+	  SPH_C32(0x21c5e953), SPH_C32(0x8608bbfc), SPH_C32(0x9e480000),
+	  SPH_C32(0xd8c50000), SPH_C32(0x6bd40000), SPH_C32(0x832564e0),
+	  SPH_C32(0x10cf573f), SPH_C32(0x0bca4a28), SPH_C32(0x4d9249fe),
+	  SPH_C32(0x28b46dff) },
+	{ SPH_C32(0x15ae0000), SPH_C32(0x51560000), SPH_C32(0xa3d20000),
+	  SPH_C32(0x586c9660), SPH_C32(0x7d785c61), SPH_C32(0x79e35436),
+	  SPH_C32(0x0950efe7), SPH_C32(0x5152f36b), SPH_C32(0x6e8d0000),
+	  SPH_C32(0x81e60000), SPH_C32(0x2e560000), SPH_C32(0x62a86420),
+	  SPH_C32(0x2ba2510e), SPH_C32(0xc9271cb1), SPH_C32(0x8672b7e2),
+	  SPH_C32(0x7e13dc60) },
+	{ SPH_C32(0x03430000), SPH_C32(0x443e0000), SPH_C32(0x4e050000),
+	  SPH_C32(0x6a319440), SPH_C32(0x9e746ae8), SPH_C32(0x23a9b275),
+	  SPH_C32(0xea25174f), SPH_C32(0xd0af0a63), SPH_C32(0x88a50000),
+	  SPH_C32(0xcdad0000), SPH_C32(0x86030000), SPH_C32(0xb17866c0),
+	  SPH_C32(0xf3c361b6), SPH_C32(0x5180ac6b), SPH_C32(0xaee7b156),
+	  SPH_C32(0xa94994f7) },
+	{ SPH_C32(0xe56b0000), SPH_C32(0x08750000), SPH_C32(0xe6500000),
+	  SPH_C32(0xb9e196a0), SPH_C32(0x46155a50), SPH_C32(0xbb0e02af),
+	  SPH_C32(0xc2b011fb), SPH_C32(0x07f542f4), SPH_C32(0x78600000),
+	  SPH_C32(0x948e0000), SPH_C32(0xc3810000), SPH_C32(0x50f56600),
+	  SPH_C32(0xc8ae6787), SPH_C32(0x936dfaf2), SPH_C32(0x65074f4a),
+	  SPH_C32(0xffee2568) },
+	{ SPH_C32(0xa6430000), SPH_C32(0x756e0000), SPH_C32(0xbaf60000),
+	  SPH_C32(0xa8f2e800), SPH_C32(0xed1c7314), SPH_C32(0xbada3b36),
+	  SPH_C32(0x4494a4eb), SPH_C32(0xec83ff85), SPH_C32(0x90a40000),
+	  SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000), SPH_C32(0x0bdd4800),
+	  SPH_C32(0xb728224a), SPH_C32(0xecc64a4f), SPH_C32(0x759e1063),
+	  SPH_C32(0x4cf701d1) },
+	{ SPH_C32(0x406b0000), SPH_C32(0x39250000), SPH_C32(0x12a30000),
+	  SPH_C32(0x7b22eae0), SPH_C32(0x357d43ac), SPH_C32(0x227d8bec),
+	  SPH_C32(0x6c01a25f), SPH_C32(0x3bd9b712), SPH_C32(0x60610000),
+	  SPH_C32(0xe5780000), SPH_C32(0x28ec0000), SPH_C32(0xea5048c0),
+	  SPH_C32(0x8c45247b), SPH_C32(0x2e2b1cd6), SPH_C32(0xbe7eee7f),
+	  SPH_C32(0x1a50b04e) },
+	{ SPH_C32(0x56860000), SPH_C32(0x2c4d0000), SPH_C32(0xff740000),
+	  SPH_C32(0x497fe8c0), SPH_C32(0xd6717525), SPH_C32(0x78376daf),
+	  SPH_C32(0x8f745af7), SPH_C32(0xba244e1a), SPH_C32(0x86490000),
+	  SPH_C32(0xa9330000), SPH_C32(0x80b90000), SPH_C32(0x39804a20),
+	  SPH_C32(0x542414c3), SPH_C32(0xb68cac0c), SPH_C32(0x96ebe8cb),
+	  SPH_C32(0xcd0af8d9) },
+	{ SPH_C32(0xb0ae0000), SPH_C32(0x60060000), SPH_C32(0x57210000),
+	  SPH_C32(0x9aafea20), SPH_C32(0x0e10459d), SPH_C32(0xe090dd75),
+	  SPH_C32(0xa7e15c43), SPH_C32(0x6d7e068d), SPH_C32(0x768c0000),
+	  SPH_C32(0xf0100000), SPH_C32(0xc53b0000), SPH_C32(0xd80d4ae0),
+	  SPH_C32(0x6f4912f2), SPH_C32(0x7461fa95), SPH_C32(0x5d0b16d7),
+	  SPH_C32(0x9bad4946) },
+	{ SPH_C32(0x12720000), SPH_C32(0x025d0000), SPH_C32(0x0bab0000),
+	  SPH_C32(0xd722ece0), SPH_C32(0x95be122c), SPH_C32(0x6bccf86b),
+	  SPH_C32(0x96c27062), SPH_C32(0xa2ec8b5b), SPH_C32(0x73a20000),
+	  SPH_C32(0x019a0000), SPH_C32(0xea7d0000), SPH_C32(0xb42f4860),
+	  SPH_C32(0x99922850), SPH_C32(0x61737d1e), SPH_C32(0x065bbb65),
+	  SPH_C32(0x172114e8) },
+	{ SPH_C32(0xf45a0000), SPH_C32(0x4e160000), SPH_C32(0xa3fe0000),
+	  SPH_C32(0x04f2ee00), SPH_C32(0x4ddf2294), SPH_C32(0xf36b48b1),
+	  SPH_C32(0xbe5776d6), SPH_C32(0x75b6c3cc), SPH_C32(0x83670000),
+	  SPH_C32(0x58b90000), SPH_C32(0xafff0000), SPH_C32(0x55a248a0),
+	  SPH_C32(0xa2ff2e61), SPH_C32(0xa39e2b87), SPH_C32(0xcdbb4579),
+	  SPH_C32(0x4186a577) },
+	{ SPH_C32(0xe2b70000), SPH_C32(0x5b7e0000), SPH_C32(0x4e290000),
+	  SPH_C32(0x36afec20), SPH_C32(0xaed3141d), SPH_C32(0xa921aef2),
+	  SPH_C32(0x5d228e7e), SPH_C32(0xf44b3ac4), SPH_C32(0x654f0000),
+	  SPH_C32(0x14f20000), SPH_C32(0x07aa0000), SPH_C32(0x86724a40),
+	  SPH_C32(0x7a9e1ed9), SPH_C32(0x3b399b5d), SPH_C32(0xe52e43cd),
+	  SPH_C32(0x96dcede0) },
+	{ SPH_C32(0x049f0000), SPH_C32(0x17350000), SPH_C32(0xe67c0000),
+	  SPH_C32(0xe57feec0), SPH_C32(0x76b224a5), SPH_C32(0x31861e28),
+	  SPH_C32(0x75b788ca), SPH_C32(0x23117253), SPH_C32(0x958a0000),
+	  SPH_C32(0x4dd10000), SPH_C32(0x42280000), SPH_C32(0x67ff4a80),
+	  SPH_C32(0x41f318e8), SPH_C32(0xf9d4cdc4), SPH_C32(0x2ecebdd1),
+	  SPH_C32(0xc07b5c7f) },
+	{ SPH_C32(0x45450000), SPH_C32(0xc8af0000), SPH_C32(0x3de50000),
+	  SPH_C32(0x1700e860), SPH_C32(0xc3a6790e), SPH_C32(0x376f0c67),
+	  SPH_C32(0x37510fed), SPH_C32(0xb755eabc), SPH_C32(0xc7930000),
+	  SPH_C32(0x76a90000), SPH_C32(0x5b200000), SPH_C32(0xcbff4c80),
+	  SPH_C32(0xe1304968), SPH_C32(0xb065be43), SPH_C32(0xd40d6fec),
+	  SPH_C32(0x594e6036) },
+	{ SPH_C32(0xa36d0000), SPH_C32(0x84e40000), SPH_C32(0x95b00000),
+	  SPH_C32(0xc4d0ea80), SPH_C32(0x1bc749b6), SPH_C32(0xafc8bcbd),
+	  SPH_C32(0x1fc40959), SPH_C32(0x600fa22b), SPH_C32(0x37560000),
+	  SPH_C32(0x2f8a0000), SPH_C32(0x1ea20000), SPH_C32(0x2a724c40),
+	  SPH_C32(0xda5d4f59), SPH_C32(0x7288e8da), SPH_C32(0x1fed91f0),
+	  SPH_C32(0x0fe9d1a9) },
+	{ SPH_C32(0xb5800000), SPH_C32(0x918c0000), SPH_C32(0x78670000),
+	  SPH_C32(0xf68de8a0), SPH_C32(0xf8cb7f3f), SPH_C32(0xf5825afe),
+	  SPH_C32(0xfcb1f1f1), SPH_C32(0xe1f25b23), SPH_C32(0xd17e0000),
+	  SPH_C32(0x63c10000), SPH_C32(0xb6f70000), SPH_C32(0xf9a24ea0),
+	  SPH_C32(0x023c7fe1), SPH_C32(0xea2f5800), SPH_C32(0x37789744),
+	  SPH_C32(0xd8b3993e) },
+	{ SPH_C32(0x53a80000), SPH_C32(0xddc70000), SPH_C32(0xd0320000),
+	  SPH_C32(0x255dea40), SPH_C32(0x20aa4f87), SPH_C32(0x6d25ea24),
+	  SPH_C32(0xd424f745), SPH_C32(0x36a813b4), SPH_C32(0x21bb0000),
+	  SPH_C32(0x3ae20000), SPH_C32(0xf3750000), SPH_C32(0x182f4e60),
+	  SPH_C32(0x395179d0), SPH_C32(0x28c20e99), SPH_C32(0xfc986958),
+	  SPH_C32(0x8e1428a1) },
+	{ SPH_C32(0xf1740000), SPH_C32(0xbf9c0000), SPH_C32(0x8cb80000),
+	  SPH_C32(0x68d0ec80), SPH_C32(0xbb041836), SPH_C32(0xe679cf3a),
+	  SPH_C32(0xe507db64), SPH_C32(0xf93a9e62), SPH_C32(0x24950000),
+	  SPH_C32(0xcb680000), SPH_C32(0xdc330000), SPH_C32(0x740d4ce0),
+	  SPH_C32(0xcf8a4372), SPH_C32(0x3dd08912), SPH_C32(0xa7c8c4ea),
+	  SPH_C32(0x0298750f) },
+	{ SPH_C32(0x175c0000), SPH_C32(0xf3d70000), SPH_C32(0x24ed0000),
+	  SPH_C32(0xbb00ee60), SPH_C32(0x6365288e), SPH_C32(0x7ede7fe0),
+	  SPH_C32(0xcd92ddd0), SPH_C32(0x2e60d6f5), SPH_C32(0xd4500000),
+	  SPH_C32(0x924b0000), SPH_C32(0x99b10000), SPH_C32(0x95804c20),
+	  SPH_C32(0xf4e74543), SPH_C32(0xff3ddf8b), SPH_C32(0x6c283af6),
+	  SPH_C32(0x543fc490) },
+	{ SPH_C32(0x01b10000), SPH_C32(0xe6bf0000), SPH_C32(0xc93a0000),
+	  SPH_C32(0x895dec40), SPH_C32(0x80691e07), SPH_C32(0x249499a3),
+	  SPH_C32(0x2ee72578), SPH_C32(0xaf9d2ffd), SPH_C32(0x32780000),
+	  SPH_C32(0xde000000), SPH_C32(0x31e40000), SPH_C32(0x46504ec0),
+	  SPH_C32(0x2c8675fb), SPH_C32(0x679a6f51), SPH_C32(0x44bd3c42),
+	  SPH_C32(0x83658c07) },
+	{ SPH_C32(0xe7990000), SPH_C32(0xaaf40000), SPH_C32(0x616f0000),
+	  SPH_C32(0x5a8deea0), SPH_C32(0x58082ebf), SPH_C32(0xbc332979),
+	  SPH_C32(0x067223cc), SPH_C32(0x78c7676a), SPH_C32(0xc2bd0000),
+	  SPH_C32(0x87230000), SPH_C32(0x74660000), SPH_C32(0xa7dd4e00),
+	  SPH_C32(0x17eb73ca), SPH_C32(0xa57739c8), SPH_C32(0x8f5dc25e),
+	  SPH_C32(0xd5c23d98) },
+	{ SPH_C32(0x92560000), SPH_C32(0x1eda0000), SPH_C32(0xea510000),
+	  SPH_C32(0xe8b13000), SPH_C32(0xa93556a5), SPH_C32(0xebfb6199),
+	  SPH_C32(0xb15c2254), SPH_C32(0x33c5244f), SPH_C32(0x8c3a0000),
+	  SPH_C32(0xda980000), SPH_C32(0x607f0000), SPH_C32(0x54078800),
+	  SPH_C32(0x85714513), SPH_C32(0x6006b243), SPH_C32(0xdb50399c),
+	  SPH_C32(0x8a58e6a4) },
+	{ SPH_C32(0x747e0000), SPH_C32(0x52910000), SPH_C32(0x42040000),
+	  SPH_C32(0x3b6132e0), SPH_C32(0x7154661d), SPH_C32(0x735cd143),
+	  SPH_C32(0x99c924e0), SPH_C32(0xe49f6cd8), SPH_C32(0x7cff0000),
+	  SPH_C32(0x83bb0000), SPH_C32(0x25fd0000), SPH_C32(0xb58a88c0),
+	  SPH_C32(0xbe1c4322), SPH_C32(0xa2ebe4da), SPH_C32(0x10b0c780),
+	  SPH_C32(0xdcff573b) },
+	{ SPH_C32(0x62930000), SPH_C32(0x47f90000), SPH_C32(0xafd30000),
+	  SPH_C32(0x093c30c0), SPH_C32(0x92585094), SPH_C32(0x29163700),
+	  SPH_C32(0x7abcdc48), SPH_C32(0x656295d0), SPH_C32(0x9ad70000),
+	  SPH_C32(0xcff00000), SPH_C32(0x8da80000), SPH_C32(0x665a8a20),
+	  SPH_C32(0x667d739a), SPH_C32(0x3a4c5400), SPH_C32(0x3825c134),
+	  SPH_C32(0x0ba51fac) },
+	{ SPH_C32(0x84bb0000), SPH_C32(0x0bb20000), SPH_C32(0x07860000),
+	  SPH_C32(0xdaec3220), SPH_C32(0x4a39602c), SPH_C32(0xb1b187da),
+	  SPH_C32(0x5229dafc), SPH_C32(0xb238dd47), SPH_C32(0x6a120000),
+	  SPH_C32(0x96d30000), SPH_C32(0xc82a0000), SPH_C32(0x87d78ae0),
+	  SPH_C32(0x5d1075ab), SPH_C32(0xf8a10299), SPH_C32(0xf3c53f28),
+	  SPH_C32(0x5d02ae33) },
+	{ SPH_C32(0x26670000), SPH_C32(0x69e90000), SPH_C32(0x5b0c0000),
+	  SPH_C32(0x976134e0), SPH_C32(0xd197379d), SPH_C32(0x3aeda2c4),
+	  SPH_C32(0x630af6dd), SPH_C32(0x7daa5091), SPH_C32(0x6f3c0000),
+	  SPH_C32(0x67590000), SPH_C32(0xe76c0000), SPH_C32(0xebf58860),
+	  SPH_C32(0xabcb4f09), SPH_C32(0xedb38512), SPH_C32(0xa895929a),
+	  SPH_C32(0xd18ef39d) },
+	{ SPH_C32(0xc04f0000), SPH_C32(0x25a20000), SPH_C32(0xf3590000),
+	  SPH_C32(0x44b13600), SPH_C32(0x09f60725), SPH_C32(0xa24a121e),
+	  SPH_C32(0x4b9ff069), SPH_C32(0xaaf01806), SPH_C32(0x9ff90000),
+	  SPH_C32(0x3e7a0000), SPH_C32(0xa2ee0000), SPH_C32(0x0a7888a0),
+	  SPH_C32(0x90a64938), SPH_C32(0x2f5ed38b), SPH_C32(0x63756c86),
+	  SPH_C32(0x87294202) },
+	{ SPH_C32(0xd6a20000), SPH_C32(0x30ca0000), SPH_C32(0x1e8e0000),
+	  SPH_C32(0x76ec3420), SPH_C32(0xeafa31ac), SPH_C32(0xf800f45d),
+	  SPH_C32(0xa8ea08c1), SPH_C32(0x2b0de10e), SPH_C32(0x79d10000),
+	  SPH_C32(0x72310000), SPH_C32(0x0abb0000), SPH_C32(0xd9a88a40),
+	  SPH_C32(0x48c77980), SPH_C32(0xb7f96351), SPH_C32(0x4be06a32),
+	  SPH_C32(0x50730a95) },
+	{ SPH_C32(0x308a0000), SPH_C32(0x7c810000), SPH_C32(0xb6db0000),
+	  SPH_C32(0xa53c36c0), SPH_C32(0x329b0114), SPH_C32(0x60a74487),
+	  SPH_C32(0x807f0e75), SPH_C32(0xfc57a999), SPH_C32(0x89140000),
+	  SPH_C32(0x2b120000), SPH_C32(0x4f390000), SPH_C32(0x38258a80),
+	  SPH_C32(0x73aa7fb1), SPH_C32(0x751435c8), SPH_C32(0x8000942e),
+	  SPH_C32(0x06d4bb0a) },
+	{ SPH_C32(0x71500000), SPH_C32(0xa31b0000), SPH_C32(0x6d420000),
+	  SPH_C32(0x57433060), SPH_C32(0x878f5cbf), SPH_C32(0x664e56c8),
+	  SPH_C32(0xc2998952), SPH_C32(0x68133176), SPH_C32(0xdb0d0000),
+	  SPH_C32(0x106a0000), SPH_C32(0x56310000), SPH_C32(0x94258c80),
+	  SPH_C32(0xd3692e31), SPH_C32(0x3ca5464f), SPH_C32(0x7ac34613),
+	  SPH_C32(0x9fe18743) },
+	{ SPH_C32(0x97780000), SPH_C32(0xef500000), SPH_C32(0xc5170000),
+	  SPH_C32(0x84933280), SPH_C32(0x5fee6c07), SPH_C32(0xfee9e612),
+	  SPH_C32(0xea0c8fe6), SPH_C32(0xbf4979e1), SPH_C32(0x2bc80000),
+	  SPH_C32(0x49490000), SPH_C32(0x13b30000), SPH_C32(0x75a88c40),
+	  SPH_C32(0xe8042800), SPH_C32(0xfe4810d6), SPH_C32(0xb123b80f),
+	  SPH_C32(0xc94636dc) },
+	{ SPH_C32(0x81950000), SPH_C32(0xfa380000), SPH_C32(0x28c00000),
+	  SPH_C32(0xb6ce30a0), SPH_C32(0xbce25a8e), SPH_C32(0xa4a30051),
+	  SPH_C32(0x0979774e), SPH_C32(0x3eb480e9), SPH_C32(0xcde00000),
+	  SPH_C32(0x05020000), SPH_C32(0xbbe60000), SPH_C32(0xa6788ea0),
+	  SPH_C32(0x306518b8), SPH_C32(0x66efa00c), SPH_C32(0x99b6bebb),
+	  SPH_C32(0x1e1c7e4b) },
+	{ SPH_C32(0x67bd0000), SPH_C32(0xb6730000), SPH_C32(0x80950000),
+	  SPH_C32(0x651e3240), SPH_C32(0x64836a36), SPH_C32(0x3c04b08b),
+	  SPH_C32(0x21ec71fa), SPH_C32(0xe9eec87e), SPH_C32(0x3d250000),
+	  SPH_C32(0x5c210000), SPH_C32(0xfe640000), SPH_C32(0x47f58e60),
+	  SPH_C32(0x0b081e89), SPH_C32(0xa402f695), SPH_C32(0x525640a7),
+	  SPH_C32(0x48bbcfd4) },
+	{ SPH_C32(0xc5610000), SPH_C32(0xd4280000), SPH_C32(0xdc1f0000),
+	  SPH_C32(0x28933480), SPH_C32(0xff2d3d87), SPH_C32(0xb7589595),
+	  SPH_C32(0x10cf5ddb), SPH_C32(0x267c45a8), SPH_C32(0x380b0000),
+	  SPH_C32(0xadab0000), SPH_C32(0xd1220000), SPH_C32(0x2bd78ce0),
+	  SPH_C32(0xfdd3242b), SPH_C32(0xb110711e), SPH_C32(0x0906ed15),
+	  SPH_C32(0xc437927a) },
+	{ SPH_C32(0x23490000), SPH_C32(0x98630000), SPH_C32(0x744a0000),
+	  SPH_C32(0xfb433660), SPH_C32(0x274c0d3f), SPH_C32(0x2fff254f),
+	  SPH_C32(0x385a5b6f), SPH_C32(0xf1260d3f), SPH_C32(0xc8ce0000),
+	  SPH_C32(0xf4880000), SPH_C32(0x94a00000), SPH_C32(0xca5a8c20),
+	  SPH_C32(0xc6be221a), SPH_C32(0x73fd2787), SPH_C32(0xc2e61309),
+	  SPH_C32(0x929023e5) },
+	{ SPH_C32(0x35a40000), SPH_C32(0x8d0b0000), SPH_C32(0x999d0000),
+	  SPH_C32(0xc91e3440), SPH_C32(0xc4403bb6), SPH_C32(0x75b5c30c),
+	  SPH_C32(0xdb2fa3c7), SPH_C32(0x70dbf437), SPH_C32(0x2ee60000),
+	  SPH_C32(0xb8c30000), SPH_C32(0x3cf50000), SPH_C32(0x198a8ec0),
+	  SPH_C32(0x1edf12a2), SPH_C32(0xeb5a975d), SPH_C32(0xea7315bd),
+	  SPH_C32(0x45ca6b72) },
+	{ SPH_C32(0xd38c0000), SPH_C32(0xc1400000), SPH_C32(0x31c80000),
+	  SPH_C32(0x1ace36a0), SPH_C32(0x1c210b0e), SPH_C32(0xed1273d6),
+	  SPH_C32(0xf3baa573), SPH_C32(0xa781bca0), SPH_C32(0xde230000),
+	  SPH_C32(0xe1e00000), SPH_C32(0x79770000), SPH_C32(0xf8078e00),
+	  SPH_C32(0x25b21493), SPH_C32(0x29b7c1c4), SPH_C32(0x2193eba1),
+	  SPH_C32(0x136ddaed) },
+	{ SPH_C32(0x90a40000), SPH_C32(0xbc5b0000), SPH_C32(0x6d6e0000),
+	  SPH_C32(0x0bdd4800), SPH_C32(0xb728224a), SPH_C32(0xecc64a4f),
+	  SPH_C32(0x759e1063), SPH_C32(0x4cf701d1), SPH_C32(0x36e70000),
+	  SPH_C32(0xc9350000), SPH_C32(0xd7980000), SPH_C32(0xa32fa000),
+	  SPH_C32(0x5a34515e), SPH_C32(0x561c7179), SPH_C32(0x310ab488),
+	  SPH_C32(0xa074fe54) },
+	{ SPH_C32(0x768c0000), SPH_C32(0xf0100000), SPH_C32(0xc53b0000),
+	  SPH_C32(0xd80d4ae0), SPH_C32(0x6f4912f2), SPH_C32(0x7461fa95),
+	  SPH_C32(0x5d0b16d7), SPH_C32(0x9bad4946), SPH_C32(0xc6220000),
+	  SPH_C32(0x90160000), SPH_C32(0x921a0000), SPH_C32(0x42a2a0c0),
+	  SPH_C32(0x6159576f), SPH_C32(0x94f127e0), SPH_C32(0xfaea4a94),
+	  SPH_C32(0xf6d34fcb) },
+	{ SPH_C32(0x60610000), SPH_C32(0xe5780000), SPH_C32(0x28ec0000),
+	  SPH_C32(0xea5048c0), SPH_C32(0x8c45247b), SPH_C32(0x2e2b1cd6),
+	  SPH_C32(0xbe7eee7f), SPH_C32(0x1a50b04e), SPH_C32(0x200a0000),
+	  SPH_C32(0xdc5d0000), SPH_C32(0x3a4f0000), SPH_C32(0x9172a220),
+	  SPH_C32(0xb93867d7), SPH_C32(0x0c56973a), SPH_C32(0xd27f4c20),
+	  SPH_C32(0x2189075c) },
+	{ SPH_C32(0x86490000), SPH_C32(0xa9330000), SPH_C32(0x80b90000),
+	  SPH_C32(0x39804a20), SPH_C32(0x542414c3), SPH_C32(0xb68cac0c),
+	  SPH_C32(0x96ebe8cb), SPH_C32(0xcd0af8d9), SPH_C32(0xd0cf0000),
+	  SPH_C32(0x857e0000), SPH_C32(0x7fcd0000), SPH_C32(0x70ffa2e0),
+	  SPH_C32(0x825561e6), SPH_C32(0xcebbc1a3), SPH_C32(0x199fb23c),
+	  SPH_C32(0x772eb6c3) },
+	{ SPH_C32(0x24950000), SPH_C32(0xcb680000), SPH_C32(0xdc330000),
+	  SPH_C32(0x740d4ce0), SPH_C32(0xcf8a4372), SPH_C32(0x3dd08912),
+	  SPH_C32(0xa7c8c4ea), SPH_C32(0x0298750f), SPH_C32(0xd5e10000),
+	  SPH_C32(0x74f40000), SPH_C32(0x508b0000), SPH_C32(0x1cdda060),
+	  SPH_C32(0x748e5b44), SPH_C32(0xdba94628), SPH_C32(0x42cf1f8e),
+	  SPH_C32(0xfba2eb6d) },
+	{ SPH_C32(0xc2bd0000), SPH_C32(0x87230000), SPH_C32(0x74660000),
+	  SPH_C32(0xa7dd4e00), SPH_C32(0x17eb73ca), SPH_C32(0xa57739c8),
+	  SPH_C32(0x8f5dc25e), SPH_C32(0xd5c23d98), SPH_C32(0x25240000),
+	  SPH_C32(0x2dd70000), SPH_C32(0x15090000), SPH_C32(0xfd50a0a0),
+	  SPH_C32(0x4fe35d75), SPH_C32(0x194410b1), SPH_C32(0x892fe192),
+	  SPH_C32(0xad055af2) },
+	{ SPH_C32(0xd4500000), SPH_C32(0x924b0000), SPH_C32(0x99b10000),
+	  SPH_C32(0x95804c20), SPH_C32(0xf4e74543), SPH_C32(0xff3ddf8b),
+	  SPH_C32(0x6c283af6), SPH_C32(0x543fc490), SPH_C32(0xc30c0000),
+	  SPH_C32(0x619c0000), SPH_C32(0xbd5c0000), SPH_C32(0x2e80a240),
+	  SPH_C32(0x97826dcd), SPH_C32(0x81e3a06b), SPH_C32(0xa1bae726),
+	  SPH_C32(0x7a5f1265) },
+	{ SPH_C32(0x32780000), SPH_C32(0xde000000), SPH_C32(0x31e40000),
+	  SPH_C32(0x46504ec0), SPH_C32(0x2c8675fb), SPH_C32(0x679a6f51),
+	  SPH_C32(0x44bd3c42), SPH_C32(0x83658c07), SPH_C32(0x33c90000),
+	  SPH_C32(0x38bf0000), SPH_C32(0xf8de0000), SPH_C32(0xcf0da280),
+	  SPH_C32(0xacef6bfc), SPH_C32(0x430ef6f2), SPH_C32(0x6a5a193a),
+	  SPH_C32(0x2cf8a3fa) },
+	{ SPH_C32(0x73a20000), SPH_C32(0x019a0000), SPH_C32(0xea7d0000),
+	  SPH_C32(0xb42f4860), SPH_C32(0x99922850), SPH_C32(0x61737d1e),
+	  SPH_C32(0x065bbb65), SPH_C32(0x172114e8), SPH_C32(0x61d00000),
+	  SPH_C32(0x03c70000), SPH_C32(0xe1d60000), SPH_C32(0x630da480),
+	  SPH_C32(0x0c2c3a7c), SPH_C32(0x0abf8575), SPH_C32(0x9099cb07),
+	  SPH_C32(0xb5cd9fb3) },
+	{ SPH_C32(0x958a0000), SPH_C32(0x4dd10000), SPH_C32(0x42280000),
+	  SPH_C32(0x67ff4a80), SPH_C32(0x41f318e8), SPH_C32(0xf9d4cdc4),
+	  SPH_C32(0x2ecebdd1), SPH_C32(0xc07b5c7f), SPH_C32(0x91150000),
+	  SPH_C32(0x5ae40000), SPH_C32(0xa4540000), SPH_C32(0x8280a440),
+	  SPH_C32(0x37413c4d), SPH_C32(0xc852d3ec), SPH_C32(0x5b79351b),
+	  SPH_C32(0xe36a2e2c) },
+	{ SPH_C32(0x83670000), SPH_C32(0x58b90000), SPH_C32(0xafff0000),
+	  SPH_C32(0x55a248a0), SPH_C32(0xa2ff2e61), SPH_C32(0xa39e2b87),
+	  SPH_C32(0xcdbb4579), SPH_C32(0x4186a577), SPH_C32(0x773d0000),
+	  SPH_C32(0x16af0000), SPH_C32(0x0c010000), SPH_C32(0x5150a6a0),
+	  SPH_C32(0xef200cf5), SPH_C32(0x50f56336), SPH_C32(0x73ec33af),
+	  SPH_C32(0x343066bb) },
+	{ SPH_C32(0x654f0000), SPH_C32(0x14f20000), SPH_C32(0x07aa0000),
+	  SPH_C32(0x86724a40), SPH_C32(0x7a9e1ed9), SPH_C32(0x3b399b5d),
+	  SPH_C32(0xe52e43cd), SPH_C32(0x96dcede0), SPH_C32(0x87f80000),
+	  SPH_C32(0x4f8c0000), SPH_C32(0x49830000), SPH_C32(0xb0dda660),
+	  SPH_C32(0xd44d0ac4), SPH_C32(0x921835af), SPH_C32(0xb80ccdb3),
+	  SPH_C32(0x6297d724) },
+	{ SPH_C32(0xc7930000), SPH_C32(0x76a90000), SPH_C32(0x5b200000),
+	  SPH_C32(0xcbff4c80), SPH_C32(0xe1304968), SPH_C32(0xb065be43),
+	  SPH_C32(0xd40d6fec), SPH_C32(0x594e6036), SPH_C32(0x82d60000),
+	  SPH_C32(0xbe060000), SPH_C32(0x66c50000), SPH_C32(0xdcffa4e0),
+	  SPH_C32(0x22963066), SPH_C32(0x870ab224), SPH_C32(0xe35c6001),
+	  SPH_C32(0xee1b8a8a) },
+	{ SPH_C32(0x21bb0000), SPH_C32(0x3ae20000), SPH_C32(0xf3750000),
+	  SPH_C32(0x182f4e60), SPH_C32(0x395179d0), SPH_C32(0x28c20e99),
+	  SPH_C32(0xfc986958), SPH_C32(0x8e1428a1), SPH_C32(0x72130000),
+	  SPH_C32(0xe7250000), SPH_C32(0x23470000), SPH_C32(0x3d72a420),
+	  SPH_C32(0x19fb3657), SPH_C32(0x45e7e4bd), SPH_C32(0x28bc9e1d),
+	  SPH_C32(0xb8bc3b15) },
+	{ SPH_C32(0x37560000), SPH_C32(0x2f8a0000), SPH_C32(0x1ea20000),
+	  SPH_C32(0x2a724c40), SPH_C32(0xda5d4f59), SPH_C32(0x7288e8da),
+	  SPH_C32(0x1fed91f0), SPH_C32(0x0fe9d1a9), SPH_C32(0x943b0000),
+	  SPH_C32(0xab6e0000), SPH_C32(0x8b120000), SPH_C32(0xeea2a6c0),
+	  SPH_C32(0xc19a06ef), SPH_C32(0xdd405467), SPH_C32(0x002998a9),
+	  SPH_C32(0x6fe67382) },
+	{ SPH_C32(0xd17e0000), SPH_C32(0x63c10000), SPH_C32(0xb6f70000),
+	  SPH_C32(0xf9a24ea0), SPH_C32(0x023c7fe1), SPH_C32(0xea2f5800),
+	  SPH_C32(0x37789744), SPH_C32(0xd8b3993e), SPH_C32(0x64fe0000),
+	  SPH_C32(0xf24d0000), SPH_C32(0xce900000), SPH_C32(0x0f2fa600),
+	  SPH_C32(0xfaf700de), SPH_C32(0x1fad02fe), SPH_C32(0xcbc966b5),
+	  SPH_C32(0x3941c21d) },
+	{ SPH_C32(0x288b0000), SPH_C32(0x0d770000), SPH_C32(0x5db60000),
+	  SPH_C32(0x1f991800), SPH_C32(0x767042e8), SPH_C32(0xdde1a2a3),
+	  SPH_C32(0x5b06af40), SPH_C32(0x19e93cbf), SPH_C32(0x34150000),
+	  SPH_C32(0x6bb40000), SPH_C32(0x50a70000), SPH_C32(0x4043d800),
+	  SPH_C32(0x442925b1), SPH_C32(0x51215aaf), SPH_C32(0xf5c886bf),
+	  SPH_C32(0xdf46dbca) },
+	{ SPH_C32(0xcea30000), SPH_C32(0x413c0000), SPH_C32(0xf5e30000),
+	  SPH_C32(0xcc491ae0), SPH_C32(0xae117250), SPH_C32(0x45461279),
+	  SPH_C32(0x7393a9f4), SPH_C32(0xceb37428), SPH_C32(0xc4d00000),
+	  SPH_C32(0x32970000), SPH_C32(0x15250000), SPH_C32(0xa1ced8c0),
+	  SPH_C32(0x7f442380), SPH_C32(0x93cc0c36), SPH_C32(0x3e2878a3),
+	  SPH_C32(0x89e16a55) },
+	{ SPH_C32(0xd84e0000), SPH_C32(0x54540000), SPH_C32(0x18340000),
+	  SPH_C32(0xfe1418c0), SPH_C32(0x4d1d44d9), SPH_C32(0x1f0cf43a),
+	  SPH_C32(0x90e6515c), SPH_C32(0x4f4e8d20), SPH_C32(0x22f80000),
+	  SPH_C32(0x7edc0000), SPH_C32(0xbd700000), SPH_C32(0x721eda20),
+	  SPH_C32(0xa7251338), SPH_C32(0x0b6bbcec), SPH_C32(0x16bd7e17),
+	  SPH_C32(0x5ebb22c2) },
+	{ SPH_C32(0x3e660000), SPH_C32(0x181f0000), SPH_C32(0xb0610000),
+	  SPH_C32(0x2dc41a20), SPH_C32(0x957c7461), SPH_C32(0x87ab44e0),
+	  SPH_C32(0xb87357e8), SPH_C32(0x9814c5b7), SPH_C32(0xd23d0000),
+	  SPH_C32(0x27ff0000), SPH_C32(0xf8f20000), SPH_C32(0x9393dae0),
+	  SPH_C32(0x9c481509), SPH_C32(0xc986ea75), SPH_C32(0xdd5d800b),
+	  SPH_C32(0x081c935d) },
+	{ SPH_C32(0x9cba0000), SPH_C32(0x7a440000), SPH_C32(0xeceb0000),
+	  SPH_C32(0x60491ce0), SPH_C32(0x0ed223d0), SPH_C32(0x0cf761fe),
+	  SPH_C32(0x89507bc9), SPH_C32(0x57864861), SPH_C32(0xd7130000),
+	  SPH_C32(0xd6750000), SPH_C32(0xd7b40000), SPH_C32(0xffb1d860),
+	  SPH_C32(0x6a932fab), SPH_C32(0xdc946dfe), SPH_C32(0x860d2db9),
+	  SPH_C32(0x8490cef3) },
+	{ SPH_C32(0x7a920000), SPH_C32(0x360f0000), SPH_C32(0x44be0000),
+	  SPH_C32(0xb3991e00), SPH_C32(0xd6b31368), SPH_C32(0x9450d124),
+	  SPH_C32(0xa1c57d7d), SPH_C32(0x80dc00f6), SPH_C32(0x27d60000),
+	  SPH_C32(0x8f560000), SPH_C32(0x92360000), SPH_C32(0x1e3cd8a0),
+	  SPH_C32(0x51fe299a), SPH_C32(0x1e793b67), SPH_C32(0x4dedd3a5),
+	  SPH_C32(0xd2377f6c) },
+	{ SPH_C32(0x6c7f0000), SPH_C32(0x23670000), SPH_C32(0xa9690000),
+	  SPH_C32(0x81c41c20), SPH_C32(0x35bf25e1), SPH_C32(0xce1a3767),
+	  SPH_C32(0x42b085d5), SPH_C32(0x0121f9fe), SPH_C32(0xc1fe0000),
+	  SPH_C32(0xc31d0000), SPH_C32(0x3a630000), SPH_C32(0xcdecda40),
+	  SPH_C32(0x899f1922), SPH_C32(0x86de8bbd), SPH_C32(0x6578d511),
+	  SPH_C32(0x056d37fb) },
+	{ SPH_C32(0x8a570000), SPH_C32(0x6f2c0000), SPH_C32(0x013c0000),
+	  SPH_C32(0x52141ec0), SPH_C32(0xedde1559), SPH_C32(0x56bd87bd),
+	  SPH_C32(0x6a258361), SPH_C32(0xd67bb169), SPH_C32(0x313b0000),
+	  SPH_C32(0x9a3e0000), SPH_C32(0x7fe10000), SPH_C32(0x2c61da80),
+	  SPH_C32(0xb2f21f13), SPH_C32(0x4433dd24), SPH_C32(0xae982b0d),
+	  SPH_C32(0x53ca8664) },
+	{ SPH_C32(0xcb8d0000), SPH_C32(0xb0b60000), SPH_C32(0xdaa50000),
+	  SPH_C32(0xa06b1860), SPH_C32(0x58ca48f2), SPH_C32(0x505495f2),
+	  SPH_C32(0x28c30446), SPH_C32(0x423f2986), SPH_C32(0x63220000),
+	  SPH_C32(0xa1460000), SPH_C32(0x66e90000), SPH_C32(0x8061dc80),
+	  SPH_C32(0x12314e93), SPH_C32(0x0d82aea3), SPH_C32(0x545bf930),
+	  SPH_C32(0xcaffba2d) },
+	{ SPH_C32(0x2da50000), SPH_C32(0xfcfd0000), SPH_C32(0x72f00000),
+	  SPH_C32(0x73bb1a80), SPH_C32(0x80ab784a), SPH_C32(0xc8f32528),
+	  SPH_C32(0x005602f2), SPH_C32(0x95656111), SPH_C32(0x93e70000),
+	  SPH_C32(0xf8650000), SPH_C32(0x236b0000), SPH_C32(0x61ecdc40),
+	  SPH_C32(0x295c48a2), SPH_C32(0xcf6ff83a), SPH_C32(0x9fbb072c),
+	  SPH_C32(0x9c580bb2) },
+	{ SPH_C32(0x3b480000), SPH_C32(0xe9950000), SPH_C32(0x9f270000),
+	  SPH_C32(0x41e618a0), SPH_C32(0x63a74ec3), SPH_C32(0x92b9c36b),
+	  SPH_C32(0xe323fa5a), SPH_C32(0x14989819), SPH_C32(0x75cf0000),
+	  SPH_C32(0xb42e0000), SPH_C32(0x8b3e0000), SPH_C32(0xb23cdea0),
+	  SPH_C32(0xf13d781a), SPH_C32(0x57c848e0), SPH_C32(0xb72e0198),
+	  SPH_C32(0x4b024325) },
+	{ SPH_C32(0xdd600000), SPH_C32(0xa5de0000), SPH_C32(0x37720000),
+	  SPH_C32(0x92361a40), SPH_C32(0xbbc67e7b), SPH_C32(0x0a1e73b1),
+	  SPH_C32(0xcbb6fcee), SPH_C32(0xc3c2d08e), SPH_C32(0x850a0000),
+	  SPH_C32(0xed0d0000), SPH_C32(0xcebc0000), SPH_C32(0x53b1de60),
+	  SPH_C32(0xca507e2b), SPH_C32(0x95251e79), SPH_C32(0x7cceff84),
+	  SPH_C32(0x1da5f2ba) },
+	{ SPH_C32(0x7fbc0000), SPH_C32(0xc7850000), SPH_C32(0x6bf80000),
+	  SPH_C32(0xdfbb1c80), SPH_C32(0x206829ca), SPH_C32(0x814256af),
+	  SPH_C32(0xfa95d0cf), SPH_C32(0x0c505d58), SPH_C32(0x80240000),
+	  SPH_C32(0x1c870000), SPH_C32(0xe1fa0000), SPH_C32(0x3f93dce0),
+	  SPH_C32(0x3c8b4489), SPH_C32(0x803799f2), SPH_C32(0x279e5236),
+	  SPH_C32(0x9129af14) },
+	{ SPH_C32(0x99940000), SPH_C32(0x8bce0000), SPH_C32(0xc3ad0000),
+	  SPH_C32(0x0c6b1e60), SPH_C32(0xf8091972), SPH_C32(0x19e5e675),
+	  SPH_C32(0xd200d67b), SPH_C32(0xdb0a15cf), SPH_C32(0x70e10000),
+	  SPH_C32(0x45a40000), SPH_C32(0xa4780000), SPH_C32(0xde1edc20),
+	  SPH_C32(0x07e642b8), SPH_C32(0x42dacf6b), SPH_C32(0xec7eac2a),
+	  SPH_C32(0xc78e1e8b) },
+	{ SPH_C32(0x8f790000), SPH_C32(0x9ea60000), SPH_C32(0x2e7a0000),
+	  SPH_C32(0x3e361c40), SPH_C32(0x1b052ffb), SPH_C32(0x43af0036),
+	  SPH_C32(0x31752ed3), SPH_C32(0x5af7ecc7), SPH_C32(0x96c90000),
+	  SPH_C32(0x09ef0000), SPH_C32(0x0c2d0000), SPH_C32(0x0dcedec0),
+	  SPH_C32(0xdf877200), SPH_C32(0xda7d7fb1), SPH_C32(0xc4ebaa9e),
+	  SPH_C32(0x10d4561c) },
+	{ SPH_C32(0x69510000), SPH_C32(0xd2ed0000), SPH_C32(0x862f0000),
+	  SPH_C32(0xede61ea0), SPH_C32(0xc3641f43), SPH_C32(0xdb08b0ec),
+	  SPH_C32(0x19e02867), SPH_C32(0x8dada450), SPH_C32(0x660c0000),
+	  SPH_C32(0x50cc0000), SPH_C32(0x49af0000), SPH_C32(0xec43de00),
+	  SPH_C32(0xe4ea7431), SPH_C32(0x18902928), SPH_C32(0x0f0b5482),
+	  SPH_C32(0x4673e783) },
+	{ SPH_C32(0x2a790000), SPH_C32(0xaff60000), SPH_C32(0xda890000),
+	  SPH_C32(0xfcf56000), SPH_C32(0x686d3607), SPH_C32(0xdadc8975),
+	  SPH_C32(0x9fc49d77), SPH_C32(0x66db1921), SPH_C32(0x8ec80000),
+	  SPH_C32(0x78190000), SPH_C32(0xe7400000), SPH_C32(0xb76bf000),
+	  SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995), SPH_C32(0x1f920bab),
+	  SPH_C32(0xf56ac33a) },
+	{ SPH_C32(0xcc510000), SPH_C32(0xe3bd0000), SPH_C32(0x72dc0000),
+	  SPH_C32(0x2f2562e0), SPH_C32(0xb00c06bf), SPH_C32(0x427b39af),
+	  SPH_C32(0xb7519bc3), SPH_C32(0xb18151b6), SPH_C32(0x7e0d0000),
+	  SPH_C32(0x213a0000), SPH_C32(0xa2c20000), SPH_C32(0x56e6f0c0),
+	  SPH_C32(0xa00137cd), SPH_C32(0xa5d6cf0c), SPH_C32(0xd472f5b7),
+	  SPH_C32(0xa3cd72a5) },
+	{ SPH_C32(0xdabc0000), SPH_C32(0xf6d50000), SPH_C32(0x9f0b0000),
+	  SPH_C32(0x1d7860c0), SPH_C32(0x53003036), SPH_C32(0x1831dfec),
+	  SPH_C32(0x5424636b), SPH_C32(0x307ca8be), SPH_C32(0x98250000),
+	  SPH_C32(0x6d710000), SPH_C32(0x0a970000), SPH_C32(0x8536f220),
+	  SPH_C32(0x78600775), SPH_C32(0x3d717fd6), SPH_C32(0xfce7f303),
+	  SPH_C32(0x74973a32) },
+	{ SPH_C32(0x3c940000), SPH_C32(0xba9e0000), SPH_C32(0x375e0000),
+	  SPH_C32(0xcea86220), SPH_C32(0x8b61008e), SPH_C32(0x80966f36),
+	  SPH_C32(0x7cb165df), SPH_C32(0xe726e029), SPH_C32(0x68e00000),
+	  SPH_C32(0x34520000), SPH_C32(0x4f150000), SPH_C32(0x64bbf2e0),
+	  SPH_C32(0x430d0144), SPH_C32(0xff9c294f), SPH_C32(0x37070d1f),
+	  SPH_C32(0x22308bad) },
+	{ SPH_C32(0x9e480000), SPH_C32(0xd8c50000), SPH_C32(0x6bd40000),
+	  SPH_C32(0x832564e0), SPH_C32(0x10cf573f), SPH_C32(0x0bca4a28),
+	  SPH_C32(0x4d9249fe), SPH_C32(0x28b46dff), SPH_C32(0x6dce0000),
+	  SPH_C32(0xc5d80000), SPH_C32(0x60530000), SPH_C32(0x0899f060),
+	  SPH_C32(0xb5d63be6), SPH_C32(0xea8eaec4), SPH_C32(0x6c57a0ad),
+	  SPH_C32(0xaebcd603) },
+	{ SPH_C32(0x78600000), SPH_C32(0x948e0000), SPH_C32(0xc3810000),
+	  SPH_C32(0x50f56600), SPH_C32(0xc8ae6787), SPH_C32(0x936dfaf2),
+	  SPH_C32(0x65074f4a), SPH_C32(0xffee2568), SPH_C32(0x9d0b0000),
+	  SPH_C32(0x9cfb0000), SPH_C32(0x25d10000), SPH_C32(0xe914f0a0),
+	  SPH_C32(0x8ebb3dd7), SPH_C32(0x2863f85d), SPH_C32(0xa7b75eb1),
+	  SPH_C32(0xf81b679c) },
+	{ SPH_C32(0x6e8d0000), SPH_C32(0x81e60000), SPH_C32(0x2e560000),
+	  SPH_C32(0x62a86420), SPH_C32(0x2ba2510e), SPH_C32(0xc9271cb1),
+	  SPH_C32(0x8672b7e2), SPH_C32(0x7e13dc60), SPH_C32(0x7b230000),
+	  SPH_C32(0xd0b00000), SPH_C32(0x8d840000), SPH_C32(0x3ac4f240),
+	  SPH_C32(0x56da0d6f), SPH_C32(0xb0c44887), SPH_C32(0x8f225805),
+	  SPH_C32(0x2f412f0b) },
+	{ SPH_C32(0x88a50000), SPH_C32(0xcdad0000), SPH_C32(0x86030000),
+	  SPH_C32(0xb17866c0), SPH_C32(0xf3c361b6), SPH_C32(0x5180ac6b),
+	  SPH_C32(0xaee7b156), SPH_C32(0xa94994f7), SPH_C32(0x8be60000),
+	  SPH_C32(0x89930000), SPH_C32(0xc8060000), SPH_C32(0xdb49f280),
+	  SPH_C32(0x6db70b5e), SPH_C32(0x72291e1e), SPH_C32(0x44c2a619),
+	  SPH_C32(0x79e69e94) },
+	{ SPH_C32(0xc97f0000), SPH_C32(0x12370000), SPH_C32(0x5d9a0000),
+	  SPH_C32(0x43076060), SPH_C32(0x46d73c1d), SPH_C32(0x5769be24),
+	  SPH_C32(0xec013671), SPH_C32(0x3d0d0c18), SPH_C32(0xd9ff0000),
+	  SPH_C32(0xb2eb0000), SPH_C32(0xd10e0000), SPH_C32(0x7749f480),
+	  SPH_C32(0xcd745ade), SPH_C32(0x3b986d99), SPH_C32(0xbe017424),
+	  SPH_C32(0xe0d3a2dd) },
+	{ SPH_C32(0x2f570000), SPH_C32(0x5e7c0000), SPH_C32(0xf5cf0000),
+	  SPH_C32(0x90d76280), SPH_C32(0x9eb60ca5), SPH_C32(0xcfce0efe),
+	  SPH_C32(0xc49430c5), SPH_C32(0xea57448f), SPH_C32(0x293a0000),
+	  SPH_C32(0xebc80000), SPH_C32(0x948c0000), SPH_C32(0x96c4f440),
+	  SPH_C32(0xf6195cef), SPH_C32(0xf9753b00), SPH_C32(0x75e18a38),
+	  SPH_C32(0xb6741342) },
+	{ SPH_C32(0x39ba0000), SPH_C32(0x4b140000), SPH_C32(0x18180000),
+	  SPH_C32(0xa28a60a0), SPH_C32(0x7dba3a2c), SPH_C32(0x9584e8bd),
+	  SPH_C32(0x27e1c86d), SPH_C32(0x6baabd87), SPH_C32(0xcf120000),
+	  SPH_C32(0xa7830000), SPH_C32(0x3cd90000), SPH_C32(0x4514f6a0),
+	  SPH_C32(0x2e786c57), SPH_C32(0x61d28bda), SPH_C32(0x5d748c8c),
+	  SPH_C32(0x612e5bd5) },
+	{ SPH_C32(0xdf920000), SPH_C32(0x075f0000), SPH_C32(0xb04d0000),
+	  SPH_C32(0x715a6240), SPH_C32(0xa5db0a94), SPH_C32(0x0d235867),
+	  SPH_C32(0x0f74ced9), SPH_C32(0xbcf0f510), SPH_C32(0x3fd70000),
+	  SPH_C32(0xfea00000), SPH_C32(0x795b0000), SPH_C32(0xa499f660),
+	  SPH_C32(0x15156a66), SPH_C32(0xa33fdd43), SPH_C32(0x96947290),
+	  SPH_C32(0x3789ea4a) },
+	{ SPH_C32(0x7d4e0000), SPH_C32(0x65040000), SPH_C32(0xecc70000),
+	  SPH_C32(0x3cd76480), SPH_C32(0x3e755d25), SPH_C32(0x867f7d79),
+	  SPH_C32(0x3e57e2f8), SPH_C32(0x736278c6), SPH_C32(0x3af90000),
+	  SPH_C32(0x0f2a0000), SPH_C32(0x561d0000), SPH_C32(0xc8bbf4e0),
+	  SPH_C32(0xe3ce50c4), SPH_C32(0xb62d5ac8), SPH_C32(0xcdc4df22),
+	  SPH_C32(0xbb05b7e4) },
+	{ SPH_C32(0x9b660000), SPH_C32(0x294f0000), SPH_C32(0x44920000),
+	  SPH_C32(0xef076660), SPH_C32(0xe6146d9d), SPH_C32(0x1ed8cda3),
+	  SPH_C32(0x16c2e44c), SPH_C32(0xa4383051), SPH_C32(0xca3c0000),
+	  SPH_C32(0x56090000), SPH_C32(0x139f0000), SPH_C32(0x2936f420),
+	  SPH_C32(0xd8a356f5), SPH_C32(0x74c00c51), SPH_C32(0x0624213e),
+	  SPH_C32(0xeda2067b) },
+	{ SPH_C32(0x8d8b0000), SPH_C32(0x3c270000), SPH_C32(0xa9450000),
+	  SPH_C32(0xdd5a6440), SPH_C32(0x05185b14), SPH_C32(0x44922be0),
+	  SPH_C32(0xf5b71ce4), SPH_C32(0x25c5c959), SPH_C32(0x2c140000),
+	  SPH_C32(0x1a420000), SPH_C32(0xbbca0000), SPH_C32(0xfae6f6c0),
+	  SPH_C32(0x00c2664d), SPH_C32(0xec67bc8b), SPH_C32(0x2eb1278a),
+	  SPH_C32(0x3af84eec) },
+	{ SPH_C32(0x6ba30000), SPH_C32(0x706c0000), SPH_C32(0x01100000),
+	  SPH_C32(0x0e8a66a0), SPH_C32(0xdd796bac), SPH_C32(0xdc359b3a),
+	  SPH_C32(0xdd221a50), SPH_C32(0xf29f81ce), SPH_C32(0xdcd10000),
+	  SPH_C32(0x43610000), SPH_C32(0xfe480000), SPH_C32(0x1b6bf600),
+	  SPH_C32(0x3baf607c), SPH_C32(0x2e8aea12), SPH_C32(0xe551d996),
+	  SPH_C32(0x6c5fff73) },
+	{ SPH_C32(0x8c3a0000), SPH_C32(0xda980000), SPH_C32(0x607f0000),
+	  SPH_C32(0x54078800), SPH_C32(0x85714513), SPH_C32(0x6006b243),
+	  SPH_C32(0xdb50399c), SPH_C32(0x8a58e6a4), SPH_C32(0x1e6c0000),
+	  SPH_C32(0xc4420000), SPH_C32(0x8a2e0000), SPH_C32(0xbcb6b800),
+	  SPH_C32(0x2c4413b6), SPH_C32(0x8bfdd3da), SPH_C32(0x6a0c1bc8),
+	  SPH_C32(0xb99dc2eb) },
+	{ SPH_C32(0x6a120000), SPH_C32(0x96d30000), SPH_C32(0xc82a0000),
+	  SPH_C32(0x87d78ae0), SPH_C32(0x5d1075ab), SPH_C32(0xf8a10299),
+	  SPH_C32(0xf3c53f28), SPH_C32(0x5d02ae33), SPH_C32(0xeea90000),
+	  SPH_C32(0x9d610000), SPH_C32(0xcfac0000), SPH_C32(0x5d3bb8c0),
+	  SPH_C32(0x17291587), SPH_C32(0x49108543), SPH_C32(0xa1ece5d4),
+	  SPH_C32(0xef3a7374) },
+	{ SPH_C32(0x7cff0000), SPH_C32(0x83bb0000), SPH_C32(0x25fd0000),
+	  SPH_C32(0xb58a88c0), SPH_C32(0xbe1c4322), SPH_C32(0xa2ebe4da),
+	  SPH_C32(0x10b0c780), SPH_C32(0xdcff573b), SPH_C32(0x08810000),
+	  SPH_C32(0xd12a0000), SPH_C32(0x67f90000), SPH_C32(0x8eebba20),
+	  SPH_C32(0xcf48253f), SPH_C32(0xd1b73599), SPH_C32(0x8979e360),
+	  SPH_C32(0x38603be3) },
+	{ SPH_C32(0x9ad70000), SPH_C32(0xcff00000), SPH_C32(0x8da80000),
+	  SPH_C32(0x665a8a20), SPH_C32(0x667d739a), SPH_C32(0x3a4c5400),
+	  SPH_C32(0x3825c134), SPH_C32(0x0ba51fac), SPH_C32(0xf8440000),
+	  SPH_C32(0x88090000), SPH_C32(0x227b0000), SPH_C32(0x6f66bae0),
+	  SPH_C32(0xf425230e), SPH_C32(0x135a6300), SPH_C32(0x42991d7c),
+	  SPH_C32(0x6ec78a7c) },
+	{ SPH_C32(0x380b0000), SPH_C32(0xadab0000), SPH_C32(0xd1220000),
+	  SPH_C32(0x2bd78ce0), SPH_C32(0xfdd3242b), SPH_C32(0xb110711e),
+	  SPH_C32(0x0906ed15), SPH_C32(0xc437927a), SPH_C32(0xfd6a0000),
+	  SPH_C32(0x79830000), SPH_C32(0x0d3d0000), SPH_C32(0x0344b860),
+	  SPH_C32(0x02fe19ac), SPH_C32(0x0648e48b), SPH_C32(0x19c9b0ce),
+	  SPH_C32(0xe24bd7d2) },
+	{ SPH_C32(0xde230000), SPH_C32(0xe1e00000), SPH_C32(0x79770000),
+	  SPH_C32(0xf8078e00), SPH_C32(0x25b21493), SPH_C32(0x29b7c1c4),
+	  SPH_C32(0x2193eba1), SPH_C32(0x136ddaed), SPH_C32(0x0daf0000),
+	  SPH_C32(0x20a00000), SPH_C32(0x48bf0000), SPH_C32(0xe2c9b8a0),
+	  SPH_C32(0x39931f9d), SPH_C32(0xc4a5b212), SPH_C32(0xd2294ed2),
+	  SPH_C32(0xb4ec664d) },
+	{ SPH_C32(0xc8ce0000), SPH_C32(0xf4880000), SPH_C32(0x94a00000),
+	  SPH_C32(0xca5a8c20), SPH_C32(0xc6be221a), SPH_C32(0x73fd2787),
+	  SPH_C32(0xc2e61309), SPH_C32(0x929023e5), SPH_C32(0xeb870000),
+	  SPH_C32(0x6ceb0000), SPH_C32(0xe0ea0000), SPH_C32(0x3119ba40),
+	  SPH_C32(0xe1f22f25), SPH_C32(0x5c0202c8), SPH_C32(0xfabc4866),
+	  SPH_C32(0x63b62eda) },
+	{ SPH_C32(0x2ee60000), SPH_C32(0xb8c30000), SPH_C32(0x3cf50000),
+	  SPH_C32(0x198a8ec0), SPH_C32(0x1edf12a2), SPH_C32(0xeb5a975d),
+	  SPH_C32(0xea7315bd), SPH_C32(0x45ca6b72), SPH_C32(0x1b420000),
+	  SPH_C32(0x35c80000), SPH_C32(0xa5680000), SPH_C32(0xd094ba80),
+	  SPH_C32(0xda9f2914), SPH_C32(0x9eef5451), SPH_C32(0x315cb67a),
+	  SPH_C32(0x35119f45) },
+	{ SPH_C32(0x6f3c0000), SPH_C32(0x67590000), SPH_C32(0xe76c0000),
+	  SPH_C32(0xebf58860), SPH_C32(0xabcb4f09), SPH_C32(0xedb38512),
+	  SPH_C32(0xa895929a), SPH_C32(0xd18ef39d), SPH_C32(0x495b0000),
+	  SPH_C32(0x0eb00000), SPH_C32(0xbc600000), SPH_C32(0x7c94bc80),
+	  SPH_C32(0x7a5c7894), SPH_C32(0xd75e27d6), SPH_C32(0xcb9f6447),
+	  SPH_C32(0xac24a30c) },
+	{ SPH_C32(0x89140000), SPH_C32(0x2b120000), SPH_C32(0x4f390000),
+	  SPH_C32(0x38258a80), SPH_C32(0x73aa7fb1), SPH_C32(0x751435c8),
+	  SPH_C32(0x8000942e), SPH_C32(0x06d4bb0a), SPH_C32(0xb99e0000),
+	  SPH_C32(0x57930000), SPH_C32(0xf9e20000), SPH_C32(0x9d19bc40),
+	  SPH_C32(0x41317ea5), SPH_C32(0x15b3714f), SPH_C32(0x007f9a5b),
+	  SPH_C32(0xfa831293) },
+	{ SPH_C32(0x9ff90000), SPH_C32(0x3e7a0000), SPH_C32(0xa2ee0000),
+	  SPH_C32(0x0a7888a0), SPH_C32(0x90a64938), SPH_C32(0x2f5ed38b),
+	  SPH_C32(0x63756c86), SPH_C32(0x87294202), SPH_C32(0x5fb60000),
+	  SPH_C32(0x1bd80000), SPH_C32(0x51b70000), SPH_C32(0x4ec9bea0),
+	  SPH_C32(0x99504e1d), SPH_C32(0x8d14c195), SPH_C32(0x28ea9cef),
+	  SPH_C32(0x2dd95a04) },
+	{ SPH_C32(0x79d10000), SPH_C32(0x72310000), SPH_C32(0x0abb0000),
+	  SPH_C32(0xd9a88a40), SPH_C32(0x48c77980), SPH_C32(0xb7f96351),
+	  SPH_C32(0x4be06a32), SPH_C32(0x50730a95), SPH_C32(0xaf730000),
+	  SPH_C32(0x42fb0000), SPH_C32(0x14350000), SPH_C32(0xaf44be60),
+	  SPH_C32(0xa23d482c), SPH_C32(0x4ff9970c), SPH_C32(0xe30a62f3),
+	  SPH_C32(0x7b7eeb9b) },
+	{ SPH_C32(0xdb0d0000), SPH_C32(0x106a0000), SPH_C32(0x56310000),
+	  SPH_C32(0x94258c80), SPH_C32(0xd3692e31), SPH_C32(0x3ca5464f),
+	  SPH_C32(0x7ac34613), SPH_C32(0x9fe18743), SPH_C32(0xaa5d0000),
+	  SPH_C32(0xb3710000), SPH_C32(0x3b730000), SPH_C32(0xc366bce0),
+	  SPH_C32(0x54e6728e), SPH_C32(0x5aeb1087), SPH_C32(0xb85acf41),
+	  SPH_C32(0xf7f2b635) },
+	{ SPH_C32(0x3d250000), SPH_C32(0x5c210000), SPH_C32(0xfe640000),
+	  SPH_C32(0x47f58e60), SPH_C32(0x0b081e89), SPH_C32(0xa402f695),
+	  SPH_C32(0x525640a7), SPH_C32(0x48bbcfd4), SPH_C32(0x5a980000),
+	  SPH_C32(0xea520000), SPH_C32(0x7ef10000), SPH_C32(0x22ebbc20),
+	  SPH_C32(0x6f8b74bf), SPH_C32(0x9806461e), SPH_C32(0x73ba315d),
+	  SPH_C32(0xa15507aa) },
+	{ SPH_C32(0x2bc80000), SPH_C32(0x49490000), SPH_C32(0x13b30000),
+	  SPH_C32(0x75a88c40), SPH_C32(0xe8042800), SPH_C32(0xfe4810d6),
+	  SPH_C32(0xb123b80f), SPH_C32(0xc94636dc), SPH_C32(0xbcb00000),
+	  SPH_C32(0xa6190000), SPH_C32(0xd6a40000), SPH_C32(0xf13bbec0),
+	  SPH_C32(0xb7ea4407), SPH_C32(0x00a1f6c4), SPH_C32(0x5b2f37e9),
+	  SPH_C32(0x760f4f3d) },
+	{ SPH_C32(0xcde00000), SPH_C32(0x05020000), SPH_C32(0xbbe60000),
+	  SPH_C32(0xa6788ea0), SPH_C32(0x306518b8), SPH_C32(0x66efa00c),
+	  SPH_C32(0x99b6bebb), SPH_C32(0x1e1c7e4b), SPH_C32(0x4c750000),
+	  SPH_C32(0xff3a0000), SPH_C32(0x93260000), SPH_C32(0x10b6be00),
+	  SPH_C32(0x8c874236), SPH_C32(0xc24ca05d), SPH_C32(0x90cfc9f5),
+	  SPH_C32(0x20a8fea2) },
+	{ SPH_C32(0x8ec80000), SPH_C32(0x78190000), SPH_C32(0xe7400000),
+	  SPH_C32(0xb76bf000), SPH_C32(0x9b6c31fc), SPH_C32(0x673b9995),
+	  SPH_C32(0x1f920bab), SPH_C32(0xf56ac33a), SPH_C32(0xa4b10000),
+	  SPH_C32(0xd7ef0000), SPH_C32(0x3dc90000), SPH_C32(0x4b9e9000),
+	  SPH_C32(0xf30107fb), SPH_C32(0xbde710e0), SPH_C32(0x805696dc),
+	  SPH_C32(0x93b1da1b) },
+	{ SPH_C32(0x68e00000), SPH_C32(0x34520000), SPH_C32(0x4f150000),
+	  SPH_C32(0x64bbf2e0), SPH_C32(0x430d0144), SPH_C32(0xff9c294f),
+	  SPH_C32(0x37070d1f), SPH_C32(0x22308bad), SPH_C32(0x54740000),
+	  SPH_C32(0x8ecc0000), SPH_C32(0x784b0000), SPH_C32(0xaa1390c0),
+	  SPH_C32(0xc86c01ca), SPH_C32(0x7f0a4679), SPH_C32(0x4bb668c0),
+	  SPH_C32(0xc5166b84) },
+	{ SPH_C32(0x7e0d0000), SPH_C32(0x213a0000), SPH_C32(0xa2c20000),
+	  SPH_C32(0x56e6f0c0), SPH_C32(0xa00137cd), SPH_C32(0xa5d6cf0c),
+	  SPH_C32(0xd472f5b7), SPH_C32(0xa3cd72a5), SPH_C32(0xb25c0000),
+	  SPH_C32(0xc2870000), SPH_C32(0xd01e0000), SPH_C32(0x79c39220),
+	  SPH_C32(0x100d3172), SPH_C32(0xe7adf6a3), SPH_C32(0x63236e74),
+	  SPH_C32(0x124c2313) },
+	{ SPH_C32(0x98250000), SPH_C32(0x6d710000), SPH_C32(0x0a970000),
+	  SPH_C32(0x8536f220), SPH_C32(0x78600775), SPH_C32(0x3d717fd6),
+	  SPH_C32(0xfce7f303), SPH_C32(0x74973a32), SPH_C32(0x42990000),
+	  SPH_C32(0x9ba40000), SPH_C32(0x959c0000), SPH_C32(0x984e92e0),
+	  SPH_C32(0x2b603743), SPH_C32(0x2540a03a), SPH_C32(0xa8c39068),
+	  SPH_C32(0x44eb928c) },
+	{ SPH_C32(0x3af90000), SPH_C32(0x0f2a0000), SPH_C32(0x561d0000),
+	  SPH_C32(0xc8bbf4e0), SPH_C32(0xe3ce50c4), SPH_C32(0xb62d5ac8),
+	  SPH_C32(0xcdc4df22), SPH_C32(0xbb05b7e4), SPH_C32(0x47b70000),
+	  SPH_C32(0x6a2e0000), SPH_C32(0xbada0000), SPH_C32(0xf46c9060),
+	  SPH_C32(0xddbb0de1), SPH_C32(0x305227b1), SPH_C32(0xf3933dda),
+	  SPH_C32(0xc867cf22) },
+	{ SPH_C32(0xdcd10000), SPH_C32(0x43610000), SPH_C32(0xfe480000),
+	  SPH_C32(0x1b6bf600), SPH_C32(0x3baf607c), SPH_C32(0x2e8aea12),
+	  SPH_C32(0xe551d996), SPH_C32(0x6c5fff73), SPH_C32(0xb7720000),
+	  SPH_C32(0x330d0000), SPH_C32(0xff580000), SPH_C32(0x15e190a0),
+	  SPH_C32(0xe6d60bd0), SPH_C32(0xf2bf7128), SPH_C32(0x3873c3c6),
+	  SPH_C32(0x9ec07ebd) },
+	{ SPH_C32(0xca3c0000), SPH_C32(0x56090000), SPH_C32(0x139f0000),
+	  SPH_C32(0x2936f420), SPH_C32(0xd8a356f5), SPH_C32(0x74c00c51),
+	  SPH_C32(0x0624213e), SPH_C32(0xeda2067b), SPH_C32(0x515a0000),
+	  SPH_C32(0x7f460000), SPH_C32(0x570d0000), SPH_C32(0xc6319240),
+	  SPH_C32(0x3eb73b68), SPH_C32(0x6a18c1f2), SPH_C32(0x10e6c572),
+	  SPH_C32(0x499a362a) },
+	{ SPH_C32(0x2c140000), SPH_C32(0x1a420000), SPH_C32(0xbbca0000),
+	  SPH_C32(0xfae6f6c0), SPH_C32(0x00c2664d), SPH_C32(0xec67bc8b),
+	  SPH_C32(0x2eb1278a), SPH_C32(0x3af84eec), SPH_C32(0xa19f0000),
+	  SPH_C32(0x26650000), SPH_C32(0x128f0000), SPH_C32(0x27bc9280),
+	  SPH_C32(0x05da3d59), SPH_C32(0xa8f5976b), SPH_C32(0xdb063b6e),
+	  SPH_C32(0x1f3d87b5) },
+	{ SPH_C32(0x6dce0000), SPH_C32(0xc5d80000), SPH_C32(0x60530000),
+	  SPH_C32(0x0899f060), SPH_C32(0xb5d63be6), SPH_C32(0xea8eaec4),
+	  SPH_C32(0x6c57a0ad), SPH_C32(0xaebcd603), SPH_C32(0xf3860000),
+	  SPH_C32(0x1d1d0000), SPH_C32(0x0b870000), SPH_C32(0x8bbc9480),
+	  SPH_C32(0xa5196cd9), SPH_C32(0xe144e4ec), SPH_C32(0x21c5e953),
+	  SPH_C32(0x8608bbfc) },
+	{ SPH_C32(0x8be60000), SPH_C32(0x89930000), SPH_C32(0xc8060000),
+	  SPH_C32(0xdb49f280), SPH_C32(0x6db70b5e), SPH_C32(0x72291e1e),
+	  SPH_C32(0x44c2a619), SPH_C32(0x79e69e94), SPH_C32(0x03430000),
+	  SPH_C32(0x443e0000), SPH_C32(0x4e050000), SPH_C32(0x6a319440),
+	  SPH_C32(0x9e746ae8), SPH_C32(0x23a9b275), SPH_C32(0xea25174f),
+	  SPH_C32(0xd0af0a63) },
+	{ SPH_C32(0x9d0b0000), SPH_C32(0x9cfb0000), SPH_C32(0x25d10000),
+	  SPH_C32(0xe914f0a0), SPH_C32(0x8ebb3dd7), SPH_C32(0x2863f85d),
+	  SPH_C32(0xa7b75eb1), SPH_C32(0xf81b679c), SPH_C32(0xe56b0000),
+	  SPH_C32(0x08750000), SPH_C32(0xe6500000), SPH_C32(0xb9e196a0),
+	  SPH_C32(0x46155a50), SPH_C32(0xbb0e02af), SPH_C32(0xc2b011fb),
+	  SPH_C32(0x07f542f4) },
+	{ SPH_C32(0x7b230000), SPH_C32(0xd0b00000), SPH_C32(0x8d840000),
+	  SPH_C32(0x3ac4f240), SPH_C32(0x56da0d6f), SPH_C32(0xb0c44887),
+	  SPH_C32(0x8f225805), SPH_C32(0x2f412f0b), SPH_C32(0x15ae0000),
+	  SPH_C32(0x51560000), SPH_C32(0xa3d20000), SPH_C32(0x586c9660),
+	  SPH_C32(0x7d785c61), SPH_C32(0x79e35436), SPH_C32(0x0950efe7),
+	  SPH_C32(0x5152f36b) },
+	{ SPH_C32(0xd9ff0000), SPH_C32(0xb2eb0000), SPH_C32(0xd10e0000),
+	  SPH_C32(0x7749f480), SPH_C32(0xcd745ade), SPH_C32(0x3b986d99),
+	  SPH_C32(0xbe017424), SPH_C32(0xe0d3a2dd), SPH_C32(0x10800000),
+	  SPH_C32(0xa0dc0000), SPH_C32(0x8c940000), SPH_C32(0x344e94e0),
+	  SPH_C32(0x8ba366c3), SPH_C32(0x6cf1d3bd), SPH_C32(0x52004255),
+	  SPH_C32(0xdddeaec5) },
+	{ SPH_C32(0x3fd70000), SPH_C32(0xfea00000), SPH_C32(0x795b0000),
+	  SPH_C32(0xa499f660), SPH_C32(0x15156a66), SPH_C32(0xa33fdd43),
+	  SPH_C32(0x96947290), SPH_C32(0x3789ea4a), SPH_C32(0xe0450000),
+	  SPH_C32(0xf9ff0000), SPH_C32(0xc9160000), SPH_C32(0xd5c39420),
+	  SPH_C32(0xb0ce60f2), SPH_C32(0xae1c8524), SPH_C32(0x99e0bc49),
+	  SPH_C32(0x8b791f5a) },
+	{ SPH_C32(0x293a0000), SPH_C32(0xebc80000), SPH_C32(0x948c0000),
+	  SPH_C32(0x96c4f440), SPH_C32(0xf6195cef), SPH_C32(0xf9753b00),
+	  SPH_C32(0x75e18a38), SPH_C32(0xb6741342), SPH_C32(0x066d0000),
+	  SPH_C32(0xb5b40000), SPH_C32(0x61430000), SPH_C32(0x061396c0),
+	  SPH_C32(0x68af504a), SPH_C32(0x36bb35fe), SPH_C32(0xb175bafd),
+	  SPH_C32(0x5c2357cd) },
+	{ SPH_C32(0xcf120000), SPH_C32(0xa7830000), SPH_C32(0x3cd90000),
+	  SPH_C32(0x4514f6a0), SPH_C32(0x2e786c57), SPH_C32(0x61d28bda),
+	  SPH_C32(0x5d748c8c), SPH_C32(0x612e5bd5), SPH_C32(0xf6a80000),
+	  SPH_C32(0xec970000), SPH_C32(0x24c10000), SPH_C32(0xe79e9600),
+	  SPH_C32(0x53c2567b), SPH_C32(0xf4566367), SPH_C32(0x7a9544e1),
+	  SPH_C32(0x0a84e652) },
+	{ SPH_C32(0x36e70000), SPH_C32(0xc9350000), SPH_C32(0xd7980000),
+	  SPH_C32(0xa32fa000), SPH_C32(0x5a34515e), SPH_C32(0x561c7179),
+	  SPH_C32(0x310ab488), SPH_C32(0xa074fe54), SPH_C32(0xa6430000),
+	  SPH_C32(0x756e0000), SPH_C32(0xbaf60000), SPH_C32(0xa8f2e800),
+	  SPH_C32(0xed1c7314), SPH_C32(0xbada3b36), SPH_C32(0x4494a4eb),
+	  SPH_C32(0xec83ff85) },
+	{ SPH_C32(0xd0cf0000), SPH_C32(0x857e0000), SPH_C32(0x7fcd0000),
+	  SPH_C32(0x70ffa2e0), SPH_C32(0x825561e6), SPH_C32(0xcebbc1a3),
+	  SPH_C32(0x199fb23c), SPH_C32(0x772eb6c3), SPH_C32(0x56860000),
+	  SPH_C32(0x2c4d0000), SPH_C32(0xff740000), SPH_C32(0x497fe8c0),
+	  SPH_C32(0xd6717525), SPH_C32(0x78376daf), SPH_C32(0x8f745af7),
+	  SPH_C32(0xba244e1a) },
+	{ SPH_C32(0xc6220000), SPH_C32(0x90160000), SPH_C32(0x921a0000),
+	  SPH_C32(0x42a2a0c0), SPH_C32(0x6159576f), SPH_C32(0x94f127e0),
+	  SPH_C32(0xfaea4a94), SPH_C32(0xf6d34fcb), SPH_C32(0xb0ae0000),
+	  SPH_C32(0x60060000), SPH_C32(0x57210000), SPH_C32(0x9aafea20),
+	  SPH_C32(0x0e10459d), SPH_C32(0xe090dd75), SPH_C32(0xa7e15c43),
+	  SPH_C32(0x6d7e068d) },
+	{ SPH_C32(0x200a0000), SPH_C32(0xdc5d0000), SPH_C32(0x3a4f0000),
+	  SPH_C32(0x9172a220), SPH_C32(0xb93867d7), SPH_C32(0x0c56973a),
+	  SPH_C32(0xd27f4c20), SPH_C32(0x2189075c), SPH_C32(0x406b0000),
+	  SPH_C32(0x39250000), SPH_C32(0x12a30000), SPH_C32(0x7b22eae0),
+	  SPH_C32(0x357d43ac), SPH_C32(0x227d8bec), SPH_C32(0x6c01a25f),
+	  SPH_C32(0x3bd9b712) },
+	{ SPH_C32(0x82d60000), SPH_C32(0xbe060000), SPH_C32(0x66c50000),
+	  SPH_C32(0xdcffa4e0), SPH_C32(0x22963066), SPH_C32(0x870ab224),
+	  SPH_C32(0xe35c6001), SPH_C32(0xee1b8a8a), SPH_C32(0x45450000),
+	  SPH_C32(0xc8af0000), SPH_C32(0x3de50000), SPH_C32(0x1700e860),
+	  SPH_C32(0xc3a6790e), SPH_C32(0x376f0c67), SPH_C32(0x37510fed),
+	  SPH_C32(0xb755eabc) },
+	{ SPH_C32(0x64fe0000), SPH_C32(0xf24d0000), SPH_C32(0xce900000),
+	  SPH_C32(0x0f2fa600), SPH_C32(0xfaf700de), SPH_C32(0x1fad02fe),
+	  SPH_C32(0xcbc966b5), SPH_C32(0x3941c21d), SPH_C32(0xb5800000),
+	  SPH_C32(0x918c0000), SPH_C32(0x78670000), SPH_C32(0xf68de8a0),
+	  SPH_C32(0xf8cb7f3f), SPH_C32(0xf5825afe), SPH_C32(0xfcb1f1f1),
+	  SPH_C32(0xe1f25b23) },
+	{ SPH_C32(0x72130000), SPH_C32(0xe7250000), SPH_C32(0x23470000),
+	  SPH_C32(0x3d72a420), SPH_C32(0x19fb3657), SPH_C32(0x45e7e4bd),
+	  SPH_C32(0x28bc9e1d), SPH_C32(0xb8bc3b15), SPH_C32(0x53a80000),
+	  SPH_C32(0xddc70000), SPH_C32(0xd0320000), SPH_C32(0x255dea40),
+	  SPH_C32(0x20aa4f87), SPH_C32(0x6d25ea24), SPH_C32(0xd424f745),
+	  SPH_C32(0x36a813b4) },
+	{ SPH_C32(0x943b0000), SPH_C32(0xab6e0000), SPH_C32(0x8b120000),
+	  SPH_C32(0xeea2a6c0), SPH_C32(0xc19a06ef), SPH_C32(0xdd405467),
+	  SPH_C32(0x002998a9), SPH_C32(0x6fe67382), SPH_C32(0xa36d0000),
+	  SPH_C32(0x84e40000), SPH_C32(0x95b00000), SPH_C32(0xc4d0ea80),
+	  SPH_C32(0x1bc749b6), SPH_C32(0xafc8bcbd), SPH_C32(0x1fc40959),
+	  SPH_C32(0x600fa22b) },
+	{ SPH_C32(0xd5e10000), SPH_C32(0x74f40000), SPH_C32(0x508b0000),
+	  SPH_C32(0x1cdda060), SPH_C32(0x748e5b44), SPH_C32(0xdba94628),
+	  SPH_C32(0x42cf1f8e), SPH_C32(0xfba2eb6d), SPH_C32(0xf1740000),
+	  SPH_C32(0xbf9c0000), SPH_C32(0x8cb80000), SPH_C32(0x68d0ec80),
+	  SPH_C32(0xbb041836), SPH_C32(0xe679cf3a), SPH_C32(0xe507db64),
+	  SPH_C32(0xf93a9e62) },
+	{ SPH_C32(0x33c90000), SPH_C32(0x38bf0000), SPH_C32(0xf8de0000),
+	  SPH_C32(0xcf0da280), SPH_C32(0xacef6bfc), SPH_C32(0x430ef6f2),
+	  SPH_C32(0x6a5a193a), SPH_C32(0x2cf8a3fa), SPH_C32(0x01b10000),
+	  SPH_C32(0xe6bf0000), SPH_C32(0xc93a0000), SPH_C32(0x895dec40),
+	  SPH_C32(0x80691e07), SPH_C32(0x249499a3), SPH_C32(0x2ee72578),
+	  SPH_C32(0xaf9d2ffd) },
+	{ SPH_C32(0x25240000), SPH_C32(0x2dd70000), SPH_C32(0x15090000),
+	  SPH_C32(0xfd50a0a0), SPH_C32(0x4fe35d75), SPH_C32(0x194410b1),
+	  SPH_C32(0x892fe192), SPH_C32(0xad055af2), SPH_C32(0xe7990000),
+	  SPH_C32(0xaaf40000), SPH_C32(0x616f0000), SPH_C32(0x5a8deea0),
+	  SPH_C32(0x58082ebf), SPH_C32(0xbc332979), SPH_C32(0x067223cc),
+	  SPH_C32(0x78c7676a) },
+	{ SPH_C32(0xc30c0000), SPH_C32(0x619c0000), SPH_C32(0xbd5c0000),
+	  SPH_C32(0x2e80a240), SPH_C32(0x97826dcd), SPH_C32(0x81e3a06b),
+	  SPH_C32(0xa1bae726), SPH_C32(0x7a5f1265), SPH_C32(0x175c0000),
+	  SPH_C32(0xf3d70000), SPH_C32(0x24ed0000), SPH_C32(0xbb00ee60),
+	  SPH_C32(0x6365288e), SPH_C32(0x7ede7fe0), SPH_C32(0xcd92ddd0),
+	  SPH_C32(0x2e60d6f5) },
+	{ SPH_C32(0x61d00000), SPH_C32(0x03c70000), SPH_C32(0xe1d60000),
+	  SPH_C32(0x630da480), SPH_C32(0x0c2c3a7c), SPH_C32(0x0abf8575),
+	  SPH_C32(0x9099cb07), SPH_C32(0xb5cd9fb3), SPH_C32(0x12720000),
+	  SPH_C32(0x025d0000), SPH_C32(0x0bab0000), SPH_C32(0xd722ece0),
+	  SPH_C32(0x95be122c), SPH_C32(0x6bccf86b), SPH_C32(0x96c27062),
+	  SPH_C32(0xa2ec8b5b) },
+	{ SPH_C32(0x87f80000), SPH_C32(0x4f8c0000), SPH_C32(0x49830000),
+	  SPH_C32(0xb0dda660), SPH_C32(0xd44d0ac4), SPH_C32(0x921835af),
+	  SPH_C32(0xb80ccdb3), SPH_C32(0x6297d724), SPH_C32(0xe2b70000),
+	  SPH_C32(0x5b7e0000), SPH_C32(0x4e290000), SPH_C32(0x36afec20),
+	  SPH_C32(0xaed3141d), SPH_C32(0xa921aef2), SPH_C32(0x5d228e7e),
+	  SPH_C32(0xf44b3ac4) },
+	{ SPH_C32(0x91150000), SPH_C32(0x5ae40000), SPH_C32(0xa4540000),
+	  SPH_C32(0x8280a440), SPH_C32(0x37413c4d), SPH_C32(0xc852d3ec),
+	  SPH_C32(0x5b79351b), SPH_C32(0xe36a2e2c), SPH_C32(0x049f0000),
+	  SPH_C32(0x17350000), SPH_C32(0xe67c0000), SPH_C32(0xe57feec0),
+	  SPH_C32(0x76b224a5), SPH_C32(0x31861e28), SPH_C32(0x75b788ca),
+	  SPH_C32(0x23117253) },
+	{ SPH_C32(0x773d0000), SPH_C32(0x16af0000), SPH_C32(0x0c010000),
+	  SPH_C32(0x5150a6a0), SPH_C32(0xef200cf5), SPH_C32(0x50f56336),
+	  SPH_C32(0x73ec33af), SPH_C32(0x343066bb), SPH_C32(0xf45a0000),
+	  SPH_C32(0x4e160000), SPH_C32(0xa3fe0000), SPH_C32(0x04f2ee00),
+	  SPH_C32(0x4ddf2294), SPH_C32(0xf36b48b1), SPH_C32(0xbe5776d6),
+	  SPH_C32(0x75b6c3cc) },
+	{ SPH_C32(0x34150000), SPH_C32(0x6bb40000), SPH_C32(0x50a70000),
+	  SPH_C32(0x4043d800), SPH_C32(0x442925b1), SPH_C32(0x51215aaf),
+	  SPH_C32(0xf5c886bf), SPH_C32(0xdf46dbca), SPH_C32(0x1c9e0000),
+	  SPH_C32(0x66c30000), SPH_C32(0x0d110000), SPH_C32(0x5fdac000),
+	  SPH_C32(0x32596759), SPH_C32(0x8cc0f80c), SPH_C32(0xaece29ff),
+	  SPH_C32(0xc6afe775) },
+	{ SPH_C32(0xd23d0000), SPH_C32(0x27ff0000), SPH_C32(0xf8f20000),
+	  SPH_C32(0x9393dae0), SPH_C32(0x9c481509), SPH_C32(0xc986ea75),
+	  SPH_C32(0xdd5d800b), SPH_C32(0x081c935d), SPH_C32(0xec5b0000),
+	  SPH_C32(0x3fe00000), SPH_C32(0x48930000), SPH_C32(0xbe57c0c0),
+	  SPH_C32(0x09346168), SPH_C32(0x4e2dae95), SPH_C32(0x652ed7e3),
+	  SPH_C32(0x900856ea) },
+	{ SPH_C32(0xc4d00000), SPH_C32(0x32970000), SPH_C32(0x15250000),
+	  SPH_C32(0xa1ced8c0), SPH_C32(0x7f442380), SPH_C32(0x93cc0c36),
+	  SPH_C32(0x3e2878a3), SPH_C32(0x89e16a55), SPH_C32(0x0a730000),
+	  SPH_C32(0x73ab0000), SPH_C32(0xe0c60000), SPH_C32(0x6d87c220),
+	  SPH_C32(0xd15551d0), SPH_C32(0xd68a1e4f), SPH_C32(0x4dbbd157),
+	  SPH_C32(0x47521e7d) },
+	{ SPH_C32(0x22f80000), SPH_C32(0x7edc0000), SPH_C32(0xbd700000),
+	  SPH_C32(0x721eda20), SPH_C32(0xa7251338), SPH_C32(0x0b6bbcec),
+	  SPH_C32(0x16bd7e17), SPH_C32(0x5ebb22c2), SPH_C32(0xfab60000),
+	  SPH_C32(0x2a880000), SPH_C32(0xa5440000), SPH_C32(0x8c0ac2e0),
+	  SPH_C32(0xea3857e1), SPH_C32(0x146748d6), SPH_C32(0x865b2f4b),
+	  SPH_C32(0x11f5afe2) },
+	{ SPH_C32(0x80240000), SPH_C32(0x1c870000), SPH_C32(0xe1fa0000),
+	  SPH_C32(0x3f93dce0), SPH_C32(0x3c8b4489), SPH_C32(0x803799f2),
+	  SPH_C32(0x279e5236), SPH_C32(0x9129af14), SPH_C32(0xff980000),
+	  SPH_C32(0xdb020000), SPH_C32(0x8a020000), SPH_C32(0xe028c060),
+	  SPH_C32(0x1ce36d43), SPH_C32(0x0175cf5d), SPH_C32(0xdd0b82f9),
+	  SPH_C32(0x9d79f24c) },
+	{ SPH_C32(0x660c0000), SPH_C32(0x50cc0000), SPH_C32(0x49af0000),
+	  SPH_C32(0xec43de00), SPH_C32(0xe4ea7431), SPH_C32(0x18902928),
+	  SPH_C32(0x0f0b5482), SPH_C32(0x4673e783), SPH_C32(0x0f5d0000),
+	  SPH_C32(0x82210000), SPH_C32(0xcf800000), SPH_C32(0x01a5c0a0),
+	  SPH_C32(0x278e6b72), SPH_C32(0xc39899c4), SPH_C32(0x16eb7ce5),
+	  SPH_C32(0xcbde43d3) },
+	{ SPH_C32(0x70e10000), SPH_C32(0x45a40000), SPH_C32(0xa4780000),
+	  SPH_C32(0xde1edc20), SPH_C32(0x07e642b8), SPH_C32(0x42dacf6b),
+	  SPH_C32(0xec7eac2a), SPH_C32(0xc78e1e8b), SPH_C32(0xe9750000),
+	  SPH_C32(0xce6a0000), SPH_C32(0x67d50000), SPH_C32(0xd275c240),
+	  SPH_C32(0xffef5bca), SPH_C32(0x5b3f291e), SPH_C32(0x3e7e7a51),
+	  SPH_C32(0x1c840b44) },
+	{ SPH_C32(0x96c90000), SPH_C32(0x09ef0000), SPH_C32(0x0c2d0000),
+	  SPH_C32(0x0dcedec0), SPH_C32(0xdf877200), SPH_C32(0xda7d7fb1),
+	  SPH_C32(0xc4ebaa9e), SPH_C32(0x10d4561c), SPH_C32(0x19b00000),
+	  SPH_C32(0x97490000), SPH_C32(0x22570000), SPH_C32(0x33f8c280),
+	  SPH_C32(0xc4825dfb), SPH_C32(0x99d27f87), SPH_C32(0xf59e844d),
+	  SPH_C32(0x4a23badb) },
+	{ SPH_C32(0xd7130000), SPH_C32(0xd6750000), SPH_C32(0xd7b40000),
+	  SPH_C32(0xffb1d860), SPH_C32(0x6a932fab), SPH_C32(0xdc946dfe),
+	  SPH_C32(0x860d2db9), SPH_C32(0x8490cef3), SPH_C32(0x4ba90000),
+	  SPH_C32(0xac310000), SPH_C32(0x3b5f0000), SPH_C32(0x9ff8c480),
+	  SPH_C32(0x64410c7b), SPH_C32(0xd0630c00), SPH_C32(0x0f5d5670),
+	  SPH_C32(0xd3168692) },
+	{ SPH_C32(0x313b0000), SPH_C32(0x9a3e0000), SPH_C32(0x7fe10000),
+	  SPH_C32(0x2c61da80), SPH_C32(0xb2f21f13), SPH_C32(0x4433dd24),
+	  SPH_C32(0xae982b0d), SPH_C32(0x53ca8664), SPH_C32(0xbb6c0000),
+	  SPH_C32(0xf5120000), SPH_C32(0x7edd0000), SPH_C32(0x7e75c440),
+	  SPH_C32(0x5f2c0a4a), SPH_C32(0x128e5a99), SPH_C32(0xc4bda86c),
+	  SPH_C32(0x85b1370d) },
+	{ SPH_C32(0x27d60000), SPH_C32(0x8f560000), SPH_C32(0x92360000),
+	  SPH_C32(0x1e3cd8a0), SPH_C32(0x51fe299a), SPH_C32(0x1e793b67),
+	  SPH_C32(0x4dedd3a5), SPH_C32(0xd2377f6c), SPH_C32(0x5d440000),
+	  SPH_C32(0xb9590000), SPH_C32(0xd6880000), SPH_C32(0xada5c6a0),
+	  SPH_C32(0x874d3af2), SPH_C32(0x8a29ea43), SPH_C32(0xec28aed8),
+	  SPH_C32(0x52eb7f9a) },
+	{ SPH_C32(0xc1fe0000), SPH_C32(0xc31d0000), SPH_C32(0x3a630000),
+	  SPH_C32(0xcdecda40), SPH_C32(0x899f1922), SPH_C32(0x86de8bbd),
+	  SPH_C32(0x6578d511), SPH_C32(0x056d37fb), SPH_C32(0xad810000),
+	  SPH_C32(0xe07a0000), SPH_C32(0x930a0000), SPH_C32(0x4c28c660),
+	  SPH_C32(0xbc203cc3), SPH_C32(0x48c4bcda), SPH_C32(0x27c850c4),
+	  SPH_C32(0x044cce05) },
+	{ SPH_C32(0x63220000), SPH_C32(0xa1460000), SPH_C32(0x66e90000),
+	  SPH_C32(0x8061dc80), SPH_C32(0x12314e93), SPH_C32(0x0d82aea3),
+	  SPH_C32(0x545bf930), SPH_C32(0xcaffba2d), SPH_C32(0xa8af0000),
+	  SPH_C32(0x11f00000), SPH_C32(0xbc4c0000), SPH_C32(0x200ac4e0),
+	  SPH_C32(0x4afb0661), SPH_C32(0x5dd63b51), SPH_C32(0x7c98fd76),
+	  SPH_C32(0x88c093ab) },
+	{ SPH_C32(0x850a0000), SPH_C32(0xed0d0000), SPH_C32(0xcebc0000),
+	  SPH_C32(0x53b1de60), SPH_C32(0xca507e2b), SPH_C32(0x95251e79),
+	  SPH_C32(0x7cceff84), SPH_C32(0x1da5f2ba), SPH_C32(0x586a0000),
+	  SPH_C32(0x48d30000), SPH_C32(0xf9ce0000), SPH_C32(0xc187c420),
+	  SPH_C32(0x71960050), SPH_C32(0x9f3b6dc8), SPH_C32(0xb778036a),
+	  SPH_C32(0xde672234) },
+	{ SPH_C32(0x93e70000), SPH_C32(0xf8650000), SPH_C32(0x236b0000),
+	  SPH_C32(0x61ecdc40), SPH_C32(0x295c48a2), SPH_C32(0xcf6ff83a),
+	  SPH_C32(0x9fbb072c), SPH_C32(0x9c580bb2), SPH_C32(0xbe420000),
+	  SPH_C32(0x04980000), SPH_C32(0x519b0000), SPH_C32(0x1257c6c0),
+	  SPH_C32(0xa9f730e8), SPH_C32(0x079cdd12), SPH_C32(0x9fed05de),
+	  SPH_C32(0x093d6aa3) },
+	{ SPH_C32(0x75cf0000), SPH_C32(0xb42e0000), SPH_C32(0x8b3e0000),
+	  SPH_C32(0xb23cdea0), SPH_C32(0xf13d781a), SPH_C32(0x57c848e0),
+	  SPH_C32(0xb72e0198), SPH_C32(0x4b024325), SPH_C32(0x4e870000),
+	  SPH_C32(0x5dbb0000), SPH_C32(0x14190000), SPH_C32(0xf3dac600),
+	  SPH_C32(0x929a36d9), SPH_C32(0xc5718b8b), SPH_C32(0x540dfbc2),
+	  SPH_C32(0x5f9adb3c) }
+};
+
+static const sph_u32 T512_56[256][16] = {
+	{ SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000), SPH_C32(0x00000000), SPH_C32(0x00000000),
+	  SPH_C32(0x00000000) },
+	{ SPH_C32(0x033d0000), SPH_C32(0x08b30000), SPH_C32(0xf33a0000),
+	  SPH_C32(0x3ac20007), SPH_C32(0x51298a50), SPH_C32(0x6b6e661f),
+	  SPH_C32(0x0ea5cfe3), SPH_C32(0xe6da7ffe), SPH_C32(0xa8da0000),
+	  SPH_C32(0x96be0000), SPH_C32(0x5c1d0000), SPH_C32(0x07da0002),
+	  SPH_C32(0x7d669583), SPH_C32(0x1f98708a), SPH_C32(0xbb668808),
+	  SPH_C32(0xda878000) },
+	{ SPH_C32(0xa8da0000), SPH_C32(0x96be0000), SPH_C32(0x5c1d0000),
+	  SPH_C32(0x07da0002), SPH_C32(0x7d669583), SPH_C32(0x1f98708a),
+	  SPH_C32(0xbb668808), SPH_C32(0xda878000), SPH_C32(0xabe70000),
+	  SPH_C32(0x9e0d0000), SPH_C32(0xaf270000), SPH_C32(0x3d180005),
+	  SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695), SPH_C32(0xb5c347eb),
+	  SPH_C32(0x3c5dfffe) },
+	{ SPH_C32(0xabe70000), SPH_C32(0x9e0d0000), SPH_C32(0xaf270000),
+	  SPH_C32(0x3d180005), SPH_C32(0x2c4f1fd3), SPH_C32(0x74f61695),
+	  SPH_C32(0xb5c347eb), SPH_C32(0x3c5dfffe), SPH_C32(0x033d0000),
+	  SPH_C32(0x08b30000), SPH_C32(0xf33a0000), SPH_C32(0x3ac20007),
+	  SPH_C32(0x51298a50), SPH_C32(0x6b6e661f), SPH_C32(0x0ea5cfe3),
+	  SPH_C32(0xe6da7ffe) },
+	{ SPH_C32(0x01930000), SPH_C32(0xe7820000), SPH_C32(0xedfb0000),
+	  SPH_C32(0xcf0c000b), SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e),
+	  SPH_C32(0x063661e1), SPH_C32(0x536f9e7b), SPH_C32(0x92280000),
+	  SPH_C32(0xdc850000), SPH_C32(0x57fa0000), SPH_C32(0x56dc0003),
+	  SPH_C32(0xbae92316), SPH_C32(0x5aefa30c), SPH_C32(0x90cef752),
+	  SPH_C32(0x7b1675d7) },
+	{ SPH_C32(0x02ae0000), SPH_C32(0xef310000), SPH_C32(0x1ec10000),
+	  SPH_C32(0xf5ce000c), SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231),
+	  SPH_C32(0x0893ae02), SPH_C32(0xb5b5e185), SPH_C32(0x3af20000),
+	  SPH_C32(0x4a3b0000), SPH_C32(0x0be70000), SPH_C32(0x51060001),
+	  SPH_C32(0xc78fb695), SPH_C32(0x4577d386), SPH_C32(0x2ba87f5a),
+	  SPH_C32(0xa191f5d7) },
+	{ SPH_C32(0xa9490000), SPH_C32(0x713c0000), SPH_C32(0xb1e60000),
+	  SPH_C32(0xc8d60009), SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4),
+	  SPH_C32(0xbd50e9e9), SPH_C32(0x89e81e7b), SPH_C32(0x39cf0000),
+	  SPH_C32(0x42880000), SPH_C32(0xf8dd0000), SPH_C32(0x6bc40006),
+	  SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599), SPH_C32(0x250db0b9),
+	  SPH_C32(0x474b8a29) },
+	{ SPH_C32(0xaa740000), SPH_C32(0x798f0000), SPH_C32(0x42dc0000),
+	  SPH_C32(0xf214000e), SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb),
+	  SPH_C32(0xb3f5260a), SPH_C32(0x6f326185), SPH_C32(0x91150000),
+	  SPH_C32(0xd4360000), SPH_C32(0xa4c00000), SPH_C32(0x6c1e0004),
+	  SPH_C32(0xebc0a946), SPH_C32(0x3181c513), SPH_C32(0x9e6b38b1),
+	  SPH_C32(0x9dcc0a29) },
+	{ SPH_C32(0x92280000), SPH_C32(0xdc850000), SPH_C32(0x57fa0000),
+	  SPH_C32(0x56dc0003), SPH_C32(0xbae92316), SPH_C32(0x5aefa30c),
+	  SPH_C32(0x90cef752), SPH_C32(0x7b1675d7), SPH_C32(0x93bb0000),
+	  SPH_C32(0x3b070000), SPH_C32(0xba010000), SPH_C32(0x99d00008),
+	  SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722), SPH_C32(0x96f896b3),
+	  SPH_C32(0x2879ebac) },
+	{ SPH_C32(0x91150000), SPH_C32(0xd4360000), SPH_C32(0xa4c00000),
+	  SPH_C32(0x6c1e0004), SPH_C32(0xebc0a946), SPH_C32(0x3181c513),
+	  SPH_C32(0x9e6b38b1), SPH_C32(0x9dcc0a29), SPH_C32(0x3b610000),
+	  SPH_C32(0xadb90000), SPH_C32(0xe61c0000), SPH_C32(0x9e0a000a),
+	  SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8), SPH_C32(0x2d9e1ebb),
+	  SPH_C32(0xf2fe6bac) },
+	{ SPH_C32(0x3af20000), SPH_C32(0x4a3b0000), SPH_C32(0x0be70000),
+	  SPH_C32(0x51060001), SPH_C32(0xc78fb695), SPH_C32(0x4577d386),
+	  SPH_C32(0x2ba87f5a), SPH_C32(0xa191f5d7), SPH_C32(0x385c0000),
+	  SPH_C32(0xa50a0000), SPH_C32(0x15260000), SPH_C32(0xa4c8000d),
+	  SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7), SPH_C32(0x233bd158),
+	  SPH_C32(0x14241452) },
+	{ SPH_C32(0x39cf0000), SPH_C32(0x42880000), SPH_C32(0xf8dd0000),
+	  SPH_C32(0x6bc40006), SPH_C32(0x96a63cc5), SPH_C32(0x2e19b599),
+	  SPH_C32(0x250db0b9), SPH_C32(0x474b8a29), SPH_C32(0x90860000),
+	  SPH_C32(0x33b40000), SPH_C32(0x493b0000), SPH_C32(0xa312000f),
+	  SPH_C32(0x6610241e), SPH_C32(0x8d22713d), SPH_C32(0x985d5950),
+	  SPH_C32(0xcea39452) },
+	{ SPH_C32(0x93bb0000), SPH_C32(0x3b070000), SPH_C32(0xba010000),
+	  SPH_C32(0x99d00008), SPH_C32(0x3739ae4e), SPH_C32(0xe64c1722),
+	  SPH_C32(0x96f896b3), SPH_C32(0x2879ebac), SPH_C32(0x01930000),
+	  SPH_C32(0xe7820000), SPH_C32(0xedfb0000), SPH_C32(0xcf0c000b),
+	  SPH_C32(0x8dd08d58), SPH_C32(0xbca3b42e), SPH_C32(0x063661e1),
+	  SPH_C32(0x536f9e7b) },
+	{ SPH_C32(0x90860000), SPH_C32(0x33b40000), SPH_C32(0x493b0000),
+	  SPH_C32(0xa312000f), SPH_C32(0x6610241e), SPH_C32(0x8d22713d),
+	  SPH_C32(0x985d5950), SPH_C32(0xcea39452), SPH_C32(0xa9490000),
+	  SPH_C32(0x713c0000), SPH_C32(0xb1e60000), SPH_C32(0xc8d60009),
+	  SPH_C32(0xf0b618db), SPH_C32(0xa33bc4a4), SPH_C32(0xbd50e9e9),
+	  SPH_C32(0x89e81e7b) },
+	{ SPH_C32(0x3b610000), SPH_C32(0xadb90000), SPH_C32(0xe61c0000),
+	  SPH_C32(0x9e0a000a), SPH_C32(0x4a5f3bcd), SPH_C32(0xf9d467a8),
+	  SPH_C32(0x2d9e1ebb), SPH_C32(0xf2fe6bac), SPH_C32(0xaa740000),
+	  SPH_C32(0x798f0000), SPH_C32(0x42dc0000), SPH_C32(0xf214000e),
+	  SPH_C32(0xa19f928b), SPH_C32(0xc855a2bb), SPH_C32(0xb3f5260a),
+	  SPH_C32(0x6f326185) },
+	{ SPH_C32(0x385c0000), SPH_C32(0xa50a0000), SPH_C32(0x15260000),
+	  SPH_C32(0xa4c8000d), SPH_C32(0x1b76b19d), SPH_C32(0x92ba01b7),
+	  SPH_C32(0x233bd158), SPH_C32(0x14241452), SPH_C32(0x02ae0000),
+	  SPH_C32(0xef310000), SPH_C32(0x1ec10000), SPH_C32(0xf5ce000c),
+	  SPH_C32(0xdcf90708), SPH_C32(0xd7cdd231), SPH_C32(0x0893ae02),
+	  SPH_C32(0xb5b5e185) },
+	{ SPH_C32(0x5fa80000), SPH_C32(0x56030000), SPH_C32(0x43ae0000),
+	  SPH_C32(0x64f30013), SPH_C32(0x257e86bf), SPH_C32(0x1311944e),
+	  SPH_C32(0x541e95bf), SPH_C32(0x8ea4db69), SPH_C32(0x00440000),
+	  SPH_C32(0x7f480000), SPH_C32(0xda7c0000), SPH_C32(0x2a230001),
+	  SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87), SPH_C32(0x030a9e60),
+	  SPH_C32(0xbe0a679e) },
+	{ SPH_C32(0x5c950000), SPH_C32(0x5eb00000), SPH_C32(0xb0940000),
+	  SPH_C32(0x5e310014), SPH_C32(0x74570cef), SPH_C32(0x787ff251),
+	  SPH_C32(0x5abb5a5c), SPH_C32(0x687ea497), SPH_C32(0xa89e0000),
+	  SPH_C32(0xe9f60000), SPH_C32(0x86610000), SPH_C32(0x2df90003),
+	  SPH_C32(0x46cb5c4f), SPH_C32(0xb62eec0d), SPH_C32(0xb86c1668),
+	  SPH_C32(0x648de79e) },
+	{ SPH_C32(0xf7720000), SPH_C32(0xc0bd0000), SPH_C32(0x1fb30000),
+	  SPH_C32(0x63290011), SPH_C32(0x5818133c), SPH_C32(0x0c89e4c4),
+	  SPH_C32(0xef781db7), SPH_C32(0x54235b69), SPH_C32(0xaba30000),
+	  SPH_C32(0xe1450000), SPH_C32(0x755b0000), SPH_C32(0x173b0004),
+	  SPH_C32(0x17e2d61f), SPH_C32(0xdd408a12), SPH_C32(0xb6c9d98b),
+	  SPH_C32(0x82579860) },
+	{ SPH_C32(0xf44f0000), SPH_C32(0xc80e0000), SPH_C32(0xec890000),
+	  SPH_C32(0x59eb0016), SPH_C32(0x0931996c), SPH_C32(0x67e782db),
+	  SPH_C32(0xe1ddd254), SPH_C32(0xb2f92497), SPH_C32(0x03790000),
+	  SPH_C32(0x77fb0000), SPH_C32(0x29460000), SPH_C32(0x10e10006),
+	  SPH_C32(0x6a84439c), SPH_C32(0xc2d8fa98), SPH_C32(0x0daf5183),
+	  SPH_C32(0x58d01860) },
+	{ SPH_C32(0x5e3b0000), SPH_C32(0xb1810000), SPH_C32(0xae550000),
+	  SPH_C32(0xabff0018), SPH_C32(0xa8ae0be7), SPH_C32(0xafb22060),
+	  SPH_C32(0x5228f45e), SPH_C32(0xddcb4512), SPH_C32(0x926c0000),
+	  SPH_C32(0xa3cd0000), SPH_C32(0x8d860000), SPH_C32(0x7cff0002),
+	  SPH_C32(0x8144eada), SPH_C32(0xf3593f8b), SPH_C32(0x93c46932),
+	  SPH_C32(0xc51c1249) },
+	{ SPH_C32(0x5d060000), SPH_C32(0xb9320000), SPH_C32(0x5d6f0000),
+	  SPH_C32(0x913d001f), SPH_C32(0xf98781b7), SPH_C32(0xc4dc467f),
+	  SPH_C32(0x5c8d3bbd), SPH_C32(0x3b113aec), SPH_C32(0x3ab60000),
+	  SPH_C32(0x35730000), SPH_C32(0xd19b0000), SPH_C32(0x7b250000),
+	  SPH_C32(0xfc227f59), SPH_C32(0xecc14f01), SPH_C32(0x28a2e13a),
+	  SPH_C32(0x1f9b9249) },
+	{ SPH_C32(0xf6e10000), SPH_C32(0x273f0000), SPH_C32(0xf2480000),
+	  SPH_C32(0xac25001a), SPH_C32(0xd5c89e64), SPH_C32(0xb02a50ea),
+	  SPH_C32(0xe94e7c56), SPH_C32(0x074cc512), SPH_C32(0x398b0000),
+	  SPH_C32(0x3dc00000), SPH_C32(0x22a10000), SPH_C32(0x41e70007),
+	  SPH_C32(0xad0bf509), SPH_C32(0x87af291e), SPH_C32(0x26072ed9),
+	  SPH_C32(0xf941edb7) },
+	{ SPH_C32(0xf5dc0000), SPH_C32(0x2f8c0000), SPH_C32(0x01720000),
+	  SPH_C32(0x96e7001d), SPH_C32(0x84e11434), SPH_C32(0xdb4436f5),
+	  SPH_C32(0xe7ebb3b5), SPH_C32(0xe196baec), SPH_C32(0x91510000),
+	  SPH_C32(0xab7e0000), SPH_C32(0x7ebc0000), SPH_C32(0x463d0005),
+	  SPH_C32(0xd06d608a), SPH_C32(0x98375994), SPH_C32(0x9d61a6d1),
+	  SPH_C32(0x23c66db7) },
+	{ SPH_C32(0xcd800000), SPH_C32(0x8a860000), SPH_C32(0x14540000),
+	  SPH_C32(0x322f0010), SPH_C32(0x9f97a5a9), SPH_C32(0x49fe3742),
+	  SPH_C32(0xc4d062ed), SPH_C32(0xf5b2aebe), SPH_C32(0x93ff0000),
+	  SPH_C32(0x444f0000), SPH_C32(0x607d0000), SPH_C32(0xb3f30009),
+	  SPH_C32(0x0c946782), SPH_C32(0x4ffa8ba5), SPH_C32(0x95f208d3),
+	  SPH_C32(0x96738c32) },
+	{ SPH_C32(0xcebd0000), SPH_C32(0x82350000), SPH_C32(0xe76e0000),
+	  SPH_C32(0x08ed0017), SPH_C32(0xcebe2ff9), SPH_C32(0x2290515d),
+	  SPH_C32(0xca75ad0e), SPH_C32(0x1368d140), SPH_C32(0x3b250000),
+	  SPH_C32(0xd2f10000), SPH_C32(0x3c600000), SPH_C32(0xb429000b),
+	  SPH_C32(0x71f2f201), SPH_C32(0x5062fb2f), SPH_C32(0x2e9480db),
+	  SPH_C32(0x4cf40c32) },
+	{ SPH_C32(0x655a0000), SPH_C32(0x1c380000), SPH_C32(0x48490000),
+	  SPH_C32(0x35f50012), SPH_C32(0xe2f1302a), SPH_C32(0x566647c8),
+	  SPH_C32(0x7fb6eae5), SPH_C32(0x2f352ebe), SPH_C32(0x38180000),
+	  SPH_C32(0xda420000), SPH_C32(0xcf5a0000), SPH_C32(0x8eeb000c),
+	  SPH_C32(0x20db7851), SPH_C32(0x3b0c9d30), SPH_C32(0x20314f38),
+	  SPH_C32(0xaa2e73cc) },
+	{ SPH_C32(0x66670000), SPH_C32(0x148b0000), SPH_C32(0xbb730000),
+	  SPH_C32(0x0f370015), SPH_C32(0xb3d8ba7a), SPH_C32(0x3d0821d7),
+	  SPH_C32(0x71132506), SPH_C32(0xc9ef5140), SPH_C32(0x90c20000),
+	  SPH_C32(0x4cfc0000), SPH_C32(0x93470000), SPH_C32(0x8931000e),
+	  SPH_C32(0x5dbdedd2), SPH_C32(0x2494edba), SPH_C32(0x9b57c730),
+	  SPH_C32(0x70a9f3cc) },
+	{ SPH_C32(0xcc130000), SPH_C32(0x6d040000), SPH_C32(0xf9af0000),
+	  SPH_C32(0xfd23001b), SPH_C32(0x124728f1), SPH_C32(0xf55d836c),
+	  SPH_C32(0xc2e6030c), SPH_C32(0xa6dd30c5), SPH_C32(0x01d70000),
+	  SPH_C32(0x98ca0000), SPH_C32(0x37870000), SPH_C32(0xe52f000a),
+	  SPH_C32(0xb67d4494), SPH_C32(0x151528a9), SPH_C32(0x053cff81),
+	  SPH_C32(0xed65f9e5) },
+	{ SPH_C32(0xcf2e0000), SPH_C32(0x65b70000), SPH_C32(0x0a950000),
+	  SPH_C32(0xc7e1001c), SPH_C32(0x436ea2a1), SPH_C32(0x9e33e573),
+	  SPH_C32(0xcc43ccef), SPH_C32(0x40074f3b), SPH_C32(0xa90d0000),
+	  SPH_C32(0x0e740000), SPH_C32(0x6b9a0000), SPH_C32(0xe2f50008),
+	  SPH_C32(0xcb1bd117), SPH_C32(0x0a8d5823), SPH_C32(0xbe5a7789),
+	  SPH_C32(0x37e279e5) },
+	{ SPH_C32(0x64c90000), SPH_C32(0xfbba0000), SPH_C32(0xa5b20000),
+	  SPH_C32(0xfaf90019), SPH_C32(0x6f21bd72), SPH_C32(0xeac5f3e6),
+	  SPH_C32(0x79808b04), SPH_C32(0x7c5ab0c5), SPH_C32(0xaa300000),
+	  SPH_C32(0x06c70000), SPH_C32(0x98a00000), SPH_C32(0xd837000f),
+	  SPH_C32(0x9a325b47), SPH_C32(0x61e33e3c), SPH_C32(0xb0ffb86a),
+	  SPH_C32(0xd138061b) },
+	{ SPH_C32(0x67f40000), SPH_C32(0xf3090000), SPH_C32(0x56880000),
+	  SPH_C32(0xc03b001e), SPH_C32(0x3e083722), SPH_C32(0x81ab95f9),
+	  SPH_C32(0x772544e7), SPH_C32(0x9a80cf3b), SPH_C32(0x02ea0000),
+	  SPH_C32(0x90790000), SPH_C32(0xc4bd0000), SPH_C32(0xdfed000d),
+	  SPH_C32(0xe754cec4), SPH_C32(0x7e7b4eb6), SPH_C32(0x0b993062),
+	  SPH_C32(0x0bbf861b) },
+	{ SPH_C32(0x00440000), SPH_C32(0x7f480000), SPH_C32(0xda7c0000),
+	  SPH_C32(0x2a230001), SPH_C32(0x3badc9cc), SPH_C32(0xa9b69c87),
+	  SPH_C32(0x030a9e60), SPH_C32(0xbe0a679e), SPH_C32(0x5fec0000),
+	  SPH_C32(0x294b0000), SPH_C32(0x99d20000), SPH_C32(0x4ed00012),
+	  SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9), SPH_C32(0x57140bdf),
+	  SPH_C32(0x30aebcf7) },
+	{ SPH_C32(0x03790000), SPH_C32(0x77fb0000), SPH_C32(0x29460000),
+	  SPH_C32(0x10e10006), SPH_C32(0x6a84439c), SPH_C32(0xc2d8fa98),
+	  SPH_C32(0x0daf5183), SPH_C32(0x58d01860), SPH_C32(0xf7360000),
+	  SPH_C32(0xbff50000), SPH_C32(0xc5cf0000), SPH_C32(0x490a0010),
+	  SPH_C32(0x63b5daf0), SPH_C32(0xa53f7843), SPH_C32(0xec7283d7),
+	  SPH_C32(0xea293cf7) },
+	{ SPH_C32(0xa89e0000), SPH_C32(0xe9f60000), SPH_C32(0x86610000),
+	  SPH_C32(0x2df90003), SPH_C32(0x46cb5c4f), SPH_C32(0xb62eec0d),
+	  SPH_C32(0xb86c1668), SPH_C32(0x648de79e), SPH_C32(0xf40b0000),
+	  SPH_C32(0xb7460000), SPH_C32(0x36f50000), SPH_C32(0x73c80017),
+	  SPH_C32(0x329c50a0), SPH_C32(0xce511e5c), SPH_C32(0xe2d74c34),
+	  SPH_C32(0x0cf34309) },
+	{ SPH_C32(0xaba30000), SPH_C32(0xe1450000), SPH_C32(0x755b0000),
+	  SPH_C32(0x173b0004), SPH_C32(0x17e2d61f), SPH_C32(0xdd408a12),
+	  SPH_C32(0xb6c9d98b), SPH_C32(0x82579860), SPH_C32(0x5cd10000),
+	  SPH_C32(0x21f80000), SPH_C32(0x6ae80000), SPH_C32(0x74120015),
+	  SPH_C32(0x4ffac523), SPH_C32(0xd1c96ed6), SPH_C32(0x59b1c43c),
+	  SPH_C32(0xd674c309) },
+	{ SPH_C32(0x01d70000), SPH_C32(0x98ca0000), SPH_C32(0x37870000),
+	  SPH_C32(0xe52f000a), SPH_C32(0xb67d4494), SPH_C32(0x151528a9),
+	  SPH_C32(0x053cff81), SPH_C32(0xed65f9e5), SPH_C32(0xcdc40000),
+	  SPH_C32(0xf5ce0000), SPH_C32(0xce280000), SPH_C32(0x180c0011),
+	  SPH_C32(0xa43a6c65), SPH_C32(0xe048abc5), SPH_C32(0xc7dafc8d),
+	  SPH_C32(0x4bb8c920) },
+	{ SPH_C32(0x02ea0000), SPH_C32(0x90790000), SPH_C32(0xc4bd0000),
+	  SPH_C32(0xdfed000d), SPH_C32(0xe754cec4), SPH_C32(0x7e7b4eb6),
+	  SPH_C32(0x0b993062), SPH_C32(0x0bbf861b), SPH_C32(0x651e0000),
+	  SPH_C32(0x63700000), SPH_C32(0x92350000), SPH_C32(0x1fd60013),
+	  SPH_C32(0xd95cf9e6), SPH_C32(0xffd0db4f), SPH_C32(0x7cbc7485),
+	  SPH_C32(0x913f4920) },
+	{ SPH_C32(0xa90d0000), SPH_C32(0x0e740000), SPH_C32(0x6b9a0000),
+	  SPH_C32(0xe2f50008), SPH_C32(0xcb1bd117), SPH_C32(0x0a8d5823),
+	  SPH_C32(0xbe5a7789), SPH_C32(0x37e279e5), SPH_C32(0x66230000),
+	  SPH_C32(0x6bc30000), SPH_C32(0x610f0000), SPH_C32(0x25140014),
+	  SPH_C32(0x887573b6), SPH_C32(0x94bebd50), SPH_C32(0x7219bb66),
+	  SPH_C32(0x77e536de) },
+	{ SPH_C32(0xaa300000), SPH_C32(0x06c70000), SPH_C32(0x98a00000),
+	  SPH_C32(0xd837000f), SPH_C32(0x9a325b47), SPH_C32(0x61e33e3c),
+	  SPH_C32(0xb0ffb86a), SPH_C32(0xd138061b), SPH_C32(0xcef90000),
+	  SPH_C32(0xfd7d0000), SPH_C32(0x3d120000), SPH_C32(0x22ce0016),
+	  SPH_C32(0xf513e635), SPH_C32(0x8b26cdda), SPH_C32(0xc97f336e),
+	  SPH_C32(0xad62b6de) },
+	{ SPH_C32(0x926c0000), SPH_C32(0xa3cd0000), SPH_C32(0x8d860000),
+	  SPH_C32(0x7cff0002), SPH_C32(0x8144eada), SPH_C32(0xf3593f8b),
+	  SPH_C32(0x93c46932), SPH_C32(0xc51c1249), SPH_C32(0xcc570000),
+	  SPH_C32(0x124c0000), SPH_C32(0x23d30000), SPH_C32(0xd700001a),
+	  SPH_C32(0x29eae13d), SPH_C32(0x5ceb1feb), SPH_C32(0xc1ec9d6c),
+	  SPH_C32(0x18d7575b) },
+	{ SPH_C32(0x91510000), SPH_C32(0xab7e0000), SPH_C32(0x7ebc0000),
+	  SPH_C32(0x463d0005), SPH_C32(0xd06d608a), SPH_C32(0x98375994),
+	  SPH_C32(0x9d61a6d1), SPH_C32(0x23c66db7), SPH_C32(0x648d0000),
+	  SPH_C32(0x84f20000), SPH_C32(0x7fce0000), SPH_C32(0xd0da0018),
+	  SPH_C32(0x548c74be), SPH_C32(0x43736f61), SPH_C32(0x7a8a1564),
+	  SPH_C32(0xc250d75b) },
+	{ SPH_C32(0x3ab60000), SPH_C32(0x35730000), SPH_C32(0xd19b0000),
+	  SPH_C32(0x7b250000), SPH_C32(0xfc227f59), SPH_C32(0xecc14f01),
+	  SPH_C32(0x28a2e13a), SPH_C32(0x1f9b9249), SPH_C32(0x67b00000),
+	  SPH_C32(0x8c410000), SPH_C32(0x8cf40000), SPH_C32(0xea18001f),
+	  SPH_C32(0x05a5feee), SPH_C32(0x281d097e), SPH_C32(0x742fda87),
+	  SPH_C32(0x248aa8a5) },
+	{ SPH_C32(0x398b0000), SPH_C32(0x3dc00000), SPH_C32(0x22a10000),
+	  SPH_C32(0x41e70007), SPH_C32(0xad0bf509), SPH_C32(0x87af291e),
+	  SPH_C32(0x26072ed9), SPH_C32(0xf941edb7), SPH_C32(0xcf6a0000),
+	  SPH_C32(0x1aff0000), SPH_C32(0xd0e90000), SPH_C32(0xedc2001d),
+	  SPH_C32(0x78c36b6d), SPH_C32(0x378579f4), SPH_C32(0xcf49528f),
+	  SPH_C32(0xfe0d28a5) },
+	{ SPH_C32(0x93ff0000), SPH_C32(0x444f0000), SPH_C32(0x607d0000),
+	  SPH_C32(0xb3f30009), SPH_C32(0x0c946782), SPH_C32(0x4ffa8ba5),
+	  SPH_C32(0x95f208d3), SPH_C32(0x96738c32), SPH_C32(0x5e7f0000),
+	  SPH_C32(0xcec90000), SPH_C32(0x74290000), SPH_C32(0x81dc0019),
+	  SPH_C32(0x9303c22b), SPH_C32(0x0604bce7), SPH_C32(0x51226a3e),
+	  SPH_C32(0x63c1228c) },
+	{ SPH_C32(0x90c20000), SPH_C32(0x4cfc0000), SPH_C32(0x93470000),
+	  SPH_C32(0x8931000e), SPH_C32(0x5dbdedd2), SPH_C32(0x2494edba),
+	  SPH_C32(0x9b57c730), SPH_C32(0x70a9f3cc), SPH_C32(0xf6a50000),
+	  SPH_C32(0x58770000), SPH_C32(0x28340000), SPH_C32(0x8606001b),
+	  SPH_C32(0xee6557a8), SPH_C32(0x199ccc6d), SPH_C32(0xea44e236),
+	  SPH_C32(0xb946a28c) },
+	{ SPH_C32(0x3b250000), SPH_C32(0xd2f10000), SPH_C32(0x3c600000),
+	  SPH_C32(0xb429000b), SPH_C32(0x71f2f201), SPH_C32(0x5062fb2f),
+	  SPH_C32(0x2e9480db), SPH_C32(0x4cf40c32), SPH_C32(0xf5980000),
+	  SPH_C32(0x50c40000), SPH_C32(0xdb0e0000), SPH_C32(0xbcc4001c),
+	  SPH_C32(0xbf4cddf8), SPH_C32(0x72f2aa72), SPH_C32(0xe4e12dd5),
+	  SPH_C32(0x5f9cdd72) },
+	{ SPH_C32(0x38180000), SPH_C32(0xda420000), SPH_C32(0xcf5a0000),
+	  SPH_C32(0x8eeb000c), SPH_C32(0x20db7851), SPH_C32(0x3b0c9d30),
+	  SPH_C32(0x20314f38), SPH_C32(0xaa2e73cc), SPH_C32(0x5d420000),
+	  SPH_C32(0xc67a0000), SPH_C32(0x87130000), SPH_C32(0xbb1e001e),
+	  SPH_C32(0xc22a487b), SPH_C32(0x6d6adaf8), SPH_C32(0x5f87a5dd),
+	  SPH_C32(0x851b5d72) },
+	{ SPH_C32(0x5fec0000), SPH_C32(0x294b0000), SPH_C32(0x99d20000),
+	  SPH_C32(0x4ed00012), SPH_C32(0x1ed34f73), SPH_C32(0xbaa708c9),
+	  SPH_C32(0x57140bdf), SPH_C32(0x30aebcf7), SPH_C32(0x5fa80000),
+	  SPH_C32(0x56030000), SPH_C32(0x43ae0000), SPH_C32(0x64f30013),
+	  SPH_C32(0x257e86bf), SPH_C32(0x1311944e), SPH_C32(0x541e95bf),
+	  SPH_C32(0x8ea4db69) },
+	{ SPH_C32(0x5cd10000), SPH_C32(0x21f80000), SPH_C32(0x6ae80000),
+	  SPH_C32(0x74120015), SPH_C32(0x4ffac523), SPH_C32(0xd1c96ed6),
+	  SPH_C32(0x59b1c43c), SPH_C32(0xd674c309), SPH_C32(0xf7720000),
+	  SPH_C32(0xc0bd0000), SPH_C32(0x1fb30000), SPH_C32(0x63290011),
+	  SPH_C32(0x5818133c), SPH_C32(0x0c89e4c4), SPH_C32(0xef781db7),
+	  SPH_C32(0x54235b69) },
+	{ SPH_C32(0xf7360000), SPH_C32(0xbff50000), SPH_C32(0xc5cf0000),
+	  SPH_C32(0x490a0010), SPH_C32(0x63b5daf0), SPH_C32(0xa53f7843),
+	  SPH_C32(0xec7283d7), SPH_C32(0xea293cf7), SPH_C32(0xf44f0000),
+	  SPH_C32(0xc80e0000), SPH_C32(0xec890000), SPH_C32(0x59eb0016),
+	  SPH_C32(0x0931996c), SPH_C32(0x67e782db), SPH_C32(0xe1ddd254),
+	  SPH_C32(0xb2f92497) },
+	{ SPH_C32(0xf40b0000), SPH_C32(0xb7460000), SPH_C32(0x36f50000),
+	  SPH_C32(0x73c80017), SPH_C32(0x329c50a0), SPH_C32(0xce511e5c),
+	  SPH_C32(0xe2d74c34), SPH_C32(0x0cf34309), SPH_C32(0x5c950000),
+	  SPH_C32(0x5eb00000), SPH_C32(0xb0940000), SPH_C32(0x5e310014),
+	  SPH_C32(0x74570cef), SPH_C32(0x787ff251), SPH_C32(0x5abb5a5c),
+	  SPH_C32(0x687ea497) },
+	{ SPH_C32(0x5e7f0000), SPH_C32(0xcec90000), SPH_C32(0x74290000),
+	  SPH_C32(0x81dc0019), SPH_C32(0x9303c22b), SPH_C32(0x0604bce7),
+	  SPH_C32(0x51226a3e), SPH_C32(0x63c1228c), SPH_C32(0xcd800000),
+	  SPH_C32(0x8a860000), SPH_C32(0x14540000), SPH_C32(0x322f0010),
+	  SPH_C32(0x9f97a5a9), SPH_C32(0x49fe3742), SPH_C32(0xc4d062ed),
+	  SPH_C32(0xf5b2aebe) },
+	{ SPH_C32(0x5d420000), SPH_C32(0xc67a0000), SPH_C32(0x87130000),
+	  SPH_C32(0xbb1e001e), SPH_C32(0xc22a487b), SPH_C32(0x6d6adaf8),
+	  SPH_C32(0x5f87a5dd), SPH_C32(0x851b5d72), SPH_C32(0x655a0000),
+	  SPH_C32(0x1c380000), SPH_C32(0x48490000), SPH_C32(0x35f50012),
+	  SPH_C32(0xe2f1302a), SPH_C32(0x566647c8), SPH_C32(0x7fb6eae5),
+	  SPH_C32(0x2f352ebe) },
+	{ SPH_C32(0xf6a50000), SPH_C32(0x58770000), SPH_C32(0x28340000),
+	  SPH_C32(0x8606001b), SPH_C32(0xee6557a8), SPH_C32(0x199ccc6d),
+	  SPH_C32(0xea44e236), SPH_C32(0xb946a28c), SPH_C32(0x66670000),
+	  SPH_C32(0x148b0000), SPH_C32(0xbb730000), SPH_C32(0x0f370015),
+	  SPH_C32(0xb3d8ba7a), SPH_C32(0x3d0821d7), SPH_C32(0x71132506),
+	  SPH_C32(0xc9ef5140) },
+	{ SPH_C32(0xf5980000), SPH_C32(0x50c40000), SPH_C32(0xdb0e0000),
+	  SPH_C32(0xbcc4001c), SPH_C32(0xbf4cddf8), SPH_C32(0x72f2aa72),
+	  SPH_C32(0xe4e12dd5), SPH_C32(0x5f9cdd72), SPH_C32(0xcebd0000),
+	  SPH_C32(0x82350000), SPH_C32(0xe76e0000), SPH_C32(0x08ed0017),
+	  SPH_C32(0xcebe2ff9), SPH_C32(0x2290515d), SPH_C32(0xca75ad0e),
+	  SPH_C32(0x1368d140) },
+	{ SPH_C32(0xcdc40000), SPH_C32(0xf5ce0000), SPH_C32(0xce280000),
+	  SPH_C32(0x180c0011), SPH_C32(0xa43a6c65), SPH_C32(0xe048abc5),
+	  SPH_C32(0xc7dafc8d), SPH_C32(0x4bb8c920), SPH_C32(0xcc130000),
+	  SPH_C32(0x6d040000), SPH_C32(0xf9af0000), SPH_C32(0xfd23001b),
+	  SPH_C32(0x124728f1), SPH_C32(0xf55d836c), SPH_C32(0xc2e6030c),
+	  SPH_C32(0xa6dd30c5) },
+	{ SPH_C32(0xcef90000), SPH_C32(0xfd7d0000), SPH_C32(0x3d120000),
+	  SPH_C32(0x22ce0016), SPH_C32(0xf513e635), SPH_C32(0x8b26cdda),
+	  SPH_C32(0xc97f336e), SPH_C32(0xad62b6de), SPH_C32(0x64c90000),
+	  SPH_C32(0xfbba0000), SPH_C32(0xa5b20000), SPH_C32(0xfaf90019),
+	  SPH_C32(0x6f21bd72), SPH_C32(0xeac5f3e6), SPH_C32(0x79808b04),
+	  SPH_C32(0x7c5ab0c5) },
+	{ SPH_C32(0x651e0000), SPH_C32(0x63700000), SPH_C32(0x92350000),
+	  SPH_C32(0x1fd60013), SPH_C32(0xd95cf9e6), SPH_C32(0xffd0db4f),
+	  SPH_C32(0x7cbc7485), SPH_C32(0x913f4920), SPH_C32(0x67f40000),
+	  SPH_C32(0xf3090000), SPH_C32(0x56880000), SPH_C32(0xc03b001e),
+	  SPH_C32(0x3e083722), SPH_C32(0x81ab95f9), SPH_C32(0x772544e7),
+	  SPH_C32(0x9a80cf3b) },
+	{ SPH_C32(0x66230000), SPH_C32(0x6bc30000), SPH_C32(0x610f0000),
+	  SPH_C32(0x25140014), SPH_C32(0x887573b6), SPH_C32(0x94bebd50),
+	  SPH_C32(0x7219bb66), SPH_C32(0x77e536de), SPH_C32(0xcf2e0000),
+	  SPH_C32(0x65b70000), SPH_C32(0x0a950000), SPH_C32(0xc7e1001c),
+	  SPH_C32(0x436ea2a1), SPH_C32(0x9e33e573), SPH_C32(0xcc43ccef),
+	  SPH_C32(0x40074f3b) },
+	{ SPH_C32(0xcc570000), SPH_C32(0x124c0000), SPH_C32(0x23d30000),
+	  SPH_C32(0xd700001a), SPH_C32(0x29eae13d), SPH_C32(0x5ceb1feb),
+	  SPH_C32(0xc1ec9d6c), SPH_C32(0x18d7575b), SPH_C32(0x5e3b0000),
+	  SPH_C32(0xb1810000), SPH_C32(0xae550000), SPH_C32(0xabff0018),
+	  SPH_C32(0xa8ae0be7), SPH_C32(0xafb22060), SPH_C32(0x5228f45e),
+	  SPH_C32(0xddcb4512) },
+	{ SPH_C32(0xcf6a0000), SPH_C32(0x1aff0000), SPH_C32(0xd0e90000),
+	  SPH_C32(0xedc2001d), SPH_C32(0x78c36b6d), SPH_C32(0x378579f4),
+	  SPH_C32(0xcf49528f), SPH_C32(0xfe0d28a5), SPH_C32(0xf6e10000),
+	  SPH_C32(0x273f0000), SPH_C32(0xf2480000), SPH_C32(0xac25001a),
+	  SPH_C32(0xd5c89e64), SPH_C32(0xb02a50ea), SPH_C32(0xe94e7c56),
+	  SPH_C32(0x074cc512) },
+	{ SPH_C32(0x648d0000), SPH_C32(0x84f20000), SPH_C32(0x7fce0000),
+	  SPH_C32(0xd0da0018), SPH_C32(0x548c74be), SPH_C32(0x43736f61),
+	  SPH_C32(0x7a8a1564), SPH_C32(0xc250d75b), SPH_C32(0xf5dc0000),
+	  SPH_C32(0x2f8c0000), SPH_C32(0x01720000), SPH_C32(0x96e7001d),
+	  SPH_C32(0x84e11434), SPH_C32(0xdb4436f5), SPH_C32(0xe7ebb3b5),
+	  SPH_C32(0xe196baec) },
+	{ SPH_C32(0x67b00000), SPH_C32(0x8c410000), SPH_C32(0x8cf40000),
+	  SPH_C32(0xea18001f), SPH_C32(0x05a5feee), SPH_C32(0x281d097e),
+	  SPH_C32(0x742fda87), SPH_C32(0x248aa8a5), SPH_C32(0x5d060000),
+	  SPH_C32(0xb9320000), SPH_C32(0x5d6f0000), SPH_C32(0x913d001f),
+	  SPH_C32(0xf98781b7), SPH_C32(0xc4dc467f), SPH_C32(0x5c8d3bbd),
+	  SPH_C32(0x3b113aec) },
+	{ SPH_C32(0xee930000), SPH_C32(0xd6070000), SPH_C32(0x92c10000),
+	  SPH_C32(0x2b9801e0), SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57),
+	  SPH_C32(0x45312374), SPH_C32(0x201f6a64), SPH_C32(0x7b280000),
+	  SPH_C32(0x57420000), SPH_C32(0xa9e50000), SPH_C32(0x634300a0),
+	  SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb), SPH_C32(0x27f83b03),
+	  SPH_C32(0xc7ff60f0) },
+	{ SPH_C32(0xedae0000), SPH_C32(0xdeb40000), SPH_C32(0x61fb0000),
+	  SPH_C32(0x115a01e7), SPH_C32(0xc578a22c), SPH_C32(0x50029d48),
+	  SPH_C32(0x4b94ec97), SPH_C32(0xc6c5159a), SPH_C32(0xd3f20000),
+	  SPH_C32(0xc1fc0000), SPH_C32(0xf5f80000), SPH_C32(0x649900a2),
+	  SPH_C32(0xe3bdd1ac), SPH_C32(0x7201e531), SPH_C32(0x9c9eb30b),
+	  SPH_C32(0x1d78e0f0) },
+	{ SPH_C32(0x46490000), SPH_C32(0x40b90000), SPH_C32(0xcedc0000),
+	  SPH_C32(0x2c4201e2), SPH_C32(0xe937bdff), SPH_C32(0x24f48bdd),
+	  SPH_C32(0xfe57ab7c), SPH_C32(0xfa98ea64), SPH_C32(0xd0cf0000),
+	  SPH_C32(0xc94f0000), SPH_C32(0x06c20000), SPH_C32(0x5e5b00a5),
+	  SPH_C32(0xb2945bfc), SPH_C32(0x196f832e), SPH_C32(0x923b7ce8),
+	  SPH_C32(0xfba29f0e) },
+	{ SPH_C32(0x45740000), SPH_C32(0x480a0000), SPH_C32(0x3de60000),
+	  SPH_C32(0x168001e5), SPH_C32(0xb81e37af), SPH_C32(0x4f9aedc2),
+	  SPH_C32(0xf0f2649f), SPH_C32(0x1c42959a), SPH_C32(0x78150000),
+	  SPH_C32(0x5ff10000), SPH_C32(0x5adf0000), SPH_C32(0x598100a7),
+	  SPH_C32(0xcff2ce7f), SPH_C32(0x06f7f3a4), SPH_C32(0x295df4e0),
+	  SPH_C32(0x21251f0e) },
+	{ SPH_C32(0xef000000), SPH_C32(0x31850000), SPH_C32(0x7f3a0000),
+	  SPH_C32(0xe49401eb), SPH_C32(0x1981a524), SPH_C32(0x87cf4f79),
+	  SPH_C32(0x43074295), SPH_C32(0x7370f41f), SPH_C32(0xe9000000),
+	  SPH_C32(0x8bc70000), SPH_C32(0xfe1f0000), SPH_C32(0x359f00a3),
+	  SPH_C32(0x24326739), SPH_C32(0x377636b7), SPH_C32(0xb736cc51),
+	  SPH_C32(0xbce91527) },
+	{ SPH_C32(0xec3d0000), SPH_C32(0x39360000), SPH_C32(0x8c000000),
+	  SPH_C32(0xde5601ec), SPH_C32(0x48a82f74), SPH_C32(0xeca12966),
+	  SPH_C32(0x4da28d76), SPH_C32(0x95aa8be1), SPH_C32(0x41da0000),
+	  SPH_C32(0x1d790000), SPH_C32(0xa2020000), SPH_C32(0x324500a1),
+	  SPH_C32(0x5954f2ba), SPH_C32(0x28ee463d), SPH_C32(0x0c504459),
+	  SPH_C32(0x666e9527) },
+	{ SPH_C32(0x47da0000), SPH_C32(0xa73b0000), SPH_C32(0x23270000),
+	  SPH_C32(0xe34e01e9), SPH_C32(0x64e730a7), SPH_C32(0x98573ff3),
+	  SPH_C32(0xf861ca9d), SPH_C32(0xa9f7741f), SPH_C32(0x42e70000),
+	  SPH_C32(0x15ca0000), SPH_C32(0x51380000), SPH_C32(0x088700a6),
+	  SPH_C32(0x087d78ea), SPH_C32(0x43802022), SPH_C32(0x02f58bba),
+	  SPH_C32(0x80b4ead9) },
+	{ SPH_C32(0x44e70000), SPH_C32(0xaf880000), SPH_C32(0xd01d0000),
+	  SPH_C32(0xd98c01ee), SPH_C32(0x35cebaf7), SPH_C32(0xf33959ec),
+	  SPH_C32(0xf6c4057e), SPH_C32(0x4f2d0be1), SPH_C32(0xea3d0000),
+	  SPH_C32(0x83740000), SPH_C32(0x0d250000), SPH_C32(0x0f5d00a4),
+	  SPH_C32(0x751bed69), SPH_C32(0x5c1850a8), SPH_C32(0xb99303b2),
+	  SPH_C32(0x5a336ad9) },
+	{ SPH_C32(0x7cbb0000), SPH_C32(0x0a820000), SPH_C32(0xc53b0000),
+	  SPH_C32(0x7d4401e3), SPH_C32(0x2eb80b6a), SPH_C32(0x6183585b),
+	  SPH_C32(0xd5ffd426), SPH_C32(0x5b091fb3), SPH_C32(0xe8930000),
+	  SPH_C32(0x6c450000), SPH_C32(0x13e40000), SPH_C32(0xfa9300a8),
+	  SPH_C32(0xa9e2ea61), SPH_C32(0x8bd58299), SPH_C32(0xb100adb0),
+	  SPH_C32(0xef868b5c) },
+	{ SPH_C32(0x7f860000), SPH_C32(0x02310000), SPH_C32(0x36010000),
+	  SPH_C32(0x478601e4), SPH_C32(0x7f91813a), SPH_C32(0x0aed3e44),
+	  SPH_C32(0xdb5a1bc5), SPH_C32(0xbdd3604d), SPH_C32(0x40490000),
+	  SPH_C32(0xfafb0000), SPH_C32(0x4ff90000), SPH_C32(0xfd4900aa),
+	  SPH_C32(0xd4847fe2), SPH_C32(0x944df213), SPH_C32(0x0a6625b8),
+	  SPH_C32(0x35010b5c) },
+	{ SPH_C32(0xd4610000), SPH_C32(0x9c3c0000), SPH_C32(0x99260000),
+	  SPH_C32(0x7a9e01e1), SPH_C32(0x53de9ee9), SPH_C32(0x7e1b28d1),
+	  SPH_C32(0x6e995c2e), SPH_C32(0x818e9fb3), SPH_C32(0x43740000),
+	  SPH_C32(0xf2480000), SPH_C32(0xbcc30000), SPH_C32(0xc78b00ad),
+	  SPH_C32(0x85adf5b2), SPH_C32(0xff23940c), SPH_C32(0x04c3ea5b),
+	  SPH_C32(0xd3db74a2) },
+	{ SPH_C32(0xd75c0000), SPH_C32(0x948f0000), SPH_C32(0x6a1c0000),
+	  SPH_C32(0x405c01e6), SPH_C32(0x02f714b9), SPH_C32(0x15754ece),
+	  SPH_C32(0x603c93cd), SPH_C32(0x6754e04d), SPH_C32(0xebae0000),
+	  SPH_C32(0x64f60000), SPH_C32(0xe0de0000), SPH_C32(0xc05100af),
+	  SPH_C32(0xf8cb6031), SPH_C32(0xe0bbe486), SPH_C32(0xbfa56253),
+	  SPH_C32(0x095cf4a2) },
+	{ SPH_C32(0x7d280000), SPH_C32(0xed000000), SPH_C32(0x28c00000),
+	  SPH_C32(0xb24801e8), SPH_C32(0xa3688632), SPH_C32(0xdd20ec75),
+	  SPH_C32(0xd3c9b5c7), SPH_C32(0x086681c8), SPH_C32(0x7abb0000),
+	  SPH_C32(0xb0c00000), SPH_C32(0x441e0000), SPH_C32(0xac4f00ab),
+	  SPH_C32(0x130bc977), SPH_C32(0xd13a2195), SPH_C32(0x21ce5ae2),
+	  SPH_C32(0x9490fe8b) },
+	{ SPH_C32(0x7e150000), SPH_C32(0xe5b30000), SPH_C32(0xdbfa0000),
+	  SPH_C32(0x888a01ef), SPH_C32(0xf2410c62), SPH_C32(0xb64e8a6a),
+	  SPH_C32(0xdd6c7a24), SPH_C32(0xeebcfe36), SPH_C32(0xd2610000),
+	  SPH_C32(0x267e0000), SPH_C32(0x18030000), SPH_C32(0xab9500a9),
+	  SPH_C32(0x6e6d5cf4), SPH_C32(0xcea2511f), SPH_C32(0x9aa8d2ea),
+	  SPH_C32(0x4e177e8b) },
+	{ SPH_C32(0xd5f20000), SPH_C32(0x7bbe0000), SPH_C32(0x74dd0000),
+	  SPH_C32(0xb59201ea), SPH_C32(0xde0e13b1), SPH_C32(0xc2b89cff),
+	  SPH_C32(0x68af3dcf), SPH_C32(0xd2e101c8), SPH_C32(0xd15c0000),
+	  SPH_C32(0x2ecd0000), SPH_C32(0xeb390000), SPH_C32(0x915700ae),
+	  SPH_C32(0x3f44d6a4), SPH_C32(0xa5cc3700), SPH_C32(0x940d1d09),
+	  SPH_C32(0xa8cd0175) },
+	{ SPH_C32(0xd6cf0000), SPH_C32(0x730d0000), SPH_C32(0x87e70000),
+	  SPH_C32(0x8f5001ed), SPH_C32(0x8f2799e1), SPH_C32(0xa9d6fae0),
+	  SPH_C32(0x660af22c), SPH_C32(0x343b7e36), SPH_C32(0x79860000),
+	  SPH_C32(0xb8730000), SPH_C32(0xb7240000), SPH_C32(0x968d00ac),
+	  SPH_C32(0x42224327), SPH_C32(0xba54478a), SPH_C32(0x2f6b9501),
+	  SPH_C32(0x724a8175) },
+	{ SPH_C32(0xb13b0000), SPH_C32(0x80040000), SPH_C32(0xd16f0000),
+	  SPH_C32(0x4f6b01f3), SPH_C32(0xb12faec3), SPH_C32(0x287d6f19),
+	  SPH_C32(0x112fb6cb), SPH_C32(0xaebbb10d), SPH_C32(0x7b6c0000),
+	  SPH_C32(0x280a0000), SPH_C32(0x73990000), SPH_C32(0x496000a1),
+	  SPH_C32(0xa5768de3), SPH_C32(0xc42f093c), SPH_C32(0x24f2a563),
+	  SPH_C32(0x79f5076e) },
+	{ SPH_C32(0xb2060000), SPH_C32(0x88b70000), SPH_C32(0x22550000),
+	  SPH_C32(0x75a901f4), SPH_C32(0xe0062493), SPH_C32(0x43130906),
+	  SPH_C32(0x1f8a7928), SPH_C32(0x4861cef3), SPH_C32(0xd3b60000),
+	  SPH_C32(0xbeb40000), SPH_C32(0x2f840000), SPH_C32(0x4eba00a3),
+	  SPH_C32(0xd8101860), SPH_C32(0xdbb779b6), SPH_C32(0x9f942d6b),
+	  SPH_C32(0xa372876e) },
+	{ SPH_C32(0x19e10000), SPH_C32(0x16ba0000), SPH_C32(0x8d720000),
+	  SPH_C32(0x48b101f1), SPH_C32(0xcc493b40), SPH_C32(0x37e51f93),
+	  SPH_C32(0xaa493ec3), SPH_C32(0x743c310d), SPH_C32(0xd08b0000),
+	  SPH_C32(0xb6070000), SPH_C32(0xdcbe0000), SPH_C32(0x747800a4),
+	  SPH_C32(0x89399230), SPH_C32(0xb0d91fa9), SPH_C32(0x9131e288),
+	  SPH_C32(0x45a8f890) },
+	{ SPH_C32(0x1adc0000), SPH_C32(0x1e090000), SPH_C32(0x7e480000),
+	  SPH_C32(0x727301f6), SPH_C32(0x9d60b110), SPH_C32(0x5c8b798c),
+	  SPH_C32(0xa4ecf120), SPH_C32(0x92e64ef3), SPH_C32(0x78510000),
+	  SPH_C32(0x20b90000), SPH_C32(0x80a30000), SPH_C32(0x73a200a6),
+	  SPH_C32(0xf45f07b3), SPH_C32(0xaf416f23), SPH_C32(0x2a576a80),
+	  SPH_C32(0x9f2f7890) },
+	{ SPH_C32(0xb0a80000), SPH_C32(0x67860000), SPH_C32(0x3c940000),
+	  SPH_C32(0x806701f8), SPH_C32(0x3cff239b), SPH_C32(0x94dedb37),
+	  SPH_C32(0x1719d72a), SPH_C32(0xfdd42f76), SPH_C32(0xe9440000),
+	  SPH_C32(0xf48f0000), SPH_C32(0x24630000), SPH_C32(0x1fbc00a2),
+	  SPH_C32(0x1f9faef5), SPH_C32(0x9ec0aa30), SPH_C32(0xb43c5231),
+	  SPH_C32(0x02e372b9) },
+	{ SPH_C32(0xb3950000), SPH_C32(0x6f350000), SPH_C32(0xcfae0000),
+	  SPH_C32(0xbaa501ff), SPH_C32(0x6dd6a9cb), SPH_C32(0xffb0bd28),
+	  SPH_C32(0x19bc18c9), SPH_C32(0x1b0e5088), SPH_C32(0x419e0000),
+	  SPH_C32(0x62310000), SPH_C32(0x787e0000), SPH_C32(0x186600a0),
+	  SPH_C32(0x62f93b76), SPH_C32(0x8158daba), SPH_C32(0x0f5ada39),
+	  SPH_C32(0xd864f2b9) },
+	{ SPH_C32(0x18720000), SPH_C32(0xf1380000), SPH_C32(0x60890000),
+	  SPH_C32(0x87bd01fa), SPH_C32(0x4199b618), SPH_C32(0x8b46abbd),
+	  SPH_C32(0xac7f5f22), SPH_C32(0x2753af76), SPH_C32(0x42a30000),
+	  SPH_C32(0x6a820000), SPH_C32(0x8b440000), SPH_C32(0x22a400a7),
+	  SPH_C32(0x33d0b126), SPH_C32(0xea36bca5), SPH_C32(0x01ff15da),
+	  SPH_C32(0x3ebe8d47) },
+	{ SPH_C32(0x1b4f0000), SPH_C32(0xf98b0000), SPH_C32(0x93b30000),
+	  SPH_C32(0xbd7f01fd), SPH_C32(0x10b03c48), SPH_C32(0xe028cda2),
+	  SPH_C32(0xa2da90c1), SPH_C32(0xc189d088), SPH_C32(0xea790000),
+	  SPH_C32(0xfc3c0000), SPH_C32(0xd7590000), SPH_C32(0x257e00a5),
+	  SPH_C32(0x4eb624a5), SPH_C32(0xf5aecc2f), SPH_C32(0xba999dd2),
+	  SPH_C32(0xe4390d47) },
+	{ SPH_C32(0x23130000), SPH_C32(0x5c810000), SPH_C32(0x86950000),
+	  SPH_C32(0x19b701f0), SPH_C32(0x0bc68dd5), SPH_C32(0x7292cc15),
+	  SPH_C32(0x81e14199), SPH_C32(0xd5adc4da), SPH_C32(0xe8d70000),
+	  SPH_C32(0x130d0000), SPH_C32(0xc9980000), SPH_C32(0xd0b000a9),
+	  SPH_C32(0x924f23ad), SPH_C32(0x22631e1e), SPH_C32(0xb20a33d0),
+	  SPH_C32(0x518cecc2) },
+	{ SPH_C32(0x202e0000), SPH_C32(0x54320000), SPH_C32(0x75af0000),
+	  SPH_C32(0x237501f7), SPH_C32(0x5aef0785), SPH_C32(0x19fcaa0a),
+	  SPH_C32(0x8f448e7a), SPH_C32(0x3377bb24), SPH_C32(0x400d0000),
+	  SPH_C32(0x85b30000), SPH_C32(0x95850000), SPH_C32(0xd76a00ab),
+	  SPH_C32(0xef29b62e), SPH_C32(0x3dfb6e94), SPH_C32(0x096cbbd8),
+	  SPH_C32(0x8b0b6cc2) },
+	{ SPH_C32(0x8bc90000), SPH_C32(0xca3f0000), SPH_C32(0xda880000),
+	  SPH_C32(0x1e6d01f2), SPH_C32(0x76a01856), SPH_C32(0x6d0abc9f),
+	  SPH_C32(0x3a87c991), SPH_C32(0x0f2a44da), SPH_C32(0x43300000),
+	  SPH_C32(0x8d000000), SPH_C32(0x66bf0000), SPH_C32(0xeda800ac),
+	  SPH_C32(0xbe003c7e), SPH_C32(0x5695088b), SPH_C32(0x07c9743b),
+	  SPH_C32(0x6dd1133c) },
+	{ SPH_C32(0x88f40000), SPH_C32(0xc28c0000), SPH_C32(0x29b20000),
+	  SPH_C32(0x24af01f5), SPH_C32(0x27899206), SPH_C32(0x0664da80),
+	  SPH_C32(0x34220672), SPH_C32(0xe9f03b24), SPH_C32(0xebea0000),
+	  SPH_C32(0x1bbe0000), SPH_C32(0x3aa20000), SPH_C32(0xea7200ae),
+	  SPH_C32(0xc366a9fd), SPH_C32(0x490d7801), SPH_C32(0xbcaffc33),
+	  SPH_C32(0xb756933c) },
+	{ SPH_C32(0x22800000), SPH_C32(0xbb030000), SPH_C32(0x6b6e0000),
+	  SPH_C32(0xd6bb01fb), SPH_C32(0x8616008d), SPH_C32(0xce31783b),
+	  SPH_C32(0x87d72078), SPH_C32(0x86c25aa1), SPH_C32(0x7aff0000),
+	  SPH_C32(0xcf880000), SPH_C32(0x9e620000), SPH_C32(0x866c00aa),
+	  SPH_C32(0x28a600bb), SPH_C32(0x788cbd12), SPH_C32(0x22c4c482),
+	  SPH_C32(0x2a9a9915) },
+	{ SPH_C32(0x21bd0000), SPH_C32(0xb3b00000), SPH_C32(0x98540000),
+	  SPH_C32(0xec7901fc), SPH_C32(0xd73f8add), SPH_C32(0xa55f1e24),
+	  SPH_C32(0x8972ef9b), SPH_C32(0x6018255f), SPH_C32(0xd2250000),
+	  SPH_C32(0x59360000), SPH_C32(0xc27f0000), SPH_C32(0x81b600a8),
+	  SPH_C32(0x55c09538), SPH_C32(0x6714cd98), SPH_C32(0x99a24c8a),
+	  SPH_C32(0xf01d1915) },
+	{ SPH_C32(0x8a5a0000), SPH_C32(0x2dbd0000), SPH_C32(0x37730000),
+	  SPH_C32(0xd16101f9), SPH_C32(0xfb70950e), SPH_C32(0xd1a908b1),
+	  SPH_C32(0x3cb1a870), SPH_C32(0x5c45daa1), SPH_C32(0xd1180000),
+	  SPH_C32(0x51850000), SPH_C32(0x31450000), SPH_C32(0xbb7400af),
+	  SPH_C32(0x04e91f68), SPH_C32(0x0c7aab87), SPH_C32(0x97078369),
+	  SPH_C32(0x16c766eb) },
+	{ SPH_C32(0x89670000), SPH_C32(0x250e0000), SPH_C32(0xc4490000),
+	  SPH_C32(0xeba301fe), SPH_C32(0xaa591f5e), SPH_C32(0xbac76eae),
+	  SPH_C32(0x32146793), SPH_C32(0xba9fa55f), SPH_C32(0x79c20000),
+	  SPH_C32(0xc73b0000), SPH_C32(0x6d580000), SPH_C32(0xbcae00ad),
+	  SPH_C32(0x798f8aeb), SPH_C32(0x13e2db0d), SPH_C32(0x2c610b61),
+	  SPH_C32(0xcc40e6eb) },
+	{ SPH_C32(0xeed70000), SPH_C32(0xa94f0000), SPH_C32(0x48bd0000),
+	  SPH_C32(0x01bb01e1), SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0),
+	  SPH_C32(0x463bbd14), SPH_C32(0x9e150dfa), SPH_C32(0x24c40000),
+	  SPH_C32(0x7e090000), SPH_C32(0x30370000), SPH_C32(0x2d9300b2),
+	  SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72), SPH_C32(0x70ec30dc),
+	  SPH_C32(0xf751dc07) },
+	{ SPH_C32(0xedea0000), SPH_C32(0xa1fc0000), SPH_C32(0xbb870000),
+	  SPH_C32(0x3b7901e6), SPH_C32(0xfed56be0), SPH_C32(0xf9b401cf),
+	  SPH_C32(0x489e72f7), SPH_C32(0x78cf7204), SPH_C32(0x8c1e0000),
+	  SPH_C32(0xe8b70000), SPH_C32(0x6c2a0000), SPH_C32(0x2a4900b0),
+	  SPH_C32(0xfd6e9edf), SPH_C32(0xc8a6edf8), SPH_C32(0xcb8ab8d4),
+	  SPH_C32(0x2dd65c07) },
+	{ SPH_C32(0x460d0000), SPH_C32(0x3ff10000), SPH_C32(0x14a00000),
+	  SPH_C32(0x066101e3), SPH_C32(0xd29a7433), SPH_C32(0x8d42175a),
+	  SPH_C32(0xfd5d351c), SPH_C32(0x44928dfa), SPH_C32(0x8f230000),
+	  SPH_C32(0xe0040000), SPH_C32(0x9f100000), SPH_C32(0x108b00b7),
+	  SPH_C32(0xac47148f), SPH_C32(0xa3c88be7), SPH_C32(0xc52f7737),
+	  SPH_C32(0xcb0c23f9) },
+	{ SPH_C32(0x45300000), SPH_C32(0x37420000), SPH_C32(0xe79a0000),
+	  SPH_C32(0x3ca301e4), SPH_C32(0x83b3fe63), SPH_C32(0xe62c7145),
+	  SPH_C32(0xf3f8faff), SPH_C32(0xa248f204), SPH_C32(0x27f90000),
+	  SPH_C32(0x76ba0000), SPH_C32(0xc30d0000), SPH_C32(0x175100b5),
+	  SPH_C32(0xd121810c), SPH_C32(0xbc50fb6d), SPH_C32(0x7e49ff3f),
+	  SPH_C32(0x118ba3f9) },
+	{ SPH_C32(0xef440000), SPH_C32(0x4ecd0000), SPH_C32(0xa5460000),
+	  SPH_C32(0xceb701ea), SPH_C32(0x222c6ce8), SPH_C32(0x2e79d3fe),
+	  SPH_C32(0x400ddcf5), SPH_C32(0xcd7a9381), SPH_C32(0xb6ec0000),
+	  SPH_C32(0xa28c0000), SPH_C32(0x67cd0000), SPH_C32(0x7b4f00b1),
+	  SPH_C32(0x3ae1284a), SPH_C32(0x8dd13e7e), SPH_C32(0xe022c78e),
+	  SPH_C32(0x8c47a9d0) },
+	{ SPH_C32(0xec790000), SPH_C32(0x467e0000), SPH_C32(0x567c0000),
+	  SPH_C32(0xf47501ed), SPH_C32(0x7305e6b8), SPH_C32(0x4517b5e1),
+	  SPH_C32(0x4ea81316), SPH_C32(0x2ba0ec7f), SPH_C32(0x1e360000),
+	  SPH_C32(0x34320000), SPH_C32(0x3bd00000), SPH_C32(0x7c9500b3),
+	  SPH_C32(0x4787bdc9), SPH_C32(0x92494ef4), SPH_C32(0x5b444f86),
+	  SPH_C32(0x56c029d0) },
+	{ SPH_C32(0x479e0000), SPH_C32(0xd8730000), SPH_C32(0xf95b0000),
+	  SPH_C32(0xc96d01e8), SPH_C32(0x5f4af96b), SPH_C32(0x31e1a374),
+	  SPH_C32(0xfb6b54fd), SPH_C32(0x17fd1381), SPH_C32(0x1d0b0000),
+	  SPH_C32(0x3c810000), SPH_C32(0xc8ea0000), SPH_C32(0x465700b4),
+	  SPH_C32(0x16ae3799), SPH_C32(0xf92728eb), SPH_C32(0x55e18065),
+	  SPH_C32(0xb01a562e) },
+	{ SPH_C32(0x44a30000), SPH_C32(0xd0c00000), SPH_C32(0x0a610000),
+	  SPH_C32(0xf3af01ef), SPH_C32(0x0e63733b), SPH_C32(0x5a8fc56b),
+	  SPH_C32(0xf5ce9b1e), SPH_C32(0xf1276c7f), SPH_C32(0xb5d10000),
+	  SPH_C32(0xaa3f0000), SPH_C32(0x94f70000), SPH_C32(0x418d00b6),
+	  SPH_C32(0x6bc8a21a), SPH_C32(0xe6bf5861), SPH_C32(0xee87086d),
+	  SPH_C32(0x6a9dd62e) },
+	{ SPH_C32(0x7cff0000), SPH_C32(0x75ca0000), SPH_C32(0x1f470000),
+	  SPH_C32(0x576701e2), SPH_C32(0x1515c2a6), SPH_C32(0xc835c4dc),
+	  SPH_C32(0xd6f54a46), SPH_C32(0xe503782d), SPH_C32(0xb77f0000),
+	  SPH_C32(0x450e0000), SPH_C32(0x8a360000), SPH_C32(0xb44300ba),
+	  SPH_C32(0xb731a512), SPH_C32(0x31728a50), SPH_C32(0xe614a66f),
+	  SPH_C32(0xdf2837ab) },
+	{ SPH_C32(0x7fc20000), SPH_C32(0x7d790000), SPH_C32(0xec7d0000),
+	  SPH_C32(0x6da501e5), SPH_C32(0x443c48f6), SPH_C32(0xa35ba2c3),
+	  SPH_C32(0xd85085a5), SPH_C32(0x03d907d3), SPH_C32(0x1fa50000),
+	  SPH_C32(0xd3b00000), SPH_C32(0xd62b0000), SPH_C32(0xb39900b8),
+	  SPH_C32(0xca573091), SPH_C32(0x2eeafada), SPH_C32(0x5d722e67),
+	  SPH_C32(0x05afb7ab) },
+	{ SPH_C32(0xd4250000), SPH_C32(0xe3740000), SPH_C32(0x435a0000),
+	  SPH_C32(0x50bd01e0), SPH_C32(0x68735725), SPH_C32(0xd7adb456),
+	  SPH_C32(0x6d93c24e), SPH_C32(0x3f84f82d), SPH_C32(0x1c980000),
+	  SPH_C32(0xdb030000), SPH_C32(0x25110000), SPH_C32(0x895b00bf),
+	  SPH_C32(0x9b7ebac1), SPH_C32(0x45849cc5), SPH_C32(0x53d7e184),
+	  SPH_C32(0xe375c855) },
+	{ SPH_C32(0xd7180000), SPH_C32(0xebc70000), SPH_C32(0xb0600000),
+	  SPH_C32(0x6a7f01e7), SPH_C32(0x395add75), SPH_C32(0xbcc3d249),
+	  SPH_C32(0x63360dad), SPH_C32(0xd95e87d3), SPH_C32(0xb4420000),
+	  SPH_C32(0x4dbd0000), SPH_C32(0x790c0000), SPH_C32(0x8e8100bd),
+	  SPH_C32(0xe6182f42), SPH_C32(0x5a1cec4f), SPH_C32(0xe8b1698c),
+	  SPH_C32(0x39f24855) },
+	{ SPH_C32(0x7d6c0000), SPH_C32(0x92480000), SPH_C32(0xf2bc0000),
+	  SPH_C32(0x986b01e9), SPH_C32(0x98c54ffe), SPH_C32(0x749670f2),
+	  SPH_C32(0xd0c32ba7), SPH_C32(0xb66ce656), SPH_C32(0x25570000),
+	  SPH_C32(0x998b0000), SPH_C32(0xddcc0000), SPH_C32(0xe29f00b9),
+	  SPH_C32(0x0dd88604), SPH_C32(0x6b9d295c), SPH_C32(0x76da513d),
+	  SPH_C32(0xa43e427c) },
+	{ SPH_C32(0x7e510000), SPH_C32(0x9afb0000), SPH_C32(0x01860000),
+	  SPH_C32(0xa2a901ee), SPH_C32(0xc9ecc5ae), SPH_C32(0x1ff816ed),
+	  SPH_C32(0xde66e444), SPH_C32(0x50b699a8), SPH_C32(0x8d8d0000),
+	  SPH_C32(0x0f350000), SPH_C32(0x81d10000), SPH_C32(0xe54500bb),
+	  SPH_C32(0x70be1387), SPH_C32(0x740559d6), SPH_C32(0xcdbcd935),
+	  SPH_C32(0x7eb9c27c) },
+	{ SPH_C32(0xd5b60000), SPH_C32(0x04f60000), SPH_C32(0xaea10000),
+	  SPH_C32(0x9fb101eb), SPH_C32(0xe5a3da7d), SPH_C32(0x6b0e0078),
+	  SPH_C32(0x6ba5a3af), SPH_C32(0x6ceb6656), SPH_C32(0x8eb00000),
+	  SPH_C32(0x07860000), SPH_C32(0x72eb0000), SPH_C32(0xdf8700bc),
+	  SPH_C32(0x219799d7), SPH_C32(0x1f6b3fc9), SPH_C32(0xc31916d6),
+	  SPH_C32(0x9863bd82) },
+	{ SPH_C32(0xd68b0000), SPH_C32(0x0c450000), SPH_C32(0x5d9b0000),
+	  SPH_C32(0xa57301ec), SPH_C32(0xb48a502d), SPH_C32(0x00606667),
+	  SPH_C32(0x65006c4c), SPH_C32(0x8a3119a8), SPH_C32(0x266a0000),
+	  SPH_C32(0x91380000), SPH_C32(0x2ef60000), SPH_C32(0xd85d00be),
+	  SPH_C32(0x5cf10c54), SPH_C32(0x00f34f43), SPH_C32(0x787f9ede),
+	  SPH_C32(0x42e43d82) },
+	{ SPH_C32(0xb17f0000), SPH_C32(0xff4c0000), SPH_C32(0x0b130000),
+	  SPH_C32(0x654801f2), SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e),
+	  SPH_C32(0x122528ab), SPH_C32(0x10b1d693), SPH_C32(0x24800000),
+	  SPH_C32(0x01410000), SPH_C32(0xea4b0000), SPH_C32(0x07b000b3),
+	  SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5), SPH_C32(0x73e6aebc),
+	  SPH_C32(0x495bbb99) },
+	{ SPH_C32(0xb2420000), SPH_C32(0xf7ff0000), SPH_C32(0xf8290000),
+	  SPH_C32(0x5f8a01f5), SPH_C32(0xdbabed5f), SPH_C32(0xeaa59581),
+	  SPH_C32(0x1c80e748), SPH_C32(0xf66ba96d), SPH_C32(0x8c5a0000),
+	  SPH_C32(0x97ff0000), SPH_C32(0xb6560000), SPH_C32(0x006a00b1),
+	  SPH_C32(0xc6c35713), SPH_C32(0x6110717f), SPH_C32(0xc88026b4),
+	  SPH_C32(0x93dc3b99) },
+	{ SPH_C32(0x19a50000), SPH_C32(0x69f20000), SPH_C32(0x570e0000),
+	  SPH_C32(0x629201f0), SPH_C32(0xf7e4f28c), SPH_C32(0x9e538314),
+	  SPH_C32(0xa943a0a3), SPH_C32(0xca365693), SPH_C32(0x8f670000),
+	  SPH_C32(0x9f4c0000), SPH_C32(0x456c0000), SPH_C32(0x3aa800b6),
+	  SPH_C32(0x97eadd43), SPH_C32(0x0a7e1760), SPH_C32(0xc625e957),
+	  SPH_C32(0x75064467) },
+	{ SPH_C32(0x1a980000), SPH_C32(0x61410000), SPH_C32(0xa4340000),
+	  SPH_C32(0x585001f7), SPH_C32(0xa6cd78dc), SPH_C32(0xf53de50b),
+	  SPH_C32(0xa7e66f40), SPH_C32(0x2cec296d), SPH_C32(0x27bd0000),
+	  SPH_C32(0x09f20000), SPH_C32(0x19710000), SPH_C32(0x3d7200b4),
+	  SPH_C32(0xea8c48c0), SPH_C32(0x15e667ea), SPH_C32(0x7d43615f),
+	  SPH_C32(0xaf81c467) },
+	{ SPH_C32(0xb0ec0000), SPH_C32(0x18ce0000), SPH_C32(0xe6e80000),
+	  SPH_C32(0xaa4401f9), SPH_C32(0x0752ea57), SPH_C32(0x3d6847b0),
+	  SPH_C32(0x1413494a), SPH_C32(0x43de48e8), SPH_C32(0xb6a80000),
+	  SPH_C32(0xddc40000), SPH_C32(0xbdb10000), SPH_C32(0x516c00b0),
+	  SPH_C32(0x014ce186), SPH_C32(0x2467a2f9), SPH_C32(0xe32859ee),
+	  SPH_C32(0x324dce4e) },
+	{ SPH_C32(0xb3d10000), SPH_C32(0x107d0000), SPH_C32(0x15d20000),
+	  SPH_C32(0x908601fe), SPH_C32(0x567b6007), SPH_C32(0x560621af),
+	  SPH_C32(0x1ab686a9), SPH_C32(0xa5043716), SPH_C32(0x1e720000),
+	  SPH_C32(0x4b7a0000), SPH_C32(0xe1ac0000), SPH_C32(0x56b600b2),
+	  SPH_C32(0x7c2a7405), SPH_C32(0x3bffd273), SPH_C32(0x584ed1e6),
+	  SPH_C32(0xe8ca4e4e) },
+	{ SPH_C32(0x18360000), SPH_C32(0x8e700000), SPH_C32(0xbaf50000),
+	  SPH_C32(0xad9e01fb), SPH_C32(0x7a347fd4), SPH_C32(0x22f0373a),
+	  SPH_C32(0xaf75c142), SPH_C32(0x9959c8e8), SPH_C32(0x1d4f0000),
+	  SPH_C32(0x43c90000), SPH_C32(0x12960000), SPH_C32(0x6c7400b5),
+	  SPH_C32(0x2d03fe55), SPH_C32(0x5091b46c), SPH_C32(0x56eb1e05),
+	  SPH_C32(0x0e1031b0) },
+	{ SPH_C32(0x1b0b0000), SPH_C32(0x86c30000), SPH_C32(0x49cf0000),
+	  SPH_C32(0x975c01fc), SPH_C32(0x2b1df584), SPH_C32(0x499e5125),
+	  SPH_C32(0xa1d00ea1), SPH_C32(0x7f83b716), SPH_C32(0xb5950000),
+	  SPH_C32(0xd5770000), SPH_C32(0x4e8b0000), SPH_C32(0x6bae00b7),
+	  SPH_C32(0x50656bd6), SPH_C32(0x4f09c4e6), SPH_C32(0xed8d960d),
+	  SPH_C32(0xd497b1b0) },
+	{ SPH_C32(0x23570000), SPH_C32(0x23c90000), SPH_C32(0x5ce90000),
+	  SPH_C32(0x339401f1), SPH_C32(0x306b4419), SPH_C32(0xdb245092),
+	  SPH_C32(0x82ebdff9), SPH_C32(0x6ba7a344), SPH_C32(0xb73b0000),
+	  SPH_C32(0x3a460000), SPH_C32(0x504a0000), SPH_C32(0x9e6000bb),
+	  SPH_C32(0x8c9c6cde), SPH_C32(0x98c416d7), SPH_C32(0xe51e380f),
+	  SPH_C32(0x61225035) },
+	{ SPH_C32(0x206a0000), SPH_C32(0x2b7a0000), SPH_C32(0xafd30000),
+	  SPH_C32(0x095601f6), SPH_C32(0x6142ce49), SPH_C32(0xb04a368d),
+	  SPH_C32(0x8c4e101a), SPH_C32(0x8d7ddcba), SPH_C32(0x1fe10000),
+	  SPH_C32(0xacf80000), SPH_C32(0x0c570000), SPH_C32(0x99ba00b9),
+	  SPH_C32(0xf1faf95d), SPH_C32(0x875c665d), SPH_C32(0x5e78b007),
+	  SPH_C32(0xbba5d035) },
+	{ SPH_C32(0x8b8d0000), SPH_C32(0xb5770000), SPH_C32(0x00f40000),
+	  SPH_C32(0x344e01f3), SPH_C32(0x4d0dd19a), SPH_C32(0xc4bc2018),
+	  SPH_C32(0x398d57f1), SPH_C32(0xb1202344), SPH_C32(0x1cdc0000),
+	  SPH_C32(0xa44b0000), SPH_C32(0xff6d0000), SPH_C32(0xa37800be),
+	  SPH_C32(0xa0d3730d), SPH_C32(0xec320042), SPH_C32(0x50dd7fe4),
+	  SPH_C32(0x5d7fafcb) },
+	{ SPH_C32(0x88b00000), SPH_C32(0xbdc40000), SPH_C32(0xf3ce0000),
+	  SPH_C32(0x0e8c01f4), SPH_C32(0x1c245bca), SPH_C32(0xafd24607),
+	  SPH_C32(0x37289812), SPH_C32(0x57fa5cba), SPH_C32(0xb4060000),
+	  SPH_C32(0x32f50000), SPH_C32(0xa3700000), SPH_C32(0xa4a200bc),
+	  SPH_C32(0xddb5e68e), SPH_C32(0xf3aa70c8), SPH_C32(0xebbbf7ec),
+	  SPH_C32(0x87f82fcb) },
+	{ SPH_C32(0x22c40000), SPH_C32(0xc44b0000), SPH_C32(0xb1120000),
+	  SPH_C32(0xfc9801fa), SPH_C32(0xbdbbc941), SPH_C32(0x6787e4bc),
+	  SPH_C32(0x84ddbe18), SPH_C32(0x38c83d3f), SPH_C32(0x25130000),
+	  SPH_C32(0xe6c30000), SPH_C32(0x07b00000), SPH_C32(0xc8bc00b8),
+	  SPH_C32(0x36754fc8), SPH_C32(0xc22bb5db), SPH_C32(0x75d0cf5d),
+	  SPH_C32(0x1a3425e2) },
+	{ SPH_C32(0x21f90000), SPH_C32(0xccf80000), SPH_C32(0x42280000),
+	  SPH_C32(0xc65a01fd), SPH_C32(0xec924311), SPH_C32(0x0ce982a3),
+	  SPH_C32(0x8a7871fb), SPH_C32(0xde1242c1), SPH_C32(0x8dc90000),
+	  SPH_C32(0x707d0000), SPH_C32(0x5bad0000), SPH_C32(0xcf6600ba),
+	  SPH_C32(0x4b13da4b), SPH_C32(0xddb3c551), SPH_C32(0xceb64755),
+	  SPH_C32(0xc0b3a5e2) },
+	{ SPH_C32(0x8a1e0000), SPH_C32(0x52f50000), SPH_C32(0xed0f0000),
+	  SPH_C32(0xfb4201f8), SPH_C32(0xc0dd5cc2), SPH_C32(0x781f9436),
+	  SPH_C32(0x3fbb3610), SPH_C32(0xe24fbd3f), SPH_C32(0x8ef40000),
+	  SPH_C32(0x78ce0000), SPH_C32(0xa8970000), SPH_C32(0xf5a400bd),
+	  SPH_C32(0x1a3a501b), SPH_C32(0xb6dda34e), SPH_C32(0xc01388b6),
+	  SPH_C32(0x2669da1c) },
+	{ SPH_C32(0x89230000), SPH_C32(0x5a460000), SPH_C32(0x1e350000),
+	  SPH_C32(0xc18001ff), SPH_C32(0x91f4d692), SPH_C32(0x1371f229),
+	  SPH_C32(0x311ef9f3), SPH_C32(0x0495c2c1), SPH_C32(0x262e0000),
+	  SPH_C32(0xee700000), SPH_C32(0xf48a0000), SPH_C32(0xf27e00bf),
+	  SPH_C32(0x675cc598), SPH_C32(0xa945d3c4), SPH_C32(0x7b7500be),
+	  SPH_C32(0xfcee5a1c) },
+	{ SPH_C32(0x7b280000), SPH_C32(0x57420000), SPH_C32(0xa9e50000),
+	  SPH_C32(0x634300a0), SPH_C32(0x9edb442f), SPH_C32(0x6d9995bb),
+	  SPH_C32(0x27f83b03), SPH_C32(0xc7ff60f0), SPH_C32(0x95bb0000),
+	  SPH_C32(0x81450000), SPH_C32(0x3b240000), SPH_C32(0x48db0140),
+	  SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec), SPH_C32(0x62c91877),
+	  SPH_C32(0xe7e00a94) },
+	{ SPH_C32(0x78150000), SPH_C32(0x5ff10000), SPH_C32(0x5adf0000),
+	  SPH_C32(0x598100a7), SPH_C32(0xcff2ce7f), SPH_C32(0x06f7f3a4),
+	  SPH_C32(0x295df4e0), SPH_C32(0x21251f0e), SPH_C32(0x3d610000),
+	  SPH_C32(0x17fb0000), SPH_C32(0x67390000), SPH_C32(0x4f010142),
+	  SPH_C32(0x77ecf9d0), SPH_C32(0x496d1e66), SPH_C32(0xd9af907f),
+	  SPH_C32(0x3d678a94) },
+	{ SPH_C32(0xd3f20000), SPH_C32(0xc1fc0000), SPH_C32(0xf5f80000),
+	  SPH_C32(0x649900a2), SPH_C32(0xe3bdd1ac), SPH_C32(0x7201e531),
+	  SPH_C32(0x9c9eb30b), SPH_C32(0x1d78e0f0), SPH_C32(0x3e5c0000),
+	  SPH_C32(0x1f480000), SPH_C32(0x94030000), SPH_C32(0x75c30145),
+	  SPH_C32(0x26c57380), SPH_C32(0x22037879), SPH_C32(0xd70a5f9c),
+	  SPH_C32(0xdbbdf56a) },
+	{ SPH_C32(0xd0cf0000), SPH_C32(0xc94f0000), SPH_C32(0x06c20000),
+	  SPH_C32(0x5e5b00a5), SPH_C32(0xb2945bfc), SPH_C32(0x196f832e),
+	  SPH_C32(0x923b7ce8), SPH_C32(0xfba29f0e), SPH_C32(0x96860000),
+	  SPH_C32(0x89f60000), SPH_C32(0xc81e0000), SPH_C32(0x72190147),
+	  SPH_C32(0x5ba3e603), SPH_C32(0x3d9b08f3), SPH_C32(0x6c6cd794),
+	  SPH_C32(0x013a756a) },
+	{ SPH_C32(0x7abb0000), SPH_C32(0xb0c00000), SPH_C32(0x441e0000),
+	  SPH_C32(0xac4f00ab), SPH_C32(0x130bc977), SPH_C32(0xd13a2195),
+	  SPH_C32(0x21ce5ae2), SPH_C32(0x9490fe8b), SPH_C32(0x07930000),
+	  SPH_C32(0x5dc00000), SPH_C32(0x6cde0000), SPH_C32(0x1e070143),
+	  SPH_C32(0xb0634f45), SPH_C32(0x0c1acde0), SPH_C32(0xf207ef25),
+	  SPH_C32(0x9cf67f43) },
+	{ SPH_C32(0x79860000), SPH_C32(0xb8730000), SPH_C32(0xb7240000),
+	  SPH_C32(0x968d00ac), SPH_C32(0x42224327), SPH_C32(0xba54478a),
+	  SPH_C32(0x2f6b9501), SPH_C32(0x724a8175), SPH_C32(0xaf490000),
+	  SPH_C32(0xcb7e0000), SPH_C32(0x30c30000), SPH_C32(0x19dd0141),
+	  SPH_C32(0xcd05dac6), SPH_C32(0x1382bd6a), SPH_C32(0x4961672d),
+	  SPH_C32(0x4671ff43) },
+	{ SPH_C32(0xd2610000), SPH_C32(0x267e0000), SPH_C32(0x18030000),
+	  SPH_C32(0xab9500a9), SPH_C32(0x6e6d5cf4), SPH_C32(0xcea2511f),
+	  SPH_C32(0x9aa8d2ea), SPH_C32(0x4e177e8b), SPH_C32(0xac740000),
+	  SPH_C32(0xc3cd0000), SPH_C32(0xc3f90000), SPH_C32(0x231f0146),
+	  SPH_C32(0x9c2c5096), SPH_C32(0x78ecdb75), SPH_C32(0x47c4a8ce),
+	  SPH_C32(0xa0ab80bd) },
+	{ SPH_C32(0xd15c0000), SPH_C32(0x2ecd0000), SPH_C32(0xeb390000),
+	  SPH_C32(0x915700ae), SPH_C32(0x3f44d6a4), SPH_C32(0xa5cc3700),
+	  SPH_C32(0x940d1d09), SPH_C32(0xa8cd0175), SPH_C32(0x04ae0000),
+	  SPH_C32(0x55730000), SPH_C32(0x9fe40000), SPH_C32(0x24c50144),
+	  SPH_C32(0xe14ac515), SPH_C32(0x6774abff), SPH_C32(0xfca220c6),
+	  SPH_C32(0x7a2c00bd) },
+	{ SPH_C32(0xe9000000), SPH_C32(0x8bc70000), SPH_C32(0xfe1f0000),
+	  SPH_C32(0x359f00a3), SPH_C32(0x24326739), SPH_C32(0x377636b7),
+	  SPH_C32(0xb736cc51), SPH_C32(0xbce91527), SPH_C32(0x06000000),
+	  SPH_C32(0xba420000), SPH_C32(0x81250000), SPH_C32(0xd10b0148),
+	  SPH_C32(0x3db3c21d), SPH_C32(0xb0b979ce), SPH_C32(0xf4318ec4),
+	  SPH_C32(0xcf99e138) },
+	{ SPH_C32(0xea3d0000), SPH_C32(0x83740000), SPH_C32(0x0d250000),
+	  SPH_C32(0x0f5d00a4), SPH_C32(0x751bed69), SPH_C32(0x5c1850a8),
+	  SPH_C32(0xb99303b2), SPH_C32(0x5a336ad9), SPH_C32(0xaeda0000),
+	  SPH_C32(0x2cfc0000), SPH_C32(0xdd380000), SPH_C32(0xd6d1014a),
+	  SPH_C32(0x40d5579e), SPH_C32(0xaf210944), SPH_C32(0x4f5706cc),
+	  SPH_C32(0x151e6138) },
+	{ SPH_C32(0x41da0000), SPH_C32(0x1d790000), SPH_C32(0xa2020000),
+	  SPH_C32(0x324500a1), SPH_C32(0x5954f2ba), SPH_C32(0x28ee463d),
+	  SPH_C32(0x0c504459), SPH_C32(0x666e9527), SPH_C32(0xade70000),
+	  SPH_C32(0x244f0000), SPH_C32(0x2e020000), SPH_C32(0xec13014d),
+	  SPH_C32(0x11fcddce), SPH_C32(0xc44f6f5b), SPH_C32(0x41f2c92f),
+	  SPH_C32(0xf3c41ec6) },
+	{ SPH_C32(0x42e70000), SPH_C32(0x15ca0000), SPH_C32(0x51380000),
+	  SPH_C32(0x088700a6), SPH_C32(0x087d78ea), SPH_C32(0x43802022),
+	  SPH_C32(0x02f58bba), SPH_C32(0x80b4ead9), SPH_C32(0x053d0000),
+	  SPH_C32(0xb2f10000), SPH_C32(0x721f0000), SPH_C32(0xebc9014f),
+	  SPH_C32(0x6c9a484d), SPH_C32(0xdbd71fd1), SPH_C32(0xfa944127),
+	  SPH_C32(0x29439ec6) },
+	{ SPH_C32(0xe8930000), SPH_C32(0x6c450000), SPH_C32(0x13e40000),
+	  SPH_C32(0xfa9300a8), SPH_C32(0xa9e2ea61), SPH_C32(0x8bd58299),
+	  SPH_C32(0xb100adb0), SPH_C32(0xef868b5c), SPH_C32(0x94280000),
+	  SPH_C32(0x66c70000), SPH_C32(0xd6df0000), SPH_C32(0x87d7014b),
+	  SPH_C32(0x875ae10b), SPH_C32(0xea56dac2), SPH_C32(0x64ff7996),
+	  SPH_C32(0xb48f94ef) },
+	{ SPH_C32(0xebae0000), SPH_C32(0x64f60000), SPH_C32(0xe0de0000),
+	  SPH_C32(0xc05100af), SPH_C32(0xf8cb6031), SPH_C32(0xe0bbe486),
+	  SPH_C32(0xbfa56253), SPH_C32(0x095cf4a2), SPH_C32(0x3cf20000),
+	  SPH_C32(0xf0790000), SPH_C32(0x8ac20000), SPH_C32(0x800d0149),
+	  SPH_C32(0xfa3c7488), SPH_C32(0xf5ceaa48), SPH_C32(0xdf99f19e),
+	  SPH_C32(0x6e0814ef) },
+	{ SPH_C32(0x40490000), SPH_C32(0xfafb0000), SPH_C32(0x4ff90000),
+	  SPH_C32(0xfd4900aa), SPH_C32(0xd4847fe2), SPH_C32(0x944df213),
+	  SPH_C32(0x0a6625b8), SPH_C32(0x35010b5c), SPH_C32(0x3fcf0000),
+	  SPH_C32(0xf8ca0000), SPH_C32(0x79f80000), SPH_C32(0xbacf014e),
+	  SPH_C32(0xab15fed8), SPH_C32(0x9ea0cc57), SPH_C32(0xd13c3e7d),
+	  SPH_C32(0x88d26b11) },
+	{ SPH_C32(0x43740000), SPH_C32(0xf2480000), SPH_C32(0xbcc30000),
+	  SPH_C32(0xc78b00ad), SPH_C32(0x85adf5b2), SPH_C32(0xff23940c),
+	  SPH_C32(0x04c3ea5b), SPH_C32(0xd3db74a2), SPH_C32(0x97150000),
+	  SPH_C32(0x6e740000), SPH_C32(0x25e50000), SPH_C32(0xbd15014c),
+	  SPH_C32(0xd6736b5b), SPH_C32(0x8138bcdd), SPH_C32(0x6a5ab675),
+	  SPH_C32(0x5255eb11) },
+	{ SPH_C32(0x24800000), SPH_C32(0x01410000), SPH_C32(0xea4b0000),
+	  SPH_C32(0x07b000b3), SPH_C32(0xbba5c290), SPH_C32(0x7e8801f5),
+	  SPH_C32(0x73e6aebc), SPH_C32(0x495bbb99), SPH_C32(0x95ff0000),
+	  SPH_C32(0xfe0d0000), SPH_C32(0xe1580000), SPH_C32(0x62f80141),
+	  SPH_C32(0x3127a59f), SPH_C32(0xff43f26b), SPH_C32(0x61c38617),
+	  SPH_C32(0x59ea6d0a) },
+	{ SPH_C32(0x27bd0000), SPH_C32(0x09f20000), SPH_C32(0x19710000),
+	  SPH_C32(0x3d7200b4), SPH_C32(0xea8c48c0), SPH_C32(0x15e667ea),
+	  SPH_C32(0x7d43615f), SPH_C32(0xaf81c467), SPH_C32(0x3d250000),
+	  SPH_C32(0x68b30000), SPH_C32(0xbd450000), SPH_C32(0x65220143),
+	  SPH_C32(0x4c41301c), SPH_C32(0xe0db82e1), SPH_C32(0xdaa50e1f),
+	  SPH_C32(0x836ded0a) },
+	{ SPH_C32(0x8c5a0000), SPH_C32(0x97ff0000), SPH_C32(0xb6560000),
+	  SPH_C32(0x006a00b1), SPH_C32(0xc6c35713), SPH_C32(0x6110717f),
+	  SPH_C32(0xc88026b4), SPH_C32(0x93dc3b99), SPH_C32(0x3e180000),
+	  SPH_C32(0x60000000), SPH_C32(0x4e7f0000), SPH_C32(0x5fe00144),
+	  SPH_C32(0x1d68ba4c), SPH_C32(0x8bb5e4fe), SPH_C32(0xd400c1fc),
+	  SPH_C32(0x65b792f4) },
+	{ SPH_C32(0x8f670000), SPH_C32(0x9f4c0000), SPH_C32(0x456c0000),
+	  SPH_C32(0x3aa800b6), SPH_C32(0x97eadd43), SPH_C32(0x0a7e1760),
+	  SPH_C32(0xc625e957), SPH_C32(0x75064467), SPH_C32(0x96c20000),
+	  SPH_C32(0xf6be0000), SPH_C32(0x12620000), SPH_C32(0x583a0146),
+	  SPH_C32(0x600e2fcf), SPH_C32(0x942d9474), SPH_C32(0x6f6649f4),
+	  SPH_C32(0xbf3012f4) },
+	{ SPH_C32(0x25130000), SPH_C32(0xe6c30000), SPH_C32(0x07b00000),
+	  SPH_C32(0xc8bc00b8), SPH_C32(0x36754fc8), SPH_C32(0xc22bb5db),
+	  SPH_C32(0x75d0cf5d), SPH_C32(0x1a3425e2), SPH_C32(0x07d70000),
+	  SPH_C32(0x22880000), SPH_C32(0xb6a20000), SPH_C32(0x34240142),
+	  SPH_C32(0x8bce8689), SPH_C32(0xa5ac5167), SPH_C32(0xf10d7145),
+	  SPH_C32(0x22fc18dd) },
+	{ SPH_C32(0x262e0000), SPH_C32(0xee700000), SPH_C32(0xf48a0000),
+	  SPH_C32(0xf27e00bf), SPH_C32(0x675cc598), SPH_C32(0xa945d3c4),
+	  SPH_C32(0x7b7500be), SPH_C32(0xfcee5a1c), SPH_C32(0xaf0d0000),
+	  SPH_C32(0xb4360000), SPH_C32(0xeabf0000), SPH_C32(0x33fe0140),
+	  SPH_C32(0xf6a8130a), SPH_C32(0xba3421ed), SPH_C32(0x4a6bf94d),
+	  SPH_C32(0xf87b98dd) },
+	{ SPH_C32(0x8dc90000), SPH_C32(0x707d0000), SPH_C32(0x5bad0000),
+	  SPH_C32(0xcf6600ba), SPH_C32(0x4b13da4b), SPH_C32(0xddb3c551),
+	  SPH_C32(0xceb64755), SPH_C32(0xc0b3a5e2), SPH_C32(0xac300000),
+	  SPH_C32(0xbc850000), SPH_C32(0x19850000), SPH_C32(0x093c0147),
+	  SPH_C32(0xa781995a), SPH_C32(0xd15a47f2), SPH_C32(0x44ce36ae),
+	  SPH_C32(0x1ea1e723) },
+	{ SPH_C32(0x8ef40000), SPH_C32(0x78ce0000), SPH_C32(0xa8970000),
+	  SPH_C32(0xf5a400bd), SPH_C32(0x1a3a501b), SPH_C32(0xb6dda34e),
+	  SPH_C32(0xc01388b6), SPH_C32(0x2669da1c), SPH_C32(0x04ea0000),
+	  SPH_C32(0x2a3b0000), SPH_C32(0x45980000), SPH_C32(0x0ee60145),
+	  SPH_C32(0xdae70cd9), SPH_C32(0xcec23778), SPH_C32(0xffa8bea6),
+	  SPH_C32(0xc4266723) },
+	{ SPH_C32(0xb6a80000), SPH_C32(0xddc40000), SPH_C32(0xbdb10000),
+	  SPH_C32(0x516c00b0), SPH_C32(0x014ce186), SPH_C32(0x2467a2f9),
+	  SPH_C32(0xe32859ee), SPH_C32(0x324dce4e), SPH_C32(0x06440000),
+	  SPH_C32(0xc50a0000), SPH_C32(0x5b590000), SPH_C32(0xfb280149),
+	  SPH_C32(0x061e0bd1), SPH_C32(0x190fe549), SPH_C32(0xf73b10a4),
+	  SPH_C32(0x719386a6) },
+	{ SPH_C32(0xb5950000), SPH_C32(0xd5770000), SPH_C32(0x4e8b0000),
+	  SPH_C32(0x6bae00b7), SPH_C32(0x50656bd6), SPH_C32(0x4f09c4e6),
+	  SPH_C32(0xed8d960d), SPH_C32(0xd497b1b0), SPH_C32(0xae9e0000),
+	  SPH_C32(0x53b40000), SPH_C32(0x07440000), SPH_C32(0xfcf2014b),
+	  SPH_C32(0x7b789e52), SPH_C32(0x069795c3), SPH_C32(0x4c5d98ac),
+	  SPH_C32(0xab1406a6) },
+	{ SPH_C32(0x1e720000), SPH_C32(0x4b7a0000), SPH_C32(0xe1ac0000),
+	  SPH_C32(0x56b600b2), SPH_C32(0x7c2a7405), SPH_C32(0x3bffd273),
+	  SPH_C32(0x584ed1e6), SPH_C32(0xe8ca4e4e), SPH_C32(0xada30000),
+	  SPH_C32(0x5b070000), SPH_C32(0xf47e0000), SPH_C32(0xc630014c),
+	  SPH_C32(0x2a511402), SPH_C32(0x6df9f3dc), SPH_C32(0x42f8574f),
+	  SPH_C32(0x4dce7958) },
+	{ SPH_C32(0x1d4f0000), SPH_C32(0x43c90000), SPH_C32(0x12960000),
+	  SPH_C32(0x6c7400b5), SPH_C32(0x2d03fe55), SPH_C32(0x5091b46c),
+	  SPH_C32(0x56eb1e05), SPH_C32(0x0e1031b0), SPH_C32(0x05790000),
+	  SPH_C32(0xcdb90000), SPH_C32(0xa8630000), SPH_C32(0xc1ea014e),
+	  SPH_C32(0x57378181), SPH_C32(0x72618356), SPH_C32(0xf99edf47),
+	  SPH_C32(0x9749f958) },
+	{ SPH_C32(0xb73b0000), SPH_C32(0x3a460000), SPH_C32(0x504a0000),
+	  SPH_C32(0x9e6000bb), SPH_C32(0x8c9c6cde), SPH_C32(0x98c416d7),
+	  SPH_C32(0xe51e380f), SPH_C32(0x61225035), SPH_C32(0x946c0000),
+	  SPH_C32(0x198f0000), SPH_C32(0x0ca30000), SPH_C32(0xadf4014a),
+	  SPH_C32(0xbcf728c7), SPH_C32(0x43e04645), SPH_C32(0x67f5e7f6),
+	  SPH_C32(0x0a85f371) },
+	{ SPH_C32(0xb4060000), SPH_C32(0x32f50000), SPH_C32(0xa3700000),
+	  SPH_C32(0xa4a200bc), SPH_C32(0xddb5e68e), SPH_C32(0xf3aa70c8),
+	  SPH_C32(0xebbbf7ec), SPH_C32(0x87f82fcb), SPH_C32(0x3cb60000),
+	  SPH_C32(0x8f310000), SPH_C32(0x50be0000), SPH_C32(0xaa2e0148),
+	  SPH_C32(0xc191bd44), SPH_C32(0x5c7836cf), SPH_C32(0xdc936ffe),
+	  SPH_C32(0xd0027371) },
+	{ SPH_C32(0x1fe10000), SPH_C32(0xacf80000), SPH_C32(0x0c570000),
+	  SPH_C32(0x99ba00b9), SPH_C32(0xf1faf95d), SPH_C32(0x875c665d),
+	  SPH_C32(0x5e78b007), SPH_C32(0xbba5d035), SPH_C32(0x3f8b0000),
+	  SPH_C32(0x87820000), SPH_C32(0xa3840000), SPH_C32(0x90ec014f),
+	  SPH_C32(0x90b83714), SPH_C32(0x371650d0), SPH_C32(0xd236a01d),
+	  SPH_C32(0x36d80c8f) },
+	{ SPH_C32(0x1cdc0000), SPH_C32(0xa44b0000), SPH_C32(0xff6d0000),
+	  SPH_C32(0xa37800be), SPH_C32(0xa0d3730d), SPH_C32(0xec320042),
+	  SPH_C32(0x50dd7fe4), SPH_C32(0x5d7fafcb), SPH_C32(0x97510000),
+	  SPH_C32(0x113c0000), SPH_C32(0xff990000), SPH_C32(0x9736014d),
+	  SPH_C32(0xeddea297), SPH_C32(0x288e205a), SPH_C32(0x69502815),
+	  SPH_C32(0xec5f8c8f) },
+	{ SPH_C32(0x7b6c0000), SPH_C32(0x280a0000), SPH_C32(0x73990000),
+	  SPH_C32(0x496000a1), SPH_C32(0xa5768de3), SPH_C32(0xc42f093c),
+	  SPH_C32(0x24f2a563), SPH_C32(0x79f5076e), SPH_C32(0xca570000),
+	  SPH_C32(0xa80e0000), SPH_C32(0xa2f60000), SPH_C32(0x060b0152),
+	  SPH_C32(0x14592320), SPH_C32(0xec526625), SPH_C32(0x35dd13a8),
+	  SPH_C32(0xd74eb663) },
+	{ SPH_C32(0x78510000), SPH_C32(0x20b90000), SPH_C32(0x80a30000),
+	  SPH_C32(0x73a200a6), SPH_C32(0xf45f07b3), SPH_C32(0xaf416f23),
+	  SPH_C32(0x2a576a80), SPH_C32(0x9f2f7890), SPH_C32(0x628d0000),
+	  SPH_C32(0x3eb00000), SPH_C32(0xfeeb0000), SPH_C32(0x01d10150),
+	  SPH_C32(0x693fb6a3), SPH_C32(0xf3ca16af), SPH_C32(0x8ebb9ba0),
+	  SPH_C32(0x0dc93663) },
+	{ SPH_C32(0xd3b60000), SPH_C32(0xbeb40000), SPH_C32(0x2f840000),
+	  SPH_C32(0x4eba00a3), SPH_C32(0xd8101860), SPH_C32(0xdbb779b6),
+	  SPH_C32(0x9f942d6b), SPH_C32(0xa372876e), SPH_C32(0x61b00000),
+	  SPH_C32(0x36030000), SPH_C32(0x0dd10000), SPH_C32(0x3b130157),
+	  SPH_C32(0x38163cf3), SPH_C32(0x98a470b0), SPH_C32(0x801e5443),
+	  SPH_C32(0xeb13499d) },
+	{ SPH_C32(0xd08b0000), SPH_C32(0xb6070000), SPH_C32(0xdcbe0000),
+	  SPH_C32(0x747800a4), SPH_C32(0x89399230), SPH_C32(0xb0d91fa9),
+	  SPH_C32(0x9131e288), SPH_C32(0x45a8f890), SPH_C32(0xc96a0000),
+	  SPH_C32(0xa0bd0000), SPH_C32(0x51cc0000), SPH_C32(0x3cc90155),
+	  SPH_C32(0x4570a970), SPH_C32(0x873c003a), SPH_C32(0x3b78dc4b),
+	  SPH_C32(0x3194c99d) },
+	{ SPH_C32(0x7aff0000), SPH_C32(0xcf880000), SPH_C32(0x9e620000),
+	  SPH_C32(0x866c00aa), SPH_C32(0x28a600bb), SPH_C32(0x788cbd12),
+	  SPH_C32(0x22c4c482), SPH_C32(0x2a9a9915), SPH_C32(0x587f0000),
+	  SPH_C32(0x748b0000), SPH_C32(0xf50c0000), SPH_C32(0x50d70151),
+	  SPH_C32(0xaeb00036), SPH_C32(0xb6bdc529), SPH_C32(0xa513e4fa),
+	  SPH_C32(0xac58c3b4) },
+	{ SPH_C32(0x79c20000), SPH_C32(0xc73b0000), SPH_C32(0x6d580000),
+	  SPH_C32(0xbcae00ad), SPH_C32(0x798f8aeb), SPH_C32(0x13e2db0d),
+	  SPH_C32(0x2c610b61), SPH_C32(0xcc40e6eb), SPH_C32(0xf0a50000),
+	  SPH_C32(0xe2350000), SPH_C32(0xa9110000), SPH_C32(0x570d0153),
+	  SPH_C32(0xd3d695b5), SPH_C32(0xa925b5a3), SPH_C32(0x1e756cf2),
+	  SPH_C32(0x76df43b4) },
+	{ SPH_C32(0xd2250000), SPH_C32(0x59360000), SPH_C32(0xc27f0000),
+	  SPH_C32(0x81b600a8), SPH_C32(0x55c09538), SPH_C32(0x6714cd98),
+	  SPH_C32(0x99a24c8a), SPH_C32(0xf01d1915), SPH_C32(0xf3980000),
+	  SPH_C32(0xea860000), SPH_C32(0x5a2b0000), SPH_C32(0x6dcf0154),
+	  SPH_C32(0x82ff1fe5), SPH_C32(0xc24bd3bc), SPH_C32(0x10d0a311),
+	  SPH_C32(0x90053c4a) },
+	{ SPH_C32(0xd1180000), SPH_C32(0x51850000), SPH_C32(0x31450000),
+	  SPH_C32(0xbb7400af), SPH_C32(0x04e91f68), SPH_C32(0x0c7aab87),
+	  SPH_C32(0x97078369), SPH_C32(0x16c766eb), SPH_C32(0x5b420000),
+	  SPH_C32(0x7c380000), SPH_C32(0x06360000), SPH_C32(0x6a150156),
+	  SPH_C32(0xff998a66), SPH_C32(0xddd3a336), SPH_C32(0xabb62b19),
+	  SPH_C32(0x4a82bc4a) },
+	{ SPH_C32(0xe9440000), SPH_C32(0xf48f0000), SPH_C32(0x24630000),
+	  SPH_C32(0x1fbc00a2), SPH_C32(0x1f9faef5), SPH_C32(0x9ec0aa30),
+	  SPH_C32(0xb43c5231), SPH_C32(0x02e372b9), SPH_C32(0x59ec0000),
+	  SPH_C32(0x93090000), SPH_C32(0x18f70000), SPH_C32(0x9fdb015a),
+	  SPH_C32(0x23608d6e), SPH_C32(0x0a1e7107), SPH_C32(0xa325851b),
+	  SPH_C32(0xff375dcf) },
+	{ SPH_C32(0xea790000), SPH_C32(0xfc3c0000), SPH_C32(0xd7590000),
+	  SPH_C32(0x257e00a5), SPH_C32(0x4eb624a5), SPH_C32(0xf5aecc2f),
+	  SPH_C32(0xba999dd2), SPH_C32(0xe4390d47), SPH_C32(0xf1360000),
+	  SPH_C32(0x05b70000), SPH_C32(0x44ea0000), SPH_C32(0x98010158),
+	  SPH_C32(0x5e0618ed), SPH_C32(0x1586018d), SPH_C32(0x18430d13),
+	  SPH_C32(0x25b0ddcf) },
+	{ SPH_C32(0x419e0000), SPH_C32(0x62310000), SPH_C32(0x787e0000),
+	  SPH_C32(0x186600a0), SPH_C32(0x62f93b76), SPH_C32(0x8158daba),
+	  SPH_C32(0x0f5ada39), SPH_C32(0xd864f2b9), SPH_C32(0xf20b0000),
+	  SPH_C32(0x0d040000), SPH_C32(0xb7d00000), SPH_C32(0xa2c3015f),
+	  SPH_C32(0x0f2f92bd), SPH_C32(0x7ee86792), SPH_C32(0x16e6c2f0),
+	  SPH_C32(0xc36aa231) },
+	{ SPH_C32(0x42a30000), SPH_C32(0x6a820000), SPH_C32(0x8b440000),
+	  SPH_C32(0x22a400a7), SPH_C32(0x33d0b126), SPH_C32(0xea36bca5),
+	  SPH_C32(0x01ff15da), SPH_C32(0x3ebe8d47), SPH_C32(0x5ad10000),
+	  SPH_C32(0x9bba0000), SPH_C32(0xebcd0000), SPH_C32(0xa519015d),
+	  SPH_C32(0x7249073e), SPH_C32(0x61701718), SPH_C32(0xad804af8),
+	  SPH_C32(0x19ed2231) },
+	{ SPH_C32(0xe8d70000), SPH_C32(0x130d0000), SPH_C32(0xc9980000),
+	  SPH_C32(0xd0b000a9), SPH_C32(0x924f23ad), SPH_C32(0x22631e1e),
+	  SPH_C32(0xb20a33d0), SPH_C32(0x518cecc2), SPH_C32(0xcbc40000),
+	  SPH_C32(0x4f8c0000), SPH_C32(0x4f0d0000), SPH_C32(0xc9070159),
+	  SPH_C32(0x9989ae78), SPH_C32(0x50f1d20b), SPH_C32(0x33eb7249),
+	  SPH_C32(0x84212818) },
+	{ SPH_C32(0xebea0000), SPH_C32(0x1bbe0000), SPH_C32(0x3aa20000),
+	  SPH_C32(0xea7200ae), SPH_C32(0xc366a9fd), SPH_C32(0x490d7801),
+	  SPH_C32(0xbcaffc33), SPH_C32(0xb756933c), SPH_C32(0x631e0000),
+	  SPH_C32(0xd9320000), SPH_C32(0x13100000), SPH_C32(0xcedd015b),
+	  SPH_C32(0xe4ef3bfb), SPH_C32(0x4f69a281), SPH_C32(0x888dfa41),
+	  SPH_C32(0x5ea6a818) },
+	{ SPH_C32(0x400d0000), SPH_C32(0x85b30000), SPH_C32(0x95850000),
+	  SPH_C32(0xd76a00ab), SPH_C32(0xef29b62e), SPH_C32(0x3dfb6e94),
+	  SPH_C32(0x096cbbd8), SPH_C32(0x8b0b6cc2), SPH_C32(0x60230000),
+	  SPH_C32(0xd1810000), SPH_C32(0xe02a0000), SPH_C32(0xf41f015c),
+	  SPH_C32(0xb5c6b1ab), SPH_C32(0x2407c49e), SPH_C32(0x862835a2),
+	  SPH_C32(0xb87cd7e6) },
+	{ SPH_C32(0x43300000), SPH_C32(0x8d000000), SPH_C32(0x66bf0000),
+	  SPH_C32(0xeda800ac), SPH_C32(0xbe003c7e), SPH_C32(0x5695088b),
+	  SPH_C32(0x07c9743b), SPH_C32(0x6dd1133c), SPH_C32(0xc8f90000),
+	  SPH_C32(0x473f0000), SPH_C32(0xbc370000), SPH_C32(0xf3c5015e),
+	  SPH_C32(0xc8a02428), SPH_C32(0x3b9fb414), SPH_C32(0x3d4ebdaa),
+	  SPH_C32(0x62fb57e6) },
+	{ SPH_C32(0x24c40000), SPH_C32(0x7e090000), SPH_C32(0x30370000),
+	  SPH_C32(0x2d9300b2), SPH_C32(0x80080b5c), SPH_C32(0xd73e9d72),
+	  SPH_C32(0x70ec30dc), SPH_C32(0xf751dc07), SPH_C32(0xca130000),
+	  SPH_C32(0xd7460000), SPH_C32(0x788a0000), SPH_C32(0x2c280153),
+	  SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2), SPH_C32(0x36d78dc8),
+	  SPH_C32(0x6944d1fd) },
+	{ SPH_C32(0x27f90000), SPH_C32(0x76ba0000), SPH_C32(0xc30d0000),
+	  SPH_C32(0x175100b5), SPH_C32(0xd121810c), SPH_C32(0xbc50fb6d),
+	  SPH_C32(0x7e49ff3f), SPH_C32(0x118ba3f9), SPH_C32(0x62c90000),
+	  SPH_C32(0x41f80000), SPH_C32(0x24970000), SPH_C32(0x2bf20151),
+	  SPH_C32(0x52927f6f), SPH_C32(0x5a7c8a28), SPH_C32(0x8db105c0),
+	  SPH_C32(0xb3c351fd) },
+	{ SPH_C32(0x8c1e0000), SPH_C32(0xe8b70000), SPH_C32(0x6c2a0000),
+	  SPH_C32(0x2a4900b0), SPH_C32(0xfd6e9edf), SPH_C32(0xc8a6edf8),
+	  SPH_C32(0xcb8ab8d4), SPH_C32(0x2dd65c07), SPH_C32(0x61f40000),
+	  SPH_C32(0x494b0000), SPH_C32(0xd7ad0000), SPH_C32(0x11300156),
+	  SPH_C32(0x03bbf53f), SPH_C32(0x3112ec37), SPH_C32(0x8314ca23),
+	  SPH_C32(0x55192e03) },
+	{ SPH_C32(0x8f230000), SPH_C32(0xe0040000), SPH_C32(0x9f100000),
+	  SPH_C32(0x108b00b7), SPH_C32(0xac47148f), SPH_C32(0xa3c88be7),
+	  SPH_C32(0xc52f7737), SPH_C32(0xcb0c23f9), SPH_C32(0xc92e0000),
+	  SPH_C32(0xdff50000), SPH_C32(0x8bb00000), SPH_C32(0x16ea0154),
+	  SPH_C32(0x7edd60bc), SPH_C32(0x2e8a9cbd), SPH_C32(0x3872422b),
+	  SPH_C32(0x8f9eae03) },
+	{ SPH_C32(0x25570000), SPH_C32(0x998b0000), SPH_C32(0xddcc0000),
+	  SPH_C32(0xe29f00b9), SPH_C32(0x0dd88604), SPH_C32(0x6b9d295c),
+	  SPH_C32(0x76da513d), SPH_C32(0xa43e427c), SPH_C32(0x583b0000),
+	  SPH_C32(0x0bc30000), SPH_C32(0x2f700000), SPH_C32(0x7af40150),
+	  SPH_C32(0x951dc9fa), SPH_C32(0x1f0b59ae), SPH_C32(0xa6197a9a),
+	  SPH_C32(0x1252a42a) },
+	{ SPH_C32(0x266a0000), SPH_C32(0x91380000), SPH_C32(0x2ef60000),
+	  SPH_C32(0xd85d00be), SPH_C32(0x5cf10c54), SPH_C32(0x00f34f43),
+	  SPH_C32(0x787f9ede), SPH_C32(0x42e43d82), SPH_C32(0xf0e10000),
+	  SPH_C32(0x9d7d0000), SPH_C32(0x736d0000), SPH_C32(0x7d2e0152),
+	  SPH_C32(0xe87b5c79), SPH_C32(0x00932924), SPH_C32(0x1d7ff292),
+	  SPH_C32(0xc8d5242a) },
+	{ SPH_C32(0x8d8d0000), SPH_C32(0x0f350000), SPH_C32(0x81d10000),
+	  SPH_C32(0xe54500bb), SPH_C32(0x70be1387), SPH_C32(0x740559d6),
+	  SPH_C32(0xcdbcd935), SPH_C32(0x7eb9c27c), SPH_C32(0xf3dc0000),
+	  SPH_C32(0x95ce0000), SPH_C32(0x80570000), SPH_C32(0x47ec0155),
+	  SPH_C32(0xb952d629), SPH_C32(0x6bfd4f3b), SPH_C32(0x13da3d71),
+	  SPH_C32(0x2e0f5bd4) },
+	{ SPH_C32(0x8eb00000), SPH_C32(0x07860000), SPH_C32(0x72eb0000),
+	  SPH_C32(0xdf8700bc), SPH_C32(0x219799d7), SPH_C32(0x1f6b3fc9),
+	  SPH_C32(0xc31916d6), SPH_C32(0x9863bd82), SPH_C32(0x5b060000),
+	  SPH_C32(0x03700000), SPH_C32(0xdc4a0000), SPH_C32(0x40360157),
+	  SPH_C32(0xc43443aa), SPH_C32(0x74653fb1), SPH_C32(0xa8bcb579),
+	  SPH_C32(0xf488dbd4) },
+	{ SPH_C32(0xb6ec0000), SPH_C32(0xa28c0000), SPH_C32(0x67cd0000),
+	  SPH_C32(0x7b4f00b1), SPH_C32(0x3ae1284a), SPH_C32(0x8dd13e7e),
+	  SPH_C32(0xe022c78e), SPH_C32(0x8c47a9d0), SPH_C32(0x59a80000),
+	  SPH_C32(0xec410000), SPH_C32(0xc28b0000), SPH_C32(0xb5f8015b),
+	  SPH_C32(0x18cd44a2), SPH_C32(0xa3a8ed80), SPH_C32(0xa02f1b7b),
+	  SPH_C32(0x413d3a51) },
+	{ SPH_C32(0xb5d10000), SPH_C32(0xaa3f0000), SPH_C32(0x94f70000),
+	  SPH_C32(0x418d00b6), SPH_C32(0x6bc8a21a), SPH_C32(0xe6bf5861),
+	  SPH_C32(0xee87086d), SPH_C32(0x6a9dd62e), SPH_C32(0xf1720000),
+	  SPH_C32(0x7aff0000), SPH_C32(0x9e960000), SPH_C32(0xb2220159),
+	  SPH_C32(0x65abd121), SPH_C32(0xbc309d0a), SPH_C32(0x1b499373),
+	  SPH_C32(0x9bbaba51) },
+	{ SPH_C32(0x1e360000), SPH_C32(0x34320000), SPH_C32(0x3bd00000),
+	  SPH_C32(0x7c9500b3), SPH_C32(0x4787bdc9), SPH_C32(0x92494ef4),
+	  SPH_C32(0x5b444f86), SPH_C32(0x56c029d0), SPH_C32(0xf24f0000),
+	  SPH_C32(0x724c0000), SPH_C32(0x6dac0000), SPH_C32(0x88e0015e),
+	  SPH_C32(0x34825b71), SPH_C32(0xd75efb15), SPH_C32(0x15ec5c90),
+	  SPH_C32(0x7d60c5af) },
+	{ SPH_C32(0x1d0b0000), SPH_C32(0x3c810000), SPH_C32(0xc8ea0000),
+	  SPH_C32(0x465700b4), SPH_C32(0x16ae3799), SPH_C32(0xf92728eb),
+	  SPH_C32(0x55e18065), SPH_C32(0xb01a562e), SPH_C32(0x5a950000),
+	  SPH_C32(0xe4f20000), SPH_C32(0x31b10000), SPH_C32(0x8f3a015c),
+	  SPH_C32(0x49e4cef2), SPH_C32(0xc8c68b9f), SPH_C32(0xae8ad498),
+	  SPH_C32(0xa7e745af) },
+	{ SPH_C32(0xb77f0000), SPH_C32(0x450e0000), SPH_C32(0x8a360000),
+	  SPH_C32(0xb44300ba), SPH_C32(0xb731a512), SPH_C32(0x31728a50),
+	  SPH_C32(0xe614a66f), SPH_C32(0xdf2837ab), SPH_C32(0xcb800000),
+	  SPH_C32(0x30c40000), SPH_C32(0x95710000), SPH_C32(0xe3240158),
+	  SPH_C32(0xa22467b4), SPH_C32(0xf9474e8c), SPH_C32(0x30e1ec29),
+	  SPH_C32(0x3a2b4f86) },
+	{ SPH_C32(0xb4420000), SPH_C32(0x4dbd0000), SPH_C32(0x790c0000),
+	  SPH_C32(0x8e8100bd), SPH_C32(0xe6182f42), SPH_C32(0x5a1cec4f),
+	  SPH_C32(0xe8b1698c), SPH_C32(0x39f24855), SPH_C32(0x635a0000),
+	  SPH_C32(0xa67a0000), SPH_C32(0xc96c0000), SPH_C32(0xe4fe015a),
+	  SPH_C32(0xdf42f237), SPH_C32(0xe6df3e06), SPH_C32(0x8b876421),
+	  SPH_C32(0xe0accf86) },
+	{ SPH_C32(0x1fa50000), SPH_C32(0xd3b00000), SPH_C32(0xd62b0000),
+	  SPH_C32(0xb39900b8), SPH_C32(0xca573091), SPH_C32(0x2eeafada),
+	  SPH_C32(0x5d722e67), SPH_C32(0x05afb7ab), SPH_C32(0x60670000),
+	  SPH_C32(0xaec90000), SPH_C32(0x3a560000), SPH_C32(0xde3c015d),
+	  SPH_C32(0x8e6b7867), SPH_C32(0x8db15819), SPH_C32(0x8522abc2),
+	  SPH_C32(0x0676b078) },
+	{ SPH_C32(0x1c980000), SPH_C32(0xdb030000), SPH_C32(0x25110000),
+	  SPH_C32(0x895b00bf), SPH_C32(0x9b7ebac1), SPH_C32(0x45849cc5),
+	  SPH_C32(0x53d7e184), SPH_C32(0xe375c855), SPH_C32(0xc8bd0000),
+	  SPH_C32(0x38770000), SPH_C32(0x664b0000), SPH_C32(0xd9e6015f),
+	  SPH_C32(0xf30dede4), SPH_C32(0x92292893), SPH_C32(0x3e4423ca),
+	  SPH_C32(0xdcf13078) },
+	{ SPH_C32(0x95bb0000), SPH_C32(0x81450000), SPH_C32(0x3b240000),
+	  SPH_C32(0x48db0140), SPH_C32(0x0a8a6c53), SPH_C32(0x56f56eec),
+	  SPH_C32(0x62c91877), SPH_C32(0xe7e00a94), SPH_C32(0xee930000),
+	  SPH_C32(0xd6070000), SPH_C32(0x92c10000), SPH_C32(0x2b9801e0),
+	  SPH_C32(0x9451287c), SPH_C32(0x3b6cfb57), SPH_C32(0x45312374),
+	  SPH_C32(0x201f6a64) },
+	{ SPH_C32(0x96860000), SPH_C32(0x89f60000), SPH_C32(0xc81e0000),
+	  SPH_C32(0x72190147), SPH_C32(0x5ba3e603), SPH_C32(0x3d9b08f3),
+	  SPH_C32(0x6c6cd794), SPH_C32(0x013a756a), SPH_C32(0x46490000),
+	  SPH_C32(0x40b90000), SPH_C32(0xcedc0000), SPH_C32(0x2c4201e2),
+	  SPH_C32(0xe937bdff), SPH_C32(0x24f48bdd), SPH_C32(0xfe57ab7c),
+	  SPH_C32(0xfa98ea64) },
+	{ SPH_C32(0x3d610000), SPH_C32(0x17fb0000), SPH_C32(0x67390000),
+	  SPH_C32(0x4f010142), SPH_C32(0x77ecf9d0), SPH_C32(0x496d1e66),
+	  SPH_C32(0xd9af907f), SPH_C32(0x3d678a94), SPH_C32(0x45740000),
+	  SPH_C32(0x480a0000), SPH_C32(0x3de60000), SPH_C32(0x168001e5),
+	  SPH_C32(0xb81e37af), SPH_C32(0x4f9aedc2), SPH_C32(0xf0f2649f),
+	  SPH_C32(0x1c42959a) },
+	{ SPH_C32(0x3e5c0000), SPH_C32(0x1f480000), SPH_C32(0x94030000),
+	  SPH_C32(0x75c30145), SPH_C32(0x26c57380), SPH_C32(0x22037879),
+	  SPH_C32(0xd70a5f9c), SPH_C32(0xdbbdf56a), SPH_C32(0xedae0000),
+	  SPH_C32(0xdeb40000), SPH_C32(0x61fb0000), SPH_C32(0x115a01e7),
+	  SPH_C32(0xc578a22c), SPH_C32(0x50029d48), SPH_C32(0x4b94ec97),
+	  SPH_C32(0xc6c5159a) },
+	{ SPH_C32(0x94280000), SPH_C32(0x66c70000), SPH_C32(0xd6df0000),
+	  SPH_C32(0x87d7014b), SPH_C32(0x875ae10b), SPH_C32(0xea56dac2),
+	  SPH_C32(0x64ff7996), SPH_C32(0xb48f94ef), SPH_C32(0x7cbb0000),
+	  SPH_C32(0x0a820000), SPH_C32(0xc53b0000), SPH_C32(0x7d4401e3),
+	  SPH_C32(0x2eb80b6a), SPH_C32(0x6183585b), SPH_C32(0xd5ffd426),
+	  SPH_C32(0x5b091fb3) },
+	{ SPH_C32(0x97150000), SPH_C32(0x6e740000), SPH_C32(0x25e50000),
+	  SPH_C32(0xbd15014c), SPH_C32(0xd6736b5b), SPH_C32(0x8138bcdd),
+	  SPH_C32(0x6a5ab675), SPH_C32(0x5255eb11), SPH_C32(0xd4610000),
+	  SPH_C32(0x9c3c0000), SPH_C32(0x99260000), SPH_C32(0x7a9e01e1),
+	  SPH_C32(0x53de9ee9), SPH_C32(0x7e1b28d1), SPH_C32(0x6e995c2e),
+	  SPH_C32(0x818e9fb3) },
+	{ SPH_C32(0x3cf20000), SPH_C32(0xf0790000), SPH_C32(0x8ac20000),
+	  SPH_C32(0x800d0149), SPH_C32(0xfa3c7488), SPH_C32(0xf5ceaa48),
+	  SPH_C32(0xdf99f19e), SPH_C32(0x6e0814ef), SPH_C32(0xd75c0000),
+	  SPH_C32(0x948f0000), SPH_C32(0x6a1c0000), SPH_C32(0x405c01e6),
+	  SPH_C32(0x02f714b9), SPH_C32(0x15754ece), SPH_C32(0x603c93cd),
+	  SPH_C32(0x6754e04d) },
+	{ SPH_C32(0x3fcf0000), SPH_C32(0xf8ca0000), SPH_C32(0x79f80000),
+	  SPH_C32(0xbacf014e), SPH_C32(0xab15fed8), SPH_C32(0x9ea0cc57),
+	  SPH_C32(0xd13c3e7d), SPH_C32(0x88d26b11), SPH_C32(0x7f860000),
+	  SPH_C32(0x02310000), SPH_C32(0x36010000), SPH_C32(0x478601e4),
+	  SPH_C32(0x7f91813a), SPH_C32(0x0aed3e44), SPH_C32(0xdb5a1bc5),
+	  SPH_C32(0xbdd3604d) },
+	{ SPH_C32(0x07930000), SPH_C32(0x5dc00000), SPH_C32(0x6cde0000),
+	  SPH_C32(0x1e070143), SPH_C32(0xb0634f45), SPH_C32(0x0c1acde0),
+	  SPH_C32(0xf207ef25), SPH_C32(0x9cf67f43), SPH_C32(0x7d280000),
+	  SPH_C32(0xed000000), SPH_C32(0x28c00000), SPH_C32(0xb24801e8),
+	  SPH_C32(0xa3688632), SPH_C32(0xdd20ec75), SPH_C32(0xd3c9b5c7),
+	  SPH_C32(0x086681c8) },
+	{ SPH_C32(0x04ae0000), SPH_C32(0x55730000), SPH_C32(0x9fe40000),
+	  SPH_C32(0x24c50144), SPH_C32(0xe14ac515), SPH_C32(0x6774abff),
+	  SPH_C32(0xfca220c6), SPH_C32(0x7a2c00bd), SPH_C32(0xd5f20000),
+	  SPH_C32(0x7bbe0000), SPH_C32(0x74dd0000), SPH_C32(0xb59201ea),
+	  SPH_C32(0xde0e13b1), SPH_C32(0xc2b89cff), SPH_C32(0x68af3dcf),
+	  SPH_C32(0xd2e101c8) },
+	{ SPH_C32(0xaf490000), SPH_C32(0xcb7e0000), SPH_C32(0x30c30000),
+	  SPH_C32(0x19dd0141), SPH_C32(0xcd05dac6), SPH_C32(0x1382bd6a),
+	  SPH_C32(0x4961672d), SPH_C32(0x4671ff43), SPH_C32(0xd6cf0000),
+	  SPH_C32(0x730d0000), SPH_C32(0x87e70000), SPH_C32(0x8f5001ed),
+	  SPH_C32(0x8f2799e1), SPH_C32(0xa9d6fae0), SPH_C32(0x660af22c),
+	  SPH_C32(0x343b7e36) },
+	{ SPH_C32(0xac740000), SPH_C32(0xc3cd0000), SPH_C32(0xc3f90000),
+	  SPH_C32(0x231f0146), SPH_C32(0x9c2c5096), SPH_C32(0x78ecdb75),
+	  SPH_C32(0x47c4a8ce), SPH_C32(0xa0ab80bd), SPH_C32(0x7e150000),
+	  SPH_C32(0xe5b30000), SPH_C32(0xdbfa0000), SPH_C32(0x888a01ef),
+	  SPH_C32(0xf2410c62), SPH_C32(0xb64e8a6a), SPH_C32(0xdd6c7a24),
+	  SPH_C32(0xeebcfe36) },
+	{ SPH_C32(0x06000000), SPH_C32(0xba420000), SPH_C32(0x81250000),
+	  SPH_C32(0xd10b0148), SPH_C32(0x3db3c21d), SPH_C32(0xb0b979ce),
+	  SPH_C32(0xf4318ec4), SPH_C32(0xcf99e138), SPH_C32(0xef000000),
+	  SPH_C32(0x31850000), SPH_C32(0x7f3a0000), SPH_C32(0xe49401eb),
+	  SPH_C32(0x1981a524), SPH_C32(0x87cf4f79), SPH_C32(0x43074295),
+	  SPH_C32(0x7370f41f) },
+	{ SPH_C32(0x053d0000), SPH_C32(0xb2f10000), SPH_C32(0x721f0000),
+	  SPH_C32(0xebc9014f), SPH_C32(0x6c9a484d), SPH_C32(0xdbd71fd1),
+	  SPH_C32(0xfa944127), SPH_C32(0x29439ec6), SPH_C32(0x47da0000),
+	  SPH_C32(0xa73b0000), SPH_C32(0x23270000), SPH_C32(0xe34e01e9),
+	  SPH_C32(0x64e730a7), SPH_C32(0x98573ff3), SPH_C32(0xf861ca9d),
+	  SPH_C32(0xa9f7741f) },
+	{ SPH_C32(0xaeda0000), SPH_C32(0x2cfc0000), SPH_C32(0xdd380000),
+	  SPH_C32(0xd6d1014a), SPH_C32(0x40d5579e), SPH_C32(0xaf210944),
+	  SPH_C32(0x4f5706cc), SPH_C32(0x151e6138), SPH_C32(0x44e70000),
+	  SPH_C32(0xaf880000), SPH_C32(0xd01d0000), SPH_C32(0xd98c01ee),
+	  SPH_C32(0x35cebaf7), SPH_C32(0xf33959ec), SPH_C32(0xf6c4057e),
+	  SPH_C32(0x4f2d0be1) },
+	{ SPH_C32(0xade70000), SPH_C32(0x244f0000), SPH_C32(0x2e020000),
+	  SPH_C32(0xec13014d), SPH_C32(0x11fcddce), SPH_C32(0xc44f6f5b),
+	  SPH_C32(0x41f2c92f), SPH_C32(0xf3c41ec6), SPH_C32(0xec3d0000),
+	  SPH_C32(0x39360000), SPH_C32(0x8c000000), SPH_C32(0xde5601ec),
+	  SPH_C32(0x48a82f74), SPH_C32(0xeca12966), SPH_C32(0x4da28d76),
+	  SPH_C32(0x95aa8be1) },
+	{ SPH_C32(0xca130000), SPH_C32(0xd7460000), SPH_C32(0x788a0000),
+	  SPH_C32(0x2c280153), SPH_C32(0x2ff4eaec), SPH_C32(0x45e4faa2),
+	  SPH_C32(0x36d78dc8), SPH_C32(0x6944d1fd), SPH_C32(0xeed70000),
+	  SPH_C32(0xa94f0000), SPH_C32(0x48bd0000), SPH_C32(0x01bb01e1),
+	  SPH_C32(0xaffce1b0), SPH_C32(0x92da67d0), SPH_C32(0x463bbd14),
+	  SPH_C32(0x9e150dfa) },
+	{ SPH_C32(0xc92e0000), SPH_C32(0xdff50000), SPH_C32(0x8bb00000),
+	  SPH_C32(0x16ea0154), SPH_C32(0x7edd60bc), SPH_C32(0x2e8a9cbd),
+	  SPH_C32(0x3872422b), SPH_C32(0x8f9eae03), SPH_C32(0x460d0000),
+	  SPH_C32(0x3ff10000), SPH_C32(0x14a00000), SPH_C32(0x066101e3),
+	  SPH_C32(0xd29a7433), SPH_C32(0x8d42175a), SPH_C32(0xfd5d351c),
+	  SPH_C32(0x44928dfa) },
+	{ SPH_C32(0x62c90000), SPH_C32(0x41f80000), SPH_C32(0x24970000),
+	  SPH_C32(0x2bf20151), SPH_C32(0x52927f6f), SPH_C32(0x5a7c8a28),
+	  SPH_C32(0x8db105c0), SPH_C32(0xb3c351fd), SPH_C32(0x45300000),
+	  SPH_C32(0x37420000), SPH_C32(0xe79a0000), SPH_C32(0x3ca301e4),
+	  SPH_C32(0x83b3fe63), SPH_C32(0xe62c7145), SPH_C32(0xf3f8faff),
+	  SPH_C32(0xa248f204) },
+	{ SPH_C32(0x61f40000), SPH_C32(0x494b0000), SPH_C32(0xd7ad0000),
+	  SPH_C32(0x11300156), SPH_C32(0x03bbf53f), SPH_C32(0x3112ec37),
+	  SPH_C32(0x8314ca23), SPH_C32(0x55192e03), SPH_C32(0xedea0000),
+	  SPH_C32(0xa1fc0000), SPH_C32(0xbb870000), SPH_C32(0x3b7901e6),
+	  SPH_C32(0xfed56be0), SPH_C32(0xf9b401cf), SPH_C32(0x489e72f7),
+	  SPH_C32(0x78cf7204) },
+	{ SPH_C32(0xcb800000), SPH_C32(0x30c40000), SPH_C32(0x95710000),
+	  SPH_C32(0xe3240158), SPH_C32(0xa22467b4), SPH_C32(0xf9474e8c),
+	  SPH_C32(0x30e1ec29), SPH_C32(0x3a2b4f86), SPH_C32(0x7cff0000),
+	  SPH_C32(0x75ca0000), SPH_C32(0x1f470000), SPH_C32(0x576701e2),
+	  SPH_C32(0x1515c2a6), SPH_C32(0xc835c4dc), SPH_C32(0xd6f54a46),
+	  SPH_C32(0xe503782d) },
+	{ SPH_C32(0xc8bd0000), SPH_C32(0x38770000), SPH_C32(0x664b0000),
+	  SPH_C32(0xd9e6015f), SPH_C32(0xf30dede4), SPH_C32(0x92292893),
+	  SPH_C32(0x3e4423ca), SPH_C32(0xdcf13078), SPH_C32(0xd4250000),
+	  SPH_C32(0xe3740000), SPH_C32(0x435a0000), SPH_C32(0x50bd01e0),
+	  SPH_C32(0x68735725), SPH_C32(0xd7adb456), SPH_C32(0x6d93c24e),
+	  SPH_C32(0x3f84f82d) },
+	{ SPH_C32(0x635a0000), SPH_C32(0xa67a0000), SPH_C32(0xc96c0000),
+	  SPH_C32(0xe4fe015a), SPH_C32(0xdf42f237), SPH_C32(0xe6df3e06),
+	  SPH_C32(0x8b876421), SPH_C32(0xe0accf86), SPH_C32(0xd7180000),
+	  SPH_C32(0xebc70000), SPH_C32(0xb0600000), SPH_C32(0x6a7f01e7),
+	  SPH_C32(0x395add75), SPH_C32(0xbcc3d249), SPH_C32(0x63360dad),
+	  SPH_C32(0xd95e87d3) },
+	{ SPH_C32(0x60670000), SPH_C32(0xaec90000), SPH_C32(0x3a560000),
+	  SPH_C32(0xde3c015d), SPH_C32(0x8e6b7867), SPH_C32(0x8db15819),
+	  SPH_C32(0x8522abc2), SPH_C32(0x0676b078), SPH_C32(0x7fc20000),
+	  SPH_C32(0x7d790000), SPH_C32(0xec7d0000), SPH_C32(0x6da501e5),
+	  SPH_C32(0x443c48f6), SPH_C32(0xa35ba2c3), SPH_C32(0xd85085a5),
+	  SPH_C32(0x03d907d3) },
+	{ SPH_C32(0x583b0000), SPH_C32(0x0bc30000), SPH_C32(0x2f700000),
+	  SPH_C32(0x7af40150), SPH_C32(0x951dc9fa), SPH_C32(0x1f0b59ae),
+	  SPH_C32(0xa6197a9a), SPH_C32(0x1252a42a), SPH_C32(0x7d6c0000),
+	  SPH_C32(0x92480000), SPH_C32(0xf2bc0000), SPH_C32(0x986b01e9),
+	  SPH_C32(0x98c54ffe), SPH_C32(0x749670f2), SPH_C32(0xd0c32ba7),
+	  SPH_C32(0xb66ce656) },
+	{ SPH_C32(0x5b060000), SPH_C32(0x03700000), SPH_C32(0xdc4a0000),
+	  SPH_C32(0x40360157), SPH_C32(0xc43443aa), SPH_C32(0x74653fb1),
+	  SPH_C32(0xa8bcb579), SPH_C32(0xf488dbd4), SPH_C32(0xd5b60000),
+	  SPH_C32(0x04f60000), SPH_C32(0xaea10000), SPH_C32(0x9fb101eb),
+	  SPH_C32(0xe5a3da7d), SPH_C32(0x6b0e0078), SPH_C32(0x6ba5a3af),
+	  SPH_C32(0x6ceb6656) },
+	{ SPH_C32(0xf0e10000), SPH_C32(0x9d7d0000), SPH_C32(0x736d0000),
+	  SPH_C32(0x7d2e0152), SPH_C32(0xe87b5c79), SPH_C32(0x00932924),
+	  SPH_C32(0x1d7ff292), SPH_C32(0xc8d5242a), SPH_C32(0xd68b0000),
+	  SPH_C32(0x0c450000), SPH_C32(0x5d9b0000), SPH_C32(0xa57301ec),
+	  SPH_C32(0xb48a502d), SPH_C32(0x00606667), SPH_C32(0x65006c4c),
+	  SPH_C32(0x8a3119a8) },
+	{ SPH_C32(0xf3dc0000), SPH_C32(0x95ce0000), SPH_C32(0x80570000),
+	  SPH_C32(0x47ec0155), SPH_C32(0xb952d629), SPH_C32(0x6bfd4f3b),
+	  SPH_C32(0x13da3d71), SPH_C32(0x2e0f5bd4), SPH_C32(0x7e510000),
+	  SPH_C32(0x9afb0000), SPH_C32(0x01860000), SPH_C32(0xa2a901ee),
+	  SPH_C32(0xc9ecc5ae), SPH_C32(0x1ff816ed), SPH_C32(0xde66e444),
+	  SPH_C32(0x50b699a8) },
+	{ SPH_C32(0x59a80000), SPH_C32(0xec410000), SPH_C32(0xc28b0000),
+	  SPH_C32(0xb5f8015b), SPH_C32(0x18cd44a2), SPH_C32(0xa3a8ed80),
+	  SPH_C32(0xa02f1b7b), SPH_C32(0x413d3a51), SPH_C32(0xef440000),
+	  SPH_C32(0x4ecd0000), SPH_C32(0xa5460000), SPH_C32(0xceb701ea),
+	  SPH_C32(0x222c6ce8), SPH_C32(0x2e79d3fe), SPH_C32(0x400ddcf5),
+	  SPH_C32(0xcd7a9381) },
+	{ SPH_C32(0x5a950000), SPH_C32(0xe4f20000), SPH_C32(0x31b10000),
+	  SPH_C32(0x8f3a015c), SPH_C32(0x49e4cef2), SPH_C32(0xc8c68b9f),
+	  SPH_C32(0xae8ad498), SPH_C32(0xa7e745af), SPH_C32(0x479e0000),
+	  SPH_C32(0xd8730000), SPH_C32(0xf95b0000), SPH_C32(0xc96d01e8),
+	  SPH_C32(0x5f4af96b), SPH_C32(0x31e1a374), SPH_C32(0xfb6b54fd),
+	  SPH_C32(0x17fd1381) },
+	{ SPH_C32(0xf1720000), SPH_C32(0x7aff0000), SPH_C32(0x9e960000),
+	  SPH_C32(0xb2220159), SPH_C32(0x65abd121), SPH_C32(0xbc309d0a),
+	  SPH_C32(0x1b499373), SPH_C32(0x9bbaba51), SPH_C32(0x44a30000),
+	  SPH_C32(0xd0c00000), SPH_C32(0x0a610000), SPH_C32(0xf3af01ef),
+	  SPH_C32(0x0e63733b), SPH_C32(0x5a8fc56b), SPH_C32(0xf5ce9b1e),
+	  SPH_C32(0xf1276c7f) },
+	{ SPH_C32(0xf24f0000), SPH_C32(0x724c0000), SPH_C32(0x6dac0000),
+	  SPH_C32(0x88e0015e), SPH_C32(0x34825b71), SPH_C32(0xd75efb15),
+	  SPH_C32(0x15ec5c90), SPH_C32(0x7d60c5af), SPH_C32(0xec790000),
+	  SPH_C32(0x467e0000), SPH_C32(0x567c0000), SPH_C32(0xf47501ed),
+	  SPH_C32(0x7305e6b8), SPH_C32(0x4517b5e1), SPH_C32(0x4ea81316),
+	  SPH_C32(0x2ba0ec7f) },
+	{ SPH_C32(0x95ff0000), SPH_C32(0xfe0d0000), SPH_C32(0xe1580000),
+	  SPH_C32(0x62f80141), SPH_C32(0x3127a59f), SPH_C32(0xff43f26b),
+	  SPH_C32(0x61c38617), SPH_C32(0x59ea6d0a), SPH_C32(0xb17f0000),
+	  SPH_C32(0xff4c0000), SPH_C32(0x0b130000), SPH_C32(0x654801f2),
+	  SPH_C32(0x8a82670f), SPH_C32(0x81cbf39e), SPH_C32(0x122528ab),
+	  SPH_C32(0x10b1d693) },
+	{ SPH_C32(0x96c20000), SPH_C32(0xf6be0000), SPH_C32(0x12620000),
+	  SPH_C32(0x583a0146), SPH_C32(0x600e2fcf), SPH_C32(0x942d9474),
+	  SPH_C32(0x6f6649f4), SPH_C32(0xbf3012f4), SPH_C32(0x19a50000),
+	  SPH_C32(0x69f20000), SPH_C32(0x570e0000), SPH_C32(0x629201f0),
+	  SPH_C32(0xf7e4f28c), SPH_C32(0x9e538314), SPH_C32(0xa943a0a3),
+	  SPH_C32(0xca365693) },
+	{ SPH_C32(0x3d250000), SPH_C32(0x68b30000), SPH_C32(0xbd450000),
+	  SPH_C32(0x65220143), SPH_C32(0x4c41301c), SPH_C32(0xe0db82e1),
+	  SPH_C32(0xdaa50e1f), SPH_C32(0x836ded0a), SPH_C32(0x1a980000),
+	  SPH_C32(0x61410000), SPH_C32(0xa4340000), SPH_C32(0x585001f7),
+	  SPH_C32(0xa6cd78dc), SPH_C32(0xf53de50b), SPH_C32(0xa7e66f40),
+	  SPH_C32(0x2cec296d) },
+	{ SPH_C32(0x3e180000), SPH_C32(0x60000000), SPH_C32(0x4e7f0000),
+	  SPH_C32(0x5fe00144), SPH_C32(0x1d68ba4c), SPH_C32(0x8bb5e4fe),
+	  SPH_C32(0xd400c1fc), SPH_C32(0x65b792f4), SPH_C32(0xb2420000),
+	  SPH_C32(0xf7ff0000), SPH_C32(0xf8290000), SPH_C32(0x5f8a01f5),
+	  SPH_C32(0xdbabed5f), SPH_C32(0xeaa59581), SPH_C32(0x1c80e748),
+	  SPH_C32(0xf66ba96d) },
+	{ SPH_C32(0x946c0000), SPH_C32(0x198f0000), SPH_C32(0x0ca30000),
+	  SPH_C32(0xadf4014a), SPH_C32(0xbcf728c7), SPH_C32(0x43e04645),
+	  SPH_C32(0x67f5e7f6), SPH_C32(0x0a85f371), SPH_C32(0x23570000),
+	  SPH_C32(0x23c90000), SPH_C32(0x5ce90000), SPH_C32(0x339401f1),
+	  SPH_C32(0x306b4419), SPH_C32(0xdb245092), SPH_C32(0x82ebdff9),
+	  SPH_C32(0x6ba7a344) },
+	{ SPH_C32(0x97510000), SPH_C32(0x113c0000), SPH_C32(0xff990000),
+	  SPH_C32(0x9736014d), SPH_C32(0xeddea297), SPH_C32(0x288e205a),
+	  SPH_C32(0x69502815), SPH_C32(0xec5f8c8f), SPH_C32(0x8b8d0000),
+	  SPH_C32(0xb5770000), SPH_C32(0x00f40000), SPH_C32(0x344e01f3),
+	  SPH_C32(0x4d0dd19a), SPH_C32(0xc4bc2018), SPH_C32(0x398d57f1),
+	  SPH_C32(0xb1202344) },
+	{ SPH_C32(0x3cb60000), SPH_C32(0x8f310000), SPH_C32(0x50be0000),
+	  SPH_C32(0xaa2e0148), SPH_C32(0xc191bd44), SPH_C32(0x5c7836cf),
+	  SPH_C32(0xdc936ffe), SPH_C32(0xd0027371), SPH_C32(0x88b00000),
+	  SPH_C32(0xbdc40000), SPH_C32(0xf3ce0000), SPH_C32(0x0e8c01f4),
+	  SPH_C32(0x1c245bca), SPH_C32(0xafd24607), SPH_C32(0x37289812),
+	  SPH_C32(0x57fa5cba) },
+	{ SPH_C32(0x3f8b0000), SPH_C32(0x87820000), SPH_C32(0xa3840000),
+	  SPH_C32(0x90ec014f), SPH_C32(0x90b83714), SPH_C32(0x371650d0),
+	  SPH_C32(0xd236a01d), SPH_C32(0x36d80c8f), SPH_C32(0x206a0000),
+	  SPH_C32(0x2b7a0000), SPH_C32(0xafd30000), SPH_C32(0x095601f6),
+	  SPH_C32(0x6142ce49), SPH_C32(0xb04a368d), SPH_C32(0x8c4e101a),
+	  SPH_C32(0x8d7ddcba) },
+	{ SPH_C32(0x07d70000), SPH_C32(0x22880000), SPH_C32(0xb6a20000),
+	  SPH_C32(0x34240142), SPH_C32(0x8bce8689), SPH_C32(0xa5ac5167),
+	  SPH_C32(0xf10d7145), SPH_C32(0x22fc18dd), SPH_C32(0x22c40000),
+	  SPH_C32(0xc44b0000), SPH_C32(0xb1120000), SPH_C32(0xfc9801fa),
+	  SPH_C32(0xbdbbc941), SPH_C32(0x6787e4bc), SPH_C32(0x84ddbe18),
+	  SPH_C32(0x38c83d3f) },
+	{ SPH_C32(0x04ea0000), SPH_C32(0x2a3b0000), SPH_C32(0x45980000),
+	  SPH_C32(0x0ee60145), SPH_C32(0xdae70cd9), SPH_C32(0xcec23778),
+	  SPH_C32(0xffa8bea6), SPH_C32(0xc4266723), SPH_C32(0x8a1e0000),
+	  SPH_C32(0x52f50000), SPH_C32(0xed0f0000), SPH_C32(0xfb4201f8),
+	  SPH_C32(0xc0dd5cc2), SPH_C32(0x781f9436), SPH_C32(0x3fbb3610),
+	  SPH_C32(0xe24fbd3f) },
+	{ SPH_C32(0xaf0d0000), SPH_C32(0xb4360000), SPH_C32(0xeabf0000),
+	  SPH_C32(0x33fe0140), SPH_C32(0xf6a8130a), SPH_C32(0xba3421ed),
+	  SPH_C32(0x4a6bf94d), SPH_C32(0xf87b98dd), SPH_C32(0x89230000),
+	  SPH_C32(0x5a460000), SPH_C32(0x1e350000), SPH_C32(0xc18001ff),
+	  SPH_C32(0x91f4d692), SPH_C32(0x1371f229), SPH_C32(0x311ef9f3),
+	  SPH_C32(0x0495c2c1) },
+	{ SPH_C32(0xac300000), SPH_C32(0xbc850000), SPH_C32(0x19850000),
+	  SPH_C32(0x093c0147), SPH_C32(0xa781995a), SPH_C32(0xd15a47f2),
+	  SPH_C32(0x44ce36ae), SPH_C32(0x1ea1e723), SPH_C32(0x21f90000),
+	  SPH_C32(0xccf80000), SPH_C32(0x42280000), SPH_C32(0xc65a01fd),
+	  SPH_C32(0xec924311), SPH_C32(0x0ce982a3), SPH_C32(0x8a7871fb),
+	  SPH_C32(0xde1242c1) },
+	{ SPH_C32(0x06440000), SPH_C32(0xc50a0000), SPH_C32(0x5b590000),
+	  SPH_C32(0xfb280149), SPH_C32(0x061e0bd1), SPH_C32(0x190fe549),
+	  SPH_C32(0xf73b10a4), SPH_C32(0x719386a6), SPH_C32(0xb0ec0000),
+	  SPH_C32(0x18ce0000), SPH_C32(0xe6e80000), SPH_C32(0xaa4401f9),
+	  SPH_C32(0x0752ea57), SPH_C32(0x3d6847b0), SPH_C32(0x1413494a),
+	  SPH_C32(0x43de48e8) },
+	{ SPH_C32(0x05790000), SPH_C32(0xcdb90000), SPH_C32(0xa8630000),
+	  SPH_C32(0xc1ea014e), SPH_C32(0x57378181), SPH_C32(0x72618356),
+	  SPH_C32(0xf99edf47), SPH_C32(0x9749f958), SPH_C32(0x18360000),
+	  SPH_C32(0x8e700000), SPH_C32(0xbaf50000), SPH_C32(0xad9e01fb),
+	  SPH_C32(0x7a347fd4), SPH_C32(0x22f0373a), SPH_C32(0xaf75c142),
+	  SPH_C32(0x9959c8e8) },
+	{ SPH_C32(0xae9e0000), SPH_C32(0x53b40000), SPH_C32(0x07440000),
+	  SPH_C32(0xfcf2014b), SPH_C32(0x7b789e52), SPH_C32(0x069795c3),
+	  SPH_C32(0x4c5d98ac), SPH_C32(0xab1406a6), SPH_C32(0x1b0b0000),
+	  SPH_C32(0x86c30000), SPH_C32(0x49cf0000), SPH_C32(0x975c01fc),
+	  SPH_C32(0x2b1df584), SPH_C32(0x499e5125), SPH_C32(0xa1d00ea1),
+	  SPH_C32(0x7f83b716) },
+	{ SPH_C32(0xada30000), SPH_C32(0x5b070000), SPH_C32(0xf47e0000),
+	  SPH_C32(0xc630014c), SPH_C32(0x2a511402), SPH_C32(0x6df9f3dc),
+	  SPH_C32(0x42f8574f), SPH_C32(0x4dce7958), SPH_C32(0xb3d10000),
+	  SPH_C32(0x107d0000), SPH_C32(0x15d20000), SPH_C32(0x908601fe),
+	  SPH_C32(0x567b6007), SPH_C32(0x560621af), SPH_C32(0x1ab686a9),
+	  SPH_C32(0xa5043716) },
+	{ SPH_C32(0xca570000), SPH_C32(0xa80e0000), SPH_C32(0xa2f60000),
+	  SPH_C32(0x060b0152), SPH_C32(0x14592320), SPH_C32(0xec526625),
+	  SPH_C32(0x35dd13a8), SPH_C32(0xd74eb663), SPH_C32(0xb13b0000),
+	  SPH_C32(0x80040000), SPH_C32(0xd16f0000), SPH_C32(0x4f6b01f3),
+	  SPH_C32(0xb12faec3), SPH_C32(0x287d6f19), SPH_C32(0x112fb6cb),
+	  SPH_C32(0xaebbb10d) },
+	{ SPH_C32(0xc96a0000), SPH_C32(0xa0bd0000), SPH_C32(0x51cc0000),
+	  SPH_C32(0x3cc90155), SPH_C32(0x4570a970), SPH_C32(0x873c003a),
+	  SPH_C32(0x3b78dc4b), SPH_C32(0x3194c99d), SPH_C32(0x19e10000),
+	  SPH_C32(0x16ba0000), SPH_C32(0x8d720000), SPH_C32(0x48b101f1),
+	  SPH_C32(0xcc493b40), SPH_C32(0x37e51f93), SPH_C32(0xaa493ec3),
+	  SPH_C32(0x743c310d) },
+	{ SPH_C32(0x628d0000), SPH_C32(0x3eb00000), SPH_C32(0xfeeb0000),
+	  SPH_C32(0x01d10150), SPH_C32(0x693fb6a3), SPH_C32(0xf3ca16af),
+	  SPH_C32(0x8ebb9ba0), SPH_C32(0x0dc93663), SPH_C32(0x1adc0000),
+	  SPH_C32(0x1e090000), SPH_C32(0x7e480000), SPH_C32(0x727301f6),
+	  SPH_C32(0x9d60b110), SPH_C32(0x5c8b798c), SPH_C32(0xa4ecf120),
+	  SPH_C32(0x92e64ef3) },
+	{ SPH_C32(0x61b00000), SPH_C32(0x36030000), SPH_C32(0x0dd10000),
+	  SPH_C32(0x3b130157), SPH_C32(0x38163cf3), SPH_C32(0x98a470b0),
+	  SPH_C32(0x801e5443), SPH_C32(0xeb13499d), SPH_C32(0xb2060000),
+	  SPH_C32(0x88b70000), SPH_C32(0x22550000), SPH_C32(0x75a901f4),
+	  SPH_C32(0xe0062493), SPH_C32(0x43130906), SPH_C32(0x1f8a7928),
+	  SPH_C32(0x4861cef3) },
+	{ SPH_C32(0xcbc40000), SPH_C32(0x4f8c0000), SPH_C32(0x4f0d0000),
+	  SPH_C32(0xc9070159), SPH_C32(0x9989ae78), SPH_C32(0x50f1d20b),
+	  SPH_C32(0x33eb7249), SPH_C32(0x84212818), SPH_C32(0x23130000),
+	  SPH_C32(0x5c810000), SPH_C32(0x86950000), SPH_C32(0x19b701f0),
+	  SPH_C32(0x0bc68dd5), SPH_C32(0x7292cc15), SPH_C32(0x81e14199),
+	  SPH_C32(0xd5adc4da) },
+	{ SPH_C32(0xc8f90000), SPH_C32(0x473f0000), SPH_C32(0xbc370000),
+	  SPH_C32(0xf3c5015e), SPH_C32(0xc8a02428), SPH_C32(0x3b9fb414),
+	  SPH_C32(0x3d4ebdaa), SPH_C32(0x62fb57e6), SPH_C32(0x8bc90000),
+	  SPH_C32(0xca3f0000), SPH_C32(0xda880000), SPH_C32(0x1e6d01f2),
+	  SPH_C32(0x76a01856), SPH_C32(0x6d0abc9f), SPH_C32(0x3a87c991),
+	  SPH_C32(0x0f2a44da) },
+	{ SPH_C32(0x631e0000), SPH_C32(0xd9320000), SPH_C32(0x13100000),
+	  SPH_C32(0xcedd015b), SPH_C32(0xe4ef3bfb), SPH_C32(0x4f69a281),
+	  SPH_C32(0x888dfa41), SPH_C32(0x5ea6a818), SPH_C32(0x88f40000),
+	  SPH_C32(0xc28c0000), SPH_C32(0x29b20000), SPH_C32(0x24af01f5),
+	  SPH_C32(0x27899206), SPH_C32(0x0664da80), SPH_C32(0x34220672),
+	  SPH_C32(0xe9f03b24) },
+	{ SPH_C32(0x60230000), SPH_C32(0xd1810000), SPH_C32(0xe02a0000),
+	  SPH_C32(0xf41f015c), SPH_C32(0xb5c6b1ab), SPH_C32(0x2407c49e),
+	  SPH_C32(0x862835a2), SPH_C32(0xb87cd7e6), SPH_C32(0x202e0000),
+	  SPH_C32(0x54320000), SPH_C32(0x75af0000), SPH_C32(0x237501f7),
+	  SPH_C32(0x5aef0785), SPH_C32(0x19fcaa0a), SPH_C32(0x8f448e7a),
+	  SPH_C32(0x3377bb24) },
+	{ SPH_C32(0x587f0000), SPH_C32(0x748b0000), SPH_C32(0xf50c0000),
+	  SPH_C32(0x50d70151), SPH_C32(0xaeb00036), SPH_C32(0xb6bdc529),
+	  SPH_C32(0xa513e4fa), SPH_C32(0xac58c3b4), SPH_C32(0x22800000),
+	  SPH_C32(0xbb030000), SPH_C32(0x6b6e0000), SPH_C32(0xd6bb01fb),
+	  SPH_C32(0x8616008d), SPH_C32(0xce31783b), SPH_C32(0x87d72078),
+	  SPH_C32(0x86c25aa1) },
+	{ SPH_C32(0x5b420000), SPH_C32(0x7c380000), SPH_C32(0x06360000),
+	  SPH_C32(0x6a150156), SPH_C32(0xff998a66), SPH_C32(0xddd3a336),
+	  SPH_C32(0xabb62b19), SPH_C32(0x4a82bc4a), SPH_C32(0x8a5a0000),
+	  SPH_C32(0x2dbd0000), SPH_C32(0x37730000), SPH_C32(0xd16101f9),
+	  SPH_C32(0xfb70950e), SPH_C32(0xd1a908b1), SPH_C32(0x3cb1a870),
+	  SPH_C32(0x5c45daa1) },
+	{ SPH_C32(0xf0a50000), SPH_C32(0xe2350000), SPH_C32(0xa9110000),
+	  SPH_C32(0x570d0153), SPH_C32(0xd3d695b5), SPH_C32(0xa925b5a3),
+	  SPH_C32(0x1e756cf2), SPH_C32(0x76df43b4), SPH_C32(0x89670000),
+	  SPH_C32(0x250e0000), SPH_C32(0xc4490000), SPH_C32(0xeba301fe),
+	  SPH_C32(0xaa591f5e), SPH_C32(0xbac76eae), SPH_C32(0x32146793),
+	  SPH_C32(0xba9fa55f) },
+	{ SPH_C32(0xf3980000), SPH_C32(0xea860000), SPH_C32(0x5a2b0000),
+	  SPH_C32(0x6dcf0154), SPH_C32(0x82ff1fe5), SPH_C32(0xc24bd3bc),
+	  SPH_C32(0x10d0a311), SPH_C32(0x90053c4a), SPH_C32(0x21bd0000),
+	  SPH_C32(0xb3b00000), SPH_C32(0x98540000), SPH_C32(0xec7901fc),
+	  SPH_C32(0xd73f8add), SPH_C32(0xa55f1e24), SPH_C32(0x8972ef9b),
+	  SPH_C32(0x6018255f) },
+	{ SPH_C32(0x59ec0000), SPH_C32(0x93090000), SPH_C32(0x18f70000),
+	  SPH_C32(0x9fdb015a), SPH_C32(0x23608d6e), SPH_C32(0x0a1e7107),
+	  SPH_C32(0xa325851b), SPH_C32(0xff375dcf), SPH_C32(0xb0a80000),
+	  SPH_C32(0x67860000), SPH_C32(0x3c940000), SPH_C32(0x806701f8),
+	  SPH_C32(0x3cff239b), SPH_C32(0x94dedb37), SPH_C32(0x1719d72a),
+	  SPH_C32(0xfdd42f76) },
+	{ SPH_C32(0x5ad10000), SPH_C32(0x9bba0000), SPH_C32(0xebcd0000),
+	  SPH_C32(0xa519015d), SPH_C32(0x7249073e), SPH_C32(0x61701718),
+	  SPH_C32(0xad804af8), SPH_C32(0x19ed2231), SPH_C32(0x18720000),
+	  SPH_C32(0xf1380000), SPH_C32(0x60890000), SPH_C32(0x87bd01fa),
+	  SPH_C32(0x4199b618), SPH_C32(0x8b46abbd), SPH_C32(0xac7f5f22),
+	  SPH_C32(0x2753af76) },
+	{ SPH_C32(0xf1360000), SPH_C32(0x05b70000), SPH_C32(0x44ea0000),
+	  SPH_C32(0x98010158), SPH_C32(0x5e0618ed), SPH_C32(0x1586018d),
+	  SPH_C32(0x18430d13), SPH_C32(0x25b0ddcf), SPH_C32(0x1b4f0000),
+	  SPH_C32(0xf98b0000), SPH_C32(0x93b30000), SPH_C32(0xbd7f01fd),
+	  SPH_C32(0x10b03c48), SPH_C32(0xe028cda2), SPH_C32(0xa2da90c1),
+	  SPH_C32(0xc189d088) },
+	{ SPH_C32(0xf20b0000), SPH_C32(0x0d040000), SPH_C32(0xb7d00000),
+	  SPH_C32(0xa2c3015f), SPH_C32(0x0f2f92bd), SPH_C32(0x7ee86792),
+	  SPH_C32(0x16e6c2f0), SPH_C32(0xc36aa231), SPH_C32(0xb3950000),
+	  SPH_C32(0x6f350000), SPH_C32(0xcfae0000), SPH_C32(0xbaa501ff),
+	  SPH_C32(0x6dd6a9cb), SPH_C32(0xffb0bd28), SPH_C32(0x19bc18c9),
+	  SPH_C32(0x1b0e5088) }
+};
+
+#define INPUT_BIG   do { \
+		unsigned acc = buf[0]; \
+		const sph_u32 *rp; \
+		rp = &T512_0[acc][0]; \
+		m0 = rp[0]; \
+		m1 = rp[1]; \
+		m2 = rp[2]; \
+		m3 = rp[3]; \
+		m4 = rp[4]; \
+		m5 = rp[5]; \
+		m6 = rp[6]; \
+		m7 = rp[7]; \
+		m8 = rp[8]; \
+		m9 = rp[9]; \
+		mA = rp[10]; \
+		mB = rp[11]; \
+		mC = rp[12]; \
+		mD = rp[13]; \
+		mE = rp[14]; \
+		mF = rp[15]; \
+		acc = buf[1]; \
+		rp = &T512_8[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[2]; \
+		rp = &T512_16[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[3]; \
+		rp = &T512_24[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[4]; \
+		rp = &T512_32[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[5]; \
+		rp = &T512_40[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[6]; \
+		rp = &T512_48[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+		acc = buf[7]; \
+		rp = &T512_56[acc][0]; \
+		m0 ^= rp[0]; \
+		m1 ^= rp[1]; \
+		m2 ^= rp[2]; \
+		m3 ^= rp[3]; \
+		m4 ^= rp[4]; \
+		m5 ^= rp[5]; \
+		m6 ^= rp[6]; \
+		m7 ^= rp[7]; \
+		m8 ^= rp[8]; \
+		m9 ^= rp[9]; \
+		mA ^= rp[10]; \
+		mB ^= rp[11]; \
+		mC ^= rp[12]; \
+		mD ^= rp[13]; \
+		mE ^= rp[14]; \
+		mF ^= rp[15]; \
+	} while (0)
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/src/crypto/ghostrider/sph_jh.c b/src/crypto/ghostrider/sph_jh.c
new file mode 100644
index 000000000..2adb4290d
--- /dev/null
+++ b/src/crypto/ghostrider/sph_jh.c
@@ -0,0 +1,1040 @@
+/* $Id: jh.c 255 2011-06-07 19:50:20Z tp $ */
+/*
+ * JH implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_jh.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_JH
+#define SPH_SMALL_FOOTPRINT_JH 1
+#endif
+
+#if !defined SPH_JH_64 && SPH_64_TRUE
+#define SPH_JH_64 1
+#endif
+
+#if !SPH_64
+#undef SPH_JH_64
+#endif
+
+#ifdef _MSC_VER
+#pragma warning(disable : 4146)
+#endif
+
+/*
+ * The internal bitslice representation may use either big-endian or
+ * little-endian (true bitslice operations do not care about the bit
+ * ordering, and the bit-swapping linear operations in JH happen to
+ * be invariant through endianness-swapping). The constants must be
+ * defined according to the chosen endianness; we use some
+ * byte-swapping macros for that.
+ */
+
+#if SPH_LITTLE_ENDIAN
+
+#define C32e(x)                                                                \
+  ((SPH_C32(x) >> 24) | ((SPH_C32(x) >> 8) & SPH_C32(0x0000FF00)) |            \
+   ((SPH_C32(x) << 8) & SPH_C32(0x00FF0000)) |                                 \
+   ((SPH_C32(x) << 24) & SPH_C32(0xFF000000)))
+#define dec32e_aligned sph_dec32le_aligned
+#define enc32e sph_enc32le
+
+#if SPH_64
+#define C64e(x)                                                                \
+  ((SPH_C64(x) >> 56) | ((SPH_C64(x) >> 40) & SPH_C64(0x000000000000FF00)) |   \
+   ((SPH_C64(x) >> 24) & SPH_C64(0x0000000000FF0000)) |                        \
+   ((SPH_C64(x) >> 8) & SPH_C64(0x00000000FF000000)) |                         \
+   ((SPH_C64(x) << 8) & SPH_C64(0x000000FF00000000)) |                         \
+   ((SPH_C64(x) << 24) & SPH_C64(0x0000FF0000000000)) |                        \
+   ((SPH_C64(x) << 40) & SPH_C64(0x00FF000000000000)) |                        \
+   ((SPH_C64(x) << 56) & SPH_C64(0xFF00000000000000)))
+#define dec64e_aligned sph_dec64le_aligned
+#define enc64e sph_enc64le
+#endif
+
+#else
+
+#define C32e(x) SPH_C32(x)
+#define dec32e_aligned sph_dec32be_aligned
+#define enc32e sph_enc32be
+#if SPH_64
+#define C64e(x) SPH_C64(x)
+#define dec64e_aligned sph_dec64be_aligned
+#define enc64e sph_enc64be
+#endif
+
+#endif
+
+#define Sb(x0, x1, x2, x3, c)                                                  \
+  do {                                                                         \
+    x3 = ~x3;                                                                  \
+    x0 ^= (c) & ~x2;                                                           \
+    tmp = (c) ^ (x0 & x1);                                                     \
+    x0 ^= x2 & x3;                                                             \
+    x3 ^= ~x1 & x2;                                                            \
+    x1 ^= x0 & x2;                                                             \
+    x2 ^= x0 & ~x3;                                                            \
+    x0 ^= x1 | x3;                                                             \
+    x3 ^= x1 & x2;                                                             \
+    x1 ^= tmp & x0;                                                            \
+    x2 ^= tmp;                                                                 \
+  } while (0)
+
+#define Lb(x0, x1, x2, x3, x4, x5, x6, x7)                                     \
+  do {                                                                         \
+    x4 ^= x1;                                                                  \
+    x5 ^= x2;                                                                  \
+    x6 ^= x3 ^ x0;                                                             \
+    x7 ^= x0;                                                                  \
+    x0 ^= x5;                                                                  \
+    x1 ^= x6;                                                                  \
+    x2 ^= x7 ^ x4;                                                             \
+    x3 ^= x4;                                                                  \
+  } while (0)
+
+#if SPH_JH_64
+
+static const sph_u64 C[] = {C64e(0x72d5dea2df15f867), C64e(0x7b84150ab7231557),
+                            C64e(0x81abd6904d5a87f6), C64e(0x4e9f4fc5c3d12b40),
+                            C64e(0xea983ae05c45fa9c), C64e(0x03c5d29966b2999a),
+                            C64e(0x660296b4f2bb538a), C64e(0xb556141a88dba231),
+                            C64e(0x03a35a5c9a190edb), C64e(0x403fb20a87c14410),
+                            C64e(0x1c051980849e951d), C64e(0x6f33ebad5ee7cddc),
+                            C64e(0x10ba139202bf6b41), C64e(0xdc786515f7bb27d0),
+                            C64e(0x0a2c813937aa7850), C64e(0x3f1abfd2410091d3),
+                            C64e(0x422d5a0df6cc7e90), C64e(0xdd629f9c92c097ce),
+                            C64e(0x185ca70bc72b44ac), C64e(0xd1df65d663c6fc23),
+                            C64e(0x976e6c039ee0b81a), C64e(0x2105457e446ceca8),
+                            C64e(0xeef103bb5d8e61fa), C64e(0xfd9697b294838197),
+                            C64e(0x4a8e8537db03302f), C64e(0x2a678d2dfb9f6a95),
+                            C64e(0x8afe7381f8b8696c), C64e(0x8ac77246c07f4214),
+                            C64e(0xc5f4158fbdc75ec4), C64e(0x75446fa78f11bb80),
+                            C64e(0x52de75b7aee488bc), C64e(0x82b8001e98a6a3f4),
+                            C64e(0x8ef48f33a9a36315), C64e(0xaa5f5624d5b7f989),
+                            C64e(0xb6f1ed207c5ae0fd), C64e(0x36cae95a06422c36),
+                            C64e(0xce2935434efe983d), C64e(0x533af974739a4ba7),
+                            C64e(0xd0f51f596f4e8186), C64e(0x0e9dad81afd85a9f),
+                            C64e(0xa7050667ee34626a), C64e(0x8b0b28be6eb91727),
+                            C64e(0x47740726c680103f), C64e(0xe0a07e6fc67e487b),
+                            C64e(0x0d550aa54af8a4c0), C64e(0x91e3e79f978ef19e),
+                            C64e(0x8676728150608dd4), C64e(0x7e9e5a41f3e5b062),
+                            C64e(0xfc9f1fec4054207a), C64e(0xe3e41a00cef4c984),
+                            C64e(0x4fd794f59dfa95d8), C64e(0x552e7e1124c354a5),
+                            C64e(0x5bdf7228bdfe6e28), C64e(0x78f57fe20fa5c4b2),
+                            C64e(0x05897cefee49d32e), C64e(0x447e9385eb28597f),
+                            C64e(0x705f6937b324314a), C64e(0x5e8628f11dd6e465),
+                            C64e(0xc71b770451b920e7), C64e(0x74fe43e823d4878a),
+                            C64e(0x7d29e8a3927694f2), C64e(0xddcb7a099b30d9c1),
+                            C64e(0x1d1b30fb5bdc1be0), C64e(0xda24494ff29c82bf),
+                            C64e(0xa4e7ba31b470bfff), C64e(0x0d324405def8bc48),
+                            C64e(0x3baefc3253bbd339), C64e(0x459fc3c1e0298ba0),
+                            C64e(0xe5c905fdf7ae090f), C64e(0x947034124290f134),
+                            C64e(0xa271b701e344ed95), C64e(0xe93b8e364f2f984a),
+                            C64e(0x88401d63a06cf615), C64e(0x47c1444b8752afff),
+                            C64e(0x7ebb4af1e20ac630), C64e(0x4670b6c5cc6e8ce6),
+                            C64e(0xa4d5a456bd4fca00), C64e(0xda9d844bc83e18ae),
+                            C64e(0x7357ce453064d1ad), C64e(0xe8a6ce68145c2567),
+                            C64e(0xa3da8cf2cb0ee116), C64e(0x33e906589a94999a),
+                            C64e(0x1f60b220c26f847b), C64e(0xd1ceac7fa0d18518),
+                            C64e(0x32595ba18ddd19d3), C64e(0x509a1cc0aaa5b446),
+                            C64e(0x9f3d6367e4046bba), C64e(0xf6ca19ab0b56ee7e),
+                            C64e(0x1fb179eaa9282174), C64e(0xe9bdf7353b3651ee),
+                            C64e(0x1d57ac5a7550d376), C64e(0x3a46c2fea37d7001),
+                            C64e(0xf735c1af98a4d842), C64e(0x78edec209e6b6779),
+                            C64e(0x41836315ea3adba8), C64e(0xfac33b4d32832c83),
+                            C64e(0xa7403b1f1c2747f3), C64e(0x5940f034b72d769a),
+                            C64e(0xe73e4e6cd2214ffd), C64e(0xb8fd8d39dc5759ef),
+                            C64e(0x8d9b0c492b49ebda), C64e(0x5ba2d74968f3700d),
+                            C64e(0x7d3baed07a8d5584), C64e(0xf5a5e9f0e4f88e65),
+                            C64e(0xa0b8a2f436103b53), C64e(0x0ca8079e753eec5a),
+                            C64e(0x9168949256e8884f), C64e(0x5bb05c55f8babc4c),
+                            C64e(0xe3bb3b99f387947b), C64e(0x75daf4d6726b1c5d),
+                            C64e(0x64aeac28dc34b36d), C64e(0x6c34a550b828db71),
+                            C64e(0xf861e2f2108d512a), C64e(0xe3db643359dd75fc),
+                            C64e(0x1cacbcf143ce3fa2), C64e(0x67bbd13c02e843b0),
+                            C64e(0x330a5bca8829a175), C64e(0x7f34194db416535c),
+                            C64e(0x923b94c30e794d1e), C64e(0x797475d7b6eeaf3f),
+                            C64e(0xeaa8d4f7be1a3921), C64e(0x5cf47e094c232751),
+                            C64e(0x26a32453ba323cd2), C64e(0x44a3174a6da6d5ad),
+                            C64e(0xb51d3ea6aff2c908), C64e(0x83593d98916b3c56),
+                            C64e(0x4cf87ca17286604d), C64e(0x46e23ecc086ec7f6),
+                            C64e(0x2f9833b3b1bc765e), C64e(0x2bd666a5efc4e62a),
+                            C64e(0x06f4b6e8bec1d436), C64e(0x74ee8215bcef2163),
+                            C64e(0xfdc14e0df453c969), C64e(0xa77d5ac406585826),
+                            C64e(0x7ec1141606e0fa16), C64e(0x7e90af3d28639d3f),
+                            C64e(0xd2c9f2e3009bd20c), C64e(0x5faace30b7d40c30),
+                            C64e(0x742a5116f2e03298), C64e(0x0deb30d8e3cef89a),
+                            C64e(0x4bc59e7bb5f17992), C64e(0xff51e66e048668d3),
+                            C64e(0x9b234d57e6966731), C64e(0xcce6a6f3170a7505),
+                            C64e(0xb17681d913326cce), C64e(0x3c175284f805a262),
+                            C64e(0xf42bcbb378471547), C64e(0xff46548223936a48),
+                            C64e(0x38df58074e5e6565), C64e(0xf2fc7c89fc86508e),
+                            C64e(0x31702e44d00bca86), C64e(0xf04009a23078474e),
+                            C64e(0x65a0ee39d1f73883), C64e(0xf75ee937e42c3abd),
+                            C64e(0x2197b2260113f86f), C64e(0xa344edd1ef9fdee7),
+                            C64e(0x8ba0df15762592d9), C64e(0x3c85f7f612dc42be),
+                            C64e(0xd8a7ec7cab27b07e), C64e(0x538d7ddaaa3ea8de),
+                            C64e(0xaa25ce93bd0269d8), C64e(0x5af643fd1a7308f9),
+                            C64e(0xc05fefda174a19a5), C64e(0x974d66334cfd216a),
+                            C64e(0x35b49831db411570), C64e(0xea1e0fbbedcd549b),
+                            C64e(0x9ad063a151974072), C64e(0xf6759dbf91476fe2)};
+
+#define Ceven_hi(r) (C[((r) << 2) + 0])
+#define Ceven_lo(r) (C[((r) << 2) + 1])
+#define Codd_hi(r) (C[((r) << 2) + 2])
+#define Codd_lo(r) (C[((r) << 2) + 3])
+
+#define S(x0, x1, x2, x3, cb, r)                                               \
+  do {                                                                         \
+    Sb(x0##h, x1##h, x2##h, x3##h, cb##hi(r));                                 \
+    Sb(x0##l, x1##l, x2##l, x3##l, cb##lo(r));                                 \
+  } while (0)
+
+#define L(x0, x1, x2, x3, x4, x5, x6, x7)                                      \
+  do {                                                                         \
+    Lb(x0##h, x1##h, x2##h, x3##h, x4##h, x5##h, x6##h, x7##h);                \
+    Lb(x0##l, x1##l, x2##l, x3##l, x4##l, x5##l, x6##l, x7##l);                \
+  } while (0)
+
+#define Wz(x, c, n)                                                            \
+  do {                                                                         \
+    sph_u64 t = (x##h & (c)) << (n);                                           \
+    x##h = ((x##h >> (n)) & (c)) | t;                                          \
+    t = (x##l & (c)) << (n);                                                   \
+    x##l = ((x##l >> (n)) & (c)) | t;                                          \
+  } while (0)
+
+#define W0(x) Wz(x, SPH_C64(0x5555555555555555), 1)
+#define W1(x) Wz(x, SPH_C64(0x3333333333333333), 2)
+#define W2(x) Wz(x, SPH_C64(0x0F0F0F0F0F0F0F0F), 4)
+#define W3(x) Wz(x, SPH_C64(0x00FF00FF00FF00FF), 8)
+#define W4(x) Wz(x, SPH_C64(0x0000FFFF0000FFFF), 16)
+#define W5(x) Wz(x, SPH_C64(0x00000000FFFFFFFF), 32)
+#define W6(x)                                                                  \
+  do {                                                                         \
+    sph_u64 t = x##h;                                                          \
+    x##h = x##l;                                                               \
+    x##l = t;                                                                  \
+  } while (0)
+
+#define DECL_STATE                                                             \
+  sph_u64 h0h, h1h, h2h, h3h, h4h, h5h, h6h, h7h;                              \
+  sph_u64 h0l, h1l, h2l, h3l, h4l, h5l, h6l, h7l;                              \
+  sph_u64 tmp;
+
+#define READ_STATE(state)                                                      \
+  do {                                                                         \
+    h0h = (state)->H.wide[0];                                                  \
+    h0l = (state)->H.wide[1];                                                  \
+    h1h = (state)->H.wide[2];                                                  \
+    h1l = (state)->H.wide[3];                                                  \
+    h2h = (state)->H.wide[4];                                                  \
+    h2l = (state)->H.wide[5];                                                  \
+    h3h = (state)->H.wide[6];                                                  \
+    h3l = (state)->H.wide[7];                                                  \
+    h4h = (state)->H.wide[8];                                                  \
+    h4l = (state)->H.wide[9];                                                  \
+    h5h = (state)->H.wide[10];                                                 \
+    h5l = (state)->H.wide[11];                                                 \
+    h6h = (state)->H.wide[12];                                                 \
+    h6l = (state)->H.wide[13];                                                 \
+    h7h = (state)->H.wide[14];                                                 \
+    h7l = (state)->H.wide[15];                                                 \
+  } while (0)
+
+#define WRITE_STATE(state)                                                     \
+  do {                                                                         \
+    (state)->H.wide[0] = h0h;                                                  \
+    (state)->H.wide[1] = h0l;                                                  \
+    (state)->H.wide[2] = h1h;                                                  \
+    (state)->H.wide[3] = h1l;                                                  \
+    (state)->H.wide[4] = h2h;                                                  \
+    (state)->H.wide[5] = h2l;                                                  \
+    (state)->H.wide[6] = h3h;                                                  \
+    (state)->H.wide[7] = h3l;                                                  \
+    (state)->H.wide[8] = h4h;                                                  \
+    (state)->H.wide[9] = h4l;                                                  \
+    (state)->H.wide[10] = h5h;                                                 \
+    (state)->H.wide[11] = h5l;                                                 \
+    (state)->H.wide[12] = h6h;                                                 \
+    (state)->H.wide[13] = h6l;                                                 \
+    (state)->H.wide[14] = h7h;                                                 \
+    (state)->H.wide[15] = h7l;                                                 \
+  } while (0)
+
+#define INPUT_BUF1                                                             \
+  sph_u64 m0h = dec64e_aligned(buf + 0);                                       \
+  sph_u64 m0l = dec64e_aligned(buf + 8);                                       \
+  sph_u64 m1h = dec64e_aligned(buf + 16);                                      \
+  sph_u64 m1l = dec64e_aligned(buf + 24);                                      \
+  sph_u64 m2h = dec64e_aligned(buf + 32);                                      \
+  sph_u64 m2l = dec64e_aligned(buf + 40);                                      \
+  sph_u64 m3h = dec64e_aligned(buf + 48);                                      \
+  sph_u64 m3l = dec64e_aligned(buf + 56);                                      \
+  h0h ^= m0h;                                                                  \
+  h0l ^= m0l;                                                                  \
+  h1h ^= m1h;                                                                  \
+  h1l ^= m1l;                                                                  \
+  h2h ^= m2h;                                                                  \
+  h2l ^= m2l;                                                                  \
+  h3h ^= m3h;                                                                  \
+  h3l ^= m3l;
+
+#define INPUT_BUF2                                                             \
+  h4h ^= m0h;                                                                  \
+  h4l ^= m0l;                                                                  \
+  h5h ^= m1h;                                                                  \
+  h5l ^= m1l;                                                                  \
+  h6h ^= m2h;                                                                  \
+  h6l ^= m2l;                                                                  \
+  h7h ^= m3h;                                                                  \
+  h7l ^= m3l;
+
+static const sph_u64 IV224[] = {
+    C64e(0x2dfedd62f99a98ac), C64e(0xae7cacd619d634e7),
+    C64e(0xa4831005bc301216), C64e(0xb86038c6c9661494),
+    C64e(0x66d9899f2580706f), C64e(0xce9ea31b1d9b1adc),
+    C64e(0x11e8325f7b366e10), C64e(0xf994857f02fa06c1),
+    C64e(0x1b4f1b5cd8c840b3), C64e(0x97f6a17f6e738099),
+    C64e(0xdcdf93a5adeaa3d3), C64e(0xa431e8dec9539a68),
+    C64e(0x22b4a98aec86a1e4), C64e(0xd574ac959ce56cf0),
+    C64e(0x15960deab5ab2bbf), C64e(0x9611dcf0dd64ea6e)};
+
+static const sph_u64 IV256[] = {
+    C64e(0xeb98a3412c20d3eb), C64e(0x92cdbe7b9cb245c1),
+    C64e(0x1c93519160d4c7fa), C64e(0x260082d67e508a03),
+    C64e(0xa4239e267726b945), C64e(0xe0fb1a48d41a9477),
+    C64e(0xcdb5ab26026b177a), C64e(0x56f024420fff2fa8),
+    C64e(0x71a396897f2e4d75), C64e(0x1d144908f77de262),
+    C64e(0x277695f776248f94), C64e(0x87d5b6574780296c),
+    C64e(0x5c5e272dac8e0d6c), C64e(0x518450c657057a0f),
+    C64e(0x7be4d367702412ea), C64e(0x89e3ab13d31cd769)};
+
+static const sph_u64 IV384[] = {
+    C64e(0x481e3bc6d813398a), C64e(0x6d3b5e894ade879b),
+    C64e(0x63faea68d480ad2e), C64e(0x332ccb21480f8267),
+    C64e(0x98aec84d9082b928), C64e(0xd455ea3041114249),
+    C64e(0x36f555b2924847ec), C64e(0xc7250a93baf43ce1),
+    C64e(0x569b7f8a27db454c), C64e(0x9efcbd496397af0e),
+    C64e(0x589fc27d26aa80cd), C64e(0x80c08b8c9deb2eda),
+    C64e(0x8a7981e8f8d5373a), C64e(0xf43967adddd17a71),
+    C64e(0xa9b4d3bda475d394), C64e(0x976c3fba9842737f)};
+
+static const sph_u64 IV512[] = {
+    C64e(0x6fd14b963e00aa17), C64e(0x636a2e057a15d543),
+    C64e(0x8a225e8d0c97ef0b), C64e(0xe9341259f2b3c361),
+    C64e(0x891da0c1536f801e), C64e(0x2aa9056bea2b6d80),
+    C64e(0x588eccdb2075baa6), C64e(0xa90f3a76baf83bf7),
+    C64e(0x0169e60541e34a69), C64e(0x46b58a8e2e6fe65a),
+    C64e(0x1047a7d0c1843c24), C64e(0x3b6e71b12d5ac199),
+    C64e(0xcf57f6ec9db1f856), C64e(0xa706887c5716b156),
+    C64e(0xe3c2fcdfe68517fb), C64e(0x545a4678cc8cdd4b)};
+
+#else
+
+static const sph_u32 C[] = {
+    C32e(0x72d5dea2), C32e(0xdf15f867), C32e(0x7b84150a), C32e(0xb7231557),
+    C32e(0x81abd690), C32e(0x4d5a87f6), C32e(0x4e9f4fc5), C32e(0xc3d12b40),
+    C32e(0xea983ae0), C32e(0x5c45fa9c), C32e(0x03c5d299), C32e(0x66b2999a),
+    C32e(0x660296b4), C32e(0xf2bb538a), C32e(0xb556141a), C32e(0x88dba231),
+    C32e(0x03a35a5c), C32e(0x9a190edb), C32e(0x403fb20a), C32e(0x87c14410),
+    C32e(0x1c051980), C32e(0x849e951d), C32e(0x6f33ebad), C32e(0x5ee7cddc),
+    C32e(0x10ba1392), C32e(0x02bf6b41), C32e(0xdc786515), C32e(0xf7bb27d0),
+    C32e(0x0a2c8139), C32e(0x37aa7850), C32e(0x3f1abfd2), C32e(0x410091d3),
+    C32e(0x422d5a0d), C32e(0xf6cc7e90), C32e(0xdd629f9c), C32e(0x92c097ce),
+    C32e(0x185ca70b), C32e(0xc72b44ac), C32e(0xd1df65d6), C32e(0x63c6fc23),
+    C32e(0x976e6c03), C32e(0x9ee0b81a), C32e(0x2105457e), C32e(0x446ceca8),
+    C32e(0xeef103bb), C32e(0x5d8e61fa), C32e(0xfd9697b2), C32e(0x94838197),
+    C32e(0x4a8e8537), C32e(0xdb03302f), C32e(0x2a678d2d), C32e(0xfb9f6a95),
+    C32e(0x8afe7381), C32e(0xf8b8696c), C32e(0x8ac77246), C32e(0xc07f4214),
+    C32e(0xc5f4158f), C32e(0xbdc75ec4), C32e(0x75446fa7), C32e(0x8f11bb80),
+    C32e(0x52de75b7), C32e(0xaee488bc), C32e(0x82b8001e), C32e(0x98a6a3f4),
+    C32e(0x8ef48f33), C32e(0xa9a36315), C32e(0xaa5f5624), C32e(0xd5b7f989),
+    C32e(0xb6f1ed20), C32e(0x7c5ae0fd), C32e(0x36cae95a), C32e(0x06422c36),
+    C32e(0xce293543), C32e(0x4efe983d), C32e(0x533af974), C32e(0x739a4ba7),
+    C32e(0xd0f51f59), C32e(0x6f4e8186), C32e(0x0e9dad81), C32e(0xafd85a9f),
+    C32e(0xa7050667), C32e(0xee34626a), C32e(0x8b0b28be), C32e(0x6eb91727),
+    C32e(0x47740726), C32e(0xc680103f), C32e(0xe0a07e6f), C32e(0xc67e487b),
+    C32e(0x0d550aa5), C32e(0x4af8a4c0), C32e(0x91e3e79f), C32e(0x978ef19e),
+    C32e(0x86767281), C32e(0x50608dd4), C32e(0x7e9e5a41), C32e(0xf3e5b062),
+    C32e(0xfc9f1fec), C32e(0x4054207a), C32e(0xe3e41a00), C32e(0xcef4c984),
+    C32e(0x4fd794f5), C32e(0x9dfa95d8), C32e(0x552e7e11), C32e(0x24c354a5),
+    C32e(0x5bdf7228), C32e(0xbdfe6e28), C32e(0x78f57fe2), C32e(0x0fa5c4b2),
+    C32e(0x05897cef), C32e(0xee49d32e), C32e(0x447e9385), C32e(0xeb28597f),
+    C32e(0x705f6937), C32e(0xb324314a), C32e(0x5e8628f1), C32e(0x1dd6e465),
+    C32e(0xc71b7704), C32e(0x51b920e7), C32e(0x74fe43e8), C32e(0x23d4878a),
+    C32e(0x7d29e8a3), C32e(0x927694f2), C32e(0xddcb7a09), C32e(0x9b30d9c1),
+    C32e(0x1d1b30fb), C32e(0x5bdc1be0), C32e(0xda24494f), C32e(0xf29c82bf),
+    C32e(0xa4e7ba31), C32e(0xb470bfff), C32e(0x0d324405), C32e(0xdef8bc48),
+    C32e(0x3baefc32), C32e(0x53bbd339), C32e(0x459fc3c1), C32e(0xe0298ba0),
+    C32e(0xe5c905fd), C32e(0xf7ae090f), C32e(0x94703412), C32e(0x4290f134),
+    C32e(0xa271b701), C32e(0xe344ed95), C32e(0xe93b8e36), C32e(0x4f2f984a),
+    C32e(0x88401d63), C32e(0xa06cf615), C32e(0x47c1444b), C32e(0x8752afff),
+    C32e(0x7ebb4af1), C32e(0xe20ac630), C32e(0x4670b6c5), C32e(0xcc6e8ce6),
+    C32e(0xa4d5a456), C32e(0xbd4fca00), C32e(0xda9d844b), C32e(0xc83e18ae),
+    C32e(0x7357ce45), C32e(0x3064d1ad), C32e(0xe8a6ce68), C32e(0x145c2567),
+    C32e(0xa3da8cf2), C32e(0xcb0ee116), C32e(0x33e90658), C32e(0x9a94999a),
+    C32e(0x1f60b220), C32e(0xc26f847b), C32e(0xd1ceac7f), C32e(0xa0d18518),
+    C32e(0x32595ba1), C32e(0x8ddd19d3), C32e(0x509a1cc0), C32e(0xaaa5b446),
+    C32e(0x9f3d6367), C32e(0xe4046bba), C32e(0xf6ca19ab), C32e(0x0b56ee7e),
+    C32e(0x1fb179ea), C32e(0xa9282174), C32e(0xe9bdf735), C32e(0x3b3651ee),
+    C32e(0x1d57ac5a), C32e(0x7550d376), C32e(0x3a46c2fe), C32e(0xa37d7001),
+    C32e(0xf735c1af), C32e(0x98a4d842), C32e(0x78edec20), C32e(0x9e6b6779),
+    C32e(0x41836315), C32e(0xea3adba8), C32e(0xfac33b4d), C32e(0x32832c83),
+    C32e(0xa7403b1f), C32e(0x1c2747f3), C32e(0x5940f034), C32e(0xb72d769a),
+    C32e(0xe73e4e6c), C32e(0xd2214ffd), C32e(0xb8fd8d39), C32e(0xdc5759ef),
+    C32e(0x8d9b0c49), C32e(0x2b49ebda), C32e(0x5ba2d749), C32e(0x68f3700d),
+    C32e(0x7d3baed0), C32e(0x7a8d5584), C32e(0xf5a5e9f0), C32e(0xe4f88e65),
+    C32e(0xa0b8a2f4), C32e(0x36103b53), C32e(0x0ca8079e), C32e(0x753eec5a),
+    C32e(0x91689492), C32e(0x56e8884f), C32e(0x5bb05c55), C32e(0xf8babc4c),
+    C32e(0xe3bb3b99), C32e(0xf387947b), C32e(0x75daf4d6), C32e(0x726b1c5d),
+    C32e(0x64aeac28), C32e(0xdc34b36d), C32e(0x6c34a550), C32e(0xb828db71),
+    C32e(0xf861e2f2), C32e(0x108d512a), C32e(0xe3db6433), C32e(0x59dd75fc),
+    C32e(0x1cacbcf1), C32e(0x43ce3fa2), C32e(0x67bbd13c), C32e(0x02e843b0),
+    C32e(0x330a5bca), C32e(0x8829a175), C32e(0x7f34194d), C32e(0xb416535c),
+    C32e(0x923b94c3), C32e(0x0e794d1e), C32e(0x797475d7), C32e(0xb6eeaf3f),
+    C32e(0xeaa8d4f7), C32e(0xbe1a3921), C32e(0x5cf47e09), C32e(0x4c232751),
+    C32e(0x26a32453), C32e(0xba323cd2), C32e(0x44a3174a), C32e(0x6da6d5ad),
+    C32e(0xb51d3ea6), C32e(0xaff2c908), C32e(0x83593d98), C32e(0x916b3c56),
+    C32e(0x4cf87ca1), C32e(0x7286604d), C32e(0x46e23ecc), C32e(0x086ec7f6),
+    C32e(0x2f9833b3), C32e(0xb1bc765e), C32e(0x2bd666a5), C32e(0xefc4e62a),
+    C32e(0x06f4b6e8), C32e(0xbec1d436), C32e(0x74ee8215), C32e(0xbcef2163),
+    C32e(0xfdc14e0d), C32e(0xf453c969), C32e(0xa77d5ac4), C32e(0x06585826),
+    C32e(0x7ec11416), C32e(0x06e0fa16), C32e(0x7e90af3d), C32e(0x28639d3f),
+    C32e(0xd2c9f2e3), C32e(0x009bd20c), C32e(0x5faace30), C32e(0xb7d40c30),
+    C32e(0x742a5116), C32e(0xf2e03298), C32e(0x0deb30d8), C32e(0xe3cef89a),
+    C32e(0x4bc59e7b), C32e(0xb5f17992), C32e(0xff51e66e), C32e(0x048668d3),
+    C32e(0x9b234d57), C32e(0xe6966731), C32e(0xcce6a6f3), C32e(0x170a7505),
+    C32e(0xb17681d9), C32e(0x13326cce), C32e(0x3c175284), C32e(0xf805a262),
+    C32e(0xf42bcbb3), C32e(0x78471547), C32e(0xff465482), C32e(0x23936a48),
+    C32e(0x38df5807), C32e(0x4e5e6565), C32e(0xf2fc7c89), C32e(0xfc86508e),
+    C32e(0x31702e44), C32e(0xd00bca86), C32e(0xf04009a2), C32e(0x3078474e),
+    C32e(0x65a0ee39), C32e(0xd1f73883), C32e(0xf75ee937), C32e(0xe42c3abd),
+    C32e(0x2197b226), C32e(0x0113f86f), C32e(0xa344edd1), C32e(0xef9fdee7),
+    C32e(0x8ba0df15), C32e(0x762592d9), C32e(0x3c85f7f6), C32e(0x12dc42be),
+    C32e(0xd8a7ec7c), C32e(0xab27b07e), C32e(0x538d7dda), C32e(0xaa3ea8de),
+    C32e(0xaa25ce93), C32e(0xbd0269d8), C32e(0x5af643fd), C32e(0x1a7308f9),
+    C32e(0xc05fefda), C32e(0x174a19a5), C32e(0x974d6633), C32e(0x4cfd216a),
+    C32e(0x35b49831), C32e(0xdb411570), C32e(0xea1e0fbb), C32e(0xedcd549b),
+    C32e(0x9ad063a1), C32e(0x51974072), C32e(0xf6759dbf), C32e(0x91476fe2)};
+
+#define Ceven_w3(r) (C[((r) << 3) + 0])
+#define Ceven_w2(r) (C[((r) << 3) + 1])
+#define Ceven_w1(r) (C[((r) << 3) + 2])
+#define Ceven_w0(r) (C[((r) << 3) + 3])
+#define Codd_w3(r) (C[((r) << 3) + 4])
+#define Codd_w2(r) (C[((r) << 3) + 5])
+#define Codd_w1(r) (C[((r) << 3) + 6])
+#define Codd_w0(r) (C[((r) << 3) + 7])
+
+#define S(x0, x1, x2, x3, cb, r)                                               \
+  do {                                                                         \
+    Sb(x0##3, x1##3, x2##3, x3##3, cb##w3(r));                                 \
+    Sb(x0##2, x1##2, x2##2, x3##2, cb##w2(r));                                 \
+    Sb(x0##1, x1##1, x2##1, x3##1, cb##w1(r));                                 \
+    Sb(x0##0, x1##0, x2##0, x3##0, cb##w0(r));                                 \
+  } while (0)
+
+#define L(x0, x1, x2, x3, x4, x5, x6, x7)                                      \
+  do {                                                                         \
+    Lb(x0##3, x1##3, x2##3, x3##3, x4##3, x5##3, x6##3, x7##3);                \
+    Lb(x0##2, x1##2, x2##2, x3##2, x4##2, x5##2, x6##2, x7##2);                \
+    Lb(x0##1, x1##1, x2##1, x3##1, x4##1, x5##1, x6##1, x7##1);                \
+    Lb(x0##0, x1##0, x2##0, x3##0, x4##0, x5##0, x6##0, x7##0);                \
+  } while (0)
+
+#define Wz(x, c, n)                                                            \
+  do {                                                                         \
+    sph_u32 t = (x##3 & (c)) << (n);                                           \
+    x##3 = ((x##3 >> (n)) & (c)) | t;                                          \
+    t = (x##2 & (c)) << (n);                                                   \
+    x##2 = ((x##2 >> (n)) & (c)) | t;                                          \
+    t = (x##1 & (c)) << (n);                                                   \
+    x##1 = ((x##1 >> (n)) & (c)) | t;                                          \
+    t = (x##0 & (c)) << (n);                                                   \
+    x##0 = ((x##0 >> (n)) & (c)) | t;                                          \
+  } while (0)
+
+#define W0(x) Wz(x, SPH_C32(0x55555555), 1)
+#define W1(x) Wz(x, SPH_C32(0x33333333), 2)
+#define W2(x) Wz(x, SPH_C32(0x0F0F0F0F), 4)
+#define W3(x) Wz(x, SPH_C32(0x00FF00FF), 8)
+#define W4(x) Wz(x, SPH_C32(0x0000FFFF), 16)
+#define W5(x)                                                                  \
+  do {                                                                         \
+    sph_u32 t = x##3;                                                          \
+    x##3 = x##2;                                                               \
+    x##2 = t;                                                                  \
+    t = x##1;                                                                  \
+    x##1 = x##0;                                                               \
+    x##0 = t;                                                                  \
+  } while (0)
+#define W6(x)                                                                  \
+  do {                                                                         \
+    sph_u32 t = x##3;                                                          \
+    x##3 = x##1;                                                               \
+    x##1 = t;                                                                  \
+    t = x##2;                                                                  \
+    x##2 = x##0;                                                               \
+    x##0 = t;                                                                  \
+  } while (0)
+
+#define DECL_STATE                                                             \
+  sph_u32 h03, h02, h01, h00, h13, h12, h11, h10;                              \
+  sph_u32 h23, h22, h21, h20, h33, h32, h31, h30;                              \
+  sph_u32 h43, h42, h41, h40, h53, h52, h51, h50;                              \
+  sph_u32 h63, h62, h61, h60, h73, h72, h71, h70;                              \
+  sph_u32 tmp;
+
+#define READ_STATE(state)                                                      \
+  do {                                                                         \
+    h03 = (state)->H.narrow[0];                                                \
+    h02 = (state)->H.narrow[1];                                                \
+    h01 = (state)->H.narrow[2];                                                \
+    h00 = (state)->H.narrow[3];                                                \
+    h13 = (state)->H.narrow[4];                                                \
+    h12 = (state)->H.narrow[5];                                                \
+    h11 = (state)->H.narrow[6];                                                \
+    h10 = (state)->H.narrow[7];                                                \
+    h23 = (state)->H.narrow[8];                                                \
+    h22 = (state)->H.narrow[9];                                                \
+    h21 = (state)->H.narrow[10];                                               \
+    h20 = (state)->H.narrow[11];                                               \
+    h33 = (state)->H.narrow[12];                                               \
+    h32 = (state)->H.narrow[13];                                               \
+    h31 = (state)->H.narrow[14];                                               \
+    h30 = (state)->H.narrow[15];                                               \
+    h43 = (state)->H.narrow[16];                                               \
+    h42 = (state)->H.narrow[17];                                               \
+    h41 = (state)->H.narrow[18];                                               \
+    h40 = (state)->H.narrow[19];                                               \
+    h53 = (state)->H.narrow[20];                                               \
+    h52 = (state)->H.narrow[21];                                               \
+    h51 = (state)->H.narrow[22];                                               \
+    h50 = (state)->H.narrow[23];                                               \
+    h63 = (state)->H.narrow[24];                                               \
+    h62 = (state)->H.narrow[25];                                               \
+    h61 = (state)->H.narrow[26];                                               \
+    h60 = (state)->H.narrow[27];                                               \
+    h73 = (state)->H.narrow[28];                                               \
+    h72 = (state)->H.narrow[29];                                               \
+    h71 = (state)->H.narrow[30];                                               \
+    h70 = (state)->H.narrow[31];                                               \
+  } while (0)
+
+#define WRITE_STATE(state)                                                     \
+  do {                                                                         \
+    (state)->H.narrow[0] = h03;                                                \
+    (state)->H.narrow[1] = h02;                                                \
+    (state)->H.narrow[2] = h01;                                                \
+    (state)->H.narrow[3] = h00;                                                \
+    (state)->H.narrow[4] = h13;                                                \
+    (state)->H.narrow[5] = h12;                                                \
+    (state)->H.narrow[6] = h11;                                                \
+    (state)->H.narrow[7] = h10;                                                \
+    (state)->H.narrow[8] = h23;                                                \
+    (state)->H.narrow[9] = h22;                                                \
+    (state)->H.narrow[10] = h21;                                               \
+    (state)->H.narrow[11] = h20;                                               \
+    (state)->H.narrow[12] = h33;                                               \
+    (state)->H.narrow[13] = h32;                                               \
+    (state)->H.narrow[14] = h31;                                               \
+    (state)->H.narrow[15] = h30;                                               \
+    (state)->H.narrow[16] = h43;                                               \
+    (state)->H.narrow[17] = h42;                                               \
+    (state)->H.narrow[18] = h41;                                               \
+    (state)->H.narrow[19] = h40;                                               \
+    (state)->H.narrow[20] = h53;                                               \
+    (state)->H.narrow[21] = h52;                                               \
+    (state)->H.narrow[22] = h51;                                               \
+    (state)->H.narrow[23] = h50;                                               \
+    (state)->H.narrow[24] = h63;                                               \
+    (state)->H.narrow[25] = h62;                                               \
+    (state)->H.narrow[26] = h61;                                               \
+    (state)->H.narrow[27] = h60;                                               \
+    (state)->H.narrow[28] = h73;                                               \
+    (state)->H.narrow[29] = h72;                                               \
+    (state)->H.narrow[30] = h71;                                               \
+    (state)->H.narrow[31] = h70;                                               \
+  } while (0)
+
+#define INPUT_BUF1                                                             \
+  sph_u32 m03 = dec32e_aligned(buf + 0);                                       \
+  sph_u32 m02 = dec32e_aligned(buf + 4);                                       \
+  sph_u32 m01 = dec32e_aligned(buf + 8);                                       \
+  sph_u32 m00 = dec32e_aligned(buf + 12);                                      \
+  sph_u32 m13 = dec32e_aligned(buf + 16);                                      \
+  sph_u32 m12 = dec32e_aligned(buf + 20);                                      \
+  sph_u32 m11 = dec32e_aligned(buf + 24);                                      \
+  sph_u32 m10 = dec32e_aligned(buf + 28);                                      \
+  sph_u32 m23 = dec32e_aligned(buf + 32);                                      \
+  sph_u32 m22 = dec32e_aligned(buf + 36);                                      \
+  sph_u32 m21 = dec32e_aligned(buf + 40);                                      \
+  sph_u32 m20 = dec32e_aligned(buf + 44);                                      \
+  sph_u32 m33 = dec32e_aligned(buf + 48);                                      \
+  sph_u32 m32 = dec32e_aligned(buf + 52);                                      \
+  sph_u32 m31 = dec32e_aligned(buf + 56);                                      \
+  sph_u32 m30 = dec32e_aligned(buf + 60);                                      \
+  h03 ^= m03;                                                                  \
+  h02 ^= m02;                                                                  \
+  h01 ^= m01;                                                                  \
+  h00 ^= m00;                                                                  \
+  h13 ^= m13;                                                                  \
+  h12 ^= m12;                                                                  \
+  h11 ^= m11;                                                                  \
+  h10 ^= m10;                                                                  \
+  h23 ^= m23;                                                                  \
+  h22 ^= m22;                                                                  \
+  h21 ^= m21;                                                                  \
+  h20 ^= m20;                                                                  \
+  h33 ^= m33;                                                                  \
+  h32 ^= m32;                                                                  \
+  h31 ^= m31;                                                                  \
+  h30 ^= m30;
+
+#define INPUT_BUF2                                                             \
+  h43 ^= m03;                                                                  \
+  h42 ^= m02;                                                                  \
+  h41 ^= m01;                                                                  \
+  h40 ^= m00;                                                                  \
+  h53 ^= m13;                                                                  \
+  h52 ^= m12;                                                                  \
+  h51 ^= m11;                                                                  \
+  h50 ^= m10;                                                                  \
+  h63 ^= m23;                                                                  \
+  h62 ^= m22;                                                                  \
+  h61 ^= m21;                                                                  \
+  h60 ^= m20;                                                                  \
+  h73 ^= m33;                                                                  \
+  h72 ^= m32;                                                                  \
+  h71 ^= m31;                                                                  \
+  h70 ^= m30;
+
+static const sph_u32 IV224[] = {
+    C32e(0x2dfedd62), C32e(0xf99a98ac), C32e(0xae7cacd6), C32e(0x19d634e7),
+    C32e(0xa4831005), C32e(0xbc301216), C32e(0xb86038c6), C32e(0xc9661494),
+    C32e(0x66d9899f), C32e(0x2580706f), C32e(0xce9ea31b), C32e(0x1d9b1adc),
+    C32e(0x11e8325f), C32e(0x7b366e10), C32e(0xf994857f), C32e(0x02fa06c1),
+    C32e(0x1b4f1b5c), C32e(0xd8c840b3), C32e(0x97f6a17f), C32e(0x6e738099),
+    C32e(0xdcdf93a5), C32e(0xadeaa3d3), C32e(0xa431e8de), C32e(0xc9539a68),
+    C32e(0x22b4a98a), C32e(0xec86a1e4), C32e(0xd574ac95), C32e(0x9ce56cf0),
+    C32e(0x15960dea), C32e(0xb5ab2bbf), C32e(0x9611dcf0), C32e(0xdd64ea6e)};
+
+static const sph_u32 IV256[] = {
+    C32e(0xeb98a341), C32e(0x2c20d3eb), C32e(0x92cdbe7b), C32e(0x9cb245c1),
+    C32e(0x1c935191), C32e(0x60d4c7fa), C32e(0x260082d6), C32e(0x7e508a03),
+    C32e(0xa4239e26), C32e(0x7726b945), C32e(0xe0fb1a48), C32e(0xd41a9477),
+    C32e(0xcdb5ab26), C32e(0x026b177a), C32e(0x56f02442), C32e(0x0fff2fa8),
+    C32e(0x71a39689), C32e(0x7f2e4d75), C32e(0x1d144908), C32e(0xf77de262),
+    C32e(0x277695f7), C32e(0x76248f94), C32e(0x87d5b657), C32e(0x4780296c),
+    C32e(0x5c5e272d), C32e(0xac8e0d6c), C32e(0x518450c6), C32e(0x57057a0f),
+    C32e(0x7be4d367), C32e(0x702412ea), C32e(0x89e3ab13), C32e(0xd31cd769)};
+
+static const sph_u32 IV384[] = {
+    C32e(0x481e3bc6), C32e(0xd813398a), C32e(0x6d3b5e89), C32e(0x4ade879b),
+    C32e(0x63faea68), C32e(0xd480ad2e), C32e(0x332ccb21), C32e(0x480f8267),
+    C32e(0x98aec84d), C32e(0x9082b928), C32e(0xd455ea30), C32e(0x41114249),
+    C32e(0x36f555b2), C32e(0x924847ec), C32e(0xc7250a93), C32e(0xbaf43ce1),
+    C32e(0x569b7f8a), C32e(0x27db454c), C32e(0x9efcbd49), C32e(0x6397af0e),
+    C32e(0x589fc27d), C32e(0x26aa80cd), C32e(0x80c08b8c), C32e(0x9deb2eda),
+    C32e(0x8a7981e8), C32e(0xf8d5373a), C32e(0xf43967ad), C32e(0xddd17a71),
+    C32e(0xa9b4d3bd), C32e(0xa475d394), C32e(0x976c3fba), C32e(0x9842737f)};
+
+static const sph_u32 IV512[] = {
+    C32e(0x6fd14b96), C32e(0x3e00aa17), C32e(0x636a2e05), C32e(0x7a15d543),
+    C32e(0x8a225e8d), C32e(0x0c97ef0b), C32e(0xe9341259), C32e(0xf2b3c361),
+    C32e(0x891da0c1), C32e(0x536f801e), C32e(0x2aa9056b), C32e(0xea2b6d80),
+    C32e(0x588eccdb), C32e(0x2075baa6), C32e(0xa90f3a76), C32e(0xbaf83bf7),
+    C32e(0x0169e605), C32e(0x41e34a69), C32e(0x46b58a8e), C32e(0x2e6fe65a),
+    C32e(0x1047a7d0), C32e(0xc1843c24), C32e(0x3b6e71b1), C32e(0x2d5ac199),
+    C32e(0xcf57f6ec), C32e(0x9db1f856), C32e(0xa706887c), C32e(0x5716b156),
+    C32e(0xe3c2fcdf), C32e(0xe68517fb), C32e(0x545a4678), C32e(0xcc8cdd4b)};
+
+#endif
+
+#define SL(ro) SLu(r + ro, ro)
+
+#define SLu(r, ro)                                                             \
+  do {                                                                         \
+    S(h0, h2, h4, h6, Ceven_, r);                                              \
+    S(h1, h3, h5, h7, Codd_, r);                                               \
+    L(h0, h2, h4, h6, h1, h3, h5, h7);                                         \
+    W##ro(h1);                                                                 \
+    W##ro(h3);                                                                 \
+    W##ro(h5);                                                                 \
+    W##ro(h7);                                                                 \
+  } while (0)
+
+#if SPH_SMALL_FOOTPRINT_JH
+
+#if SPH_JH_64
+
+/*
+ * The "small footprint" 64-bit version just uses a partially unrolled
+ * loop.
+ */
+
+#define E8                                                                     \
+  do {                                                                         \
+    unsigned r;                                                                \
+    for (r = 0; r < 42; r += 7) {                                              \
+      SL(0);                                                                   \
+      SL(1);                                                                   \
+      SL(2);                                                                   \
+      SL(3);                                                                   \
+      SL(4);                                                                   \
+      SL(5);                                                                   \
+      SL(6);                                                                   \
+    }                                                                          \
+  } while (0)
+
+#else
+
+#define E8                                                                     \
+  do {                                                                         \
+    unsigned r, g;                                                             \
+    for (r = g = 0; r < 42; r++) {                                             \
+      S(h0, h2, h4, h6, Ceven_, r);                                            \
+      S(h1, h3, h5, h7, Codd_, r);                                             \
+      L(h0, h2, h4, h6, h1, h3, h5, h7);                                       \
+      switch (g) {                                                             \
+      case 0:                                                                  \
+        W0(h1);                                                                \
+        W0(h3);                                                                \
+        W0(h5);                                                                \
+        W0(h7);                                                                \
+        break;                                                                 \
+      case 1:                                                                  \
+        W1(h1);                                                                \
+        W1(h3);                                                                \
+        W1(h5);                                                                \
+        W1(h7);                                                                \
+        break;                                                                 \
+      case 2:                                                                  \
+        W2(h1);                                                                \
+        W2(h3);                                                                \
+        W2(h5);                                                                \
+        W2(h7);                                                                \
+        break;                                                                 \
+      case 3:                                                                  \
+        W3(h1);                                                                \
+        W3(h3);                                                                \
+        W3(h5);                                                                \
+        W3(h7);                                                                \
+        break;                                                                 \
+      case 4:                                                                  \
+        W4(h1);                                                                \
+        W4(h3);                                                                \
+        W4(h5);                                                                \
+        W4(h7);                                                                \
+        break;                                                                 \
+      case 5:                                                                  \
+        W5(h1);                                                                \
+        W5(h3);                                                                \
+        W5(h5);                                                                \
+        W5(h7);                                                                \
+        break;                                                                 \
+      case 6:                                                                  \
+        W6(h1);                                                                \
+        W6(h3);                                                                \
+        W6(h5);                                                                \
+        W6(h7);                                                                \
+        break;                                                                 \
+      }                                                                        \
+      if (++g == 7)                                                            \
+        g = 0;                                                                 \
+    }                                                                          \
+  } while (0)
+
+#endif
+
+#else
+
+#if SPH_JH_64
+
+/*
+ * On a "true 64-bit" architecture, we can unroll at will.
+ */
+
+#define E8                                                                     \
+  do {                                                                         \
+    SLu(0, 0);                                                                 \
+    SLu(1, 1);                                                                 \
+    SLu(2, 2);                                                                 \
+    SLu(3, 3);                                                                 \
+    SLu(4, 4);                                                                 \
+    SLu(5, 5);                                                                 \
+    SLu(6, 6);                                                                 \
+    SLu(7, 0);                                                                 \
+    SLu(8, 1);                                                                 \
+    SLu(9, 2);                                                                 \
+    SLu(10, 3);                                                                \
+    SLu(11, 4);                                                                \
+    SLu(12, 5);                                                                \
+    SLu(13, 6);                                                                \
+    SLu(14, 0);                                                                \
+    SLu(15, 1);                                                                \
+    SLu(16, 2);                                                                \
+    SLu(17, 3);                                                                \
+    SLu(18, 4);                                                                \
+    SLu(19, 5);                                                                \
+    SLu(20, 6);                                                                \
+    SLu(21, 0);                                                                \
+    SLu(22, 1);                                                                \
+    SLu(23, 2);                                                                \
+    SLu(24, 3);                                                                \
+    SLu(25, 4);                                                                \
+    SLu(26, 5);                                                                \
+    SLu(27, 6);                                                                \
+    SLu(28, 0);                                                                \
+    SLu(29, 1);                                                                \
+    SLu(30, 2);                                                                \
+    SLu(31, 3);                                                                \
+    SLu(32, 4);                                                                \
+    SLu(33, 5);                                                                \
+    SLu(34, 6);                                                                \
+    SLu(35, 0);                                                                \
+    SLu(36, 1);                                                                \
+    SLu(37, 2);                                                                \
+    SLu(38, 3);                                                                \
+    SLu(39, 4);                                                                \
+    SLu(40, 5);                                                                \
+    SLu(41, 6);                                                                \
+  } while (0)
+
+#else
+
+/*
+ * We are not aiming at a small footprint, but we are still using a
+ * 32-bit implementation. Full loop unrolling would smash the L1
+ * cache on some "big" architectures (32 kB L1 cache).
+ */
+
+#define E8                                                                     \
+  do {                                                                         \
+    unsigned r;                                                                \
+    for (r = 0; r < 42; r += 7) {                                              \
+      SL(0);                                                                   \
+      SL(1);                                                                   \
+      SL(2);                                                                   \
+      SL(3);                                                                   \
+      SL(4);                                                                   \
+      SL(5);                                                                   \
+      SL(6);                                                                   \
+    }                                                                          \
+  } while (0)
+
+#endif
+
+#endif
+
+static void jh_init(sph_jh_context *sc, const void *iv) {
+  sc->ptr = 0;
+#if SPH_JH_64
+  memcpy(sc->H.wide, iv, sizeof sc->H.wide);
+#else
+  memcpy(sc->H.narrow, iv, sizeof sc->H.narrow);
+#endif
+#if SPH_64
+  sc->block_count = 0;
+#else
+  sc->block_count_high = 0;
+  sc->block_count_low = 0;
+#endif
+}
+
+static void jh_core(sph_jh_context *sc, const void *data, size_t len) {
+  unsigned char *buf;
+  size_t ptr;
+  DECL_STATE
+
+  buf = sc->buf;
+  ptr = sc->ptr;
+
+  if (len < (sizeof sc->buf) - ptr) {
+    memcpy(buf + ptr, data, len);
+    ptr += len;
+    sc->ptr = ptr;
+    return;
+  }
+
+  READ_STATE(sc);
+  while (len > 0) {
+    size_t clen;
+
+    clen = (sizeof sc->buf) - ptr;
+    if (clen > len)
+      clen = len;
+    memcpy(buf + ptr, data, clen);
+    ptr += clen;
+    data = (const unsigned char *)data + clen;
+    len -= clen;
+    if (ptr == sizeof sc->buf) {
+      INPUT_BUF1;
+      E8;
+      INPUT_BUF2;
+#if SPH_64
+      sc->block_count++;
+#else
+      if ((sc->block_count_low = SPH_T32(sc->block_count_low + 1)) == 0)
+        sc->block_count_high++;
+#endif
+      ptr = 0;
+    }
+  }
+  WRITE_STATE(sc);
+  sc->ptr = ptr;
+}
+
+static void jh_close(sph_jh_context *sc, unsigned ub, unsigned n, void *dst,
+                     size_t out_size_w32,
+                     const void * iv) {
+  unsigned z;
+  unsigned char buf[128];
+  size_t numz, u;
+#if SPH_64
+  sph_u64 l0, l1;
+#else
+  sph_u32 l0, l1, l2, l3;
+#endif
+
+  z = 0x80 >> n;
+  buf[0] = ((ub & -z) | z) & 0xFF;
+  if (sc->ptr == 0 && n == 0) {
+    numz = 47;
+  } else {
+    numz = 111 - sc->ptr;
+  }
+  memset(buf + 1, 0, numz);
+#if SPH_64
+  l0 = SPH_T64(sc->block_count << 9) + (sc->ptr << 3) + n;
+  l1 = SPH_T64(sc->block_count >> 55);
+  sph_enc64be(buf + numz + 1, l1);
+  sph_enc64be(buf + numz + 9, l0);
+#else
+  l0 = SPH_T32(sc->block_count_low << 9) + (sc->ptr << 3) + n;
+  l1 = SPH_T32(sc->block_count_low >> 23) + SPH_T32(sc->block_count_high << 9);
+  l2 = SPH_T32(sc->block_count_high >> 23);
+  l3 = 0;
+  sph_enc32be(buf + numz + 1, l3);
+  sph_enc32be(buf + numz + 5, l2);
+  sph_enc32be(buf + numz + 9, l1);
+  sph_enc32be(buf + numz + 13, l0);
+#endif
+  jh_core(sc, buf, numz + 17);
+#if SPH_JH_64
+  for (u = 0; u < 8; u++)
+    enc64e(buf + (u << 3), sc->H.wide[u + 8]);
+#else
+  for (u = 0; u < 16; u++)
+    enc32e(buf + (u << 2), sc->H.narrow[u + 16]);
+#endif
+  memcpy(dst, buf + ((16 - out_size_w32) << 2), out_size_w32 << 2);
+  //	jh_init(sc, iv);
+}
+
+/* see sph_jh.h */
+void sph_jh224_init(void *cc) { jh_init(cc, IV224); }
+
+/* see sph_jh.h */
+void sph_jh224(void *cc, const void *data, size_t len) {
+  jh_core(cc, data, len);
+}
+
+/* see sph_jh.h */
+void sph_jh224_close(void *cc, void *dst) { jh_close(cc, 0, 0, dst, 7, IV224); }
+
+/* see sph_jh.h */
+void sph_jh224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) {
+  jh_close(cc, ub, n, dst, 7, IV224);
+}
+
+/* see sph_jh.h */
+void sph_jh256_init(void *cc) { jh_init(cc, IV256); }
+
+/* see sph_jh.h */
+void sph_jh256(void *cc, const void *data, size_t len) {
+  jh_core(cc, data, len);
+}
+
+/* see sph_jh.h */
+void sph_jh256_close(void *cc, void *dst) { jh_close(cc, 0, 0, dst, 8, IV256); }
+
+/* see sph_jh.h */
+void sph_jh256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) {
+  jh_close(cc, ub, n, dst, 8, IV256);
+}
+
+/* see sph_jh.h */
+void sph_jh384_init(void *cc) { jh_init(cc, IV384); }
+
+/* see sph_jh.h */
+void sph_jh384(void *cc, const void *data, size_t len) {
+  jh_core(cc, data, len);
+}
+
+/* see sph_jh.h */
+void sph_jh384_close(void *cc, void *dst) {
+  jh_close(cc, 0, 0, dst, 12, IV384);
+}
+
+/* see sph_jh.h */
+void sph_jh384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) {
+  jh_close(cc, ub, n, dst, 12, IV384);
+}
+
+/* see sph_jh.h */
+void sph_jh512_init(void *cc) { jh_init(cc, IV512); }
+
+/* see sph_jh.h */
+void sph_jh512(void *cc, const void *data, size_t len) {
+  jh_core(cc, data, len);
+}
+
+/* see sph_jh.h */
+void sph_jh512_close(void *cc, void *dst) {
+  jh_close(cc, 0, 0, dst, 16, IV512);
+}
+
+/* see sph_jh.h */
+void sph_jh512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) {
+  jh_close(cc, ub, n, dst, 16, IV512);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_jh.h b/src/crypto/ghostrider/sph_jh.h
new file mode 100644
index 000000000..82fae58df
--- /dev/null
+++ b/src/crypto/ghostrider/sph_jh.h
@@ -0,0 +1,298 @@
+/* $Id: sph_jh.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * JH interface. JH is a family of functions which differ by
+ * their output size; this implementation defines JH for output
+ * sizes 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_jh.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_JH_H__
+#define SPH_JH_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for JH-224.
+ */
+#define SPH_SIZE_jh224   224
+
+/**
+ * Output size (in bits) for JH-256.
+ */
+#define SPH_SIZE_jh256   256
+
+/**
+ * Output size (in bits) for JH-384.
+ */
+#define SPH_SIZE_jh384   384
+
+/**
+ * Output size (in bits) for JH-512.
+ */
+#define SPH_SIZE_jh512   512
+
+/**
+ * This structure is a context for JH computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a JH computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running JH computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	union {
+#if SPH_64
+		sph_u64 wide[16];
+#endif
+		sph_u32 narrow[32];
+	} H;
+#if SPH_64
+	sph_u64 block_count;
+#else
+	sph_u32 block_count_high, block_count_low;
+#endif
+#endif
+} sph_jh_context;
+
+/**
+ * Type for a JH-224 context (identical to the common context).
+ */
+typedef sph_jh_context sph_jh224_context;
+
+/**
+ * Type for a JH-256 context (identical to the common context).
+ */
+typedef sph_jh_context sph_jh256_context;
+
+/**
+ * Type for a JH-384 context (identical to the common context).
+ */
+typedef sph_jh_context sph_jh384_context;
+
+/**
+ * Type for a JH-512 context (identical to the common context).
+ */
+typedef sph_jh_context sph_jh512_context;
+
+/**
+ * Initialize a JH-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the JH-224 context (pointer to a
+ *             <code>sph_jh224_context</code>)
+ */
+void sph_jh224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the JH-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_jh224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current JH-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the JH-224 context
+ * @param dst   the destination buffer
+ */
+void sph_jh224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the JH-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_jh224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a JH-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the JH-256 context (pointer to a
+ *             <code>sph_jh256_context</code>)
+ */
+void sph_jh256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the JH-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_jh256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current JH-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the JH-256 context
+ * @param dst   the destination buffer
+ */
+void sph_jh256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the JH-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_jh256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a JH-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the JH-384 context (pointer to a
+ *             <code>sph_jh384_context</code>)
+ */
+void sph_jh384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the JH-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_jh384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current JH-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the JH-384 context
+ * @param dst   the destination buffer
+ */
+void sph_jh384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the JH-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_jh384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a JH-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the JH-512 context (pointer to a
+ *             <code>sph_jh512_context</code>)
+ */
+void sph_jh512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the JH-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_jh512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current JH-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the JH-512 context
+ * @param dst   the destination buffer
+ */
+void sph_jh512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the JH-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_jh512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_keccak.c b/src/crypto/ghostrider/sph_keccak.c
new file mode 100644
index 000000000..539ec02c9
--- /dev/null
+++ b/src/crypto/ghostrider/sph_keccak.c
@@ -0,0 +1,1868 @@
+/* $Id: keccak.c 259 2011-07-19 22:11:27Z tp $ */
+/*
+ * Keccak implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include "sph_keccak.h"
+#include <stddef.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Taken from keccak-gate.c
+int hard_coded_eb = 1;
+
+/*
+ * Parameters:
+ *
+ *  SPH_KECCAK_64          use a 64-bit type
+ *  SPH_KECCAK_UNROLL      number of loops to unroll (0/undef for full unroll)
+ *  SPH_KECCAK_INTERLEAVE  use bit-interleaving (32-bit type only)
+ *  SPH_KECCAK_NOCOPY      do not copy the state into local variables
+ *
+ * If there is no usable 64-bit type, the code automatically switches
+ * back to the 32-bit implementation.
+ *
+ * Some tests on an Intel Core2 Q6600 (both 64-bit and 32-bit, 32 kB L1
+ * code cache), a PowerPC (G3, 32 kB L1 code cache), an ARM920T core
+ * (16 kB L1 code cache), and a small MIPS-compatible CPU (Broadcom BCM3302,
+ * 8 kB L1 code cache), seem to show that the following are optimal:
+ *
+ * -- x86, 64-bit: use the 64-bit implementation, unroll 8 rounds,
+ * do not copy the state; unrolling 2, 6 or all rounds also provides
+ * near-optimal performance.
+ * -- x86, 32-bit: use the 32-bit implementation, unroll 6 rounds,
+ * interleave, do not copy the state. Unrolling 1, 2, 4 or 8 rounds
+ * also provides near-optimal performance.
+ * -- PowerPC: use the 64-bit implementation, unroll 8 rounds,
+ * copy the state. Unrolling 4 or 6 rounds is near-optimal.
+ * -- ARM: use the 64-bit implementation, unroll 2 or 4 rounds,
+ * copy the state.
+ * -- MIPS: use the 64-bit implementation, unroll 2 rounds, copy
+ * the state. Unrolling only 1 round is also near-optimal.
+ *
+ * Also, interleaving does not always yield actual improvements when
+ * using a 32-bit implementation; in particular when the architecture
+ * does not offer a native rotation opcode (interleaving replaces one
+ * 64-bit rotation with two 32-bit rotations, which is a gain only if
+ * there is a native 32-bit rotation opcode and not a native 64-bit
+ * rotation opcode; also, interleaving implies a small overhead when
+ * processing input words).
+ *
+ * To sum up:
+ * -- when possible, use the 64-bit code
+ * -- exception: on 32-bit x86, use 32-bit code
+ * -- when using 32-bit code, use interleaving
+ * -- copy the state, except on x86
+ * -- unroll 8 rounds on "big" machine, 2 rounds on "small" machines
+ */
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_KECCAK
+#define SPH_SMALL_FOOTPRINT_KECCAK 1
+#endif
+
+/*
+ * By default, we select the 64-bit implementation if a 64-bit type
+ * is available, unless a 32-bit x86 is detected.
+ */
+#if !defined SPH_KECCAK_64 && SPH_64 &&                                        \
+    !(defined __i386__ || SPH_I386_GCC || SPH_I386_MSVC)
+#define SPH_KECCAK_64 1
+#endif
+
+/*
+ * If using a 32-bit implementation, we prefer to interleave.
+ */
+#if !SPH_KECCAK_64 && !defined SPH_KECCAK_INTERLEAVE
+#define SPH_KECCAK_INTERLEAVE 1
+#endif
+
+/*
+ * Unroll 8 rounds on big systems, 2 rounds on small systems.
+ */
+#ifndef SPH_KECCAK_UNROLL
+#if SPH_SMALL_FOOTPRINT_KECCAK
+#define SPH_KECCAK_UNROLL 2
+#else
+#define SPH_KECCAK_UNROLL 8
+#endif
+#endif
+
+/*
+ * We do not want to copy the state to local variables on x86 (32-bit
+ * and 64-bit alike).
+ */
+#ifndef SPH_KECCAK_NOCOPY
+#if defined __i386__ || defined __x86_64 || SPH_I386_MSVC || SPH_I386_GCC
+#define SPH_KECCAK_NOCOPY 1
+#else
+#define SPH_KECCAK_NOCOPY 0
+#endif
+#endif
+
+#ifdef _MSC_VER
+#pragma warning(disable : 4146)
+#endif
+
+#if SPH_KECCAK_64
+
+static const sph_u64 RC[] = {
+    SPH_C64(0x0000000000000001), SPH_C64(0x0000000000008082),
+    SPH_C64(0x800000000000808A), SPH_C64(0x8000000080008000),
+    SPH_C64(0x000000000000808B), SPH_C64(0x0000000080000001),
+    SPH_C64(0x8000000080008081), SPH_C64(0x8000000000008009),
+    SPH_C64(0x000000000000008A), SPH_C64(0x0000000000000088),
+    SPH_C64(0x0000000080008009), SPH_C64(0x000000008000000A),
+    SPH_C64(0x000000008000808B), SPH_C64(0x800000000000008B),
+    SPH_C64(0x8000000000008089), SPH_C64(0x8000000000008003),
+    SPH_C64(0x8000000000008002), SPH_C64(0x8000000000000080),
+    SPH_C64(0x000000000000800A), SPH_C64(0x800000008000000A),
+    SPH_C64(0x8000000080008081), SPH_C64(0x8000000000008080),
+    SPH_C64(0x0000000080000001), SPH_C64(0x8000000080008008)};
+
+#if SPH_KECCAK_NOCOPY
+
+#define a00 (kc->u.wide[0])
+#define a10 (kc->u.wide[1])
+#define a20 (kc->u.wide[2])
+#define a30 (kc->u.wide[3])
+#define a40 (kc->u.wide[4])
+#define a01 (kc->u.wide[5])
+#define a11 (kc->u.wide[6])
+#define a21 (kc->u.wide[7])
+#define a31 (kc->u.wide[8])
+#define a41 (kc->u.wide[9])
+#define a02 (kc->u.wide[10])
+#define a12 (kc->u.wide[11])
+#define a22 (kc->u.wide[12])
+#define a32 (kc->u.wide[13])
+#define a42 (kc->u.wide[14])
+#define a03 (kc->u.wide[15])
+#define a13 (kc->u.wide[16])
+#define a23 (kc->u.wide[17])
+#define a33 (kc->u.wide[18])
+#define a43 (kc->u.wide[19])
+#define a04 (kc->u.wide[20])
+#define a14 (kc->u.wide[21])
+#define a24 (kc->u.wide[22])
+#define a34 (kc->u.wide[23])
+#define a44 (kc->u.wide[24])
+
+#define DECL_STATE
+#define READ_STATE(sc)
+#define WRITE_STATE(sc)
+
+#define INPUT_BUF(size)                                                        \
+  do {                                                                         \
+    size_t j;                                                                  \
+    for (j = 0; j < (size); j += 8) {                                          \
+      kc->u.wide[j >> 3] ^= sph_dec64le_aligned(buf + j);                      \
+    }                                                                          \
+  } while (0)
+
+#define INPUT_BUF144 INPUT_BUF(144)
+#define INPUT_BUF136 INPUT_BUF(136)
+#define INPUT_BUF104 INPUT_BUF(104)
+#define INPUT_BUF72 INPUT_BUF(72)
+
+#else
+
+#define DECL_STATE                                                             \
+  sph_u64 a00, a01, a02, a03, a04;                                             \
+  sph_u64 a10, a11, a12, a13, a14;                                             \
+  sph_u64 a20, a21, a22, a23, a24;                                             \
+  sph_u64 a30, a31, a32, a33, a34;                                             \
+  sph_u64 a40, a41, a42, a43, a44;
+
+#define READ_STATE(state)                                                      \
+  do {                                                                         \
+    a00 = (state)->u.wide[0];                                                  \
+    a10 = (state)->u.wide[1];                                                  \
+    a20 = (state)->u.wide[2];                                                  \
+    a30 = (state)->u.wide[3];                                                  \
+    a40 = (state)->u.wide[4];                                                  \
+    a01 = (state)->u.wide[5];                                                  \
+    a11 = (state)->u.wide[6];                                                  \
+    a21 = (state)->u.wide[7];                                                  \
+    a31 = (state)->u.wide[8];                                                  \
+    a41 = (state)->u.wide[9];                                                  \
+    a02 = (state)->u.wide[10];                                                 \
+    a12 = (state)->u.wide[11];                                                 \
+    a22 = (state)->u.wide[12];                                                 \
+    a32 = (state)->u.wide[13];                                                 \
+    a42 = (state)->u.wide[14];                                                 \
+    a03 = (state)->u.wide[15];                                                 \
+    a13 = (state)->u.wide[16];                                                 \
+    a23 = (state)->u.wide[17];                                                 \
+    a33 = (state)->u.wide[18];                                                 \
+    a43 = (state)->u.wide[19];                                                 \
+    a04 = (state)->u.wide[20];                                                 \
+    a14 = (state)->u.wide[21];                                                 \
+    a24 = (state)->u.wide[22];                                                 \
+    a34 = (state)->u.wide[23];                                                 \
+    a44 = (state)->u.wide[24];                                                 \
+  } while (0)
+
+#define WRITE_STATE(state)                                                     \
+  do {                                                                         \
+    (state)->u.wide[0] = a00;                                                  \
+    (state)->u.wide[1] = a10;                                                  \
+    (state)->u.wide[2] = a20;                                                  \
+    (state)->u.wide[3] = a30;                                                  \
+    (state)->u.wide[4] = a40;                                                  \
+    (state)->u.wide[5] = a01;                                                  \
+    (state)->u.wide[6] = a11;                                                  \
+    (state)->u.wide[7] = a21;                                                  \
+    (state)->u.wide[8] = a31;                                                  \
+    (state)->u.wide[9] = a41;                                                  \
+    (state)->u.wide[10] = a02;                                                 \
+    (state)->u.wide[11] = a12;                                                 \
+    (state)->u.wide[12] = a22;                                                 \
+    (state)->u.wide[13] = a32;                                                 \
+    (state)->u.wide[14] = a42;                                                 \
+    (state)->u.wide[15] = a03;                                                 \
+    (state)->u.wide[16] = a13;                                                 \
+    (state)->u.wide[17] = a23;                                                 \
+    (state)->u.wide[18] = a33;                                                 \
+    (state)->u.wide[19] = a43;                                                 \
+    (state)->u.wide[20] = a04;                                                 \
+    (state)->u.wide[21] = a14;                                                 \
+    (state)->u.wide[22] = a24;                                                 \
+    (state)->u.wide[23] = a34;                                                 \
+    (state)->u.wide[24] = a44;                                                 \
+  } while (0)
+
+#define INPUT_BUF144                                                           \
+  do {                                                                         \
+    a00 ^= sph_dec64le_aligned(buf + 0);                                       \
+    a10 ^= sph_dec64le_aligned(buf + 8);                                       \
+    a20 ^= sph_dec64le_aligned(buf + 16);                                      \
+    a30 ^= sph_dec64le_aligned(buf + 24);                                      \
+    a40 ^= sph_dec64le_aligned(buf + 32);                                      \
+    a01 ^= sph_dec64le_aligned(buf + 40);                                      \
+    a11 ^= sph_dec64le_aligned(buf + 48);                                      \
+    a21 ^= sph_dec64le_aligned(buf + 56);                                      \
+    a31 ^= sph_dec64le_aligned(buf + 64);                                      \
+    a41 ^= sph_dec64le_aligned(buf + 72);                                      \
+    a02 ^= sph_dec64le_aligned(buf + 80);                                      \
+    a12 ^= sph_dec64le_aligned(buf + 88);                                      \
+    a22 ^= sph_dec64le_aligned(buf + 96);                                      \
+    a32 ^= sph_dec64le_aligned(buf + 104);                                     \
+    a42 ^= sph_dec64le_aligned(buf + 112);                                     \
+    a03 ^= sph_dec64le_aligned(buf + 120);                                     \
+    a13 ^= sph_dec64le_aligned(buf + 128);                                     \
+    a23 ^= sph_dec64le_aligned(buf + 136);                                     \
+  } while (0)
+
+#define INPUT_BUF136                                                           \
+  do {                                                                         \
+    a00 ^= sph_dec64le_aligned(buf + 0);                                       \
+    a10 ^= sph_dec64le_aligned(buf + 8);                                       \
+    a20 ^= sph_dec64le_aligned(buf + 16);                                      \
+    a30 ^= sph_dec64le_aligned(buf + 24);                                      \
+    a40 ^= sph_dec64le_aligned(buf + 32);                                      \
+    a01 ^= sph_dec64le_aligned(buf + 40);                                      \
+    a11 ^= sph_dec64le_aligned(buf + 48);                                      \
+    a21 ^= sph_dec64le_aligned(buf + 56);                                      \
+    a31 ^= sph_dec64le_aligned(buf + 64);                                      \
+    a41 ^= sph_dec64le_aligned(buf + 72);                                      \
+    a02 ^= sph_dec64le_aligned(buf + 80);                                      \
+    a12 ^= sph_dec64le_aligned(buf + 88);                                      \
+    a22 ^= sph_dec64le_aligned(buf + 96);                                      \
+    a32 ^= sph_dec64le_aligned(buf + 104);                                     \
+    a42 ^= sph_dec64le_aligned(buf + 112);                                     \
+    a03 ^= sph_dec64le_aligned(buf + 120);                                     \
+    a13 ^= sph_dec64le_aligned(buf + 128);                                     \
+  } while (0)
+
+#define INPUT_BUF104                                                           \
+  do {                                                                         \
+    a00 ^= sph_dec64le_aligned(buf + 0);                                       \
+    a10 ^= sph_dec64le_aligned(buf + 8);                                       \
+    a20 ^= sph_dec64le_aligned(buf + 16);                                      \
+    a30 ^= sph_dec64le_aligned(buf + 24);                                      \
+    a40 ^= sph_dec64le_aligned(buf + 32);                                      \
+    a01 ^= sph_dec64le_aligned(buf + 40);                                      \
+    a11 ^= sph_dec64le_aligned(buf + 48);                                      \
+    a21 ^= sph_dec64le_aligned(buf + 56);                                      \
+    a31 ^= sph_dec64le_aligned(buf + 64);                                      \
+    a41 ^= sph_dec64le_aligned(buf + 72);                                      \
+    a02 ^= sph_dec64le_aligned(buf + 80);                                      \
+    a12 ^= sph_dec64le_aligned(buf + 88);                                      \
+    a22 ^= sph_dec64le_aligned(buf + 96);                                      \
+  } while (0)
+
+#define INPUT_BUF72                                                            \
+  do {                                                                         \
+    a00 ^= sph_dec64le_aligned(buf + 0);                                       \
+    a10 ^= sph_dec64le_aligned(buf + 8);                                       \
+    a20 ^= sph_dec64le_aligned(buf + 16);                                      \
+    a30 ^= sph_dec64le_aligned(buf + 24);                                      \
+    a40 ^= sph_dec64le_aligned(buf + 32);                                      \
+    a01 ^= sph_dec64le_aligned(buf + 40);                                      \
+    a11 ^= sph_dec64le_aligned(buf + 48);                                      \
+    a21 ^= sph_dec64le_aligned(buf + 56);                                      \
+    a31 ^= sph_dec64le_aligned(buf + 64);                                      \
+  } while (0)
+
+#define INPUT_BUF(lim)                                                         \
+  do {                                                                         \
+    a00 ^= sph_dec64le_aligned(buf + 0);                                       \
+    a10 ^= sph_dec64le_aligned(buf + 8);                                       \
+    a20 ^= sph_dec64le_aligned(buf + 16);                                      \
+    a30 ^= sph_dec64le_aligned(buf + 24);                                      \
+    a40 ^= sph_dec64le_aligned(buf + 32);                                      \
+    a01 ^= sph_dec64le_aligned(buf + 40);                                      \
+    a11 ^= sph_dec64le_aligned(buf + 48);                                      \
+    a21 ^= sph_dec64le_aligned(buf + 56);                                      \
+    a31 ^= sph_dec64le_aligned(buf + 64);                                      \
+    if ((lim) == 72)                                                           \
+      break;                                                                   \
+    a41 ^= sph_dec64le_aligned(buf + 72);                                      \
+    a02 ^= sph_dec64le_aligned(buf + 80);                                      \
+    a12 ^= sph_dec64le_aligned(buf + 88);                                      \
+    a22 ^= sph_dec64le_aligned(buf + 96);                                      \
+    if ((lim) == 104)                                                          \
+      break;                                                                   \
+    a32 ^= sph_dec64le_aligned(buf + 104);                                     \
+    a42 ^= sph_dec64le_aligned(buf + 112);                                     \
+    a03 ^= sph_dec64le_aligned(buf + 120);                                     \
+    a13 ^= sph_dec64le_aligned(buf + 128);                                     \
+    if ((lim) == 136)                                                          \
+      break;                                                                   \
+    a23 ^= sph_dec64le_aligned(buf + 136);                                     \
+  } while (0)
+
+#endif
+
+#define DECL64(x) sph_u64 x
+#define MOV64(d, s) (d = s)
+#define XOR64(d, a, b) (d = a ^ b)
+#define AND64(d, a, b) (d = a & b)
+#define OR64(d, a, b) (d = a | b)
+#define NOT64(d, s) (d = SPH_T64(~s))
+#define ROL64(d, v, n) (d = SPH_ROTL64(v, n))
+#define XOR64_IOTA XOR64
+
+#else
+
+static const struct {
+  sph_u32 high, low;
+} RC[] = {
+#if SPH_KECCAK_INTERLEAVE
+    {SPH_C32(0x00000000), SPH_C32(0x00000001)},
+    {SPH_C32(0x00000089), SPH_C32(0x00000000)},
+    {SPH_C32(0x8000008B), SPH_C32(0x00000000)},
+    {SPH_C32(0x80008080), SPH_C32(0x00000000)},
+    {SPH_C32(0x0000008B), SPH_C32(0x00000001)},
+    {SPH_C32(0x00008000), SPH_C32(0x00000001)},
+    {SPH_C32(0x80008088), SPH_C32(0x00000001)},
+    {SPH_C32(0x80000082), SPH_C32(0x00000001)},
+    {SPH_C32(0x0000000B), SPH_C32(0x00000000)},
+    {SPH_C32(0x0000000A), SPH_C32(0x00000000)},
+    {SPH_C32(0x00008082), SPH_C32(0x00000001)},
+    {SPH_C32(0x00008003), SPH_C32(0x00000000)},
+    {SPH_C32(0x0000808B), SPH_C32(0x00000001)},
+    {SPH_C32(0x8000000B), SPH_C32(0x00000001)},
+    {SPH_C32(0x8000008A), SPH_C32(0x00000001)},
+    {SPH_C32(0x80000081), SPH_C32(0x00000001)},
+    {SPH_C32(0x80000081), SPH_C32(0x00000000)},
+    {SPH_C32(0x80000008), SPH_C32(0x00000000)},
+    {SPH_C32(0x00000083), SPH_C32(0x00000000)},
+    {SPH_C32(0x80008003), SPH_C32(0x00000000)},
+    {SPH_C32(0x80008088), SPH_C32(0x00000001)},
+    {SPH_C32(0x80000088), SPH_C32(0x00000000)},
+    {SPH_C32(0x00008000), SPH_C32(0x00000001)},
+    {SPH_C32(0x80008082), SPH_C32(0x00000000)}
+#else
+    {SPH_C32(0x00000000), SPH_C32(0x00000001)},
+    {SPH_C32(0x00000000), SPH_C32(0x00008082)},
+    {SPH_C32(0x80000000), SPH_C32(0x0000808A)},
+    {SPH_C32(0x80000000), SPH_C32(0x80008000)},
+    {SPH_C32(0x00000000), SPH_C32(0x0000808B)},
+    {SPH_C32(0x00000000), SPH_C32(0x80000001)},
+    {SPH_C32(0x80000000), SPH_C32(0x80008081)},
+    {SPH_C32(0x80000000), SPH_C32(0x00008009)},
+    {SPH_C32(0x00000000), SPH_C32(0x0000008A)},
+    {SPH_C32(0x00000000), SPH_C32(0x00000088)},
+    {SPH_C32(0x00000000), SPH_C32(0x80008009)},
+    {SPH_C32(0x00000000), SPH_C32(0x8000000A)},
+    {SPH_C32(0x00000000), SPH_C32(0x8000808B)},
+    {SPH_C32(0x80000000), SPH_C32(0x0000008B)},
+    {SPH_C32(0x80000000), SPH_C32(0x00008089)},
+    {SPH_C32(0x80000000), SPH_C32(0x00008003)},
+    {SPH_C32(0x80000000), SPH_C32(0x00008002)},
+    {SPH_C32(0x80000000), SPH_C32(0x00000080)},
+    {SPH_C32(0x00000000), SPH_C32(0x0000800A)},
+    {SPH_C32(0x80000000), SPH_C32(0x8000000A)},
+    {SPH_C32(0x80000000), SPH_C32(0x80008081)},
+    {SPH_C32(0x80000000), SPH_C32(0x00008080)},
+    {SPH_C32(0x00000000), SPH_C32(0x80000001)},
+    {SPH_C32(0x80000000), SPH_C32(0x80008008)}
+#endif
+};
+
+#if SPH_KECCAK_INTERLEAVE
+
+#define INTERLEAVE(xl, xh)                                                     \
+  do {                                                                         \
+    sph_u32 l, h, t;                                                           \
+    l = (xl);                                                                  \
+    h = (xh);                                                                  \
+    t = (l ^ (l >> 1)) & SPH_C32(0x22222222);                                  \
+    l ^= t ^ (t << 1);                                                         \
+    t = (h ^ (h >> 1)) & SPH_C32(0x22222222);                                  \
+    h ^= t ^ (t << 1);                                                         \
+    t = (l ^ (l >> 2)) & SPH_C32(0x0C0C0C0C);                                  \
+    l ^= t ^ (t << 2);                                                         \
+    t = (h ^ (h >> 2)) & SPH_C32(0x0C0C0C0C);                                  \
+    h ^= t ^ (t << 2);                                                         \
+    t = (l ^ (l >> 4)) & SPH_C32(0x00F000F0);                                  \
+    l ^= t ^ (t << 4);                                                         \
+    t = (h ^ (h >> 4)) & SPH_C32(0x00F000F0);                                  \
+    h ^= t ^ (t << 4);                                                         \
+    t = (l ^ (l >> 8)) & SPH_C32(0x0000FF00);                                  \
+    l ^= t ^ (t << 8);                                                         \
+    t = (h ^ (h >> 8)) & SPH_C32(0x0000FF00);                                  \
+    h ^= t ^ (t << 8);                                                         \
+    t = (l ^ SPH_T32(h << 16)) & SPH_C32(0xFFFF0000);                          \
+    l ^= t;                                                                    \
+    h ^= t >> 16;                                                              \
+    (xl) = l;                                                                  \
+    (xh) = h;                                                                  \
+  } while (0)
+
+#define UNINTERLEAVE(xl, xh)                                                   \
+  do {                                                                         \
+    sph_u32 l, h, t;                                                           \
+    l = (xl);                                                                  \
+    h = (xh);                                                                  \
+    t = (l ^ SPH_T32(h << 16)) & SPH_C32(0xFFFF0000);                          \
+    l ^= t;                                                                    \
+    h ^= t >> 16;                                                              \
+    t = (l ^ (l >> 8)) & SPH_C32(0x0000FF00);                                  \
+    l ^= t ^ (t << 8);                                                         \
+    t = (h ^ (h >> 8)) & SPH_C32(0x0000FF00);                                  \
+    h ^= t ^ (t << 8);                                                         \
+    t = (l ^ (l >> 4)) & SPH_C32(0x00F000F0);                                  \
+    l ^= t ^ (t << 4);                                                         \
+    t = (h ^ (h >> 4)) & SPH_C32(0x00F000F0);                                  \
+    h ^= t ^ (t << 4);                                                         \
+    t = (l ^ (l >> 2)) & SPH_C32(0x0C0C0C0C);                                  \
+    l ^= t ^ (t << 2);                                                         \
+    t = (h ^ (h >> 2)) & SPH_C32(0x0C0C0C0C);                                  \
+    h ^= t ^ (t << 2);                                                         \
+    t = (l ^ (l >> 1)) & SPH_C32(0x22222222);                                  \
+    l ^= t ^ (t << 1);                                                         \
+    t = (h ^ (h >> 1)) & SPH_C32(0x22222222);                                  \
+    h ^= t ^ (t << 1);                                                         \
+    (xl) = l;                                                                  \
+    (xh) = h;                                                                  \
+  } while (0)
+
+#else
+
+#define INTERLEAVE(l, h)
+#define UNINTERLEAVE(l, h)
+
+#endif
+
+#if SPH_KECCAK_NOCOPY
+
+#define a00l (kc->u.narrow[2 * 0 + 0])
+#define a00h (kc->u.narrow[2 * 0 + 1])
+#define a10l (kc->u.narrow[2 * 1 + 0])
+#define a10h (kc->u.narrow[2 * 1 + 1])
+#define a20l (kc->u.narrow[2 * 2 + 0])
+#define a20h (kc->u.narrow[2 * 2 + 1])
+#define a30l (kc->u.narrow[2 * 3 + 0])
+#define a30h (kc->u.narrow[2 * 3 + 1])
+#define a40l (kc->u.narrow[2 * 4 + 0])
+#define a40h (kc->u.narrow[2 * 4 + 1])
+#define a01l (kc->u.narrow[2 * 5 + 0])
+#define a01h (kc->u.narrow[2 * 5 + 1])
+#define a11l (kc->u.narrow[2 * 6 + 0])
+#define a11h (kc->u.narrow[2 * 6 + 1])
+#define a21l (kc->u.narrow[2 * 7 + 0])
+#define a21h (kc->u.narrow[2 * 7 + 1])
+#define a31l (kc->u.narrow[2 * 8 + 0])
+#define a31h (kc->u.narrow[2 * 8 + 1])
+#define a41l (kc->u.narrow[2 * 9 + 0])
+#define a41h (kc->u.narrow[2 * 9 + 1])
+#define a02l (kc->u.narrow[2 * 10 + 0])
+#define a02h (kc->u.narrow[2 * 10 + 1])
+#define a12l (kc->u.narrow[2 * 11 + 0])
+#define a12h (kc->u.narrow[2 * 11 + 1])
+#define a22l (kc->u.narrow[2 * 12 + 0])
+#define a22h (kc->u.narrow[2 * 12 + 1])
+#define a32l (kc->u.narrow[2 * 13 + 0])
+#define a32h (kc->u.narrow[2 * 13 + 1])
+#define a42l (kc->u.narrow[2 * 14 + 0])
+#define a42h (kc->u.narrow[2 * 14 + 1])
+#define a03l (kc->u.narrow[2 * 15 + 0])
+#define a03h (kc->u.narrow[2 * 15 + 1])
+#define a13l (kc->u.narrow[2 * 16 + 0])
+#define a13h (kc->u.narrow[2 * 16 + 1])
+#define a23l (kc->u.narrow[2 * 17 + 0])
+#define a23h (kc->u.narrow[2 * 17 + 1])
+#define a33l (kc->u.narrow[2 * 18 + 0])
+#define a33h (kc->u.narrow[2 * 18 + 1])
+#define a43l (kc->u.narrow[2 * 19 + 0])
+#define a43h (kc->u.narrow[2 * 19 + 1])
+#define a04l (kc->u.narrow[2 * 20 + 0])
+#define a04h (kc->u.narrow[2 * 20 + 1])
+#define a14l (kc->u.narrow[2 * 21 + 0])
+#define a14h (kc->u.narrow[2 * 21 + 1])
+#define a24l (kc->u.narrow[2 * 22 + 0])
+#define a24h (kc->u.narrow[2 * 22 + 1])
+#define a34l (kc->u.narrow[2 * 23 + 0])
+#define a34h (kc->u.narrow[2 * 23 + 1])
+#define a44l (kc->u.narrow[2 * 24 + 0])
+#define a44h (kc->u.narrow[2 * 24 + 1])
+
+#define DECL_STATE
+#define READ_STATE(state)
+#define WRITE_STATE(state)
+
+#define INPUT_BUF(size)                                                        \
+  do {                                                                         \
+    size_t j;                                                                  \
+    for (j = 0; j < (size); j += 8) {                                          \
+      sph_u32 tl, th;                                                          \
+      tl = sph_dec32le_aligned(buf + j + 0);                                   \
+      th = sph_dec32le_aligned(buf + j + 4);                                   \
+      INTERLEAVE(tl, th);                                                      \
+      kc->u.narrow[(j >> 2) + 0] ^= tl;                                        \
+      kc->u.narrow[(j >> 2) + 1] ^= th;                                        \
+    }                                                                          \
+  } while (0)
+
+#define INPUT_BUF144 INPUT_BUF(144)
+#define INPUT_BUF136 INPUT_BUF(136)
+#define INPUT_BUF104 INPUT_BUF(104)
+#define INPUT_BUF72 INPUT_BUF(72)
+
+#else
+
+#define DECL_STATE                                                             \
+  sph_u32 a00l, a00h, a01l, a01h, a02l, a02h, a03l, a03h, a04l, a04h;          \
+  sph_u32 a10l, a10h, a11l, a11h, a12l, a12h, a13l, a13h, a14l, a14h;          \
+  sph_u32 a20l, a20h, a21l, a21h, a22l, a22h, a23l, a23h, a24l, a24h;          \
+  sph_u32 a30l, a30h, a31l, a31h, a32l, a32h, a33l, a33h, a34l, a34h;          \
+  sph_u32 a40l, a40h, a41l, a41h, a42l, a42h, a43l, a43h, a44l, a44h;
+
+#define READ_STATE(state)                                                      \
+  do {                                                                         \
+    a00l = (state)->u.narrow[2 * 0 + 0];                                       \
+    a00h = (state)->u.narrow[2 * 0 + 1];                                       \
+    a10l = (state)->u.narrow[2 * 1 + 0];                                       \
+    a10h = (state)->u.narrow[2 * 1 + 1];                                       \
+    a20l = (state)->u.narrow[2 * 2 + 0];                                       \
+    a20h = (state)->u.narrow[2 * 2 + 1];                                       \
+    a30l = (state)->u.narrow[2 * 3 + 0];                                       \
+    a30h = (state)->u.narrow[2 * 3 + 1];                                       \
+    a40l = (state)->u.narrow[2 * 4 + 0];                                       \
+    a40h = (state)->u.narrow[2 * 4 + 1];                                       \
+    a01l = (state)->u.narrow[2 * 5 + 0];                                       \
+    a01h = (state)->u.narrow[2 * 5 + 1];                                       \
+    a11l = (state)->u.narrow[2 * 6 + 0];                                       \
+    a11h = (state)->u.narrow[2 * 6 + 1];                                       \
+    a21l = (state)->u.narrow[2 * 7 + 0];                                       \
+    a21h = (state)->u.narrow[2 * 7 + 1];                                       \
+    a31l = (state)->u.narrow[2 * 8 + 0];                                       \
+    a31h = (state)->u.narrow[2 * 8 + 1];                                       \
+    a41l = (state)->u.narrow[2 * 9 + 0];                                       \
+    a41h = (state)->u.narrow[2 * 9 + 1];                                       \
+    a02l = (state)->u.narrow[2 * 10 + 0];                                      \
+    a02h = (state)->u.narrow[2 * 10 + 1];                                      \
+    a12l = (state)->u.narrow[2 * 11 + 0];                                      \
+    a12h = (state)->u.narrow[2 * 11 + 1];                                      \
+    a22l = (state)->u.narrow[2 * 12 + 0];                                      \
+    a22h = (state)->u.narrow[2 * 12 + 1];                                      \
+    a32l = (state)->u.narrow[2 * 13 + 0];                                      \
+    a32h = (state)->u.narrow[2 * 13 + 1];                                      \
+    a42l = (state)->u.narrow[2 * 14 + 0];                                      \
+    a42h = (state)->u.narrow[2 * 14 + 1];                                      \
+    a03l = (state)->u.narrow[2 * 15 + 0];                                      \
+    a03h = (state)->u.narrow[2 * 15 + 1];                                      \
+    a13l = (state)->u.narrow[2 * 16 + 0];                                      \
+    a13h = (state)->u.narrow[2 * 16 + 1];                                      \
+    a23l = (state)->u.narrow[2 * 17 + 0];                                      \
+    a23h = (state)->u.narrow[2 * 17 + 1];                                      \
+    a33l = (state)->u.narrow[2 * 18 + 0];                                      \
+    a33h = (state)->u.narrow[2 * 18 + 1];                                      \
+    a43l = (state)->u.narrow[2 * 19 + 0];                                      \
+    a43h = (state)->u.narrow[2 * 19 + 1];                                      \
+    a04l = (state)->u.narrow[2 * 20 + 0];                                      \
+    a04h = (state)->u.narrow[2 * 20 + 1];                                      \
+    a14l = (state)->u.narrow[2 * 21 + 0];                                      \
+    a14h = (state)->u.narrow[2 * 21 + 1];                                      \
+    a24l = (state)->u.narrow[2 * 22 + 0];                                      \
+    a24h = (state)->u.narrow[2 * 22 + 1];                                      \
+    a34l = (state)->u.narrow[2 * 23 + 0];                                      \
+    a34h = (state)->u.narrow[2 * 23 + 1];                                      \
+    a44l = (state)->u.narrow[2 * 24 + 0];                                      \
+    a44h = (state)->u.narrow[2 * 24 + 1];                                      \
+  } while (0)
+
+#define WRITE_STATE(state)                                                     \
+  do {                                                                         \
+    (state)->u.narrow[2 * 0 + 0] = a00l;                                       \
+    (state)->u.narrow[2 * 0 + 1] = a00h;                                       \
+    (state)->u.narrow[2 * 1 + 0] = a10l;                                       \
+    (state)->u.narrow[2 * 1 + 1] = a10h;                                       \
+    (state)->u.narrow[2 * 2 + 0] = a20l;                                       \
+    (state)->u.narrow[2 * 2 + 1] = a20h;                                       \
+    (state)->u.narrow[2 * 3 + 0] = a30l;                                       \
+    (state)->u.narrow[2 * 3 + 1] = a30h;                                       \
+    (state)->u.narrow[2 * 4 + 0] = a40l;                                       \
+    (state)->u.narrow[2 * 4 + 1] = a40h;                                       \
+    (state)->u.narrow[2 * 5 + 0] = a01l;                                       \
+    (state)->u.narrow[2 * 5 + 1] = a01h;                                       \
+    (state)->u.narrow[2 * 6 + 0] = a11l;                                       \
+    (state)->u.narrow[2 * 6 + 1] = a11h;                                       \
+    (state)->u.narrow[2 * 7 + 0] = a21l;                                       \
+    (state)->u.narrow[2 * 7 + 1] = a21h;                                       \
+    (state)->u.narrow[2 * 8 + 0] = a31l;                                       \
+    (state)->u.narrow[2 * 8 + 1] = a31h;                                       \
+    (state)->u.narrow[2 * 9 + 0] = a41l;                                       \
+    (state)->u.narrow[2 * 9 + 1] = a41h;                                       \
+    (state)->u.narrow[2 * 10 + 0] = a02l;                                      \
+    (state)->u.narrow[2 * 10 + 1] = a02h;                                      \
+    (state)->u.narrow[2 * 11 + 0] = a12l;                                      \
+    (state)->u.narrow[2 * 11 + 1] = a12h;                                      \
+    (state)->u.narrow[2 * 12 + 0] = a22l;                                      \
+    (state)->u.narrow[2 * 12 + 1] = a22h;                                      \
+    (state)->u.narrow[2 * 13 + 0] = a32l;                                      \
+    (state)->u.narrow[2 * 13 + 1] = a32h;                                      \
+    (state)->u.narrow[2 * 14 + 0] = a42l;                                      \
+    (state)->u.narrow[2 * 14 + 1] = a42h;                                      \
+    (state)->u.narrow[2 * 15 + 0] = a03l;                                      \
+    (state)->u.narrow[2 * 15 + 1] = a03h;                                      \
+    (state)->u.narrow[2 * 16 + 0] = a13l;                                      \
+    (state)->u.narrow[2 * 16 + 1] = a13h;                                      \
+    (state)->u.narrow[2 * 17 + 0] = a23l;                                      \
+    (state)->u.narrow[2 * 17 + 1] = a23h;                                      \
+    (state)->u.narrow[2 * 18 + 0] = a33l;                                      \
+    (state)->u.narrow[2 * 18 + 1] = a33h;                                      \
+    (state)->u.narrow[2 * 19 + 0] = a43l;                                      \
+    (state)->u.narrow[2 * 19 + 1] = a43h;                                      \
+    (state)->u.narrow[2 * 20 + 0] = a04l;                                      \
+    (state)->u.narrow[2 * 20 + 1] = a04h;                                      \
+    (state)->u.narrow[2 * 21 + 0] = a14l;                                      \
+    (state)->u.narrow[2 * 21 + 1] = a14h;                                      \
+    (state)->u.narrow[2 * 22 + 0] = a24l;                                      \
+    (state)->u.narrow[2 * 22 + 1] = a24h;                                      \
+    (state)->u.narrow[2 * 23 + 0] = a34l;                                      \
+    (state)->u.narrow[2 * 23 + 1] = a34h;                                      \
+    (state)->u.narrow[2 * 24 + 0] = a44l;                                      \
+    (state)->u.narrow[2 * 24 + 1] = a44h;                                      \
+  } while (0)
+
+#define READ64(d, off)                                                         \
+  do {                                                                         \
+    sph_u32 tl, th;                                                            \
+    tl = sph_dec32le_aligned(buf + (off));                                     \
+    th = sph_dec32le_aligned(buf + (off) + 4);                                 \
+    INTERLEAVE(tl, th);                                                        \
+    d##l ^= tl;                                                                \
+    d##h ^= th;                                                                \
+  } while (0)
+
+#define INPUT_BUF144                                                           \
+  do {                                                                         \
+    READ64(a00, 0);                                                            \
+    READ64(a10, 8);                                                            \
+    READ64(a20, 16);                                                           \
+    READ64(a30, 24);                                                           \
+    READ64(a40, 32);                                                           \
+    READ64(a01, 40);                                                           \
+    READ64(a11, 48);                                                           \
+    READ64(a21, 56);                                                           \
+    READ64(a31, 64);                                                           \
+    READ64(a41, 72);                                                           \
+    READ64(a02, 80);                                                           \
+    READ64(a12, 88);                                                           \
+    READ64(a22, 96);                                                           \
+    READ64(a32, 104);                                                          \
+    READ64(a42, 112);                                                          \
+    READ64(a03, 120);                                                          \
+    READ64(a13, 128);                                                          \
+    READ64(a23, 136);                                                          \
+  } while (0)
+
+#define INPUT_BUF136                                                           \
+  do {                                                                         \
+    READ64(a00, 0);                                                            \
+    READ64(a10, 8);                                                            \
+    READ64(a20, 16);                                                           \
+    READ64(a30, 24);                                                           \
+    READ64(a40, 32);                                                           \
+    READ64(a01, 40);                                                           \
+    READ64(a11, 48);                                                           \
+    READ64(a21, 56);                                                           \
+    READ64(a31, 64);                                                           \
+    READ64(a41, 72);                                                           \
+    READ64(a02, 80);                                                           \
+    READ64(a12, 88);                                                           \
+    READ64(a22, 96);                                                           \
+    READ64(a32, 104);                                                          \
+    READ64(a42, 112);                                                          \
+    READ64(a03, 120);                                                          \
+    READ64(a13, 128);                                                          \
+  } while (0)
+
+#define INPUT_BUF104                                                           \
+  do {                                                                         \
+    READ64(a00, 0);                                                            \
+    READ64(a10, 8);                                                            \
+    READ64(a20, 16);                                                           \
+    READ64(a30, 24);                                                           \
+    READ64(a40, 32);                                                           \
+    READ64(a01, 40);                                                           \
+    READ64(a11, 48);                                                           \
+    READ64(a21, 56);                                                           \
+    READ64(a31, 64);                                                           \
+    READ64(a41, 72);                                                           \
+    READ64(a02, 80);                                                           \
+    READ64(a12, 88);                                                           \
+    READ64(a22, 96);                                                           \
+  } while (0)
+
+#define INPUT_BUF72                                                            \
+  do {                                                                         \
+    READ64(a00, 0);                                                            \
+    READ64(a10, 8);                                                            \
+    READ64(a20, 16);                                                           \
+    READ64(a30, 24);                                                           \
+    READ64(a40, 32);                                                           \
+    READ64(a01, 40);                                                           \
+    READ64(a11, 48);                                                           \
+    READ64(a21, 56);                                                           \
+    READ64(a31, 64);                                                           \
+  } while (0)
+
+#define INPUT_BUF(lim)                                                         \
+  do {                                                                         \
+    READ64(a00, 0);                                                            \
+    READ64(a10, 8);                                                            \
+    READ64(a20, 16);                                                           \
+    READ64(a30, 24);                                                           \
+    READ64(a40, 32);                                                           \
+    READ64(a01, 40);                                                           \
+    READ64(a11, 48);                                                           \
+    READ64(a21, 56);                                                           \
+    READ64(a31, 64);                                                           \
+    if ((lim) == 72)                                                           \
+      break;                                                                   \
+    READ64(a41, 72);                                                           \
+    READ64(a02, 80);                                                           \
+    READ64(a12, 88);                                                           \
+    READ64(a22, 96);                                                           \
+    if ((lim) == 104)                                                          \
+      break;                                                                   \
+    READ64(a32, 104);                                                          \
+    READ64(a42, 112);                                                          \
+    READ64(a03, 120);                                                          \
+    READ64(a13, 128);                                                          \
+    if ((lim) == 136)                                                          \
+      break;                                                                   \
+    READ64(a23, 136);                                                          \
+  } while (0)
+
+#endif
+
+#define DECL64(x) sph_u64 x##l, x##h
+#define MOV64(d, s) (d##l = s##l, d##h = s##h)
+#define XOR64(d, a, b) (d##l = a##l ^ b##l, d##h = a##h ^ b##h)
+#define AND64(d, a, b) (d##l = a##l & b##l, d##h = a##h & b##h)
+#define OR64(d, a, b) (d##l = a##l | b##l, d##h = a##h | b##h)
+#define NOT64(d, s) (d##l = SPH_T32(~s##l), d##h = SPH_T32(~s##h))
+#define ROL64(d, v, n) ROL64_##n(d, v)
+
+#if SPH_KECCAK_INTERLEAVE
+
+#define ROL64_odd1(d, v)                                                       \
+  do {                                                                         \
+    sph_u32 tmp;                                                               \
+    tmp = v##l;                                                                \
+    d##l = SPH_T32(v##h << 1) | (v##h >> 31);                                  \
+    d##h = tmp;                                                                \
+  } while (0)
+
+#define ROL64_odd63(d, v)                                                      \
+  do {                                                                         \
+    sph_u32 tmp;                                                               \
+    tmp = SPH_T32(v##l << 31) | (v##l >> 1);                                   \
+    d##l = v##h;                                                               \
+    d##h = tmp;                                                                \
+  } while (0)
+
+#define ROL64_odd(d, v, n)                                                     \
+  do {                                                                         \
+    sph_u32 tmp;                                                               \
+    tmp = SPH_T32(v##l << (n - 1)) | (v##l >> (33 - n));                       \
+    d##l = SPH_T32(v##h << n) | (v##h >> (32 - n));                            \
+    d##h = tmp;                                                                \
+  } while (0)
+
+#define ROL64_even(d, v, n)                                                    \
+  do {                                                                         \
+    d##l = SPH_T32(v##l << n) | (v##l >> (32 - n));                            \
+    d##h = SPH_T32(v##h << n) | (v##h >> (32 - n));                            \
+  } while (0)
+
+#define ROL64_0(d, v)
+#define ROL64_1(d, v) ROL64_odd1(d, v)
+#define ROL64_2(d, v) ROL64_even(d, v, 1)
+#define ROL64_3(d, v) ROL64_odd(d, v, 2)
+#define ROL64_4(d, v) ROL64_even(d, v, 2)
+#define ROL64_5(d, v) ROL64_odd(d, v, 3)
+#define ROL64_6(d, v) ROL64_even(d, v, 3)
+#define ROL64_7(d, v) ROL64_odd(d, v, 4)
+#define ROL64_8(d, v) ROL64_even(d, v, 4)
+#define ROL64_9(d, v) ROL64_odd(d, v, 5)
+#define ROL64_10(d, v) ROL64_even(d, v, 5)
+#define ROL64_11(d, v) ROL64_odd(d, v, 6)
+#define ROL64_12(d, v) ROL64_even(d, v, 6)
+#define ROL64_13(d, v) ROL64_odd(d, v, 7)
+#define ROL64_14(d, v) ROL64_even(d, v, 7)
+#define ROL64_15(d, v) ROL64_odd(d, v, 8)
+#define ROL64_16(d, v) ROL64_even(d, v, 8)
+#define ROL64_17(d, v) ROL64_odd(d, v, 9)
+#define ROL64_18(d, v) ROL64_even(d, v, 9)
+#define ROL64_19(d, v) ROL64_odd(d, v, 10)
+#define ROL64_20(d, v) ROL64_even(d, v, 10)
+#define ROL64_21(d, v) ROL64_odd(d, v, 11)
+#define ROL64_22(d, v) ROL64_even(d, v, 11)
+#define ROL64_23(d, v) ROL64_odd(d, v, 12)
+#define ROL64_24(d, v) ROL64_even(d, v, 12)
+#define ROL64_25(d, v) ROL64_odd(d, v, 13)
+#define ROL64_26(d, v) ROL64_even(d, v, 13)
+#define ROL64_27(d, v) ROL64_odd(d, v, 14)
+#define ROL64_28(d, v) ROL64_even(d, v, 14)
+#define ROL64_29(d, v) ROL64_odd(d, v, 15)
+#define ROL64_30(d, v) ROL64_even(d, v, 15)
+#define ROL64_31(d, v) ROL64_odd(d, v, 16)
+#define ROL64_32(d, v) ROL64_even(d, v, 16)
+#define ROL64_33(d, v) ROL64_odd(d, v, 17)
+#define ROL64_34(d, v) ROL64_even(d, v, 17)
+#define ROL64_35(d, v) ROL64_odd(d, v, 18)
+#define ROL64_36(d, v) ROL64_even(d, v, 18)
+#define ROL64_37(d, v) ROL64_odd(d, v, 19)
+#define ROL64_38(d, v) ROL64_even(d, v, 19)
+#define ROL64_39(d, v) ROL64_odd(d, v, 20)
+#define ROL64_40(d, v) ROL64_even(d, v, 20)
+#define ROL64_41(d, v) ROL64_odd(d, v, 21)
+#define ROL64_42(d, v) ROL64_even(d, v, 21)
+#define ROL64_43(d, v) ROL64_odd(d, v, 22)
+#define ROL64_44(d, v) ROL64_even(d, v, 22)
+#define ROL64_45(d, v) ROL64_odd(d, v, 23)
+#define ROL64_46(d, v) ROL64_even(d, v, 23)
+#define ROL64_47(d, v) ROL64_odd(d, v, 24)
+#define ROL64_48(d, v) ROL64_even(d, v, 24)
+#define ROL64_49(d, v) ROL64_odd(d, v, 25)
+#define ROL64_50(d, v) ROL64_even(d, v, 25)
+#define ROL64_51(d, v) ROL64_odd(d, v, 26)
+#define ROL64_52(d, v) ROL64_even(d, v, 26)
+#define ROL64_53(d, v) ROL64_odd(d, v, 27)
+#define ROL64_54(d, v) ROL64_even(d, v, 27)
+#define ROL64_55(d, v) ROL64_odd(d, v, 28)
+#define ROL64_56(d, v) ROL64_even(d, v, 28)
+#define ROL64_57(d, v) ROL64_odd(d, v, 29)
+#define ROL64_58(d, v) ROL64_even(d, v, 29)
+#define ROL64_59(d, v) ROL64_odd(d, v, 30)
+#define ROL64_60(d, v) ROL64_even(d, v, 30)
+#define ROL64_61(d, v) ROL64_odd(d, v, 31)
+#define ROL64_62(d, v) ROL64_even(d, v, 31)
+#define ROL64_63(d, v) ROL64_odd63(d, v)
+
+#else
+
+#define ROL64_small(d, v, n)                                                   \
+  do {                                                                         \
+    sph_u32 tmp;                                                               \
+    tmp = SPH_T32(v##l << n) | (v##h >> (32 - n));                             \
+    d##h = SPH_T32(v##h << n) | (v##l >> (32 - n));                            \
+    d##l = tmp;                                                                \
+  } while (0)
+
+#define ROL64_0(d, v) 0
+#define ROL64_1(d, v) ROL64_small(d, v, 1)
+#define ROL64_2(d, v) ROL64_small(d, v, 2)
+#define ROL64_3(d, v) ROL64_small(d, v, 3)
+#define ROL64_4(d, v) ROL64_small(d, v, 4)
+#define ROL64_5(d, v) ROL64_small(d, v, 5)
+#define ROL64_6(d, v) ROL64_small(d, v, 6)
+#define ROL64_7(d, v) ROL64_small(d, v, 7)
+#define ROL64_8(d, v) ROL64_small(d, v, 8)
+#define ROL64_9(d, v) ROL64_small(d, v, 9)
+#define ROL64_10(d, v) ROL64_small(d, v, 10)
+#define ROL64_11(d, v) ROL64_small(d, v, 11)
+#define ROL64_12(d, v) ROL64_small(d, v, 12)
+#define ROL64_13(d, v) ROL64_small(d, v, 13)
+#define ROL64_14(d, v) ROL64_small(d, v, 14)
+#define ROL64_15(d, v) ROL64_small(d, v, 15)
+#define ROL64_16(d, v) ROL64_small(d, v, 16)
+#define ROL64_17(d, v) ROL64_small(d, v, 17)
+#define ROL64_18(d, v) ROL64_small(d, v, 18)
+#define ROL64_19(d, v) ROL64_small(d, v, 19)
+#define ROL64_20(d, v) ROL64_small(d, v, 20)
+#define ROL64_21(d, v) ROL64_small(d, v, 21)
+#define ROL64_22(d, v) ROL64_small(d, v, 22)
+#define ROL64_23(d, v) ROL64_small(d, v, 23)
+#define ROL64_24(d, v) ROL64_small(d, v, 24)
+#define ROL64_25(d, v) ROL64_small(d, v, 25)
+#define ROL64_26(d, v) ROL64_small(d, v, 26)
+#define ROL64_27(d, v) ROL64_small(d, v, 27)
+#define ROL64_28(d, v) ROL64_small(d, v, 28)
+#define ROL64_29(d, v) ROL64_small(d, v, 29)
+#define ROL64_30(d, v) ROL64_small(d, v, 30)
+#define ROL64_31(d, v) ROL64_small(d, v, 31)
+
+#define ROL64_32(d, v)                                                         \
+  do {                                                                         \
+    sph_u32 tmp;                                                               \
+    tmp = v##l;                                                                \
+    d##l = v##h;                                                               \
+    d##h = tmp;                                                                \
+  } while (0)
+
+#define ROL64_big(d, v, n)                                                     \
+  do {                                                                         \
+    sph_u32 trl, trh;                                                          \
+    ROL64_small(tr, v, n);                                                     \
+    d##h = trl;                                                                \
+    d##l = trh;                                                                \
+  } while (0)
+
+#define ROL64_33(d, v) ROL64_big(d, v, 1)
+#define ROL64_34(d, v) ROL64_big(d, v, 2)
+#define ROL64_35(d, v) ROL64_big(d, v, 3)
+#define ROL64_36(d, v) ROL64_big(d, v, 4)
+#define ROL64_37(d, v) ROL64_big(d, v, 5)
+#define ROL64_38(d, v) ROL64_big(d, v, 6)
+#define ROL64_39(d, v) ROL64_big(d, v, 7)
+#define ROL64_40(d, v) ROL64_big(d, v, 8)
+#define ROL64_41(d, v) ROL64_big(d, v, 9)
+#define ROL64_42(d, v) ROL64_big(d, v, 10)
+#define ROL64_43(d, v) ROL64_big(d, v, 11)
+#define ROL64_44(d, v) ROL64_big(d, v, 12)
+#define ROL64_45(d, v) ROL64_big(d, v, 13)
+#define ROL64_46(d, v) ROL64_big(d, v, 14)
+#define ROL64_47(d, v) ROL64_big(d, v, 15)
+#define ROL64_48(d, v) ROL64_big(d, v, 16)
+#define ROL64_49(d, v) ROL64_big(d, v, 17)
+#define ROL64_50(d, v) ROL64_big(d, v, 18)
+#define ROL64_51(d, v) ROL64_big(d, v, 19)
+#define ROL64_52(d, v) ROL64_big(d, v, 20)
+#define ROL64_53(d, v) ROL64_big(d, v, 21)
+#define ROL64_54(d, v) ROL64_big(d, v, 22)
+#define ROL64_55(d, v) ROL64_big(d, v, 23)
+#define ROL64_56(d, v) ROL64_big(d, v, 24)
+#define ROL64_57(d, v) ROL64_big(d, v, 25)
+#define ROL64_58(d, v) ROL64_big(d, v, 26)
+#define ROL64_59(d, v) ROL64_big(d, v, 27)
+#define ROL64_60(d, v) ROL64_big(d, v, 28)
+#define ROL64_61(d, v) ROL64_big(d, v, 29)
+#define ROL64_62(d, v) ROL64_big(d, v, 30)
+#define ROL64_63(d, v) ROL64_big(d, v, 31)
+
+#endif
+
+#define XOR64_IOTA(d, s, k) (d##l = s##l ^ k.low, d##h = s##h ^ k.high)
+
+#endif
+
+#define TH_ELT(t, c0, c1, c2, c3, c4, d0, d1, d2, d3, d4)                      \
+  do {                                                                         \
+    DECL64(tt0);                                                               \
+    DECL64(tt1);                                                               \
+    DECL64(tt2);                                                               \
+    DECL64(tt3);                                                               \
+    XOR64(tt0, d0, d1);                                                        \
+    XOR64(tt1, d2, d3);                                                        \
+    XOR64(tt0, tt0, d4);                                                       \
+    XOR64(tt0, tt0, tt1);                                                      \
+    ROL64(tt0, tt0, 1);                                                        \
+    XOR64(tt2, c0, c1);                                                        \
+    XOR64(tt3, c2, c3);                                                        \
+    XOR64(tt0, tt0, c4);                                                       \
+    XOR64(tt2, tt2, tt3);                                                      \
+    XOR64(t, tt0, tt2);                                                        \
+  } while (0)
+
+#define THETA(b00, b01, b02, b03, b04, b10, b11, b12, b13, b14, b20, b21, b22, \
+              b23, b24, b30, b31, b32, b33, b34, b40, b41, b42, b43, b44)      \
+  do {                                                                         \
+    DECL64(t0);                                                                \
+    DECL64(t1);                                                                \
+    DECL64(t2);                                                                \
+    DECL64(t3);                                                                \
+    DECL64(t4);                                                                \
+    TH_ELT(t0, b40, b41, b42, b43, b44, b10, b11, b12, b13, b14);              \
+    TH_ELT(t1, b00, b01, b02, b03, b04, b20, b21, b22, b23, b24);              \
+    TH_ELT(t2, b10, b11, b12, b13, b14, b30, b31, b32, b33, b34);              \
+    TH_ELT(t3, b20, b21, b22, b23, b24, b40, b41, b42, b43, b44);              \
+    TH_ELT(t4, b30, b31, b32, b33, b34, b00, b01, b02, b03, b04);              \
+    XOR64(b00, b00, t0);                                                       \
+    XOR64(b01, b01, t0);                                                       \
+    XOR64(b02, b02, t0);                                                       \
+    XOR64(b03, b03, t0);                                                       \
+    XOR64(b04, b04, t0);                                                       \
+    XOR64(b10, b10, t1);                                                       \
+    XOR64(b11, b11, t1);                                                       \
+    XOR64(b12, b12, t1);                                                       \
+    XOR64(b13, b13, t1);                                                       \
+    XOR64(b14, b14, t1);                                                       \
+    XOR64(b20, b20, t2);                                                       \
+    XOR64(b21, b21, t2);                                                       \
+    XOR64(b22, b22, t2);                                                       \
+    XOR64(b23, b23, t2);                                                       \
+    XOR64(b24, b24, t2);                                                       \
+    XOR64(b30, b30, t3);                                                       \
+    XOR64(b31, b31, t3);                                                       \
+    XOR64(b32, b32, t3);                                                       \
+    XOR64(b33, b33, t3);                                                       \
+    XOR64(b34, b34, t3);                                                       \
+    XOR64(b40, b40, t4);                                                       \
+    XOR64(b41, b41, t4);                                                       \
+    XOR64(b42, b42, t4);                                                       \
+    XOR64(b43, b43, t4);                                                       \
+    XOR64(b44, b44, t4);                                                       \
+  } while (0)
+
+#define RHO(b00, b01, b02, b03, b04, b10, b11, b12, b13, b14, b20, b21, b22,   \
+            b23, b24, b30, b31, b32, b33, b34, b40, b41, b42, b43, b44)        \
+  do {                                                                         \
+    /* ROL64(b00, b00,  0); */                                                 \
+    ROL64(b01, b01, 36);                                                       \
+    ROL64(b02, b02, 3);                                                        \
+    ROL64(b03, b03, 41);                                                       \
+    ROL64(b04, b04, 18);                                                       \
+    ROL64(b10, b10, 1);                                                        \
+    ROL64(b11, b11, 44);                                                       \
+    ROL64(b12, b12, 10);                                                       \
+    ROL64(b13, b13, 45);                                                       \
+    ROL64(b14, b14, 2);                                                        \
+    ROL64(b20, b20, 62);                                                       \
+    ROL64(b21, b21, 6);                                                        \
+    ROL64(b22, b22, 43);                                                       \
+    ROL64(b23, b23, 15);                                                       \
+    ROL64(b24, b24, 61);                                                       \
+    ROL64(b30, b30, 28);                                                       \
+    ROL64(b31, b31, 55);                                                       \
+    ROL64(b32, b32, 25);                                                       \
+    ROL64(b33, b33, 21);                                                       \
+    ROL64(b34, b34, 56);                                                       \
+    ROL64(b40, b40, 27);                                                       \
+    ROL64(b41, b41, 20);                                                       \
+    ROL64(b42, b42, 39);                                                       \
+    ROL64(b43, b43, 8);                                                        \
+    ROL64(b44, b44, 14);                                                       \
+  } while (0)
+
+/*
+ * The KHI macro integrates the "lane complement" optimization. On input,
+ * some words are complemented:
+ *    a00 a01 a02 a04 a13 a20 a21 a22 a30 a33 a34 a43
+ * On output, the following words are complemented:
+ *    a04 a10 a20 a22 a23 a31
+ *
+ * The (implicit) permutation and the theta expansion will bring back
+ * the input mask for the next round.
+ */
+
+#define KHI_XO(d, a, b, c)                                                     \
+  do {                                                                         \
+    DECL64(kt);                                                                \
+    OR64(kt, b, c);                                                            \
+    XOR64(d, a, kt);                                                           \
+  } while (0)
+
+#define KHI_XA(d, a, b, c)                                                     \
+  do {                                                                         \
+    DECL64(kt);                                                                \
+    AND64(kt, b, c);                                                           \
+    XOR64(d, a, kt);                                                           \
+  } while (0)
+
+#define KHI(b00, b01, b02, b03, b04, b10, b11, b12, b13, b14, b20, b21, b22,   \
+            b23, b24, b30, b31, b32, b33, b34, b40, b41, b42, b43, b44)        \
+  do {                                                                         \
+    DECL64(c0);                                                                \
+    DECL64(c1);                                                                \
+    DECL64(c2);                                                                \
+    DECL64(c3);                                                                \
+    DECL64(c4);                                                                \
+    DECL64(bnn);                                                               \
+    NOT64(bnn, b20);                                                           \
+    KHI_XO(c0, b00, b10, b20);                                                 \
+    KHI_XO(c1, b10, bnn, b30);                                                 \
+    KHI_XA(c2, b20, b30, b40);                                                 \
+    KHI_XO(c3, b30, b40, b00);                                                 \
+    KHI_XA(c4, b40, b00, b10);                                                 \
+    MOV64(b00, c0);                                                            \
+    MOV64(b10, c1);                                                            \
+    MOV64(b20, c2);                                                            \
+    MOV64(b30, c3);                                                            \
+    MOV64(b40, c4);                                                            \
+    NOT64(bnn, b41);                                                           \
+    KHI_XO(c0, b01, b11, b21);                                                 \
+    KHI_XA(c1, b11, b21, b31);                                                 \
+    KHI_XO(c2, b21, b31, bnn);                                                 \
+    KHI_XO(c3, b31, b41, b01);                                                 \
+    KHI_XA(c4, b41, b01, b11);                                                 \
+    MOV64(b01, c0);                                                            \
+    MOV64(b11, c1);                                                            \
+    MOV64(b21, c2);                                                            \
+    MOV64(b31, c3);                                                            \
+    MOV64(b41, c4);                                                            \
+    NOT64(bnn, b32);                                                           \
+    KHI_XO(c0, b02, b12, b22);                                                 \
+    KHI_XA(c1, b12, b22, b32);                                                 \
+    KHI_XA(c2, b22, bnn, b42);                                                 \
+    KHI_XO(c3, bnn, b42, b02);                                                 \
+    KHI_XA(c4, b42, b02, b12);                                                 \
+    MOV64(b02, c0);                                                            \
+    MOV64(b12, c1);                                                            \
+    MOV64(b22, c2);                                                            \
+    MOV64(b32, c3);                                                            \
+    MOV64(b42, c4);                                                            \
+    NOT64(bnn, b33);                                                           \
+    KHI_XA(c0, b03, b13, b23);                                                 \
+    KHI_XO(c1, b13, b23, b33);                                                 \
+    KHI_XO(c2, b23, bnn, b43);                                                 \
+    KHI_XA(c3, bnn, b43, b03);                                                 \
+    KHI_XO(c4, b43, b03, b13);                                                 \
+    MOV64(b03, c0);                                                            \
+    MOV64(b13, c1);                                                            \
+    MOV64(b23, c2);                                                            \
+    MOV64(b33, c3);                                                            \
+    MOV64(b43, c4);                                                            \
+    NOT64(bnn, b14);                                                           \
+    KHI_XA(c0, b04, bnn, b24);                                                 \
+    KHI_XO(c1, bnn, b24, b34);                                                 \
+    KHI_XA(c2, b24, b34, b44);                                                 \
+    KHI_XO(c3, b34, b44, b04);                                                 \
+    KHI_XA(c4, b44, b04, b14);                                                 \
+    MOV64(b04, c0);                                                            \
+    MOV64(b14, c1);                                                            \
+    MOV64(b24, c2);                                                            \
+    MOV64(b34, c3);                                                            \
+    MOV64(b44, c4);                                                            \
+  } while (0)
+
+#define IOTA(r) XOR64_IOTA(a00, a00, r)
+
+#define P0                                                                     \
+  a00, a01, a02, a03, a04, a10, a11, a12, a13, a14, a20, a21, a22, a23, a24,   \
+      a30, a31, a32, a33, a34, a40, a41, a42, a43, a44
+#define P1                                                                     \
+  a00, a30, a10, a40, a20, a11, a41, a21, a01, a31, a22, a02, a32, a12, a42,   \
+      a33, a13, a43, a23, a03, a44, a24, a04, a34, a14
+#define P2                                                                     \
+  a00, a33, a11, a44, a22, a41, a24, a02, a30, a13, a32, a10, a43, a21, a04,   \
+      a23, a01, a34, a12, a40, a14, a42, a20, a03, a31
+#define P3                                                                     \
+  a00, a23, a41, a14, a32, a24, a42, a10, a33, a01, a43, a11, a34, a02, a20,   \
+      a12, a30, a03, a21, a44, a31, a04, a22, a40, a13
+#define P4                                                                     \
+  a00, a12, a24, a31, a43, a42, a04, a11, a23, a30, a34, a41, a03, a10, a22,   \
+      a21, a33, a40, a02, a14, a13, a20, a32, a44, a01
+#define P5                                                                     \
+  a00, a21, a42, a13, a34, a04, a20, a41, a12, a33, a03, a24, a40, a11, a32,   \
+      a02, a23, a44, a10, a31, a01, a22, a43, a14, a30
+#define P6                                                                     \
+  a00, a02, a04, a01, a03, a20, a22, a24, a21, a23, a40, a42, a44, a41, a43,   \
+      a10, a12, a14, a11, a13, a30, a32, a34, a31, a33
+#define P7                                                                     \
+  a00, a10, a20, a30, a40, a22, a32, a42, a02, a12, a44, a04, a14, a24, a34,   \
+      a11, a21, a31, a41, a01, a33, a43, a03, a13, a23
+#define P8                                                                     \
+  a00, a11, a22, a33, a44, a32, a43, a04, a10, a21, a14, a20, a31, a42, a03,   \
+      a41, a02, a13, a24, a30, a23, a34, a40, a01, a12
+#define P9                                                                     \
+  a00, a41, a32, a23, a14, a43, a34, a20, a11, a02, a31, a22, a13, a04, a40,   \
+      a24, a10, a01, a42, a33, a12, a03, a44, a30, a21
+#define P10                                                                    \
+  a00, a24, a43, a12, a31, a34, a03, a22, a41, a10, a13, a32, a01, a20, a44,   \
+      a42, a11, a30, a04, a23, a21, a40, a14, a33, a02
+#define P11                                                                    \
+  a00, a42, a34, a21, a13, a03, a40, a32, a24, a11, a01, a43, a30, a22, a14,   \
+      a04, a41, a33, a20, a12, a02, a44, a31, a23, a10
+#define P12                                                                    \
+  a00, a04, a03, a02, a01, a40, a44, a43, a42, a41, a30, a34, a33, a32, a31,   \
+      a20, a24, a23, a22, a21, a10, a14, a13, a12, a11
+#define P13                                                                    \
+  a00, a20, a40, a10, a30, a44, a14, a34, a04, a24, a33, a03, a23, a43, a13,   \
+      a22, a42, a12, a32, a02, a11, a31, a01, a21, a41
+#define P14                                                                    \
+  a00, a22, a44, a11, a33, a14, a31, a03, a20, a42, a23, a40, a12, a34, a01,   \
+      a32, a04, a21, a43, a10, a41, a13, a30, a02, a24
+#define P15                                                                    \
+  a00, a32, a14, a41, a23, a31, a13, a40, a22, a04, a12, a44, a21, a03, a30,   \
+      a43, a20, a02, a34, a11, a24, a01, a33, a10, a42
+#define P16                                                                    \
+  a00, a43, a31, a24, a12, a13, a01, a44, a32, a20, a21, a14, a02, a40, a33,   \
+      a34, a22, a10, a03, a41, a42, a30, a23, a11, a04
+#define P17                                                                    \
+  a00, a34, a13, a42, a21, a01, a30, a14, a43, a22, a02, a31, a10, a44, a23,   \
+      a03, a32, a11, a40, a24, a04, a33, a12, a41, a20
+#define P18                                                                    \
+  a00, a03, a01, a04, a02, a30, a33, a31, a34, a32, a10, a13, a11, a14, a12,   \
+      a40, a43, a41, a44, a42, a20, a23, a21, a24, a22
+#define P19                                                                    \
+  a00, a40, a30, a20, a10, a33, a23, a13, a03, a43, a11, a01, a41, a31, a21,   \
+      a44, a34, a24, a14, a04, a22, a12, a02, a42, a32
+#define P20                                                                    \
+  a00, a44, a33, a22, a11, a23, a12, a01, a40, a34, a41, a30, a24, a13, a02,   \
+      a14, a03, a42, a31, a20, a32, a21, a10, a04, a43
+#define P21                                                                    \
+  a00, a14, a23, a32, a41, a12, a21, a30, a44, a03, a24, a33, a42, a01, a10,   \
+      a31, a40, a04, a13, a22, a43, a02, a11, a20, a34
+#define P22                                                                    \
+  a00, a31, a12, a43, a24, a21, a02, a33, a14, a40, a42, a23, a04, a30, a11,   \
+      a13, a44, a20, a01, a32, a34, a10, a41, a22, a03
+#define P23                                                                    \
+  a00, a13, a21, a34, a42, a02, a10, a23, a31, a44, a04, a12, a20, a33, a41,   \
+      a01, a14, a22, a30, a43, a03, a11, a24, a32, a40
+
+#define P1_TO_P0                                                               \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a30);                                                           \
+    MOV64(a30, a33);                                                           \
+    MOV64(a33, a23);                                                           \
+    MOV64(a23, a12);                                                           \
+    MOV64(a12, a21);                                                           \
+    MOV64(a21, a02);                                                           \
+    MOV64(a02, a10);                                                           \
+    MOV64(a10, a11);                                                           \
+    MOV64(a11, a41);                                                           \
+    MOV64(a41, a24);                                                           \
+    MOV64(a24, a42);                                                           \
+    MOV64(a42, a04);                                                           \
+    MOV64(a04, a20);                                                           \
+    MOV64(a20, a22);                                                           \
+    MOV64(a22, a32);                                                           \
+    MOV64(a32, a43);                                                           \
+    MOV64(a43, a34);                                                           \
+    MOV64(a34, a03);                                                           \
+    MOV64(a03, a40);                                                           \
+    MOV64(a40, a44);                                                           \
+    MOV64(a44, a14);                                                           \
+    MOV64(a14, a31);                                                           \
+    MOV64(a31, a13);                                                           \
+    MOV64(a13, t);                                                             \
+  } while (0)
+
+#define P2_TO_P0                                                               \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a33);                                                           \
+    MOV64(a33, a12);                                                           \
+    MOV64(a12, a02);                                                           \
+    MOV64(a02, a11);                                                           \
+    MOV64(a11, a24);                                                           \
+    MOV64(a24, a04);                                                           \
+    MOV64(a04, a22);                                                           \
+    MOV64(a22, a43);                                                           \
+    MOV64(a43, a03);                                                           \
+    MOV64(a03, a44);                                                           \
+    MOV64(a44, a31);                                                           \
+    MOV64(a31, t);                                                             \
+    MOV64(t, a10);                                                             \
+    MOV64(a10, a41);                                                           \
+    MOV64(a41, a42);                                                           \
+    MOV64(a42, a20);                                                           \
+    MOV64(a20, a32);                                                           \
+    MOV64(a32, a34);                                                           \
+    MOV64(a34, a40);                                                           \
+    MOV64(a40, a14);                                                           \
+    MOV64(a14, a13);                                                           \
+    MOV64(a13, a30);                                                           \
+    MOV64(a30, a23);                                                           \
+    MOV64(a23, a21);                                                           \
+    MOV64(a21, t);                                                             \
+  } while (0)
+
+#define P4_TO_P0                                                               \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a12);                                                           \
+    MOV64(a12, a11);                                                           \
+    MOV64(a11, a04);                                                           \
+    MOV64(a04, a43);                                                           \
+    MOV64(a43, a44);                                                           \
+    MOV64(a44, t);                                                             \
+    MOV64(t, a02);                                                             \
+    MOV64(a02, a24);                                                           \
+    MOV64(a24, a22);                                                           \
+    MOV64(a22, a03);                                                           \
+    MOV64(a03, a31);                                                           \
+    MOV64(a31, a33);                                                           \
+    MOV64(a33, t);                                                             \
+    MOV64(t, a10);                                                             \
+    MOV64(a10, a42);                                                           \
+    MOV64(a42, a32);                                                           \
+    MOV64(a32, a40);                                                           \
+    MOV64(a40, a13);                                                           \
+    MOV64(a13, a23);                                                           \
+    MOV64(a23, t);                                                             \
+    MOV64(t, a14);                                                             \
+    MOV64(a14, a30);                                                           \
+    MOV64(a30, a21);                                                           \
+    MOV64(a21, a41);                                                           \
+    MOV64(a41, a20);                                                           \
+    MOV64(a20, a34);                                                           \
+    MOV64(a34, t);                                                             \
+  } while (0)
+
+#define P6_TO_P0                                                               \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a02);                                                           \
+    MOV64(a02, a04);                                                           \
+    MOV64(a04, a03);                                                           \
+    MOV64(a03, t);                                                             \
+    MOV64(t, a10);                                                             \
+    MOV64(a10, a20);                                                           \
+    MOV64(a20, a40);                                                           \
+    MOV64(a40, a30);                                                           \
+    MOV64(a30, t);                                                             \
+    MOV64(t, a11);                                                             \
+    MOV64(a11, a22);                                                           \
+    MOV64(a22, a44);                                                           \
+    MOV64(a44, a33);                                                           \
+    MOV64(a33, t);                                                             \
+    MOV64(t, a12);                                                             \
+    MOV64(a12, a24);                                                           \
+    MOV64(a24, a43);                                                           \
+    MOV64(a43, a31);                                                           \
+    MOV64(a31, t);                                                             \
+    MOV64(t, a13);                                                             \
+    MOV64(a13, a21);                                                           \
+    MOV64(a21, a42);                                                           \
+    MOV64(a42, a34);                                                           \
+    MOV64(a34, t);                                                             \
+    MOV64(t, a14);                                                             \
+    MOV64(a14, a23);                                                           \
+    MOV64(a23, a41);                                                           \
+    MOV64(a41, a32);                                                           \
+    MOV64(a32, t);                                                             \
+  } while (0)
+
+#define P8_TO_P0                                                               \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a11);                                                           \
+    MOV64(a11, a43);                                                           \
+    MOV64(a43, t);                                                             \
+    MOV64(t, a02);                                                             \
+    MOV64(a02, a22);                                                           \
+    MOV64(a22, a31);                                                           \
+    MOV64(a31, t);                                                             \
+    MOV64(t, a03);                                                             \
+    MOV64(a03, a33);                                                           \
+    MOV64(a33, a24);                                                           \
+    MOV64(a24, t);                                                             \
+    MOV64(t, a04);                                                             \
+    MOV64(a04, a44);                                                           \
+    MOV64(a44, a12);                                                           \
+    MOV64(a12, t);                                                             \
+    MOV64(t, a10);                                                             \
+    MOV64(a10, a32);                                                           \
+    MOV64(a32, a13);                                                           \
+    MOV64(a13, t);                                                             \
+    MOV64(t, a14);                                                             \
+    MOV64(a14, a21);                                                           \
+    MOV64(a21, a20);                                                           \
+    MOV64(a20, t);                                                             \
+    MOV64(t, a23);                                                             \
+    MOV64(a23, a42);                                                           \
+    MOV64(a42, a40);                                                           \
+    MOV64(a40, t);                                                             \
+    MOV64(t, a30);                                                             \
+    MOV64(a30, a41);                                                           \
+    MOV64(a41, a34);                                                           \
+    MOV64(a34, t);                                                             \
+  } while (0)
+
+#define P12_TO_P0                                                              \
+  do {                                                                         \
+    DECL64(t);                                                                 \
+    MOV64(t, a01);                                                             \
+    MOV64(a01, a04);                                                           \
+    MOV64(a04, t);                                                             \
+    MOV64(t, a02);                                                             \
+    MOV64(a02, a03);                                                           \
+    MOV64(a03, t);                                                             \
+    MOV64(t, a10);                                                             \
+    MOV64(a10, a40);                                                           \
+    MOV64(a40, t);                                                             \
+    MOV64(t, a11);                                                             \
+    MOV64(a11, a44);                                                           \
+    MOV64(a44, t);                                                             \
+    MOV64(t, a12);                                                             \
+    MOV64(a12, a43);                                                           \
+    MOV64(a43, t);                                                             \
+    MOV64(t, a13);                                                             \
+    MOV64(a13, a42);                                                           \
+    MOV64(a42, t);                                                             \
+    MOV64(t, a14);                                                             \
+    MOV64(a14, a41);                                                           \
+    MOV64(a41, t);                                                             \
+    MOV64(t, a20);                                                             \
+    MOV64(a20, a30);                                                           \
+    MOV64(a30, t);                                                             \
+    MOV64(t, a21);                                                             \
+    MOV64(a21, a34);                                                           \
+    MOV64(a34, t);                                                             \
+    MOV64(t, a22);                                                             \
+    MOV64(a22, a33);                                                           \
+    MOV64(a33, t);                                                             \
+    MOV64(t, a23);                                                             \
+    MOV64(a23, a32);                                                           \
+    MOV64(a32, t);                                                             \
+    MOV64(t, a24);                                                             \
+    MOV64(a24, a31);                                                           \
+    MOV64(a31, t);                                                             \
+  } while (0)
+
+#define LPAR   (
+#define RPAR   )
+
+#define KF_ELT(r, s, k)                                                        \
+  do {                                                                         \
+    THETA LPAR P##r RPAR;                                                      \
+    RHO LPAR P##r RPAR;                                                        \
+    KHI LPAR P##s RPAR;                                                        \
+    IOTA(k);                                                                   \
+  } while (0)
+
+#define DO(x) x
+
+#define KECCAK_F_1600 DO(KECCAK_F_1600_)
+
+#if SPH_KECCAK_UNROLL == 1
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j++) {                                                 \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      P1_TO_P0;                                                                \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 2
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j += 2) {                                              \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      KF_ELT(1, 2, RC[j + 1]);                                                 \
+      P2_TO_P0;                                                                \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 4
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j += 4) {                                              \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      KF_ELT(1, 2, RC[j + 1]);                                                 \
+      KF_ELT(2, 3, RC[j + 2]);                                                 \
+      KF_ELT(3, 4, RC[j + 3]);                                                 \
+      P4_TO_P0;                                                                \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 6
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j += 6) {                                              \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      KF_ELT(1, 2, RC[j + 1]);                                                 \
+      KF_ELT(2, 3, RC[j + 2]);                                                 \
+      KF_ELT(3, 4, RC[j + 3]);                                                 \
+      KF_ELT(4, 5, RC[j + 4]);                                                 \
+      KF_ELT(5, 6, RC[j + 5]);                                                 \
+      P6_TO_P0;                                                                \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 8
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j += 8) {                                              \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      KF_ELT(1, 2, RC[j + 1]);                                                 \
+      KF_ELT(2, 3, RC[j + 2]);                                                 \
+      KF_ELT(3, 4, RC[j + 3]);                                                 \
+      KF_ELT(4, 5, RC[j + 4]);                                                 \
+      KF_ELT(5, 6, RC[j + 5]);                                                 \
+      KF_ELT(6, 7, RC[j + 6]);                                                 \
+      KF_ELT(7, 8, RC[j + 7]);                                                 \
+      P8_TO_P0;                                                                \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 12
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    int j;                                                                     \
+    for (j = 0; j < 24; j += 12) {                                             \
+      KF_ELT(0, 1, RC[j + 0]);                                                 \
+      KF_ELT(1, 2, RC[j + 1]);                                                 \
+      KF_ELT(2, 3, RC[j + 2]);                                                 \
+      KF_ELT(3, 4, RC[j + 3]);                                                 \
+      KF_ELT(4, 5, RC[j + 4]);                                                 \
+      KF_ELT(5, 6, RC[j + 5]);                                                 \
+      KF_ELT(6, 7, RC[j + 6]);                                                 \
+      KF_ELT(7, 8, RC[j + 7]);                                                 \
+      KF_ELT(8, 9, RC[j + 8]);                                                 \
+      KF_ELT(9, 10, RC[j + 9]);                                                \
+      KF_ELT(10, 11, RC[j + 10]);                                              \
+      KF_ELT(11, 12, RC[j + 11]);                                              \
+      P12_TO_P0;                                                               \
+    }                                                                          \
+  } while (0)
+
+#elif SPH_KECCAK_UNROLL == 0
+
+#define KECCAK_F_1600_                                                         \
+  do {                                                                         \
+    KF_ELT(0, 1, RC[0]);                                                       \
+    KF_ELT(1, 2, RC[1]);                                                       \
+    KF_ELT(2, 3, RC[2]);                                                       \
+    KF_ELT(3, 4, RC[3]);                                                       \
+    KF_ELT(4, 5, RC[4]);                                                       \
+    KF_ELT(5, 6, RC[5]);                                                       \
+    KF_ELT(6, 7, RC[6]);                                                       \
+    KF_ELT(7, 8, RC[7]);                                                       \
+    KF_ELT(8, 9, RC[8]);                                                       \
+    KF_ELT(9, 10, RC[9]);                                                      \
+    KF_ELT(10, 11, RC[10]);                                                    \
+    KF_ELT(11, 12, RC[11]);                                                    \
+    KF_ELT(12, 13, RC[12]);                                                    \
+    KF_ELT(13, 14, RC[13]);                                                    \
+    KF_ELT(14, 15, RC[14]);                                                    \
+    KF_ELT(15, 16, RC[15]);                                                    \
+    KF_ELT(16, 17, RC[16]);                                                    \
+    KF_ELT(17, 18, RC[17]);                                                    \
+    KF_ELT(18, 19, RC[18]);                                                    \
+    KF_ELT(19, 20, RC[19]);                                                    \
+    KF_ELT(20, 21, RC[20]);                                                    \
+    KF_ELT(21, 22, RC[21]);                                                    \
+    KF_ELT(22, 23, RC[22]);                                                    \
+    KF_ELT(23, 0, RC[23]);                                                     \
+  } while (0)
+
+#else
+
+#error Unimplemented unroll count for Keccak.
+
+#endif
+
+static void keccak_init(sph_keccak_context *kc, unsigned out_size) {
+  int i;
+
+#if SPH_KECCAK_64
+  for (i = 0; i < 25; i++)
+    kc->u.wide[i] = 0;
+  /*
+   * Initialization for the "lane complement".
+   */
+  kc->u.wide[1] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+  kc->u.wide[2] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+  kc->u.wide[8] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+  kc->u.wide[12] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+  kc->u.wide[17] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+  kc->u.wide[20] = SPH_C64(0xFFFFFFFFFFFFFFFF);
+#else
+
+  for (i = 0; i < 50; i++)
+    kc->u.narrow[i] = 0;
+  /*
+   * Initialization for the "lane complement".
+   * Note: since we set to all-one full 64-bit words,
+   * interleaving (if applicable) is a no-op.
+   */
+  kc->u.narrow[2] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[3] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[4] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[5] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[16] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[17] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[24] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[25] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[34] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[35] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[40] = SPH_C32(0xFFFFFFFF);
+  kc->u.narrow[41] = SPH_C32(0xFFFFFFFF);
+#endif
+  kc->ptr = 0;
+  kc->lim = 200 - (out_size >> 2);
+}
+
+static void keccak_core(sph_keccak_context *kc, const void *data, size_t len,
+                        size_t lim) {
+  unsigned char *buf;
+  size_t ptr;
+  DECL_STATE
+
+  buf = kc->buf;
+  ptr = kc->ptr;
+
+  if (len < (lim - ptr)) {
+    memcpy(buf + ptr, data, len);
+    kc->ptr = ptr + len;
+    return;
+  }
+
+  READ_STATE(kc);
+  while (len > 0) {
+    size_t clen;
+
+    clen = (lim - ptr);
+    if (clen > len)
+      clen = len;
+    memcpy(buf + ptr, data, clen);
+    ptr += clen;
+    data = (const unsigned char *)data + clen;
+    len -= clen;
+    if (ptr == lim) {
+      INPUT_BUF(lim);
+      KECCAK_F_1600;
+      ptr = 0;
+    }
+  }
+  WRITE_STATE(kc);
+  kc->ptr = ptr;
+}
+
+#if SPH_KECCAK_64
+
+#define DEFCLOSE(d, lim)                                                       \
+  static void keccak_close##d(sph_keccak_context *kc,                          \
+                              unsigned ub, unsigned n,                         \
+                              void *dst) {                                     \
+    unsigned eb;                                                               \
+    union {                                                                    \
+      unsigned char tmp[lim + 1];                                              \
+      sph_u64 dummy; /* for alignment */                                       \
+    } u;                                                                       \
+    size_t j;                                                                  \
+                                                                               \
+    eb = hard_coded_eb;                                                        \
+    if (kc->ptr == (lim - 1)) {                                                \
+      if (n == 7) {                                                            \
+        u.tmp[0] = eb;                                                         \
+        memset(u.tmp + 1, 0, lim - 1);                                         \
+        u.tmp[lim] = 0x80;                                                     \
+        j = 1 + lim;                                                           \
+      } else {                                                                 \
+        u.tmp[0] = eb | 0x80;                                                  \
+        j = 1;                                                                 \
+      }                                                                        \
+    } else {                                                                   \
+      j = lim - kc->ptr;                                                       \
+      u.tmp[0] = eb;                                                           \
+      memset(u.tmp + 1, 0, j - 2);                                             \
+      u.tmp[j - 1] = 0x80;                                                     \
+    }                                                                          \
+    keccak_core(kc, u.tmp, j, lim);                                            \
+    /* Finalize the "lane complement" */                                       \
+    kc->u.wide[1] = ~kc->u.wide[1];                                            \
+    kc->u.wide[2] = ~kc->u.wide[2];                                            \
+    kc->u.wide[8] = ~kc->u.wide[8];                                            \
+    kc->u.wide[12] = ~kc->u.wide[12];                                          \
+    kc->u.wide[17] = ~kc->u.wide[17];                                          \
+    kc->u.wide[20] = ~kc->u.wide[20];                                          \
+    for (j = 0; j < d; j += 8)                                                 \
+      sph_enc64le_aligned(u.tmp + j, kc->u.wide[j >> 3]);                      \
+    memcpy(dst, u.tmp, d);                                                     \
+  }
+
+#else
+
+#define DEFCLOSE(d, lim)                                                       \
+  static void keccak_close##d(sph_keccak_context *kc, unsigned ub, unsigned n, \
+                              void *dst) {                                     \
+    unsigned eb;                                                               \
+    union {                                                                    \
+      unsigned char tmp[lim + 1];                                              \
+      sph_u64 dummy; /* for alignment */                                       \
+    } u;                                                                       \
+    size_t j;                                                                  \
+                                                                               \
+    eb = (0x100 | (ub & 0xFF)) >> (8 - n);                                     \
+    if (kc->ptr == (lim - 1)) {                                                \
+      if (n == 7) {                                                            \
+        u.tmp[0] = eb;                                                         \
+        memset(u.tmp + 1, 0, lim - 1);                                         \
+        u.tmp[lim] = 0x80;                                                     \
+        j = 1 + lim;                                                           \
+      } else {                                                                 \
+        u.tmp[0] = eb | 0x80;                                                  \
+        j = 1;                                                                 \
+      }                                                                        \
+    } else {                                                                   \
+      j = lim - kc->ptr;                                                       \
+      u.tmp[0] = eb;                                                           \
+      memset(u.tmp + 1, 0, j - 2);                                             \
+      u.tmp[j - 1] = 0x80;                                                     \
+    }                                                                          \
+    keccak_core(kc, u.tmp, j, lim);                                            \
+    /* Finalize the "lane complement" */                                       \
+    kc->u.narrow[2] = ~kc->u.narrow[2];                                        \
+    kc->u.narrow[3] = ~kc->u.narrow[3];                                        \
+    kc->u.narrow[4] = ~kc->u.narrow[4];                                        \
+    kc->u.narrow[5] = ~kc->u.narrow[5];                                        \
+    kc->u.narrow[16] = ~kc->u.narrow[16];                                      \
+    kc->u.narrow[17] = ~kc->u.narrow[17];                                      \
+    kc->u.narrow[24] = ~kc->u.narrow[24];                                      \
+    kc->u.narrow[25] = ~kc->u.narrow[25];                                      \
+    kc->u.narrow[34] = ~kc->u.narrow[34];                                      \
+    kc->u.narrow[35] = ~kc->u.narrow[35];                                      \
+    kc->u.narrow[40] = ~kc->u.narrow[40];                                      \
+    kc->u.narrow[41] = ~kc->u.narrow[41];                                      \
+    /* un-interleave */                                                        \
+    for (j = 0; j < 50; j += 2)                                                \
+      UNINTERLEAVE(kc->u.narrow[j], kc->u.narrow[j + 1]);                      \
+    for (j = 0; j < d; j += 4)                                                 \
+      sph_enc32le_aligned(u.tmp + j, kc->u.narrow[j >> 2]);                    \
+    memcpy(dst, u.tmp, d);                                                     \
+    keccak_init(kc, (unsigned)d << 3);                                         \
+  }
+
+#endif
+
+DEFCLOSE(28, 144)
+DEFCLOSE(32, 136)
+DEFCLOSE(48, 104)
+DEFCLOSE(64, 72)
+
+/* see sph_keccak.h */
+void sph_keccak224_init(void *cc) { keccak_init(cc, 224); }
+
+/* see sph_keccak.h */
+void sph_keccak224(void *cc, const void *data, size_t len) {
+  keccak_core(cc, data, len, 144);
+}
+
+/* see sph_keccak.h */
+void sph_keccak224_close(void *cc, void *dst) {
+  sph_keccak224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak224_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst) {
+  keccak_close28(cc, ub, n, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak256_init(void *cc) { keccak_init(cc, 256); }
+
+/* see sph_keccak.h */
+void sph_keccak256(void *cc, const void *data, size_t len) {
+  keccak_core(cc, data, len, 136);
+}
+
+/* see sph_keccak.h */
+void sph_keccak256_close(void *cc, void *dst) {
+  sph_keccak256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak256_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst) {
+  keccak_close32(cc, ub, n, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak384_init(void *cc) { keccak_init(cc, 384); }
+
+/* see sph_keccak.h */
+void sph_keccak384(void *cc, const void *data, size_t len) {
+  keccak_core(cc, data, len, 104);
+}
+
+/* see sph_keccak.h */
+void sph_keccak384_close(void *cc, void *dst) {
+  sph_keccak384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak384_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst) {
+  keccak_close48(cc, ub, n, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak512_init(void *cc) { keccak_init(cc, 512); }
+
+/* see sph_keccak.h */
+void sph_keccak512(void *cc, const void *data, size_t len) {
+  keccak_core(cc, data, len, 72);
+}
+
+/* see sph_keccak.h */
+void sph_keccak512_close(void *cc, void *dst) {
+  sph_keccak512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_keccak.h */
+void sph_keccak512_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst) {
+  keccak_close64(cc, ub, n, dst);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_keccak.h b/src/crypto/ghostrider/sph_keccak.h
new file mode 100644
index 000000000..ebbdc0c7a
--- /dev/null
+++ b/src/crypto/ghostrider/sph_keccak.h
@@ -0,0 +1,296 @@
+/* $Id: sph_keccak.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * Keccak interface. This is the interface for Keccak with the
+ * recommended parameters for SHA-3, with output lengths 224, 256,
+ * 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_keccak.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_KECCAK_H__
+#define SPH_KECCAK_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Taken from keccak-gate.h
+extern int hard_coded_eb;
+
+#include "sph_types.h"
+#include <stddef.h>
+
+/**
+ * Output size (in bits) for Keccak-224.
+ */
+#define SPH_SIZE_keccak224 224
+
+/**
+ * Output size (in bits) for Keccak-256.
+ */
+#define SPH_SIZE_keccak256 256
+
+/**
+ * Output size (in bits) for Keccak-384.
+ */
+#define SPH_SIZE_keccak384 384
+
+/**
+ * Output size (in bits) for Keccak-512.
+ */
+#define SPH_SIZE_keccak512 512
+
+/**
+ * This structure is a context for Keccak computations: it contains the
+ * intermediate values and some data from the last entered block. Once a
+ * Keccak computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running Keccak computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+  unsigned char buf[144]; /* first field, for alignment */
+  size_t ptr, lim;
+  union {
+#if SPH_64
+    sph_u64 wide[25];
+#endif
+    sph_u32 narrow[50];
+  } u;
+#endif
+} sph_keccak_context;
+
+/**
+ * Type for a Keccak-224 context (identical to the common context).
+ */
+typedef sph_keccak_context sph_keccak224_context;
+
+/**
+ * Type for a Keccak-256 context (identical to the common context).
+ */
+typedef sph_keccak_context sph_keccak256_context;
+
+/**
+ * Type for a Keccak-384 context (identical to the common context).
+ */
+typedef sph_keccak_context sph_keccak384_context;
+
+/**
+ * Type for a Keccak-512 context (identical to the common context).
+ */
+typedef sph_keccak_context sph_keccak512_context;
+
+/**
+ * Initialize a Keccak-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Keccak-224 context (pointer to a
+ *             <code>sph_keccak224_context</code>)
+ */
+void sph_keccak224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Keccak-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_keccak224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Keccak-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Keccak-224 context
+ * @param dst   the destination buffer
+ */
+void sph_keccak224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Keccak-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_keccak224_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Keccak-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Keccak-256 context (pointer to a
+ *             <code>sph_keccak256_context</code>)
+ */
+void sph_keccak256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Keccak-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_keccak256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Keccak-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Keccak-256 context
+ * @param dst   the destination buffer
+ */
+void sph_keccak256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Keccak-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_keccak256_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Keccak-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Keccak-384 context (pointer to a
+ *             <code>sph_keccak384_context</code>)
+ */
+void sph_keccak384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Keccak-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_keccak384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Keccak-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Keccak-384 context
+ * @param dst   the destination buffer
+ */
+void sph_keccak384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Keccak-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_keccak384_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Keccak-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Keccak-512 context (pointer to a
+ *             <code>sph_keccak512_context</code>)
+ */
+void sph_keccak512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Keccak-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_keccak512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Keccak-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Keccak-512 context
+ * @param dst   the destination buffer
+ */
+void sph_keccak512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Keccak-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_keccak512_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_luffa.c b/src/crypto/ghostrider/sph_luffa.c
new file mode 100644
index 000000000..a761bea0a
--- /dev/null
+++ b/src/crypto/ghostrider/sph_luffa.c
@@ -0,0 +1,1426 @@
+/* $Id: luffa.c 219 2010-06-08 17:24:41Z tp $ */
+/*
+ * Luffa implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#include "sph_luffa.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_64_TRUE && !defined SPH_LUFFA_PARALLEL
+#define SPH_LUFFA_PARALLEL   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+static const sph_u32 V_INIT[5][8] = {
+	{
+		SPH_C32(0x6d251e69), SPH_C32(0x44b051e0),
+		SPH_C32(0x4eaa6fb4), SPH_C32(0xdbf78465),
+		SPH_C32(0x6e292011), SPH_C32(0x90152df4),
+		SPH_C32(0xee058139), SPH_C32(0xdef610bb)
+	}, {
+		SPH_C32(0xc3b44b95), SPH_C32(0xd9d2f256),
+		SPH_C32(0x70eee9a0), SPH_C32(0xde099fa3),
+		SPH_C32(0x5d9b0557), SPH_C32(0x8fc944b3),
+		SPH_C32(0xcf1ccf0e), SPH_C32(0x746cd581)
+	}, {
+		SPH_C32(0xf7efc89d), SPH_C32(0x5dba5781),
+		SPH_C32(0x04016ce5), SPH_C32(0xad659c05),
+		SPH_C32(0x0306194f), SPH_C32(0x666d1836),
+		SPH_C32(0x24aa230a), SPH_C32(0x8b264ae7)
+	}, {
+		SPH_C32(0x858075d5), SPH_C32(0x36d79cce),
+		SPH_C32(0xe571f7d7), SPH_C32(0x204b1f67),
+		SPH_C32(0x35870c6a), SPH_C32(0x57e9e923),
+		SPH_C32(0x14bcb808), SPH_C32(0x7cde72ce)
+	}, {
+		SPH_C32(0x6c68e9be), SPH_C32(0x5ec41e22),
+		SPH_C32(0xc825b7c7), SPH_C32(0xaffb4363),
+		SPH_C32(0xf5df3999), SPH_C32(0x0fc688f1),
+		SPH_C32(0xb07224cc), SPH_C32(0x03e86cea)
+	}
+};
+
+static const sph_u32 RC00[8] = {
+	SPH_C32(0x303994a6), SPH_C32(0xc0e65299),
+	SPH_C32(0x6cc33a12), SPH_C32(0xdc56983e),
+	SPH_C32(0x1e00108f), SPH_C32(0x7800423d),
+	SPH_C32(0x8f5b7882), SPH_C32(0x96e1db12)
+};
+
+static const sph_u32 RC04[8] = {
+	SPH_C32(0xe0337818), SPH_C32(0x441ba90d),
+	SPH_C32(0x7f34d442), SPH_C32(0x9389217f),
+	SPH_C32(0xe5a8bce6), SPH_C32(0x5274baf4),
+	SPH_C32(0x26889ba7), SPH_C32(0x9a226e9d)
+};
+
+static const sph_u32 RC10[8] = {
+	SPH_C32(0xb6de10ed), SPH_C32(0x70f47aae),
+	SPH_C32(0x0707a3d4), SPH_C32(0x1c1e8f51),
+	SPH_C32(0x707a3d45), SPH_C32(0xaeb28562),
+	SPH_C32(0xbaca1589), SPH_C32(0x40a46f3e)
+};
+
+static const sph_u32 RC14[8] = {
+	SPH_C32(0x01685f3d), SPH_C32(0x05a17cf4),
+	SPH_C32(0xbd09caca), SPH_C32(0xf4272b28),
+	SPH_C32(0x144ae5cc), SPH_C32(0xfaa7ae2b),
+	SPH_C32(0x2e48f1c1), SPH_C32(0xb923c704)
+};
+
+#if SPH_LUFFA_PARALLEL
+
+static const sph_u64 RCW010[8] = {
+	SPH_C64(0xb6de10ed303994a6), SPH_C64(0x70f47aaec0e65299),
+	SPH_C64(0x0707a3d46cc33a12), SPH_C64(0x1c1e8f51dc56983e),
+	SPH_C64(0x707a3d451e00108f), SPH_C64(0xaeb285627800423d),
+	SPH_C64(0xbaca15898f5b7882), SPH_C64(0x40a46f3e96e1db12)
+};
+
+static const sph_u64 RCW014[8] = {
+	SPH_C64(0x01685f3de0337818), SPH_C64(0x05a17cf4441ba90d),
+	SPH_C64(0xbd09caca7f34d442), SPH_C64(0xf4272b289389217f),
+	SPH_C64(0x144ae5cce5a8bce6), SPH_C64(0xfaa7ae2b5274baf4),
+	SPH_C64(0x2e48f1c126889ba7), SPH_C64(0xb923c7049a226e9d)
+};
+
+#endif
+
+static const sph_u32 RC20[8] = {
+	SPH_C32(0xfc20d9d2), SPH_C32(0x34552e25),
+	SPH_C32(0x7ad8818f), SPH_C32(0x8438764a),
+	SPH_C32(0xbb6de032), SPH_C32(0xedb780c8),
+	SPH_C32(0xd9847356), SPH_C32(0xa2c78434)
+};
+
+static const sph_u32 RC24[8] = {
+	SPH_C32(0xe25e72c1), SPH_C32(0xe623bb72),
+	SPH_C32(0x5c58a4a4), SPH_C32(0x1e38e2e7),
+	SPH_C32(0x78e38b9d), SPH_C32(0x27586719),
+	SPH_C32(0x36eda57f), SPH_C32(0x703aace7)
+};
+
+static const sph_u32 RC30[8] = {
+	SPH_C32(0xb213afa5), SPH_C32(0xc84ebe95),
+	SPH_C32(0x4e608a22), SPH_C32(0x56d858fe),
+	SPH_C32(0x343b138f), SPH_C32(0xd0ec4e3d),
+	SPH_C32(0x2ceb4882), SPH_C32(0xb3ad2208)
+};
+
+static const sph_u32 RC34[8] = {
+	SPH_C32(0xe028c9bf), SPH_C32(0x44756f91),
+	SPH_C32(0x7e8fce32), SPH_C32(0x956548be),
+	SPH_C32(0xfe191be2), SPH_C32(0x3cb226e5),
+	SPH_C32(0x5944a28e), SPH_C32(0xa1c4c355)
+};
+
+#if SPH_LUFFA_PARALLEL
+
+static const sph_u64 RCW230[8] = {
+	SPH_C64(0xb213afa5fc20d9d2), SPH_C64(0xc84ebe9534552e25),
+	SPH_C64(0x4e608a227ad8818f), SPH_C64(0x56d858fe8438764a),
+	SPH_C64(0x343b138fbb6de032), SPH_C64(0xd0ec4e3dedb780c8),
+	SPH_C64(0x2ceb4882d9847356), SPH_C64(0xb3ad2208a2c78434)
+};
+
+
+static const sph_u64 RCW234[8] = {
+	SPH_C64(0xe028c9bfe25e72c1), SPH_C64(0x44756f91e623bb72),
+	SPH_C64(0x7e8fce325c58a4a4), SPH_C64(0x956548be1e38e2e7),
+	SPH_C64(0xfe191be278e38b9d), SPH_C64(0x3cb226e527586719),
+	SPH_C64(0x5944a28e36eda57f), SPH_C64(0xa1c4c355703aace7)
+};
+
+#endif
+
+static const sph_u32 RC40[8] = {
+	SPH_C32(0xf0d2e9e3), SPH_C32(0xac11d7fa),
+	SPH_C32(0x1bcb66f2), SPH_C32(0x6f2d9bc9),
+	SPH_C32(0x78602649), SPH_C32(0x8edae952),
+	SPH_C32(0x3b6ba548), SPH_C32(0xedae9520)
+};
+
+static const sph_u32 RC44[8] = {
+	SPH_C32(0x5090d577), SPH_C32(0x2d1925ab),
+	SPH_C32(0xb46496ac), SPH_C32(0xd1925ab0),
+	SPH_C32(0x29131ab6), SPH_C32(0x0fc053c3),
+	SPH_C32(0x3f014f0c), SPH_C32(0xfc053c31)
+};
+
+#define DECL_TMP8(w) \
+	sph_u32 w ## 0, w ## 1, w ## 2, w ## 3, w ## 4, w ## 5, w ## 6, w ## 7;
+
+#define M2(d, s)   do { \
+		sph_u32 tmp = s ## 7; \
+		d ## 7 = s ## 6; \
+		d ## 6 = s ## 5; \
+		d ## 5 = s ## 4; \
+		d ## 4 = s ## 3 ^ tmp; \
+		d ## 3 = s ## 2 ^ tmp; \
+		d ## 2 = s ## 1; \
+		d ## 1 = s ## 0 ^ tmp; \
+		d ## 0 = tmp; \
+	} while (0)
+
+#define XOR(d, s1, s2)   do { \
+		d ## 0 = s1 ## 0 ^ s2 ## 0; \
+		d ## 1 = s1 ## 1 ^ s2 ## 1; \
+		d ## 2 = s1 ## 2 ^ s2 ## 2; \
+		d ## 3 = s1 ## 3 ^ s2 ## 3; \
+		d ## 4 = s1 ## 4 ^ s2 ## 4; \
+		d ## 5 = s1 ## 5 ^ s2 ## 5; \
+		d ## 6 = s1 ## 6 ^ s2 ## 6; \
+		d ## 7 = s1 ## 7 ^ s2 ## 7; \
+	} while (0)
+
+#if SPH_LUFFA_PARALLEL
+
+#define SUB_CRUMB_GEN(a0, a1, a2, a3, width)   do { \
+		sph_u ## width tmp; \
+		tmp = (a0); \
+		(a0) |= (a1); \
+		(a2) ^= (a3); \
+		(a1) = SPH_T ## width(~(a1)); \
+		(a0) ^= (a3); \
+		(a3) &= tmp; \
+		(a1) ^= (a3); \
+		(a3) ^= (a2); \
+		(a2) &= (a0); \
+		(a0) = SPH_T ## width(~(a0)); \
+		(a2) ^= (a1); \
+		(a1) |= (a3); \
+		tmp ^= (a1); \
+		(a3) ^= (a2); \
+		(a2) &= (a1); \
+		(a1) ^= (a0); \
+		(a0) = tmp; \
+	} while (0)
+
+#define SUB_CRUMB(a0, a1, a2, a3)    SUB_CRUMB_GEN(a0, a1, a2, a3, 32)
+#define SUB_CRUMBW(a0, a1, a2, a3)   SUB_CRUMB_GEN(a0, a1, a2, a3, 64)
+
+
+#if 0
+
+#define ROL32W(x, n)   SPH_T64( \
+                       (((x) << (n)) \
+                       & ~((SPH_C64(0xFFFFFFFF) >> (32 - (n))) << 32)) \
+                       | (((x) >> (32 - (n))) \
+                       & ~((SPH_C64(0xFFFFFFFF) >> (n)) << (n))))
+
+#define MIX_WORDW(u, v)   do { \
+		(v) ^= (u); \
+		(u) = ROL32W((u), 2) ^ (v); \
+		(v) = ROL32W((v), 14) ^ (u); \
+		(u) = ROL32W((u), 10) ^ (v); \
+		(v) = ROL32W((v), 1); \
+	} while (0)
+
+#endif
+
+#define MIX_WORDW(u, v)   do { \
+		sph_u32 ul, uh, vl, vh; \
+		(v) ^= (u); \
+		ul = SPH_T32((sph_u32)(u)); \
+		uh = SPH_T32((sph_u32)((u) >> 32)); \
+		vl = SPH_T32((sph_u32)(v)); \
+		vh = SPH_T32((sph_u32)((v) >> 32)); \
+		ul = SPH_ROTL32(ul, 2) ^ vl; \
+		vl = SPH_ROTL32(vl, 14) ^ ul; \
+		ul = SPH_ROTL32(ul, 10) ^ vl; \
+		vl = SPH_ROTL32(vl, 1); \
+		uh = SPH_ROTL32(uh, 2) ^ vh; \
+		vh = SPH_ROTL32(vh, 14) ^ uh; \
+		uh = SPH_ROTL32(uh, 10) ^ vh; \
+		vh = SPH_ROTL32(vh, 1); \
+		(u) = (sph_u64)ul | ((sph_u64)uh << 32); \
+		(v) = (sph_u64)vl | ((sph_u64)vh << 32); \
+	} while (0)
+
+#else
+
+#define SUB_CRUMB(a0, a1, a2, a3)   do { \
+		sph_u32 tmp; \
+		tmp = (a0); \
+		(a0) |= (a1); \
+		(a2) ^= (a3); \
+		(a1) = SPH_T32(~(a1)); \
+		(a0) ^= (a3); \
+		(a3) &= tmp; \
+		(a1) ^= (a3); \
+		(a3) ^= (a2); \
+		(a2) &= (a0); \
+		(a0) = SPH_T32(~(a0)); \
+		(a2) ^= (a1); \
+		(a1) |= (a3); \
+		tmp ^= (a1); \
+		(a3) ^= (a2); \
+		(a2) &= (a1); \
+		(a1) ^= (a0); \
+		(a0) = tmp; \
+	} while (0)
+
+#endif
+
+#define MIX_WORD(u, v)   do { \
+		(v) ^= (u); \
+		(u) = SPH_ROTL32((u), 2) ^ (v); \
+		(v) = SPH_ROTL32((v), 14) ^ (u); \
+		(u) = SPH_ROTL32((u), 10) ^ (v); \
+		(v) = SPH_ROTL32((v), 1); \
+	} while (0)
+
+#define DECL_STATE3 \
+	sph_u32 V00, V01, V02, V03, V04, V05, V06, V07; \
+	sph_u32 V10, V11, V12, V13, V14, V15, V16, V17; \
+	sph_u32 V20, V21, V22, V23, V24, V25, V26, V27;
+
+#define READ_STATE3(state)   do { \
+		V00 = (state)->V[0][0]; \
+		V01 = (state)->V[0][1]; \
+		V02 = (state)->V[0][2]; \
+		V03 = (state)->V[0][3]; \
+		V04 = (state)->V[0][4]; \
+		V05 = (state)->V[0][5]; \
+		V06 = (state)->V[0][6]; \
+		V07 = (state)->V[0][7]; \
+		V10 = (state)->V[1][0]; \
+		V11 = (state)->V[1][1]; \
+		V12 = (state)->V[1][2]; \
+		V13 = (state)->V[1][3]; \
+		V14 = (state)->V[1][4]; \
+		V15 = (state)->V[1][5]; \
+		V16 = (state)->V[1][6]; \
+		V17 = (state)->V[1][7]; \
+		V20 = (state)->V[2][0]; \
+		V21 = (state)->V[2][1]; \
+		V22 = (state)->V[2][2]; \
+		V23 = (state)->V[2][3]; \
+		V24 = (state)->V[2][4]; \
+		V25 = (state)->V[2][5]; \
+		V26 = (state)->V[2][6]; \
+		V27 = (state)->V[2][7]; \
+	} while (0)
+
+#define WRITE_STATE3(state)   do { \
+		(state)->V[0][0] = V00; \
+		(state)->V[0][1] = V01; \
+		(state)->V[0][2] = V02; \
+		(state)->V[0][3] = V03; \
+		(state)->V[0][4] = V04; \
+		(state)->V[0][5] = V05; \
+		(state)->V[0][6] = V06; \
+		(state)->V[0][7] = V07; \
+		(state)->V[1][0] = V10; \
+		(state)->V[1][1] = V11; \
+		(state)->V[1][2] = V12; \
+		(state)->V[1][3] = V13; \
+		(state)->V[1][4] = V14; \
+		(state)->V[1][5] = V15; \
+		(state)->V[1][6] = V16; \
+		(state)->V[1][7] = V17; \
+		(state)->V[2][0] = V20; \
+		(state)->V[2][1] = V21; \
+		(state)->V[2][2] = V22; \
+		(state)->V[2][3] = V23; \
+		(state)->V[2][4] = V24; \
+		(state)->V[2][5] = V25; \
+		(state)->V[2][6] = V26; \
+		(state)->V[2][7] = V27; \
+	} while (0)
+
+#define MI3   do { \
+		DECL_TMP8(M) \
+		DECL_TMP8(a) \
+		M0 = sph_dec32be_aligned(buf +  0); \
+		M1 = sph_dec32be_aligned(buf +  4); \
+		M2 = sph_dec32be_aligned(buf +  8); \
+		M3 = sph_dec32be_aligned(buf + 12); \
+		M4 = sph_dec32be_aligned(buf + 16); \
+		M5 = sph_dec32be_aligned(buf + 20); \
+		M6 = sph_dec32be_aligned(buf + 24); \
+		M7 = sph_dec32be_aligned(buf + 28); \
+		XOR(a, V0, V1); \
+		XOR(a, a, V2); \
+		M2(a, a); \
+		XOR(V0, a, V0); \
+		XOR(V0, M, V0); \
+		M2(M, M); \
+		XOR(V1, a, V1); \
+		XOR(V1, M, V1); \
+		M2(M, M); \
+		XOR(V2, a, V2); \
+		XOR(V2, M, V2); \
+	} while (0)
+
+#define TWEAK3   do { \
+		V14 = SPH_ROTL32(V14, 1); \
+		V15 = SPH_ROTL32(V15, 1); \
+		V16 = SPH_ROTL32(V16, 1); \
+		V17 = SPH_ROTL32(V17, 1); \
+		V24 = SPH_ROTL32(V24, 2); \
+		V25 = SPH_ROTL32(V25, 2); \
+		V26 = SPH_ROTL32(V26, 2); \
+		V27 = SPH_ROTL32(V27, 2); \
+	} while (0)
+
+#if SPH_LUFFA_PARALLEL
+
+#define P3   do { \
+		int r; \
+		sph_u64 W0, W1, W2, W3, W4, W5, W6, W7; \
+		TWEAK3; \
+		W0 = (sph_u64)V00 | ((sph_u64)V10 << 32); \
+		W1 = (sph_u64)V01 | ((sph_u64)V11 << 32); \
+		W2 = (sph_u64)V02 | ((sph_u64)V12 << 32); \
+		W3 = (sph_u64)V03 | ((sph_u64)V13 << 32); \
+		W4 = (sph_u64)V04 | ((sph_u64)V14 << 32); \
+		W5 = (sph_u64)V05 | ((sph_u64)V15 << 32); \
+		W6 = (sph_u64)V06 | ((sph_u64)V16 << 32); \
+		W7 = (sph_u64)V07 | ((sph_u64)V17 << 32); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMBW(W0, W1, W2, W3); \
+			SUB_CRUMBW(W5, W6, W7, W4); \
+			MIX_WORDW(W0, W4); \
+			MIX_WORDW(W1, W5); \
+			MIX_WORDW(W2, W6); \
+			MIX_WORDW(W3, W7); \
+			W0 ^= RCW010[r]; \
+			W4 ^= RCW014[r]; \
+		} \
+		V00 = SPH_T32((sph_u32)W0); \
+		V10 = SPH_T32((sph_u32)(W0 >> 32)); \
+		V01 = SPH_T32((sph_u32)W1); \
+		V11 = SPH_T32((sph_u32)(W1 >> 32)); \
+		V02 = SPH_T32((sph_u32)W2); \
+		V12 = SPH_T32((sph_u32)(W2 >> 32)); \
+		V03 = SPH_T32((sph_u32)W3); \
+		V13 = SPH_T32((sph_u32)(W3 >> 32)); \
+		V04 = SPH_T32((sph_u32)W4); \
+		V14 = SPH_T32((sph_u32)(W4 >> 32)); \
+		V05 = SPH_T32((sph_u32)W5); \
+		V15 = SPH_T32((sph_u32)(W5 >> 32)); \
+		V06 = SPH_T32((sph_u32)W6); \
+		V16 = SPH_T32((sph_u32)(W6 >> 32)); \
+		V07 = SPH_T32((sph_u32)W7); \
+		V17 = SPH_T32((sph_u32)(W7 >> 32)); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V20, V21, V22, V23); \
+			SUB_CRUMB(V25, V26, V27, V24); \
+			MIX_WORD(V20, V24); \
+			MIX_WORD(V21, V25); \
+			MIX_WORD(V22, V26); \
+			MIX_WORD(V23, V27); \
+			V20 ^= RC20[r]; \
+			V24 ^= RC24[r]; \
+		} \
+	} while (0)
+
+#else
+
+#define P3   do { \
+		int r; \
+		TWEAK3; \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V00, V01, V02, V03); \
+			SUB_CRUMB(V05, V06, V07, V04); \
+			MIX_WORD(V00, V04); \
+			MIX_WORD(V01, V05); \
+			MIX_WORD(V02, V06); \
+			MIX_WORD(V03, V07); \
+			V00 ^= RC00[r]; \
+			V04 ^= RC04[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V10, V11, V12, V13); \
+			SUB_CRUMB(V15, V16, V17, V14); \
+			MIX_WORD(V10, V14); \
+			MIX_WORD(V11, V15); \
+			MIX_WORD(V12, V16); \
+			MIX_WORD(V13, V17); \
+			V10 ^= RC10[r]; \
+			V14 ^= RC14[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V20, V21, V22, V23); \
+			SUB_CRUMB(V25, V26, V27, V24); \
+			MIX_WORD(V20, V24); \
+			MIX_WORD(V21, V25); \
+			MIX_WORD(V22, V26); \
+			MIX_WORD(V23, V27); \
+			V20 ^= RC20[r]; \
+			V24 ^= RC24[r]; \
+		} \
+	} while (0)
+
+#endif
+
+#define DECL_STATE4 \
+	sph_u32 V00, V01, V02, V03, V04, V05, V06, V07; \
+	sph_u32 V10, V11, V12, V13, V14, V15, V16, V17; \
+	sph_u32 V20, V21, V22, V23, V24, V25, V26, V27; \
+	sph_u32 V30, V31, V32, V33, V34, V35, V36, V37;
+
+#define READ_STATE4(state)   do { \
+		V00 = (state)->V[0][0]; \
+		V01 = (state)->V[0][1]; \
+		V02 = (state)->V[0][2]; \
+		V03 = (state)->V[0][3]; \
+		V04 = (state)->V[0][4]; \
+		V05 = (state)->V[0][5]; \
+		V06 = (state)->V[0][6]; \
+		V07 = (state)->V[0][7]; \
+		V10 = (state)->V[1][0]; \
+		V11 = (state)->V[1][1]; \
+		V12 = (state)->V[1][2]; \
+		V13 = (state)->V[1][3]; \
+		V14 = (state)->V[1][4]; \
+		V15 = (state)->V[1][5]; \
+		V16 = (state)->V[1][6]; \
+		V17 = (state)->V[1][7]; \
+		V20 = (state)->V[2][0]; \
+		V21 = (state)->V[2][1]; \
+		V22 = (state)->V[2][2]; \
+		V23 = (state)->V[2][3]; \
+		V24 = (state)->V[2][4]; \
+		V25 = (state)->V[2][5]; \
+		V26 = (state)->V[2][6]; \
+		V27 = (state)->V[2][7]; \
+		V30 = (state)->V[3][0]; \
+		V31 = (state)->V[3][1]; \
+		V32 = (state)->V[3][2]; \
+		V33 = (state)->V[3][3]; \
+		V34 = (state)->V[3][4]; \
+		V35 = (state)->V[3][5]; \
+		V36 = (state)->V[3][6]; \
+		V37 = (state)->V[3][7]; \
+	} while (0)
+
+#define WRITE_STATE4(state)   do { \
+		(state)->V[0][0] = V00; \
+		(state)->V[0][1] = V01; \
+		(state)->V[0][2] = V02; \
+		(state)->V[0][3] = V03; \
+		(state)->V[0][4] = V04; \
+		(state)->V[0][5] = V05; \
+		(state)->V[0][6] = V06; \
+		(state)->V[0][7] = V07; \
+		(state)->V[1][0] = V10; \
+		(state)->V[1][1] = V11; \
+		(state)->V[1][2] = V12; \
+		(state)->V[1][3] = V13; \
+		(state)->V[1][4] = V14; \
+		(state)->V[1][5] = V15; \
+		(state)->V[1][6] = V16; \
+		(state)->V[1][7] = V17; \
+		(state)->V[2][0] = V20; \
+		(state)->V[2][1] = V21; \
+		(state)->V[2][2] = V22; \
+		(state)->V[2][3] = V23; \
+		(state)->V[2][4] = V24; \
+		(state)->V[2][5] = V25; \
+		(state)->V[2][6] = V26; \
+		(state)->V[2][7] = V27; \
+		(state)->V[3][0] = V30; \
+		(state)->V[3][1] = V31; \
+		(state)->V[3][2] = V32; \
+		(state)->V[3][3] = V33; \
+		(state)->V[3][4] = V34; \
+		(state)->V[3][5] = V35; \
+		(state)->V[3][6] = V36; \
+		(state)->V[3][7] = V37; \
+	} while (0)
+
+#define MI4   do { \
+		DECL_TMP8(M) \
+		DECL_TMP8(a) \
+		DECL_TMP8(b) \
+		M0 = sph_dec32be_aligned(buf +  0); \
+		M1 = sph_dec32be_aligned(buf +  4); \
+		M2 = sph_dec32be_aligned(buf +  8); \
+		M3 = sph_dec32be_aligned(buf + 12); \
+		M4 = sph_dec32be_aligned(buf + 16); \
+		M5 = sph_dec32be_aligned(buf + 20); \
+		M6 = sph_dec32be_aligned(buf + 24); \
+		M7 = sph_dec32be_aligned(buf + 28); \
+		XOR(a, V0, V1); \
+		XOR(b, V2, V3); \
+		XOR(a, a, b); \
+		M2(a, a); \
+		XOR(V0, a, V0); \
+		XOR(V1, a, V1); \
+		XOR(V2, a, V2); \
+		XOR(V3, a, V3); \
+		M2(b, V0); \
+		XOR(b, b, V3); \
+		M2(V3, V3); \
+		XOR(V3, V3, V2); \
+		M2(V2, V2); \
+		XOR(V2, V2, V1); \
+		M2(V1, V1); \
+		XOR(V1, V1, V0); \
+		XOR(V0, b, M); \
+		M2(M, M); \
+		XOR(V1, V1, M); \
+		M2(M, M); \
+		XOR(V2, V2, M); \
+		M2(M, M); \
+		XOR(V3, V3, M); \
+	} while (0)
+
+#define TWEAK4   do { \
+		V14 = SPH_ROTL32(V14, 1); \
+		V15 = SPH_ROTL32(V15, 1); \
+		V16 = SPH_ROTL32(V16, 1); \
+		V17 = SPH_ROTL32(V17, 1); \
+		V24 = SPH_ROTL32(V24, 2); \
+		V25 = SPH_ROTL32(V25, 2); \
+		V26 = SPH_ROTL32(V26, 2); \
+		V27 = SPH_ROTL32(V27, 2); \
+		V34 = SPH_ROTL32(V34, 3); \
+		V35 = SPH_ROTL32(V35, 3); \
+		V36 = SPH_ROTL32(V36, 3); \
+		V37 = SPH_ROTL32(V37, 3); \
+	} while (0)
+
+#if SPH_LUFFA_PARALLEL
+
+#define P4   do { \
+		int r; \
+		sph_u64 W0, W1, W2, W3, W4, W5, W6, W7; \
+		TWEAK4; \
+		W0 = (sph_u64)V00 | ((sph_u64)V10 << 32); \
+		W1 = (sph_u64)V01 | ((sph_u64)V11 << 32); \
+		W2 = (sph_u64)V02 | ((sph_u64)V12 << 32); \
+		W3 = (sph_u64)V03 | ((sph_u64)V13 << 32); \
+		W4 = (sph_u64)V04 | ((sph_u64)V14 << 32); \
+		W5 = (sph_u64)V05 | ((sph_u64)V15 << 32); \
+		W6 = (sph_u64)V06 | ((sph_u64)V16 << 32); \
+		W7 = (sph_u64)V07 | ((sph_u64)V17 << 32); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMBW(W0, W1, W2, W3); \
+			SUB_CRUMBW(W5, W6, W7, W4); \
+			MIX_WORDW(W0, W4); \
+			MIX_WORDW(W1, W5); \
+			MIX_WORDW(W2, W6); \
+			MIX_WORDW(W3, W7); \
+			W0 ^= RCW010[r]; \
+			W4 ^= RCW014[r]; \
+		} \
+		V00 = SPH_T32((sph_u32)W0); \
+		V10 = SPH_T32((sph_u32)(W0 >> 32)); \
+		V01 = SPH_T32((sph_u32)W1); \
+		V11 = SPH_T32((sph_u32)(W1 >> 32)); \
+		V02 = SPH_T32((sph_u32)W2); \
+		V12 = SPH_T32((sph_u32)(W2 >> 32)); \
+		V03 = SPH_T32((sph_u32)W3); \
+		V13 = SPH_T32((sph_u32)(W3 >> 32)); \
+		V04 = SPH_T32((sph_u32)W4); \
+		V14 = SPH_T32((sph_u32)(W4 >> 32)); \
+		V05 = SPH_T32((sph_u32)W5); \
+		V15 = SPH_T32((sph_u32)(W5 >> 32)); \
+		V06 = SPH_T32((sph_u32)W6); \
+		V16 = SPH_T32((sph_u32)(W6 >> 32)); \
+		V07 = SPH_T32((sph_u32)W7); \
+		V17 = SPH_T32((sph_u32)(W7 >> 32)); \
+		W0 = (sph_u64)V20 | ((sph_u64)V30 << 32); \
+		W1 = (sph_u64)V21 | ((sph_u64)V31 << 32); \
+		W2 = (sph_u64)V22 | ((sph_u64)V32 << 32); \
+		W3 = (sph_u64)V23 | ((sph_u64)V33 << 32); \
+		W4 = (sph_u64)V24 | ((sph_u64)V34 << 32); \
+		W5 = (sph_u64)V25 | ((sph_u64)V35 << 32); \
+		W6 = (sph_u64)V26 | ((sph_u64)V36 << 32); \
+		W7 = (sph_u64)V27 | ((sph_u64)V37 << 32); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMBW(W0, W1, W2, W3); \
+			SUB_CRUMBW(W5, W6, W7, W4); \
+			MIX_WORDW(W0, W4); \
+			MIX_WORDW(W1, W5); \
+			MIX_WORDW(W2, W6); \
+			MIX_WORDW(W3, W7); \
+			W0 ^= RCW230[r]; \
+			W4 ^= RCW234[r]; \
+		} \
+		V20 = SPH_T32((sph_u32)W0); \
+		V30 = SPH_T32((sph_u32)(W0 >> 32)); \
+		V21 = SPH_T32((sph_u32)W1); \
+		V31 = SPH_T32((sph_u32)(W1 >> 32)); \
+		V22 = SPH_T32((sph_u32)W2); \
+		V32 = SPH_T32((sph_u32)(W2 >> 32)); \
+		V23 = SPH_T32((sph_u32)W3); \
+		V33 = SPH_T32((sph_u32)(W3 >> 32)); \
+		V24 = SPH_T32((sph_u32)W4); \
+		V34 = SPH_T32((sph_u32)(W4 >> 32)); \
+		V25 = SPH_T32((sph_u32)W5); \
+		V35 = SPH_T32((sph_u32)(W5 >> 32)); \
+		V26 = SPH_T32((sph_u32)W6); \
+		V36 = SPH_T32((sph_u32)(W6 >> 32)); \
+		V27 = SPH_T32((sph_u32)W7); \
+		V37 = SPH_T32((sph_u32)(W7 >> 32)); \
+	} while (0)
+
+#else
+
+#define P4   do { \
+		int r; \
+		TWEAK4; \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V00, V01, V02, V03); \
+			SUB_CRUMB(V05, V06, V07, V04); \
+			MIX_WORD(V00, V04); \
+			MIX_WORD(V01, V05); \
+			MIX_WORD(V02, V06); \
+			MIX_WORD(V03, V07); \
+			V00 ^= RC00[r]; \
+			V04 ^= RC04[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V10, V11, V12, V13); \
+			SUB_CRUMB(V15, V16, V17, V14); \
+			MIX_WORD(V10, V14); \
+			MIX_WORD(V11, V15); \
+			MIX_WORD(V12, V16); \
+			MIX_WORD(V13, V17); \
+			V10 ^= RC10[r]; \
+			V14 ^= RC14[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V20, V21, V22, V23); \
+			SUB_CRUMB(V25, V26, V27, V24); \
+			MIX_WORD(V20, V24); \
+			MIX_WORD(V21, V25); \
+			MIX_WORD(V22, V26); \
+			MIX_WORD(V23, V27); \
+			V20 ^= RC20[r]; \
+			V24 ^= RC24[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V30, V31, V32, V33); \
+			SUB_CRUMB(V35, V36, V37, V34); \
+			MIX_WORD(V30, V34); \
+			MIX_WORD(V31, V35); \
+			MIX_WORD(V32, V36); \
+			MIX_WORD(V33, V37); \
+			V30 ^= RC30[r]; \
+			V34 ^= RC34[r]; \
+		} \
+	} while (0)
+
+#endif
+
+#define DECL_STATE5 \
+	sph_u32 V00, V01, V02, V03, V04, V05, V06, V07; \
+	sph_u32 V10, V11, V12, V13, V14, V15, V16, V17; \
+	sph_u32 V20, V21, V22, V23, V24, V25, V26, V27; \
+	sph_u32 V30, V31, V32, V33, V34, V35, V36, V37; \
+	sph_u32 V40, V41, V42, V43, V44, V45, V46, V47;
+
+#define READ_STATE5(state)   do { \
+		V00 = (state)->V[0][0]; \
+		V01 = (state)->V[0][1]; \
+		V02 = (state)->V[0][2]; \
+		V03 = (state)->V[0][3]; \
+		V04 = (state)->V[0][4]; \
+		V05 = (state)->V[0][5]; \
+		V06 = (state)->V[0][6]; \
+		V07 = (state)->V[0][7]; \
+		V10 = (state)->V[1][0]; \
+		V11 = (state)->V[1][1]; \
+		V12 = (state)->V[1][2]; \
+		V13 = (state)->V[1][3]; \
+		V14 = (state)->V[1][4]; \
+		V15 = (state)->V[1][5]; \
+		V16 = (state)->V[1][6]; \
+		V17 = (state)->V[1][7]; \
+		V20 = (state)->V[2][0]; \
+		V21 = (state)->V[2][1]; \
+		V22 = (state)->V[2][2]; \
+		V23 = (state)->V[2][3]; \
+		V24 = (state)->V[2][4]; \
+		V25 = (state)->V[2][5]; \
+		V26 = (state)->V[2][6]; \
+		V27 = (state)->V[2][7]; \
+		V30 = (state)->V[3][0]; \
+		V31 = (state)->V[3][1]; \
+		V32 = (state)->V[3][2]; \
+		V33 = (state)->V[3][3]; \
+		V34 = (state)->V[3][4]; \
+		V35 = (state)->V[3][5]; \
+		V36 = (state)->V[3][6]; \
+		V37 = (state)->V[3][7]; \
+		V40 = (state)->V[4][0]; \
+		V41 = (state)->V[4][1]; \
+		V42 = (state)->V[4][2]; \
+		V43 = (state)->V[4][3]; \
+		V44 = (state)->V[4][4]; \
+		V45 = (state)->V[4][5]; \
+		V46 = (state)->V[4][6]; \
+		V47 = (state)->V[4][7]; \
+	} while (0)
+
+#define WRITE_STATE5(state)   do { \
+		(state)->V[0][0] = V00; \
+		(state)->V[0][1] = V01; \
+		(state)->V[0][2] = V02; \
+		(state)->V[0][3] = V03; \
+		(state)->V[0][4] = V04; \
+		(state)->V[0][5] = V05; \
+		(state)->V[0][6] = V06; \
+		(state)->V[0][7] = V07; \
+		(state)->V[1][0] = V10; \
+		(state)->V[1][1] = V11; \
+		(state)->V[1][2] = V12; \
+		(state)->V[1][3] = V13; \
+		(state)->V[1][4] = V14; \
+		(state)->V[1][5] = V15; \
+		(state)->V[1][6] = V16; \
+		(state)->V[1][7] = V17; \
+		(state)->V[2][0] = V20; \
+		(state)->V[2][1] = V21; \
+		(state)->V[2][2] = V22; \
+		(state)->V[2][3] = V23; \
+		(state)->V[2][4] = V24; \
+		(state)->V[2][5] = V25; \
+		(state)->V[2][6] = V26; \
+		(state)->V[2][7] = V27; \
+		(state)->V[3][0] = V30; \
+		(state)->V[3][1] = V31; \
+		(state)->V[3][2] = V32; \
+		(state)->V[3][3] = V33; \
+		(state)->V[3][4] = V34; \
+		(state)->V[3][5] = V35; \
+		(state)->V[3][6] = V36; \
+		(state)->V[3][7] = V37; \
+		(state)->V[4][0] = V40; \
+		(state)->V[4][1] = V41; \
+		(state)->V[4][2] = V42; \
+		(state)->V[4][3] = V43; \
+		(state)->V[4][4] = V44; \
+		(state)->V[4][5] = V45; \
+		(state)->V[4][6] = V46; \
+		(state)->V[4][7] = V47; \
+	} while (0)
+
+#define MI5   do { \
+		DECL_TMP8(M) \
+		DECL_TMP8(a) \
+		DECL_TMP8(b) \
+		M0 = sph_dec32be_aligned(buf +  0); \
+		M1 = sph_dec32be_aligned(buf +  4); \
+		M2 = sph_dec32be_aligned(buf +  8); \
+		M3 = sph_dec32be_aligned(buf + 12); \
+		M4 = sph_dec32be_aligned(buf + 16); \
+		M5 = sph_dec32be_aligned(buf + 20); \
+		M6 = sph_dec32be_aligned(buf + 24); \
+		M7 = sph_dec32be_aligned(buf + 28); \
+		XOR(a, V0, V1); \
+		XOR(b, V2, V3); \
+		XOR(a, a, b); \
+		XOR(a, a, V4); \
+		M2(a, a); \
+		XOR(V0, a, V0); \
+		XOR(V1, a, V1); \
+		XOR(V2, a, V2); \
+		XOR(V3, a, V3); \
+		XOR(V4, a, V4); \
+		M2(b, V0); \
+		XOR(b, b, V1); \
+		M2(V1, V1); \
+		XOR(V1, V1, V2); \
+		M2(V2, V2); \
+		XOR(V2, V2, V3); \
+		M2(V3, V3); \
+		XOR(V3, V3, V4); \
+		M2(V4, V4); \
+		XOR(V4, V4, V0); \
+		M2(V0, b); \
+		XOR(V0, V0, V4); \
+		M2(V4, V4); \
+		XOR(V4, V4, V3); \
+		M2(V3, V3); \
+		XOR(V3, V3, V2); \
+		M2(V2, V2); \
+		XOR(V2, V2, V1); \
+		M2(V1, V1); \
+		XOR(V1, V1, b); \
+		XOR(V0, V0, M); \
+		M2(M, M); \
+		XOR(V1, V1, M); \
+		M2(M, M); \
+		XOR(V2, V2, M); \
+		M2(M, M); \
+		XOR(V3, V3, M); \
+		M2(M, M); \
+		XOR(V4, V4, M); \
+	} while (0)
+
+#define TWEAK5   do { \
+		V14 = SPH_ROTL32(V14, 1); \
+		V15 = SPH_ROTL32(V15, 1); \
+		V16 = SPH_ROTL32(V16, 1); \
+		V17 = SPH_ROTL32(V17, 1); \
+		V24 = SPH_ROTL32(V24, 2); \
+		V25 = SPH_ROTL32(V25, 2); \
+		V26 = SPH_ROTL32(V26, 2); \
+		V27 = SPH_ROTL32(V27, 2); \
+		V34 = SPH_ROTL32(V34, 3); \
+		V35 = SPH_ROTL32(V35, 3); \
+		V36 = SPH_ROTL32(V36, 3); \
+		V37 = SPH_ROTL32(V37, 3); \
+		V44 = SPH_ROTL32(V44, 4); \
+		V45 = SPH_ROTL32(V45, 4); \
+		V46 = SPH_ROTL32(V46, 4); \
+		V47 = SPH_ROTL32(V47, 4); \
+	} while (0)
+
+#if SPH_LUFFA_PARALLEL
+
+#define P5   do { \
+		int r; \
+		sph_u64 W0, W1, W2, W3, W4, W5, W6, W7; \
+		TWEAK5; \
+		W0 = (sph_u64)V00 | ((sph_u64)V10 << 32); \
+		W1 = (sph_u64)V01 | ((sph_u64)V11 << 32); \
+		W2 = (sph_u64)V02 | ((sph_u64)V12 << 32); \
+		W3 = (sph_u64)V03 | ((sph_u64)V13 << 32); \
+		W4 = (sph_u64)V04 | ((sph_u64)V14 << 32); \
+		W5 = (sph_u64)V05 | ((sph_u64)V15 << 32); \
+		W6 = (sph_u64)V06 | ((sph_u64)V16 << 32); \
+		W7 = (sph_u64)V07 | ((sph_u64)V17 << 32); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMBW(W0, W1, W2, W3); \
+			SUB_CRUMBW(W5, W6, W7, W4); \
+			MIX_WORDW(W0, W4); \
+			MIX_WORDW(W1, W5); \
+			MIX_WORDW(W2, W6); \
+			MIX_WORDW(W3, W7); \
+			W0 ^= RCW010[r]; \
+			W4 ^= RCW014[r]; \
+		} \
+		V00 = SPH_T32((sph_u32)W0); \
+		V10 = SPH_T32((sph_u32)(W0 >> 32)); \
+		V01 = SPH_T32((sph_u32)W1); \
+		V11 = SPH_T32((sph_u32)(W1 >> 32)); \
+		V02 = SPH_T32((sph_u32)W2); \
+		V12 = SPH_T32((sph_u32)(W2 >> 32)); \
+		V03 = SPH_T32((sph_u32)W3); \
+		V13 = SPH_T32((sph_u32)(W3 >> 32)); \
+		V04 = SPH_T32((sph_u32)W4); \
+		V14 = SPH_T32((sph_u32)(W4 >> 32)); \
+		V05 = SPH_T32((sph_u32)W5); \
+		V15 = SPH_T32((sph_u32)(W5 >> 32)); \
+		V06 = SPH_T32((sph_u32)W6); \
+		V16 = SPH_T32((sph_u32)(W6 >> 32)); \
+		V07 = SPH_T32((sph_u32)W7); \
+		V17 = SPH_T32((sph_u32)(W7 >> 32)); \
+		W0 = (sph_u64)V20 | ((sph_u64)V30 << 32); \
+		W1 = (sph_u64)V21 | ((sph_u64)V31 << 32); \
+		W2 = (sph_u64)V22 | ((sph_u64)V32 << 32); \
+		W3 = (sph_u64)V23 | ((sph_u64)V33 << 32); \
+		W4 = (sph_u64)V24 | ((sph_u64)V34 << 32); \
+		W5 = (sph_u64)V25 | ((sph_u64)V35 << 32); \
+		W6 = (sph_u64)V26 | ((sph_u64)V36 << 32); \
+		W7 = (sph_u64)V27 | ((sph_u64)V37 << 32); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMBW(W0, W1, W2, W3); \
+			SUB_CRUMBW(W5, W6, W7, W4); \
+			MIX_WORDW(W0, W4); \
+			MIX_WORDW(W1, W5); \
+			MIX_WORDW(W2, W6); \
+			MIX_WORDW(W3, W7); \
+			W0 ^= RCW230[r]; \
+			W4 ^= RCW234[r]; \
+		} \
+		V20 = SPH_T32((sph_u32)W0); \
+		V30 = SPH_T32((sph_u32)(W0 >> 32)); \
+		V21 = SPH_T32((sph_u32)W1); \
+		V31 = SPH_T32((sph_u32)(W1 >> 32)); \
+		V22 = SPH_T32((sph_u32)W2); \
+		V32 = SPH_T32((sph_u32)(W2 >> 32)); \
+		V23 = SPH_T32((sph_u32)W3); \
+		V33 = SPH_T32((sph_u32)(W3 >> 32)); \
+		V24 = SPH_T32((sph_u32)W4); \
+		V34 = SPH_T32((sph_u32)(W4 >> 32)); \
+		V25 = SPH_T32((sph_u32)W5); \
+		V35 = SPH_T32((sph_u32)(W5 >> 32)); \
+		V26 = SPH_T32((sph_u32)W6); \
+		V36 = SPH_T32((sph_u32)(W6 >> 32)); \
+		V27 = SPH_T32((sph_u32)W7); \
+		V37 = SPH_T32((sph_u32)(W7 >> 32)); \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V40, V41, V42, V43); \
+			SUB_CRUMB(V45, V46, V47, V44); \
+			MIX_WORD(V40, V44); \
+			MIX_WORD(V41, V45); \
+			MIX_WORD(V42, V46); \
+			MIX_WORD(V43, V47); \
+			V40 ^= RC40[r]; \
+			V44 ^= RC44[r]; \
+		} \
+	} while (0)
+
+#else
+
+#define P5   do { \
+		int r; \
+		TWEAK5; \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V00, V01, V02, V03); \
+			SUB_CRUMB(V05, V06, V07, V04); \
+			MIX_WORD(V00, V04); \
+			MIX_WORD(V01, V05); \
+			MIX_WORD(V02, V06); \
+			MIX_WORD(V03, V07); \
+			V00 ^= RC00[r]; \
+			V04 ^= RC04[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V10, V11, V12, V13); \
+			SUB_CRUMB(V15, V16, V17, V14); \
+			MIX_WORD(V10, V14); \
+			MIX_WORD(V11, V15); \
+			MIX_WORD(V12, V16); \
+			MIX_WORD(V13, V17); \
+			V10 ^= RC10[r]; \
+			V14 ^= RC14[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V20, V21, V22, V23); \
+			SUB_CRUMB(V25, V26, V27, V24); \
+			MIX_WORD(V20, V24); \
+			MIX_WORD(V21, V25); \
+			MIX_WORD(V22, V26); \
+			MIX_WORD(V23, V27); \
+			V20 ^= RC20[r]; \
+			V24 ^= RC24[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V30, V31, V32, V33); \
+			SUB_CRUMB(V35, V36, V37, V34); \
+			MIX_WORD(V30, V34); \
+			MIX_WORD(V31, V35); \
+			MIX_WORD(V32, V36); \
+			MIX_WORD(V33, V37); \
+			V30 ^= RC30[r]; \
+			V34 ^= RC34[r]; \
+		} \
+		for (r = 0; r < 8; r ++) { \
+			SUB_CRUMB(V40, V41, V42, V43); \
+			SUB_CRUMB(V45, V46, V47, V44); \
+			MIX_WORD(V40, V44); \
+			MIX_WORD(V41, V45); \
+			MIX_WORD(V42, V46); \
+			MIX_WORD(V43, V47); \
+			V40 ^= RC40[r]; \
+			V44 ^= RC44[r]; \
+		} \
+	} while (0)
+
+#endif
+
+static void
+luffa3(sph_luffa224_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE3
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE3(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			MI3;
+			P3;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE3(sc);
+	sc->ptr = ptr;
+}
+
+static void
+luffa3_close(sph_luffa224_context *sc, unsigned ub, unsigned n,
+	void *dst, unsigned out_size_w32)
+{
+	unsigned char *buf, *out;
+	size_t ptr;
+	unsigned z;
+	int i;
+	DECL_STATE3
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	READ_STATE3(sc);
+	for (i = 0; i < 2; i ++) {
+		MI3;
+		P3;
+		memset(buf, 0, sizeof sc->buf);
+	}
+	out = dst;
+	sph_enc32be(out +  0, V00 ^ V10 ^ V20);
+	sph_enc32be(out +  4, V01 ^ V11 ^ V21);
+	sph_enc32be(out +  8, V02 ^ V12 ^ V22);
+	sph_enc32be(out + 12, V03 ^ V13 ^ V23);
+	sph_enc32be(out + 16, V04 ^ V14 ^ V24);
+	sph_enc32be(out + 20, V05 ^ V15 ^ V25);
+	sph_enc32be(out + 24, V06 ^ V16 ^ V26);
+	if (out_size_w32 > 7)
+		sph_enc32be(out + 28, V07 ^ V17 ^ V27);
+}
+
+static void
+luffa4(sph_luffa384_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE4
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE4(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			MI4;
+			P4;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE4(sc);
+	sc->ptr = ptr;
+}
+
+static void
+luffa4_close(sph_luffa384_context *sc, unsigned ub, unsigned n, void *dst)
+{
+	unsigned char *buf, *out;
+	size_t ptr;
+	unsigned z;
+	int i;
+	DECL_STATE4
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	out = dst;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	READ_STATE4(sc);
+	for (i = 0; i < 3; i ++) {
+		MI4;
+		P4;
+		switch (i) {
+		case 0:
+			memset(buf, 0, sizeof sc->buf);
+			break;
+		case 1:
+			sph_enc32be(out +  0, V00 ^ V10 ^ V20 ^ V30);
+			sph_enc32be(out +  4, V01 ^ V11 ^ V21 ^ V31);
+			sph_enc32be(out +  8, V02 ^ V12 ^ V22 ^ V32);
+			sph_enc32be(out + 12, V03 ^ V13 ^ V23 ^ V33);
+			sph_enc32be(out + 16, V04 ^ V14 ^ V24 ^ V34);
+			sph_enc32be(out + 20, V05 ^ V15 ^ V25 ^ V35);
+			sph_enc32be(out + 24, V06 ^ V16 ^ V26 ^ V36);
+			sph_enc32be(out + 28, V07 ^ V17 ^ V27 ^ V37);
+			break;
+		case 2:
+			sph_enc32be(out + 32, V00 ^ V10 ^ V20 ^ V30);
+			sph_enc32be(out + 36, V01 ^ V11 ^ V21 ^ V31);
+			sph_enc32be(out + 40, V02 ^ V12 ^ V22 ^ V32);
+			sph_enc32be(out + 44, V03 ^ V13 ^ V23 ^ V33);
+			break;
+		}
+	}
+}
+
+static void
+luffa5(sph_luffa512_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE5
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE5(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			MI5;
+			P5;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE5(sc);
+	sc->ptr = ptr;
+}
+
+static void
+luffa5_close(sph_luffa512_context *sc, unsigned ub, unsigned n, void *dst)
+{
+	unsigned char *buf, *out;
+	size_t ptr;
+	unsigned z;
+	int i;
+	DECL_STATE5
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	out = dst;
+	z = 0x80 >> n;
+	buf[ptr ++] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	READ_STATE5(sc);
+	for (i = 0; i < 3; i ++) {
+		MI5;
+		P5;
+		switch (i) {
+		case 0:
+			memset(buf, 0, sizeof sc->buf);
+			break;
+		case 1:
+			sph_enc32be(out +  0, V00 ^ V10 ^ V20 ^ V30 ^ V40);
+			sph_enc32be(out +  4, V01 ^ V11 ^ V21 ^ V31 ^ V41);
+			sph_enc32be(out +  8, V02 ^ V12 ^ V22 ^ V32 ^ V42);
+			sph_enc32be(out + 12, V03 ^ V13 ^ V23 ^ V33 ^ V43);
+			sph_enc32be(out + 16, V04 ^ V14 ^ V24 ^ V34 ^ V44);
+			sph_enc32be(out + 20, V05 ^ V15 ^ V25 ^ V35 ^ V45);
+			sph_enc32be(out + 24, V06 ^ V16 ^ V26 ^ V36 ^ V46);
+			sph_enc32be(out + 28, V07 ^ V17 ^ V27 ^ V37 ^ V47);
+			break;
+		case 2:
+			sph_enc32be(out + 32, V00 ^ V10 ^ V20 ^ V30 ^ V40);
+			sph_enc32be(out + 36, V01 ^ V11 ^ V21 ^ V31 ^ V41);
+			sph_enc32be(out + 40, V02 ^ V12 ^ V22 ^ V32 ^ V42);
+			sph_enc32be(out + 44, V03 ^ V13 ^ V23 ^ V33 ^ V43);
+			sph_enc32be(out + 48, V04 ^ V14 ^ V24 ^ V34 ^ V44);
+			sph_enc32be(out + 52, V05 ^ V15 ^ V25 ^ V35 ^ V45);
+			sph_enc32be(out + 56, V06 ^ V16 ^ V26 ^ V36 ^ V46);
+			sph_enc32be(out + 60, V07 ^ V17 ^ V27 ^ V37 ^ V47);
+			break;
+		}
+	}
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa224_init(void *cc)
+{
+	sph_luffa224_context *sc;
+
+	sc = cc;
+	memcpy(sc->V, V_INIT, sizeof(sc->V));
+	sc->ptr = 0;
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa224(void *cc, const void *data, size_t len)
+{
+	luffa3(cc, data, len);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa224_close(void *cc, void *dst)
+{
+	sph_luffa224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	luffa3_close(cc, ub, n, dst, 7);
+	sph_luffa224_init(cc);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa256_init(void *cc)
+{
+	sph_luffa256_context *sc;
+
+	sc = cc;
+	memcpy(sc->V, V_INIT, sizeof(sc->V));
+	sc->ptr = 0;
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa256(void *cc, const void *data, size_t len)
+{
+	luffa3(cc, data, len);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa256_close(void *cc, void *dst)
+{
+	sph_luffa256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	luffa3_close(cc, ub, n, dst, 8);
+	sph_luffa256_init(cc);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa384_init(void *cc)
+{
+	sph_luffa384_context *sc;
+
+	sc = cc;
+	memcpy(sc->V, V_INIT, sizeof(sc->V));
+	sc->ptr = 0;
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa384(void *cc, const void *data, size_t len)
+{
+	luffa4(cc, data, len);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa384_close(void *cc, void *dst)
+{
+	sph_luffa384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	luffa4_close(cc, ub, n, dst);
+	sph_luffa384_init(cc);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa512_init(void *cc)
+{
+	sph_luffa512_context *sc;
+
+	sc = cc;
+	memcpy(sc->V, V_INIT, sizeof(sc->V));
+	sc->ptr = 0;
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa512(void *cc, const void *data, size_t len)
+{
+	luffa5(cc, data, len);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa512_close(void *cc, void *dst)
+{
+	sph_luffa512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_luffa.h */
+void
+sph_luffa512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	luffa5_close(cc, ub, n, dst);
+	sph_luffa512_init(cc);
+}
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/src/crypto/ghostrider/sph_luffa.h b/src/crypto/ghostrider/sph_luffa.h
new file mode 100644
index 000000000..a32fd7b16
--- /dev/null
+++ b/src/crypto/ghostrider/sph_luffa.h
@@ -0,0 +1,296 @@
+/* $Id: sph_luffa.h 154 2010-04-26 17:00:24Z tp $ */
+/**
+ * Luffa interface. Luffa is a family of functions which differ by
+ * their output size; this implementation defines Luffa for output
+ * sizes 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_luffa.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_LUFFA_H__
+#define SPH_LUFFA_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for Luffa-224.
+ */
+#define SPH_SIZE_luffa224   224
+
+/**
+ * Output size (in bits) for Luffa-256.
+ */
+#define SPH_SIZE_luffa256   256
+
+/**
+ * Output size (in bits) for Luffa-384.
+ */
+#define SPH_SIZE_luffa384   384
+
+/**
+ * Output size (in bits) for Luffa-512.
+ */
+#define SPH_SIZE_luffa512   512
+
+/**
+ * This structure is a context for Luffa-224 computations: it contains
+ * the intermediate values and some data from the last entered block.
+ * Once a Luffa computation has been performed, the context can be
+ * reused for another computation.
+ *
+ * The contents of this structure are private. A running Luffa
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[32];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 V[3][8];
+#endif
+} sph_luffa224_context;
+
+/**
+ * This structure is a context for Luffa-256 computations. It is
+ * identical to <code>sph_luffa224_context</code>.
+ */
+typedef sph_luffa224_context sph_luffa256_context;
+
+/**
+ * This structure is a context for Luffa-384 computations.
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[32];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 V[4][8];
+#endif
+} sph_luffa384_context;
+
+/**
+ * This structure is a context for Luffa-512 computations.
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[32];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 V[5][8];
+#endif
+} sph_luffa512_context;
+
+/**
+ * Initialize a Luffa-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Luffa-224 context (pointer to a
+ *             <code>sph_luffa224_context</code>)
+ */
+void sph_luffa224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Luffa-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_luffa224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Luffa-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Luffa-224 context
+ * @param dst   the destination buffer
+ */
+void sph_luffa224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Luffa-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_luffa224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Luffa-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Luffa-256 context (pointer to a
+ *             <code>sph_luffa256_context</code>)
+ */
+void sph_luffa256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Luffa-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_luffa256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Luffa-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Luffa-256 context
+ * @param dst   the destination buffer
+ */
+void sph_luffa256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Luffa-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_luffa256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Luffa-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Luffa-384 context (pointer to a
+ *             <code>sph_luffa384_context</code>)
+ */
+void sph_luffa384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Luffa-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_luffa384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Luffa-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Luffa-384 context
+ * @param dst   the destination buffer
+ */
+void sph_luffa384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Luffa-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_luffa384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Luffa-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Luffa-512 context (pointer to a
+ *             <code>sph_luffa512_context</code>)
+ */
+void sph_luffa512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Luffa-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_luffa512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Luffa-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Luffa-512 context
+ * @param dst   the destination buffer
+ */
+void sph_luffa512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Luffa-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_luffa512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+	
+#ifdef __cplusplus
+}
+#endif
+	
+#endif
diff --git a/src/crypto/ghostrider/sph_sha2.c b/src/crypto/ghostrider/sph_sha2.c
new file mode 100644
index 000000000..7f616e3cf
--- /dev/null
+++ b/src/crypto/ghostrider/sph_sha2.c
@@ -0,0 +1,793 @@
+/* $Id: sha2.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * SHA-224 / SHA-256 implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_sha2.h"
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_SHA2
+#define SPH_SMALL_FOOTPRINT_SHA2   1
+#endif
+
+#define CH(X, Y, Z)    ((((Y) ^ (Z)) & (X)) ^ (Z))
+//#define MAJ(X, Y, Z)   (((Y) & (Z)) | (((Y) | (Z)) & (X)))
+#define MAJ( X, Y, Z )   ( Y  ^ ( ( X_xor_Y = X ^ Y ) & ( Y_xor_Z ) ) )
+#define ROTR    SPH_ROTR32
+
+#define BSG2_0(x)      (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))
+#define BSG2_1(x)      (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25))
+#define SSG2_0(x)      (ROTR(x, 7) ^ ROTR(x, 18) ^ SPH_T32((x) >> 3))
+#define SSG2_1(x)      (ROTR(x, 17) ^ ROTR(x, 19) ^ SPH_T32((x) >> 10))
+
+static const sph_u32 H224[8] = {
+	SPH_C32(0xC1059ED8), SPH_C32(0x367CD507), SPH_C32(0x3070DD17),
+	SPH_C32(0xF70E5939), SPH_C32(0xFFC00B31), SPH_C32(0x68581511),
+	SPH_C32(0x64F98FA7), SPH_C32(0xBEFA4FA4)
+};
+
+static const sph_u32 H256[8] = {
+	SPH_C32(0x6A09E667), SPH_C32(0xBB67AE85), SPH_C32(0x3C6EF372),
+	SPH_C32(0xA54FF53A), SPH_C32(0x510E527F), SPH_C32(0x9B05688C),
+	SPH_C32(0x1F83D9AB), SPH_C32(0x5BE0CD19)
+};
+
+/*
+ * The SHA2_ROUND_BODY defines the body for a SHA-224 / SHA-256
+ * compression function implementation. The "in" parameter should
+ * evaluate, when applied to a numerical input parameter from 0 to 15,
+ * to an expression which yields the corresponding input block. The "r"
+ * parameter should evaluate to an array or pointer expression
+ * designating the array of 8 words which contains the input and output
+ * of the compression function.
+ */
+
+
+/*
+static const sph_u32 K[64] = {
+	SPH_C32(0x428A2F98), SPH_C32(0x71374491),
+	SPH_C32(0xB5C0FBCF), SPH_C32(0xE9B5DBA5),
+	SPH_C32(0x3956C25B), SPH_C32(0x59F111F1),
+	SPH_C32(0x923F82A4), SPH_C32(0xAB1C5ED5),
+	SPH_C32(0xD807AA98), SPH_C32(0x12835B01),
+	SPH_C32(0x243185BE), SPH_C32(0x550C7DC3),
+	SPH_C32(0x72BE5D74), SPH_C32(0x80DEB1FE),
+	SPH_C32(0x9BDC06A7), SPH_C32(0xC19BF174),
+	SPH_C32(0xE49B69C1), SPH_C32(0xEFBE4786),
+	SPH_C32(0x0FC19DC6), SPH_C32(0x240CA1CC),
+	SPH_C32(0x2DE92C6F), SPH_C32(0x4A7484AA),
+	SPH_C32(0x5CB0A9DC), SPH_C32(0x76F988DA),
+	SPH_C32(0x983E5152), SPH_C32(0xA831C66D),
+	SPH_C32(0xB00327C8), SPH_C32(0xBF597FC7),
+	SPH_C32(0xC6E00BF3), SPH_C32(0xD5A79147),
+	SPH_C32(0x06CA6351), SPH_C32(0x14292967),
+	SPH_C32(0x27B70A85), SPH_C32(0x2E1B2138),
+	SPH_C32(0x4D2C6DFC), SPH_C32(0x53380D13),
+	SPH_C32(0x650A7354), SPH_C32(0x766A0ABB),
+	SPH_C32(0x81C2C92E), SPH_C32(0x92722C85),
+	SPH_C32(0xA2BFE8A1), SPH_C32(0xA81A664B),
+	SPH_C32(0xC24B8B70), SPH_C32(0xC76C51A3),
+	SPH_C32(0xD192E819), SPH_C32(0xD6990624),
+	SPH_C32(0xF40E3585), SPH_C32(0x106AA070),
+	SPH_C32(0x19A4C116), SPH_C32(0x1E376C08),
+	SPH_C32(0x2748774C), SPH_C32(0x34B0BCB5),
+	SPH_C32(0x391C0CB3), SPH_C32(0x4ED8AA4A),
+	SPH_C32(0x5B9CCA4F), SPH_C32(0x682E6FF3),
+	SPH_C32(0x748F82EE), SPH_C32(0x78A5636F),
+	SPH_C32(0x84C87814), SPH_C32(0x8CC70208),
+	SPH_C32(0x90BEFFFA), SPH_C32(0xA4506CEB),
+	SPH_C32(0xBEF9A3F7), SPH_C32(0xC67178F2)
+};
+*/
+
+#if SPH_SMALL_FOOTPRINT_SHA2
+
+#define SHA2_MEXP1(in, pc)   do { \
+		W[pc] = in(pc); \
+	} while (0)
+
+#define SHA2_MEXP2(in, pc)   do { \
+		W[(pc) & 0x0F] = SPH_T32(SSG2_1(W[((pc) - 2) & 0x0F]) \
+			+ W[((pc) - 7) & 0x0F] \
+			+ SSG2_0(W[((pc) - 15) & 0x0F]) + W[(pc) & 0x0F]); \
+	} while (0)
+
+#define SHA2_STEPn(n, a, b, c, d, e, f, g, h, in, pc)   do { \
+		sph_u32 t1, t2; \
+		SHA2_MEXP ## n(in, pc); \
+		t1 = SPH_T32(h + BSG2_1(e) + CH(e, f, g) \
+			+ K[pcount + (pc)] + W[(pc) & 0x0F]); \
+		t2 = SPH_T32(BSG2_0(a) + MAJ(a, b, c)); \
+      Y_xor_Z = X_xor_Y; \
+		d = SPH_T32(d + t1); \
+		h = SPH_T32(t1 + t2); \
+	} while (0)
+
+#define SHA2_STEP1(a, b, c, d, e, f, g, h, in, pc) \
+	SHA2_STEPn(1, a, b, c, d, e, f, g, h, in, pc)
+#define SHA2_STEP2(a, b, c, d, e, f, g, h, in, pc) \
+	SHA2_STEPn(2, a, b, c, d, e, f, g, h, in, pc)
+
+#define SHA2_ROUND_BODY(in, r)   do { \
+		sph_u32 A, B, C, D, E, F, G, H, X_xor_Y, Y_xor_Z; \
+		sph_u32 W[16]; \
+		unsigned pcount; \
+ \
+		A = (r)[0]; \
+		B = (r)[1]; \
+		C = (r)[2]; \
+		D = (r)[3]; \
+		E = (r)[4]; \
+		F = (r)[5]; \
+		G = (r)[6]; \
+		H = (r)[7]; \
+		pcount = 0; \
+      Y_xor_Z = B ^ C; \
+		SHA2_STEP1(A, B, C, D, E, F, G, H, in,  0); \
+		SHA2_STEP1(H, A, B, C, D, E, F, G, in,  1); \
+		SHA2_STEP1(G, H, A, B, C, D, E, F, in,  2); \
+		SHA2_STEP1(F, G, H, A, B, C, D, E, in,  3); \
+		SHA2_STEP1(E, F, G, H, A, B, C, D, in,  4); \
+		SHA2_STEP1(D, E, F, G, H, A, B, C, in,  5); \
+		SHA2_STEP1(C, D, E, F, G, H, A, B, in,  6); \
+		SHA2_STEP1(B, C, D, E, F, G, H, A, in,  7); \
+		SHA2_STEP1(A, B, C, D, E, F, G, H, in,  8); \
+		SHA2_STEP1(H, A, B, C, D, E, F, G, in,  9); \
+		SHA2_STEP1(G, H, A, B, C, D, E, F, in, 10); \
+		SHA2_STEP1(F, G, H, A, B, C, D, E, in, 11); \
+		SHA2_STEP1(E, F, G, H, A, B, C, D, in, 12); \
+		SHA2_STEP1(D, E, F, G, H, A, B, C, in, 13); \
+		SHA2_STEP1(C, D, E, F, G, H, A, B, in, 14); \
+		SHA2_STEP1(B, C, D, E, F, G, H, A, in, 15); \
+		for (pcount = 16; pcount < 64; pcount += 16) { \
+			SHA2_STEP2(A, B, C, D, E, F, G, H, in,  0); \
+			SHA2_STEP2(H, A, B, C, D, E, F, G, in,  1); \
+			SHA2_STEP2(G, H, A, B, C, D, E, F, in,  2); \
+			SHA2_STEP2(F, G, H, A, B, C, D, E, in,  3); \
+			SHA2_STEP2(E, F, G, H, A, B, C, D, in,  4); \
+			SHA2_STEP2(D, E, F, G, H, A, B, C, in,  5); \
+			SHA2_STEP2(C, D, E, F, G, H, A, B, in,  6); \
+			SHA2_STEP2(B, C, D, E, F, G, H, A, in,  7); \
+			SHA2_STEP2(A, B, C, D, E, F, G, H, in,  8); \
+			SHA2_STEP2(H, A, B, C, D, E, F, G, in,  9); \
+			SHA2_STEP2(G, H, A, B, C, D, E, F, in, 10); \
+			SHA2_STEP2(F, G, H, A, B, C, D, E, in, 11); \
+			SHA2_STEP2(E, F, G, H, A, B, C, D, in, 12); \
+			SHA2_STEP2(D, E, F, G, H, A, B, C, in, 13); \
+			SHA2_STEP2(C, D, E, F, G, H, A, B, in, 14); \
+			SHA2_STEP2(B, C, D, E, F, G, H, A, in, 15); \
+		} \
+		(r)[0] = SPH_T32((r)[0] + A); \
+		(r)[1] = SPH_T32((r)[1] + B); \
+		(r)[2] = SPH_T32((r)[2] + C); \
+		(r)[3] = SPH_T32((r)[3] + D); \
+		(r)[4] = SPH_T32((r)[4] + E); \
+		(r)[5] = SPH_T32((r)[5] + F); \
+		(r)[6] = SPH_T32((r)[6] + G); \
+		(r)[7] = SPH_T32((r)[7] + H); \
+	} while (0)
+
+#else  // large footprint (default)
+
+#define SHA2_ROUND_BODY(in, r)   do { \
+		sph_u32 A, B, C, D, E, F, G, H, T1, T2, X_xor_Y, Y_xor_Z;; \
+		sph_u32 W00, W01, W02, W03, W04, W05, W06, W07; \
+		sph_u32 W08, W09, W10, W11, W12, W13, W14, W15; \
+ \
+		A = (r)[0]; \
+		B = (r)[1]; \
+		C = (r)[2]; \
+		D = (r)[3]; \
+		E = (r)[4]; \
+		F = (r)[5]; \
+		G = (r)[6]; \
+		H = (r)[7]; \
+      Y_xor_Z = B ^ C; \
+		W00 = in(0); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0x428A2F98) + W00); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W01 = in(1); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0x71374491) + W01); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W02 = in(2); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0xB5C0FBCF) + W02); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W03 = in(3); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0xE9B5DBA5) + W03); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W04 = in(4); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x3956C25B) + W04); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W05 = in(5); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0x59F111F1) + W05); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W06 = in(6); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x923F82A4) + W06); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W07 = in(7); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0xAB1C5ED5) + W07); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W08 = in(8); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0xD807AA98) + W08); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W09 = in(9); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0x12835B01) + W09); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W10 = in(10); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0x243185BE) + W10); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W11 = in(11); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0x550C7DC3) + W11); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W12 = in(12); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x72BE5D74) + W12); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W13 = in(13); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0x80DEB1FE) + W13); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W14 = in(14); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x9BDC06A7) + W14); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W15 = in(15); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0xC19BF174) + W15); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W00 = SPH_T32(SSG2_1(W14) + W09 + SSG2_0(W01) + W00); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0xE49B69C1) + W00); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W01 = SPH_T32(SSG2_1(W15) + W10 + SSG2_0(W02) + W01); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0xEFBE4786) + W01); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W02 = SPH_T32(SSG2_1(W00) + W11 + SSG2_0(W03) + W02); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0x0FC19DC6) + W02); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W03 = SPH_T32(SSG2_1(W01) + W12 + SSG2_0(W04) + W03); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0x240CA1CC) + W03); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W04 = SPH_T32(SSG2_1(W02) + W13 + SSG2_0(W05) + W04); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x2DE92C6F) + W04); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W05 = SPH_T32(SSG2_1(W03) + W14 + SSG2_0(W06) + W05); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0x4A7484AA) + W05); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W06 = SPH_T32(SSG2_1(W04) + W15 + SSG2_0(W07) + W06); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x5CB0A9DC) + W06); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W07 = SPH_T32(SSG2_1(W05) + W00 + SSG2_0(W08) + W07); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0x76F988DA) + W07); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W08 = SPH_T32(SSG2_1(W06) + W01 + SSG2_0(W09) + W08); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0x983E5152) + W08); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W09 = SPH_T32(SSG2_1(W07) + W02 + SSG2_0(W10) + W09); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0xA831C66D) + W09); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W10 = SPH_T32(SSG2_1(W08) + W03 + SSG2_0(W11) + W10); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0xB00327C8) + W10); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W11 = SPH_T32(SSG2_1(W09) + W04 + SSG2_0(W12) + W11); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0xBF597FC7) + W11); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W12 = SPH_T32(SSG2_1(W10) + W05 + SSG2_0(W13) + W12); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0xC6E00BF3) + W12); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W13 = SPH_T32(SSG2_1(W11) + W06 + SSG2_0(W14) + W13); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0xD5A79147) + W13); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W14 = SPH_T32(SSG2_1(W12) + W07 + SSG2_0(W15) + W14); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x06CA6351) + W14); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W15 = SPH_T32(SSG2_1(W13) + W08 + SSG2_0(W00) + W15); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0x14292967) + W15); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W00 = SPH_T32(SSG2_1(W14) + W09 + SSG2_0(W01) + W00); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0x27B70A85) + W00); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W01 = SPH_T32(SSG2_1(W15) + W10 + SSG2_0(W02) + W01); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0x2E1B2138) + W01); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W02 = SPH_T32(SSG2_1(W00) + W11 + SSG2_0(W03) + W02); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0x4D2C6DFC) + W02); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W03 = SPH_T32(SSG2_1(W01) + W12 + SSG2_0(W04) + W03); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0x53380D13) + W03); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W04 = SPH_T32(SSG2_1(W02) + W13 + SSG2_0(W05) + W04); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x650A7354) + W04); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W05 = SPH_T32(SSG2_1(W03) + W14 + SSG2_0(W06) + W05); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0x766A0ABB) + W05); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W06 = SPH_T32(SSG2_1(W04) + W15 + SSG2_0(W07) + W06); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x81C2C92E) + W06); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W07 = SPH_T32(SSG2_1(W05) + W00 + SSG2_0(W08) + W07); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0x92722C85) + W07); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W08 = SPH_T32(SSG2_1(W06) + W01 + SSG2_0(W09) + W08); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0xA2BFE8A1) + W08); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W09 = SPH_T32(SSG2_1(W07) + W02 + SSG2_0(W10) + W09); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0xA81A664B) + W09); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W10 = SPH_T32(SSG2_1(W08) + W03 + SSG2_0(W11) + W10); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0xC24B8B70) + W10); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W11 = SPH_T32(SSG2_1(W09) + W04 + SSG2_0(W12) + W11); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0xC76C51A3) + W11); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W12 = SPH_T32(SSG2_1(W10) + W05 + SSG2_0(W13) + W12); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0xD192E819) + W12); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W13 = SPH_T32(SSG2_1(W11) + W06 + SSG2_0(W14) + W13); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0xD6990624) + W13); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W14 = SPH_T32(SSG2_1(W12) + W07 + SSG2_0(W15) + W14); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0xF40E3585) + W14); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W15 = SPH_T32(SSG2_1(W13) + W08 + SSG2_0(W00) + W15); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0x106AA070) + W15); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W00 = SPH_T32(SSG2_1(W14) + W09 + SSG2_0(W01) + W00); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0x19A4C116) + W00); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W01 = SPH_T32(SSG2_1(W15) + W10 + SSG2_0(W02) + W01); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0x1E376C08) + W01); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W02 = SPH_T32(SSG2_1(W00) + W11 + SSG2_0(W03) + W02); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0x2748774C) + W02); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W03 = SPH_T32(SSG2_1(W01) + W12 + SSG2_0(W04) + W03); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0x34B0BCB5) + W03); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W04 = SPH_T32(SSG2_1(W02) + W13 + SSG2_0(W05) + W04); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x391C0CB3) + W04); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W05 = SPH_T32(SSG2_1(W03) + W14 + SSG2_0(W06) + W05); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0x4ED8AA4A) + W05); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W06 = SPH_T32(SSG2_1(W04) + W15 + SSG2_0(W07) + W06); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0x5B9CCA4F) + W06); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W07 = SPH_T32(SSG2_1(W05) + W00 + SSG2_0(W08) + W07); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0x682E6FF3) + W07); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		W08 = SPH_T32(SSG2_1(W06) + W01 + SSG2_0(W09) + W08); \
+		T1 = SPH_T32(H + BSG2_1(E) + CH(E, F, G) \
+			+ SPH_C32(0x748F82EE) + W08); \
+		T2 = SPH_T32(BSG2_0(A) + MAJ(A, B, C)); \
+      Y_xor_Z = X_xor_Y; \
+		D = SPH_T32(D + T1); \
+		H = SPH_T32(T1 + T2); \
+		W09 = SPH_T32(SSG2_1(W07) + W02 + SSG2_0(W10) + W09); \
+		T1 = SPH_T32(G + BSG2_1(D) + CH(D, E, F) \
+			+ SPH_C32(0x78A5636F) + W09); \
+		T2 = SPH_T32(BSG2_0(H) + MAJ(H, A, B)); \
+      Y_xor_Z = X_xor_Y; \
+		C = SPH_T32(C + T1); \
+		G = SPH_T32(T1 + T2); \
+		W10 = SPH_T32(SSG2_1(W08) + W03 + SSG2_0(W11) + W10); \
+		T1 = SPH_T32(F + BSG2_1(C) + CH(C, D, E) \
+			+ SPH_C32(0x84C87814) + W10); \
+		T2 = SPH_T32(BSG2_0(G) + MAJ(G, H, A)); \
+      Y_xor_Z = X_xor_Y; \
+		B = SPH_T32(B + T1); \
+		F = SPH_T32(T1 + T2); \
+		W11 = SPH_T32(SSG2_1(W09) + W04 + SSG2_0(W12) + W11); \
+		T1 = SPH_T32(E + BSG2_1(B) + CH(B, C, D) \
+			+ SPH_C32(0x8CC70208) + W11); \
+		T2 = SPH_T32(BSG2_0(F) + MAJ(F, G, H)); \
+      Y_xor_Z = X_xor_Y; \
+		A = SPH_T32(A + T1); \
+		E = SPH_T32(T1 + T2); \
+		W12 = SPH_T32(SSG2_1(W10) + W05 + SSG2_0(W13) + W12); \
+		T1 = SPH_T32(D + BSG2_1(A) + CH(A, B, C) \
+			+ SPH_C32(0x90BEFFFA) + W12); \
+		T2 = SPH_T32(BSG2_0(E) + MAJ(E, F, G)); \
+      Y_xor_Z = X_xor_Y; \
+		H = SPH_T32(H + T1); \
+		D = SPH_T32(T1 + T2); \
+		W13 = SPH_T32(SSG2_1(W11) + W06 + SSG2_0(W14) + W13); \
+		T1 = SPH_T32(C + BSG2_1(H) + CH(H, A, B) \
+			+ SPH_C32(0xA4506CEB) + W13); \
+		T2 = SPH_T32(BSG2_0(D) + MAJ(D, E, F)); \
+      Y_xor_Z = X_xor_Y; \
+		G = SPH_T32(G + T1); \
+		C = SPH_T32(T1 + T2); \
+		W14 = SPH_T32(SSG2_1(W12) + W07 + SSG2_0(W15) + W14); \
+		T1 = SPH_T32(B + BSG2_1(G) + CH(G, H, A) \
+			+ SPH_C32(0xBEF9A3F7) + W14); \
+		T2 = SPH_T32(BSG2_0(C) + MAJ(C, D, E)); \
+      Y_xor_Z = X_xor_Y; \
+		F = SPH_T32(F + T1); \
+		B = SPH_T32(T1 + T2); \
+		W15 = SPH_T32(SSG2_1(W13) + W08 + SSG2_0(W00) + W15); \
+		T1 = SPH_T32(A + BSG2_1(F) + CH(F, G, H) \
+			+ SPH_C32(0xC67178F2) + W15); \
+		T2 = SPH_T32(BSG2_0(B) + MAJ(B, C, D)); \
+      Y_xor_Z = X_xor_Y; \
+		E = SPH_T32(E + T1); \
+		A = SPH_T32(T1 + T2); \
+		(r)[0] = SPH_T32((r)[0] + A); \
+		(r)[1] = SPH_T32((r)[1] + B); \
+		(r)[2] = SPH_T32((r)[2] + C); \
+		(r)[3] = SPH_T32((r)[3] + D); \
+		(r)[4] = SPH_T32((r)[4] + E); \
+		(r)[5] = SPH_T32((r)[5] + F); \
+		(r)[6] = SPH_T32((r)[6] + G); \
+		(r)[7] = SPH_T32((r)[7] + H); \
+	} while (0)
+
+#endif  // small footprint else
+
+/*
+ * One round of SHA-224 / SHA-256. The data must be aligned for 32-bit access.
+ */
+static void
+sha2_round(const unsigned char *data, sph_u32 r[8])
+{
+#define SHA2_IN(x)   sph_dec32be_aligned(data + (4 * (x)))
+	SHA2_ROUND_BODY(SHA2_IN, r);
+#undef SHA2_IN
+}
+
+void sph_sha256_transform_le( uint32_t *state_out, const uint32_t *data,
+                              const uint32_t *state_in )
+{
+memcpy( state_out, state_in, 32 );
+#define SHA2_IN(x)   (data[x])
+   SHA2_ROUND_BODY( SHA2_IN, state_out );
+#undef SHA2_IN
+}
+
+void sph_sha256_transform_be( uint32_t *state_out, const uint32_t *data, 
+                              const uint32_t *state_in )
+{  
+memcpy( state_out, state_in, 32 );
+#define SHA2_IN(x)   sph_dec32be_aligned( data+(x) )
+   SHA2_ROUND_BODY( SHA2_IN, state_out );
+#undef SHA2_IN
+
+}
+
+/* see sph_sha2.h */
+void
+sph_sha224_init(void *cc)
+{
+	sph_sha224_context *sc;
+
+	sc = cc;
+	memcpy(sc->val, H224, sizeof H224);
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = sc->count_low = 0;
+#endif
+}
+
+/* see sph_sha2.h */
+void
+sph_sha256_init(void *cc)
+{
+	sph_sha256_context *sc;
+
+	sc = cc;
+	memcpy(sc->val, H256, sizeof H256);
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = sc->count_low = 0;
+#endif
+}
+
+#define RFUN   sha2_round
+#define HASH   sha224
+#define BE32   1
+#include "md_helper.c"
+
+/* see sph_sha2.h */
+void
+sph_sha224_close(void *cc, void *dst)
+{
+	sha224_close(cc, dst, 7);
+//	sph_sha224_init(cc);
+}
+
+/* see sph_sha2.h */
+void
+sph_sha224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	sha224_addbits_and_close(cc, ub, n, dst, 7);
+//	sph_sha224_init(cc);
+}
+
+/* see sph_sha2.h */
+void
+sph_sha256_close(void *cc, void *dst)
+{
+	sha224_close(cc, dst, 8);
+//	sph_sha256_init(cc);
+}
+
+/* see sph_sha2.h */
+void
+sph_sha256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	sha224_addbits_and_close(cc, ub, n, dst, 8);
+//	sph_sha256_init(cc);
+}
+
+void sph_sha256_full( void *dst, const void *data, size_t len )
+{
+   sph_sha256_context cc;
+   sph_sha256_init( &cc );
+   sph_sha256( &cc, data, len );
+   sph_sha256_close( &cc, dst );
+}   
+
+void sha256d(void* hash, const void* data, int len)
+{
+    sph_sha256_full(hash, data, len);
+    sph_sha256_full(hash, hash, 32);
+}
+
+/* see sph_sha2.h */
+//void
+//sph_sha224_comp(const sph_u32 msg[16], sph_u32 val[8])
+//{
+//#define SHA2_IN(x)   msg[x]
+//	SHA2_ROUND_BODY(SHA2_IN, val);
+//#undef SHA2_IN
+//}
diff --git a/src/crypto/ghostrider/sph_sha2.h b/src/crypto/ghostrider/sph_sha2.h
new file mode 100644
index 000000000..04fcbb0fd
--- /dev/null
+++ b/src/crypto/ghostrider/sph_sha2.h
@@ -0,0 +1,383 @@
+/* $Id: sph_sha2.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * SHA-224, SHA-256, SHA-384 and SHA-512 interface.
+ *
+ * SHA-256 has been published in FIPS 180-2, now amended with a change
+ * notice to include SHA-224 as well (which is a simple variation on
+ * SHA-256). SHA-384 and SHA-512 are also defined in FIPS 180-2. FIPS
+ * standards can be found at:
+ *    http://csrc.nist.gov/publications/fips/
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_sha2.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_SHA2_H__
+#define SPH_SHA2_H__
+
+#include <stddef.h>
+#include <stdint.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for SHA-224.
+ */
+#define SPH_SIZE_sha224   224
+
+/**
+ * Output size (in bits) for SHA-256.
+ */
+#define SPH_SIZE_sha256   256
+
+/**
+ * This structure is a context for SHA-224 computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a SHA-224 computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running SHA-224 computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	sph_u32 val[8];
+#if SPH_64
+	sph_u64 count;
+#else
+	sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_sha224_context;
+
+/**
+ * This structure is a context for SHA-256 computations. It is identical
+ * to the SHA-224 context. However, a context is initialized for SHA-224
+ * <strong>or</strong> SHA-256, but not both (the internal IV is not the
+ * same).
+ */
+typedef sph_sha224_context sph_sha256_context;
+
+/**
+ * Initialize a SHA-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHA-224 context (pointer to
+ *             a <code>sph_sha224_context</code>)
+ */
+void sph_sha224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHA-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_sha224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHA-224 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHA-224 context
+ * @param dst   the destination buffer
+ */
+void sph_sha224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHA-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_sha224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Apply the SHA-224 compression function on the provided data. The
+ * <code>msg</code> parameter contains the 16 32-bit input blocks,
+ * as numerical values (hence after the big-endian decoding). The
+ * <code>val</code> parameter contains the 8 32-bit input blocks for
+ * the compression function; the output is written in place in this
+ * array.
+ *
+ * @param msg   the message block (16 values)
+ * @param val   the function 256-bit input and output
+ */
+void sph_sha224_comp(const sph_u32 msg[16], sph_u32 val[8]);
+
+/**
+ * Initialize a SHA-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHA-256 context (pointer to
+ *             a <code>sph_sha256_context</code>)
+ */
+void sph_sha256_init(void *cc);
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Process some data bytes, for SHA-256. This function is identical to
+ * <code>sha_224()</code>
+ *
+ * @param cc     the SHA-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_sha256(void *cc, const void *data, size_t len);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_sha256   sph_sha224
+#endif
+
+/**
+ * Terminate the current SHA-256 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHA-256 context
+ * @param dst   the destination buffer
+ */
+void sph_sha256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHA-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_sha256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst);
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Apply the SHA-256 compression function on the provided data. This
+ * function is identical to <code>sha224_comp()</code>.
+ *
+ * @param msg   the message block (16 values)
+ * @param val   the function 256-bit input and output
+ */
+void sph_sha256_comp(const sph_u32 msg[16], sph_u32 val[8]);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_sha256_comp   sph_sha224_comp
+#endif
+
+void sph_sha256_full( void *dst, const void *data, size_t len );
+void sha256d(void* hash, const void* data, int len);
+
+// These shouldn't be called directly, use sha256-hash.h generic functions
+// sha256_transform_le & sha256_transform_be instead.
+void sph_sha256_transform_le( uint32_t *state_out, const uint32_t *data,
+                              const uint32_t *state_in );
+
+void sph_sha256_transform_be( uint32_t *state_out, const uint32_t *data,
+                              const uint32_t *state_in );
+
+
+#if SPH_64
+
+/**
+ * Output size (in bits) for SHA-384.
+ */
+#define SPH_SIZE_sha384   384
+
+/**
+ * Output size (in bits) for SHA-512.
+ */
+#define SPH_SIZE_sha512   512
+
+/**
+ * This structure is a context for SHA-384 computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a SHA-384 computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running SHA-384 computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	sph_u64 val[8];
+	sph_u64 count;
+#endif
+} sph_sha384_context;
+
+/**
+ * Initialize a SHA-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHA-384 context (pointer to
+ *             a <code>sph_sha384_context</code>)
+ */
+void sph_sha384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHA-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_sha384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHA-384 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHA-384 context
+ * @param dst   the destination buffer
+ */
+void sph_sha384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHA-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_sha384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Apply the SHA-384 compression function on the provided data. The
+ * <code>msg</code> parameter contains the 16 64-bit input blocks,
+ * as numerical values (hence after the big-endian decoding). The
+ * <code>val</code> parameter contains the 8 64-bit input blocks for
+ * the compression function; the output is written in place in this
+ * array.
+ *
+ * @param msg   the message block (16 values)
+ * @param val   the function 512-bit input and output
+ */
+void sph_sha384_comp(const sph_u64 msg[16], sph_u64 val[8]);
+
+/**
+ * This structure is a context for SHA-512 computations. It is identical
+ * to the SHA-384 context. However, a context is initialized for SHA-384
+ * <strong>or</strong> SHA-512, but not both (the internal IV is not the
+ * same).
+ */
+typedef sph_sha384_context sph_sha512_context;
+
+/**
+ * Initialize a SHA-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHA-512 context (pointer to
+ *             a <code>sph_sha512_context</code>)
+ */
+void sph_sha512_init(void *cc);
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Process some data bytes, for SHA-512. This function is identical to
+ * <code>sph_sha384()</code>.
+ *
+ * @param cc     the SHA-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_sha512(void *cc, const void *data, size_t len);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_sha512   sph_sha384
+#endif
+
+/**
+ * Terminate the current SHA-512 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHA-512 context
+ * @param dst   the destination buffer
+ */
+void sph_sha512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHA-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_sha512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst);
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Apply the SHA-512 compression function. This function is identical to
+ * <code>sph_sha384_comp()</code>.
+ *
+ * @param msg   the message block (16 values)
+ * @param val   the function 512-bit input and output
+ */
+void sph_sha512_comp(const sph_u64 msg[16], sph_u64 val[8]);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_sha512_comp   sph_sha384_comp
+#endif
+
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_shabal.c b/src/crypto/ghostrider/sph_shabal.c
new file mode 100644
index 000000000..3ff8d521e
--- /dev/null
+++ b/src/crypto/ghostrider/sph_shabal.c
@@ -0,0 +1,808 @@
+/* $Id: shabal.c 175 2010-05-07 16:03:20Z tp $ */
+/*
+ * Shabal implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_shabal.h"
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+/*
+ * Part of this code was automatically generated (the part between
+ * the "BEGIN" and "END" markers).
+ */
+
+#define sM    16
+
+#define C32   SPH_C32
+#define T32   SPH_T32
+
+#define O1   13
+#define O2    9
+#define O3    6
+
+/*
+ * We copy the state into local variables, so that the compiler knows
+ * that it can optimize them at will.
+ */
+
+/* BEGIN -- automatically generated code. */
+
+#define DECL_STATE   \
+	sph_u32 A00, A01, A02, A03, A04, A05, A06, A07, \
+	        A08, A09, A0A, A0B; \
+	sph_u32 B0, B1, B2, B3, B4, B5, B6, B7, \
+	        B8, B9, BA, BB, BC, BD, BE, BF; \
+	sph_u32 C0, C1, C2, C3, C4, C5, C6, C7, \
+	        C8, C9, CA, CB, CC, CD, CE, CF; \
+	sph_u32 M0, M1, M2, M3, M4, M5, M6, M7, \
+	        M8, M9, MA, MB, MC, MD, ME, MF; \
+	sph_u32 Wlow, Whigh;
+
+#define READ_STATE(state)   do { \
+		A00 = (state)->A[0]; \
+		A01 = (state)->A[1]; \
+		A02 = (state)->A[2]; \
+		A03 = (state)->A[3]; \
+		A04 = (state)->A[4]; \
+		A05 = (state)->A[5]; \
+		A06 = (state)->A[6]; \
+		A07 = (state)->A[7]; \
+		A08 = (state)->A[8]; \
+		A09 = (state)->A[9]; \
+		A0A = (state)->A[10]; \
+		A0B = (state)->A[11]; \
+		B0 = (state)->B[0]; \
+		B1 = (state)->B[1]; \
+		B2 = (state)->B[2]; \
+		B3 = (state)->B[3]; \
+		B4 = (state)->B[4]; \
+		B5 = (state)->B[5]; \
+		B6 = (state)->B[6]; \
+		B7 = (state)->B[7]; \
+		B8 = (state)->B[8]; \
+		B9 = (state)->B[9]; \
+		BA = (state)->B[10]; \
+		BB = (state)->B[11]; \
+		BC = (state)->B[12]; \
+		BD = (state)->B[13]; \
+		BE = (state)->B[14]; \
+		BF = (state)->B[15]; \
+		C0 = (state)->C[0]; \
+		C1 = (state)->C[1]; \
+		C2 = (state)->C[2]; \
+		C3 = (state)->C[3]; \
+		C4 = (state)->C[4]; \
+		C5 = (state)->C[5]; \
+		C6 = (state)->C[6]; \
+		C7 = (state)->C[7]; \
+		C8 = (state)->C[8]; \
+		C9 = (state)->C[9]; \
+		CA = (state)->C[10]; \
+		CB = (state)->C[11]; \
+		CC = (state)->C[12]; \
+		CD = (state)->C[13]; \
+		CE = (state)->C[14]; \
+		CF = (state)->C[15]; \
+		Wlow = (state)->Wlow; \
+		Whigh = (state)->Whigh; \
+	} while (0)
+
+#define WRITE_STATE(state)   do { \
+		(state)->A[0] = A00; \
+		(state)->A[1] = A01; \
+		(state)->A[2] = A02; \
+		(state)->A[3] = A03; \
+		(state)->A[4] = A04; \
+		(state)->A[5] = A05; \
+		(state)->A[6] = A06; \
+		(state)->A[7] = A07; \
+		(state)->A[8] = A08; \
+		(state)->A[9] = A09; \
+		(state)->A[10] = A0A; \
+		(state)->A[11] = A0B; \
+		(state)->B[0] = B0; \
+		(state)->B[1] = B1; \
+		(state)->B[2] = B2; \
+		(state)->B[3] = B3; \
+		(state)->B[4] = B4; \
+		(state)->B[5] = B5; \
+		(state)->B[6] = B6; \
+		(state)->B[7] = B7; \
+		(state)->B[8] = B8; \
+		(state)->B[9] = B9; \
+		(state)->B[10] = BA; \
+		(state)->B[11] = BB; \
+		(state)->B[12] = BC; \
+		(state)->B[13] = BD; \
+		(state)->B[14] = BE; \
+		(state)->B[15] = BF; \
+		(state)->C[0] = C0; \
+		(state)->C[1] = C1; \
+		(state)->C[2] = C2; \
+		(state)->C[3] = C3; \
+		(state)->C[4] = C4; \
+		(state)->C[5] = C5; \
+		(state)->C[6] = C6; \
+		(state)->C[7] = C7; \
+		(state)->C[8] = C8; \
+		(state)->C[9] = C9; \
+		(state)->C[10] = CA; \
+		(state)->C[11] = CB; \
+		(state)->C[12] = CC; \
+		(state)->C[13] = CD; \
+		(state)->C[14] = CE; \
+		(state)->C[15] = CF; \
+		(state)->Wlow = Wlow; \
+		(state)->Whigh = Whigh; \
+	} while (0)
+
+#define DECODE_BLOCK   do { \
+		M0 = sph_dec32le_aligned(buf + 0); \
+		M1 = sph_dec32le_aligned(buf + 4); \
+		M2 = sph_dec32le_aligned(buf + 8); \
+		M3 = sph_dec32le_aligned(buf + 12); \
+		M4 = sph_dec32le_aligned(buf + 16); \
+		M5 = sph_dec32le_aligned(buf + 20); \
+		M6 = sph_dec32le_aligned(buf + 24); \
+		M7 = sph_dec32le_aligned(buf + 28); \
+		M8 = sph_dec32le_aligned(buf + 32); \
+		M9 = sph_dec32le_aligned(buf + 36); \
+		MA = sph_dec32le_aligned(buf + 40); \
+		MB = sph_dec32le_aligned(buf + 44); \
+		MC = sph_dec32le_aligned(buf + 48); \
+		MD = sph_dec32le_aligned(buf + 52); \
+		ME = sph_dec32le_aligned(buf + 56); \
+		MF = sph_dec32le_aligned(buf + 60); \
+	} while (0)
+
+#define INPUT_BLOCK_ADD   do { \
+		B0 = T32(B0 + M0); \
+		B1 = T32(B1 + M1); \
+		B2 = T32(B2 + M2); \
+		B3 = T32(B3 + M3); \
+		B4 = T32(B4 + M4); \
+		B5 = T32(B5 + M5); \
+		B6 = T32(B6 + M6); \
+		B7 = T32(B7 + M7); \
+		B8 = T32(B8 + M8); \
+		B9 = T32(B9 + M9); \
+		BA = T32(BA + MA); \
+		BB = T32(BB + MB); \
+		BC = T32(BC + MC); \
+		BD = T32(BD + MD); \
+		BE = T32(BE + ME); \
+		BF = T32(BF + MF); \
+	} while (0)
+
+#define INPUT_BLOCK_SUB   do { \
+		C0 = T32(C0 - M0); \
+		C1 = T32(C1 - M1); \
+		C2 = T32(C2 - M2); \
+		C3 = T32(C3 - M3); \
+		C4 = T32(C4 - M4); \
+		C5 = T32(C5 - M5); \
+		C6 = T32(C6 - M6); \
+		C7 = T32(C7 - M7); \
+		C8 = T32(C8 - M8); \
+		C9 = T32(C9 - M9); \
+		CA = T32(CA - MA); \
+		CB = T32(CB - MB); \
+		CC = T32(CC - MC); \
+		CD = T32(CD - MD); \
+		CE = T32(CE - ME); \
+		CF = T32(CF - MF); \
+	} while (0)
+
+#define XOR_W   do { \
+		A00 ^= Wlow; \
+		A01 ^= Whigh; \
+	} while (0)
+
+#define SWAP(v1, v2)   do { \
+		sph_u32 tmp = (v1); \
+		(v1) = (v2); \
+		(v2) = tmp; \
+	} while (0)
+
+#define SWAP_BC   do { \
+		SWAP(B0, C0); \
+		SWAP(B1, C1); \
+		SWAP(B2, C2); \
+		SWAP(B3, C3); \
+		SWAP(B4, C4); \
+		SWAP(B5, C5); \
+		SWAP(B6, C6); \
+		SWAP(B7, C7); \
+		SWAP(B8, C8); \
+		SWAP(B9, C9); \
+		SWAP(BA, CA); \
+		SWAP(BB, CB); \
+		SWAP(BC, CC); \
+		SWAP(BD, CD); \
+		SWAP(BE, CE); \
+		SWAP(BF, CF); \
+	} while (0)
+
+#define PERM_ELT(xa0, xa1, xb0, xb1, xb2, xb3, xc, xm)   do { \
+		xa0 = T32((xa0 \
+			^ (((xa1 << 15) | (xa1 >> 17)) * 5U) \
+			^ xc) * 3U) \
+			^ xb1 ^ (xb2 & ~xb3) ^ xm; \
+		xb0 = T32(~(((xb0 << 1) | (xb0 >> 31)) ^ xa0)); \
+	} while (0)
+
+#define PERM_STEP_0   do { \
+		PERM_ELT(A00, A0B, B0, BD, B9, B6, C8, M0); \
+		PERM_ELT(A01, A00, B1, BE, BA, B7, C7, M1); \
+		PERM_ELT(A02, A01, B2, BF, BB, B8, C6, M2); \
+		PERM_ELT(A03, A02, B3, B0, BC, B9, C5, M3); \
+		PERM_ELT(A04, A03, B4, B1, BD, BA, C4, M4); \
+		PERM_ELT(A05, A04, B5, B2, BE, BB, C3, M5); \
+		PERM_ELT(A06, A05, B6, B3, BF, BC, C2, M6); \
+		PERM_ELT(A07, A06, B7, B4, B0, BD, C1, M7); \
+		PERM_ELT(A08, A07, B8, B5, B1, BE, C0, M8); \
+		PERM_ELT(A09, A08, B9, B6, B2, BF, CF, M9); \
+		PERM_ELT(A0A, A09, BA, B7, B3, B0, CE, MA); \
+		PERM_ELT(A0B, A0A, BB, B8, B4, B1, CD, MB); \
+		PERM_ELT(A00, A0B, BC, B9, B5, B2, CC, MC); \
+		PERM_ELT(A01, A00, BD, BA, B6, B3, CB, MD); \
+		PERM_ELT(A02, A01, BE, BB, B7, B4, CA, ME); \
+		PERM_ELT(A03, A02, BF, BC, B8, B5, C9, MF); \
+	} while (0)
+
+#define PERM_STEP_1   do { \
+		PERM_ELT(A04, A03, B0, BD, B9, B6, C8, M0); \
+		PERM_ELT(A05, A04, B1, BE, BA, B7, C7, M1); \
+		PERM_ELT(A06, A05, B2, BF, BB, B8, C6, M2); \
+		PERM_ELT(A07, A06, B3, B0, BC, B9, C5, M3); \
+		PERM_ELT(A08, A07, B4, B1, BD, BA, C4, M4); \
+		PERM_ELT(A09, A08, B5, B2, BE, BB, C3, M5); \
+		PERM_ELT(A0A, A09, B6, B3, BF, BC, C2, M6); \
+		PERM_ELT(A0B, A0A, B7, B4, B0, BD, C1, M7); \
+		PERM_ELT(A00, A0B, B8, B5, B1, BE, C0, M8); \
+		PERM_ELT(A01, A00, B9, B6, B2, BF, CF, M9); \
+		PERM_ELT(A02, A01, BA, B7, B3, B0, CE, MA); \
+		PERM_ELT(A03, A02, BB, B8, B4, B1, CD, MB); \
+		PERM_ELT(A04, A03, BC, B9, B5, B2, CC, MC); \
+		PERM_ELT(A05, A04, BD, BA, B6, B3, CB, MD); \
+		PERM_ELT(A06, A05, BE, BB, B7, B4, CA, ME); \
+		PERM_ELT(A07, A06, BF, BC, B8, B5, C9, MF); \
+	} while (0)
+
+#define PERM_STEP_2   do { \
+		PERM_ELT(A08, A07, B0, BD, B9, B6, C8, M0); \
+		PERM_ELT(A09, A08, B1, BE, BA, B7, C7, M1); \
+		PERM_ELT(A0A, A09, B2, BF, BB, B8, C6, M2); \
+		PERM_ELT(A0B, A0A, B3, B0, BC, B9, C5, M3); \
+		PERM_ELT(A00, A0B, B4, B1, BD, BA, C4, M4); \
+		PERM_ELT(A01, A00, B5, B2, BE, BB, C3, M5); \
+		PERM_ELT(A02, A01, B6, B3, BF, BC, C2, M6); \
+		PERM_ELT(A03, A02, B7, B4, B0, BD, C1, M7); \
+		PERM_ELT(A04, A03, B8, B5, B1, BE, C0, M8); \
+		PERM_ELT(A05, A04, B9, B6, B2, BF, CF, M9); \
+		PERM_ELT(A06, A05, BA, B7, B3, B0, CE, MA); \
+		PERM_ELT(A07, A06, BB, B8, B4, B1, CD, MB); \
+		PERM_ELT(A08, A07, BC, B9, B5, B2, CC, MC); \
+		PERM_ELT(A09, A08, BD, BA, B6, B3, CB, MD); \
+		PERM_ELT(A0A, A09, BE, BB, B7, B4, CA, ME); \
+		PERM_ELT(A0B, A0A, BF, BC, B8, B5, C9, MF); \
+	} while (0)
+
+#define APPLY_P   do { \
+		B0 = T32(B0 << 17) | (B0 >> 15); \
+		B1 = T32(B1 << 17) | (B1 >> 15); \
+		B2 = T32(B2 << 17) | (B2 >> 15); \
+		B3 = T32(B3 << 17) | (B3 >> 15); \
+		B4 = T32(B4 << 17) | (B4 >> 15); \
+		B5 = T32(B5 << 17) | (B5 >> 15); \
+		B6 = T32(B6 << 17) | (B6 >> 15); \
+		B7 = T32(B7 << 17) | (B7 >> 15); \
+		B8 = T32(B8 << 17) | (B8 >> 15); \
+		B9 = T32(B9 << 17) | (B9 >> 15); \
+		BA = T32(BA << 17) | (BA >> 15); \
+		BB = T32(BB << 17) | (BB >> 15); \
+		BC = T32(BC << 17) | (BC >> 15); \
+		BD = T32(BD << 17) | (BD >> 15); \
+		BE = T32(BE << 17) | (BE >> 15); \
+		BF = T32(BF << 17) | (BF >> 15); \
+		PERM_STEP_0; \
+		PERM_STEP_1; \
+		PERM_STEP_2; \
+		A0B = T32(A0B + C6); \
+		A0A = T32(A0A + C5); \
+		A09 = T32(A09 + C4); \
+		A08 = T32(A08 + C3); \
+		A07 = T32(A07 + C2); \
+		A06 = T32(A06 + C1); \
+		A05 = T32(A05 + C0); \
+		A04 = T32(A04 + CF); \
+		A03 = T32(A03 + CE); \
+		A02 = T32(A02 + CD); \
+		A01 = T32(A01 + CC); \
+		A00 = T32(A00 + CB); \
+		A0B = T32(A0B + CA); \
+		A0A = T32(A0A + C9); \
+		A09 = T32(A09 + C8); \
+		A08 = T32(A08 + C7); \
+		A07 = T32(A07 + C6); \
+		A06 = T32(A06 + C5); \
+		A05 = T32(A05 + C4); \
+		A04 = T32(A04 + C3); \
+		A03 = T32(A03 + C2); \
+		A02 = T32(A02 + C1); \
+		A01 = T32(A01 + C0); \
+		A00 = T32(A00 + CF); \
+		A0B = T32(A0B + CE); \
+		A0A = T32(A0A + CD); \
+		A09 = T32(A09 + CC); \
+		A08 = T32(A08 + CB); \
+		A07 = T32(A07 + CA); \
+		A06 = T32(A06 + C9); \
+		A05 = T32(A05 + C8); \
+		A04 = T32(A04 + C7); \
+		A03 = T32(A03 + C6); \
+		A02 = T32(A02 + C5); \
+		A01 = T32(A01 + C4); \
+		A00 = T32(A00 + C3); \
+	} while (0)
+
+#define INCR_W   do { \
+		if ((Wlow = T32(Wlow + 1)) == 0) \
+			Whigh = T32(Whigh + 1); \
+	} while (0)
+
+static const sph_u32 A_init_192[] = {
+	C32(0xFD749ED4), C32(0xB798E530), C32(0x33904B6F), C32(0x46BDA85E),
+	C32(0x076934B4), C32(0x454B4058), C32(0x77F74527), C32(0xFB4CF465),
+	C32(0x62931DA9), C32(0xE778C8DB), C32(0x22B3998E), C32(0xAC15CFB9)
+};
+
+static const sph_u32 B_init_192[] = {
+	C32(0x58BCBAC4), C32(0xEC47A08E), C32(0xAEE933B2), C32(0xDFCBC824),
+	C32(0xA7944804), C32(0xBF65BDB0), C32(0x5A9D4502), C32(0x59979AF7),
+	C32(0xC5CEA54E), C32(0x4B6B8150), C32(0x16E71909), C32(0x7D632319),
+	C32(0x930573A0), C32(0xF34C63D1), C32(0xCAF914B4), C32(0xFDD6612C)
+};
+
+static const sph_u32 C_init_192[] = {
+	C32(0x61550878), C32(0x89EF2B75), C32(0xA1660C46), C32(0x7EF3855B),
+	C32(0x7297B58C), C32(0x1BC67793), C32(0x7FB1C723), C32(0xB66FC640),
+	C32(0x1A48B71C), C32(0xF0976D17), C32(0x088CE80A), C32(0xA454EDF3),
+	C32(0x1C096BF4), C32(0xAC76224B), C32(0x5215781C), C32(0xCD5D2669)
+};
+
+static const sph_u32 A_init_224[] = {
+	C32(0xA5201467), C32(0xA9B8D94A), C32(0xD4CED997), C32(0x68379D7B),
+	C32(0xA7FC73BA), C32(0xF1A2546B), C32(0x606782BF), C32(0xE0BCFD0F),
+	C32(0x2F25374E), C32(0x069A149F), C32(0x5E2DFF25), C32(0xFAECF061)
+};
+
+static const sph_u32 B_init_224[] = {
+	C32(0xEC9905D8), C32(0xF21850CF), C32(0xC0A746C8), C32(0x21DAD498),
+	C32(0x35156EEB), C32(0x088C97F2), C32(0x26303E40), C32(0x8A2D4FB5),
+	C32(0xFEEE44B6), C32(0x8A1E9573), C32(0x7B81111A), C32(0xCBC139F0),
+	C32(0xA3513861), C32(0x1D2C362E), C32(0x918C580E), C32(0xB58E1B9C)
+};
+
+static const sph_u32 C_init_224[] = {
+	C32(0xE4B573A1), C32(0x4C1A0880), C32(0x1E907C51), C32(0x04807EFD),
+	C32(0x3AD8CDE5), C32(0x16B21302), C32(0x02512C53), C32(0x2204CB18),
+	C32(0x99405F2D), C32(0xE5B648A1), C32(0x70AB1D43), C32(0xA10C25C2),
+	C32(0x16F1AC05), C32(0x38BBEB56), C32(0x9B01DC60), C32(0xB1096D83)
+};
+
+static const sph_u32 A_init_256[] = {
+	C32(0x52F84552), C32(0xE54B7999), C32(0x2D8EE3EC), C32(0xB9645191),
+	C32(0xE0078B86), C32(0xBB7C44C9), C32(0xD2B5C1CA), C32(0xB0D2EB8C),
+	C32(0x14CE5A45), C32(0x22AF50DC), C32(0xEFFDBC6B), C32(0xEB21B74A)
+};
+
+static const sph_u32 B_init_256[] = {
+	C32(0xB555C6EE), C32(0x3E710596), C32(0xA72A652F), C32(0x9301515F),
+	C32(0xDA28C1FA), C32(0x696FD868), C32(0x9CB6BF72), C32(0x0AFE4002),
+	C32(0xA6E03615), C32(0x5138C1D4), C32(0xBE216306), C32(0xB38B8890),
+	C32(0x3EA8B96B), C32(0x3299ACE4), C32(0x30924DD4), C32(0x55CB34A5)
+};
+
+static const sph_u32 C_init_256[] = {
+	C32(0xB405F031), C32(0xC4233EBA), C32(0xB3733979), C32(0xC0DD9D55),
+	C32(0xC51C28AE), C32(0xA327B8E1), C32(0x56C56167), C32(0xED614433),
+	C32(0x88B59D60), C32(0x60E2CEBA), C32(0x758B4B8B), C32(0x83E82A7F),
+	C32(0xBC968828), C32(0xE6E00BF7), C32(0xBA839E55), C32(0x9B491C60)
+};
+
+static const sph_u32 A_init_384[] = {
+	C32(0xC8FCA331), C32(0xE55C504E), C32(0x003EBF26), C32(0xBB6B8D83),
+	C32(0x7B0448C1), C32(0x41B82789), C32(0x0A7C9601), C32(0x8D659CFF),
+	C32(0xB6E2673E), C32(0xCA54C77B), C32(0x1460FD7E), C32(0x3FCB8F2D)
+};
+
+static const sph_u32 B_init_384[] = {
+	C32(0x527291FC), C32(0x2A16455F), C32(0x78E627E5), C32(0x944F169F),
+	C32(0x1CA6F016), C32(0xA854EA25), C32(0x8DB98ABE), C32(0xF2C62641),
+	C32(0x30117DCB), C32(0xCF5C4309), C32(0x93711A25), C32(0xF9F671B8),
+	C32(0xB01D2116), C32(0x333F4B89), C32(0xB285D165), C32(0x86829B36)
+};
+
+static const sph_u32 C_init_384[] = {
+	C32(0xF764B11A), C32(0x76172146), C32(0xCEF6934D), C32(0xC6D28399),
+	C32(0xFE095F61), C32(0x5E6018B4), C32(0x5048ECF5), C32(0x51353261),
+	C32(0x6E6E36DC), C32(0x63130DAD), C32(0xA9C69BD6), C32(0x1E90EA0C),
+	C32(0x7C35073B), C32(0x28D95E6D), C32(0xAA340E0D), C32(0xCB3DEE70)
+};
+
+static const sph_u32 A_init_512[] = {
+	C32(0x20728DFD), C32(0x46C0BD53), C32(0xE782B699), C32(0x55304632),
+	C32(0x71B4EF90), C32(0x0EA9E82C), C32(0xDBB930F1), C32(0xFAD06B8B),
+	C32(0xBE0CAE40), C32(0x8BD14410), C32(0x76D2ADAC), C32(0x28ACAB7F)
+};
+
+static const sph_u32 B_init_512[] = {
+	C32(0xC1099CB7), C32(0x07B385F3), C32(0xE7442C26), C32(0xCC8AD640),
+	C32(0xEB6F56C7), C32(0x1EA81AA9), C32(0x73B9D314), C32(0x1DE85D08),
+	C32(0x48910A5A), C32(0x893B22DB), C32(0xC5A0DF44), C32(0xBBC4324E),
+	C32(0x72D2F240), C32(0x75941D99), C32(0x6D8BDE82), C32(0xA1A7502B)
+};
+
+static const sph_u32 C_init_512[] = {
+	C32(0xD9BF68D1), C32(0x58BAD750), C32(0x56028CB2), C32(0x8134F359),
+	C32(0xB5D469D8), C32(0x941A8CC2), C32(0x418B2A6E), C32(0x04052780),
+	C32(0x7F07D787), C32(0x5194358F), C32(0x3C60D665), C32(0xBE97D79A),
+	C32(0x950C3434), C32(0xAED9A06D), C32(0x2537DC8D), C32(0x7CDB5969)
+};
+
+/* END -- automatically generated code. */
+
+static void
+shabal_init(void *cc, unsigned size)
+{
+	/*
+	 * We have precomputed initial states for all the supported
+	 * output bit lengths.
+	 */
+	const sph_u32 *A_init, *B_init, *C_init;
+	sph_shabal_context *sc;
+
+	switch (size) {
+	case 192:
+		A_init = A_init_192;
+		B_init = B_init_192;
+		C_init = C_init_192;
+		break;
+	case 224:
+		A_init = A_init_224;
+		B_init = B_init_224;
+		C_init = C_init_224;
+		break;
+	case 256:
+		A_init = A_init_256;
+		B_init = B_init_256;
+		C_init = C_init_256;
+		break;
+	case 384:
+		A_init = A_init_384;
+		B_init = B_init_384;
+		C_init = C_init_384;
+		break;
+	case 512:
+		A_init = A_init_512;
+		B_init = B_init_512;
+		C_init = C_init_512;
+		break;
+	default:
+		return;
+	}
+	sc = cc;
+	memcpy(sc->A, A_init, sizeof sc->A);
+	memcpy(sc->B, B_init, sizeof sc->B);
+	memcpy(sc->C, C_init, sizeof sc->C);
+	sc->Wlow = 1;
+	sc->Whigh = 0;
+	sc->ptr = 0;
+}
+
+static void
+shabal_core(void *cc, const unsigned char *data, size_t len)
+{
+	sph_shabal_context *sc;
+	unsigned char *buf;
+	size_t ptr;
+	DECL_STATE
+
+	sc = cc;
+	buf = sc->buf;
+	ptr = sc->ptr;
+
+	/*
+	 * We do not want to copy the state to local variables if the
+	 * amount of data is less than what is needed to complete the
+	 * current block. Note that it is anyway suboptimal to call
+	 * this method many times for small chunks of data.
+	 */
+	if (len < (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE(sc);
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data += clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			DECODE_BLOCK;
+			INPUT_BLOCK_ADD;
+			XOR_W;
+			APPLY_P;
+			INPUT_BLOCK_SUB;
+			SWAP_BC;
+			INCR_W;
+			ptr = 0;
+		}
+	}
+	WRITE_STATE(sc);
+	sc->ptr = ptr;
+}
+
+static void
+shabal_close(void *cc, unsigned ub, unsigned n, void *dst, unsigned size_words)
+{
+	sph_shabal_context *sc;
+	unsigned char *buf;
+	size_t ptr;
+	int i;
+	unsigned z;
+	union {
+		unsigned char tmp_out[64];
+		sph_u32 dummy;
+	} u;
+	size_t out_len;
+	DECL_STATE
+
+	sc = cc;
+	buf = sc->buf;
+	ptr = sc->ptr;
+	z = 0x80 >> n;
+	buf[ptr] = ((ub & -z) | z) & 0xFF;
+	memset(buf + ptr + 1, 0, (sizeof sc->buf) - (ptr + 1));
+	READ_STATE(sc);
+	DECODE_BLOCK;
+	INPUT_BLOCK_ADD;
+	XOR_W;
+	APPLY_P;
+	for (i = 0; i < 3; i ++) {
+		SWAP_BC;
+		XOR_W;
+		APPLY_P;
+	}
+
+	/*
+	 * We just use our local variables; no need to go through
+	 * the state structure. In order to share some code, we
+	 * emit the relevant words into a temporary buffer, which
+	 * we finally copy into the destination array.
+	 */
+	switch (size_words) {
+	case 16:
+		sph_enc32le_aligned(u.tmp_out +  0, B0);
+		sph_enc32le_aligned(u.tmp_out +  4, B1);
+		sph_enc32le_aligned(u.tmp_out +  8, B2);
+		sph_enc32le_aligned(u.tmp_out + 12, B3);
+		/* fall through */
+	case 12:
+		sph_enc32le_aligned(u.tmp_out + 16, B4);
+		sph_enc32le_aligned(u.tmp_out + 20, B5);
+		sph_enc32le_aligned(u.tmp_out + 24, B6);
+		sph_enc32le_aligned(u.tmp_out + 28, B7);
+		/* fall through */
+	case 8:
+		sph_enc32le_aligned(u.tmp_out + 32, B8);
+		/* fall through */
+	case 7:
+		sph_enc32le_aligned(u.tmp_out + 36, B9);
+		/* fall through */
+	case 6:
+		sph_enc32le_aligned(u.tmp_out + 40, BA);
+		sph_enc32le_aligned(u.tmp_out + 44, BB);
+		sph_enc32le_aligned(u.tmp_out + 48, BC);
+		sph_enc32le_aligned(u.tmp_out + 52, BD);
+		sph_enc32le_aligned(u.tmp_out + 56, BE);
+		sph_enc32le_aligned(u.tmp_out + 60, BF);
+		break;
+	default:
+		return;
+	}
+	out_len = size_words << 2;
+	memcpy(dst, u.tmp_out + (sizeof u.tmp_out) - out_len, out_len);
+//	shabal_init(sc, size_words << 5);
+}
+#if 0
+/* see sph_shabal.h */
+void
+sph_shabal192_init(void *cc)
+{
+	shabal_init(cc, 192);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal192(void *cc, const void *data, size_t len)
+{
+	shabal_core(cc, data, len);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal192_close(void *cc, void *dst)
+{
+	shabal_close(cc, 0, 0, dst, 6);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal192_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shabal_close(cc, ub, n, dst, 6);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal224_init(void *cc)
+{
+	shabal_init(cc, 224);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal224(void *cc, const void *data, size_t len)
+{
+	shabal_core(cc, data, len);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal224_close(void *cc, void *dst)
+{
+	shabal_close(cc, 0, 0, dst, 7);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shabal_close(cc, ub, n, dst, 7);
+}
+
+#endif
+/* see sph_shabal.h */
+void
+sph_shabal256_init(void *cc)
+{
+	shabal_init(cc, 256);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal256(void *cc, const void *data, size_t len)
+{
+	shabal_core(cc, data, len);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal256_close(void *cc, void *dst)
+{
+	shabal_close(cc, 0, 0, dst, 8);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shabal_close(cc, ub, n, dst, 8);
+}
+
+#if 0
+/* see sph_shabal.h */
+void
+sph_shabal384_init(void *cc)
+{
+	shabal_init(cc, 384);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal384(void *cc, const void *data, size_t len)
+{
+	shabal_core(cc, data, len);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal384_close(void *cc, void *dst)
+{
+	shabal_close(cc, 0, 0, dst, 12);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shabal_close(cc, ub, n, dst, 12);
+}
+#endif
+
+/* see sph_shabal.h */
+void
+sph_shabal512_init(void *cc)
+{
+	shabal_init(cc, 512);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal512(void *cc, const void *data, size_t len)
+{
+	shabal_core(cc, data, len);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal512_close(void *cc, void *dst)
+{
+	shabal_close(cc, 0, 0, dst, 16);
+}
+
+/* see sph_shabal.h */
+void
+sph_shabal512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shabal_close(cc, ub, n, dst, 16);
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_shabal.h b/src/crypto/ghostrider/sph_shabal.h
new file mode 100644
index 000000000..a97763b55
--- /dev/null
+++ b/src/crypto/ghostrider/sph_shabal.h
@@ -0,0 +1,344 @@
+/* $Id: sph_shabal.h 175 2010-05-07 16:03:20Z tp $ */
+/**
+ * Shabal interface. Shabal is a family of functions which differ by
+ * their output size; this implementation defines Shabal for output
+ * sizes 192, 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_shabal.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_SHABAL_H__
+#define SPH_SHABAL_H__
+
+#include "sph_types.h"
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Output size (in bits) for Shabal-192.
+ */
+#define SPH_SIZE_shabal192 192
+
+/**
+ * Output size (in bits) for Shabal-224.
+ */
+#define SPH_SIZE_shabal224 224
+
+/**
+ * Output size (in bits) for Shabal-256.
+ */
+#define SPH_SIZE_shabal256 256
+
+/**
+ * Output size (in bits) for Shabal-384.
+ */
+#define SPH_SIZE_shabal384 384
+
+/**
+ * Output size (in bits) for Shabal-512.
+ */
+#define SPH_SIZE_shabal512 512
+
+/**
+ * This structure is a context for Shabal computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a Shabal computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running Shabal computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+  unsigned char buf[64]; /* first field, for alignment */
+  size_t ptr;
+  sph_u32 A[12], B[16], C[16];
+  sph_u32 Whigh, Wlow;
+#endif
+} sph_shabal_context;
+
+/**
+ * Type for a Shabal-192 context (identical to the common context).
+ */
+typedef sph_shabal_context sph_shabal192_context;
+
+/**
+ * Type for a Shabal-224 context (identical to the common context).
+ */
+typedef sph_shabal_context sph_shabal224_context;
+
+/**
+ * Type for a Shabal-256 context (identical to the common context).
+ */
+typedef sph_shabal_context sph_shabal256_context;
+
+/**
+ * Type for a Shabal-384 context (identical to the common context).
+ */
+typedef sph_shabal_context sph_shabal384_context;
+
+/**
+ * Type for a Shabal-512 context (identical to the common context).
+ */
+typedef sph_shabal_context sph_shabal512_context;
+
+/**
+ * Initialize a Shabal-192 context. This process performs no memory allocation.
+ *
+ * @param cc   the Shabal-192 context (pointer to a
+ *             <code>sph_shabal192_context</code>)
+ */
+void sph_shabal192_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Shabal-192 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shabal192(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Shabal-192 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (24 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Shabal-192 context
+ * @param dst   the destination buffer
+ */
+void sph_shabal192_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (24 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Shabal-192 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shabal192_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Shabal-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Shabal-224 context (pointer to a
+ *             <code>sph_shabal224_context</code>)
+ */
+void sph_shabal224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Shabal-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shabal224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Shabal-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Shabal-224 context
+ * @param dst   the destination buffer
+ */
+void sph_shabal224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Shabal-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shabal224_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Shabal-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Shabal-256 context (pointer to a
+ *             <code>sph_shabal256_context</code>)
+ */
+void sph_shabal256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Shabal-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shabal256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Shabal-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Shabal-256 context
+ * @param dst   the destination buffer
+ */
+void sph_shabal256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Shabal-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shabal256_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Shabal-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Shabal-384 context (pointer to a
+ *             <code>sph_shabal384_context</code>)
+ */
+void sph_shabal384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Shabal-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shabal384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Shabal-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Shabal-384 context
+ * @param dst   the destination buffer
+ */
+void sph_shabal384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Shabal-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shabal384_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+/**
+ * Initialize a Shabal-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Shabal-512 context (pointer to a
+ *             <code>sph_shabal512_context</code>)
+ */
+void sph_shabal512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Shabal-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shabal512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Shabal-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Shabal-512 context
+ * @param dst   the destination buffer
+ */
+void sph_shabal512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Shabal-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shabal512_addbits_and_close(void *cc, unsigned ub, unsigned n,
+                                     void *dst);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_shavite.c b/src/crypto/ghostrider/sph_shavite.c
new file mode 100644
index 000000000..85074f334
--- /dev/null
+++ b/src/crypto/ghostrider/sph_shavite.c
@@ -0,0 +1,1764 @@
+/* $Id: shavite.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * SHAvite-3 implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_shavite.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_SHAVITE
+#define SPH_SMALL_FOOTPRINT_SHAVITE   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#define C32   SPH_C32
+
+/*
+ * As of round 2 of the SHA-3 competition, the published reference
+ * implementation and test vectors are wrong, because they use
+ * big-endian AES tables while the internal decoding uses little-endian.
+ * The code below follows the specification. To turn it into a code
+ * which follows the reference implementation (the one called "BugFix"
+ * on the SHAvite-3 web site, published on Nov 23rd, 2009), comment out
+ * the code below (from the '#define AES_BIG_ENDIAN...' to the definition
+ * of the AES_ROUND_NOKEY macro) and replace it with the version which
+ * is commented out afterwards.
+ */
+
+#define AES_BIG_ENDIAN   0
+#include "aes_helper.c"
+
+static const sph_u32 IV224[] = {
+	C32(0x6774F31C), C32(0x990AE210), C32(0xC87D4274), C32(0xC9546371),
+	C32(0x62B2AEA8), C32(0x4B5801D8), C32(0x1B702860), C32(0x842F3017)
+};
+
+static const sph_u32 IV256[] = {
+	C32(0x49BB3E47), C32(0x2674860D), C32(0xA8B392AC), C32(0x021AC4E6),
+	C32(0x409283CF), C32(0x620E5D86), C32(0x6D929DCB), C32(0x96CC2A8B)
+};
+
+static const sph_u32 IV384[] = {
+	C32(0x83DF1545), C32(0xF9AAEC13), C32(0xF4803CB0), C32(0x11FE1F47),
+	C32(0xDA6CD269), C32(0x4F53FCD7), C32(0x950529A2), C32(0x97908147),
+	C32(0xB0A4D7AF), C32(0x2B9132BF), C32(0x226E607D), C32(0x3C0F8D7C),
+	C32(0x487B3F0F), C32(0x04363E22), C32(0x0155C99C), C32(0xEC2E20D3)
+};
+
+static const sph_u32 IV512[] = {
+	C32(0x72FCCDD8), C32(0x79CA4727), C32(0x128A077B), C32(0x40D55AEC),
+	C32(0xD1901A06), C32(0x430AE307), C32(0xB29F5CD1), C32(0xDF07FBFC),
+	C32(0x8E45D73D), C32(0x681AB538), C32(0xBDE86578), C32(0xDD577E47),
+	C32(0xE275EADE), C32(0x502D9FCD), C32(0xB9357178), C32(0x022A4B9A)
+};
+
+#define AES_ROUND_NOKEY(x0, x1, x2, x3)   do { \
+		sph_u32 t0 = (x0); \
+		sph_u32 t1 = (x1); \
+		sph_u32 t2 = (x2); \
+		sph_u32 t3 = (x3); \
+		AES_ROUND_NOKEY_LE(t0, t1, t2, t3, x0, x1, x2, x3); \
+	} while (0)
+
+/*
+ * This is the code needed to match the "reference implementation" as
+ * published on Nov 23rd, 2009, instead of the published specification.
+ * 
+
+#define AES_BIG_ENDIAN   1
+#include "aes_helper.c"
+
+static const sph_u32 IV224[] = {
+	C32(0xC4C67795), C32(0xC0B1817F), C32(0xEAD88924), C32(0x1ABB1BB0),
+	C32(0xE0C29152), C32(0xBDE046BA), C32(0xAEEECF99), C32(0x58D509D8)
+};
+
+static const sph_u32 IV256[] = {
+	C32(0x3EECF551), C32(0xBF10819B), C32(0xE6DC8559), C32(0xF3E23FD5),
+	C32(0x431AEC73), C32(0x79E3F731), C32(0x98325F05), C32(0xA92A31F1)
+};
+
+static const sph_u32 IV384[] = {
+	C32(0x71F48510), C32(0xA903A8AC), C32(0xFE3216DD), C32(0x0B2D2AD4),
+	C32(0x6672900A), C32(0x41032819), C32(0x15A7D780), C32(0xB3CAB8D9),
+	C32(0x34EF4711), C32(0xDE019FE8), C32(0x4D674DC4), C32(0xE056D96B),
+	C32(0xA35C016B), C32(0xDD903BA7), C32(0x8C1B09B4), C32(0x2C3E9F25)
+};
+
+static const sph_u32 IV512[] = {
+	C32(0xD5652B63), C32(0x25F1E6EA), C32(0xB18F48FA), C32(0xA1EE3A47),
+	C32(0xC8B67B07), C32(0xBDCE48D3), C32(0xE3937B78), C32(0x05DB5186),
+	C32(0x613BE326), C32(0xA11FA303), C32(0x90C833D4), C32(0x79CEE316),
+	C32(0x1E1AF00F), C32(0x2829B165), C32(0x23B25F80), C32(0x21E11499)
+};
+
+#define AES_ROUND_NOKEY(x0, x1, x2, x3)   do { \
+		sph_u32 t0 = (x0); \
+		sph_u32 t1 = (x1); \
+		sph_u32 t2 = (x2); \
+		sph_u32 t3 = (x3); \
+		AES_ROUND_NOKEY_BE(t0, t1, t2, t3, x0, x1, x2, x3); \
+	} while (0)
+
+ */
+
+#define KEY_EXPAND_ELT(k0, k1, k2, k3)   do { \
+		sph_u32 kt; \
+		AES_ROUND_NOKEY(k1, k2, k3, k0); \
+		kt = (k0); \
+		(k0) = (k1); \
+		(k1) = (k2); \
+		(k2) = (k3); \
+		(k3) = kt; \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_SHAVITE
+
+/*
+ * This function assumes that "msg" is aligned for 32-bit access.
+ */
+static void
+c256(sph_shavite_small_context *sc, const void *msg)
+{
+	sph_u32 p0, p1, p2, p3, p4, p5, p6, p7;
+	sph_u32 rk[144];
+	size_t u;
+	int r, s;
+
+#if SPH_LITTLE_ENDIAN
+	memcpy(rk, msg, 64);
+#else
+	for (u = 0; u < 16; u += 4) {
+		rk[u + 0] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  0);
+		rk[u + 1] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  4);
+		rk[u + 2] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  8);
+		rk[u + 3] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) + 12);
+	}
+#endif
+	u = 16;
+	for (r = 0; r < 4; r ++) {
+		for (s = 0; s < 2; s ++) {
+			sph_u32 x0, x1, x2, x3;
+
+			x0 = rk[u - 15];
+			x1 = rk[u - 14];
+			x2 = rk[u - 13];
+			x3 = rk[u - 16];
+			AES_ROUND_NOKEY(x0, x1, x2, x3);
+			rk[u + 0] = x0 ^ rk[u - 4];
+			rk[u + 1] = x1 ^ rk[u - 3];
+			rk[u + 2] = x2 ^ rk[u - 2];
+			rk[u + 3] = x3 ^ rk[u - 1];
+			if (u == 16) {
+				rk[ 16] ^= sc->count0;
+				rk[ 17] ^= SPH_T32(~sc->count1);
+			} else if (u == 56) {
+				rk[ 57] ^= sc->count1;
+				rk[ 58] ^= SPH_T32(~sc->count0);
+			}
+			u += 4;
+
+			x0 = rk[u - 15];
+			x1 = rk[u - 14];
+			x2 = rk[u - 13];
+			x3 = rk[u - 16];
+			AES_ROUND_NOKEY(x0, x1, x2, x3);
+			rk[u + 0] = x0 ^ rk[u - 4];
+			rk[u + 1] = x1 ^ rk[u - 3];
+			rk[u + 2] = x2 ^ rk[u - 2];
+			rk[u + 3] = x3 ^ rk[u - 1];
+			if (u == 84) {
+				rk[ 86] ^= sc->count1;
+				rk[ 87] ^= SPH_T32(~sc->count0);
+			} else if (u == 124) {
+				rk[124] ^= sc->count0;
+				rk[127] ^= SPH_T32(~sc->count1);
+			}
+			u += 4;
+		}
+		for (s = 0; s < 4; s ++) {
+			rk[u + 0] = rk[u - 16] ^ rk[u - 3];
+			rk[u + 1] = rk[u - 15] ^ rk[u - 2];
+			rk[u + 2] = rk[u - 14] ^ rk[u - 1];
+			rk[u + 3] = rk[u - 13] ^ rk[u - 0];
+			u += 4;
+		}
+	}
+
+	p0 = sc->h[0x0];
+	p1 = sc->h[0x1];
+	p2 = sc->h[0x2];
+	p3 = sc->h[0x3];
+	p4 = sc->h[0x4];
+	p5 = sc->h[0x5];
+	p6 = sc->h[0x6];
+	p7 = sc->h[0x7];
+	u = 0;
+	for (r = 0; r < 6; r ++) {
+		sph_u32 x0, x1, x2, x3;
+
+		x0 = p4 ^ rk[u ++];
+		x1 = p5 ^ rk[u ++];
+		x2 = p6 ^ rk[u ++];
+		x3 = p7 ^ rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		x0 ^= rk[u ++];
+		x1 ^= rk[u ++];
+		x2 ^= rk[u ++];
+		x3 ^= rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		x0 ^= rk[u ++];
+		x1 ^= rk[u ++];
+		x2 ^= rk[u ++];
+		x3 ^= rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p0 ^= x0;
+		p1 ^= x1;
+		p2 ^= x2;
+		p3 ^= x3;
+
+		x0 = p0 ^ rk[u ++];
+		x1 = p1 ^ rk[u ++];
+		x2 = p2 ^ rk[u ++];
+		x3 = p3 ^ rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		x0 ^= rk[u ++];
+		x1 ^= rk[u ++];
+		x2 ^= rk[u ++];
+		x3 ^= rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		x0 ^= rk[u ++];
+		x1 ^= rk[u ++];
+		x2 ^= rk[u ++];
+		x3 ^= rk[u ++];
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p4 ^= x0;
+		p5 ^= x1;
+		p6 ^= x2;
+		p7 ^= x3;
+	}
+	sc->h[0x0] ^= p0;
+	sc->h[0x1] ^= p1;
+	sc->h[0x2] ^= p2;
+	sc->h[0x3] ^= p3;
+	sc->h[0x4] ^= p4;
+	sc->h[0x5] ^= p5;
+	sc->h[0x6] ^= p6;
+	sc->h[0x7] ^= p7;
+}
+
+#else
+
+/*
+ * This function assumes that "msg" is aligned for 32-bit access.
+ */
+static void
+c256(sph_shavite_small_context *sc, const void *msg)
+{
+	sph_u32 p0, p1, p2, p3, p4, p5, p6, p7;
+	sph_u32 x0, x1, x2, x3;
+	sph_u32 rk0, rk1, rk2, rk3, rk4, rk5, rk6, rk7;
+	sph_u32 rk8, rk9, rkA, rkB, rkC, rkD, rkE, rkF;
+
+	p0 = sc->h[0x0];
+	p1 = sc->h[0x1];
+	p2 = sc->h[0x2];
+	p3 = sc->h[0x3];
+	p4 = sc->h[0x4];
+	p5 = sc->h[0x5];
+	p6 = sc->h[0x6];
+	p7 = sc->h[0x7];
+	/* round 0 */
+	rk0 = sph_dec32le_aligned((const unsigned char *)msg +  0);
+	x0 = p4 ^ rk0;
+	rk1 = sph_dec32le_aligned((const unsigned char *)msg +  4);
+	x1 = p5 ^ rk1;
+	rk2 = sph_dec32le_aligned((const unsigned char *)msg +  8);
+	x2 = p6 ^ rk2;
+	rk3 = sph_dec32le_aligned((const unsigned char *)msg + 12);
+	x3 = p7 ^ rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk4 = sph_dec32le_aligned((const unsigned char *)msg + 16);
+	x0 ^= rk4;
+	rk5 = sph_dec32le_aligned((const unsigned char *)msg + 20);
+	x1 ^= rk5;
+	rk6 = sph_dec32le_aligned((const unsigned char *)msg + 24);
+	x2 ^= rk6;
+	rk7 = sph_dec32le_aligned((const unsigned char *)msg + 28);
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk8 = sph_dec32le_aligned((const unsigned char *)msg + 32);
+	x0 ^= rk8;
+	rk9 = sph_dec32le_aligned((const unsigned char *)msg + 36);
+	x1 ^= rk9;
+	rkA = sph_dec32le_aligned((const unsigned char *)msg + 40);
+	x2 ^= rkA;
+	rkB = sph_dec32le_aligned((const unsigned char *)msg + 44);
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 1 */
+	rkC = sph_dec32le_aligned((const unsigned char *)msg + 48);
+	x0 = p0 ^ rkC;
+	rkD = sph_dec32le_aligned((const unsigned char *)msg + 52);
+	x1 = p1 ^ rkD;
+	rkE = sph_dec32le_aligned((const unsigned char *)msg + 56);
+	x2 = p2 ^ rkE;
+	rkF = sph_dec32le_aligned((const unsigned char *)msg + 60);
+	x3 = p3 ^ rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk0, rk1, rk2, rk3);
+	rk0 ^= rkC ^ sc->count0;
+	rk1 ^= rkD ^ SPH_T32(~sc->count1);
+	rk2 ^= rkE;
+	rk3 ^= rkF;
+	x0 ^= rk0;
+	x1 ^= rk1;
+	x2 ^= rk2;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk4, rk5, rk6, rk7);
+	rk4 ^= rk0;
+	rk5 ^= rk1;
+	rk6 ^= rk2;
+	rk7 ^= rk3;
+	x0 ^= rk4;
+	x1 ^= rk5;
+	x2 ^= rk6;
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	/* round 2 */
+	KEY_EXPAND_ELT(rk8, rk9, rkA, rkB);
+	rk8 ^= rk4;
+	rk9 ^= rk5;
+	rkA ^= rk6;
+	rkB ^= rk7;
+	x0 = p4 ^ rk8;
+	x1 = p5 ^ rk9;
+	x2 = p6 ^ rkA;
+	x3 = p7 ^ rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rkC, rkD, rkE, rkF);
+	rkC ^= rk8;
+	rkD ^= rk9;
+	rkE ^= rkA;
+	rkF ^= rkB;
+	x0 ^= rkC;
+	x1 ^= rkD;
+	x2 ^= rkE;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk0 ^= rkD;
+	x0 ^= rk0;
+	rk1 ^= rkE;
+	x1 ^= rk1;
+	rk2 ^= rkF;
+	x2 ^= rk2;
+	rk3 ^= rk0;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 3 */
+	rk4 ^= rk1;
+	x0 = p0 ^ rk4;
+	rk5 ^= rk2;
+	x1 = p1 ^ rk5;
+	rk6 ^= rk3;
+	x2 = p2 ^ rk6;
+	rk7 ^= rk4;
+	x3 = p3 ^ rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk8 ^= rk5;
+	x0 ^= rk8;
+	rk9 ^= rk6;
+	x1 ^= rk9;
+	rkA ^= rk7;
+	x2 ^= rkA;
+	rkB ^= rk8;
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rkC ^= rk9;
+	x0 ^= rkC;
+	rkD ^= rkA;
+	x1 ^= rkD;
+	rkE ^= rkB;
+	x2 ^= rkE;
+	rkF ^= rkC;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	/* round 4 */
+	KEY_EXPAND_ELT(rk0, rk1, rk2, rk3);
+	rk0 ^= rkC;
+	rk1 ^= rkD;
+	rk2 ^= rkE;
+	rk3 ^= rkF;
+	x0 = p4 ^ rk0;
+	x1 = p5 ^ rk1;
+	x2 = p6 ^ rk2;
+	x3 = p7 ^ rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk4, rk5, rk6, rk7);
+	rk4 ^= rk0;
+	rk5 ^= rk1;
+	rk6 ^= rk2;
+	rk7 ^= rk3;
+	x0 ^= rk4;
+	x1 ^= rk5;
+	x2 ^= rk6;
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk8, rk9, rkA, rkB);
+	rk8 ^= rk4;
+	rk9 ^= rk5 ^ sc->count1;
+	rkA ^= rk6 ^ SPH_T32(~sc->count0);
+	rkB ^= rk7;
+	x0 ^= rk8;
+	x1 ^= rk9;
+	x2 ^= rkA;
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 5 */
+	KEY_EXPAND_ELT(rkC, rkD, rkE, rkF);
+	rkC ^= rk8;
+	rkD ^= rk9;
+	rkE ^= rkA;
+	rkF ^= rkB;
+	x0 = p0 ^ rkC;
+	x1 = p1 ^ rkD;
+	x2 = p2 ^ rkE;
+	x3 = p3 ^ rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk0 ^= rkD;
+	x0 ^= rk0;
+	rk1 ^= rkE;
+	x1 ^= rk1;
+	rk2 ^= rkF;
+	x2 ^= rk2;
+	rk3 ^= rk0;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk4 ^= rk1;
+	x0 ^= rk4;
+	rk5 ^= rk2;
+	x1 ^= rk5;
+	rk6 ^= rk3;
+	x2 ^= rk6;
+	rk7 ^= rk4;
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	/* round 6 */
+	rk8 ^= rk5;
+	x0 = p4 ^ rk8;
+	rk9 ^= rk6;
+	x1 = p5 ^ rk9;
+	rkA ^= rk7;
+	x2 = p6 ^ rkA;
+	rkB ^= rk8;
+	x3 = p7 ^ rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rkC ^= rk9;
+	x0 ^= rkC;
+	rkD ^= rkA;
+	x1 ^= rkD;
+	rkE ^= rkB;
+	x2 ^= rkE;
+	rkF ^= rkC;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk0, rk1, rk2, rk3);
+	rk0 ^= rkC;
+	rk1 ^= rkD;
+	rk2 ^= rkE;
+	rk3 ^= rkF;
+	x0 ^= rk0;
+	x1 ^= rk1;
+	x2 ^= rk2;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 7 */
+	KEY_EXPAND_ELT(rk4, rk5, rk6, rk7);
+	rk4 ^= rk0;
+	rk5 ^= rk1;
+	rk6 ^= rk2 ^ sc->count1;
+	rk7 ^= rk3 ^ SPH_T32(~sc->count0);
+	x0 = p0 ^ rk4;
+	x1 = p1 ^ rk5;
+	x2 = p2 ^ rk6;
+	x3 = p3 ^ rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk8, rk9, rkA, rkB);
+	rk8 ^= rk4;
+	rk9 ^= rk5;
+	rkA ^= rk6;
+	rkB ^= rk7;
+	x0 ^= rk8;
+	x1 ^= rk9;
+	x2 ^= rkA;
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rkC, rkD, rkE, rkF);
+	rkC ^= rk8;
+	rkD ^= rk9;
+	rkE ^= rkA;
+	rkF ^= rkB;
+	x0 ^= rkC;
+	x1 ^= rkD;
+	x2 ^= rkE;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	/* round 8 */
+	rk0 ^= rkD;
+	x0 = p4 ^ rk0;
+	rk1 ^= rkE;
+	x1 = p5 ^ rk1;
+	rk2 ^= rkF;
+	x2 = p6 ^ rk2;
+	rk3 ^= rk0;
+	x3 = p7 ^ rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk4 ^= rk1;
+	x0 ^= rk4;
+	rk5 ^= rk2;
+	x1 ^= rk5;
+	rk6 ^= rk3;
+	x2 ^= rk6;
+	rk7 ^= rk4;
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk8 ^= rk5;
+	x0 ^= rk8;
+	rk9 ^= rk6;
+	x1 ^= rk9;
+	rkA ^= rk7;
+	x2 ^= rkA;
+	rkB ^= rk8;
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 9 */
+	rkC ^= rk9;
+	x0 = p0 ^ rkC;
+	rkD ^= rkA;
+	x1 = p1 ^ rkD;
+	rkE ^= rkB;
+	x2 = p2 ^ rkE;
+	rkF ^= rkC;
+	x3 = p3 ^ rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk0, rk1, rk2, rk3);
+	rk0 ^= rkC;
+	rk1 ^= rkD;
+	rk2 ^= rkE;
+	rk3 ^= rkF;
+	x0 ^= rk0;
+	x1 ^= rk1;
+	x2 ^= rk2;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk4, rk5, rk6, rk7);
+	rk4 ^= rk0;
+	rk5 ^= rk1;
+	rk6 ^= rk2;
+	rk7 ^= rk3;
+	x0 ^= rk4;
+	x1 ^= rk5;
+	x2 ^= rk6;
+	x3 ^= rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	/* round 10 */
+	KEY_EXPAND_ELT(rk8, rk9, rkA, rkB);
+	rk8 ^= rk4;
+	rk9 ^= rk5;
+	rkA ^= rk6;
+	rkB ^= rk7;
+	x0 = p4 ^ rk8;
+	x1 = p5 ^ rk9;
+	x2 = p6 ^ rkA;
+	x3 = p7 ^ rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rkC, rkD, rkE, rkF);
+	rkC ^= rk8 ^ sc->count0;
+	rkD ^= rk9;
+	rkE ^= rkA;
+	rkF ^= rkB ^ SPH_T32(~sc->count1);
+	x0 ^= rkC;
+	x1 ^= rkD;
+	x2 ^= rkE;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk0 ^= rkD;
+	x0 ^= rk0;
+	rk1 ^= rkE;
+	x1 ^= rk1;
+	rk2 ^= rkF;
+	x2 ^= rk2;
+	rk3 ^= rk0;
+	x3 ^= rk3;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	/* round 11 */
+	rk4 ^= rk1;
+	x0 = p0 ^ rk4;
+	rk5 ^= rk2;
+	x1 = p1 ^ rk5;
+	rk6 ^= rk3;
+	x2 = p2 ^ rk6;
+	rk7 ^= rk4;
+	x3 = p3 ^ rk7;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk8 ^= rk5;
+	x0 ^= rk8;
+	rk9 ^= rk6;
+	x1 ^= rk9;
+	rkA ^= rk7;
+	x2 ^= rkA;
+	rkB ^= rk8;
+	x3 ^= rkB;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rkC ^= rk9;
+	x0 ^= rkC;
+	rkD ^= rkA;
+	x1 ^= rkD;
+	rkE ^= rkB;
+	x2 ^= rkE;
+	rkF ^= rkC;
+	x3 ^= rkF;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	sc->h[0x0] ^= p0;
+	sc->h[0x1] ^= p1;
+	sc->h[0x2] ^= p2;
+	sc->h[0x3] ^= p3;
+	sc->h[0x4] ^= p4;
+	sc->h[0x5] ^= p5;
+	sc->h[0x6] ^= p6;
+	sc->h[0x7] ^= p7;
+}
+
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SHAVITE
+
+/*
+ * This function assumes that "msg" is aligned for 32-bit access.
+ */
+static void
+c512(sph_shavite_big_context *sc, const void *msg)
+{
+	sph_u32 p0, p1, p2, p3, p4, p5, p6, p7;
+	sph_u32 p8, p9, pA, pB, pC, pD, pE, pF;
+	sph_u32 rk[448];
+	size_t u;
+	int r, s;
+
+#if SPH_LITTLE_ENDIAN
+	memcpy(rk, msg, 128);
+#else
+	for (u = 0; u < 32; u += 4) {
+		rk[u + 0] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  0);
+		rk[u + 1] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  4);
+		rk[u + 2] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) +  8);
+		rk[u + 3] = sph_dec32le_aligned(
+			(const unsigned char *)msg + (u << 2) + 12);
+	}
+#endif
+	u = 32;
+	for (;;) {
+		for (s = 0; s < 4; s ++) {
+			sph_u32 x0, x1, x2, x3;
+
+			x0 = rk[u - 31];
+			x1 = rk[u - 30];
+			x2 = rk[u - 29];
+			x3 = rk[u - 32];
+			AES_ROUND_NOKEY(x0, x1, x2, x3);
+			rk[u + 0] = x0 ^ rk[u - 4];
+			rk[u + 1] = x1 ^ rk[u - 3];
+			rk[u + 2] = x2 ^ rk[u - 2];
+			rk[u + 3] = x3 ^ rk[u - 1];
+			if (u == 32) {
+				rk[ 32] ^= sc->count0;
+				rk[ 33] ^= sc->count1;
+				rk[ 34] ^= sc->count2;
+				rk[ 35] ^= SPH_T32(~sc->count3);
+			} else if (u == 440) {
+				rk[440] ^= sc->count1;
+				rk[441] ^= sc->count0;
+				rk[442] ^= sc->count3;
+				rk[443] ^= SPH_T32(~sc->count2);
+			}
+			u += 4;
+
+			x0 = rk[u - 31];
+			x1 = rk[u - 30];
+			x2 = rk[u - 29];
+			x3 = rk[u - 32];
+			AES_ROUND_NOKEY(x0, x1, x2, x3);
+			rk[u + 0] = x0 ^ rk[u - 4];
+			rk[u + 1] = x1 ^ rk[u - 3];
+			rk[u + 2] = x2 ^ rk[u - 2];
+			rk[u + 3] = x3 ^ rk[u - 1];
+			if (u == 164) {
+				rk[164] ^= sc->count3;
+				rk[165] ^= sc->count2;
+				rk[166] ^= sc->count1;
+				rk[167] ^= SPH_T32(~sc->count0);
+			} else if (u == 316) {
+				rk[316] ^= sc->count2;
+				rk[317] ^= sc->count3;
+				rk[318] ^= sc->count0;
+				rk[319] ^= SPH_T32(~sc->count1);
+			}
+			u += 4;
+		}
+		if (u == 448)
+			break;
+		for (s = 0; s < 8; s ++) {
+			rk[u + 0] = rk[u - 32] ^ rk[u - 7];
+			rk[u + 1] = rk[u - 31] ^ rk[u - 6];
+			rk[u + 2] = rk[u - 30] ^ rk[u - 5];
+			rk[u + 3] = rk[u - 29] ^ rk[u - 4];
+			u += 4;
+		}
+	}
+
+	p0 = sc->h[0x0];
+	p1 = sc->h[0x1];
+	p2 = sc->h[0x2];
+	p3 = sc->h[0x3];
+	p4 = sc->h[0x4];
+	p5 = sc->h[0x5];
+	p6 = sc->h[0x6];
+	p7 = sc->h[0x7];
+	p8 = sc->h[0x8];
+	p9 = sc->h[0x9];
+	pA = sc->h[0xA];
+	pB = sc->h[0xB];
+	pC = sc->h[0xC];
+	pD = sc->h[0xD];
+	pE = sc->h[0xE];
+	pF = sc->h[0xF];
+	u = 0;
+	for (r = 0; r < 14; r ++) {
+#define C512_ELT(l0, l1, l2, l3, r0, r1, r2, r3)   do { \
+		sph_u32 x0, x1, x2, x3; \
+		x0 = r0 ^ rk[u ++]; \
+		x1 = r1 ^ rk[u ++]; \
+		x2 = r2 ^ rk[u ++]; \
+		x3 = r3 ^ rk[u ++]; \
+		AES_ROUND_NOKEY(x0, x1, x2, x3); \
+		x0 ^= rk[u ++]; \
+		x1 ^= rk[u ++]; \
+		x2 ^= rk[u ++]; \
+		x3 ^= rk[u ++]; \
+		AES_ROUND_NOKEY(x0, x1, x2, x3); \
+		x0 ^= rk[u ++]; \
+		x1 ^= rk[u ++]; \
+		x2 ^= rk[u ++]; \
+		x3 ^= rk[u ++]; \
+		AES_ROUND_NOKEY(x0, x1, x2, x3); \
+		x0 ^= rk[u ++]; \
+		x1 ^= rk[u ++]; \
+		x2 ^= rk[u ++]; \
+		x3 ^= rk[u ++]; \
+		AES_ROUND_NOKEY(x0, x1, x2, x3); \
+		l0 ^= x0; \
+		l1 ^= x1; \
+		l2 ^= x2; \
+		l3 ^= x3; \
+	} while (0)
+
+#define WROT(a, b, c, d)   do { \
+		sph_u32 t = d; \
+		d = c; \
+		c = b; \
+		b = a; \
+		a = t; \
+	} while (0)
+
+		C512_ELT(p0, p1, p2, p3, p4, p5, p6, p7);
+		C512_ELT(p8, p9, pA, pB, pC, pD, pE, pF);
+
+		WROT(p0, p4, p8, pC);
+		WROT(p1, p5, p9, pD);
+		WROT(p2, p6, pA, pE);
+		WROT(p3, p7, pB, pF);
+
+#undef C512_ELT
+#undef WROT
+	}
+	sc->h[0x0] ^= p0;
+	sc->h[0x1] ^= p1;
+	sc->h[0x2] ^= p2;
+	sc->h[0x3] ^= p3;
+	sc->h[0x4] ^= p4;
+	sc->h[0x5] ^= p5;
+	sc->h[0x6] ^= p6;
+	sc->h[0x7] ^= p7;
+	sc->h[0x8] ^= p8;
+	sc->h[0x9] ^= p9;
+	sc->h[0xA] ^= pA;
+	sc->h[0xB] ^= pB;
+	sc->h[0xC] ^= pC;
+	sc->h[0xD] ^= pD;
+	sc->h[0xE] ^= pE;
+	sc->h[0xF] ^= pF;
+}
+
+#else
+
+/*
+ * This function assumes that "msg" is aligned for 32-bit access.
+ */
+static void
+c512(sph_shavite_big_context *sc, const void *msg)
+{
+	sph_u32 p0, p1, p2, p3, p4, p5, p6, p7;
+	sph_u32 p8, p9, pA, pB, pC, pD, pE, pF;
+	sph_u32 x0, x1, x2, x3;
+	sph_u32 rk00, rk01, rk02, rk03, rk04, rk05, rk06, rk07;
+	sph_u32 rk08, rk09, rk0A, rk0B, rk0C, rk0D, rk0E, rk0F;
+	sph_u32 rk10, rk11, rk12, rk13, rk14, rk15, rk16, rk17;
+	sph_u32 rk18, rk19, rk1A, rk1B, rk1C, rk1D, rk1E, rk1F;
+	int r;
+
+	p0 = sc->h[0x0];
+	p1 = sc->h[0x1];
+	p2 = sc->h[0x2];
+	p3 = sc->h[0x3];
+	p4 = sc->h[0x4];
+	p5 = sc->h[0x5];
+	p6 = sc->h[0x6];
+	p7 = sc->h[0x7];
+	p8 = sc->h[0x8];
+	p9 = sc->h[0x9];
+	pA = sc->h[0xA];
+	pB = sc->h[0xB];
+	pC = sc->h[0xC];
+	pD = sc->h[0xD];
+	pE = sc->h[0xE];
+	pF = sc->h[0xF];
+	/* round 0 */
+	rk00 = sph_dec32le_aligned((const unsigned char *)msg +   0);
+	x0 = p4 ^ rk00;
+	rk01 = sph_dec32le_aligned((const unsigned char *)msg +   4);
+	x1 = p5 ^ rk01;
+	rk02 = sph_dec32le_aligned((const unsigned char *)msg +   8);
+	x2 = p6 ^ rk02;
+	rk03 = sph_dec32le_aligned((const unsigned char *)msg +  12);
+	x3 = p7 ^ rk03;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk04 = sph_dec32le_aligned((const unsigned char *)msg +  16);
+	x0 ^= rk04;
+	rk05 = sph_dec32le_aligned((const unsigned char *)msg +  20);
+	x1 ^= rk05;
+	rk06 = sph_dec32le_aligned((const unsigned char *)msg +  24);
+	x2 ^= rk06;
+	rk07 = sph_dec32le_aligned((const unsigned char *)msg +  28);
+	x3 ^= rk07;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk08 = sph_dec32le_aligned((const unsigned char *)msg +  32);
+	x0 ^= rk08;
+	rk09 = sph_dec32le_aligned((const unsigned char *)msg +  36);
+	x1 ^= rk09;
+	rk0A = sph_dec32le_aligned((const unsigned char *)msg +  40);
+	x2 ^= rk0A;
+	rk0B = sph_dec32le_aligned((const unsigned char *)msg +  44);
+	x3 ^= rk0B;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk0C = sph_dec32le_aligned((const unsigned char *)msg +  48);
+	x0 ^= rk0C;
+	rk0D = sph_dec32le_aligned((const unsigned char *)msg +  52);
+	x1 ^= rk0D;
+	rk0E = sph_dec32le_aligned((const unsigned char *)msg +  56);
+	x2 ^= rk0E;
+	rk0F = sph_dec32le_aligned((const unsigned char *)msg +  60);
+	x3 ^= rk0F;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p0 ^= x0;
+	p1 ^= x1;
+	p2 ^= x2;
+	p3 ^= x3;
+	rk10 = sph_dec32le_aligned((const unsigned char *)msg +  64);
+	x0 = pC ^ rk10;
+	rk11 = sph_dec32le_aligned((const unsigned char *)msg +  68);
+	x1 = pD ^ rk11;
+	rk12 = sph_dec32le_aligned((const unsigned char *)msg +  72);
+	x2 = pE ^ rk12;
+	rk13 = sph_dec32le_aligned((const unsigned char *)msg +  76);
+	x3 = pF ^ rk13;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk14 = sph_dec32le_aligned((const unsigned char *)msg +  80);
+	x0 ^= rk14;
+	rk15 = sph_dec32le_aligned((const unsigned char *)msg +  84);
+	x1 ^= rk15;
+	rk16 = sph_dec32le_aligned((const unsigned char *)msg +  88);
+	x2 ^= rk16;
+	rk17 = sph_dec32le_aligned((const unsigned char *)msg +  92);
+	x3 ^= rk17;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk18 = sph_dec32le_aligned((const unsigned char *)msg +  96);
+	x0 ^= rk18;
+	rk19 = sph_dec32le_aligned((const unsigned char *)msg + 100);
+	x1 ^= rk19;
+	rk1A = sph_dec32le_aligned((const unsigned char *)msg + 104);
+	x2 ^= rk1A;
+	rk1B = sph_dec32le_aligned((const unsigned char *)msg + 108);
+	x3 ^= rk1B;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	rk1C = sph_dec32le_aligned((const unsigned char *)msg + 112);
+	x0 ^= rk1C;
+	rk1D = sph_dec32le_aligned((const unsigned char *)msg + 116);
+	x1 ^= rk1D;
+	rk1E = sph_dec32le_aligned((const unsigned char *)msg + 120);
+	x2 ^= rk1E;
+	rk1F = sph_dec32le_aligned((const unsigned char *)msg + 124);
+	x3 ^= rk1F;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p8 ^= x0;
+	p9 ^= x1;
+	pA ^= x2;
+	pB ^= x3;
+
+	for (r = 0; r < 3; r ++) {
+		/* round 1, 5, 9 */
+		KEY_EXPAND_ELT(rk00, rk01, rk02, rk03);
+		rk00 ^= rk1C;
+		rk01 ^= rk1D;
+		rk02 ^= rk1E;
+		rk03 ^= rk1F;
+		if (r == 0) {
+			rk00 ^= sc->count0;
+			rk01 ^= sc->count1;
+			rk02 ^= sc->count2;
+			rk03 ^= SPH_T32(~sc->count3);
+		}
+		x0 = p0 ^ rk00;
+		x1 = p1 ^ rk01;
+		x2 = p2 ^ rk02;
+		x3 = p3 ^ rk03;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk04, rk05, rk06, rk07);
+		rk04 ^= rk00;
+		rk05 ^= rk01;
+		rk06 ^= rk02;
+		rk07 ^= rk03;
+		if (r == 1) {
+			rk04 ^= sc->count3;
+			rk05 ^= sc->count2;
+			rk06 ^= sc->count1;
+			rk07 ^= SPH_T32(~sc->count0);
+		}
+		x0 ^= rk04;
+		x1 ^= rk05;
+		x2 ^= rk06;
+		x3 ^= rk07;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk08, rk09, rk0A, rk0B);
+		rk08 ^= rk04;
+		rk09 ^= rk05;
+		rk0A ^= rk06;
+		rk0B ^= rk07;
+		x0 ^= rk08;
+		x1 ^= rk09;
+		x2 ^= rk0A;
+		x3 ^= rk0B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk0C, rk0D, rk0E, rk0F);
+		rk0C ^= rk08;
+		rk0D ^= rk09;
+		rk0E ^= rk0A;
+		rk0F ^= rk0B;
+		x0 ^= rk0C;
+		x1 ^= rk0D;
+		x2 ^= rk0E;
+		x3 ^= rk0F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		pC ^= x0;
+		pD ^= x1;
+		pE ^= x2;
+		pF ^= x3;
+		KEY_EXPAND_ELT(rk10, rk11, rk12, rk13);
+		rk10 ^= rk0C;
+		rk11 ^= rk0D;
+		rk12 ^= rk0E;
+		rk13 ^= rk0F;
+		x0 = p8 ^ rk10;
+		x1 = p9 ^ rk11;
+		x2 = pA ^ rk12;
+		x3 = pB ^ rk13;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk14, rk15, rk16, rk17);
+		rk14 ^= rk10;
+		rk15 ^= rk11;
+		rk16 ^= rk12;
+		rk17 ^= rk13;
+		x0 ^= rk14;
+		x1 ^= rk15;
+		x2 ^= rk16;
+		x3 ^= rk17;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk18, rk19, rk1A, rk1B);
+		rk18 ^= rk14;
+		rk19 ^= rk15;
+		rk1A ^= rk16;
+		rk1B ^= rk17;
+		x0 ^= rk18;
+		x1 ^= rk19;
+		x2 ^= rk1A;
+		x3 ^= rk1B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk1C, rk1D, rk1E, rk1F);
+		rk1C ^= rk18;
+		rk1D ^= rk19;
+		rk1E ^= rk1A;
+		rk1F ^= rk1B;
+		if (r == 2) {
+			rk1C ^= sc->count2;
+			rk1D ^= sc->count3;
+			rk1E ^= sc->count0;
+			rk1F ^= SPH_T32(~sc->count1);
+		}
+		x0 ^= rk1C;
+		x1 ^= rk1D;
+		x2 ^= rk1E;
+		x3 ^= rk1F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p4 ^= x0;
+		p5 ^= x1;
+		p6 ^= x2;
+		p7 ^= x3;
+		/* round 2, 6, 10 */
+		rk00 ^= rk19;
+		x0 = pC ^ rk00;
+		rk01 ^= rk1A;
+		x1 = pD ^ rk01;
+		rk02 ^= rk1B;
+		x2 = pE ^ rk02;
+		rk03 ^= rk1C;
+		x3 = pF ^ rk03;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk04 ^= rk1D;
+		x0 ^= rk04;
+		rk05 ^= rk1E;
+		x1 ^= rk05;
+		rk06 ^= rk1F;
+		x2 ^= rk06;
+		rk07 ^= rk00;
+		x3 ^= rk07;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk08 ^= rk01;
+		x0 ^= rk08;
+		rk09 ^= rk02;
+		x1 ^= rk09;
+		rk0A ^= rk03;
+		x2 ^= rk0A;
+		rk0B ^= rk04;
+		x3 ^= rk0B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk0C ^= rk05;
+		x0 ^= rk0C;
+		rk0D ^= rk06;
+		x1 ^= rk0D;
+		rk0E ^= rk07;
+		x2 ^= rk0E;
+		rk0F ^= rk08;
+		x3 ^= rk0F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p8 ^= x0;
+		p9 ^= x1;
+		pA ^= x2;
+		pB ^= x3;
+		rk10 ^= rk09;
+		x0 = p4 ^ rk10;
+		rk11 ^= rk0A;
+		x1 = p5 ^ rk11;
+		rk12 ^= rk0B;
+		x2 = p6 ^ rk12;
+		rk13 ^= rk0C;
+		x3 = p7 ^ rk13;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk14 ^= rk0D;
+		x0 ^= rk14;
+		rk15 ^= rk0E;
+		x1 ^= rk15;
+		rk16 ^= rk0F;
+		x2 ^= rk16;
+		rk17 ^= rk10;
+		x3 ^= rk17;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk18 ^= rk11;
+		x0 ^= rk18;
+		rk19 ^= rk12;
+		x1 ^= rk19;
+		rk1A ^= rk13;
+		x2 ^= rk1A;
+		rk1B ^= rk14;
+		x3 ^= rk1B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk1C ^= rk15;
+		x0 ^= rk1C;
+		rk1D ^= rk16;
+		x1 ^= rk1D;
+		rk1E ^= rk17;
+		x2 ^= rk1E;
+		rk1F ^= rk18;
+		x3 ^= rk1F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p0 ^= x0;
+		p1 ^= x1;
+		p2 ^= x2;
+		p3 ^= x3;
+		/* round 3, 7, 11 */
+		KEY_EXPAND_ELT(rk00, rk01, rk02, rk03);
+		rk00 ^= rk1C;
+		rk01 ^= rk1D;
+		rk02 ^= rk1E;
+		rk03 ^= rk1F;
+		x0 = p8 ^ rk00;
+		x1 = p9 ^ rk01;
+		x2 = pA ^ rk02;
+		x3 = pB ^ rk03;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk04, rk05, rk06, rk07);
+		rk04 ^= rk00;
+		rk05 ^= rk01;
+		rk06 ^= rk02;
+		rk07 ^= rk03;
+		x0 ^= rk04;
+		x1 ^= rk05;
+		x2 ^= rk06;
+		x3 ^= rk07;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk08, rk09, rk0A, rk0B);
+		rk08 ^= rk04;
+		rk09 ^= rk05;
+		rk0A ^= rk06;
+		rk0B ^= rk07;
+		x0 ^= rk08;
+		x1 ^= rk09;
+		x2 ^= rk0A;
+		x3 ^= rk0B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk0C, rk0D, rk0E, rk0F);
+		rk0C ^= rk08;
+		rk0D ^= rk09;
+		rk0E ^= rk0A;
+		rk0F ^= rk0B;
+		x0 ^= rk0C;
+		x1 ^= rk0D;
+		x2 ^= rk0E;
+		x3 ^= rk0F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p4 ^= x0;
+		p5 ^= x1;
+		p6 ^= x2;
+		p7 ^= x3;
+		KEY_EXPAND_ELT(rk10, rk11, rk12, rk13);
+		rk10 ^= rk0C;
+		rk11 ^= rk0D;
+		rk12 ^= rk0E;
+		rk13 ^= rk0F;
+		x0 = p0 ^ rk10;
+		x1 = p1 ^ rk11;
+		x2 = p2 ^ rk12;
+		x3 = p3 ^ rk13;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk14, rk15, rk16, rk17);
+		rk14 ^= rk10;
+		rk15 ^= rk11;
+		rk16 ^= rk12;
+		rk17 ^= rk13;
+		x0 ^= rk14;
+		x1 ^= rk15;
+		x2 ^= rk16;
+		x3 ^= rk17;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk18, rk19, rk1A, rk1B);
+		rk18 ^= rk14;
+		rk19 ^= rk15;
+		rk1A ^= rk16;
+		rk1B ^= rk17;
+		x0 ^= rk18;
+		x1 ^= rk19;
+		x2 ^= rk1A;
+		x3 ^= rk1B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		KEY_EXPAND_ELT(rk1C, rk1D, rk1E, rk1F);
+		rk1C ^= rk18;
+		rk1D ^= rk19;
+		rk1E ^= rk1A;
+		rk1F ^= rk1B;
+		x0 ^= rk1C;
+		x1 ^= rk1D;
+		x2 ^= rk1E;
+		x3 ^= rk1F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		pC ^= x0;
+		pD ^= x1;
+		pE ^= x2;
+		pF ^= x3;
+		/* round 4, 8, 12 */
+		rk00 ^= rk19;
+		x0 = p4 ^ rk00;
+		rk01 ^= rk1A;
+		x1 = p5 ^ rk01;
+		rk02 ^= rk1B;
+		x2 = p6 ^ rk02;
+		rk03 ^= rk1C;
+		x3 = p7 ^ rk03;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk04 ^= rk1D;
+		x0 ^= rk04;
+		rk05 ^= rk1E;
+		x1 ^= rk05;
+		rk06 ^= rk1F;
+		x2 ^= rk06;
+		rk07 ^= rk00;
+		x3 ^= rk07;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk08 ^= rk01;
+		x0 ^= rk08;
+		rk09 ^= rk02;
+		x1 ^= rk09;
+		rk0A ^= rk03;
+		x2 ^= rk0A;
+		rk0B ^= rk04;
+		x3 ^= rk0B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk0C ^= rk05;
+		x0 ^= rk0C;
+		rk0D ^= rk06;
+		x1 ^= rk0D;
+		rk0E ^= rk07;
+		x2 ^= rk0E;
+		rk0F ^= rk08;
+		x3 ^= rk0F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p0 ^= x0;
+		p1 ^= x1;
+		p2 ^= x2;
+		p3 ^= x3;
+		rk10 ^= rk09;
+		x0 = pC ^ rk10;
+		rk11 ^= rk0A;
+		x1 = pD ^ rk11;
+		rk12 ^= rk0B;
+		x2 = pE ^ rk12;
+		rk13 ^= rk0C;
+		x3 = pF ^ rk13;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk14 ^= rk0D;
+		x0 ^= rk14;
+		rk15 ^= rk0E;
+		x1 ^= rk15;
+		rk16 ^= rk0F;
+		x2 ^= rk16;
+		rk17 ^= rk10;
+		x3 ^= rk17;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk18 ^= rk11;
+		x0 ^= rk18;
+		rk19 ^= rk12;
+		x1 ^= rk19;
+		rk1A ^= rk13;
+		x2 ^= rk1A;
+		rk1B ^= rk14;
+		x3 ^= rk1B;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		rk1C ^= rk15;
+		x0 ^= rk1C;
+		rk1D ^= rk16;
+		x1 ^= rk1D;
+		rk1E ^= rk17;
+		x2 ^= rk1E;
+		rk1F ^= rk18;
+		x3 ^= rk1F;
+		AES_ROUND_NOKEY(x0, x1, x2, x3);
+		p8 ^= x0;
+		p9 ^= x1;
+		pA ^= x2;
+		pB ^= x3;
+	}
+	/* round 13 */
+	KEY_EXPAND_ELT(rk00, rk01, rk02, rk03);
+	rk00 ^= rk1C;
+	rk01 ^= rk1D;
+	rk02 ^= rk1E;
+	rk03 ^= rk1F;
+	x0 = p0 ^ rk00;
+	x1 = p1 ^ rk01;
+	x2 = p2 ^ rk02;
+	x3 = p3 ^ rk03;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk04, rk05, rk06, rk07);
+	rk04 ^= rk00;
+	rk05 ^= rk01;
+	rk06 ^= rk02;
+	rk07 ^= rk03;
+	x0 ^= rk04;
+	x1 ^= rk05;
+	x2 ^= rk06;
+	x3 ^= rk07;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk08, rk09, rk0A, rk0B);
+	rk08 ^= rk04;
+	rk09 ^= rk05;
+	rk0A ^= rk06;
+	rk0B ^= rk07;
+	x0 ^= rk08;
+	x1 ^= rk09;
+	x2 ^= rk0A;
+	x3 ^= rk0B;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk0C, rk0D, rk0E, rk0F);
+	rk0C ^= rk08;
+	rk0D ^= rk09;
+	rk0E ^= rk0A;
+	rk0F ^= rk0B;
+	x0 ^= rk0C;
+	x1 ^= rk0D;
+	x2 ^= rk0E;
+	x3 ^= rk0F;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	pC ^= x0;
+	pD ^= x1;
+	pE ^= x2;
+	pF ^= x3;
+	KEY_EXPAND_ELT(rk10, rk11, rk12, rk13);
+	rk10 ^= rk0C;
+	rk11 ^= rk0D;
+	rk12 ^= rk0E;
+	rk13 ^= rk0F;
+	x0 = p8 ^ rk10;
+	x1 = p9 ^ rk11;
+	x2 = pA ^ rk12;
+	x3 = pB ^ rk13;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk14, rk15, rk16, rk17);
+	rk14 ^= rk10;
+	rk15 ^= rk11;
+	rk16 ^= rk12;
+	rk17 ^= rk13;
+	x0 ^= rk14;
+	x1 ^= rk15;
+	x2 ^= rk16;
+	x3 ^= rk17;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk18, rk19, rk1A, rk1B);
+	rk18 ^= rk14 ^ sc->count1;
+	rk19 ^= rk15 ^ sc->count0;
+	rk1A ^= rk16 ^ sc->count3;
+	rk1B ^= rk17 ^ SPH_T32(~sc->count2);
+	x0 ^= rk18;
+	x1 ^= rk19;
+	x2 ^= rk1A;
+	x3 ^= rk1B;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	KEY_EXPAND_ELT(rk1C, rk1D, rk1E, rk1F);
+	rk1C ^= rk18;
+	rk1D ^= rk19;
+	rk1E ^= rk1A;
+	rk1F ^= rk1B;
+	x0 ^= rk1C;
+	x1 ^= rk1D;
+	x2 ^= rk1E;
+	x3 ^= rk1F;
+	AES_ROUND_NOKEY(x0, x1, x2, x3);
+	p4 ^= x0;
+	p5 ^= x1;
+	p6 ^= x2;
+	p7 ^= x3;
+	sc->h[0x0] ^= p8;
+	sc->h[0x1] ^= p9;
+	sc->h[0x2] ^= pA;
+	sc->h[0x3] ^= pB;
+	sc->h[0x4] ^= pC;
+	sc->h[0x5] ^= pD;
+	sc->h[0x6] ^= pE;
+	sc->h[0x7] ^= pF;
+	sc->h[0x8] ^= p0;
+	sc->h[0x9] ^= p1;
+	sc->h[0xA] ^= p2;
+	sc->h[0xB] ^= p3;
+	sc->h[0xC] ^= p4;
+	sc->h[0xD] ^= p5;
+	sc->h[0xE] ^= p6;
+	sc->h[0xF] ^= p7;
+}
+
+#endif
+
+static void
+shavite_small_init(sph_shavite_small_context *sc, const sph_u32 *iv)
+{
+	memcpy(sc->h, iv, sizeof sc->h);
+	sc->ptr = 0;
+	sc->count0 = 0;
+	sc->count1 = 0;
+}
+
+static void
+shavite_small_core(sph_shavite_small_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		ptr += clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			if ((sc->count0 = SPH_T32(sc->count0 + 512)) == 0)
+				sc->count1 = SPH_T32(sc->count1 + 1);
+			c256(sc, buf);
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+}
+
+static void
+shavite_small_close(sph_shavite_small_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w32)
+{
+	unsigned char *buf;
+	size_t ptr, u;
+	unsigned z;
+	sph_u32 count0, count1;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	count0 = (sc->count0 += (ptr << 3) + n);
+	count1 = sc->count1;
+	z = 0x80 >> n;
+	z = ((ub & -z) | z) & 0xFF;
+	if (ptr == 0 && n == 0) {
+		buf[0] = 0x80;
+		memset(buf + 1, 0, 53);
+		sc->count0 = sc->count1 = 0;
+	} else if (ptr < 54) {
+		buf[ptr ++] = z;
+		memset(buf + ptr, 0, 54 - ptr);
+	} else {
+		buf[ptr ++] = z;
+		memset(buf + ptr, 0, 64 - ptr);
+		c256(sc, buf);
+		memset(buf, 0, 54);
+		sc->count0 = sc->count1 = 0;
+	}
+	sph_enc32le(buf + 54, count0);
+	sph_enc32le(buf + 58, count1);
+	buf[62] = out_size_w32 << 5;
+	buf[63] = out_size_w32 >> 3;
+	c256(sc, buf);
+	for (u = 0; u < out_size_w32; u ++)
+		sph_enc32le((unsigned char *)dst + (u << 2), sc->h[u]);
+}
+
+static void
+shavite_big_init(sph_shavite_big_context *sc, const sph_u32 *iv)
+{
+	memcpy(sc->h, iv, sizeof sc->h);
+	sc->ptr = 0;
+	sc->count0 = 0;
+	sc->count1 = 0;
+	sc->count2 = 0;
+	sc->count3 = 0;
+}
+
+static void
+shavite_big_core(sph_shavite_big_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		ptr += clen;
+		len -= clen;
+		if (ptr == sizeof sc->buf) {
+			if ((sc->count0 = SPH_T32(sc->count0 + 1024)) == 0) {
+				sc->count1 = SPH_T32(sc->count1 + 1);
+				if (sc->count1 == 0) {
+					sc->count2 = SPH_T32(sc->count2 + 1);
+					if (sc->count2 == 0) {
+						sc->count3 = SPH_T32(
+							sc->count3 + 1);
+					}
+				}
+			}
+			c512(sc, buf);
+			ptr = 0;
+		}
+	}
+	sc->ptr = ptr;
+}
+
+static void
+shavite_big_close(sph_shavite_big_context *sc,
+	unsigned ub, unsigned n, void *dst, size_t out_size_w32)
+{
+	unsigned char *buf;
+	size_t ptr, u;
+	unsigned z;
+	sph_u32 count0, count1, count2, count3;
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	count0 = (sc->count0 += (ptr << 3) + n);
+	count1 = sc->count1;
+	count2 = sc->count2;
+	count3 = sc->count3;
+	z = 0x80 >> n;
+	z = ((ub & -z) | z) & 0xFF;
+	if (ptr == 0 && n == 0) {
+		buf[0] = 0x80;
+		memset(buf + 1, 0, 109);
+		sc->count0 = sc->count1 = sc->count2 = sc->count3 = 0;
+	} else if (ptr < 110) {
+		buf[ptr ++] = z;
+		memset(buf + ptr, 0, 110 - ptr);
+	} else {
+		buf[ptr ++] = z;
+		memset(buf + ptr, 0, 128 - ptr);
+		c512(sc, buf);
+		memset(buf, 0, 110);
+		sc->count0 = sc->count1 = sc->count2 = sc->count3 = 0;
+	}
+	sph_enc32le(buf + 110, count0);
+	sph_enc32le(buf + 114, count1);
+	sph_enc32le(buf + 118, count2);
+	sph_enc32le(buf + 122, count3);
+	buf[126] = out_size_w32 << 5;
+	buf[127] = out_size_w32 >> 3;
+	c512(sc, buf);
+	for (u = 0; u < out_size_w32; u ++)
+		sph_enc32le((unsigned char *)dst + (u << 2), sc->h[u]);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite224_init(void *cc)
+{
+	shavite_small_init(cc, IV224);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite224(void *cc, const void *data, size_t len)
+{
+	shavite_small_core(cc, data, len);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite224_close(void *cc, void *dst)
+{
+	shavite_small_close(cc, 0, 0, dst, 7);
+	shavite_small_init(cc, IV224);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shavite_small_close(cc, ub, n, dst, 7);
+	shavite_small_init(cc, IV224);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite256_init(void *cc)
+{
+	shavite_small_init(cc, IV256);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite256(void *cc, const void *data, size_t len)
+{
+	shavite_small_core(cc, data, len);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite256_close(void *cc, void *dst)
+{
+	shavite_small_close(cc, 0, 0, dst, 8);
+	shavite_small_init(cc, IV256);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shavite_small_close(cc, ub, n, dst, 8);
+	shavite_small_init(cc, IV256);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite384_init(void *cc)
+{
+	shavite_big_init(cc, IV384);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite384(void *cc, const void *data, size_t len)
+{
+	shavite_big_core(cc, data, len);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite384_close(void *cc, void *dst)
+{
+	shavite_big_close(cc, 0, 0, dst, 12);
+	shavite_big_init(cc, IV384);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shavite_big_close(cc, ub, n, dst, 12);
+	shavite_big_init(cc, IV384);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite512_init(void *cc)
+{
+	shavite_big_init(cc, IV512);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite512(void *cc, const void *data, size_t len)
+{
+	shavite_big_core(cc, data, len);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite512_close(void *cc, void *dst)
+{
+	shavite_big_close(cc, 0, 0, dst, 16);
+	shavite_big_init(cc, IV512);
+}
+
+/* see sph_shavite.h */
+void
+sph_shavite512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	shavite_big_close(cc, ub, n, dst, 16);
+	shavite_big_init(cc, IV512);
+}
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/src/crypto/ghostrider/sph_shavite.h b/src/crypto/ghostrider/sph_shavite.h
new file mode 100644
index 000000000..0957e42a9
--- /dev/null
+++ b/src/crypto/ghostrider/sph_shavite.h
@@ -0,0 +1,314 @@
+/* $Id: sph_shavite.h 208 2010-06-02 20:33:00Z tp $ */
+/**
+ * SHAvite-3 interface. This code implements SHAvite-3 with the
+ * recommended parameters for SHA-3, with outputs of 224, 256, 384 and
+ * 512 bits. In the following, we call the function "SHAvite" (without
+ * the "-3" suffix), thus "SHAvite-224" is "SHAvite-3 with a 224-bit
+ * output".
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_shavite.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_SHAVITE_H__
+#define SPH_SHAVITE_H__
+
+#include <stddef.h>
+#include "sph_types.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/**
+ * Output size (in bits) for SHAvite-224.
+ */
+#define SPH_SIZE_shavite224   224
+
+/**
+ * Output size (in bits) for SHAvite-256.
+ */
+#define SPH_SIZE_shavite256   256
+
+/**
+ * Output size (in bits) for SHAvite-384.
+ */
+#define SPH_SIZE_shavite384   384
+
+/**
+ * Output size (in bits) for SHAvite-512.
+ */
+#define SPH_SIZE_shavite512   512
+
+/**
+ * This structure is a context for SHAvite-224 and SHAvite-256 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a SHAvite computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running SHAvite
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 h[8];
+	sph_u32 count0, count1;
+#endif
+} sph_shavite_small_context;
+
+/**
+ * This structure is a context for SHAvite-224 computations. It is
+ * identical to the common <code>sph_shavite_small_context</code>.
+ */
+typedef sph_shavite_small_context sph_shavite224_context;
+
+/**
+ * This structure is a context for SHAvite-256 computations. It is
+ * identical to the common <code>sph_shavite_small_context</code>.
+ */
+typedef sph_shavite_small_context sph_shavite256_context;
+
+/**
+ * This structure is a context for SHAvite-384 and SHAvite-512 computations:
+ * it contains the intermediate values and some data from the last
+ * entered block. Once a SHAvite computation has been performed, the
+ * context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running SHAvite
+ * computation can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 h[16];
+	sph_u32 count0, count1, count2, count3;
+#endif
+} sph_shavite_big_context;
+
+/**
+ * This structure is a context for SHAvite-384 computations. It is
+ * identical to the common <code>sph_shavite_small_context</code>.
+ */
+typedef sph_shavite_big_context sph_shavite384_context;
+
+/**
+ * This structure is a context for SHAvite-512 computations. It is
+ * identical to the common <code>sph_shavite_small_context</code>.
+ */
+typedef sph_shavite_big_context sph_shavite512_context;
+
+/**
+ * Initialize a SHAvite-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHAvite-224 context (pointer to a
+ *             <code>sph_shavite224_context</code>)
+ */
+void sph_shavite224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHAvite-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shavite224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHAvite-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHAvite-224 context
+ * @param dst   the destination buffer
+ */
+void sph_shavite224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHAvite-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shavite224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a SHAvite-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHAvite-256 context (pointer to a
+ *             <code>sph_shavite256_context</code>)
+ */
+void sph_shavite256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHAvite-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shavite256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHAvite-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHAvite-256 context
+ * @param dst   the destination buffer
+ */
+void sph_shavite256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHAvite-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shavite256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a SHAvite-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHAvite-384 context (pointer to a
+ *             <code>sph_shavite384_context</code>)
+ */
+void sph_shavite384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHAvite-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shavite384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHAvite-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHAvite-384 context
+ * @param dst   the destination buffer
+ */
+void sph_shavite384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHAvite-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shavite384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a SHAvite-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the SHAvite-512 context (pointer to a
+ *             <code>sph_shavite512_context</code>)
+ */
+void sph_shavite512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SHAvite-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_shavite512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SHAvite-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SHAvite-512 context
+ * @param dst   the destination buffer
+ */
+void sph_shavite512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SHAvite-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_shavite512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+	
+#ifdef __cplusplus
+}
+#endif	
+	
+#endif
diff --git a/src/crypto/ghostrider/sph_simd.c b/src/crypto/ghostrider/sph_simd.c
new file mode 100644
index 000000000..2c8062617
--- /dev/null
+++ b/src/crypto/ghostrider/sph_simd.c
@@ -0,0 +1,1799 @@
+/* $Id: simd.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * SIMD implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+#include <limits.h>
+
+#include "sph_simd.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_SIMD
+#define SPH_SMALL_FOOTPRINT_SIMD   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+typedef sph_u32 u32;
+typedef sph_s32 s32;
+#define C32     SPH_C32
+#define T32     SPH_T32
+#define ROL32   SPH_ROTL32
+
+#define XCAT(x, y)    XCAT_(x, y)
+#define XCAT_(x, y)   x ## y
+
+/*
+ * The powers of 41 modulo 257. We use exponents from 0 to 255, inclusive.
+ */
+static const s32 alpha_tab[] = {
+	  1,  41, 139,  45,  46,  87, 226,  14,  60, 147, 116, 130,
+	190,  80, 196,  69,   2,  82,  21,  90,  92, 174, 195,  28,
+	120,  37, 232,   3, 123, 160, 135, 138,   4, 164,  42, 180,
+	184,  91, 133,  56, 240,  74, 207,   6, 246,  63,  13,  19,
+	  8,  71,  84, 103, 111, 182,   9, 112, 223, 148, 157,  12,
+	235, 126,  26,  38,  16, 142, 168, 206, 222, 107,  18, 224,
+	189,  39,  57,  24, 213, 252,  52,  76,  32,  27,  79, 155,
+	187, 214,  36, 191, 121,  78, 114,  48, 169, 247, 104, 152,
+	 64,  54, 158,  53, 117, 171,  72, 125, 242, 156, 228,  96,
+	 81, 237, 208,  47, 128, 108,  59, 106, 234,  85, 144, 250,
+	227,  55, 199, 192, 162, 217, 159,  94, 256, 216, 118, 212,
+	211, 170,  31, 243, 197, 110, 141, 127,  67, 177,  61, 188,
+	255, 175, 236, 167, 165,  83,  62, 229, 137, 220,  25, 254,
+	134,  97, 122, 119, 253,  93, 215,  77,  73, 166, 124, 201,
+	 17, 183,  50, 251,  11, 194, 244, 238, 249, 186, 173, 154,
+	146,  75, 248, 145,  34, 109, 100, 245,  22, 131, 231, 219,
+	241, 115,  89,  51,  35, 150, 239,  33,  68, 218, 200, 233,
+	 44,   5, 205, 181, 225, 230, 178, 102,  70,  43, 221,  66,
+	136, 179, 143, 209,  88,  10, 153, 105, 193, 203,  99, 204,
+	140,  86, 185, 132,  15, 101,  29, 161, 176,  20,  49, 210,
+	129, 149, 198, 151,  23, 172, 113,   7,  30, 202,  58,  65,
+	 95,  40,  98, 163
+};
+
+/*
+ * Ranges:
+ *   REDS1: from -32768..98302 to -383..383
+ *   REDS2: from -2^31..2^31-1 to -32768..98302
+ */
+#define REDS1(x)    (((x) & 0xFF) - ((x) >> 8))
+#define REDS2(x)    (((x) & 0xFFFF) + ((x) >> 16))
+
+/*
+ * If, upon entry, the values of q[] are all in the -N..N range (where
+ * N >= 98302) then the new values of q[] are in the -2N..2N range.
+ *
+ * Since alpha_tab[v] <= 256, maximum allowed range is for N = 8388608.
+ */
+#define FFT_LOOP(rb, hk, as, id)   do { \
+		size_t u, v; \
+		s32 m = q[(rb)]; \
+		s32 n = q[(rb) + (hk)]; \
+		q[(rb)] = m + n; \
+		q[(rb) + (hk)] = m - n; \
+		u = v = 0; \
+		goto id; \
+		for (; u < (hk); u += 4, v += 4 * (as)) { \
+			s32 t; \
+			m = q[(rb) + u + 0]; \
+			n = q[(rb) + u + 0 + (hk)]; \
+			t = REDS2(n * alpha_tab[v + 0 * (as)]); \
+			q[(rb) + u + 0] = m + t; \
+			q[(rb) + u + 0 + (hk)] = m - t; \
+		id: \
+			m = q[(rb) + u + 1]; \
+			n = q[(rb) + u + 1 + (hk)]; \
+			t = REDS2(n * alpha_tab[v + 1 * (as)]); \
+			q[(rb) + u + 1] = m + t; \
+			q[(rb) + u + 1 + (hk)] = m - t; \
+			m = q[(rb) + u + 2]; \
+			n = q[(rb) + u + 2 + (hk)]; \
+			t = REDS2(n * alpha_tab[v + 2 * (as)]); \
+			q[(rb) + u + 2] = m + t; \
+			q[(rb) + u + 2 + (hk)] = m - t; \
+			m = q[(rb) + u + 3]; \
+			n = q[(rb) + u + 3 + (hk)]; \
+			t = REDS2(n * alpha_tab[v + 3 * (as)]); \
+			q[(rb) + u + 3] = m + t; \
+			q[(rb) + u + 3 + (hk)] = m - t; \
+		} \
+	} while (0)
+
+/*
+ * Output ranges:
+ *   d0:   min=    0   max= 1020
+ *   d1:   min=  -67   max= 4587
+ *   d2:   min=-4335   max= 4335
+ *   d3:   min=-4147   max=  507
+ *   d4:   min= -510   max=  510
+ *   d5:   min= -252   max= 4402
+ *   d6:   min=-4335   max= 4335
+ *   d7:   min=-4332   max=  322
+ */
+#define FFT8(xb, xs, d)   do { \
+		s32 x0 = x[(xb)]; \
+		s32 x1 = x[(xb) + (xs)]; \
+		s32 x2 = x[(xb) + 2 * (xs)]; \
+		s32 x3 = x[(xb) + 3 * (xs)]; \
+		s32 a0 = x0 + x2; \
+		s32 a1 = x0 + (x2 << 4); \
+		s32 a2 = x0 - x2; \
+		s32 a3 = x0 - (x2 << 4); \
+		s32 b0 = x1 + x3; \
+		s32 b1 = REDS1((x1 << 2) + (x3 << 6)); \
+		s32 b2 = (x1 << 4) - (x3 << 4); \
+		s32 b3 = REDS1((x1 << 6) + (x3 << 2)); \
+		d ## 0 = a0 + b0; \
+		d ## 1 = a1 + b1; \
+		d ## 2 = a2 + b2; \
+		d ## 3 = a3 + b3; \
+		d ## 4 = a0 - b0; \
+		d ## 5 = a1 - b1; \
+		d ## 6 = a2 - b2; \
+		d ## 7 = a3 - b3; \
+	} while (0)
+
+/*
+ * When k=16, we have alpha=2. Multiplication by alpha^i is then reduced
+ * to some shifting.
+ *
+ * Output: within -591471..591723
+ */
+#define FFT16(xb, xs, rb)   do { \
+		s32 d1_0, d1_1, d1_2, d1_3, d1_4, d1_5, d1_6, d1_7; \
+		s32 d2_0, d2_1, d2_2, d2_3, d2_4, d2_5, d2_6, d2_7; \
+		FFT8(xb, (xs) << 1, d1_); \
+		FFT8((xb) + (xs), (xs) << 1, d2_); \
+		q[(rb) +  0] = d1_0 + d2_0; \
+		q[(rb) +  1] = d1_1 + (d2_1 << 1); \
+		q[(rb) +  2] = d1_2 + (d2_2 << 2); \
+		q[(rb) +  3] = d1_3 + (d2_3 << 3); \
+		q[(rb) +  4] = d1_4 + (d2_4 << 4); \
+		q[(rb) +  5] = d1_5 + (d2_5 << 5); \
+		q[(rb) +  6] = d1_6 + (d2_6 << 6); \
+		q[(rb) +  7] = d1_7 + (d2_7 << 7); \
+		q[(rb) +  8] = d1_0 - d2_0; \
+		q[(rb) +  9] = d1_1 - (d2_1 << 1); \
+		q[(rb) + 10] = d1_2 - (d2_2 << 2); \
+		q[(rb) + 11] = d1_3 - (d2_3 << 3); \
+		q[(rb) + 12] = d1_4 - (d2_4 << 4); \
+		q[(rb) + 13] = d1_5 - (d2_5 << 5); \
+		q[(rb) + 14] = d1_6 - (d2_6 << 6); \
+		q[(rb) + 15] = d1_7 - (d2_7 << 7); \
+	} while (0)
+
+/*
+ * Output range: |q| <= 1183446
+ */
+#define FFT32(xb, xs, rb, id)   do { \
+		FFT16(xb, (xs) << 1, rb); \
+		FFT16((xb) + (xs), (xs) << 1, (rb) + 16); \
+		FFT_LOOP(rb, 16, 8, id); \
+	} while (0)
+
+/*
+ * Output range: |q| <= 2366892
+ */
+#define FFT64(xb, xs, rb, id)   do { \
+		FFT32(xb, (xs) << 1, rb, XCAT(id, a)); \
+		FFT32((xb) + (xs), (xs) << 1, (rb) + 32, XCAT(id, b)); \
+		FFT_LOOP(rb, 32, 4, id); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_SIMD
+
+static void
+fft32(unsigned char *x, size_t xs, s32 *q)
+{
+	size_t xd;
+
+	xd = xs << 1;
+	FFT16(0, xd, 0);
+	FFT16(xs, xd, 16);
+	FFT_LOOP(0, 16, 8, label_);
+}
+
+#define FFT128(xb, xs, rb, id)   do { \
+		fft32(x + (xb) + ((xs) * 0), (xs) << 2, &q[(rb) +  0]); \
+		fft32(x + (xb) + ((xs) * 2), (xs) << 2, &q[(rb) + 32]); \
+		FFT_LOOP(rb, 32, 4, XCAT(id, aa)); \
+		fft32(x + (xb) + ((xs) * 1), (xs) << 2, &q[(rb) + 64]); \
+		fft32(x + (xb) + ((xs) * 3), (xs) << 2, &q[(rb) + 96]); \
+		FFT_LOOP((rb) + 64, 32, 4, XCAT(id, ab)); \
+		FFT_LOOP(rb, 64, 2, XCAT(id, a)); \
+	} while (0)
+
+#else
+
+/*
+ * Output range: |q| <= 4733784
+ */
+#define FFT128(xb, xs, rb, id)   do { \
+		FFT64(xb, (xs) << 1, rb, XCAT(id, a)); \
+		FFT64((xb) + (xs), (xs) << 1, (rb) + 64, XCAT(id, b)); \
+		FFT_LOOP(rb, 64, 2, id); \
+	} while (0)
+
+#endif
+
+/*
+ * For SIMD-384 / SIMD-512, the fully unrolled FFT yields a compression
+ * function which does not fit in the 32 kB L1 cache of a typical x86
+ * Intel. We therefore add a function call layer at the FFT64 level.
+ */
+
+static void
+fft64(unsigned char *x, size_t xs, s32 *q)
+{
+	size_t xd;
+
+	xd = xs << 1;
+	FFT32(0, xd, 0, label_a);
+	FFT32(xs, xd, 32, label_b);
+	FFT_LOOP(0, 32, 4, label_);
+}
+
+/*
+ * Output range: |q| <= 9467568
+ */
+#define FFT256(xb, xs, rb, id)   do { \
+		fft64(x + (xb) + ((xs) * 0), (xs) << 2, &q[(rb) +   0]); \
+		fft64(x + (xb) + ((xs) * 2), (xs) << 2, &q[(rb) +  64]); \
+		FFT_LOOP(rb, 64, 2, XCAT(id, aa)); \
+		fft64(x + (xb) + ((xs) * 1), (xs) << 2, &q[(rb) + 128]); \
+		fft64(x + (xb) + ((xs) * 3), (xs) << 2, &q[(rb) + 192]); \
+		FFT_LOOP((rb) + 128, 64, 2, XCAT(id, ab)); \
+		FFT_LOOP(rb, 128, 1, XCAT(id, a)); \
+	} while (0)
+
+/*
+ * alpha^(127*i) mod 257
+ */
+static const unsigned short yoff_s_n[] = {
+	  1,  98,  95,  58,  30, 113,  23, 198, 129,  49, 176,  29,
+	 15, 185, 140,  99, 193, 153,  88, 143, 136, 221,  70, 178,
+	225, 205,  44, 200,  68, 239,  35,  89, 241, 231,  22, 100,
+	 34, 248, 146, 173, 249, 244,  11,  50,  17, 124,  73, 215,
+	253, 122, 134,  25, 137,  62, 165, 236, 255,  61,  67, 141,
+	197,  31, 211, 118, 256, 159, 162, 199, 227, 144, 234,  59,
+	128, 208,  81, 228, 242,  72, 117, 158,  64, 104, 169, 114,
+	121,  36, 187,  79,  32,  52, 213,  57, 189,  18, 222, 168,
+	 16,  26, 235, 157, 223,   9, 111,  84,   8,  13, 246, 207,
+	240, 133, 184,  42,   4, 135, 123, 232, 120, 195,  92,  21,
+	  2, 196, 190, 116,  60, 226,  46, 139
+};
+
+/*
+ * alpha^(127*i) + alpha^(125*i) mod 257
+ */
+static const unsigned short yoff_s_f[] = {
+	  2, 156, 118, 107,  45, 212, 111, 162,  97, 249, 211,   3,
+	 49, 101, 151, 223, 189, 178, 253, 204,  76,  82, 232,  65,
+	 96, 176, 161,  47, 189,  61, 248, 107,   0, 131, 133, 113,
+	 17,  33,  12, 111, 251, 103,  57, 148,  47,  65, 249, 143,
+	189,   8, 204, 230, 205, 151, 187, 227, 247, 111, 140,   6,
+	 77,  10,  21, 149, 255, 101, 139, 150, 212,  45, 146,  95,
+	160,   8,  46, 254, 208, 156, 106,  34,  68,  79,   4,  53,
+	181, 175,  25, 192, 161,  81,  96, 210,  68, 196,   9, 150,
+	  0, 126, 124, 144, 240, 224, 245, 146,   6, 154, 200, 109,
+	210, 192,   8, 114,  68, 249,  53,  27,  52, 106,  70,  30,
+	 10, 146, 117, 251, 180, 247, 236, 108
+};
+
+/*
+ * beta^(255*i) mod 257
+ */
+static const unsigned short yoff_b_n[] = {
+	  1, 163,  98,  40,  95,  65,  58, 202,  30,   7, 113, 172,
+	 23, 151, 198, 149, 129, 210,  49,  20, 176, 161,  29, 101,
+	 15, 132, 185,  86, 140, 204,  99, 203, 193, 105, 153,  10,
+	 88, 209, 143, 179, 136,  66, 221,  43,  70, 102, 178, 230,
+	225, 181, 205,   5,  44, 233, 200, 218,  68,  33, 239, 150,
+	 35,  51,  89, 115, 241, 219, 231, 131,  22, 245, 100, 109,
+	 34, 145, 248,  75, 146, 154, 173, 186, 249, 238, 244, 194,
+	 11, 251,  50, 183,  17, 201, 124, 166,  73,  77, 215,  93,
+	253, 119, 122,  97, 134, 254,  25, 220, 137, 229,  62,  83,
+	165, 167, 236, 175, 255, 188,  61, 177,  67, 127, 141, 110,
+	197, 243,  31, 170, 211, 212, 118, 216, 256,  94, 159, 217,
+	162, 192, 199,  55, 227, 250, 144,  85, 234, 106,  59, 108,
+	128,  47, 208, 237,  81,  96, 228, 156, 242, 125,  72, 171,
+	117,  53, 158,  54,  64, 152, 104, 247, 169,  48, 114,  78,
+	121, 191,  36, 214, 187, 155,  79,  27,  32,  76,  52, 252,
+	213,  24,  57,  39, 189, 224,  18, 107, 222, 206, 168, 142,
+	 16,  38,  26, 126, 235,  12, 157, 148, 223, 112,   9, 182,
+	111, 103,  84,  71,   8,  19,  13,  63, 246,   6, 207,  74,
+	240,  56, 133,  91, 184, 180,  42, 164,   4, 138, 135, 160,
+	123,   3, 232,  37, 120,  28, 195, 174,  92,  90,  21,  82,
+	  2,  69, 196,  80, 190, 130, 116, 147,  60,  14, 226,  87,
+	 46,  45, 139,  41
+};
+
+/*
+ * beta^(255*i) + beta^(253*i) mod 257
+ */
+static const unsigned short yoff_b_f[] = {
+	  2, 203, 156,  47, 118, 214, 107, 106,  45,  93, 212,  20,
+	111,  73, 162, 251,  97, 215, 249,  53, 211,  19,   3,  89,
+	 49, 207, 101,  67, 151, 130, 223,  23, 189, 202, 178, 239,
+	253, 127, 204,  49,  76, 236,  82, 137, 232, 157,  65,  79,
+	 96, 161, 176, 130, 161,  30,  47,   9, 189, 247,  61, 226,
+	248,  90, 107,  64,   0,  88, 131, 243, 133,  59, 113, 115,
+	 17, 236,  33, 213,  12, 191, 111,  19, 251,  61, 103, 208,
+	 57,  35, 148, 248,  47, 116,  65, 119, 249, 178, 143,  40,
+	189, 129,   8, 163, 204, 227, 230, 196, 205, 122, 151,  45,
+	187,  19, 227,  72, 247, 125, 111, 121, 140, 220,   6, 107,
+	 77,  69,  10, 101,  21,  65, 149, 171, 255,  54, 101, 210,
+	139,  43, 150, 151, 212, 164,  45, 237, 146, 184,  95,   6,
+	160,  42,   8, 204,  46, 238, 254, 168, 208,  50, 156, 190,
+	106, 127,  34, 234,  68,  55,  79,  18,   4, 130,  53, 208,
+	181,  21, 175, 120,  25, 100, 192, 178, 161,  96,  81, 127,
+	 96, 227, 210, 248,  68,  10, 196,  31,   9, 167, 150, 193,
+	  0, 169, 126,  14, 124, 198, 144, 142, 240,  21, 224,  44,
+	245,  66, 146, 238,   6, 196, 154,  49, 200, 222, 109,   9,
+	210, 141, 192, 138,   8,  79, 114, 217,  68, 128, 249,  94,
+	 53,  30,  27,  61,  52, 135, 106, 212,  70, 238,  30, 185,
+	 10, 132, 146, 136, 117,  37, 251, 150, 180, 188, 247, 156,
+	236, 192, 108,  86
+};
+
+#define INNER(l, h, mm)   (((u32)((l) * (mm)) & 0xFFFFU) \
+                          + ((u32)((h) * (mm)) << 16))
+
+#define W_SMALL(sb, o1, o2, mm) \
+	(INNER(q[8 * (sb) + 2 * 0 + o1], q[8 * (sb) + 2 * 0 + o2], mm), \
+	 INNER(q[8 * (sb) + 2 * 1 + o1], q[8 * (sb) + 2 * 1 + o2], mm), \
+	 INNER(q[8 * (sb) + 2 * 2 + o1], q[8 * (sb) + 2 * 2 + o2], mm), \
+	 INNER(q[8 * (sb) + 2 * 3 + o1], q[8 * (sb) + 2 * 3 + o2], mm)
+
+#define WS_0_0   W_SMALL( 4,    0,    1, 185)
+#define WS_0_1   W_SMALL( 6,    0,    1, 185)
+#define WS_0_2   W_SMALL( 0,    0,    1, 185)
+#define WS_0_3   W_SMALL( 2,    0,    1, 185)
+#define WS_0_4   W_SMALL( 7,    0,    1, 185)
+#define WS_0_5   W_SMALL( 5,    0,    1, 185)
+#define WS_0_6   W_SMALL( 3,    0,    1, 185)
+#define WS_0_7   W_SMALL( 1,    0,    1, 185)
+#define WS_1_0   W_SMALL(15,    0,    1, 185)
+#define WS_1_1   W_SMALL(11,    0,    1, 185)
+#define WS_1_2   W_SMALL(12,    0,    1, 185)
+#define WS_1_3   W_SMALL( 8,    0,    1, 185)
+#define WS_1_4   W_SMALL( 9,    0,    1, 185)
+#define WS_1_5   W_SMALL(13,    0,    1, 185)
+#define WS_1_6   W_SMALL(10,    0,    1, 185)
+#define WS_1_7   W_SMALL(14,    0,    1, 185)
+#define WS_2_0   W_SMALL(17, -128,  -64, 233)
+#define WS_2_1   W_SMALL(18, -128,  -64, 233)
+#define WS_2_2   W_SMALL(23, -128,  -64, 233)
+#define WS_2_3   W_SMALL(20, -128,  -64, 233)
+#define WS_2_4   W_SMALL(22, -128,  -64, 233)
+#define WS_2_5   W_SMALL(21, -128,  -64, 233)
+#define WS_2_6   W_SMALL(16, -128,  -64, 233)
+#define WS_2_7   W_SMALL(19, -128,  -64, 233)
+#define WS_3_0   W_SMALL(30, -191, -127, 233)
+#define WS_3_1   W_SMALL(24, -191, -127, 233)
+#define WS_3_2   W_SMALL(25, -191, -127, 233)
+#define WS_3_3   W_SMALL(31, -191, -127, 233)
+#define WS_3_4   W_SMALL(27, -191, -127, 233)
+#define WS_3_5   W_SMALL(29, -191, -127, 233)
+#define WS_3_6   W_SMALL(28, -191, -127, 233)
+#define WS_3_7   W_SMALL(26, -191, -127, 233)
+
+#define W_BIG(sb, o1, o2, mm) \
+	(INNER(q[16 * (sb) + 2 * 0 + o1], q[16 * (sb) + 2 * 0 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 1 + o1], q[16 * (sb) + 2 * 1 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 2 + o1], q[16 * (sb) + 2 * 2 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 3 + o1], q[16 * (sb) + 2 * 3 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 4 + o1], q[16 * (sb) + 2 * 4 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 5 + o1], q[16 * (sb) + 2 * 5 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 6 + o1], q[16 * (sb) + 2 * 6 + o2], mm), \
+	 INNER(q[16 * (sb) + 2 * 7 + o1], q[16 * (sb) + 2 * 7 + o2], mm)
+
+#define WB_0_0   W_BIG( 4,    0,    1, 185)
+#define WB_0_1   W_BIG( 6,    0,    1, 185)
+#define WB_0_2   W_BIG( 0,    0,    1, 185)
+#define WB_0_3   W_BIG( 2,    0,    1, 185)
+#define WB_0_4   W_BIG( 7,    0,    1, 185)
+#define WB_0_5   W_BIG( 5,    0,    1, 185)
+#define WB_0_6   W_BIG( 3,    0,    1, 185)
+#define WB_0_7   W_BIG( 1,    0,    1, 185)
+#define WB_1_0   W_BIG(15,    0,    1, 185)
+#define WB_1_1   W_BIG(11,    0,    1, 185)
+#define WB_1_2   W_BIG(12,    0,    1, 185)
+#define WB_1_3   W_BIG( 8,    0,    1, 185)
+#define WB_1_4   W_BIG( 9,    0,    1, 185)
+#define WB_1_5   W_BIG(13,    0,    1, 185)
+#define WB_1_6   W_BIG(10,    0,    1, 185)
+#define WB_1_7   W_BIG(14,    0,    1, 185)
+#define WB_2_0   W_BIG(17, -256, -128, 233)
+#define WB_2_1   W_BIG(18, -256, -128, 233)
+#define WB_2_2   W_BIG(23, -256, -128, 233)
+#define WB_2_3   W_BIG(20, -256, -128, 233)
+#define WB_2_4   W_BIG(22, -256, -128, 233)
+#define WB_2_5   W_BIG(21, -256, -128, 233)
+#define WB_2_6   W_BIG(16, -256, -128, 233)
+#define WB_2_7   W_BIG(19, -256, -128, 233)
+#define WB_3_0   W_BIG(30, -383, -255, 233)
+#define WB_3_1   W_BIG(24, -383, -255, 233)
+#define WB_3_2   W_BIG(25, -383, -255, 233)
+#define WB_3_3   W_BIG(31, -383, -255, 233)
+#define WB_3_4   W_BIG(27, -383, -255, 233)
+#define WB_3_5   W_BIG(29, -383, -255, 233)
+#define WB_3_6   W_BIG(28, -383, -255, 233)
+#define WB_3_7   W_BIG(26, -383, -255, 233)
+
+#define IF(x, y, z)    ((((y) ^ (z)) & (x)) ^ (z))
+#define MAJ(x, y, z)   (((x) & (y)) | (((x) | (y)) & (z)))
+
+#define PP4_0_0   1
+#define PP4_0_1   0
+#define PP4_0_2   3
+#define PP4_0_3   2
+#define PP4_1_0   2
+#define PP4_1_1   3
+#define PP4_1_2   0
+#define PP4_1_3   1
+#define PP4_2_0   3
+#define PP4_2_1   2
+#define PP4_2_2   1
+#define PP4_2_3   0
+
+#define PP8_0_0   1
+#define PP8_0_1   0
+#define PP8_0_2   3
+#define PP8_0_3   2
+#define PP8_0_4   5
+#define PP8_0_5   4
+#define PP8_0_6   7
+#define PP8_0_7   6
+
+#define PP8_1_0   6
+#define PP8_1_1   7
+#define PP8_1_2   4
+#define PP8_1_3   5
+#define PP8_1_4   2
+#define PP8_1_5   3
+#define PP8_1_6   0
+#define PP8_1_7   1
+
+#define PP8_2_0   2
+#define PP8_2_1   3
+#define PP8_2_2   0
+#define PP8_2_3   1
+#define PP8_2_4   6
+#define PP8_2_5   7
+#define PP8_2_6   4
+#define PP8_2_7   5
+
+#define PP8_3_0   3
+#define PP8_3_1   2
+#define PP8_3_2   1
+#define PP8_3_3   0
+#define PP8_3_4   7
+#define PP8_3_5   6
+#define PP8_3_6   5
+#define PP8_3_7   4
+
+#define PP8_4_0   5
+#define PP8_4_1   4
+#define PP8_4_2   7
+#define PP8_4_3   6
+#define PP8_4_4   1
+#define PP8_4_5   0
+#define PP8_4_6   3
+#define PP8_4_7   2
+
+#define PP8_5_0   7
+#define PP8_5_1   6
+#define PP8_5_2   5
+#define PP8_5_3   4
+#define PP8_5_4   3
+#define PP8_5_5   2
+#define PP8_5_6   1
+#define PP8_5_7   0
+
+#define PP8_6_0   4
+#define PP8_6_1   5
+#define PP8_6_2   6
+#define PP8_6_3   7
+#define PP8_6_4   0
+#define PP8_6_5   1
+#define PP8_6_6   2
+#define PP8_6_7   3
+
+#if SPH_SIMD_NOCOPY
+
+#define DECL_STATE_SMALL
+#define READ_STATE_SMALL(sc)
+#define WRITE_STATE_SMALL(sc)
+#define DECL_STATE_BIG
+#define READ_STATE_BIG(sc)
+#define WRITE_STATE_BIG(sc)
+
+#else
+
+#define DECL_STATE_SMALL   \
+	u32 A0, A1, A2, A3, B0, B1, B2, B3, C0, C1, C2, C3, D0, D1, D2, D3;
+
+#define READ_STATE_SMALL(sc)   do { \
+		A0 = (sc)->state[ 0]; \
+		A1 = (sc)->state[ 1]; \
+		A2 = (sc)->state[ 2]; \
+		A3 = (sc)->state[ 3]; \
+		B0 = (sc)->state[ 4]; \
+		B1 = (sc)->state[ 5]; \
+		B2 = (sc)->state[ 6]; \
+		B3 = (sc)->state[ 7]; \
+		C0 = (sc)->state[ 8]; \
+		C1 = (sc)->state[ 9]; \
+		C2 = (sc)->state[10]; \
+		C3 = (sc)->state[11]; \
+		D0 = (sc)->state[12]; \
+		D1 = (sc)->state[13]; \
+		D2 = (sc)->state[14]; \
+		D3 = (sc)->state[15]; \
+	} while (0)
+
+#define WRITE_STATE_SMALL(sc)   do { \
+		(sc)->state[ 0] = A0; \
+		(sc)->state[ 1] = A1; \
+		(sc)->state[ 2] = A2; \
+		(sc)->state[ 3] = A3; \
+		(sc)->state[ 4] = B0; \
+		(sc)->state[ 5] = B1; \
+		(sc)->state[ 6] = B2; \
+		(sc)->state[ 7] = B3; \
+		(sc)->state[ 8] = C0; \
+		(sc)->state[ 9] = C1; \
+		(sc)->state[10] = C2; \
+		(sc)->state[11] = C3; \
+		(sc)->state[12] = D0; \
+		(sc)->state[13] = D1; \
+		(sc)->state[14] = D2; \
+		(sc)->state[15] = D3; \
+	} while (0)
+
+#define DECL_STATE_BIG   \
+	u32 A0, A1, A2, A3, A4, A5, A6, A7; \
+	u32 B0, B1, B2, B3, B4, B5, B6, B7; \
+	u32 C0, C1, C2, C3, C4, C5, C6, C7; \
+	u32 D0, D1, D2, D3, D4, D5, D6, D7;
+
+#define READ_STATE_BIG(sc)   do { \
+		A0 = (sc)->state[ 0]; \
+		A1 = (sc)->state[ 1]; \
+		A2 = (sc)->state[ 2]; \
+		A3 = (sc)->state[ 3]; \
+		A4 = (sc)->state[ 4]; \
+		A5 = (sc)->state[ 5]; \
+		A6 = (sc)->state[ 6]; \
+		A7 = (sc)->state[ 7]; \
+		B0 = (sc)->state[ 8]; \
+		B1 = (sc)->state[ 9]; \
+		B2 = (sc)->state[10]; \
+		B3 = (sc)->state[11]; \
+		B4 = (sc)->state[12]; \
+		B5 = (sc)->state[13]; \
+		B6 = (sc)->state[14]; \
+		B7 = (sc)->state[15]; \
+		C0 = (sc)->state[16]; \
+		C1 = (sc)->state[17]; \
+		C2 = (sc)->state[18]; \
+		C3 = (sc)->state[19]; \
+		C4 = (sc)->state[20]; \
+		C5 = (sc)->state[21]; \
+		C6 = (sc)->state[22]; \
+		C7 = (sc)->state[23]; \
+		D0 = (sc)->state[24]; \
+		D1 = (sc)->state[25]; \
+		D2 = (sc)->state[26]; \
+		D3 = (sc)->state[27]; \
+		D4 = (sc)->state[28]; \
+		D5 = (sc)->state[29]; \
+		D6 = (sc)->state[30]; \
+		D7 = (sc)->state[31]; \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		(sc)->state[ 0] = A0; \
+		(sc)->state[ 1] = A1; \
+		(sc)->state[ 2] = A2; \
+		(sc)->state[ 3] = A3; \
+		(sc)->state[ 4] = A4; \
+		(sc)->state[ 5] = A5; \
+		(sc)->state[ 6] = A6; \
+		(sc)->state[ 7] = A7; \
+		(sc)->state[ 8] = B0; \
+		(sc)->state[ 9] = B1; \
+		(sc)->state[10] = B2; \
+		(sc)->state[11] = B3; \
+		(sc)->state[12] = B4; \
+		(sc)->state[13] = B5; \
+		(sc)->state[14] = B6; \
+		(sc)->state[15] = B7; \
+		(sc)->state[16] = C0; \
+		(sc)->state[17] = C1; \
+		(sc)->state[18] = C2; \
+		(sc)->state[19] = C3; \
+		(sc)->state[20] = C4; \
+		(sc)->state[21] = C5; \
+		(sc)->state[22] = C6; \
+		(sc)->state[23] = C7; \
+		(sc)->state[24] = D0; \
+		(sc)->state[25] = D1; \
+		(sc)->state[26] = D2; \
+		(sc)->state[27] = D3; \
+		(sc)->state[28] = D4; \
+		(sc)->state[29] = D5; \
+		(sc)->state[30] = D6; \
+		(sc)->state[31] = D7; \
+	} while (0)
+
+#endif
+
+#define STEP_ELT(n, w, fun, s, ppb)   do { \
+		u32 tt = T32(D ## n + (w) + fun(A ## n, B ## n, C ## n)); \
+		A ## n = T32(ROL32(tt, s) + XCAT(tA, XCAT(ppb, n))); \
+		D ## n = C ## n; \
+		C ## n = B ## n; \
+		B ## n = tA ## n; \
+	} while (0)
+
+#define STEP_SMALL(w0, w1, w2, w3, fun, r, s, pp4b)   do { \
+		u32 tA0 = ROL32(A0, r); \
+		u32 tA1 = ROL32(A1, r); \
+		u32 tA2 = ROL32(A2, r); \
+		u32 tA3 = ROL32(A3, r); \
+		STEP_ELT(0, w0, fun, s, pp4b); \
+		STEP_ELT(1, w1, fun, s, pp4b); \
+		STEP_ELT(2, w2, fun, s, pp4b); \
+		STEP_ELT(3, w3, fun, s, pp4b); \
+	} while (0)
+
+#define STEP_BIG(w0, w1, w2, w3, w4, w5, w6, w7, fun, r, s, pp8b)   do { \
+		u32 tA0 = ROL32(A0, r); \
+		u32 tA1 = ROL32(A1, r); \
+		u32 tA2 = ROL32(A2, r); \
+		u32 tA3 = ROL32(A3, r); \
+		u32 tA4 = ROL32(A4, r); \
+		u32 tA5 = ROL32(A5, r); \
+		u32 tA6 = ROL32(A6, r); \
+		u32 tA7 = ROL32(A7, r); \
+		STEP_ELT(0, w0, fun, s, pp8b); \
+		STEP_ELT(1, w1, fun, s, pp8b); \
+		STEP_ELT(2, w2, fun, s, pp8b); \
+		STEP_ELT(3, w3, fun, s, pp8b); \
+		STEP_ELT(4, w4, fun, s, pp8b); \
+		STEP_ELT(5, w5, fun, s, pp8b); \
+		STEP_ELT(6, w6, fun, s, pp8b); \
+		STEP_ELT(7, w7, fun, s, pp8b); \
+	} while (0)
+
+#define M3_0_0   0_
+#define M3_1_0   1_
+#define M3_2_0   2_
+#define M3_3_0   0_
+#define M3_4_0   1_
+#define M3_5_0   2_
+#define M3_6_0   0_
+#define M3_7_0   1_
+
+#define M3_0_1   1_
+#define M3_1_1   2_
+#define M3_2_1   0_
+#define M3_3_1   1_
+#define M3_4_1   2_
+#define M3_5_1   0_
+#define M3_6_1   1_
+#define M3_7_1   2_
+
+#define M3_0_2   2_
+#define M3_1_2   0_
+#define M3_2_2   1_
+#define M3_3_2   2_
+#define M3_4_2   0_
+#define M3_5_2   1_
+#define M3_6_2   2_
+#define M3_7_2   0_
+
+#define STEP_SMALL_(w, fun, r, s, pp4b)   STEP_SMALL w, fun, r, s, pp4b)
+
+#define ONE_ROUND_SMALL(ri, isp, p0, p1, p2, p3)   do { \
+		STEP_SMALL_(WS_ ## ri ## 0, \
+			IF,  p0, p1, XCAT(PP4_, M3_0_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 1, \
+			IF,  p1, p2, XCAT(PP4_, M3_1_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 2, \
+			IF,  p2, p3, XCAT(PP4_, M3_2_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 3, \
+			IF,  p3, p0, XCAT(PP4_, M3_3_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 4, \
+			MAJ, p0, p1, XCAT(PP4_, M3_4_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 5, \
+			MAJ, p1, p2, XCAT(PP4_, M3_5_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 6, \
+			MAJ, p2, p3, XCAT(PP4_, M3_6_ ## isp)); \
+		STEP_SMALL_(WS_ ## ri ## 7, \
+			MAJ, p3, p0, XCAT(PP4_, M3_7_ ## isp)); \
+	} while (0)
+
+#define M7_0_0   0_
+#define M7_1_0   1_
+#define M7_2_0   2_
+#define M7_3_0   3_
+#define M7_4_0   4_
+#define M7_5_0   5_
+#define M7_6_0   6_
+#define M7_7_0   0_
+
+#define M7_0_1   1_
+#define M7_1_1   2_
+#define M7_2_1   3_
+#define M7_3_1   4_
+#define M7_4_1   5_
+#define M7_5_1   6_
+#define M7_6_1   0_
+#define M7_7_1   1_
+
+#define M7_0_2   2_
+#define M7_1_2   3_
+#define M7_2_2   4_
+#define M7_3_2   5_
+#define M7_4_2   6_
+#define M7_5_2   0_
+#define M7_6_2   1_
+#define M7_7_2   2_
+
+#define M7_0_3   3_
+#define M7_1_3   4_
+#define M7_2_3   5_
+#define M7_3_3   6_
+#define M7_4_3   0_
+#define M7_5_3   1_
+#define M7_6_3   2_
+#define M7_7_3   3_
+
+#define STEP_BIG_(w, fun, r, s, pp8b)   STEP_BIG w, fun, r, s, pp8b)
+
+#define ONE_ROUND_BIG(ri, isp, p0, p1, p2, p3)   do { \
+		STEP_BIG_(WB_ ## ri ## 0, \
+			IF,  p0, p1, XCAT(PP8_, M7_0_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 1, \
+			IF,  p1, p2, XCAT(PP8_, M7_1_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 2, \
+			IF,  p2, p3, XCAT(PP8_, M7_2_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 3, \
+			IF,  p3, p0, XCAT(PP8_, M7_3_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 4, \
+			MAJ, p0, p1, XCAT(PP8_, M7_4_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 5, \
+			MAJ, p1, p2, XCAT(PP8_, M7_5_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 6, \
+			MAJ, p2, p3, XCAT(PP8_, M7_6_ ## isp)); \
+		STEP_BIG_(WB_ ## ri ## 7, \
+			MAJ, p3, p0, XCAT(PP8_, M7_7_ ## isp)); \
+	} while (0)
+
+#if SPH_SMALL_FOOTPRINT_SIMD
+
+#define A0   state[ 0]
+#define A1   state[ 1]
+#define A2   state[ 2]
+#define A3   state[ 3]
+#define B0   state[ 4]
+#define B1   state[ 5]
+#define B2   state[ 6]
+#define B3   state[ 7]
+#define C0   state[ 8]
+#define C1   state[ 9]
+#define C2   state[10]
+#define C3   state[11]
+#define D0   state[12]
+#define D1   state[13]
+#define D2   state[14]
+#define D3   state[15]
+
+#define STEP2_ELT(n, w, fun, s, ppb)   do { \
+		u32 tt = T32(D ## n + (w) + fun(A ## n, B ## n, C ## n)); \
+		A ## n = T32(ROL32(tt, s) + tA[(ppb) ^ n]); \
+		D ## n = C ## n; \
+		C ## n = B ## n; \
+		B ## n = tA[n]; \
+	} while (0)
+
+#define STEP2_SMALL(w0, w1, w2, w3, fun, r, s, pp4b)   do { \
+		u32 tA[4]; \
+		tA[0] = ROL32(A0, r); \
+		tA[1] = ROL32(A1, r); \
+		tA[2] = ROL32(A2, r); \
+		tA[3] = ROL32(A3, r); \
+		STEP2_ELT(0, w0, fun, s, pp4b); \
+		STEP2_ELT(1, w1, fun, s, pp4b); \
+		STEP2_ELT(2, w2, fun, s, pp4b); \
+		STEP2_ELT(3, w3, fun, s, pp4b); \
+	} while (0)
+
+static void
+one_round_small(u32 *state, u32 *w, int isp, int p0, int p1, int p2, int p3)
+{
+	static const int pp4k[] = { 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2 };
+
+	STEP2_SMALL(w[ 0], w[ 1], w[ 2], w[ 3], IF,  p0, p1, pp4k[isp + 0]);
+	STEP2_SMALL(w[ 4], w[ 5], w[ 6], w[ 7], IF,  p1, p2, pp4k[isp + 1]);
+	STEP2_SMALL(w[ 8], w[ 9], w[10], w[11], IF,  p2, p3, pp4k[isp + 2]);
+	STEP2_SMALL(w[12], w[13], w[14], w[15], IF,  p3, p0, pp4k[isp + 3]);
+	STEP2_SMALL(w[16], w[17], w[18], w[19], MAJ, p0, p1, pp4k[isp + 4]);
+	STEP2_SMALL(w[20], w[21], w[22], w[23], MAJ, p1, p2, pp4k[isp + 5]);
+	STEP2_SMALL(w[24], w[25], w[26], w[27], MAJ, p2, p3, pp4k[isp + 6]);
+	STEP2_SMALL(w[28], w[29], w[30], w[31], MAJ, p3, p0, pp4k[isp + 7]);
+}
+
+static void
+compress_small(sph_simd_small_context *sc, int last)
+{
+	unsigned char *x;
+	s32 q[128];
+	int i;
+	u32 w[32];
+	u32 state[16];
+	size_t u;
+
+	static const size_t wsp[32] = {
+		 4 << 3,  6 << 3,  0 << 3,  2 << 3,
+		 7 << 3,  5 << 3,  3 << 3,  1 << 3,
+		15 << 3, 11 << 3, 12 << 3,  8 << 3,
+		 9 << 3, 13 << 3, 10 << 3, 14 << 3,
+		17 << 3, 18 << 3, 23 << 3, 20 << 3,
+		22 << 3, 21 << 3, 16 << 3, 19 << 3,
+		30 << 3, 24 << 3, 25 << 3, 31 << 3,
+		27 << 3, 29 << 3, 28 << 3, 26 << 3
+	};
+
+	x = sc->buf;
+	FFT128(0, 1, 0, ll);
+	if (last) {
+		for (i = 0; i < 128; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_s_f[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	} else {
+		for (i = 0; i < 128; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_s_n[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	}
+
+	for (i = 0; i < 16; i += 4) {
+		state[i + 0] = sc->state[i + 0]
+			^ sph_dec32le_aligned(x + 4 * (i + 0));
+		state[i + 1] = sc->state[i + 1]
+			^ sph_dec32le_aligned(x + 4 * (i + 1));
+		state[i + 2] = sc->state[i + 2]
+			^ sph_dec32le_aligned(x + 4 * (i + 2));
+		state[i + 3] = sc->state[i + 3]
+			^ sph_dec32le_aligned(x + 4 * (i + 3));
+	}
+
+#define WSREAD(sb, o1, o2, mm)   do { \
+		for (u = 0; u < 32; u += 4) { \
+			size_t v = wsp[(u >> 2) + (sb)]; \
+			w[u + 0] = INNER(q[v + 2 * 0 + (o1)], \
+				q[v + 2 * 0 + (o2)], mm); \
+			w[u + 1] = INNER(q[v + 2 * 1 + (o1)], \
+				q[v + 2 * 1 + (o2)], mm); \
+			w[u + 2] = INNER(q[v + 2 * 2 + (o1)], \
+				q[v + 2 * 2 + (o2)], mm); \
+			w[u + 3] = INNER(q[v + 2 * 3 + (o1)], \
+				q[v + 2 * 3 + (o2)], mm); \
+		} \
+	} while (0)
+
+	WSREAD( 0,    0,    1, 185);
+	one_round_small(state, w, 0,  3, 23, 17, 27);
+	WSREAD( 8,    0,    1, 185);
+	one_round_small(state, w, 2, 28, 19, 22,  7);
+	WSREAD(16, -128,  -64, 233);
+	one_round_small(state, w, 1, 29,  9, 15,  5);
+	WSREAD(24, -191, -127, 233);
+	one_round_small(state, w, 0,  4, 13, 10, 25);
+
+#undef WSREAD
+
+	STEP_SMALL(sc->state[ 0], sc->state[ 1], sc->state[ 2], sc->state[ 3],
+		IF,  4, 13, PP4_2_);
+	STEP_SMALL(sc->state[ 4], sc->state[ 5], sc->state[ 6], sc->state[ 7],
+		IF, 13, 10, PP4_0_);
+	STEP_SMALL(sc->state[ 8], sc->state[ 9], sc->state[10], sc->state[11],
+		IF, 10, 25, PP4_1_);
+	STEP_SMALL(sc->state[12], sc->state[13], sc->state[14], sc->state[15],
+		IF, 25,  4, PP4_2_);
+
+	memcpy(sc->state, state, sizeof state);
+}
+
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef B0
+#undef B1
+#undef B2
+#undef B3
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef D0
+#undef D1
+#undef D2
+#undef D3
+
+#else
+
+#if SPH_SIMD_NOCOPY
+#define A0   (sc->state[ 0])
+#define A1   (sc->state[ 1])
+#define A2   (sc->state[ 2])
+#define A3   (sc->state[ 3])
+#define B0   (sc->state[ 4])
+#define B1   (sc->state[ 5])
+#define B2   (sc->state[ 6])
+#define B3   (sc->state[ 7])
+#define C0   (sc->state[ 8])
+#define C1   (sc->state[ 9])
+#define C2   (sc->state[10])
+#define C3   (sc->state[11])
+#define D0   (sc->state[12])
+#define D1   (sc->state[13])
+#define D2   (sc->state[14])
+#define D3   (sc->state[15])
+#endif
+
+static void
+compress_small(sph_simd_small_context *sc, int last)
+{
+	unsigned char *x;
+	s32 q[128];
+	int i;
+	DECL_STATE_SMALL
+#if SPH_SIMD_NOCOPY
+	sph_u32 saved[16];
+#endif
+
+#if SPH_SIMD_NOCOPY
+	memcpy(saved, sc->state, sizeof saved);
+#endif
+	x = sc->buf;
+	FFT128(0, 1, 0, ll);
+	if (last) {
+		for (i = 0; i < 128; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_s_f[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	} else {
+		for (i = 0; i < 128; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_s_n[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	}
+	READ_STATE_SMALL(sc);
+	A0 ^= sph_dec32le_aligned(x +  0);
+	A1 ^= sph_dec32le_aligned(x +  4);
+	A2 ^= sph_dec32le_aligned(x +  8);
+	A3 ^= sph_dec32le_aligned(x + 12);
+	B0 ^= sph_dec32le_aligned(x + 16);
+	B1 ^= sph_dec32le_aligned(x + 20);
+	B2 ^= sph_dec32le_aligned(x + 24);
+	B3 ^= sph_dec32le_aligned(x + 28);
+	C0 ^= sph_dec32le_aligned(x + 32);
+	C1 ^= sph_dec32le_aligned(x + 36);
+	C2 ^= sph_dec32le_aligned(x + 40);
+	C3 ^= sph_dec32le_aligned(x + 44);
+	D0 ^= sph_dec32le_aligned(x + 48);
+	D1 ^= sph_dec32le_aligned(x + 52);
+	D2 ^= sph_dec32le_aligned(x + 56);
+	D3 ^= sph_dec32le_aligned(x + 60);
+	ONE_ROUND_SMALL(0_, 0,  3, 23, 17, 27);
+	ONE_ROUND_SMALL(1_, 2, 28, 19, 22,  7);
+	ONE_ROUND_SMALL(2_, 1, 29,  9, 15,  5);
+	ONE_ROUND_SMALL(3_, 0,  4, 13, 10, 25);
+#if SPH_SIMD_NOCOPY
+	STEP_SMALL(saved[ 0], saved[ 1], saved[ 2], saved[ 3],
+		IF,  4, 13, PP4_2_);
+	STEP_SMALL(saved[ 4], saved[ 5], saved[ 6], saved[ 7],
+		IF, 13, 10, PP4_0_);
+	STEP_SMALL(saved[ 8], saved[ 9], saved[10], saved[11],
+		IF, 10, 25, PP4_1_);
+	STEP_SMALL(saved[12], saved[13], saved[14], saved[15],
+		IF, 25,  4, PP4_2_);
+#else
+	STEP_SMALL(sc->state[ 0], sc->state[ 1], sc->state[ 2], sc->state[ 3],
+		IF,  4, 13, PP4_2_);
+	STEP_SMALL(sc->state[ 4], sc->state[ 5], sc->state[ 6], sc->state[ 7],
+		IF, 13, 10, PP4_0_);
+	STEP_SMALL(sc->state[ 8], sc->state[ 9], sc->state[10], sc->state[11],
+		IF, 10, 25, PP4_1_);
+	STEP_SMALL(sc->state[12], sc->state[13], sc->state[14], sc->state[15],
+		IF, 25,  4, PP4_2_);
+	WRITE_STATE_SMALL(sc);
+#endif
+}
+
+#if SPH_SIMD_NOCOPY
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef B0
+#undef B1
+#undef B2
+#undef B3
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef D0
+#undef D1
+#undef D2
+#undef D3
+#endif
+
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SIMD
+
+#define A0   state[ 0]
+#define A1   state[ 1]
+#define A2   state[ 2]
+#define A3   state[ 3]
+#define A4   state[ 4]
+#define A5   state[ 5]
+#define A6   state[ 6]
+#define A7   state[ 7]
+#define B0   state[ 8]
+#define B1   state[ 9]
+#define B2   state[10]
+#define B3   state[11]
+#define B4   state[12]
+#define B5   state[13]
+#define B6   state[14]
+#define B7   state[15]
+#define C0   state[16]
+#define C1   state[17]
+#define C2   state[18]
+#define C3   state[19]
+#define C4   state[20]
+#define C5   state[21]
+#define C6   state[22]
+#define C7   state[23]
+#define D0   state[24]
+#define D1   state[25]
+#define D2   state[26]
+#define D3   state[27]
+#define D4   state[28]
+#define D5   state[29]
+#define D6   state[30]
+#define D7   state[31]
+
+/*
+ * Not needed -- already defined for SIMD-224 / SIMD-256
+ *
+#define STEP2_ELT(n, w, fun, s, ppb)   do { \
+		u32 tt = T32(D ## n + (w) + fun(A ## n, B ## n, C ## n)); \
+		A ## n = T32(ROL32(tt, s) + tA[(ppb) ^ n]); \
+		D ## n = C ## n; \
+		C ## n = B ## n; \
+		B ## n = tA[n]; \
+	} while (0)
+ */
+
+#define STEP2_BIG(w0, w1, w2, w3, w4, w5, w6, w7, fun, r, s, pp8b)   do { \
+		u32 tA[8]; \
+		tA[0] = ROL32(A0, r); \
+		tA[1] = ROL32(A1, r); \
+		tA[2] = ROL32(A2, r); \
+		tA[3] = ROL32(A3, r); \
+		tA[4] = ROL32(A4, r); \
+		tA[5] = ROL32(A5, r); \
+		tA[6] = ROL32(A6, r); \
+		tA[7] = ROL32(A7, r); \
+		STEP2_ELT(0, w0, fun, s, pp8b); \
+		STEP2_ELT(1, w1, fun, s, pp8b); \
+		STEP2_ELT(2, w2, fun, s, pp8b); \
+		STEP2_ELT(3, w3, fun, s, pp8b); \
+		STEP2_ELT(4, w4, fun, s, pp8b); \
+		STEP2_ELT(5, w5, fun, s, pp8b); \
+		STEP2_ELT(6, w6, fun, s, pp8b); \
+		STEP2_ELT(7, w7, fun, s, pp8b); \
+	} while (0)
+
+static void
+one_round_big(u32 *state, u32 *w, int isp, int p0, int p1, int p2, int p3)
+{
+	static const int pp8k[] = { 1, 6, 2, 3, 5, 7, 4, 1, 6, 2, 3 };
+
+	STEP2_BIG(w[ 0], w[ 1], w[ 2], w[ 3], w[ 4], w[ 5], w[ 6], w[ 7],
+		IF,  p0, p1, pp8k[isp + 0]);
+	STEP2_BIG(w[ 8], w[ 9], w[10], w[11], w[12], w[13], w[14], w[15],
+		IF,  p1, p2, pp8k[isp + 1]);
+	STEP2_BIG(w[16], w[17], w[18], w[19], w[20], w[21], w[22], w[23],
+		IF,  p2, p3, pp8k[isp + 2]);
+	STEP2_BIG(w[24], w[25], w[26], w[27], w[28], w[29], w[30], w[31],
+		IF,  p3, p0, pp8k[isp + 3]);
+	STEP2_BIG(w[32], w[33], w[34], w[35], w[36], w[37], w[38], w[39],
+		MAJ, p0, p1, pp8k[isp + 4]);
+	STEP2_BIG(w[40], w[41], w[42], w[43], w[44], w[45], w[46], w[47],
+		MAJ, p1, p2, pp8k[isp + 5]);
+	STEP2_BIG(w[48], w[49], w[50], w[51], w[52], w[53], w[54], w[55],
+		MAJ, p2, p3, pp8k[isp + 6]);
+	STEP2_BIG(w[56], w[57], w[58], w[59], w[60], w[61], w[62], w[63],
+		MAJ, p3, p0, pp8k[isp + 7]);
+}
+
+static void
+compress_big(sph_simd_big_context *sc, int last)
+{
+	unsigned char *x;
+	s32 q[256];
+	int i;
+	u32 w[64];
+	u32 state[32];
+	size_t u;
+
+	static const size_t wbp[32] = {
+		 4 << 4,  6 << 4,  0 << 4,  2 << 4,
+		 7 << 4,  5 << 4,  3 << 4,  1 << 4,
+		15 << 4, 11 << 4, 12 << 4,  8 << 4,
+		 9 << 4, 13 << 4, 10 << 4, 14 << 4,
+		17 << 4, 18 << 4, 23 << 4, 20 << 4,
+		22 << 4, 21 << 4, 16 << 4, 19 << 4,
+		30 << 4, 24 << 4, 25 << 4, 31 << 4,
+		27 << 4, 29 << 4, 28 << 4, 26 << 4
+	};
+
+	x = sc->buf;
+	FFT256(0, 1, 0, ll);
+	if (last) {
+		for (i = 0; i < 256; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_b_f[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	} else {
+		for (i = 0; i < 256; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_b_n[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	}
+
+	for (i = 0; i < 32; i += 8) {
+		state[i + 0] = sc->state[i + 0]
+			^ sph_dec32le_aligned(x + 4 * (i + 0));
+		state[i + 1] = sc->state[i + 1]
+			^ sph_dec32le_aligned(x + 4 * (i + 1));
+		state[i + 2] = sc->state[i + 2]
+			^ sph_dec32le_aligned(x + 4 * (i + 2));
+		state[i + 3] = sc->state[i + 3]
+			^ sph_dec32le_aligned(x + 4 * (i + 3));
+		state[i + 4] = sc->state[i + 4]
+			^ sph_dec32le_aligned(x + 4 * (i + 4));
+		state[i + 5] = sc->state[i + 5]
+			^ sph_dec32le_aligned(x + 4 * (i + 5));
+		state[i + 6] = sc->state[i + 6]
+			^ sph_dec32le_aligned(x + 4 * (i + 6));
+		state[i + 7] = sc->state[i + 7]
+			^ sph_dec32le_aligned(x + 4 * (i + 7));
+	}
+
+#define WBREAD(sb, o1, o2, mm)   do { \
+		for (u = 0; u < 64; u += 8) { \
+			size_t v = wbp[(u >> 3) + (sb)]; \
+			w[u + 0] = INNER(q[v + 2 * 0 + (o1)], \
+				q[v + 2 * 0 + (o2)], mm); \
+			w[u + 1] = INNER(q[v + 2 * 1 + (o1)], \
+				q[v + 2 * 1 + (o2)], mm); \
+			w[u + 2] = INNER(q[v + 2 * 2 + (o1)], \
+				q[v + 2 * 2 + (o2)], mm); \
+			w[u + 3] = INNER(q[v + 2 * 3 + (o1)], \
+				q[v + 2 * 3 + (o2)], mm); \
+			w[u + 4] = INNER(q[v + 2 * 4 + (o1)], \
+				q[v + 2 * 4 + (o2)], mm); \
+			w[u + 5] = INNER(q[v + 2 * 5 + (o1)], \
+				q[v + 2 * 5 + (o2)], mm); \
+			w[u + 6] = INNER(q[v + 2 * 6 + (o1)], \
+				q[v + 2 * 6 + (o2)], mm); \
+			w[u + 7] = INNER(q[v + 2 * 7 + (o1)], \
+				q[v + 2 * 7 + (o2)], mm); \
+		} \
+	} while (0)
+
+	WBREAD( 0,    0,    1, 185);
+	one_round_big(state, w, 0,  3, 23, 17, 27);
+	WBREAD( 8,    0,    1, 185);
+	one_round_big(state, w, 1, 28, 19, 22,  7);
+	WBREAD(16, -256, -128, 233);
+	one_round_big(state, w, 2, 29,  9, 15,  5);
+	WBREAD(24, -383, -255, 233);
+	one_round_big(state, w, 3,  4, 13, 10, 25);
+
+#undef WBREAD
+
+	STEP_BIG(
+		sc->state[ 0], sc->state[ 1], sc->state[ 2], sc->state[ 3],
+		sc->state[ 4], sc->state[ 5], sc->state[ 6], sc->state[ 7],
+		IF,  4, 13, PP8_4_);
+	STEP_BIG(
+		sc->state[ 8], sc->state[ 9], sc->state[10], sc->state[11],
+		sc->state[12], sc->state[13], sc->state[14], sc->state[15],
+		IF, 13, 10, PP8_5_);
+	STEP_BIG(
+		sc->state[16], sc->state[17], sc->state[18], sc->state[19],
+		sc->state[20], sc->state[21], sc->state[22], sc->state[23],
+		IF, 10, 25, PP8_6_);
+	STEP_BIG(
+		sc->state[24], sc->state[25], sc->state[26], sc->state[27],
+		sc->state[28], sc->state[29], sc->state[30], sc->state[31],
+		IF, 25,  4, PP8_0_);
+
+	memcpy(sc->state, state, sizeof state);
+}
+
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef A4
+#undef A5
+#undef A6
+#undef A7
+#undef B0
+#undef B1
+#undef B2
+#undef B3
+#undef B4
+#undef B5
+#undef B6
+#undef B7
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+#undef D0
+#undef D1
+#undef D2
+#undef D3
+#undef D4
+#undef D5
+#undef D6
+#undef D7
+
+#else
+
+#if SPH_SIMD_NOCOPY
+#define A0   (sc->state[ 0])
+#define A1   (sc->state[ 1])
+#define A2   (sc->state[ 2])
+#define A3   (sc->state[ 3])
+#define A4   (sc->state[ 4])
+#define A5   (sc->state[ 5])
+#define A6   (sc->state[ 6])
+#define A7   (sc->state[ 7])
+#define B0   (sc->state[ 8])
+#define B1   (sc->state[ 9])
+#define B2   (sc->state[10])
+#define B3   (sc->state[11])
+#define B4   (sc->state[12])
+#define B5   (sc->state[13])
+#define B6   (sc->state[14])
+#define B7   (sc->state[15])
+#define C0   (sc->state[16])
+#define C1   (sc->state[17])
+#define C2   (sc->state[18])
+#define C3   (sc->state[19])
+#define C4   (sc->state[20])
+#define C5   (sc->state[21])
+#define C6   (sc->state[22])
+#define C7   (sc->state[23])
+#define D0   (sc->state[24])
+#define D1   (sc->state[25])
+#define D2   (sc->state[26])
+#define D3   (sc->state[27])
+#define D4   (sc->state[28])
+#define D5   (sc->state[29])
+#define D6   (sc->state[30])
+#define D7   (sc->state[31])
+#endif
+
+static void
+compress_big(sph_simd_big_context *sc, int last)
+{
+	unsigned char *x;
+	s32 q[256];
+	int i;
+	DECL_STATE_BIG
+#if SPH_SIMD_NOCOPY
+	sph_u32 saved[32];
+#endif
+
+#if SPH_SIMD_NOCOPY
+	memcpy(saved, sc->state, sizeof saved);
+#endif
+
+	x = sc->buf;
+	FFT256(0, 1, 0, ll);
+	if (last) {
+		for (i = 0; i < 256; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_b_f[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	} else {
+		for (i = 0; i < 256; i ++) {
+			s32 tq;
+
+			tq = q[i] + yoff_b_n[i];
+			tq = REDS2(tq);
+			tq = REDS1(tq);
+			tq = REDS1(tq);
+			q[i] = (tq <= 128 ? tq : tq - 257);
+		}
+	}
+	READ_STATE_BIG(sc);
+	A0 ^= sph_dec32le_aligned(x +   0);
+	A1 ^= sph_dec32le_aligned(x +   4);
+	A2 ^= sph_dec32le_aligned(x +   8);
+	A3 ^= sph_dec32le_aligned(x +  12);
+	A4 ^= sph_dec32le_aligned(x +  16);
+	A5 ^= sph_dec32le_aligned(x +  20);
+	A6 ^= sph_dec32le_aligned(x +  24);
+	A7 ^= sph_dec32le_aligned(x +  28);
+	B0 ^= sph_dec32le_aligned(x +  32);
+	B1 ^= sph_dec32le_aligned(x +  36);
+	B2 ^= sph_dec32le_aligned(x +  40);
+	B3 ^= sph_dec32le_aligned(x +  44);
+	B4 ^= sph_dec32le_aligned(x +  48);
+	B5 ^= sph_dec32le_aligned(x +  52);
+	B6 ^= sph_dec32le_aligned(x +  56);
+	B7 ^= sph_dec32le_aligned(x +  60);
+	C0 ^= sph_dec32le_aligned(x +  64);
+	C1 ^= sph_dec32le_aligned(x +  68);
+	C2 ^= sph_dec32le_aligned(x +  72);
+	C3 ^= sph_dec32le_aligned(x +  76);
+	C4 ^= sph_dec32le_aligned(x +  80);
+	C5 ^= sph_dec32le_aligned(x +  84);
+	C6 ^= sph_dec32le_aligned(x +  88);
+	C7 ^= sph_dec32le_aligned(x +  92);
+	D0 ^= sph_dec32le_aligned(x +  96);
+	D1 ^= sph_dec32le_aligned(x + 100);
+	D2 ^= sph_dec32le_aligned(x + 104);
+	D3 ^= sph_dec32le_aligned(x + 108);
+	D4 ^= sph_dec32le_aligned(x + 112);
+	D5 ^= sph_dec32le_aligned(x + 116);
+	D6 ^= sph_dec32le_aligned(x + 120);
+	D7 ^= sph_dec32le_aligned(x + 124);
+
+	ONE_ROUND_BIG(0_, 0,  3, 23, 17, 27);
+	ONE_ROUND_BIG(1_, 1, 28, 19, 22,  7);
+	ONE_ROUND_BIG(2_, 2, 29,  9, 15,  5);
+	ONE_ROUND_BIG(3_, 3,  4, 13, 10, 25);
+#if SPH_SIMD_NOCOPY
+	STEP_BIG(
+		saved[ 0], saved[ 1], saved[ 2], saved[ 3],
+		saved[ 4], saved[ 5], saved[ 6], saved[ 7],
+		IF,  4, 13, PP8_4_);
+	STEP_BIG(
+		saved[ 8], saved[ 9], saved[10], saved[11],
+		saved[12], saved[13], saved[14], saved[15],
+		IF, 13, 10, PP8_5_);
+	STEP_BIG(
+		saved[16], saved[17], saved[18], saved[19],
+		saved[20], saved[21], saved[22], saved[23],
+		IF, 10, 25, PP8_6_);
+	STEP_BIG(
+		saved[24], saved[25], saved[26], saved[27],
+		saved[28], saved[29], saved[30], saved[31],
+		IF, 25,  4, PP8_0_);
+#else
+	STEP_BIG(
+		sc->state[ 0], sc->state[ 1], sc->state[ 2], sc->state[ 3],
+		sc->state[ 4], sc->state[ 5], sc->state[ 6], sc->state[ 7],
+		IF,  4, 13, PP8_4_);
+	STEP_BIG(
+		sc->state[ 8], sc->state[ 9], sc->state[10], sc->state[11],
+		sc->state[12], sc->state[13], sc->state[14], sc->state[15],
+		IF, 13, 10, PP8_5_);
+	STEP_BIG(
+		sc->state[16], sc->state[17], sc->state[18], sc->state[19],
+		sc->state[20], sc->state[21], sc->state[22], sc->state[23],
+		IF, 10, 25, PP8_6_);
+	STEP_BIG(
+		sc->state[24], sc->state[25], sc->state[26], sc->state[27],
+		sc->state[28], sc->state[29], sc->state[30], sc->state[31],
+		IF, 25,  4, PP8_0_);
+	WRITE_STATE_BIG(sc);
+#endif
+}
+
+#if SPH_SIMD_NOCOPY
+#undef A0
+#undef A1
+#undef A2
+#undef A3
+#undef A4
+#undef A5
+#undef A6
+#undef A7
+#undef B0
+#undef B1
+#undef B2
+#undef B3
+#undef B4
+#undef B5
+#undef B6
+#undef B7
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+#undef D0
+#undef D1
+#undef D2
+#undef D3
+#undef D4
+#undef D5
+#undef D6
+#undef D7
+#endif
+
+#endif
+
+static const u32 IV224[] = {
+	C32(0x33586E9F), C32(0x12FFF033), C32(0xB2D9F64D), C32(0x6F8FEA53),
+	C32(0xDE943106), C32(0x2742E439), C32(0x4FBAB5AC), C32(0x62B9FF96),
+	C32(0x22E7B0AF), C32(0xC862B3A8), C32(0x33E00CDC), C32(0x236B86A6),
+	C32(0xF64AE77C), C32(0xFA373B76), C32(0x7DC1EE5B), C32(0x7FB29CE8)
+};
+
+static const u32 IV256[] = {
+	C32(0x4D567983), C32(0x07190BA9), C32(0x8474577B), C32(0x39D726E9),
+	C32(0xAAF3D925), C32(0x3EE20B03), C32(0xAFD5E751), C32(0xC96006D3),
+	C32(0xC2C2BA14), C32(0x49B3BCB4), C32(0xF67CAF46), C32(0x668626C9),
+	C32(0xE2EAA8D2), C32(0x1FF47833), C32(0xD0C661A5), C32(0x55693DE1)
+};
+
+static const u32 IV384[] = {
+	C32(0x8A36EEBC), C32(0x94A3BD90), C32(0xD1537B83), C32(0xB25B070B),
+	C32(0xF463F1B5), C32(0xB6F81E20), C32(0x0055C339), C32(0xB4D144D1),
+	C32(0x7360CA61), C32(0x18361A03), C32(0x17DCB4B9), C32(0x3414C45A),
+	C32(0xA699A9D2), C32(0xE39E9664), C32(0x468BFE77), C32(0x51D062F8),
+	C32(0xB9E3BFE8), C32(0x63BECE2A), C32(0x8FE506B9), C32(0xF8CC4AC2),
+	C32(0x7AE11542), C32(0xB1AADDA1), C32(0x64B06794), C32(0x28D2F462),
+	C32(0xE64071EC), C32(0x1DEB91A8), C32(0x8AC8DB23), C32(0x3F782AB5),
+	C32(0x039B5CB8), C32(0x71DDD962), C32(0xFADE2CEA), C32(0x1416DF71)
+};
+
+static const u32 IV512[] = {
+	C32(0x0BA16B95), C32(0x72F999AD), C32(0x9FECC2AE), C32(0xBA3264FC),
+	C32(0x5E894929), C32(0x8E9F30E5), C32(0x2F1DAA37), C32(0xF0F2C558),
+	C32(0xAC506643), C32(0xA90635A5), C32(0xE25B878B), C32(0xAAB7878F),
+	C32(0x88817F7A), C32(0x0A02892B), C32(0x559A7550), C32(0x598F657E),
+	C32(0x7EEF60A1), C32(0x6B70E3E8), C32(0x9C1714D1), C32(0xB958E2A8),
+	C32(0xAB02675E), C32(0xED1C014F), C32(0xCD8D65BB), C32(0xFDB7A257),
+	C32(0x09254899), C32(0xD699C7BC), C32(0x9019B6DC), C32(0x2B9022E4),
+	C32(0x8FA14956), C32(0x21BF9BD3), C32(0xB94D0943), C32(0x6FFDDC22)
+};
+
+static void
+init_small(void *cc, const u32 *iv)
+{
+	sph_simd_small_context *sc;
+
+	sc = cc;
+	memcpy(sc->state, iv, sizeof sc->state);
+	sc->count_low = sc->count_high = 0;
+	sc->ptr = 0;
+}
+
+static void
+init_big(void *cc, const u32 *iv)
+{
+	sph_simd_big_context *sc;
+
+	sc = cc;
+	memcpy(sc->state, iv, sizeof sc->state);
+	sc->count_low = sc->count_high = 0;
+	sc->ptr = 0;
+}
+
+static void
+update_small(void *cc, const void *data, size_t len)
+{
+	sph_simd_small_context *sc;
+
+	sc = cc;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - sc->ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(sc->buf + sc->ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if ((sc->ptr += clen) == sizeof sc->buf) {
+			compress_small(sc, 0);
+			sc->ptr = 0;
+			sc->count_low = T32(sc->count_low + 1);
+			if (sc->count_low == 0)
+				sc->count_high ++;
+		}
+	}
+}
+
+static void
+update_big(void *cc, const void *data, size_t len)
+{
+	sph_simd_big_context *sc;
+
+	sc = cc;
+	while (len > 0) {
+		size_t clen;
+
+		clen = (sizeof sc->buf) - sc->ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(sc->buf + sc->ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+		if ((sc->ptr += clen) == sizeof sc->buf) {
+			compress_big(sc, 0);
+			sc->ptr = 0;
+			sc->count_low = T32(sc->count_low + 1);
+			if (sc->count_low == 0)
+				sc->count_high ++;
+		}
+	}
+}
+
+static void
+encode_count_small(unsigned char *dst,
+	u32 low, u32 high, size_t ptr, unsigned n)
+{
+	low = T32(low << 9);
+	high = T32(high << 9) + (low >> 23);
+	low += (ptr << 3) + n;
+	sph_enc32le(dst, low);
+	sph_enc32le(dst + 4, high);
+}
+
+static void
+encode_count_big(unsigned char *dst,
+	u32 low, u32 high, size_t ptr, unsigned n)
+{
+	low = T32(low << 10);
+	high = T32(high << 10) + (low >> 22);
+	low += (ptr << 3) + n;
+	sph_enc32le(dst, low);
+	sph_enc32le(dst + 4, high);
+}
+
+static void
+finalize_small(void *cc, unsigned ub, unsigned n, void *dst, size_t dst_len)
+{
+	sph_simd_small_context *sc;
+	unsigned char *d;
+	size_t u;
+
+	sc = cc;
+	if (sc->ptr > 0 || n > 0) {
+		memset(sc->buf + sc->ptr, 0,
+			(sizeof sc->buf) - sc->ptr);
+		sc->buf[sc->ptr] = ub & (0xFF << (8 - n));
+		compress_small(sc, 0);
+	}
+	memset(sc->buf, 0, sizeof sc->buf);
+	encode_count_small(sc->buf, sc->count_low, sc->count_high, sc->ptr, n);
+	compress_small(sc, 1);
+	d = dst;
+	for (d = dst, u = 0; u < dst_len; u ++)
+		sph_enc32le(d + (u << 2), sc->state[u]);
+}
+
+static void
+finalize_big(void *cc, unsigned ub, unsigned n, void *dst, size_t dst_len)
+{
+	sph_simd_big_context *sc;
+	unsigned char *d;
+	size_t u;
+
+	sc = cc;
+	if (sc->ptr > 0 || n > 0) {
+		memset(sc->buf + sc->ptr, 0,
+			(sizeof sc->buf) - sc->ptr);
+		sc->buf[sc->ptr] = ub & (0xFF << (8 - n));
+		compress_big(sc, 0);
+	}
+	memset(sc->buf, 0, sizeof sc->buf);
+	encode_count_big(sc->buf, sc->count_low, sc->count_high, sc->ptr, n);
+	compress_big(sc, 1);
+	d = dst;
+	for (d = dst, u = 0; u < dst_len; u ++)
+		sph_enc32le(d + (u << 2), sc->state[u]);
+}
+
+void
+sph_simd224_init(void *cc)
+{
+	init_small(cc, IV224);
+}
+
+void
+sph_simd224(void *cc, const void *data, size_t len)
+{
+	update_small(cc, data, len);
+}
+
+void
+sph_simd224_close(void *cc, void *dst)
+{
+	sph_simd224_addbits_and_close(cc, 0, 0, dst);
+}
+
+void
+sph_simd224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	finalize_small(cc, ub, n, dst, 7);
+	sph_simd224_init(cc);
+}
+
+void
+sph_simd256_init(void *cc)
+{
+	init_small(cc, IV256);
+}
+
+void
+sph_simd256(void *cc, const void *data, size_t len)
+{
+	update_small(cc, data, len);
+}
+
+void
+sph_simd256_close(void *cc, void *dst)
+{
+	sph_simd256_addbits_and_close(cc, 0, 0, dst);
+}
+
+void
+sph_simd256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	finalize_small(cc, ub, n, dst, 8);
+	sph_simd256_init(cc);
+}
+
+void
+sph_simd384_init(void *cc)
+{
+	init_big(cc, IV384);
+}
+
+void
+sph_simd384(void *cc, const void *data, size_t len)
+{
+	update_big(cc, data, len);
+}
+
+void
+sph_simd384_close(void *cc, void *dst)
+{
+	sph_simd384_addbits_and_close(cc, 0, 0, dst);
+}
+
+void
+sph_simd384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	finalize_big(cc, ub, n, dst, 12);
+	sph_simd384_init(cc);
+}
+
+void
+sph_simd512_init(void *cc)
+{
+	init_big(cc, IV512);
+}
+
+void
+sph_simd512(void *cc, const void *data, size_t len)
+{
+	update_big(cc, data, len);
+}
+
+void
+sph_simd512_close(void *cc, void *dst)
+{
+	sph_simd512_addbits_and_close(cc, 0, 0, dst);
+}
+
+void
+sph_simd512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	finalize_big(cc, ub, n, dst, 16);
+	sph_simd512_init(cc);
+}
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/src/crypto/ghostrider/sph_simd.h b/src/crypto/ghostrider/sph_simd.h
new file mode 100644
index 000000000..92ee1e727
--- /dev/null
+++ b/src/crypto/ghostrider/sph_simd.h
@@ -0,0 +1,309 @@
+/* $Id: sph_simd.h 154 2010-04-26 17:00:24Z tp $ */
+/**
+ * SIMD interface. SIMD is a family of functions which differ by
+ * their output size; this implementation defines SIMD for output
+ * sizes 224, 256, 384 and 512 bits.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_simd.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_SIMD_H__
+#define SPH_SIMD_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+/**
+ * Output size (in bits) for SIMD-224.
+ */
+#define SPH_SIZE_simd224   224
+
+/**
+ * Output size (in bits) for SIMD-256.
+ */
+#define SPH_SIZE_simd256   256
+
+/**
+ * Output size (in bits) for SIMD-384.
+ */
+#define SPH_SIZE_simd384   384
+
+/**
+ * Output size (in bits) for SIMD-512.
+ */
+#define SPH_SIZE_simd512   512
+
+/**
+ * This structure is a context for SIMD computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * an SIMD computation has been performed, the context can be reused for
+ * another computation. This specific structure is used for SIMD-224
+ * and SIMD-256.
+ *
+ * The contents of this structure are private. A running SIMD computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 state[16];
+	sph_u32 count_low, count_high;
+#endif
+} sph_simd_small_context;
+
+/**
+ * This structure is a context for SIMD computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * an SIMD computation has been performed, the context can be reused for
+ * another computation. This specific structure is used for SIMD-384
+ * and SIMD-512.
+ *
+ * The contents of this structure are private. A running SIMD computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[128];    /* first field, for alignment */
+	size_t ptr;
+	sph_u32 state[32];
+	sph_u32 count_low, count_high;
+#endif
+} sph_simd_big_context;
+
+/**
+ * Type for a SIMD-224 context (identical to the common "small" context).
+ */
+typedef sph_simd_small_context sph_simd224_context;
+
+/**
+ * Type for a SIMD-256 context (identical to the common "small" context).
+ */
+typedef sph_simd_small_context sph_simd256_context;
+
+/**
+ * Type for a SIMD-384 context (identical to the common "big" context).
+ */
+typedef sph_simd_big_context sph_simd384_context;
+
+/**
+ * Type for a SIMD-512 context (identical to the common "big" context).
+ */
+typedef sph_simd_big_context sph_simd512_context;
+
+/**
+ * Initialize an SIMD-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the SIMD-224 context (pointer to a
+ *             <code>sph_simd224_context</code>)
+ */
+void sph_simd224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SIMD-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_simd224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SIMD-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SIMD-224 context
+ * @param dst   the destination buffer
+ */
+void sph_simd224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SIMD-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_simd224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an SIMD-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the SIMD-256 context (pointer to a
+ *             <code>sph_simd256_context</code>)
+ */
+void sph_simd256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SIMD-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_simd256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SIMD-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SIMD-256 context
+ * @param dst   the destination buffer
+ */
+void sph_simd256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SIMD-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_simd256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an SIMD-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the SIMD-384 context (pointer to a
+ *             <code>sph_simd384_context</code>)
+ */
+void sph_simd384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SIMD-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_simd384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SIMD-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SIMD-384 context
+ * @param dst   the destination buffer
+ */
+void sph_simd384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SIMD-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_simd384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize an SIMD-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the SIMD-512 context (pointer to a
+ *             <code>sph_simd512_context</code>)
+ */
+void sph_simd512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the SIMD-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_simd512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current SIMD-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the SIMD-512 context
+ * @param dst   the destination buffer
+ */
+void sph_simd512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the SIMD-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_simd512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_skein.c b/src/crypto/ghostrider/sph_skein.c
new file mode 100644
index 000000000..e4d5bee13
--- /dev/null
+++ b/src/crypto/ghostrider/sph_skein.c
@@ -0,0 +1,1254 @@
+/* $Id: skein.c 254 2011-06-07 19:38:58Z tp $ */
+/*
+ * Skein implementation.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_skein.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_SKEIN
+#define SPH_SMALL_FOOTPRINT_SKEIN   1
+#endif
+
+#ifdef _MSC_VER
+#pragma warning (disable: 4146)
+#endif
+
+#if SPH_64
+
+#if 0
+/* obsolete */
+/*
+ * M5_ ## s ## _ ## i  evaluates to s+i mod 5 (0 <= s <= 18, 0 <= i <= 3).
+ */
+
+#define M5_0_0    0
+#define M5_0_1    1
+#define M5_0_2    2
+#define M5_0_3    3
+
+#define M5_1_0    1
+#define M5_1_1    2
+#define M5_1_2    3
+#define M5_1_3    4
+
+#define M5_2_0    2
+#define M5_2_1    3
+#define M5_2_2    4
+#define M5_2_3    0
+
+#define M5_3_0    3
+#define M5_3_1    4
+#define M5_3_2    0
+#define M5_3_3    1
+
+#define M5_4_0    4
+#define M5_4_1    0
+#define M5_4_2    1
+#define M5_4_3    2
+
+#define M5_5_0    0
+#define M5_5_1    1
+#define M5_5_2    2
+#define M5_5_3    3
+
+#define M5_6_0    1
+#define M5_6_1    2
+#define M5_6_2    3
+#define M5_6_3    4
+
+#define M5_7_0    2
+#define M5_7_1    3
+#define M5_7_2    4
+#define M5_7_3    0
+
+#define M5_8_0    3
+#define M5_8_1    4
+#define M5_8_2    0
+#define M5_8_3    1
+
+#define M5_9_0    4
+#define M5_9_1    0
+#define M5_9_2    1
+#define M5_9_3    2
+
+#define M5_10_0   0
+#define M5_10_1   1
+#define M5_10_2   2
+#define M5_10_3   3
+
+#define M5_11_0   1
+#define M5_11_1   2
+#define M5_11_2   3
+#define M5_11_3   4
+
+#define M5_12_0   2
+#define M5_12_1   3
+#define M5_12_2   4
+#define M5_12_3   0
+
+#define M5_13_0   3
+#define M5_13_1   4
+#define M5_13_2   0
+#define M5_13_3   1
+
+#define M5_14_0   4
+#define M5_14_1   0
+#define M5_14_2   1
+#define M5_14_3   2
+
+#define M5_15_0   0
+#define M5_15_1   1
+#define M5_15_2   2
+#define M5_15_3   3
+
+#define M5_16_0   1
+#define M5_16_1   2
+#define M5_16_2   3
+#define M5_16_3   4
+
+#define M5_17_0   2
+#define M5_17_1   3
+#define M5_17_2   4
+#define M5_17_3   0
+
+#define M5_18_0   3
+#define M5_18_1   4
+#define M5_18_2   0
+#define M5_18_3   1
+#endif
+
+/*
+ * M9_ ## s ## _ ## i  evaluates to s+i mod 9 (0 <= s <= 18, 0 <= i <= 7).
+ */
+
+#define M9_0_0    0
+#define M9_0_1    1
+#define M9_0_2    2
+#define M9_0_3    3
+#define M9_0_4    4
+#define M9_0_5    5
+#define M9_0_6    6
+#define M9_0_7    7
+
+#define M9_1_0    1
+#define M9_1_1    2
+#define M9_1_2    3
+#define M9_1_3    4
+#define M9_1_4    5
+#define M9_1_5    6
+#define M9_1_6    7
+#define M9_1_7    8
+
+#define M9_2_0    2
+#define M9_2_1    3
+#define M9_2_2    4
+#define M9_2_3    5
+#define M9_2_4    6
+#define M9_2_5    7
+#define M9_2_6    8
+#define M9_2_7    0
+
+#define M9_3_0    3
+#define M9_3_1    4
+#define M9_3_2    5
+#define M9_3_3    6
+#define M9_3_4    7
+#define M9_3_5    8
+#define M9_3_6    0
+#define M9_3_7    1
+
+#define M9_4_0    4
+#define M9_4_1    5
+#define M9_4_2    6
+#define M9_4_3    7
+#define M9_4_4    8
+#define M9_4_5    0
+#define M9_4_6    1
+#define M9_4_7    2
+
+#define M9_5_0    5
+#define M9_5_1    6
+#define M9_5_2    7
+#define M9_5_3    8
+#define M9_5_4    0
+#define M9_5_5    1
+#define M9_5_6    2
+#define M9_5_7    3
+
+#define M9_6_0    6
+#define M9_6_1    7
+#define M9_6_2    8
+#define M9_6_3    0
+#define M9_6_4    1
+#define M9_6_5    2
+#define M9_6_6    3
+#define M9_6_7    4
+
+#define M9_7_0    7
+#define M9_7_1    8
+#define M9_7_2    0
+#define M9_7_3    1
+#define M9_7_4    2
+#define M9_7_5    3
+#define M9_7_6    4
+#define M9_7_7    5
+
+#define M9_8_0    8
+#define M9_8_1    0
+#define M9_8_2    1
+#define M9_8_3    2
+#define M9_8_4    3
+#define M9_8_5    4
+#define M9_8_6    5
+#define M9_8_7    6
+
+#define M9_9_0    0
+#define M9_9_1    1
+#define M9_9_2    2
+#define M9_9_3    3
+#define M9_9_4    4
+#define M9_9_5    5
+#define M9_9_6    6
+#define M9_9_7    7
+
+#define M9_10_0   1
+#define M9_10_1   2
+#define M9_10_2   3
+#define M9_10_3   4
+#define M9_10_4   5
+#define M9_10_5   6
+#define M9_10_6   7
+#define M9_10_7   8
+
+#define M9_11_0   2
+#define M9_11_1   3
+#define M9_11_2   4
+#define M9_11_3   5
+#define M9_11_4   6
+#define M9_11_5   7
+#define M9_11_6   8
+#define M9_11_7   0
+
+#define M9_12_0   3
+#define M9_12_1   4
+#define M9_12_2   5
+#define M9_12_3   6
+#define M9_12_4   7
+#define M9_12_5   8
+#define M9_12_6   0
+#define M9_12_7   1
+
+#define M9_13_0   4
+#define M9_13_1   5
+#define M9_13_2   6
+#define M9_13_3   7
+#define M9_13_4   8
+#define M9_13_5   0
+#define M9_13_6   1
+#define M9_13_7   2
+
+#define M9_14_0   5
+#define M9_14_1   6
+#define M9_14_2   7
+#define M9_14_3   8
+#define M9_14_4   0
+#define M9_14_5   1
+#define M9_14_6   2
+#define M9_14_7   3
+
+#define M9_15_0   6
+#define M9_15_1   7
+#define M9_15_2   8
+#define M9_15_3   0
+#define M9_15_4   1
+#define M9_15_5   2
+#define M9_15_6   3
+#define M9_15_7   4
+
+#define M9_16_0   7
+#define M9_16_1   8
+#define M9_16_2   0
+#define M9_16_3   1
+#define M9_16_4   2
+#define M9_16_5   3
+#define M9_16_6   4
+#define M9_16_7   5
+
+#define M9_17_0   8
+#define M9_17_1   0
+#define M9_17_2   1
+#define M9_17_3   2
+#define M9_17_4   3
+#define M9_17_5   4
+#define M9_17_6   5
+#define M9_17_7   6
+
+#define M9_18_0   0
+#define M9_18_1   1
+#define M9_18_2   2
+#define M9_18_3   3
+#define M9_18_4   4
+#define M9_18_5   5
+#define M9_18_6   6
+#define M9_18_7   7
+
+/*
+ * M3_ ## s ## _ ## i  evaluates to s+i mod 3 (0 <= s <= 18, 0 <= i <= 1).
+ */
+
+#define M3_0_0    0
+#define M3_0_1    1
+#define M3_1_0    1
+#define M3_1_1    2
+#define M3_2_0    2
+#define M3_2_1    0
+#define M3_3_0    0
+#define M3_3_1    1
+#define M3_4_0    1
+#define M3_4_1    2
+#define M3_5_0    2
+#define M3_5_1    0
+#define M3_6_0    0
+#define M3_6_1    1
+#define M3_7_0    1
+#define M3_7_1    2
+#define M3_8_0    2
+#define M3_8_1    0
+#define M3_9_0    0
+#define M3_9_1    1
+#define M3_10_0   1
+#define M3_10_1   2
+#define M3_11_0   2
+#define M3_11_1   0
+#define M3_12_0   0
+#define M3_12_1   1
+#define M3_13_0   1
+#define M3_13_1   2
+#define M3_14_0   2
+#define M3_14_1   0
+#define M3_15_0   0
+#define M3_15_1   1
+#define M3_16_0   1
+#define M3_16_1   2
+#define M3_17_0   2
+#define M3_17_1   0
+#define M3_18_0   0
+#define M3_18_1   1
+
+#define XCAT(x, y)     XCAT_(x, y)
+#define XCAT_(x, y)    x ## y
+
+#if 0
+/* obsolete */
+#define SKSI(k, s, i)   XCAT(k, XCAT(XCAT(XCAT(M5_, s), _), i))
+#define SKST(t, s, v)   XCAT(t, XCAT(XCAT(XCAT(M3_, s), _), v))
+#endif
+
+#define SKBI(k, s, i)   XCAT(k, XCAT(XCAT(XCAT(M9_, s), _), i))
+#define SKBT(t, s, v)   XCAT(t, XCAT(XCAT(XCAT(M3_, s), _), v))
+
+#if 0
+/* obsolete */
+#define TFSMALL_KINIT(k0, k1, k2, k3, k4, t0, t1, t2)   do { \
+		k4 = (k0 ^ k1) ^ (k2 ^ k3) ^ SPH_C64(0x1BD11BDAA9FC1A22); \
+		t2 = t0 ^ t1; \
+	} while (0)
+#endif
+
+#define TFBIG_KINIT(k0, k1, k2, k3, k4, k5, k6, k7, k8, t0, t1, t2)   do { \
+		k8 = ((k0 ^ k1) ^ (k2 ^ k3)) ^ ((k4 ^ k5) ^ (k6 ^ k7)) \
+			^ SPH_C64(0x1BD11BDAA9FC1A22); \
+		t2 = t0 ^ t1; \
+	} while (0)
+
+#if 0
+/* obsolete */
+#define TFSMALL_ADDKEY(w0, w1, w2, w3, k, t, s)   do { \
+		w0 = SPH_T64(w0 + SKSI(k, s, 0)); \
+		w1 = SPH_T64(w1 + SKSI(k, s, 1) + SKST(t, s, 0)); \
+		w2 = SPH_T64(w2 + SKSI(k, s, 2) + SKST(t, s, 1)); \
+		w3 = SPH_T64(w3 + SKSI(k, s, 3) + (sph_u64)s); \
+	} while (0)
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+#define TFBIG_ADDKEY(s, tt0, tt1)   do { \
+		p0 = SPH_T64(p0 + h[s + 0]); \
+		p1 = SPH_T64(p1 + h[s + 1]); \
+		p2 = SPH_T64(p2 + h[s + 2]); \
+		p3 = SPH_T64(p3 + h[s + 3]); \
+		p4 = SPH_T64(p4 + h[s + 4]); \
+		p5 = SPH_T64(p5 + h[s + 5] + tt0); \
+		p6 = SPH_T64(p6 + h[s + 6] + tt1); \
+		p7 = SPH_T64(p7 + h[s + 7] + (sph_u64)s); \
+	} while (0)
+
+#else
+
+#define TFBIG_ADDKEY(w0, w1, w2, w3, w4, w5, w6, w7, k, t, s)   do { \
+		w0 = SPH_T64(w0 + SKBI(k, s, 0)); \
+		w1 = SPH_T64(w1 + SKBI(k, s, 1)); \
+		w2 = SPH_T64(w2 + SKBI(k, s, 2)); \
+		w3 = SPH_T64(w3 + SKBI(k, s, 3)); \
+		w4 = SPH_T64(w4 + SKBI(k, s, 4)); \
+		w5 = SPH_T64(w5 + SKBI(k, s, 5) + SKBT(t, s, 0)); \
+		w6 = SPH_T64(w6 + SKBI(k, s, 6) + SKBT(t, s, 1)); \
+		w7 = SPH_T64(w7 + SKBI(k, s, 7) + (sph_u64)s); \
+	} while (0)
+
+#endif
+
+#if 0
+/* obsolete */
+#define TFSMALL_MIX(x0, x1, rc)   do { \
+		x0 = SPH_T64(x0 + x1); \
+		x1 = SPH_ROTL64(x1, rc) ^ x0; \
+	} while (0)
+#endif
+
+#define TFBIG_MIX(x0, x1, rc)   do { \
+		x0 = SPH_T64(x0 + x1); \
+		x1 = SPH_ROTL64(x1, rc) ^ x0; \
+	} while (0)
+
+#if 0
+/* obsolete */
+#define TFSMALL_MIX4(w0, w1, w2, w3, rc0, rc1)  do { \
+		TFSMALL_MIX(w0, w1, rc0); \
+		TFSMALL_MIX(w2, w3, rc1); \
+	} while (0)
+#endif
+
+#define TFBIG_MIX8(w0, w1, w2, w3, w4, w5, w6, w7, rc0, rc1, rc2, rc3)  do { \
+		TFBIG_MIX(w0, w1, rc0); \
+		TFBIG_MIX(w2, w3, rc1); \
+		TFBIG_MIX(w4, w5, rc2); \
+		TFBIG_MIX(w6, w7, rc3); \
+	} while (0)
+
+#if 0
+/* obsolete */
+#define TFSMALL_4e(s)   do { \
+		TFSMALL_ADDKEY(p0, p1, p2, p3, h, t, s); \
+		TFSMALL_MIX4(p0, p1, p2, p3, 14, 16); \
+		TFSMALL_MIX4(p0, p3, p2, p1, 52, 57); \
+		TFSMALL_MIX4(p0, p1, p2, p3, 23, 40); \
+		TFSMALL_MIX4(p0, p3, p2, p1,  5, 37); \
+	} while (0)
+
+#define TFSMALL_4o(s)   do { \
+		TFSMALL_ADDKEY(p0, p1, p2, p3, h, t, s); \
+		TFSMALL_MIX4(p0, p1, p2, p3, 25, 33); \
+		TFSMALL_MIX4(p0, p3, p2, p1, 46, 12); \
+		TFSMALL_MIX4(p0, p1, p2, p3, 58, 22); \
+		TFSMALL_MIX4(p0, p3, p2, p1, 32, 32); \
+	} while (0)
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+#define TFBIG_4e(s)   do { \
+		TFBIG_ADDKEY(s, t0, t1); \
+		TFBIG_MIX8(p0, p1, p2, p3, p4, p5, p6, p7, 46, 36, 19, 37); \
+		TFBIG_MIX8(p2, p1, p4, p7, p6, p5, p0, p3, 33, 27, 14, 42); \
+		TFBIG_MIX8(p4, p1, p6, p3, p0, p5, p2, p7, 17, 49, 36, 39); \
+		TFBIG_MIX8(p6, p1, p0, p7, p2, p5, p4, p3, 44,  9, 54, 56); \
+	} while (0)
+
+#define TFBIG_4o(s)   do { \
+		TFBIG_ADDKEY(s, t1, t2); \
+		TFBIG_MIX8(p0, p1, p2, p3, p4, p5, p6, p7, 39, 30, 34, 24); \
+		TFBIG_MIX8(p2, p1, p4, p7, p6, p5, p0, p3, 13, 50, 10, 17); \
+		TFBIG_MIX8(p4, p1, p6, p3, p0, p5, p2, p7, 25, 29, 39, 43); \
+		TFBIG_MIX8(p6, p1, p0, p7, p2, p5, p4, p3,  8, 35, 56, 22); \
+	} while (0)
+
+#else
+
+#define TFBIG_4e(s)   do { \
+		TFBIG_ADDKEY(p0, p1, p2, p3, p4, p5, p6, p7, h, t, s); \
+		TFBIG_MIX8(p0, p1, p2, p3, p4, p5, p6, p7, 46, 36, 19, 37); \
+		TFBIG_MIX8(p2, p1, p4, p7, p6, p5, p0, p3, 33, 27, 14, 42); \
+		TFBIG_MIX8(p4, p1, p6, p3, p0, p5, p2, p7, 17, 49, 36, 39); \
+		TFBIG_MIX8(p6, p1, p0, p7, p2, p5, p4, p3, 44,  9, 54, 56); \
+	} while (0)
+
+#define TFBIG_4o(s)   do { \
+		TFBIG_ADDKEY(p0, p1, p2, p3, p4, p5, p6, p7, h, t, s); \
+		TFBIG_MIX8(p0, p1, p2, p3, p4, p5, p6, p7, 39, 30, 34, 24); \
+		TFBIG_MIX8(p2, p1, p4, p7, p6, p5, p0, p3, 13, 50, 10, 17); \
+		TFBIG_MIX8(p4, p1, p6, p3, p0, p5, p2, p7, 25, 29, 39, 43); \
+		TFBIG_MIX8(p6, p1, p0, p7, p2, p5, p4, p3,  8, 35, 56, 22); \
+	} while (0)
+
+#endif
+
+#if 0
+/* obsolete */
+#define UBI_SMALL(etype, extra)  do { \
+		sph_u64 h4, t0, t1, t2; \
+		sph_u64 m0 = sph_dec64le(buf +  0); \
+		sph_u64 m1 = sph_dec64le(buf +  8); \
+		sph_u64 m2 = sph_dec64le(buf + 16); \
+		sph_u64 m3 = sph_dec64le(buf + 24); \
+		sph_u64 p0 = m0; \
+		sph_u64 p1 = m1; \
+		sph_u64 p2 = m2; \
+		sph_u64 p3 = m3; \
+		t0 = SPH_T64(bcount << 5) + (sph_u64)(extra); \
+		t1 = (bcount >> 59) + ((sph_u64)(etype) << 55); \
+		TFSMALL_KINIT(h0, h1, h2, h3, h4, t0, t1, t2); \
+		TFSMALL_4e(0); \
+		TFSMALL_4o(1); \
+		TFSMALL_4e(2); \
+		TFSMALL_4o(3); \
+		TFSMALL_4e(4); \
+		TFSMALL_4o(5); \
+		TFSMALL_4e(6); \
+		TFSMALL_4o(7); \
+		TFSMALL_4e(8); \
+		TFSMALL_4o(9); \
+		TFSMALL_4e(10); \
+		TFSMALL_4o(11); \
+		TFSMALL_4e(12); \
+		TFSMALL_4o(13); \
+		TFSMALL_4e(14); \
+		TFSMALL_4o(15); \
+		TFSMALL_4e(16); \
+		TFSMALL_4o(17); \
+		TFSMALL_ADDKEY(p0, p1, p2, p3, h, t, 18); \
+		h0 = m0 ^ p0; \
+		h1 = m1 ^ p1; \
+		h2 = m2 ^ p2; \
+		h3 = m3 ^ p3; \
+	} while (0)
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+#define UBI_BIG(etype, extra)  do { \
+		sph_u64 t0, t1, t2; \
+		unsigned u; \
+		sph_u64 m0 = sph_dec64le_aligned(buf +  0); \
+		sph_u64 m1 = sph_dec64le_aligned(buf +  8); \
+		sph_u64 m2 = sph_dec64le_aligned(buf + 16); \
+		sph_u64 m3 = sph_dec64le_aligned(buf + 24); \
+		sph_u64 m4 = sph_dec64le_aligned(buf + 32); \
+		sph_u64 m5 = sph_dec64le_aligned(buf + 40); \
+		sph_u64 m6 = sph_dec64le_aligned(buf + 48); \
+		sph_u64 m7 = sph_dec64le_aligned(buf + 56); \
+		sph_u64 p0 = m0; \
+		sph_u64 p1 = m1; \
+		sph_u64 p2 = m2; \
+		sph_u64 p3 = m3; \
+		sph_u64 p4 = m4; \
+		sph_u64 p5 = m5; \
+		sph_u64 p6 = m6; \
+		sph_u64 p7 = m7; \
+		t0 = SPH_T64(bcount << 6) + (sph_u64)(extra); \
+		t1 = (bcount >> 58) + ((sph_u64)(etype) << 55); \
+		TFBIG_KINIT(h[0], h[1], h[2], h[3], h[4], h[5], \
+			h[6], h[7], h[8], t0, t1, t2); \
+		for (u = 0; u <= 15; u += 3) { \
+			h[u +  9] = h[u + 0]; \
+			h[u + 10] = h[u + 1]; \
+			h[u + 11] = h[u + 2]; \
+		} \
+		for (u = 0; u < 9; u ++) { \
+			sph_u64 s = u << 1; \
+			sph_u64 tmp; \
+			TFBIG_4e(s); \
+			TFBIG_4o(s + 1); \
+			tmp = t2; \
+			t2 = t1; \
+			t1 = t0; \
+			t0 = tmp; \
+		} \
+		TFBIG_ADDKEY(18, t0, t1); \
+		h[0] = m0 ^ p0; \
+		h[1] = m1 ^ p1; \
+		h[2] = m2 ^ p2; \
+		h[3] = m3 ^ p3; \
+		h[4] = m4 ^ p4; \
+		h[5] = m5 ^ p5; \
+		h[6] = m6 ^ p6; \
+		h[7] = m7 ^ p7; \
+	} while (0)
+
+#else
+
+#define UBI_BIG(etype, extra)  do { \
+		sph_u64 h8, t0, t1, t2; \
+		sph_u64 m0 = sph_dec64le_aligned(buf +  0); \
+		sph_u64 m1 = sph_dec64le_aligned(buf +  8); \
+		sph_u64 m2 = sph_dec64le_aligned(buf + 16); \
+		sph_u64 m3 = sph_dec64le_aligned(buf + 24); \
+		sph_u64 m4 = sph_dec64le_aligned(buf + 32); \
+		sph_u64 m5 = sph_dec64le_aligned(buf + 40); \
+		sph_u64 m6 = sph_dec64le_aligned(buf + 48); \
+		sph_u64 m7 = sph_dec64le_aligned(buf + 56); \
+		sph_u64 p0 = m0; \
+		sph_u64 p1 = m1; \
+		sph_u64 p2 = m2; \
+		sph_u64 p3 = m3; \
+		sph_u64 p4 = m4; \
+		sph_u64 p5 = m5; \
+		sph_u64 p6 = m6; \
+		sph_u64 p7 = m7; \
+		t0 = SPH_T64(bcount << 6) + (sph_u64)(extra); \
+		t1 = (bcount >> 58) + ((sph_u64)(etype) << 55); \
+		TFBIG_KINIT(h0, h1, h2, h3, h4, h5, h6, h7, h8, t0, t1, t2); \
+		TFBIG_4e(0); \
+		TFBIG_4o(1); \
+		TFBIG_4e(2); \
+		TFBIG_4o(3); \
+		TFBIG_4e(4); \
+		TFBIG_4o(5); \
+		TFBIG_4e(6); \
+		TFBIG_4o(7); \
+		TFBIG_4e(8); \
+		TFBIG_4o(9); \
+		TFBIG_4e(10); \
+		TFBIG_4o(11); \
+		TFBIG_4e(12); \
+		TFBIG_4o(13); \
+		TFBIG_4e(14); \
+		TFBIG_4o(15); \
+		TFBIG_4e(16); \
+		TFBIG_4o(17); \
+		TFBIG_ADDKEY(p0, p1, p2, p3, p4, p5, p6, p7, h, t, 18); \
+		h0 = m0 ^ p0; \
+		h1 = m1 ^ p1; \
+		h2 = m2 ^ p2; \
+		h3 = m3 ^ p3; \
+		h4 = m4 ^ p4; \
+		h5 = m5 ^ p5; \
+		h6 = m6 ^ p6; \
+		h7 = m7 ^ p7; \
+	} while (0)
+
+#endif
+
+#if 0
+/* obsolete */
+#define DECL_STATE_SMALL \
+	sph_u64 h0, h1, h2, h3; \
+	sph_u64 bcount;
+
+#define READ_STATE_SMALL(sc)   do { \
+		h0 = (sc)->h0; \
+		h1 = (sc)->h1; \
+		h2 = (sc)->h2; \
+		h3 = (sc)->h3; \
+		bcount = sc->bcount; \
+	} while (0)
+
+#define WRITE_STATE_SMALL(sc)   do { \
+		(sc)->h0 = h0; \
+		(sc)->h1 = h1; \
+		(sc)->h2 = h2; \
+		(sc)->h3 = h3; \
+		sc->bcount = bcount; \
+	} while (0)
+#endif
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+#define DECL_STATE_BIG \
+	sph_u64 h[27]; \
+	sph_u64 bcount;
+
+#define READ_STATE_BIG(sc)   do { \
+		h[0] = (sc)->h0; \
+		h[1] = (sc)->h1; \
+		h[2] = (sc)->h2; \
+		h[3] = (sc)->h3; \
+		h[4] = (sc)->h4; \
+		h[5] = (sc)->h5; \
+		h[6] = (sc)->h6; \
+		h[7] = (sc)->h7; \
+		bcount = sc->bcount; \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		(sc)->h0 = h[0]; \
+		(sc)->h1 = h[1]; \
+		(sc)->h2 = h[2]; \
+		(sc)->h3 = h[3]; \
+		(sc)->h4 = h[4]; \
+		(sc)->h5 = h[5]; \
+		(sc)->h6 = h[6]; \
+		(sc)->h7 = h[7]; \
+		sc->bcount = bcount; \
+	} while (0)
+
+#else
+
+#define DECL_STATE_BIG \
+	sph_u64 h0, h1, h2, h3, h4, h5, h6, h7; \
+	sph_u64 bcount;
+
+#define READ_STATE_BIG(sc)   do { \
+		h0 = (sc)->h0; \
+		h1 = (sc)->h1; \
+		h2 = (sc)->h2; \
+		h3 = (sc)->h3; \
+		h4 = (sc)->h4; \
+		h5 = (sc)->h5; \
+		h6 = (sc)->h6; \
+		h7 = (sc)->h7; \
+		bcount = sc->bcount; \
+	} while (0)
+
+#define WRITE_STATE_BIG(sc)   do { \
+		(sc)->h0 = h0; \
+		(sc)->h1 = h1; \
+		(sc)->h2 = h2; \
+		(sc)->h3 = h3; \
+		(sc)->h4 = h4; \
+		(sc)->h5 = h5; \
+		(sc)->h6 = h6; \
+		(sc)->h7 = h7; \
+		sc->bcount = bcount; \
+	} while (0)
+
+#endif
+
+#if 0
+/* obsolete */
+static void
+skein_small_init(sph_skein_small_context *sc, const sph_u64 *iv)
+{
+	sc->h0 = iv[0];
+	sc->h1 = iv[1];
+	sc->h2 = iv[2];
+	sc->h3 = iv[3];
+	sc->bcount = 0;
+	sc->ptr = 0;
+}
+#endif
+
+static void
+skein_big_init(sph_skein_big_context *sc, const sph_u64 *iv)
+{
+	sc->h0 = iv[0];
+	sc->h1 = iv[1];
+	sc->h2 = iv[2];
+	sc->h3 = iv[3];
+	sc->h4 = iv[4];
+	sc->h5 = iv[5];
+	sc->h6 = iv[6];
+	sc->h7 = iv[7];
+	sc->bcount = 0;
+	sc->ptr = 0;
+}
+
+#if 0
+/* obsolete */
+static void
+skein_small_core(sph_skein_small_context *sc, const void *data, size_t len)
+{
+	unsigned char *buf;
+	size_t ptr, clen;
+	unsigned first;
+	DECL_STATE_SMALL
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	clen = (sizeof sc->buf) - ptr;
+	if (len <= clen) {
+		memcpy(buf + ptr, data, len);
+		sc->ptr = ptr + len;
+		return;
+	}
+	if (clen != 0) {
+		memcpy(buf + ptr, data, clen);
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+	}
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+	READ_STATE_SMALL(sc);
+	first = (bcount == 0) << 7;
+	for (;;) {
+		bcount ++;
+		UBI_SMALL(96 + first, 0);
+		if (len <= sizeof sc->buf)
+			break;
+		first = 0;
+		memcpy(buf, data, sizeof sc->buf);
+		data = (const unsigned char *)data + sizeof sc->buf;
+		len -= sizeof sc->buf;
+	}
+	WRITE_STATE_SMALL(sc);
+	sc->ptr = len;
+	memcpy(buf, data, len);
+
+#else
+
+	/*
+	 * Unrolling the loop yields a slight performance boost, while
+	 * keeping the code size aorund 24 kB on 32-bit x86.
+	 */
+	READ_STATE_SMALL(sc);
+	first = (bcount == 0) << 7;
+	for (;;) {
+		bcount ++;
+		UBI_SMALL(96 + first, 0);
+		if (len <= sizeof sc->buf)
+			break;
+		buf = (unsigned char *)data;
+		bcount ++;
+		UBI_SMALL(96, 0);
+		if (len <= 2 * sizeof sc->buf) {
+			data = buf + sizeof sc->buf;
+			len -= sizeof sc->buf;
+			break;
+		}
+		buf += sizeof sc->buf;
+		data = buf + sizeof sc->buf;
+		first = 0;
+		len -= 2 * sizeof sc->buf;
+	}
+	WRITE_STATE_SMALL(sc);
+	sc->ptr = len;
+	memcpy(sc->buf, data, len);
+
+#endif
+}
+#endif
+
+static void
+skein_big_core(sph_skein_big_context *sc, const void *data, size_t len)
+{
+	/*
+	 * The Skein "final bit" in the tweak is troublesome here,
+	 * because if the input has a length which is a multiple of the
+	 * block size (512 bits) then that bit must be set for the
+	 * final block, which is full of message bits (padding in
+	 * Skein can be reduced to no extra bit at all). However, this
+	 * function cannot know whether it processes the last chunks of
+	 * the message or not. Hence we may keep a full block of buffered
+	 * data (64 bytes).
+	 */
+	unsigned char *buf;
+	size_t ptr;
+	unsigned first;
+	DECL_STATE_BIG
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	if (len <= (sizeof sc->buf) - ptr) {
+		memcpy(buf + ptr, data, len);
+		ptr += len;
+		sc->ptr = ptr;
+		return;
+	}
+
+	READ_STATE_BIG(sc);
+
+	first = (bcount == 0) << 7;
+	do {
+		size_t clen;
+
+		if (ptr == sizeof sc->buf) {
+			bcount ++;
+			UBI_BIG(96 + first, 0);
+			first = 0;
+			ptr = 0;
+		}
+		clen = (sizeof sc->buf) - ptr;
+		if (clen > len)
+			clen = len;
+		memcpy(buf + ptr, data, clen);
+		ptr += clen;
+		data = (const unsigned char *)data + clen;
+		len -= clen;
+	} while (len > 0);
+	WRITE_STATE_BIG(sc);
+	sc->ptr = ptr;
+}
+
+#if 0
+/* obsolete */
+static void
+skein_small_close(sph_skein_small_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	unsigned et;
+	int i;
+	DECL_STATE_SMALL
+
+	if (n != 0) {
+		unsigned z;
+		unsigned char x;
+
+		z = 0x80 >> n;
+		x = ((ub & -z) | z) & 0xFF;
+		skein_small_core(sc, &x, 1);
+	}
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+	READ_STATE_SMALL(sc);
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	et = 352 + ((bcount == 0) << 7) + (n != 0);
+	for (i = 0; i < 2; i ++) {
+		UBI_SMALL(et, ptr);
+		if (i == 0) {
+			memset(buf, 0, sizeof sc->buf);
+			bcount = 0;
+			et = 510;
+			ptr = 8;
+		}
+	}
+
+	sph_enc64le_aligned(buf +  0, h0);
+	sph_enc64le_aligned(buf +  8, h1);
+	sph_enc64le_aligned(buf + 16, h2);
+	sph_enc64le_aligned(buf + 24, h3);
+	memcpy(dst, buf, out_len);
+}
+#endif
+
+static void
+skein_big_close(sph_skein_big_context *sc, unsigned ub, unsigned n,
+	void *dst, size_t out_len)
+{
+	unsigned char *buf;
+	size_t ptr;
+	unsigned et;
+	int i;
+#if SPH_SMALL_FOOTPRINT_SKEIN
+	size_t u;
+#endif
+	DECL_STATE_BIG
+
+	/*
+	 * Add bit padding if necessary.
+	 */
+	if (n != 0) {
+		unsigned z;
+		unsigned char x;
+
+		z = 0x80 >> n;
+		x = ((ub & -z) | z) & 0xFF;
+		skein_big_core(sc, &x, 1);
+	}
+
+	buf = sc->buf;
+	ptr = sc->ptr;
+
+	/*
+	 * At that point, if ptr == 0, then the message was empty;
+	 * otherwise, there is between 1 and 64 bytes (inclusive) which
+	 * are yet to be processed. Either way, we complete the buffer
+	 * to a full block with zeros (the Skein specification mandates
+	 * that an empty message is padded so that there is at least
+	 * one block to process).
+	 *
+	 * Once this block has been processed, we do it again, with
+	 * a block full of zeros, for the output (that block contains
+	 * the encoding of "0", over 8 bytes, then padded with zeros).
+	 */
+	READ_STATE_BIG(sc);
+	memset(buf + ptr, 0, (sizeof sc->buf) - ptr);
+	et = 352 + ((bcount == 0) << 7) + (n != 0);
+	for (i = 0; i < 2; i ++) {
+		UBI_BIG(et, ptr);
+		if (i == 0) {
+			memset(buf, 0, sizeof sc->buf);
+			bcount = 0;
+			et = 510;
+			ptr = 8;
+		}
+	}
+
+#if SPH_SMALL_FOOTPRINT_SKEIN
+
+	/*
+	 * We use a temporary buffer because we must support the case
+	 * where output size is not a multiple of 64 (namely, a 224-bit
+	 * output).
+	 */
+	for (u = 0; u < out_len; u += 8)
+		sph_enc64le_aligned(buf + u, h[u >> 3]);
+	memcpy(dst, buf, out_len);
+
+#else
+
+	sph_enc64le_aligned(buf +  0, h0);
+	sph_enc64le_aligned(buf +  8, h1);
+	sph_enc64le_aligned(buf + 16, h2);
+	sph_enc64le_aligned(buf + 24, h3);
+	sph_enc64le_aligned(buf + 32, h4);
+	sph_enc64le_aligned(buf + 40, h5);
+	sph_enc64le_aligned(buf + 48, h6);
+	sph_enc64le_aligned(buf + 56, h7);
+	memcpy(dst, buf, out_len);
+
+#endif
+}
+
+#if 0
+/* obsolete */
+static const sph_u64 IV224[] = {
+	SPH_C64(0xC6098A8C9AE5EA0B), SPH_C64(0x876D568608C5191C),
+	SPH_C64(0x99CB88D7D7F53884), SPH_C64(0x384BDDB1AEDDB5DE)
+};
+
+static const sph_u64 IV256[] = {
+	SPH_C64(0xFC9DA860D048B449), SPH_C64(0x2FCA66479FA7D833),
+	SPH_C64(0xB33BC3896656840F), SPH_C64(0x6A54E920FDE8DA69)
+};
+#endif
+
+static const sph_u64 IV224[] = {
+	SPH_C64(0xCCD0616248677224), SPH_C64(0xCBA65CF3A92339EF),
+	SPH_C64(0x8CCD69D652FF4B64), SPH_C64(0x398AED7B3AB890B4),
+	SPH_C64(0x0F59D1B1457D2BD0), SPH_C64(0x6776FE6575D4EB3D),
+	SPH_C64(0x99FBC70E997413E9), SPH_C64(0x9E2CFCCFE1C41EF7)
+};
+
+static const sph_u64 IV256[] = {
+	SPH_C64(0xCCD044A12FDB3E13), SPH_C64(0xE83590301A79A9EB),
+	SPH_C64(0x55AEA0614F816E6F), SPH_C64(0x2A2767A4AE9B94DB),
+	SPH_C64(0xEC06025E74DD7683), SPH_C64(0xE7A436CDC4746251),
+	SPH_C64(0xC36FBAF9393AD185), SPH_C64(0x3EEDBA1833EDFC13)
+};
+
+static const sph_u64 IV384[] = {
+	SPH_C64(0xA3F6C6BF3A75EF5F), SPH_C64(0xB0FEF9CCFD84FAA4),
+	SPH_C64(0x9D77DD663D770CFE), SPH_C64(0xD798CBF3B468FDDA),
+	SPH_C64(0x1BC4A6668A0E4465), SPH_C64(0x7ED7D434E5807407),
+	SPH_C64(0x548FC1ACD4EC44D6), SPH_C64(0x266E17546AA18FF8)
+};
+
+static const sph_u64 IV512[] = {
+	SPH_C64(0x4903ADFF749C51CE), SPH_C64(0x0D95DE399746DF03),
+	SPH_C64(0x8FD1934127C79BCE), SPH_C64(0x9A255629FF352CB1),
+	SPH_C64(0x5DB62599DF6CA7B0), SPH_C64(0xEABE394CA9D5C3F4),
+	SPH_C64(0x991112C71A75B523), SPH_C64(0xAE18A40B660FCC33)
+};
+
+#if 0
+/* obsolete */
+/* see sph_skein.h */
+void
+sph_skein224_init(void *cc)
+{
+	skein_small_init(cc, IV224);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224(void *cc, const void *data, size_t len)
+{
+	skein_small_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224_close(void *cc, void *dst)
+{
+	sph_skein224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_small_close(cc, ub, n, dst, 28);
+	sph_skein224_init(cc);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_init(void *cc)
+{
+	skein_small_init(cc, IV256);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256(void *cc, const void *data, size_t len)
+{
+	skein_small_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_close(void *cc, void *dst)
+{
+	sph_skein256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_small_close(cc, ub, n, dst, 32);
+	sph_skein256_init(cc);
+}
+#endif
+
+/* see sph_skein.h */
+void
+sph_skein224_init(void *cc)
+{
+	skein_big_init(cc, IV224);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224(void *cc, const void *data, size_t len)
+{
+	skein_big_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224_close(void *cc, void *dst)
+{
+	sph_skein224_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein224_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_big_close(cc, ub, n, dst, 28);
+//	sph_skein224_init(cc);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_init(void *cc)
+{
+	skein_big_init(cc, IV256);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256(void *cc, const void *data, size_t len)
+{
+	skein_big_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_close(void *cc, void *dst)
+{
+	sph_skein256_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein256_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_big_close(cc, ub, n, dst, 32);
+//	sph_skein256_init(cc);
+}
+
+/* see sph_skein.h */
+void
+sph_skein384_init(void *cc)
+{
+	skein_big_init(cc, IV384);
+}
+
+/* see sph_skein.h */
+void
+sph_skein384(void *cc, const void *data, size_t len)
+{
+	skein_big_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein384_close(void *cc, void *dst)
+{
+	sph_skein384_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein384_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_big_close(cc, ub, n, dst, 48);
+//	sph_skein384_init(cc);
+}
+
+/* see sph_skein.h */
+void
+sph_skein512_init(void *cc)
+{
+	skein_big_init(cc, IV512);
+}
+
+/* see sph_skein.h */
+void
+sph_skein512(void *cc, const void *data, size_t len)
+{
+	skein_big_core(cc, data, len);
+}
+
+/* see sph_skein.h */
+void
+sph_skein512_close(void *cc, void *dst)
+{
+	sph_skein512_addbits_and_close(cc, 0, 0, dst);
+}
+
+/* see sph_skein.h */
+void
+sph_skein512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst)
+{
+	skein_big_close(cc, ub, n, dst, 64);
+//	sph_skein512_init(cc);
+}
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_skein.h b/src/crypto/ghostrider/sph_skein.h
new file mode 100644
index 000000000..bddbc86fa
--- /dev/null
+++ b/src/crypto/ghostrider/sph_skein.h
@@ -0,0 +1,298 @@
+/* $Id: sph_skein.h 253 2011-06-07 18:33:10Z tp $ */
+/**
+ * Skein interface. The Skein specification defines three main
+ * functions, called Skein-256, Skein-512 and Skein-1024, which can be
+ * further parameterized with an output length. For the SHA-3
+ * competition, Skein-512 is used for output sizes of 224, 256, 384 and
+ * 512 bits; this is what this code implements. Thus, we hereafter call
+ * Skein-224, Skein-256, Skein-384 and Skein-512 what the Skein
+ * specification defines as Skein-512-224, Skein-512-256, Skein-512-384
+ * and Skein-512-512, respectively.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_skein.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_SKEIN_H__
+#define SPH_SKEIN_H__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#include <stddef.h>
+#include "sph_types.h"
+
+#if SPH_64
+
+/**
+ * Output size (in bits) for Skein-224.
+ */
+#define SPH_SIZE_skein224   224
+
+/**
+ * Output size (in bits) for Skein-256.
+ */
+#define SPH_SIZE_skein256   256
+
+/**
+ * Output size (in bits) for Skein-384.
+ */
+#define SPH_SIZE_skein384   384
+
+/**
+ * Output size (in bits) for Skein-512.
+ */
+#define SPH_SIZE_skein512   512
+
+/**
+ * This structure is a context for Skein computations (with a 384- or
+ * 512-bit output): it contains the intermediate values and some data
+ * from the last entered block. Once a Skein computation has been
+ * performed, the context can be reused for another computation.
+ *
+ * The contents of this structure are private. A running Skein computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+	unsigned char buf[64];    /* first field, for alignment */
+	size_t ptr;
+	sph_u64 h0, h1, h2, h3, h4, h5, h6, h7;
+	sph_u64 bcount;
+#endif
+} sph_skein_big_context;
+
+/**
+ * Type for a Skein-224 context (identical to the common "big" context).
+ */
+typedef sph_skein_big_context sph_skein224_context;
+
+/**
+ * Type for a Skein-256 context (identical to the common "big" context).
+ */
+typedef sph_skein_big_context sph_skein256_context;
+
+/**
+ * Type for a Skein-384 context (identical to the common "big" context).
+ */
+typedef sph_skein_big_context sph_skein384_context;
+
+/**
+ * Type for a Skein-512 context (identical to the common "big" context).
+ */
+typedef sph_skein_big_context sph_skein512_context;
+
+/**
+ * Initialize a Skein-224 context. This process performs no memory allocation.
+ *
+ * @param cc   the Skein-224 context (pointer to a
+ *             <code>sph_skein224_context</code>)
+ */
+void sph_skein224_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Skein-224 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_skein224(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Skein-224 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (28 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Skein-224 context
+ * @param dst   the destination buffer
+ */
+void sph_skein224_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (28 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Skein-224 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_skein224_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Skein-256 context. This process performs no memory allocation.
+ *
+ * @param cc   the Skein-256 context (pointer to a
+ *             <code>sph_skein256_context</code>)
+ */
+void sph_skein256_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Skein-256 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_skein256(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Skein-256 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (32 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Skein-256 context
+ * @param dst   the destination buffer
+ */
+void sph_skein256_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (32 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Skein-256 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_skein256_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Skein-384 context. This process performs no memory allocation.
+ *
+ * @param cc   the Skein-384 context (pointer to a
+ *             <code>sph_skein384_context</code>)
+ */
+void sph_skein384_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Skein-384 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_skein384(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Skein-384 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (48 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Skein-384 context
+ * @param dst   the destination buffer
+ */
+void sph_skein384_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (48 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Skein-384 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_skein384_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+/**
+ * Initialize a Skein-512 context. This process performs no memory allocation.
+ *
+ * @param cc   the Skein-512 context (pointer to a
+ *             <code>sph_skein512_context</code>)
+ */
+void sph_skein512_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing).
+ *
+ * @param cc     the Skein-512 context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_skein512(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current Skein-512 computation and output the result into
+ * the provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the Skein-512 context
+ * @param dst   the destination buffer
+ */
+void sph_skein512_close(void *cc, void *dst);
+
+/**
+ * Add a few additional bits (0 to 7) to the current computation, then
+ * terminate it and output the result in the provided buffer, which must
+ * be wide enough to accomodate the result (64 bytes). If bit number i
+ * in <code>ub</code> has value 2^i, then the extra bits are those
+ * numbered 7 downto 8-n (this is the big-endian convention at the byte
+ * level). The context is automatically reinitialized.
+ *
+ * @param cc    the Skein-512 context
+ * @param ub    the extra bits
+ * @param n     the number of extra bits (0 to 7)
+ * @param dst   the destination buffer
+ */
+void sph_skein512_addbits_and_close(
+	void *cc, unsigned ub, unsigned n, void *dst);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/ghostrider/sph_types.h b/src/crypto/ghostrider/sph_types.h
new file mode 100644
index 000000000..7295b0b37
--- /dev/null
+++ b/src/crypto/ghostrider/sph_types.h
@@ -0,0 +1,1976 @@
+/* $Id: sph_types.h 260 2011-07-21 01:02:38Z tp $ */
+/**
+ * Basic type definitions.
+ *
+ * This header file defines the generic integer types that will be used
+ * for the implementation of hash functions; it also contains helper
+ * functions which encode and decode multi-byte integer values, using
+ * either little-endian or big-endian conventions.
+ *
+ * This file contains a compile-time test on the size of a byte
+ * (the <code>unsigned char</code> C type). If bytes are not octets,
+ * i.e. if they do not have a size of exactly 8 bits, then compilation
+ * is aborted. Architectures where bytes are not octets are relatively
+ * rare, even in the embedded devices market. We forbid non-octet bytes
+ * because there is no clear convention on how octet streams are encoded
+ * on such systems.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ * 
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_types.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_TYPES_H__
+#define SPH_TYPES_H__
+
+#include <limits.h>
+
+/*
+ * All our I/O functions are defined over octet streams. We do not know
+ * how to handle input data if bytes are not octets.
+ */
+#if CHAR_BIT != 8
+#error This code requires 8-bit bytes
+#endif
+
+/* ============= BEGIN documentation block for Doxygen ============ */
+
+#ifdef DOXYGEN_IGNORE
+
+/** @mainpage sphlib C code documentation
+ *
+ * @section overview Overview
+ *
+ * <code>sphlib</code> is a library which contains implementations of
+ * various cryptographic hash functions. These pages have been generated
+ * with <a href="http://www.doxygen.org/index.html">doxygen</a> and
+ * document the API for the C implementations.
+ *
+ * The API is described in appropriate header files, which are available
+ * in the "Files" section. Each hash function family has its own header,
+ * whose name begins with <code>"sph_"</code> and contains the family
+ * name. For instance, the API for the RIPEMD hash functions is available
+ * in the header file <code>sph_ripemd.h</code>.
+ *
+ * @section principles API structure and conventions
+ *
+ * @subsection io Input/output conventions
+ *
+ * In all generality, hash functions operate over strings of bits.
+ * Individual bits are rarely encountered in C programming or actual
+ * communication protocols; most protocols converge on the ubiquitous
+ * "octet" which is a group of eight bits. Data is thus expressed as a
+ * stream of octets. The C programming language contains the notion of a
+ * "byte", which is a data unit managed under the type <code>"unsigned
+ * char"</code>. The C standard prescribes that a byte should hold at
+ * least eight bits, but possibly more. Most modern architectures, even
+ * in the embedded world, feature eight-bit bytes, i.e. map bytes to
+ * octets.
+ *
+ * Nevertheless, for some of the implemented hash functions, an extra
+ * API has been added, which allows the input of arbitrary sequences of
+ * bits: when the computation is about to be closed, 1 to 7 extra bits
+ * can be added. The functions for which this API is implemented include
+ * the SHA-2 functions and all SHA-3 candidates.
+ *
+ * <code>sphlib</code> defines hash function which may hash octet streams,
+ * i.e. streams of bits where the number of bits is a multiple of eight.
+ * The data input functions in the <code>sphlib</code> API expect data
+ * as anonymous pointers (<code>"const void *"</code>) with a length
+ * (of type <code>"size_t"</code>) which gives the input data chunk length
+ * in bytes. A byte is assumed to be an octet; the <code>sph_types.h</code>
+ * header contains a compile-time test which prevents compilation on
+ * architectures where this property is not met.
+ *
+ * The hash function output is also converted into bytes. All currently
+ * implemented hash functions have an output width which is a multiple of
+ * eight, and this is likely to remain true for new designs.
+ *
+ * Most hash functions internally convert input data into 32-bit of 64-bit
+ * words, using either little-endian or big-endian conversion. The hash
+ * output also often consists of such words, which are encoded into output
+ * bytes with a similar endianness convention. Some hash functions have
+ * been only loosely specified on that subject; when necessary,
+ * <code>sphlib</code> has been tested against published "reference"
+ * implementations in order to use the same conventions.
+ *
+ * @subsection shortname Function short name
+ *
+ * Each implemented hash function has a "short name" which is used
+ * internally to derive the identifiers for the functions and context
+ * structures which the function uses. For instance, MD5 has the short
+ * name <code>"md5"</code>. Short names are listed in the next section,
+ * for the implemented hash functions. In subsequent sections, the
+ * short name will be assumed to be <code>"XXX"</code>: replace with the
+ * actual hash function name to get the C identifier.
+ *
+ * Note: some functions within the same family share the same core
+ * elements, such as update function or context structure. Correspondingly,
+ * some of the defined types or functions may actually be macros which
+ * transparently evaluate to another type or function name.
+ *
+ * @subsection context Context structure
+ *
+ * Each implemented hash fonction has its own context structure, available
+ * under the type name <code>"sph_XXX_context"</code> for the hash function
+ * with short name <code>"XXX"</code>. This structure holds all needed
+ * state for a running hash computation.
+ *
+ * The contents of these structures are meant to be opaque, and private
+ * to the implementation. However, these contents are specified in the
+ * header files so that application code which uses <code>sphlib</code>
+ * may access the size of those structures.
+ *
+ * The caller is responsible for allocating the context structure,
+ * whether by dynamic allocation (<code>malloc()</code> or equivalent),
+ * static allocation (a global permanent variable), as an automatic
+ * variable ("on the stack"), or by any other mean which ensures proper
+ * structure alignment. <code>sphlib</code> code performs no dynamic
+ * allocation by itself.
+ *
+ * The context must be initialized before use, using the
+ * <code>sph_XXX_init()</code> function. This function sets the context
+ * state to proper initial values for hashing.
+ *
+ * Since all state data is contained within the context structure,
+ * <code>sphlib</code> is thread-safe and reentrant: several hash
+ * computations may be performed in parallel, provided that they do not
+ * operate on the same context. Moreover, a running computation can be
+ * cloned by copying the context (with a simple <code>memcpy()</code>):
+ * the context and its clone are then independant and may be updated
+ * with new data and/or closed without interfering with each other.
+ * Similarly, a context structure can be moved in memory at will:
+ * context structures contain no pointer, in particular no pointer to
+ * themselves.
+ *
+ * @subsection dataio Data input
+ *
+ * Hashed data is input with the <code>sph_XXX()</code> fonction, which
+ * takes as parameters a pointer to the context, a pointer to the data
+ * to hash, and the number of data bytes to hash. The context is updated
+ * with the new data.
+ *
+ * Data can be input in one or several calls, with arbitrary input lengths.
+ * However, it is best, performance wise, to input data by relatively big
+ * chunks (say a few kilobytes), because this allows <code>sphlib</code> to
+ * optimize things and avoid internal copying.
+ *
+ * When all data has been input, the context can be closed with
+ * <code>sph_XXX_close()</code>. The hash output is computed and written
+ * into the provided buffer. The caller must take care to provide a
+ * buffer of appropriate length; e.g., when using SHA-1, the output is
+ * a 20-byte word, therefore the output buffer must be at least 20-byte
+ * long.
+ *
+ * For some hash functions, the <code>sph_XXX_addbits_and_close()</code>
+ * function can be used instead of <code>sph_XXX_close()</code>. This
+ * function can take a few extra <strong>bits</strong> to be added at
+ * the end of the input message. This allows hashing messages with a
+ * bit length which is not a multiple of 8. The extra bits are provided
+ * as an unsigned integer value, and a bit count. The bit count must be
+ * between 0 and 7, inclusive. The extra bits are provided as bits 7 to
+ * 0 (bits of numerical value 128, 64, 32... downto 0), in that order.
+ * For instance, to add three bits of value 1, 1 and 0, the unsigned
+ * integer will have value 192 (1*128 + 1*64 + 0*32) and the bit count
+ * will be 3.
+ *
+ * The <code>SPH_SIZE_XXX</code> macro is defined for each hash function;
+ * it evaluates to the function output size, expressed in bits. For instance,
+ * <code>SPH_SIZE_sha1</code> evaluates to <code>160</code>.
+ *
+ * When closed, the context is automatically reinitialized and can be
+ * immediately used for another computation. It is not necessary to call
+ * <code>sph_XXX_init()</code> after a close. Note that
+ * <code>sph_XXX_init()</code> can still be called to "reset" a context,
+ * i.e. forget previously input data, and get back to the initial state.
+ *
+ * @subsection alignment Data alignment
+ *
+ * "Alignment" is a property of data, which is said to be "properly
+ * aligned" when its emplacement in memory is such that the data can
+ * be optimally read by full words. This depends on the type of access;
+ * basically, some hash functions will read data by 32-bit or 64-bit
+ * words. <code>sphlib</code> does not mandate such alignment for input
+ * data, but using aligned data can substantially improve performance.
+ *
+ * As a rule, it is best to input data by chunks whose length (in bytes)
+ * is a multiple of eight, and which begins at "generally aligned"
+ * addresses, such as the base address returned by a call to
+ * <code>malloc()</code>.
+ *
+ * @section functions Implemented functions
+ *
+ * We give here the list of implemented functions. They are grouped by
+ * family; to each family corresponds a specific header file. Each
+ * individual function has its associated "short name". Please refer to
+ * the documentation for that header file to get details on the hash
+ * function denomination and provenance.
+ *
+ * Note: the functions marked with a '(64)' in the list below are
+ * available only if the C compiler provides an integer type of length
+ * 64 bits or more. Such a type is mandatory in the latest C standard
+ * (ISO 9899:1999, aka "C99") and is present in several older compilers
+ * as well, so chances are that such a type is available.
+ *
+ * - HAVAL family: file <code>sph_haval.h</code>
+ *   - HAVAL-128/3 (128-bit, 3 passes): short name: <code>haval128_3</code>
+ *   - HAVAL-128/4 (128-bit, 4 passes): short name: <code>haval128_4</code>
+ *   - HAVAL-128/5 (128-bit, 5 passes): short name: <code>haval128_5</code>
+ *   - HAVAL-160/3 (160-bit, 3 passes): short name: <code>haval160_3</code>
+ *   - HAVAL-160/4 (160-bit, 4 passes): short name: <code>haval160_4</code>
+ *   - HAVAL-160/5 (160-bit, 5 passes): short name: <code>haval160_5</code>
+ *   - HAVAL-192/3 (192-bit, 3 passes): short name: <code>haval192_3</code>
+ *   - HAVAL-192/4 (192-bit, 4 passes): short name: <code>haval192_4</code>
+ *   - HAVAL-192/5 (192-bit, 5 passes): short name: <code>haval192_5</code>
+ *   - HAVAL-224/3 (224-bit, 3 passes): short name: <code>haval224_3</code>
+ *   - HAVAL-224/4 (224-bit, 4 passes): short name: <code>haval224_4</code>
+ *   - HAVAL-224/5 (224-bit, 5 passes): short name: <code>haval224_5</code>
+ *   - HAVAL-256/3 (256-bit, 3 passes): short name: <code>haval256_3</code>
+ *   - HAVAL-256/4 (256-bit, 4 passes): short name: <code>haval256_4</code>
+ *   - HAVAL-256/5 (256-bit, 5 passes): short name: <code>haval256_5</code>
+ * - MD2: file <code>sph_md2.h</code>, short name: <code>md2</code>
+ * - MD4: file <code>sph_md4.h</code>, short name: <code>md4</code>
+ * - MD5: file <code>sph_md5.h</code>, short name: <code>md5</code>
+ * - PANAMA: file <code>sph_panama.h</code>, short name: <code>panama</code>
+ * - RadioGatun family: file <code>sph_radiogatun.h</code>
+ *   - RadioGatun[32]: short name: <code>radiogatun32</code>
+ *   - RadioGatun[64]: short name: <code>radiogatun64</code> (64)
+ * - RIPEMD family: file <code>sph_ripemd.h</code>
+ *   - RIPEMD: short name: <code>ripemd</code>
+ *   - RIPEMD-128: short name: <code>ripemd128</code>
+ *   - RIPEMD-160: short name: <code>ripemd160</code>
+ * - SHA-0: file <code>sph_sha0.h</code>, short name: <code>sha0</code>
+ * - SHA-1: file <code>sph_sha1.h</code>, short name: <code>sha1</code>
+ * - SHA-2 family, 32-bit hashes: file <code>sph_sha2.h</code>
+ *   - SHA-224: short name: <code>sha224</code>
+ *   - SHA-256: short name: <code>sha256</code>
+ *   - SHA-384: short name: <code>sha384</code> (64)
+ *   - SHA-512: short name: <code>sha512</code> (64)
+ * - Tiger family: file <code>sph_tiger.h</code>
+ *   - Tiger: short name: <code>tiger</code> (64)
+ *   - Tiger2: short name: <code>tiger2</code> (64)
+ * - WHIRLPOOL family: file <code>sph_whirlpool.h</code>
+ *   - WHIRLPOOL-0: short name: <code>whirlpool0</code> (64)
+ *   - WHIRLPOOL-1: short name: <code>whirlpool1</code> (64)
+ *   - WHIRLPOOL: short name: <code>whirlpool</code> (64)
+ *
+ * The fourteen second-round SHA-3 candidates are also implemented;
+ * when applicable, the implementations follow the "final" specifications
+ * as published for the third round of the SHA-3 competition (BLAKE,
+ * Groestl, JH, Keccak and Skein have been tweaked for third round).
+ *
+ * - BLAKE family: file <code>sph_blake.h</code>
+ *   - BLAKE-224: short name: <code>blake224</code>
+ *   - BLAKE-256: short name: <code>blake256</code>
+ *   - BLAKE-384: short name: <code>blake384</code>
+ *   - BLAKE-512: short name: <code>blake512</code>
+ * - BMW (Blue Midnight Wish) family: file <code>sph_bmw.h</code>
+ *   - BMW-224: short name: <code>bmw224</code>
+ *   - BMW-256: short name: <code>bmw256</code>
+ *   - BMW-384: short name: <code>bmw384</code> (64)
+ *   - BMW-512: short name: <code>bmw512</code> (64)
+ * - CubeHash family: file <code>sph_cubehash.h</code> (specified as
+ *   CubeHash16/32 in the CubeHash specification)
+ *   - CubeHash-224: short name: <code>cubehash224</code>
+ *   - CubeHash-256: short name: <code>cubehash256</code>
+ *   - CubeHash-384: short name: <code>cubehash384</code>
+ *   - CubeHash-512: short name: <code>cubehash512</code>
+ * - ECHO family: file <code>sph_echo.h</code>
+ *   - ECHO-224: short name: <code>echo224</code>
+ *   - ECHO-256: short name: <code>echo256</code>
+ *   - ECHO-384: short name: <code>echo384</code>
+ *   - ECHO-512: short name: <code>echo512</code>
+ * - Fugue family: file <code>sph_fugue.h</code>
+ *   - Fugue-224: short name: <code>fugue224</code>
+ *   - Fugue-256: short name: <code>fugue256</code>
+ *   - Fugue-384: short name: <code>fugue384</code>
+ *   - Fugue-512: short name: <code>fugue512</code>
+ * - Groestl family: file <code>sph_groestl.h</code>
+ *   - Groestl-224: short name: <code>groestl224</code>
+ *   - Groestl-256: short name: <code>groestl256</code>
+ *   - Groestl-384: short name: <code>groestl384</code>
+ *   - Groestl-512: short name: <code>groestl512</code>
+ * - Hamsi family: file <code>sph_hamsi.h</code>
+ *   - Hamsi-224: short name: <code>hamsi224</code>
+ *   - Hamsi-256: short name: <code>hamsi256</code>
+ *   - Hamsi-384: short name: <code>hamsi384</code>
+ *   - Hamsi-512: short name: <code>hamsi512</code>
+ * - JH family: file <code>sph_jh.h</code>
+ *   - JH-224: short name: <code>jh224</code>
+ *   - JH-256: short name: <code>jh256</code>
+ *   - JH-384: short name: <code>jh384</code>
+ *   - JH-512: short name: <code>jh512</code>
+ * - Keccak family: file <code>sph_keccak.h</code>
+ *   - Keccak-224: short name: <code>keccak224</code>
+ *   - Keccak-256: short name: <code>keccak256</code>
+ *   - Keccak-384: short name: <code>keccak384</code>
+ *   - Keccak-512: short name: <code>keccak512</code>
+ * - Luffa family: file <code>sph_luffa.h</code>
+ *   - Luffa-224: short name: <code>luffa224</code>
+ *   - Luffa-256: short name: <code>luffa256</code>
+ *   - Luffa-384: short name: <code>luffa384</code>
+ *   - Luffa-512: short name: <code>luffa512</code>
+ * - Shabal family: file <code>sph_shabal.h</code>
+ *   - Shabal-192: short name: <code>shabal192</code>
+ *   - Shabal-224: short name: <code>shabal224</code>
+ *   - Shabal-256: short name: <code>shabal256</code>
+ *   - Shabal-384: short name: <code>shabal384</code>
+ *   - Shabal-512: short name: <code>shabal512</code>
+ * - SHAvite-3 family: file <code>sph_shavite.h</code>
+ *   - SHAvite-224 (nominally "SHAvite-3 with 224-bit output"):
+ *     short name: <code>shabal224</code>
+ *   - SHAvite-256 (nominally "SHAvite-3 with 256-bit output"):
+ *     short name: <code>shabal256</code>
+ *   - SHAvite-384 (nominally "SHAvite-3 with 384-bit output"):
+ *     short name: <code>shabal384</code>
+ *   - SHAvite-512 (nominally "SHAvite-3 with 512-bit output"):
+ *     short name: <code>shabal512</code>
+ * - SIMD family: file <code>sph_simd.h</code>
+ *   - SIMD-224: short name: <code>simd224</code>
+ *   - SIMD-256: short name: <code>simd256</code>
+ *   - SIMD-384: short name: <code>simd384</code>
+ *   - SIMD-512: short name: <code>simd512</code>
+ * - Skein family: file <code>sph_skein.h</code>
+ *   - Skein-224 (nominally specified as Skein-512-224): short name:
+ *     <code>skein224</code> (64)
+ *   - Skein-256 (nominally specified as Skein-512-256): short name:
+ *     <code>skein256</code> (64)
+ *   - Skein-384 (nominally specified as Skein-512-384): short name:
+ *     <code>skein384</code> (64)
+ *   - Skein-512 (nominally specified as Skein-512-512): short name:
+ *     <code>skein512</code> (64)
+ *
+ * For the second-round SHA-3 candidates, the functions are as specified
+ * for round 2, i.e. with the "tweaks" that some candidates added
+ * between round 1 and round 2. Also, some of the submitted packages for
+ * round 2 contained errors, in the specification, reference code, or
+ * both. <code>sphlib</code> implements the corrected versions.
+ */
+
+/** @hideinitializer
+ * Unsigned integer type whose length is at least 32 bits; on most
+ * architectures, it will have a width of exactly 32 bits. Unsigned C
+ * types implement arithmetics modulo a power of 2; use the
+ * <code>SPH_T32()</code> macro to ensure that the value is truncated
+ * to exactly 32 bits. Unless otherwise specified, all macros and
+ * functions which accept <code>sph_u32</code> values assume that these
+ * values fit on 32 bits, i.e. do not exceed 2^32-1, even on architectures
+ * where <code>sph_u32</code> is larger than that.
+ */
+typedef __arch_dependant__ sph_u32;
+
+/** @hideinitializer
+ * Signed integer type corresponding to <code>sph_u32</code>; it has
+ * width 32 bits or more.
+ */
+typedef __arch_dependant__ sph_s32;
+
+/** @hideinitializer
+ * Unsigned integer type whose length is at least 64 bits; on most
+ * architectures which feature such a type, it will have a width of
+ * exactly 64 bits. C99-compliant platform will have this type; it
+ * is also defined when the GNU compiler (gcc) is used, and on
+ * platforms where <code>unsigned long</code> is large enough. If this
+ * type is not available, then some hash functions which depends on
+ * a 64-bit type will not be available (most notably SHA-384, SHA-512,
+ * Tiger and WHIRLPOOL).
+ */
+typedef __arch_dependant__ sph_u64;
+
+/** @hideinitializer
+ * Signed integer type corresponding to <code>sph_u64</code>; it has
+ * width 64 bits or more.
+ */
+typedef __arch_dependant__ sph_s64;
+
+/**
+ * This macro expands the token <code>x</code> into a suitable
+ * constant expression of type <code>sph_u32</code>. Depending on
+ * how this type is defined, a suffix such as <code>UL</code> may
+ * be appended to the argument.
+ *
+ * @param x   the token to expand into a suitable constant expression
+ */
+#define SPH_C32(x)
+
+/**
+ * Truncate a 32-bit value to exactly 32 bits. On most systems, this is
+ * a no-op, recognized as such by the compiler.
+ *
+ * @param x   the value to truncate (of type <code>sph_u32</code>)
+ */
+#define SPH_T32(x)
+
+/**
+ * Rotate a 32-bit value by a number of bits to the left. The rotate
+ * count must reside between 1 and 31. This macro assumes that its
+ * first argument fits in 32 bits (no extra bit allowed on machines where
+ * <code>sph_u32</code> is wider); both arguments may be evaluated
+ * several times.
+ *
+ * @param x   the value to rotate (of type <code>sph_u32</code>)
+ * @param n   the rotation count (between 1 and 31, inclusive)
+ */
+#define SPH_ROTL32(x, n)
+
+/**
+ * Rotate a 32-bit value by a number of bits to the left. The rotate
+ * count must reside between 1 and 31. This macro assumes that its
+ * first argument fits in 32 bits (no extra bit allowed on machines where
+ * <code>sph_u32</code> is wider); both arguments may be evaluated
+ * several times.
+ *
+ * @param x   the value to rotate (of type <code>sph_u32</code>)
+ * @param n   the rotation count (between 1 and 31, inclusive)
+ */
+#define SPH_ROTR32(x, n)
+
+/**
+ * This macro is defined on systems for which a 64-bit type has been
+ * detected, and is used for <code>sph_u64</code>.
+ */
+#define SPH_64
+
+/**
+ * This macro is defined on systems for the "native" integer size is
+ * 64 bits (64-bit values fit in one register).
+ */
+#define SPH_64_TRUE
+
+/**
+ * This macro expands the token <code>x</code> into a suitable
+ * constant expression of type <code>sph_u64</code>. Depending on
+ * how this type is defined, a suffix such as <code>ULL</code> may
+ * be appended to the argument. This macro is defined only if a
+ * 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param x   the token to expand into a suitable constant expression
+ */
+#define SPH_C64(x)
+
+/**
+ * Truncate a 64-bit value to exactly 64 bits. On most systems, this is
+ * a no-op, recognized as such by the compiler. This macro is defined only
+ * if a 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param x   the value to truncate (of type <code>sph_u64</code>)
+ */
+#define SPH_T64(x)
+
+/**
+ * Rotate a 64-bit value by a number of bits to the left. The rotate
+ * count must reside between 1 and 63. This macro assumes that its
+ * first argument fits in 64 bits (no extra bit allowed on machines where
+ * <code>sph_u64</code> is wider); both arguments may be evaluated
+ * several times. This macro is defined only if a 64-bit type was detected
+ * and used for <code>sph_u64</code>.
+ *
+ * @param x   the value to rotate (of type <code>sph_u64</code>)
+ * @param n   the rotation count (between 1 and 63, inclusive)
+ */
+#define SPH_ROTL64(x, n)
+
+/**
+ * Rotate a 64-bit value by a number of bits to the left. The rotate
+ * count must reside between 1 and 63. This macro assumes that its
+ * first argument fits in 64 bits (no extra bit allowed on machines where
+ * <code>sph_u64</code> is wider); both arguments may be evaluated
+ * several times. This macro is defined only if a 64-bit type was detected
+ * and used for <code>sph_u64</code>.
+ *
+ * @param x   the value to rotate (of type <code>sph_u64</code>)
+ * @param n   the rotation count (between 1 and 63, inclusive)
+ */
+#define SPH_ROTR64(x, n)
+
+/**
+ * This macro evaluates to <code>inline</code> or an equivalent construction,
+ * if available on the compilation platform, or to nothing otherwise. This
+ * is used to declare inline functions, for which the compiler should
+ * endeavour to include the code directly in the caller. Inline functions
+ * are typically defined in header files as replacement for macros.
+ */
+#define SPH_INLINE
+
+/**
+ * This macro is defined if the platform has been detected as using
+ * little-endian convention. This implies that the <code>sph_u32</code>
+ * type (and the <code>sph_u64</code> type also, if it is defined) has
+ * an exact width (i.e. exactly 32-bit, respectively 64-bit).
+ */
+#define SPH_LITTLE_ENDIAN
+
+/**
+ * This macro is defined if the platform has been detected as using
+ * big-endian convention. This implies that the <code>sph_u32</code>
+ * type (and the <code>sph_u64</code> type also, if it is defined) has
+ * an exact width (i.e. exactly 32-bit, respectively 64-bit).
+ */
+#define SPH_BIG_ENDIAN
+
+/**
+ * This macro is defined if 32-bit words (and 64-bit words, if defined)
+ * can be read from and written to memory efficiently in little-endian
+ * convention. This is the case for little-endian platforms, and also
+ * for the big-endian platforms which have special little-endian access
+ * opcodes (e.g. Ultrasparc).
+ */
+#define SPH_LITTLE_FAST
+
+/**
+ * This macro is defined if 32-bit words (and 64-bit words, if defined)
+ * can be read from and written to memory efficiently in big-endian
+ * convention. This is the case for little-endian platforms, and also
+ * for the little-endian platforms which have special big-endian access
+ * opcodes.
+ */
+#define SPH_BIG_FAST
+
+/**
+ * On some platforms, this macro is defined to an unsigned integer type
+ * into which pointer values may be cast. The resulting value can then
+ * be tested for being a multiple of 2, 4 or 8, indicating an aligned
+ * pointer for, respectively, 16-bit, 32-bit or 64-bit memory accesses.
+ */
+#define SPH_UPTR
+
+/**
+ * When defined, this macro indicates that unaligned memory accesses
+ * are possible with only a minor penalty, and thus should be prefered
+ * over strategies which first copy data to an aligned buffer.
+ */
+#define SPH_UNALIGNED
+
+/**
+ * Byte-swap a 32-bit word (i.e. <code>0x12345678</code> becomes
+ * <code>0x78563412</code>). This is an inline function which resorts
+ * to inline assembly on some platforms, for better performance.
+ *
+ * @param x   the 32-bit value to byte-swap
+ * @return  the byte-swapped value
+ */
+static inline sph_u32 sph_bswap32(sph_u32 x);
+
+/**
+ * Byte-swap a 64-bit word. This is an inline function which resorts
+ * to inline assembly on some platforms, for better performance. This
+ * function is defined only if a suitable 64-bit type was found for
+ * <code>sph_u64</code>
+ *
+ * @param x   the 64-bit value to byte-swap
+ * @return  the byte-swapped value
+ */
+static inline sph_u64 sph_bswap64(sph_u64 x);
+
+/**
+ * Decode a 16-bit unsigned value from memory, in little-endian convention
+ * (least significant byte comes first).
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline unsigned sph_dec16le(const void *src);
+
+/**
+ * Encode a 16-bit unsigned value into memory, in little-endian convention
+ * (least significant byte comes first).
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc16le(void *dst, unsigned val);
+
+/**
+ * Decode a 16-bit unsigned value from memory, in big-endian convention
+ * (most significant byte comes first).
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline unsigned sph_dec16be(const void *src);
+
+/**
+ * Encode a 16-bit unsigned value into memory, in big-endian convention
+ * (most significant byte comes first).
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc16be(void *dst, unsigned val);
+
+/**
+ * Decode a 32-bit unsigned value from memory, in little-endian convention
+ * (least significant byte comes first).
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u32 sph_dec32le(const void *src);
+
+/**
+ * Decode a 32-bit unsigned value from memory, in little-endian convention
+ * (least significant byte comes first). This function assumes that the
+ * source address is suitably aligned for a direct access, if the platform
+ * supports such things; it can thus be marginally faster than the generic
+ * <code>sph_dec32le()</code> function.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u32 sph_dec32le_aligned(const void *src);
+
+/**
+ * Encode a 32-bit unsigned value into memory, in little-endian convention
+ * (least significant byte comes first).
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc32le(void *dst, sph_u32 val);
+
+/**
+ * Encode a 32-bit unsigned value into memory, in little-endian convention
+ * (least significant byte comes first). This function assumes that the
+ * destination address is suitably aligned for a direct access, if the
+ * platform supports such things; it can thus be marginally faster than
+ * the generic <code>sph_enc32le()</code> function.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc32le_aligned(void *dst, sph_u32 val);
+
+/**
+ * Decode a 32-bit unsigned value from memory, in big-endian convention
+ * (most significant byte comes first).
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u32 sph_dec32be(const void *src);
+
+/**
+ * Decode a 32-bit unsigned value from memory, in big-endian convention
+ * (most significant byte comes first). This function assumes that the
+ * source address is suitably aligned for a direct access, if the platform
+ * supports such things; it can thus be marginally faster than the generic
+ * <code>sph_dec32be()</code> function.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u32 sph_dec32be_aligned(const void *src);
+
+/**
+ * Encode a 32-bit unsigned value into memory, in big-endian convention
+ * (most significant byte comes first).
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc32be(void *dst, sph_u32 val);
+
+/**
+ * Encode a 32-bit unsigned value into memory, in big-endian convention
+ * (most significant byte comes first). This function assumes that the
+ * destination address is suitably aligned for a direct access, if the
+ * platform supports such things; it can thus be marginally faster than
+ * the generic <code>sph_enc32be()</code> function.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc32be_aligned(void *dst, sph_u32 val);
+
+/**
+ * Decode a 64-bit unsigned value from memory, in little-endian convention
+ * (least significant byte comes first). This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u64 sph_dec64le(const void *src);
+
+/**
+ * Decode a 64-bit unsigned value from memory, in little-endian convention
+ * (least significant byte comes first). This function assumes that the
+ * source address is suitably aligned for a direct access, if the platform
+ * supports such things; it can thus be marginally faster than the generic
+ * <code>sph_dec64le()</code> function. This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u64 sph_dec64le_aligned(const void *src);
+
+/**
+ * Encode a 64-bit unsigned value into memory, in little-endian convention
+ * (least significant byte comes first). This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc64le(void *dst, sph_u64 val);
+
+/**
+ * Encode a 64-bit unsigned value into memory, in little-endian convention
+ * (least significant byte comes first). This function assumes that the
+ * destination address is suitably aligned for a direct access, if the
+ * platform supports such things; it can thus be marginally faster than
+ * the generic <code>sph_enc64le()</code> function. This function is defined
+ * only if a suitable 64-bit type was detected and used for
+ * <code>sph_u64</code>.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc64le_aligned(void *dst, sph_u64 val);
+
+/**
+ * Decode a 64-bit unsigned value from memory, in big-endian convention
+ * (most significant byte comes first). This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u64 sph_dec64be(const void *src);
+
+/**
+ * Decode a 64-bit unsigned value from memory, in big-endian convention
+ * (most significant byte comes first). This function assumes that the
+ * source address is suitably aligned for a direct access, if the platform
+ * supports such things; it can thus be marginally faster than the generic
+ * <code>sph_dec64be()</code> function. This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param src   the source address
+ * @return  the decoded value
+ */
+static inline sph_u64 sph_dec64be_aligned(const void *src);
+
+/**
+ * Encode a 64-bit unsigned value into memory, in big-endian convention
+ * (most significant byte comes first). This function is defined only
+ * if a suitable 64-bit type was detected and used for <code>sph_u64</code>.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc64be(void *dst, sph_u64 val);
+
+/**
+ * Encode a 64-bit unsigned value into memory, in big-endian convention
+ * (most significant byte comes first). This function assumes that the
+ * destination address is suitably aligned for a direct access, if the
+ * platform supports such things; it can thus be marginally faster than
+ * the generic <code>sph_enc64be()</code> function. This function is defined
+ * only if a suitable 64-bit type was detected and used for
+ * <code>sph_u64</code>.
+ *
+ * @param dst   the destination buffer
+ * @param val   the value to encode
+ */
+static inline void sph_enc64be_aligned(void *dst, sph_u64 val);
+
+#endif
+
+/* ============== END documentation block for Doxygen ============= */
+
+#ifndef DOXYGEN_IGNORE
+
+/*
+ * We want to define the types "sph_u32" and "sph_u64" which hold
+ * unsigned values of at least, respectively, 32 and 64 bits. These
+ * tests should select appropriate types for most platforms. The
+ * macro "SPH_64" is defined if the 64-bit is supported.
+ */
+
+#undef SPH_64
+#undef SPH_64_TRUE
+
+#if defined __STDC__ && __STDC_VERSION__ >= 199901L
+
+/*
+ * On C99 implementations, we can use <stdint.h> to get an exact 64-bit
+ * type, if any, or otherwise use a wider type (which must exist, for
+ * C99 conformance).
+ */
+
+#include <stdint.h>
+
+#ifdef UINT32_MAX
+typedef uint32_t sph_u32;
+typedef int32_t sph_s32;
+#else
+typedef uint_fast32_t sph_u32;
+typedef int_fast32_t sph_s32;
+#endif
+#if !SPH_NO_64
+#ifdef UINT64_MAX
+typedef uint64_t sph_u64;
+typedef int64_t sph_s64;
+#else
+typedef uint_fast64_t sph_u64;
+typedef int_fast64_t sph_s64;
+#endif
+#endif
+
+#define SPH_C32(x)    ((sph_u32)(x))
+#if !SPH_NO_64
+#define SPH_C64(x)    ((sph_u64)(x))
+#define SPH_64  1
+#endif
+
+#else
+
+/*
+ * On non-C99 systems, we use "unsigned int" if it is wide enough,
+ * "unsigned long" otherwise. This supports all "reasonable" architectures.
+ * We have to be cautious: pre-C99 preprocessors handle constants
+ * differently in '#if' expressions. Hence the shifts to test UINT_MAX.
+ */
+
+#if ((UINT_MAX >> 11) >> 11) >= 0x3FF
+
+typedef unsigned int sph_u32;
+typedef int sph_s32;
+
+#define SPH_C32(x)    ((sph_u32)(x ## U))
+
+#else
+
+typedef unsigned long sph_u32;
+typedef long sph_s32;
+
+#define SPH_C32(x)    ((sph_u32)(x ## UL))
+
+#endif
+
+#if !SPH_NO_64
+
+/*
+ * We want a 64-bit type. We use "unsigned long" if it is wide enough (as
+ * is common on 64-bit architectures such as AMD64, Alpha or Sparcv9),
+ * "unsigned long long" otherwise, if available. We use ULLONG_MAX to
+ * test whether "unsigned long long" is available; we also know that
+ * gcc features this type, even if the libc header do not know it.
+ */
+
+#if ((ULONG_MAX >> 31) >> 31) >= 3
+
+typedef unsigned long sph_u64;
+typedef long sph_s64;
+
+#define SPH_C64(x)    ((sph_u64)(x ## UL))
+
+#define SPH_64  1
+
+#elif ((ULLONG_MAX >> 31) >> 31) >= 3 || defined __GNUC__
+
+typedef unsigned long long sph_u64;
+typedef long long sph_s64;
+
+#define SPH_C64(x)    ((sph_u64)(x ## ULL))
+
+#define SPH_64  1
+
+#else
+
+/*
+ * No 64-bit type...
+ */
+
+#endif
+
+#endif
+
+#endif
+
+/*
+ * If the "unsigned long" type has length 64 bits or more, then this is
+ * a "true" 64-bit architectures. This is also true with Visual C on
+ * amd64, even though the "long" type is limited to 32 bits.
+ */
+#if SPH_64 && (((ULONG_MAX >> 31) >> 31) >= 3 || defined _M_X64)
+#define SPH_64_TRUE   1
+#endif
+
+/*
+ * Implementation note: some processors have specific opcodes to perform
+ * a rotation. Recent versions of gcc recognize the expression above and
+ * use the relevant opcodes, when appropriate.
+ */
+
+#define SPH_T32(x)    ((x) & SPH_C32(0xFFFFFFFF))
+#define SPH_ROTL32(x, n)   SPH_T32(((x) << (n)) | ((x) >> (32 - (n))))
+#define SPH_ROTR32(x, n)   SPH_ROTL32(x, (32 - (n)))
+
+#if SPH_64
+
+#define SPH_T64(x)    ((x) & SPH_C64(0xFFFFFFFFFFFFFFFF))
+#define SPH_ROTL64(x, n)   SPH_T64(((x) << (n)) | ((x) >> (64 - (n))))
+#define SPH_ROTR64(x, n)   SPH_ROTL64(x, (64 - (n)))
+
+#endif
+
+#ifndef DOXYGEN_IGNORE
+/*
+ * Define SPH_INLINE to be an "inline" qualifier, if available. We define
+ * some small macro-like functions which benefit greatly from being inlined.
+ */
+#if (defined __STDC__ && __STDC_VERSION__ >= 199901L) || defined __GNUC__
+#define SPH_INLINE inline
+#elif defined _MSC_VER
+#define SPH_INLINE __inline
+#else
+#define SPH_INLINE
+#endif
+#endif
+
+/*
+ * We define some macros which qualify the architecture. These macros
+ * may be explicit set externally (e.g. as compiler parameters). The
+ * code below sets those macros if they are not already defined.
+ *
+ * Most macros are boolean, thus evaluate to either zero or non-zero.
+ * The SPH_UPTR macro is special, in that it evaluates to a C type,
+ * or is not defined.
+ *
+ * SPH_UPTR             if defined: unsigned type to cast pointers into
+ *
+ * SPH_UNALIGNED        non-zero if unaligned accesses are efficient
+ * SPH_LITTLE_ENDIAN    non-zero if architecture is known to be little-endian
+ * SPH_BIG_ENDIAN       non-zero if architecture is known to be big-endian
+ * SPH_LITTLE_FAST      non-zero if little-endian decoding is fast
+ * SPH_BIG_FAST         non-zero if big-endian decoding is fast
+ *
+ * If SPH_UPTR is defined, then encoding and decoding of 32-bit and 64-bit
+ * values will try to be "smart". Either SPH_LITTLE_ENDIAN or SPH_BIG_ENDIAN
+ * _must_ be non-zero in those situations. The 32-bit and 64-bit types
+ * _must_ also have an exact width.
+ *
+ * SPH_SPARCV9_GCC_32   UltraSPARC-compatible with gcc, 32-bit mode
+ * SPH_SPARCV9_GCC_64   UltraSPARC-compatible with gcc, 64-bit mode
+ * SPH_SPARCV9_GCC      UltraSPARC-compatible with gcc
+ * SPH_I386_GCC         x86-compatible (32-bit) with gcc
+ * SPH_I386_MSVC        x86-compatible (32-bit) with Microsoft Visual C
+ * SPH_AMD64_GCC        x86-compatible (64-bit) with gcc
+ * SPH_AMD64_MSVC       x86-compatible (64-bit) with Microsoft Visual C
+ * SPH_PPC32_GCC        PowerPC, 32-bit, with gcc
+ * SPH_PPC64_GCC        PowerPC, 64-bit, with gcc
+ *
+ * TODO: enhance automatic detection, for more architectures and compilers.
+ * Endianness is the most important. SPH_UNALIGNED and SPH_UPTR help with
+ * some very fast functions (e.g. MD4) when using unaligned input data.
+ * The CPU-specific-with-GCC macros are useful only for inline assembly,
+ * normally restrained to this header file.
+ */
+
+/*
+ * 32-bit x86, aka "i386 compatible".
+ */
+#if defined __i386__ || defined _M_IX86
+
+#define SPH_DETECT_UNALIGNED         1
+#define SPH_DETECT_LITTLE_ENDIAN     1
+#define SPH_DETECT_UPTR              sph_u32
+#ifdef __GNUC__
+#define SPH_DETECT_I386_GCC          1
+#endif
+#ifdef _MSC_VER
+#define SPH_DETECT_I386_MSVC         1
+#endif
+
+/*
+ * 64-bit x86, hereafter known as "amd64".
+ */
+#elif defined __x86_64 || defined _M_X64
+
+#define SPH_DETECT_UNALIGNED         1
+#define SPH_DETECT_LITTLE_ENDIAN     1
+#define SPH_DETECT_UPTR              sph_u64
+#ifdef __GNUC__
+#define SPH_DETECT_AMD64_GCC         1
+#endif
+#ifdef _MSC_VER
+#define SPH_DETECT_AMD64_MSVC        1
+#endif
+
+/*
+ * 64-bit Sparc architecture (implies v9).
+ */
+#elif ((defined __sparc__ || defined __sparc) && defined __arch64__) \
+	|| defined __sparcv9
+
+#define SPH_DETECT_BIG_ENDIAN        1
+#define SPH_DETECT_UPTR              sph_u64
+#ifdef __GNUC__
+#define SPH_DETECT_SPARCV9_GCC_64    1
+#define SPH_DETECT_LITTLE_FAST       1
+#endif
+
+/*
+ * 32-bit Sparc.
+ */
+#elif (defined __sparc__ || defined __sparc) \
+	&& !(defined __sparcv9 || defined __arch64__)
+
+#define SPH_DETECT_BIG_ENDIAN        1
+#define SPH_DETECT_UPTR              sph_u32
+#if defined __GNUC__ && defined __sparc_v9__
+#define SPH_DETECT_SPARCV9_GCC_32    1
+#define SPH_DETECT_LITTLE_FAST       1
+#endif
+
+/*
+ * ARM, little-endian.
+ */
+#elif defined __arm__ && __ARMEL__
+
+#define SPH_DETECT_LITTLE_ENDIAN     1
+
+/*
+ * MIPS, little-endian.
+ */
+#elif MIPSEL || _MIPSEL || __MIPSEL || __MIPSEL__
+
+#define SPH_DETECT_LITTLE_ENDIAN     1
+
+/*
+ * MIPS, big-endian.
+ */
+#elif MIPSEB || _MIPSEB || __MIPSEB || __MIPSEB__
+
+#define SPH_DETECT_BIG_ENDIAN        1
+
+/*
+ * PowerPC.
+ */
+#elif defined __powerpc__ || defined __POWERPC__ || defined __ppc__ \
+	|| defined _ARCH_PPC
+
+/*
+ * Note: we do not declare cross-endian access to be "fast": even if
+ * using inline assembly, implementation should still assume that
+ * keeping the decoded word in a temporary is faster than decoding
+ * it again.
+ */
+#if defined __GNUC__
+#if SPH_64_TRUE
+#define SPH_DETECT_PPC64_GCC         1
+#else
+#define SPH_DETECT_PPC32_GCC         1
+#endif
+#endif
+
+#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
+#define SPH_DETECT_BIG_ENDIAN        1
+#elif defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
+#define SPH_DETECT_LITTLE_ENDIAN     1
+#endif
+
+/*
+ * Itanium, 64-bit.
+ */
+#elif defined __ia64 || defined __ia64__ \
+	|| defined __itanium__ || defined _M_IA64
+
+#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
+#define SPH_DETECT_BIG_ENDIAN        1
+#else
+#define SPH_DETECT_LITTLE_ENDIAN     1
+#endif
+#if defined __LP64__ || defined _LP64
+#define SPH_DETECT_UPTR              sph_u64
+#else
+#define SPH_DETECT_UPTR              sph_u32
+#endif
+
+#endif
+
+#if defined SPH_DETECT_SPARCV9_GCC_32 || defined SPH_DETECT_SPARCV9_GCC_64
+#define SPH_DETECT_SPARCV9_GCC       1
+#endif
+
+#if defined SPH_DETECT_UNALIGNED && !defined SPH_UNALIGNED
+#define SPH_UNALIGNED         SPH_DETECT_UNALIGNED
+#endif
+#if defined SPH_DETECT_UPTR && !defined SPH_UPTR
+#define SPH_UPTR              SPH_DETECT_UPTR
+#endif
+#if defined SPH_DETECT_LITTLE_ENDIAN && !defined SPH_LITTLE_ENDIAN
+#define SPH_LITTLE_ENDIAN     SPH_DETECT_LITTLE_ENDIAN
+#endif
+#if defined SPH_DETECT_BIG_ENDIAN && !defined SPH_BIG_ENDIAN
+#define SPH_BIG_ENDIAN        SPH_DETECT_BIG_ENDIAN
+#endif
+#if defined SPH_DETECT_LITTLE_FAST && !defined SPH_LITTLE_FAST
+#define SPH_LITTLE_FAST       SPH_DETECT_LITTLE_FAST
+#endif
+#if defined SPH_DETECT_BIG_FAST && !defined SPH_BIG_FAST
+#define SPH_BIG_FAST    SPH_DETECT_BIG_FAST
+#endif
+#if defined SPH_DETECT_SPARCV9_GCC_32 && !defined SPH_SPARCV9_GCC_32
+#define SPH_SPARCV9_GCC_32    SPH_DETECT_SPARCV9_GCC_32
+#endif
+#if defined SPH_DETECT_SPARCV9_GCC_64 && !defined SPH_SPARCV9_GCC_64
+#define SPH_SPARCV9_GCC_64    SPH_DETECT_SPARCV9_GCC_64
+#endif
+#if defined SPH_DETECT_SPARCV9_GCC && !defined SPH_SPARCV9_GCC
+#define SPH_SPARCV9_GCC       SPH_DETECT_SPARCV9_GCC
+#endif
+#if defined SPH_DETECT_I386_GCC && !defined SPH_I386_GCC
+#define SPH_I386_GCC          SPH_DETECT_I386_GCC
+#endif
+#if defined SPH_DETECT_I386_MSVC && !defined SPH_I386_MSVC
+#define SPH_I386_MSVC         SPH_DETECT_I386_MSVC
+#endif
+#if defined SPH_DETECT_AMD64_GCC && !defined SPH_AMD64_GCC
+#define SPH_AMD64_GCC         SPH_DETECT_AMD64_GCC
+#endif
+#if defined SPH_DETECT_AMD64_MSVC && !defined SPH_AMD64_MSVC
+#define SPH_AMD64_MSVC        SPH_DETECT_AMD64_MSVC
+#endif
+#if defined SPH_DETECT_PPC32_GCC && !defined SPH_PPC32_GCC
+#define SPH_PPC32_GCC         SPH_DETECT_PPC32_GCC
+#endif
+#if defined SPH_DETECT_PPC64_GCC && !defined SPH_PPC64_GCC
+#define SPH_PPC64_GCC         SPH_DETECT_PPC64_GCC
+#endif
+
+#if SPH_LITTLE_ENDIAN && !defined SPH_LITTLE_FAST
+#define SPH_LITTLE_FAST              1
+#endif
+#if SPH_BIG_ENDIAN && !defined SPH_BIG_FAST
+#define SPH_BIG_FAST                 1
+#endif
+
+#if defined SPH_UPTR && !(SPH_LITTLE_ENDIAN || SPH_BIG_ENDIAN)
+#error SPH_UPTR defined, but endianness is not known.
+#endif
+
+#if SPH_I386_GCC && !SPH_NO_ASM
+
+/*
+ * On x86 32-bit, with gcc, we use the bswapl opcode to byte-swap 32-bit
+ * values.
+ */
+
+static SPH_INLINE sph_u32
+sph_bswap32(sph_u32 x)
+{
+	__asm__ __volatile__ ("bswapl %0" : "=r" (x) : "0" (x));
+	return x;
+}
+
+#if SPH_64
+
+static SPH_INLINE sph_u64
+sph_bswap64(sph_u64 x)
+{
+	return ((sph_u64)sph_bswap32((sph_u32)x) << 32)
+		| (sph_u64)sph_bswap32((sph_u32)(x >> 32));
+}
+
+#endif
+
+#elif SPH_AMD64_GCC && !SPH_NO_ASM
+
+/*
+ * On x86 64-bit, with gcc, we use the bswapl opcode to byte-swap 32-bit
+ * and 64-bit values.
+ */
+
+static SPH_INLINE sph_u32
+sph_bswap32(sph_u32 x)
+{
+	__asm__ __volatile__ ("bswapl %0" : "=r" (x) : "0" (x));
+	return x;
+}
+
+#if SPH_64
+
+static SPH_INLINE sph_u64
+sph_bswap64(sph_u64 x)
+{
+	__asm__ __volatile__ ("bswapq %0" : "=r" (x) : "0" (x));
+	return x;
+}
+
+#endif
+
+/*
+ * Disabled code. Apparently, Microsoft Visual C 2005 is smart enough
+ * to generate proper opcodes for endianness swapping with the pure C
+ * implementation below.
+ *
+
+#elif SPH_I386_MSVC && !SPH_NO_ASM
+
+static __inline sph_u32 __declspec(naked) __fastcall
+sph_bswap32(sph_u32 x)
+{
+	__asm {
+		bswap  ecx
+		mov    eax,ecx
+		ret
+	}
+}
+
+#if SPH_64
+
+static SPH_INLINE sph_u64
+sph_bswap64(sph_u64 x)
+{
+	return ((sph_u64)sph_bswap32((sph_u32)x) << 32)
+		| (sph_u64)sph_bswap32((sph_u32)(x >> 32));
+}
+
+#endif
+
+ *
+ * [end of disabled code]
+ */
+
+#else
+
+static SPH_INLINE sph_u32
+sph_bswap32(sph_u32 x)
+{
+	x = SPH_T32((x << 16) | (x >> 16));
+	x = ((x & SPH_C32(0xFF00FF00)) >> 8)
+		| ((x & SPH_C32(0x00FF00FF)) << 8);
+	return x;
+}
+
+#if SPH_64
+
+/**
+ * Byte-swap a 64-bit value.
+ *
+ * @param x   the input value
+ * @return  the byte-swapped value
+ */
+static SPH_INLINE sph_u64
+sph_bswap64(sph_u64 x)
+{
+	x = SPH_T64((x << 32) | (x >> 32));
+	x = ((x & SPH_C64(0xFFFF0000FFFF0000)) >> 16)
+		| ((x & SPH_C64(0x0000FFFF0000FFFF)) << 16);
+	x = ((x & SPH_C64(0xFF00FF00FF00FF00)) >> 8)
+		| ((x & SPH_C64(0x00FF00FF00FF00FF)) << 8);
+	return x;
+}
+
+#endif
+
+#endif
+
+#if SPH_SPARCV9_GCC && !SPH_NO_ASM
+
+/*
+ * On UltraSPARC systems, native ordering is big-endian, but it is
+ * possible to perform little-endian read accesses by specifying the
+ * address space 0x88 (ASI_PRIMARY_LITTLE). Basically, either we use
+ * the opcode "lda [%reg]0x88,%dst", where %reg is the register which
+ * contains the source address and %dst is the destination register,
+ * or we use "lda [%reg+imm]%asi,%dst", which uses the %asi register
+ * to get the address space name. The latter format is better since it
+ * combines an addition and the actual access in a single opcode; but
+ * it requires the setting (and subsequent resetting) of %asi, which is
+ * slow. Some operations (i.e. MD5 compression function) combine many
+ * successive little-endian read accesses, which may share the same
+ * %asi setting. The macros below contain the appropriate inline
+ * assembly.
+ */
+
+#define SPH_SPARCV9_SET_ASI   \
+	sph_u32 sph_sparcv9_asi; \
+	__asm__ __volatile__ ( \
+		"rd %%asi,%0\n\twr %%g0,0x88,%%asi" : "=r" (sph_sparcv9_asi));
+
+#define SPH_SPARCV9_RESET_ASI  \
+	__asm__ __volatile__ ("wr %%g0,%0,%%asi" : : "r" (sph_sparcv9_asi));
+
+#define SPH_SPARCV9_DEC32LE(base, idx)   ({ \
+		sph_u32 sph_sparcv9_tmp; \
+		__asm__ __volatile__ ("lda [%1+" #idx "*4]%%asi,%0" \
+			: "=r" (sph_sparcv9_tmp) : "r" (base)); \
+		sph_sparcv9_tmp; \
+	})
+
+#endif
+
+static SPH_INLINE void
+sph_enc16be(void *dst, unsigned val)
+{
+	((unsigned char *)dst)[0] = (val >> 8);
+	((unsigned char *)dst)[1] = val;
+}
+
+static SPH_INLINE unsigned
+sph_dec16be(const void *src)
+{
+	return ((unsigned)(((const unsigned char *)src)[0]) << 8)
+		| (unsigned)(((const unsigned char *)src)[1]);
+}
+
+static SPH_INLINE void
+sph_enc16le(void *dst, unsigned val)
+{
+	((unsigned char *)dst)[0] = val;
+	((unsigned char *)dst)[1] = val >> 8;
+}
+
+static SPH_INLINE unsigned
+sph_dec16le(const void *src)
+{
+	return (unsigned)(((const unsigned char *)src)[0])
+		| ((unsigned)(((const unsigned char *)src)[1]) << 8);
+}
+
+/**
+ * Encode a 32-bit value into the provided buffer (big endian convention).
+ *
+ * @param dst   the destination buffer
+ * @param val   the 32-bit value to encode
+ */
+static SPH_INLINE void
+sph_enc32be(void *dst, sph_u32 val)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_LITTLE_ENDIAN
+	val = sph_bswap32(val);
+#endif
+	*(sph_u32 *)dst = val;
+#else
+	if (((SPH_UPTR)dst & 3) == 0) {
+#if SPH_LITTLE_ENDIAN
+		val = sph_bswap32(val);
+#endif
+		*(sph_u32 *)dst = val;
+	} else {
+		((unsigned char *)dst)[0] = (val >> 24);
+		((unsigned char *)dst)[1] = (val >> 16);
+		((unsigned char *)dst)[2] = (val >> 8);
+		((unsigned char *)dst)[3] = val;
+	}
+#endif
+#else
+	((unsigned char *)dst)[0] = (val >> 24);
+	((unsigned char *)dst)[1] = (val >> 16);
+	((unsigned char *)dst)[2] = (val >> 8);
+	((unsigned char *)dst)[3] = val;
+#endif
+}
+
+/**
+ * Encode a 32-bit value into the provided buffer (big endian convention).
+ * The destination buffer must be properly aligned.
+ *
+ * @param dst   the destination buffer (32-bit aligned)
+ * @param val   the value to encode
+ */
+static SPH_INLINE void
+sph_enc32be_aligned(void *dst, sph_u32 val)
+{
+#if SPH_LITTLE_ENDIAN
+	*(sph_u32 *)dst = sph_bswap32(val);
+#elif SPH_BIG_ENDIAN
+	*(sph_u32 *)dst = val;
+#else
+	((unsigned char *)dst)[0] = (val >> 24);
+	((unsigned char *)dst)[1] = (val >> 16);
+	((unsigned char *)dst)[2] = (val >> 8);
+	((unsigned char *)dst)[3] = val;
+#endif
+}
+
+/**
+ * Decode a 32-bit value from the provided buffer (big endian convention).
+ *
+ * @param src   the source buffer
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u32
+sph_dec32be(const void *src)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_LITTLE_ENDIAN
+	return sph_bswap32(*(const sph_u32 *)src);
+#else
+	return *(const sph_u32 *)src;
+#endif
+#else
+	if (((SPH_UPTR)src & 3) == 0) {
+#if SPH_LITTLE_ENDIAN
+		return sph_bswap32(*(const sph_u32 *)src);
+#else
+		return *(const sph_u32 *)src;
+#endif
+	} else {
+		return ((sph_u32)(((const unsigned char *)src)[0]) << 24)
+			| ((sph_u32)(((const unsigned char *)src)[1]) << 16)
+			| ((sph_u32)(((const unsigned char *)src)[2]) << 8)
+			| (sph_u32)(((const unsigned char *)src)[3]);
+	}
+#endif
+#else
+	return ((sph_u32)(((const unsigned char *)src)[0]) << 24)
+		| ((sph_u32)(((const unsigned char *)src)[1]) << 16)
+		| ((sph_u32)(((const unsigned char *)src)[2]) << 8)
+		| (sph_u32)(((const unsigned char *)src)[3]);
+#endif
+}
+
+/**
+ * Decode a 32-bit value from the provided buffer (big endian convention).
+ * The source buffer must be properly aligned.
+ *
+ * @param src   the source buffer (32-bit aligned)
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u32
+sph_dec32be_aligned(const void *src)
+{
+#if SPH_LITTLE_ENDIAN
+	return sph_bswap32(*(const sph_u32 *)src);
+#elif SPH_BIG_ENDIAN
+	return *(const sph_u32 *)src;
+#else
+	return ((sph_u32)(((const unsigned char *)src)[0]) << 24)
+		| ((sph_u32)(((const unsigned char *)src)[1]) << 16)
+		| ((sph_u32)(((const unsigned char *)src)[2]) << 8)
+		| (sph_u32)(((const unsigned char *)src)[3]);
+#endif
+}
+
+/**
+ * Encode a 32-bit value into the provided buffer (little endian convention).
+ *
+ * @param dst   the destination buffer
+ * @param val   the 32-bit value to encode
+ */
+static SPH_INLINE void
+sph_enc32le(void *dst, sph_u32 val)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_BIG_ENDIAN
+	val = sph_bswap32(val);
+#endif
+	*(sph_u32 *)dst = val;
+#else
+	if (((SPH_UPTR)dst & 3) == 0) {
+#if SPH_BIG_ENDIAN
+		val = sph_bswap32(val);
+#endif
+		*(sph_u32 *)dst = val;
+	} else {
+		((unsigned char *)dst)[0] = val;
+		((unsigned char *)dst)[1] = (val >> 8);
+		((unsigned char *)dst)[2] = (val >> 16);
+		((unsigned char *)dst)[3] = (val >> 24);
+	}
+#endif
+#else
+	((unsigned char *)dst)[0] = val;
+	((unsigned char *)dst)[1] = (val >> 8);
+	((unsigned char *)dst)[2] = (val >> 16);
+	((unsigned char *)dst)[3] = (val >> 24);
+#endif
+}
+
+/**
+ * Encode a 32-bit value into the provided buffer (little endian convention).
+ * The destination buffer must be properly aligned.
+ *
+ * @param dst   the destination buffer (32-bit aligned)
+ * @param val   the value to encode
+ */
+static SPH_INLINE void
+sph_enc32le_aligned(void *dst, sph_u32 val)
+{
+#if SPH_LITTLE_ENDIAN
+	*(sph_u32 *)dst = val;
+#elif SPH_BIG_ENDIAN
+	*(sph_u32 *)dst = sph_bswap32(val);
+#else
+	((unsigned char *)dst)[0] = val;
+	((unsigned char *)dst)[1] = (val >> 8);
+	((unsigned char *)dst)[2] = (val >> 16);
+	((unsigned char *)dst)[3] = (val >> 24);
+#endif
+}
+
+/**
+ * Decode a 32-bit value from the provided buffer (little endian convention).
+ *
+ * @param src   the source buffer
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u32
+sph_dec32le(const void *src)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_BIG_ENDIAN
+	return sph_bswap32(*(const sph_u32 *)src);
+#else
+	return *(const sph_u32 *)src;
+#endif
+#else
+	if (((SPH_UPTR)src & 3) == 0) {
+#if SPH_BIG_ENDIAN
+#if SPH_SPARCV9_GCC && !SPH_NO_ASM
+		sph_u32 tmp;
+
+		/*
+		 * "__volatile__" is needed here because without it,
+		 * gcc-3.4.3 miscompiles the code and performs the
+		 * access before the test on the address, thus triggering
+		 * a bus error...
+		 */
+		__asm__ __volatile__ (
+			"lda [%1]0x88,%0" : "=r" (tmp) : "r" (src));
+		return tmp;
+/*
+ * On PowerPC, this turns out not to be worth the effort: the inline
+ * assembly makes GCC optimizer uncomfortable, which tends to nullify
+ * the decoding gains.
+ *
+ * For most hash functions, using this inline assembly trick changes
+ * hashing speed by less than 5% and often _reduces_ it. The biggest
+ * gains are for MD4 (+11%) and CubeHash (+30%). For all others, it is
+ * less then 10%. The speed gain on CubeHash is probably due to the
+ * chronic shortage of registers that CubeHash endures; for the other
+ * functions, the generic code appears to be efficient enough already.
+ *
+#elif (SPH_PPC32_GCC || SPH_PPC64_GCC) && !SPH_NO_ASM
+		sph_u32 tmp;
+
+		__asm__ __volatile__ (
+			"lwbrx %0,0,%1" : "=r" (tmp) : "r" (src));
+		return tmp;
+ */
+#else
+		return sph_bswap32(*(const sph_u32 *)src);
+#endif
+#else
+		return *(const sph_u32 *)src;
+#endif
+	} else {
+		return (sph_u32)(((const unsigned char *)src)[0])
+			| ((sph_u32)(((const unsigned char *)src)[1]) << 8)
+			| ((sph_u32)(((const unsigned char *)src)[2]) << 16)
+			| ((sph_u32)(((const unsigned char *)src)[3]) << 24);
+	}
+#endif
+#else
+	return (sph_u32)(((const unsigned char *)src)[0])
+		| ((sph_u32)(((const unsigned char *)src)[1]) << 8)
+		| ((sph_u32)(((const unsigned char *)src)[2]) << 16)
+		| ((sph_u32)(((const unsigned char *)src)[3]) << 24);
+#endif
+}
+
+/**
+ * Decode a 32-bit value from the provided buffer (little endian convention).
+ * The source buffer must be properly aligned.
+ *
+ * @param src   the source buffer (32-bit aligned)
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u32
+sph_dec32le_aligned(const void *src)
+{
+#if SPH_LITTLE_ENDIAN
+	return *(const sph_u32 *)src;
+#elif SPH_BIG_ENDIAN
+#if SPH_SPARCV9_GCC && !SPH_NO_ASM
+	sph_u32 tmp;
+
+	__asm__ __volatile__ ("lda [%1]0x88,%0" : "=r" (tmp) : "r" (src));
+	return tmp;
+/*
+ * Not worth it generally.
+ *
+#elif (SPH_PPC32_GCC || SPH_PPC64_GCC) && !SPH_NO_ASM
+	sph_u32 tmp;
+
+	__asm__ __volatile__ ("lwbrx %0,0,%1" : "=r" (tmp) : "r" (src));
+	return tmp;
+ */
+#else
+	return sph_bswap32(*(const sph_u32 *)src);
+#endif
+#else
+	return (sph_u32)(((const unsigned char *)src)[0])
+		| ((sph_u32)(((const unsigned char *)src)[1]) << 8)
+		| ((sph_u32)(((const unsigned char *)src)[2]) << 16)
+		| ((sph_u32)(((const unsigned char *)src)[3]) << 24);
+#endif
+}
+
+#if SPH_64
+
+/**
+ * Encode a 64-bit value into the provided buffer (big endian convention).
+ *
+ * @param dst   the destination buffer
+ * @param val   the 64-bit value to encode
+ */
+static SPH_INLINE void
+sph_enc64be(void *dst, sph_u64 val)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_LITTLE_ENDIAN
+	val = sph_bswap64(val);
+#endif
+	*(sph_u64 *)dst = val;
+#else
+	if (((SPH_UPTR)dst & 7) == 0) {
+#if SPH_LITTLE_ENDIAN
+		val = sph_bswap64(val);
+#endif
+		*(sph_u64 *)dst = val;
+	} else {
+		((unsigned char *)dst)[0] = (val >> 56);
+		((unsigned char *)dst)[1] = (val >> 48);
+		((unsigned char *)dst)[2] = (val >> 40);
+		((unsigned char *)dst)[3] = (val >> 32);
+		((unsigned char *)dst)[4] = (val >> 24);
+		((unsigned char *)dst)[5] = (val >> 16);
+		((unsigned char *)dst)[6] = (val >> 8);
+		((unsigned char *)dst)[7] = val;
+	}
+#endif
+#else
+	((unsigned char *)dst)[0] = (val >> 56);
+	((unsigned char *)dst)[1] = (val >> 48);
+	((unsigned char *)dst)[2] = (val >> 40);
+	((unsigned char *)dst)[3] = (val >> 32);
+	((unsigned char *)dst)[4] = (val >> 24);
+	((unsigned char *)dst)[5] = (val >> 16);
+	((unsigned char *)dst)[6] = (val >> 8);
+	((unsigned char *)dst)[7] = val;
+#endif
+}
+
+/**
+ * Encode a 64-bit value into the provided buffer (big endian convention).
+ * The destination buffer must be properly aligned.
+ *
+ * @param dst   the destination buffer (64-bit aligned)
+ * @param val   the value to encode
+ */
+static SPH_INLINE void
+sph_enc64be_aligned(void *dst, sph_u64 val)
+{
+#if SPH_LITTLE_ENDIAN
+	*(sph_u64 *)dst = sph_bswap64(val);
+#elif SPH_BIG_ENDIAN
+	*(sph_u64 *)dst = val;
+#else
+	((unsigned char *)dst)[0] = (val >> 56);
+	((unsigned char *)dst)[1] = (val >> 48);
+	((unsigned char *)dst)[2] = (val >> 40);
+	((unsigned char *)dst)[3] = (val >> 32);
+	((unsigned char *)dst)[4] = (val >> 24);
+	((unsigned char *)dst)[5] = (val >> 16);
+	((unsigned char *)dst)[6] = (val >> 8);
+	((unsigned char *)dst)[7] = val;
+#endif
+}
+
+/**
+ * Decode a 64-bit value from the provided buffer (big endian convention).
+ *
+ * @param src   the source buffer
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u64
+sph_dec64be(const void *src)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_LITTLE_ENDIAN
+	return sph_bswap64(*(const sph_u64 *)src);
+#else
+	return *(const sph_u64 *)src;
+#endif
+#else
+	if (((SPH_UPTR)src & 7) == 0) {
+#if SPH_LITTLE_ENDIAN
+		return sph_bswap64(*(const sph_u64 *)src);
+#else
+		return *(const sph_u64 *)src;
+#endif
+	} else {
+		return ((sph_u64)(((const unsigned char *)src)[0]) << 56)
+			| ((sph_u64)(((const unsigned char *)src)[1]) << 48)
+			| ((sph_u64)(((const unsigned char *)src)[2]) << 40)
+			| ((sph_u64)(((const unsigned char *)src)[3]) << 32)
+			| ((sph_u64)(((const unsigned char *)src)[4]) << 24)
+			| ((sph_u64)(((const unsigned char *)src)[5]) << 16)
+			| ((sph_u64)(((const unsigned char *)src)[6]) << 8)
+			| (sph_u64)(((const unsigned char *)src)[7]);
+	}
+#endif
+#else
+	return ((sph_u64)(((const unsigned char *)src)[0]) << 56)
+		| ((sph_u64)(((const unsigned char *)src)[1]) << 48)
+		| ((sph_u64)(((const unsigned char *)src)[2]) << 40)
+		| ((sph_u64)(((const unsigned char *)src)[3]) << 32)
+		| ((sph_u64)(((const unsigned char *)src)[4]) << 24)
+		| ((sph_u64)(((const unsigned char *)src)[5]) << 16)
+		| ((sph_u64)(((const unsigned char *)src)[6]) << 8)
+		| (sph_u64)(((const unsigned char *)src)[7]);
+#endif
+}
+
+/**
+ * Decode a 64-bit value from the provided buffer (big endian convention).
+ * The source buffer must be properly aligned.
+ *
+ * @param src   the source buffer (64-bit aligned)
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u64
+sph_dec64be_aligned(const void *src)
+{
+#if SPH_LITTLE_ENDIAN
+	return sph_bswap64(*(const sph_u64 *)src);
+#elif SPH_BIG_ENDIAN
+	return *(const sph_u64 *)src;
+#else
+	return ((sph_u64)(((const unsigned char *)src)[0]) << 56)
+		| ((sph_u64)(((const unsigned char *)src)[1]) << 48)
+		| ((sph_u64)(((const unsigned char *)src)[2]) << 40)
+		| ((sph_u64)(((const unsigned char *)src)[3]) << 32)
+		| ((sph_u64)(((const unsigned char *)src)[4]) << 24)
+		| ((sph_u64)(((const unsigned char *)src)[5]) << 16)
+		| ((sph_u64)(((const unsigned char *)src)[6]) << 8)
+		| (sph_u64)(((const unsigned char *)src)[7]);
+#endif
+}
+
+/**
+ * Encode a 64-bit value into the provided buffer (little endian convention).
+ *
+ * @param dst   the destination buffer
+ * @param val   the 64-bit value to encode
+ */
+static SPH_INLINE void
+sph_enc64le(void *dst, sph_u64 val)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_BIG_ENDIAN
+	val = sph_bswap64(val);
+#endif
+	*(sph_u64 *)dst = val;
+#else
+	if (((SPH_UPTR)dst & 7) == 0) {
+#if SPH_BIG_ENDIAN
+		val = sph_bswap64(val);
+#endif
+		*(sph_u64 *)dst = val;
+	} else {
+		((unsigned char *)dst)[0] = val;
+		((unsigned char *)dst)[1] = (val >> 8);
+		((unsigned char *)dst)[2] = (val >> 16);
+		((unsigned char *)dst)[3] = (val >> 24);
+		((unsigned char *)dst)[4] = (val >> 32);
+		((unsigned char *)dst)[5] = (val >> 40);
+		((unsigned char *)dst)[6] = (val >> 48);
+		((unsigned char *)dst)[7] = (val >> 56);
+	}
+#endif
+#else
+	((unsigned char *)dst)[0] = val;
+	((unsigned char *)dst)[1] = (val >> 8);
+	((unsigned char *)dst)[2] = (val >> 16);
+	((unsigned char *)dst)[3] = (val >> 24);
+	((unsigned char *)dst)[4] = (val >> 32);
+	((unsigned char *)dst)[5] = (val >> 40);
+	((unsigned char *)dst)[6] = (val >> 48);
+	((unsigned char *)dst)[7] = (val >> 56);
+#endif
+}
+
+/**
+ * Encode a 64-bit value into the provided buffer (little endian convention).
+ * The destination buffer must be properly aligned.
+ *
+ * @param dst   the destination buffer (64-bit aligned)
+ * @param val   the value to encode
+ */
+static SPH_INLINE void
+sph_enc64le_aligned(void *dst, sph_u64 val)
+{
+#if SPH_LITTLE_ENDIAN
+	*(sph_u64 *)dst = val;
+#elif SPH_BIG_ENDIAN
+	*(sph_u64 *)dst = sph_bswap64(val);
+#else
+	((unsigned char *)dst)[0] = val;
+	((unsigned char *)dst)[1] = (val >> 8);
+	((unsigned char *)dst)[2] = (val >> 16);
+	((unsigned char *)dst)[3] = (val >> 24);
+	((unsigned char *)dst)[4] = (val >> 32);
+	((unsigned char *)dst)[5] = (val >> 40);
+	((unsigned char *)dst)[6] = (val >> 48);
+	((unsigned char *)dst)[7] = (val >> 56);
+#endif
+}
+
+/**
+ * Decode a 64-bit value from the provided buffer (little endian convention).
+ *
+ * @param src   the source buffer
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u64
+sph_dec64le(const void *src)
+{
+#if defined SPH_UPTR
+#if SPH_UNALIGNED
+#if SPH_BIG_ENDIAN
+	return sph_bswap64(*(const sph_u64 *)src);
+#else
+	return *(const sph_u64 *)src;
+#endif
+#else
+	if (((SPH_UPTR)src & 7) == 0) {
+#if SPH_BIG_ENDIAN
+#if SPH_SPARCV9_GCC_64 && !SPH_NO_ASM
+		sph_u64 tmp;
+
+		__asm__ __volatile__ (
+			"ldxa [%1]0x88,%0" : "=r" (tmp) : "r" (src));
+		return tmp;
+/*
+ * Not worth it generally.
+ *
+#elif SPH_PPC32_GCC && !SPH_NO_ASM
+		return (sph_u64)sph_dec32le_aligned(src)
+			| ((sph_u64)sph_dec32le_aligned(
+				(const char *)src + 4) << 32);
+#elif SPH_PPC64_GCC && !SPH_NO_ASM
+		sph_u64 tmp;
+
+		__asm__ __volatile__ (
+			"ldbrx %0,0,%1" : "=r" (tmp) : "r" (src));
+		return tmp;
+ */
+#else
+		return sph_bswap64(*(const sph_u64 *)src);
+#endif
+#else
+		return *(const sph_u64 *)src;
+#endif
+	} else {
+		return (sph_u64)(((const unsigned char *)src)[0])
+			| ((sph_u64)(((const unsigned char *)src)[1]) << 8)
+			| ((sph_u64)(((const unsigned char *)src)[2]) << 16)
+			| ((sph_u64)(((const unsigned char *)src)[3]) << 24)
+			| ((sph_u64)(((const unsigned char *)src)[4]) << 32)
+			| ((sph_u64)(((const unsigned char *)src)[5]) << 40)
+			| ((sph_u64)(((const unsigned char *)src)[6]) << 48)
+			| ((sph_u64)(((const unsigned char *)src)[7]) << 56);
+	}
+#endif
+#else
+	return (sph_u64)(((const unsigned char *)src)[0])
+		| ((sph_u64)(((const unsigned char *)src)[1]) << 8)
+		| ((sph_u64)(((const unsigned char *)src)[2]) << 16)
+		| ((sph_u64)(((const unsigned char *)src)[3]) << 24)
+		| ((sph_u64)(((const unsigned char *)src)[4]) << 32)
+		| ((sph_u64)(((const unsigned char *)src)[5]) << 40)
+		| ((sph_u64)(((const unsigned char *)src)[6]) << 48)
+		| ((sph_u64)(((const unsigned char *)src)[7]) << 56);
+#endif
+}
+
+/**
+ * Decode a 64-bit value from the provided buffer (little endian convention).
+ * The source buffer must be properly aligned.
+ *
+ * @param src   the source buffer (64-bit aligned)
+ * @return  the decoded value
+ */
+static SPH_INLINE sph_u64
+sph_dec64le_aligned(const void *src)
+{
+#if SPH_LITTLE_ENDIAN
+	return *(const sph_u64 *)src;
+#elif SPH_BIG_ENDIAN
+#if SPH_SPARCV9_GCC_64 && !SPH_NO_ASM
+	sph_u64 tmp;
+
+	__asm__ __volatile__ ("ldxa [%1]0x88,%0" : "=r" (tmp) : "r" (src));
+	return tmp;
+/*
+ * Not worth it generally.
+ *
+#elif SPH_PPC32_GCC && !SPH_NO_ASM
+	return (sph_u64)sph_dec32le_aligned(src)
+		| ((sph_u64)sph_dec32le_aligned((const char *)src + 4) << 32);
+#elif SPH_PPC64_GCC && !SPH_NO_ASM
+	sph_u64 tmp;
+
+	__asm__ __volatile__ ("ldbrx %0,0,%1" : "=r" (tmp) : "r" (src));
+	return tmp;
+ */
+#else
+	return sph_bswap64(*(const sph_u64 *)src);
+#endif
+#else
+	return (sph_u64)(((const unsigned char *)src)[0])
+		| ((sph_u64)(((const unsigned char *)src)[1]) << 8)
+		| ((sph_u64)(((const unsigned char *)src)[2]) << 16)
+		| ((sph_u64)(((const unsigned char *)src)[3]) << 24)
+		| ((sph_u64)(((const unsigned char *)src)[4]) << 32)
+		| ((sph_u64)(((const unsigned char *)src)[5]) << 40)
+		| ((sph_u64)(((const unsigned char *)src)[6]) << 48)
+		| ((sph_u64)(((const unsigned char *)src)[7]) << 56);
+#endif
+}
+
+#endif
+
+#endif /* Doxygen excluded block */
+
+#endif
diff --git a/src/crypto/ghostrider/sph_whirlpool.c b/src/crypto/ghostrider/sph_whirlpool.c
new file mode 100644
index 000000000..e48536f0c
--- /dev/null
+++ b/src/crypto/ghostrider/sph_whirlpool.c
@@ -0,0 +1,3481 @@
+/* $Id: whirlpool.c 227 2010-06-16 17:28:38Z tp $ */
+/*
+ * WHIRLPOOL implementation.
+ *
+ * Internally, we use little-endian convention, on the assumption that
+ * architectures which favour big-endian encoding are:
+ *   1. rarer
+ *   2. in decreasing numbers
+ *   3. able to decode little-endian data efficiently anyway
+ *
+ * The most common big-endian architecture is Sparc, and Ultrasparc CPU
+ * include special opcodes to perform little-endian accesses, which we use
+ * (see sph_types.h). Most modern CPU designs can work with both endianness
+ * and architecture designer now favour little-endian (basically, x86 has
+ * won the endianness war).
+ *
+ * TODO: implement a 32-bit version. Not only such a version would be handy
+ * for non-64-bit-able architectures, but it may also use smaller tables,
+ * at the expense of more lookups and XORs.
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#include <stddef.h>
+#include <string.h>
+
+#include "sph_whirlpool.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#if SPH_SMALL_FOOTPRINT && !defined SPH_SMALL_FOOTPRINT_WHIRLPOOL
+#define SPH_SMALL_FOOTPRINT_WHIRLPOOL   1
+#endif
+
+/* ====================================================================== */
+/*
+ * Constants for plain WHIRLPOOL (current version).
+ */
+
+static const sph_u64 plain_T0[256] = {
+	SPH_C64(0xD83078C018601818), SPH_C64(0x2646AF05238C2323),
+	SPH_C64(0xB891F97EC63FC6C6), SPH_C64(0xFBCD6F13E887E8E8),
+	SPH_C64(0xCB13A14C87268787), SPH_C64(0x116D62A9B8DAB8B8),
+	SPH_C64(0x0902050801040101), SPH_C64(0x0D9E6E424F214F4F),
+	SPH_C64(0x9B6CEEAD36D83636), SPH_C64(0xFF510459A6A2A6A6),
+	SPH_C64(0x0CB9BDDED26FD2D2), SPH_C64(0x0EF706FBF5F3F5F5),
+	SPH_C64(0x96F280EF79F97979), SPH_C64(0x30DECE5F6FA16F6F),
+	SPH_C64(0x6D3FEFFC917E9191), SPH_C64(0xF8A407AA52555252),
+	SPH_C64(0x47C0FD27609D6060), SPH_C64(0x35657689BCCABCBC),
+	SPH_C64(0x372BCDAC9B569B9B), SPH_C64(0x8A018C048E028E8E),
+	SPH_C64(0xD25B1571A3B6A3A3), SPH_C64(0x6C183C600C300C0C),
+	SPH_C64(0x84F68AFF7BF17B7B), SPH_C64(0x806AE1B535D43535),
+	SPH_C64(0xF53A69E81D741D1D), SPH_C64(0xB3DD4753E0A7E0E0),
+	SPH_C64(0x21B3ACF6D77BD7D7), SPH_C64(0x9C99ED5EC22FC2C2),
+	SPH_C64(0x435C966D2EB82E2E), SPH_C64(0x29967A624B314B4B),
+	SPH_C64(0x5DE121A3FEDFFEFE), SPH_C64(0xD5AE168257415757),
+	SPH_C64(0xBD2A41A815541515), SPH_C64(0xE8EEB69F77C17777),
+	SPH_C64(0x926EEBA537DC3737), SPH_C64(0x9ED7567BE5B3E5E5),
+	SPH_C64(0x1323D98C9F469F9F), SPH_C64(0x23FD17D3F0E7F0F0),
+	SPH_C64(0x20947F6A4A354A4A), SPH_C64(0x44A9959EDA4FDADA),
+	SPH_C64(0xA2B025FA587D5858), SPH_C64(0xCF8FCA06C903C9C9),
+	SPH_C64(0x7C528D5529A42929), SPH_C64(0x5A1422500A280A0A),
+	SPH_C64(0x507F4FE1B1FEB1B1), SPH_C64(0xC95D1A69A0BAA0A0),
+	SPH_C64(0x14D6DA7F6BB16B6B), SPH_C64(0xD917AB5C852E8585),
+	SPH_C64(0x3C677381BDCEBDBD), SPH_C64(0x8FBA34D25D695D5D),
+	SPH_C64(0x9020508010401010), SPH_C64(0x07F503F3F4F7F4F4),
+	SPH_C64(0xDD8BC016CB0BCBCB), SPH_C64(0xD37CC6ED3EF83E3E),
+	SPH_C64(0x2D0A112805140505), SPH_C64(0x78CEE61F67816767),
+	SPH_C64(0x97D55373E4B7E4E4), SPH_C64(0x024EBB25279C2727),
+	SPH_C64(0x7382583241194141), SPH_C64(0xA70B9D2C8B168B8B),
+	SPH_C64(0xF6530151A7A6A7A7), SPH_C64(0xB2FA94CF7DE97D7D),
+	SPH_C64(0x4937FBDC956E9595), SPH_C64(0x56AD9F8ED847D8D8),
+	SPH_C64(0x70EB308BFBCBFBFB), SPH_C64(0xCDC17123EE9FEEEE),
+	SPH_C64(0xBBF891C77CED7C7C), SPH_C64(0x71CCE31766856666),
+	SPH_C64(0x7BA78EA6DD53DDDD), SPH_C64(0xAF2E4BB8175C1717),
+	SPH_C64(0x458E460247014747), SPH_C64(0x1A21DC849E429E9E),
+	SPH_C64(0xD489C51ECA0FCACA), SPH_C64(0x585A99752DB42D2D),
+	SPH_C64(0x2E637991BFC6BFBF), SPH_C64(0x3F0E1B38071C0707),
+	SPH_C64(0xAC472301AD8EADAD), SPH_C64(0xB0B42FEA5A755A5A),
+	SPH_C64(0xEF1BB56C83368383), SPH_C64(0xB666FF8533CC3333),
+	SPH_C64(0x5CC6F23F63916363), SPH_C64(0x12040A1002080202),
+	SPH_C64(0x93493839AA92AAAA), SPH_C64(0xDEE2A8AF71D97171),
+	SPH_C64(0xC68DCF0EC807C8C8), SPH_C64(0xD1327DC819641919),
+	SPH_C64(0x3B92707249394949), SPH_C64(0x5FAF9A86D943D9D9),
+	SPH_C64(0x31F91DC3F2EFF2F2), SPH_C64(0xA8DB484BE3ABE3E3),
+	SPH_C64(0xB9B62AE25B715B5B), SPH_C64(0xBC0D9234881A8888),
+	SPH_C64(0x3E29C8A49A529A9A), SPH_C64(0x0B4CBE2D26982626),
+	SPH_C64(0xBF64FA8D32C83232), SPH_C64(0x597D4AE9B0FAB0B0),
+	SPH_C64(0xF2CF6A1BE983E9E9), SPH_C64(0x771E33780F3C0F0F),
+	SPH_C64(0x33B7A6E6D573D5D5), SPH_C64(0xF41DBA74803A8080),
+	SPH_C64(0x27617C99BEC2BEBE), SPH_C64(0xEB87DE26CD13CDCD),
+	SPH_C64(0x8968E4BD34D03434), SPH_C64(0x3290757A483D4848),
+	SPH_C64(0x54E324ABFFDBFFFF), SPH_C64(0x8DF48FF77AF57A7A),
+	SPH_C64(0x643DEAF4907A9090), SPH_C64(0x9DBE3EC25F615F5F),
+	SPH_C64(0x3D40A01D20802020), SPH_C64(0x0FD0D56768BD6868),
+	SPH_C64(0xCA3472D01A681A1A), SPH_C64(0xB7412C19AE82AEAE),
+	SPH_C64(0x7D755EC9B4EAB4B4), SPH_C64(0xCEA8199A544D5454),
+	SPH_C64(0x7F3BE5EC93769393), SPH_C64(0x2F44AA0D22882222),
+	SPH_C64(0x63C8E907648D6464), SPH_C64(0x2AFF12DBF1E3F1F1),
+	SPH_C64(0xCCE6A2BF73D17373), SPH_C64(0x82245A9012481212),
+	SPH_C64(0x7A805D3A401D4040), SPH_C64(0x4810284008200808),
+	SPH_C64(0x959BE856C32BC3C3), SPH_C64(0xDFC57B33EC97ECEC),
+	SPH_C64(0x4DAB9096DB4BDBDB), SPH_C64(0xC05F1F61A1BEA1A1),
+	SPH_C64(0x9107831C8D0E8D8D), SPH_C64(0xC87AC9F53DF43D3D),
+	SPH_C64(0x5B33F1CC97669797), SPH_C64(0x0000000000000000),
+	SPH_C64(0xF983D436CF1BCFCF), SPH_C64(0x6E5687452BAC2B2B),
+	SPH_C64(0xE1ECB39776C57676), SPH_C64(0xE619B06482328282),
+	SPH_C64(0x28B1A9FED67FD6D6), SPH_C64(0xC33677D81B6C1B1B),
+	SPH_C64(0x74775BC1B5EEB5B5), SPH_C64(0xBE432911AF86AFAF),
+	SPH_C64(0x1DD4DF776AB56A6A), SPH_C64(0xEAA00DBA505D5050),
+	SPH_C64(0x578A4C1245094545), SPH_C64(0x38FB18CBF3EBF3F3),
+	SPH_C64(0xAD60F09D30C03030), SPH_C64(0xC4C3742BEF9BEFEF),
+	SPH_C64(0xDA7EC3E53FFC3F3F), SPH_C64(0xC7AA1C9255495555),
+	SPH_C64(0xDB591079A2B2A2A2), SPH_C64(0xE9C96503EA8FEAEA),
+	SPH_C64(0x6ACAEC0F65896565), SPH_C64(0x036968B9BAD2BABA),
+	SPH_C64(0x4A5E93652FBC2F2F), SPH_C64(0x8E9DE74EC027C0C0),
+	SPH_C64(0x60A181BEDE5FDEDE), SPH_C64(0xFC386CE01C701C1C),
+	SPH_C64(0x46E72EBBFDD3FDFD), SPH_C64(0x1F9A64524D294D4D),
+	SPH_C64(0x7639E0E492729292), SPH_C64(0xFAEABC8F75C97575),
+	SPH_C64(0x360C1E3006180606), SPH_C64(0xAE0998248A128A8A),
+	SPH_C64(0x4B7940F9B2F2B2B2), SPH_C64(0x85D15963E6BFE6E6),
+	SPH_C64(0x7E1C36700E380E0E), SPH_C64(0xE73E63F81F7C1F1F),
+	SPH_C64(0x55C4F73762956262), SPH_C64(0x3AB5A3EED477D4D4),
+	SPH_C64(0x814D3229A89AA8A8), SPH_C64(0x5231F4C496629696),
+	SPH_C64(0x62EF3A9BF9C3F9F9), SPH_C64(0xA397F666C533C5C5),
+	SPH_C64(0x104AB13525942525), SPH_C64(0xABB220F259795959),
+	SPH_C64(0xD015AE54842A8484), SPH_C64(0xC5E4A7B772D57272),
+	SPH_C64(0xEC72DDD539E43939), SPH_C64(0x1698615A4C2D4C4C),
+	SPH_C64(0x94BC3BCA5E655E5E), SPH_C64(0x9FF085E778FD7878),
+	SPH_C64(0xE570D8DD38E03838), SPH_C64(0x980586148C0A8C8C),
+	SPH_C64(0x17BFB2C6D163D1D1), SPH_C64(0xE4570B41A5AEA5A5),
+	SPH_C64(0xA1D94D43E2AFE2E2), SPH_C64(0x4EC2F82F61996161),
+	SPH_C64(0x427B45F1B3F6B3B3), SPH_C64(0x3442A51521842121),
+	SPH_C64(0x0825D6949C4A9C9C), SPH_C64(0xEE3C66F01E781E1E),
+	SPH_C64(0x6186522243114343), SPH_C64(0xB193FC76C73BC7C7),
+	SPH_C64(0x4FE52BB3FCD7FCFC), SPH_C64(0x2408142004100404),
+	SPH_C64(0xE3A208B251595151), SPH_C64(0x252FC7BC995E9999),
+	SPH_C64(0x22DAC44F6DA96D6D), SPH_C64(0x651A39680D340D0D),
+	SPH_C64(0x79E93583FACFFAFA), SPH_C64(0x69A384B6DF5BDFDF),
+	SPH_C64(0xA9FC9BD77EE57E7E), SPH_C64(0x1948B43D24902424),
+	SPH_C64(0xFE76D7C53BEC3B3B), SPH_C64(0x9A4B3D31AB96ABAB),
+	SPH_C64(0xF081D13ECE1FCECE), SPH_C64(0x9922558811441111),
+	SPH_C64(0x8303890C8F068F8F), SPH_C64(0x049C6B4A4E254E4E),
+	SPH_C64(0x667351D1B7E6B7B7), SPH_C64(0xE0CB600BEB8BEBEB),
+	SPH_C64(0xC178CCFD3CF03C3C), SPH_C64(0xFD1FBF7C813E8181),
+	SPH_C64(0x4035FED4946A9494), SPH_C64(0x1CF30CEBF7FBF7F7),
+	SPH_C64(0x186F67A1B9DEB9B9), SPH_C64(0x8B265F98134C1313),
+	SPH_C64(0x51589C7D2CB02C2C), SPH_C64(0x05BBB8D6D36BD3D3),
+	SPH_C64(0x8CD35C6BE7BBE7E7), SPH_C64(0x39DCCB576EA56E6E),
+	SPH_C64(0xAA95F36EC437C4C4), SPH_C64(0x1B060F18030C0303),
+	SPH_C64(0xDCAC138A56455656), SPH_C64(0x5E88491A440D4444),
+	SPH_C64(0xA0FE9EDF7FE17F7F), SPH_C64(0x884F3721A99EA9A9),
+	SPH_C64(0x6754824D2AA82A2A), SPH_C64(0x0A6B6DB1BBD6BBBB),
+	SPH_C64(0x879FE246C123C1C1), SPH_C64(0xF1A602A253515353),
+	SPH_C64(0x72A58BAEDC57DCDC), SPH_C64(0x531627580B2C0B0B),
+	SPH_C64(0x0127D39C9D4E9D9D), SPH_C64(0x2BD8C1476CAD6C6C),
+	SPH_C64(0xA462F59531C43131), SPH_C64(0xF3E8B98774CD7474),
+	SPH_C64(0x15F109E3F6FFF6F6), SPH_C64(0x4C8C430A46054646),
+	SPH_C64(0xA5452609AC8AACAC), SPH_C64(0xB50F973C891E8989),
+	SPH_C64(0xB42844A014501414), SPH_C64(0xBADF425BE1A3E1E1),
+	SPH_C64(0xA62C4EB016581616), SPH_C64(0xF774D2CD3AE83A3A),
+	SPH_C64(0x06D2D06F69B96969), SPH_C64(0x41122D4809240909),
+	SPH_C64(0xD7E0ADA770DD7070), SPH_C64(0x6F7154D9B6E2B6B6),
+	SPH_C64(0x1EBDB7CED067D0D0), SPH_C64(0xD6C77E3BED93EDED),
+	SPH_C64(0xE285DB2ECC17CCCC), SPH_C64(0x6884572A42154242),
+	SPH_C64(0x2C2DC2B4985A9898), SPH_C64(0xED550E49A4AAA4A4),
+	SPH_C64(0x7550885D28A02828), SPH_C64(0x86B831DA5C6D5C5C),
+	SPH_C64(0x6BED3F93F8C7F8F8), SPH_C64(0xC211A44486228686)
+};
+
+#if !SPH_SMALL_FOOTPRINT_WHIRLPOOL
+
+static const sph_u64 plain_T1[256] = {
+	SPH_C64(0x3078C018601818D8), SPH_C64(0x46AF05238C232326),
+	SPH_C64(0x91F97EC63FC6C6B8), SPH_C64(0xCD6F13E887E8E8FB),
+	SPH_C64(0x13A14C87268787CB), SPH_C64(0x6D62A9B8DAB8B811),
+	SPH_C64(0x0205080104010109), SPH_C64(0x9E6E424F214F4F0D),
+	SPH_C64(0x6CEEAD36D836369B), SPH_C64(0x510459A6A2A6A6FF),
+	SPH_C64(0xB9BDDED26FD2D20C), SPH_C64(0xF706FBF5F3F5F50E),
+	SPH_C64(0xF280EF79F9797996), SPH_C64(0xDECE5F6FA16F6F30),
+	SPH_C64(0x3FEFFC917E91916D), SPH_C64(0xA407AA52555252F8),
+	SPH_C64(0xC0FD27609D606047), SPH_C64(0x657689BCCABCBC35),
+	SPH_C64(0x2BCDAC9B569B9B37), SPH_C64(0x018C048E028E8E8A),
+	SPH_C64(0x5B1571A3B6A3A3D2), SPH_C64(0x183C600C300C0C6C),
+	SPH_C64(0xF68AFF7BF17B7B84), SPH_C64(0x6AE1B535D4353580),
+	SPH_C64(0x3A69E81D741D1DF5), SPH_C64(0xDD4753E0A7E0E0B3),
+	SPH_C64(0xB3ACF6D77BD7D721), SPH_C64(0x99ED5EC22FC2C29C),
+	SPH_C64(0x5C966D2EB82E2E43), SPH_C64(0x967A624B314B4B29),
+	SPH_C64(0xE121A3FEDFFEFE5D), SPH_C64(0xAE168257415757D5),
+	SPH_C64(0x2A41A815541515BD), SPH_C64(0xEEB69F77C17777E8),
+	SPH_C64(0x6EEBA537DC373792), SPH_C64(0xD7567BE5B3E5E59E),
+	SPH_C64(0x23D98C9F469F9F13), SPH_C64(0xFD17D3F0E7F0F023),
+	SPH_C64(0x947F6A4A354A4A20), SPH_C64(0xA9959EDA4FDADA44),
+	SPH_C64(0xB025FA587D5858A2), SPH_C64(0x8FCA06C903C9C9CF),
+	SPH_C64(0x528D5529A429297C), SPH_C64(0x1422500A280A0A5A),
+	SPH_C64(0x7F4FE1B1FEB1B150), SPH_C64(0x5D1A69A0BAA0A0C9),
+	SPH_C64(0xD6DA7F6BB16B6B14), SPH_C64(0x17AB5C852E8585D9),
+	SPH_C64(0x677381BDCEBDBD3C), SPH_C64(0xBA34D25D695D5D8F),
+	SPH_C64(0x2050801040101090), SPH_C64(0xF503F3F4F7F4F407),
+	SPH_C64(0x8BC016CB0BCBCBDD), SPH_C64(0x7CC6ED3EF83E3ED3),
+	SPH_C64(0x0A1128051405052D), SPH_C64(0xCEE61F6781676778),
+	SPH_C64(0xD55373E4B7E4E497), SPH_C64(0x4EBB25279C272702),
+	SPH_C64(0x8258324119414173), SPH_C64(0x0B9D2C8B168B8BA7),
+	SPH_C64(0x530151A7A6A7A7F6), SPH_C64(0xFA94CF7DE97D7DB2),
+	SPH_C64(0x37FBDC956E959549), SPH_C64(0xAD9F8ED847D8D856),
+	SPH_C64(0xEB308BFBCBFBFB70), SPH_C64(0xC17123EE9FEEEECD),
+	SPH_C64(0xF891C77CED7C7CBB), SPH_C64(0xCCE3176685666671),
+	SPH_C64(0xA78EA6DD53DDDD7B), SPH_C64(0x2E4BB8175C1717AF),
+	SPH_C64(0x8E46024701474745), SPH_C64(0x21DC849E429E9E1A),
+	SPH_C64(0x89C51ECA0FCACAD4), SPH_C64(0x5A99752DB42D2D58),
+	SPH_C64(0x637991BFC6BFBF2E), SPH_C64(0x0E1B38071C07073F),
+	SPH_C64(0x472301AD8EADADAC), SPH_C64(0xB42FEA5A755A5AB0),
+	SPH_C64(0x1BB56C83368383EF), SPH_C64(0x66FF8533CC3333B6),
+	SPH_C64(0xC6F23F639163635C), SPH_C64(0x040A100208020212),
+	SPH_C64(0x493839AA92AAAA93), SPH_C64(0xE2A8AF71D97171DE),
+	SPH_C64(0x8DCF0EC807C8C8C6), SPH_C64(0x327DC819641919D1),
+	SPH_C64(0x927072493949493B), SPH_C64(0xAF9A86D943D9D95F),
+	SPH_C64(0xF91DC3F2EFF2F231), SPH_C64(0xDB484BE3ABE3E3A8),
+	SPH_C64(0xB62AE25B715B5BB9), SPH_C64(0x0D9234881A8888BC),
+	SPH_C64(0x29C8A49A529A9A3E), SPH_C64(0x4CBE2D269826260B),
+	SPH_C64(0x64FA8D32C83232BF), SPH_C64(0x7D4AE9B0FAB0B059),
+	SPH_C64(0xCF6A1BE983E9E9F2), SPH_C64(0x1E33780F3C0F0F77),
+	SPH_C64(0xB7A6E6D573D5D533), SPH_C64(0x1DBA74803A8080F4),
+	SPH_C64(0x617C99BEC2BEBE27), SPH_C64(0x87DE26CD13CDCDEB),
+	SPH_C64(0x68E4BD34D0343489), SPH_C64(0x90757A483D484832),
+	SPH_C64(0xE324ABFFDBFFFF54), SPH_C64(0xF48FF77AF57A7A8D),
+	SPH_C64(0x3DEAF4907A909064), SPH_C64(0xBE3EC25F615F5F9D),
+	SPH_C64(0x40A01D208020203D), SPH_C64(0xD0D56768BD68680F),
+	SPH_C64(0x3472D01A681A1ACA), SPH_C64(0x412C19AE82AEAEB7),
+	SPH_C64(0x755EC9B4EAB4B47D), SPH_C64(0xA8199A544D5454CE),
+	SPH_C64(0x3BE5EC937693937F), SPH_C64(0x44AA0D228822222F),
+	SPH_C64(0xC8E907648D646463), SPH_C64(0xFF12DBF1E3F1F12A),
+	SPH_C64(0xE6A2BF73D17373CC), SPH_C64(0x245A901248121282),
+	SPH_C64(0x805D3A401D40407A), SPH_C64(0x1028400820080848),
+	SPH_C64(0x9BE856C32BC3C395), SPH_C64(0xC57B33EC97ECECDF),
+	SPH_C64(0xAB9096DB4BDBDB4D), SPH_C64(0x5F1F61A1BEA1A1C0),
+	SPH_C64(0x07831C8D0E8D8D91), SPH_C64(0x7AC9F53DF43D3DC8),
+	SPH_C64(0x33F1CC976697975B), SPH_C64(0x0000000000000000),
+	SPH_C64(0x83D436CF1BCFCFF9), SPH_C64(0x5687452BAC2B2B6E),
+	SPH_C64(0xECB39776C57676E1), SPH_C64(0x19B06482328282E6),
+	SPH_C64(0xB1A9FED67FD6D628), SPH_C64(0x3677D81B6C1B1BC3),
+	SPH_C64(0x775BC1B5EEB5B574), SPH_C64(0x432911AF86AFAFBE),
+	SPH_C64(0xD4DF776AB56A6A1D), SPH_C64(0xA00DBA505D5050EA),
+	SPH_C64(0x8A4C124509454557), SPH_C64(0xFB18CBF3EBF3F338),
+	SPH_C64(0x60F09D30C03030AD), SPH_C64(0xC3742BEF9BEFEFC4),
+	SPH_C64(0x7EC3E53FFC3F3FDA), SPH_C64(0xAA1C9255495555C7),
+	SPH_C64(0x591079A2B2A2A2DB), SPH_C64(0xC96503EA8FEAEAE9),
+	SPH_C64(0xCAEC0F658965656A), SPH_C64(0x6968B9BAD2BABA03),
+	SPH_C64(0x5E93652FBC2F2F4A), SPH_C64(0x9DE74EC027C0C08E),
+	SPH_C64(0xA181BEDE5FDEDE60), SPH_C64(0x386CE01C701C1CFC),
+	SPH_C64(0xE72EBBFDD3FDFD46), SPH_C64(0x9A64524D294D4D1F),
+	SPH_C64(0x39E0E49272929276), SPH_C64(0xEABC8F75C97575FA),
+	SPH_C64(0x0C1E300618060636), SPH_C64(0x0998248A128A8AAE),
+	SPH_C64(0x7940F9B2F2B2B24B), SPH_C64(0xD15963E6BFE6E685),
+	SPH_C64(0x1C36700E380E0E7E), SPH_C64(0x3E63F81F7C1F1FE7),
+	SPH_C64(0xC4F7376295626255), SPH_C64(0xB5A3EED477D4D43A),
+	SPH_C64(0x4D3229A89AA8A881), SPH_C64(0x31F4C49662969652),
+	SPH_C64(0xEF3A9BF9C3F9F962), SPH_C64(0x97F666C533C5C5A3),
+	SPH_C64(0x4AB1352594252510), SPH_C64(0xB220F259795959AB),
+	SPH_C64(0x15AE54842A8484D0), SPH_C64(0xE4A7B772D57272C5),
+	SPH_C64(0x72DDD539E43939EC), SPH_C64(0x98615A4C2D4C4C16),
+	SPH_C64(0xBC3BCA5E655E5E94), SPH_C64(0xF085E778FD78789F),
+	SPH_C64(0x70D8DD38E03838E5), SPH_C64(0x0586148C0A8C8C98),
+	SPH_C64(0xBFB2C6D163D1D117), SPH_C64(0x570B41A5AEA5A5E4),
+	SPH_C64(0xD94D43E2AFE2E2A1), SPH_C64(0xC2F82F619961614E),
+	SPH_C64(0x7B45F1B3F6B3B342), SPH_C64(0x42A5152184212134),
+	SPH_C64(0x25D6949C4A9C9C08), SPH_C64(0x3C66F01E781E1EEE),
+	SPH_C64(0x8652224311434361), SPH_C64(0x93FC76C73BC7C7B1),
+	SPH_C64(0xE52BB3FCD7FCFC4F), SPH_C64(0x0814200410040424),
+	SPH_C64(0xA208B251595151E3), SPH_C64(0x2FC7BC995E999925),
+	SPH_C64(0xDAC44F6DA96D6D22), SPH_C64(0x1A39680D340D0D65),
+	SPH_C64(0xE93583FACFFAFA79), SPH_C64(0xA384B6DF5BDFDF69),
+	SPH_C64(0xFC9BD77EE57E7EA9), SPH_C64(0x48B43D2490242419),
+	SPH_C64(0x76D7C53BEC3B3BFE), SPH_C64(0x4B3D31AB96ABAB9A),
+	SPH_C64(0x81D13ECE1FCECEF0), SPH_C64(0x2255881144111199),
+	SPH_C64(0x03890C8F068F8F83), SPH_C64(0x9C6B4A4E254E4E04),
+	SPH_C64(0x7351D1B7E6B7B766), SPH_C64(0xCB600BEB8BEBEBE0),
+	SPH_C64(0x78CCFD3CF03C3CC1), SPH_C64(0x1FBF7C813E8181FD),
+	SPH_C64(0x35FED4946A949440), SPH_C64(0xF30CEBF7FBF7F71C),
+	SPH_C64(0x6F67A1B9DEB9B918), SPH_C64(0x265F98134C13138B),
+	SPH_C64(0x589C7D2CB02C2C51), SPH_C64(0xBBB8D6D36BD3D305),
+	SPH_C64(0xD35C6BE7BBE7E78C), SPH_C64(0xDCCB576EA56E6E39),
+	SPH_C64(0x95F36EC437C4C4AA), SPH_C64(0x060F18030C03031B),
+	SPH_C64(0xAC138A56455656DC), SPH_C64(0x88491A440D44445E),
+	SPH_C64(0xFE9EDF7FE17F7FA0), SPH_C64(0x4F3721A99EA9A988),
+	SPH_C64(0x54824D2AA82A2A67), SPH_C64(0x6B6DB1BBD6BBBB0A),
+	SPH_C64(0x9FE246C123C1C187), SPH_C64(0xA602A253515353F1),
+	SPH_C64(0xA58BAEDC57DCDC72), SPH_C64(0x1627580B2C0B0B53),
+	SPH_C64(0x27D39C9D4E9D9D01), SPH_C64(0xD8C1476CAD6C6C2B),
+	SPH_C64(0x62F59531C43131A4), SPH_C64(0xE8B98774CD7474F3),
+	SPH_C64(0xF109E3F6FFF6F615), SPH_C64(0x8C430A460546464C),
+	SPH_C64(0x452609AC8AACACA5), SPH_C64(0x0F973C891E8989B5),
+	SPH_C64(0x2844A014501414B4), SPH_C64(0xDF425BE1A3E1E1BA),
+	SPH_C64(0x2C4EB016581616A6), SPH_C64(0x74D2CD3AE83A3AF7),
+	SPH_C64(0xD2D06F69B9696906), SPH_C64(0x122D480924090941),
+	SPH_C64(0xE0ADA770DD7070D7), SPH_C64(0x7154D9B6E2B6B66F),
+	SPH_C64(0xBDB7CED067D0D01E), SPH_C64(0xC77E3BED93EDEDD6),
+	SPH_C64(0x85DB2ECC17CCCCE2), SPH_C64(0x84572A4215424268),
+	SPH_C64(0x2DC2B4985A98982C), SPH_C64(0x550E49A4AAA4A4ED),
+	SPH_C64(0x50885D28A0282875), SPH_C64(0xB831DA5C6D5C5C86),
+	SPH_C64(0xED3F93F8C7F8F86B), SPH_C64(0x11A44486228686C2)
+};
+
+static const sph_u64 plain_T2[256] = {
+	SPH_C64(0x78C018601818D830), SPH_C64(0xAF05238C23232646),
+	SPH_C64(0xF97EC63FC6C6B891), SPH_C64(0x6F13E887E8E8FBCD),
+	SPH_C64(0xA14C87268787CB13), SPH_C64(0x62A9B8DAB8B8116D),
+	SPH_C64(0x0508010401010902), SPH_C64(0x6E424F214F4F0D9E),
+	SPH_C64(0xEEAD36D836369B6C), SPH_C64(0x0459A6A2A6A6FF51),
+	SPH_C64(0xBDDED26FD2D20CB9), SPH_C64(0x06FBF5F3F5F50EF7),
+	SPH_C64(0x80EF79F9797996F2), SPH_C64(0xCE5F6FA16F6F30DE),
+	SPH_C64(0xEFFC917E91916D3F), SPH_C64(0x07AA52555252F8A4),
+	SPH_C64(0xFD27609D606047C0), SPH_C64(0x7689BCCABCBC3565),
+	SPH_C64(0xCDAC9B569B9B372B), SPH_C64(0x8C048E028E8E8A01),
+	SPH_C64(0x1571A3B6A3A3D25B), SPH_C64(0x3C600C300C0C6C18),
+	SPH_C64(0x8AFF7BF17B7B84F6), SPH_C64(0xE1B535D43535806A),
+	SPH_C64(0x69E81D741D1DF53A), SPH_C64(0x4753E0A7E0E0B3DD),
+	SPH_C64(0xACF6D77BD7D721B3), SPH_C64(0xED5EC22FC2C29C99),
+	SPH_C64(0x966D2EB82E2E435C), SPH_C64(0x7A624B314B4B2996),
+	SPH_C64(0x21A3FEDFFEFE5DE1), SPH_C64(0x168257415757D5AE),
+	SPH_C64(0x41A815541515BD2A), SPH_C64(0xB69F77C17777E8EE),
+	SPH_C64(0xEBA537DC3737926E), SPH_C64(0x567BE5B3E5E59ED7),
+	SPH_C64(0xD98C9F469F9F1323), SPH_C64(0x17D3F0E7F0F023FD),
+	SPH_C64(0x7F6A4A354A4A2094), SPH_C64(0x959EDA4FDADA44A9),
+	SPH_C64(0x25FA587D5858A2B0), SPH_C64(0xCA06C903C9C9CF8F),
+	SPH_C64(0x8D5529A429297C52), SPH_C64(0x22500A280A0A5A14),
+	SPH_C64(0x4FE1B1FEB1B1507F), SPH_C64(0x1A69A0BAA0A0C95D),
+	SPH_C64(0xDA7F6BB16B6B14D6), SPH_C64(0xAB5C852E8585D917),
+	SPH_C64(0x7381BDCEBDBD3C67), SPH_C64(0x34D25D695D5D8FBA),
+	SPH_C64(0x5080104010109020), SPH_C64(0x03F3F4F7F4F407F5),
+	SPH_C64(0xC016CB0BCBCBDD8B), SPH_C64(0xC6ED3EF83E3ED37C),
+	SPH_C64(0x1128051405052D0A), SPH_C64(0xE61F6781676778CE),
+	SPH_C64(0x5373E4B7E4E497D5), SPH_C64(0xBB25279C2727024E),
+	SPH_C64(0x5832411941417382), SPH_C64(0x9D2C8B168B8BA70B),
+	SPH_C64(0x0151A7A6A7A7F653), SPH_C64(0x94CF7DE97D7DB2FA),
+	SPH_C64(0xFBDC956E95954937), SPH_C64(0x9F8ED847D8D856AD),
+	SPH_C64(0x308BFBCBFBFB70EB), SPH_C64(0x7123EE9FEEEECDC1),
+	SPH_C64(0x91C77CED7C7CBBF8), SPH_C64(0xE3176685666671CC),
+	SPH_C64(0x8EA6DD53DDDD7BA7), SPH_C64(0x4BB8175C1717AF2E),
+	SPH_C64(0x460247014747458E), SPH_C64(0xDC849E429E9E1A21),
+	SPH_C64(0xC51ECA0FCACAD489), SPH_C64(0x99752DB42D2D585A),
+	SPH_C64(0x7991BFC6BFBF2E63), SPH_C64(0x1B38071C07073F0E),
+	SPH_C64(0x2301AD8EADADAC47), SPH_C64(0x2FEA5A755A5AB0B4),
+	SPH_C64(0xB56C83368383EF1B), SPH_C64(0xFF8533CC3333B666),
+	SPH_C64(0xF23F639163635CC6), SPH_C64(0x0A10020802021204),
+	SPH_C64(0x3839AA92AAAA9349), SPH_C64(0xA8AF71D97171DEE2),
+	SPH_C64(0xCF0EC807C8C8C68D), SPH_C64(0x7DC819641919D132),
+	SPH_C64(0x7072493949493B92), SPH_C64(0x9A86D943D9D95FAF),
+	SPH_C64(0x1DC3F2EFF2F231F9), SPH_C64(0x484BE3ABE3E3A8DB),
+	SPH_C64(0x2AE25B715B5BB9B6), SPH_C64(0x9234881A8888BC0D),
+	SPH_C64(0xC8A49A529A9A3E29), SPH_C64(0xBE2D269826260B4C),
+	SPH_C64(0xFA8D32C83232BF64), SPH_C64(0x4AE9B0FAB0B0597D),
+	SPH_C64(0x6A1BE983E9E9F2CF), SPH_C64(0x33780F3C0F0F771E),
+	SPH_C64(0xA6E6D573D5D533B7), SPH_C64(0xBA74803A8080F41D),
+	SPH_C64(0x7C99BEC2BEBE2761), SPH_C64(0xDE26CD13CDCDEB87),
+	SPH_C64(0xE4BD34D034348968), SPH_C64(0x757A483D48483290),
+	SPH_C64(0x24ABFFDBFFFF54E3), SPH_C64(0x8FF77AF57A7A8DF4),
+	SPH_C64(0xEAF4907A9090643D), SPH_C64(0x3EC25F615F5F9DBE),
+	SPH_C64(0xA01D208020203D40), SPH_C64(0xD56768BD68680FD0),
+	SPH_C64(0x72D01A681A1ACA34), SPH_C64(0x2C19AE82AEAEB741),
+	SPH_C64(0x5EC9B4EAB4B47D75), SPH_C64(0x199A544D5454CEA8),
+	SPH_C64(0xE5EC937693937F3B), SPH_C64(0xAA0D228822222F44),
+	SPH_C64(0xE907648D646463C8), SPH_C64(0x12DBF1E3F1F12AFF),
+	SPH_C64(0xA2BF73D17373CCE6), SPH_C64(0x5A90124812128224),
+	SPH_C64(0x5D3A401D40407A80), SPH_C64(0x2840082008084810),
+	SPH_C64(0xE856C32BC3C3959B), SPH_C64(0x7B33EC97ECECDFC5),
+	SPH_C64(0x9096DB4BDBDB4DAB), SPH_C64(0x1F61A1BEA1A1C05F),
+	SPH_C64(0x831C8D0E8D8D9107), SPH_C64(0xC9F53DF43D3DC87A),
+	SPH_C64(0xF1CC976697975B33), SPH_C64(0x0000000000000000),
+	SPH_C64(0xD436CF1BCFCFF983), SPH_C64(0x87452BAC2B2B6E56),
+	SPH_C64(0xB39776C57676E1EC), SPH_C64(0xB06482328282E619),
+	SPH_C64(0xA9FED67FD6D628B1), SPH_C64(0x77D81B6C1B1BC336),
+	SPH_C64(0x5BC1B5EEB5B57477), SPH_C64(0x2911AF86AFAFBE43),
+	SPH_C64(0xDF776AB56A6A1DD4), SPH_C64(0x0DBA505D5050EAA0),
+	SPH_C64(0x4C1245094545578A), SPH_C64(0x18CBF3EBF3F338FB),
+	SPH_C64(0xF09D30C03030AD60), SPH_C64(0x742BEF9BEFEFC4C3),
+	SPH_C64(0xC3E53FFC3F3FDA7E), SPH_C64(0x1C9255495555C7AA),
+	SPH_C64(0x1079A2B2A2A2DB59), SPH_C64(0x6503EA8FEAEAE9C9),
+	SPH_C64(0xEC0F658965656ACA), SPH_C64(0x68B9BAD2BABA0369),
+	SPH_C64(0x93652FBC2F2F4A5E), SPH_C64(0xE74EC027C0C08E9D),
+	SPH_C64(0x81BEDE5FDEDE60A1), SPH_C64(0x6CE01C701C1CFC38),
+	SPH_C64(0x2EBBFDD3FDFD46E7), SPH_C64(0x64524D294D4D1F9A),
+	SPH_C64(0xE0E4927292927639), SPH_C64(0xBC8F75C97575FAEA),
+	SPH_C64(0x1E3006180606360C), SPH_C64(0x98248A128A8AAE09),
+	SPH_C64(0x40F9B2F2B2B24B79), SPH_C64(0x5963E6BFE6E685D1),
+	SPH_C64(0x36700E380E0E7E1C), SPH_C64(0x63F81F7C1F1FE73E),
+	SPH_C64(0xF7376295626255C4), SPH_C64(0xA3EED477D4D43AB5),
+	SPH_C64(0x3229A89AA8A8814D), SPH_C64(0xF4C4966296965231),
+	SPH_C64(0x3A9BF9C3F9F962EF), SPH_C64(0xF666C533C5C5A397),
+	SPH_C64(0xB13525942525104A), SPH_C64(0x20F259795959ABB2),
+	SPH_C64(0xAE54842A8484D015), SPH_C64(0xA7B772D57272C5E4),
+	SPH_C64(0xDDD539E43939EC72), SPH_C64(0x615A4C2D4C4C1698),
+	SPH_C64(0x3BCA5E655E5E94BC), SPH_C64(0x85E778FD78789FF0),
+	SPH_C64(0xD8DD38E03838E570), SPH_C64(0x86148C0A8C8C9805),
+	SPH_C64(0xB2C6D163D1D117BF), SPH_C64(0x0B41A5AEA5A5E457),
+	SPH_C64(0x4D43E2AFE2E2A1D9), SPH_C64(0xF82F619961614EC2),
+	SPH_C64(0x45F1B3F6B3B3427B), SPH_C64(0xA515218421213442),
+	SPH_C64(0xD6949C4A9C9C0825), SPH_C64(0x66F01E781E1EEE3C),
+	SPH_C64(0x5222431143436186), SPH_C64(0xFC76C73BC7C7B193),
+	SPH_C64(0x2BB3FCD7FCFC4FE5), SPH_C64(0x1420041004042408),
+	SPH_C64(0x08B251595151E3A2), SPH_C64(0xC7BC995E9999252F),
+	SPH_C64(0xC44F6DA96D6D22DA), SPH_C64(0x39680D340D0D651A),
+	SPH_C64(0x3583FACFFAFA79E9), SPH_C64(0x84B6DF5BDFDF69A3),
+	SPH_C64(0x9BD77EE57E7EA9FC), SPH_C64(0xB43D249024241948),
+	SPH_C64(0xD7C53BEC3B3BFE76), SPH_C64(0x3D31AB96ABAB9A4B),
+	SPH_C64(0xD13ECE1FCECEF081), SPH_C64(0x5588114411119922),
+	SPH_C64(0x890C8F068F8F8303), SPH_C64(0x6B4A4E254E4E049C),
+	SPH_C64(0x51D1B7E6B7B76673), SPH_C64(0x600BEB8BEBEBE0CB),
+	SPH_C64(0xCCFD3CF03C3CC178), SPH_C64(0xBF7C813E8181FD1F),
+	SPH_C64(0xFED4946A94944035), SPH_C64(0x0CEBF7FBF7F71CF3),
+	SPH_C64(0x67A1B9DEB9B9186F), SPH_C64(0x5F98134C13138B26),
+	SPH_C64(0x9C7D2CB02C2C5158), SPH_C64(0xB8D6D36BD3D305BB),
+	SPH_C64(0x5C6BE7BBE7E78CD3), SPH_C64(0xCB576EA56E6E39DC),
+	SPH_C64(0xF36EC437C4C4AA95), SPH_C64(0x0F18030C03031B06),
+	SPH_C64(0x138A56455656DCAC), SPH_C64(0x491A440D44445E88),
+	SPH_C64(0x9EDF7FE17F7FA0FE), SPH_C64(0x3721A99EA9A9884F),
+	SPH_C64(0x824D2AA82A2A6754), SPH_C64(0x6DB1BBD6BBBB0A6B),
+	SPH_C64(0xE246C123C1C1879F), SPH_C64(0x02A253515353F1A6),
+	SPH_C64(0x8BAEDC57DCDC72A5), SPH_C64(0x27580B2C0B0B5316),
+	SPH_C64(0xD39C9D4E9D9D0127), SPH_C64(0xC1476CAD6C6C2BD8),
+	SPH_C64(0xF59531C43131A462), SPH_C64(0xB98774CD7474F3E8),
+	SPH_C64(0x09E3F6FFF6F615F1), SPH_C64(0x430A460546464C8C),
+	SPH_C64(0x2609AC8AACACA545), SPH_C64(0x973C891E8989B50F),
+	SPH_C64(0x44A014501414B428), SPH_C64(0x425BE1A3E1E1BADF),
+	SPH_C64(0x4EB016581616A62C), SPH_C64(0xD2CD3AE83A3AF774),
+	SPH_C64(0xD06F69B9696906D2), SPH_C64(0x2D48092409094112),
+	SPH_C64(0xADA770DD7070D7E0), SPH_C64(0x54D9B6E2B6B66F71),
+	SPH_C64(0xB7CED067D0D01EBD), SPH_C64(0x7E3BED93EDEDD6C7),
+	SPH_C64(0xDB2ECC17CCCCE285), SPH_C64(0x572A421542426884),
+	SPH_C64(0xC2B4985A98982C2D), SPH_C64(0x0E49A4AAA4A4ED55),
+	SPH_C64(0x885D28A028287550), SPH_C64(0x31DA5C6D5C5C86B8),
+	SPH_C64(0x3F93F8C7F8F86BED), SPH_C64(0xA44486228686C211)
+};
+
+static const sph_u64 plain_T3[256] = {
+	SPH_C64(0xC018601818D83078), SPH_C64(0x05238C23232646AF),
+	SPH_C64(0x7EC63FC6C6B891F9), SPH_C64(0x13E887E8E8FBCD6F),
+	SPH_C64(0x4C87268787CB13A1), SPH_C64(0xA9B8DAB8B8116D62),
+	SPH_C64(0x0801040101090205), SPH_C64(0x424F214F4F0D9E6E),
+	SPH_C64(0xAD36D836369B6CEE), SPH_C64(0x59A6A2A6A6FF5104),
+	SPH_C64(0xDED26FD2D20CB9BD), SPH_C64(0xFBF5F3F5F50EF706),
+	SPH_C64(0xEF79F9797996F280), SPH_C64(0x5F6FA16F6F30DECE),
+	SPH_C64(0xFC917E91916D3FEF), SPH_C64(0xAA52555252F8A407),
+	SPH_C64(0x27609D606047C0FD), SPH_C64(0x89BCCABCBC356576),
+	SPH_C64(0xAC9B569B9B372BCD), SPH_C64(0x048E028E8E8A018C),
+	SPH_C64(0x71A3B6A3A3D25B15), SPH_C64(0x600C300C0C6C183C),
+	SPH_C64(0xFF7BF17B7B84F68A), SPH_C64(0xB535D43535806AE1),
+	SPH_C64(0xE81D741D1DF53A69), SPH_C64(0x53E0A7E0E0B3DD47),
+	SPH_C64(0xF6D77BD7D721B3AC), SPH_C64(0x5EC22FC2C29C99ED),
+	SPH_C64(0x6D2EB82E2E435C96), SPH_C64(0x624B314B4B29967A),
+	SPH_C64(0xA3FEDFFEFE5DE121), SPH_C64(0x8257415757D5AE16),
+	SPH_C64(0xA815541515BD2A41), SPH_C64(0x9F77C17777E8EEB6),
+	SPH_C64(0xA537DC3737926EEB), SPH_C64(0x7BE5B3E5E59ED756),
+	SPH_C64(0x8C9F469F9F1323D9), SPH_C64(0xD3F0E7F0F023FD17),
+	SPH_C64(0x6A4A354A4A20947F), SPH_C64(0x9EDA4FDADA44A995),
+	SPH_C64(0xFA587D5858A2B025), SPH_C64(0x06C903C9C9CF8FCA),
+	SPH_C64(0x5529A429297C528D), SPH_C64(0x500A280A0A5A1422),
+	SPH_C64(0xE1B1FEB1B1507F4F), SPH_C64(0x69A0BAA0A0C95D1A),
+	SPH_C64(0x7F6BB16B6B14D6DA), SPH_C64(0x5C852E8585D917AB),
+	SPH_C64(0x81BDCEBDBD3C6773), SPH_C64(0xD25D695D5D8FBA34),
+	SPH_C64(0x8010401010902050), SPH_C64(0xF3F4F7F4F407F503),
+	SPH_C64(0x16CB0BCBCBDD8BC0), SPH_C64(0xED3EF83E3ED37CC6),
+	SPH_C64(0x28051405052D0A11), SPH_C64(0x1F6781676778CEE6),
+	SPH_C64(0x73E4B7E4E497D553), SPH_C64(0x25279C2727024EBB),
+	SPH_C64(0x3241194141738258), SPH_C64(0x2C8B168B8BA70B9D),
+	SPH_C64(0x51A7A6A7A7F65301), SPH_C64(0xCF7DE97D7DB2FA94),
+	SPH_C64(0xDC956E95954937FB), SPH_C64(0x8ED847D8D856AD9F),
+	SPH_C64(0x8BFBCBFBFB70EB30), SPH_C64(0x23EE9FEEEECDC171),
+	SPH_C64(0xC77CED7C7CBBF891), SPH_C64(0x176685666671CCE3),
+	SPH_C64(0xA6DD53DDDD7BA78E), SPH_C64(0xB8175C1717AF2E4B),
+	SPH_C64(0x0247014747458E46), SPH_C64(0x849E429E9E1A21DC),
+	SPH_C64(0x1ECA0FCACAD489C5), SPH_C64(0x752DB42D2D585A99),
+	SPH_C64(0x91BFC6BFBF2E6379), SPH_C64(0x38071C07073F0E1B),
+	SPH_C64(0x01AD8EADADAC4723), SPH_C64(0xEA5A755A5AB0B42F),
+	SPH_C64(0x6C83368383EF1BB5), SPH_C64(0x8533CC3333B666FF),
+	SPH_C64(0x3F639163635CC6F2), SPH_C64(0x100208020212040A),
+	SPH_C64(0x39AA92AAAA934938), SPH_C64(0xAF71D97171DEE2A8),
+	SPH_C64(0x0EC807C8C8C68DCF), SPH_C64(0xC819641919D1327D),
+	SPH_C64(0x72493949493B9270), SPH_C64(0x86D943D9D95FAF9A),
+	SPH_C64(0xC3F2EFF2F231F91D), SPH_C64(0x4BE3ABE3E3A8DB48),
+	SPH_C64(0xE25B715B5BB9B62A), SPH_C64(0x34881A8888BC0D92),
+	SPH_C64(0xA49A529A9A3E29C8), SPH_C64(0x2D269826260B4CBE),
+	SPH_C64(0x8D32C83232BF64FA), SPH_C64(0xE9B0FAB0B0597D4A),
+	SPH_C64(0x1BE983E9E9F2CF6A), SPH_C64(0x780F3C0F0F771E33),
+	SPH_C64(0xE6D573D5D533B7A6), SPH_C64(0x74803A8080F41DBA),
+	SPH_C64(0x99BEC2BEBE27617C), SPH_C64(0x26CD13CDCDEB87DE),
+	SPH_C64(0xBD34D034348968E4), SPH_C64(0x7A483D4848329075),
+	SPH_C64(0xABFFDBFFFF54E324), SPH_C64(0xF77AF57A7A8DF48F),
+	SPH_C64(0xF4907A9090643DEA), SPH_C64(0xC25F615F5F9DBE3E),
+	SPH_C64(0x1D208020203D40A0), SPH_C64(0x6768BD68680FD0D5),
+	SPH_C64(0xD01A681A1ACA3472), SPH_C64(0x19AE82AEAEB7412C),
+	SPH_C64(0xC9B4EAB4B47D755E), SPH_C64(0x9A544D5454CEA819),
+	SPH_C64(0xEC937693937F3BE5), SPH_C64(0x0D228822222F44AA),
+	SPH_C64(0x07648D646463C8E9), SPH_C64(0xDBF1E3F1F12AFF12),
+	SPH_C64(0xBF73D17373CCE6A2), SPH_C64(0x901248121282245A),
+	SPH_C64(0x3A401D40407A805D), SPH_C64(0x4008200808481028),
+	SPH_C64(0x56C32BC3C3959BE8), SPH_C64(0x33EC97ECECDFC57B),
+	SPH_C64(0x96DB4BDBDB4DAB90), SPH_C64(0x61A1BEA1A1C05F1F),
+	SPH_C64(0x1C8D0E8D8D910783), SPH_C64(0xF53DF43D3DC87AC9),
+	SPH_C64(0xCC976697975B33F1), SPH_C64(0x0000000000000000),
+	SPH_C64(0x36CF1BCFCFF983D4), SPH_C64(0x452BAC2B2B6E5687),
+	SPH_C64(0x9776C57676E1ECB3), SPH_C64(0x6482328282E619B0),
+	SPH_C64(0xFED67FD6D628B1A9), SPH_C64(0xD81B6C1B1BC33677),
+	SPH_C64(0xC1B5EEB5B574775B), SPH_C64(0x11AF86AFAFBE4329),
+	SPH_C64(0x776AB56A6A1DD4DF), SPH_C64(0xBA505D5050EAA00D),
+	SPH_C64(0x1245094545578A4C), SPH_C64(0xCBF3EBF3F338FB18),
+	SPH_C64(0x9D30C03030AD60F0), SPH_C64(0x2BEF9BEFEFC4C374),
+	SPH_C64(0xE53FFC3F3FDA7EC3), SPH_C64(0x9255495555C7AA1C),
+	SPH_C64(0x79A2B2A2A2DB5910), SPH_C64(0x03EA8FEAEAE9C965),
+	SPH_C64(0x0F658965656ACAEC), SPH_C64(0xB9BAD2BABA036968),
+	SPH_C64(0x652FBC2F2F4A5E93), SPH_C64(0x4EC027C0C08E9DE7),
+	SPH_C64(0xBEDE5FDEDE60A181), SPH_C64(0xE01C701C1CFC386C),
+	SPH_C64(0xBBFDD3FDFD46E72E), SPH_C64(0x524D294D4D1F9A64),
+	SPH_C64(0xE4927292927639E0), SPH_C64(0x8F75C97575FAEABC),
+	SPH_C64(0x3006180606360C1E), SPH_C64(0x248A128A8AAE0998),
+	SPH_C64(0xF9B2F2B2B24B7940), SPH_C64(0x63E6BFE6E685D159),
+	SPH_C64(0x700E380E0E7E1C36), SPH_C64(0xF81F7C1F1FE73E63),
+	SPH_C64(0x376295626255C4F7), SPH_C64(0xEED477D4D43AB5A3),
+	SPH_C64(0x29A89AA8A8814D32), SPH_C64(0xC4966296965231F4),
+	SPH_C64(0x9BF9C3F9F962EF3A), SPH_C64(0x66C533C5C5A397F6),
+	SPH_C64(0x3525942525104AB1), SPH_C64(0xF259795959ABB220),
+	SPH_C64(0x54842A8484D015AE), SPH_C64(0xB772D57272C5E4A7),
+	SPH_C64(0xD539E43939EC72DD), SPH_C64(0x5A4C2D4C4C169861),
+	SPH_C64(0xCA5E655E5E94BC3B), SPH_C64(0xE778FD78789FF085),
+	SPH_C64(0xDD38E03838E570D8), SPH_C64(0x148C0A8C8C980586),
+	SPH_C64(0xC6D163D1D117BFB2), SPH_C64(0x41A5AEA5A5E4570B),
+	SPH_C64(0x43E2AFE2E2A1D94D), SPH_C64(0x2F619961614EC2F8),
+	SPH_C64(0xF1B3F6B3B3427B45), SPH_C64(0x15218421213442A5),
+	SPH_C64(0x949C4A9C9C0825D6), SPH_C64(0xF01E781E1EEE3C66),
+	SPH_C64(0x2243114343618652), SPH_C64(0x76C73BC7C7B193FC),
+	SPH_C64(0xB3FCD7FCFC4FE52B), SPH_C64(0x2004100404240814),
+	SPH_C64(0xB251595151E3A208), SPH_C64(0xBC995E9999252FC7),
+	SPH_C64(0x4F6DA96D6D22DAC4), SPH_C64(0x680D340D0D651A39),
+	SPH_C64(0x83FACFFAFA79E935), SPH_C64(0xB6DF5BDFDF69A384),
+	SPH_C64(0xD77EE57E7EA9FC9B), SPH_C64(0x3D249024241948B4),
+	SPH_C64(0xC53BEC3B3BFE76D7), SPH_C64(0x31AB96ABAB9A4B3D),
+	SPH_C64(0x3ECE1FCECEF081D1), SPH_C64(0x8811441111992255),
+	SPH_C64(0x0C8F068F8F830389), SPH_C64(0x4A4E254E4E049C6B),
+	SPH_C64(0xD1B7E6B7B7667351), SPH_C64(0x0BEB8BEBEBE0CB60),
+	SPH_C64(0xFD3CF03C3CC178CC), SPH_C64(0x7C813E8181FD1FBF),
+	SPH_C64(0xD4946A94944035FE), SPH_C64(0xEBF7FBF7F71CF30C),
+	SPH_C64(0xA1B9DEB9B9186F67), SPH_C64(0x98134C13138B265F),
+	SPH_C64(0x7D2CB02C2C51589C), SPH_C64(0xD6D36BD3D305BBB8),
+	SPH_C64(0x6BE7BBE7E78CD35C), SPH_C64(0x576EA56E6E39DCCB),
+	SPH_C64(0x6EC437C4C4AA95F3), SPH_C64(0x18030C03031B060F),
+	SPH_C64(0x8A56455656DCAC13), SPH_C64(0x1A440D44445E8849),
+	SPH_C64(0xDF7FE17F7FA0FE9E), SPH_C64(0x21A99EA9A9884F37),
+	SPH_C64(0x4D2AA82A2A675482), SPH_C64(0xB1BBD6BBBB0A6B6D),
+	SPH_C64(0x46C123C1C1879FE2), SPH_C64(0xA253515353F1A602),
+	SPH_C64(0xAEDC57DCDC72A58B), SPH_C64(0x580B2C0B0B531627),
+	SPH_C64(0x9C9D4E9D9D0127D3), SPH_C64(0x476CAD6C6C2BD8C1),
+	SPH_C64(0x9531C43131A462F5), SPH_C64(0x8774CD7474F3E8B9),
+	SPH_C64(0xE3F6FFF6F615F109), SPH_C64(0x0A460546464C8C43),
+	SPH_C64(0x09AC8AACACA54526), SPH_C64(0x3C891E8989B50F97),
+	SPH_C64(0xA014501414B42844), SPH_C64(0x5BE1A3E1E1BADF42),
+	SPH_C64(0xB016581616A62C4E), SPH_C64(0xCD3AE83A3AF774D2),
+	SPH_C64(0x6F69B9696906D2D0), SPH_C64(0x480924090941122D),
+	SPH_C64(0xA770DD7070D7E0AD), SPH_C64(0xD9B6E2B6B66F7154),
+	SPH_C64(0xCED067D0D01EBDB7), SPH_C64(0x3BED93EDEDD6C77E),
+	SPH_C64(0x2ECC17CCCCE285DB), SPH_C64(0x2A42154242688457),
+	SPH_C64(0xB4985A98982C2DC2), SPH_C64(0x49A4AAA4A4ED550E),
+	SPH_C64(0x5D28A02828755088), SPH_C64(0xDA5C6D5C5C86B831),
+	SPH_C64(0x93F8C7F8F86BED3F), SPH_C64(0x4486228686C211A4)
+};
+
+static const sph_u64 plain_T4[256] = {
+	SPH_C64(0x18601818D83078C0), SPH_C64(0x238C23232646AF05),
+	SPH_C64(0xC63FC6C6B891F97E), SPH_C64(0xE887E8E8FBCD6F13),
+	SPH_C64(0x87268787CB13A14C), SPH_C64(0xB8DAB8B8116D62A9),
+	SPH_C64(0x0104010109020508), SPH_C64(0x4F214F4F0D9E6E42),
+	SPH_C64(0x36D836369B6CEEAD), SPH_C64(0xA6A2A6A6FF510459),
+	SPH_C64(0xD26FD2D20CB9BDDE), SPH_C64(0xF5F3F5F50EF706FB),
+	SPH_C64(0x79F9797996F280EF), SPH_C64(0x6FA16F6F30DECE5F),
+	SPH_C64(0x917E91916D3FEFFC), SPH_C64(0x52555252F8A407AA),
+	SPH_C64(0x609D606047C0FD27), SPH_C64(0xBCCABCBC35657689),
+	SPH_C64(0x9B569B9B372BCDAC), SPH_C64(0x8E028E8E8A018C04),
+	SPH_C64(0xA3B6A3A3D25B1571), SPH_C64(0x0C300C0C6C183C60),
+	SPH_C64(0x7BF17B7B84F68AFF), SPH_C64(0x35D43535806AE1B5),
+	SPH_C64(0x1D741D1DF53A69E8), SPH_C64(0xE0A7E0E0B3DD4753),
+	SPH_C64(0xD77BD7D721B3ACF6), SPH_C64(0xC22FC2C29C99ED5E),
+	SPH_C64(0x2EB82E2E435C966D), SPH_C64(0x4B314B4B29967A62),
+	SPH_C64(0xFEDFFEFE5DE121A3), SPH_C64(0x57415757D5AE1682),
+	SPH_C64(0x15541515BD2A41A8), SPH_C64(0x77C17777E8EEB69F),
+	SPH_C64(0x37DC3737926EEBA5), SPH_C64(0xE5B3E5E59ED7567B),
+	SPH_C64(0x9F469F9F1323D98C), SPH_C64(0xF0E7F0F023FD17D3),
+	SPH_C64(0x4A354A4A20947F6A), SPH_C64(0xDA4FDADA44A9959E),
+	SPH_C64(0x587D5858A2B025FA), SPH_C64(0xC903C9C9CF8FCA06),
+	SPH_C64(0x29A429297C528D55), SPH_C64(0x0A280A0A5A142250),
+	SPH_C64(0xB1FEB1B1507F4FE1), SPH_C64(0xA0BAA0A0C95D1A69),
+	SPH_C64(0x6BB16B6B14D6DA7F), SPH_C64(0x852E8585D917AB5C),
+	SPH_C64(0xBDCEBDBD3C677381), SPH_C64(0x5D695D5D8FBA34D2),
+	SPH_C64(0x1040101090205080), SPH_C64(0xF4F7F4F407F503F3),
+	SPH_C64(0xCB0BCBCBDD8BC016), SPH_C64(0x3EF83E3ED37CC6ED),
+	SPH_C64(0x051405052D0A1128), SPH_C64(0x6781676778CEE61F),
+	SPH_C64(0xE4B7E4E497D55373), SPH_C64(0x279C2727024EBB25),
+	SPH_C64(0x4119414173825832), SPH_C64(0x8B168B8BA70B9D2C),
+	SPH_C64(0xA7A6A7A7F6530151), SPH_C64(0x7DE97D7DB2FA94CF),
+	SPH_C64(0x956E95954937FBDC), SPH_C64(0xD847D8D856AD9F8E),
+	SPH_C64(0xFBCBFBFB70EB308B), SPH_C64(0xEE9FEEEECDC17123),
+	SPH_C64(0x7CED7C7CBBF891C7), SPH_C64(0x6685666671CCE317),
+	SPH_C64(0xDD53DDDD7BA78EA6), SPH_C64(0x175C1717AF2E4BB8),
+	SPH_C64(0x47014747458E4602), SPH_C64(0x9E429E9E1A21DC84),
+	SPH_C64(0xCA0FCACAD489C51E), SPH_C64(0x2DB42D2D585A9975),
+	SPH_C64(0xBFC6BFBF2E637991), SPH_C64(0x071C07073F0E1B38),
+	SPH_C64(0xAD8EADADAC472301), SPH_C64(0x5A755A5AB0B42FEA),
+	SPH_C64(0x83368383EF1BB56C), SPH_C64(0x33CC3333B666FF85),
+	SPH_C64(0x639163635CC6F23F), SPH_C64(0x0208020212040A10),
+	SPH_C64(0xAA92AAAA93493839), SPH_C64(0x71D97171DEE2A8AF),
+	SPH_C64(0xC807C8C8C68DCF0E), SPH_C64(0x19641919D1327DC8),
+	SPH_C64(0x493949493B927072), SPH_C64(0xD943D9D95FAF9A86),
+	SPH_C64(0xF2EFF2F231F91DC3), SPH_C64(0xE3ABE3E3A8DB484B),
+	SPH_C64(0x5B715B5BB9B62AE2), SPH_C64(0x881A8888BC0D9234),
+	SPH_C64(0x9A529A9A3E29C8A4), SPH_C64(0x269826260B4CBE2D),
+	SPH_C64(0x32C83232BF64FA8D), SPH_C64(0xB0FAB0B0597D4AE9),
+	SPH_C64(0xE983E9E9F2CF6A1B), SPH_C64(0x0F3C0F0F771E3378),
+	SPH_C64(0xD573D5D533B7A6E6), SPH_C64(0x803A8080F41DBA74),
+	SPH_C64(0xBEC2BEBE27617C99), SPH_C64(0xCD13CDCDEB87DE26),
+	SPH_C64(0x34D034348968E4BD), SPH_C64(0x483D48483290757A),
+	SPH_C64(0xFFDBFFFF54E324AB), SPH_C64(0x7AF57A7A8DF48FF7),
+	SPH_C64(0x907A9090643DEAF4), SPH_C64(0x5F615F5F9DBE3EC2),
+	SPH_C64(0x208020203D40A01D), SPH_C64(0x68BD68680FD0D567),
+	SPH_C64(0x1A681A1ACA3472D0), SPH_C64(0xAE82AEAEB7412C19),
+	SPH_C64(0xB4EAB4B47D755EC9), SPH_C64(0x544D5454CEA8199A),
+	SPH_C64(0x937693937F3BE5EC), SPH_C64(0x228822222F44AA0D),
+	SPH_C64(0x648D646463C8E907), SPH_C64(0xF1E3F1F12AFF12DB),
+	SPH_C64(0x73D17373CCE6A2BF), SPH_C64(0x1248121282245A90),
+	SPH_C64(0x401D40407A805D3A), SPH_C64(0x0820080848102840),
+	SPH_C64(0xC32BC3C3959BE856), SPH_C64(0xEC97ECECDFC57B33),
+	SPH_C64(0xDB4BDBDB4DAB9096), SPH_C64(0xA1BEA1A1C05F1F61),
+	SPH_C64(0x8D0E8D8D9107831C), SPH_C64(0x3DF43D3DC87AC9F5),
+	SPH_C64(0x976697975B33F1CC), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCF1BCFCFF983D436), SPH_C64(0x2BAC2B2B6E568745),
+	SPH_C64(0x76C57676E1ECB397), SPH_C64(0x82328282E619B064),
+	SPH_C64(0xD67FD6D628B1A9FE), SPH_C64(0x1B6C1B1BC33677D8),
+	SPH_C64(0xB5EEB5B574775BC1), SPH_C64(0xAF86AFAFBE432911),
+	SPH_C64(0x6AB56A6A1DD4DF77), SPH_C64(0x505D5050EAA00DBA),
+	SPH_C64(0x45094545578A4C12), SPH_C64(0xF3EBF3F338FB18CB),
+	SPH_C64(0x30C03030AD60F09D), SPH_C64(0xEF9BEFEFC4C3742B),
+	SPH_C64(0x3FFC3F3FDA7EC3E5), SPH_C64(0x55495555C7AA1C92),
+	SPH_C64(0xA2B2A2A2DB591079), SPH_C64(0xEA8FEAEAE9C96503),
+	SPH_C64(0x658965656ACAEC0F), SPH_C64(0xBAD2BABA036968B9),
+	SPH_C64(0x2FBC2F2F4A5E9365), SPH_C64(0xC027C0C08E9DE74E),
+	SPH_C64(0xDE5FDEDE60A181BE), SPH_C64(0x1C701C1CFC386CE0),
+	SPH_C64(0xFDD3FDFD46E72EBB), SPH_C64(0x4D294D4D1F9A6452),
+	SPH_C64(0x927292927639E0E4), SPH_C64(0x75C97575FAEABC8F),
+	SPH_C64(0x06180606360C1E30), SPH_C64(0x8A128A8AAE099824),
+	SPH_C64(0xB2F2B2B24B7940F9), SPH_C64(0xE6BFE6E685D15963),
+	SPH_C64(0x0E380E0E7E1C3670), SPH_C64(0x1F7C1F1FE73E63F8),
+	SPH_C64(0x6295626255C4F737), SPH_C64(0xD477D4D43AB5A3EE),
+	SPH_C64(0xA89AA8A8814D3229), SPH_C64(0x966296965231F4C4),
+	SPH_C64(0xF9C3F9F962EF3A9B), SPH_C64(0xC533C5C5A397F666),
+	SPH_C64(0x25942525104AB135), SPH_C64(0x59795959ABB220F2),
+	SPH_C64(0x842A8484D015AE54), SPH_C64(0x72D57272C5E4A7B7),
+	SPH_C64(0x39E43939EC72DDD5), SPH_C64(0x4C2D4C4C1698615A),
+	SPH_C64(0x5E655E5E94BC3BCA), SPH_C64(0x78FD78789FF085E7),
+	SPH_C64(0x38E03838E570D8DD), SPH_C64(0x8C0A8C8C98058614),
+	SPH_C64(0xD163D1D117BFB2C6), SPH_C64(0xA5AEA5A5E4570B41),
+	SPH_C64(0xE2AFE2E2A1D94D43), SPH_C64(0x619961614EC2F82F),
+	SPH_C64(0xB3F6B3B3427B45F1), SPH_C64(0x218421213442A515),
+	SPH_C64(0x9C4A9C9C0825D694), SPH_C64(0x1E781E1EEE3C66F0),
+	SPH_C64(0x4311434361865222), SPH_C64(0xC73BC7C7B193FC76),
+	SPH_C64(0xFCD7FCFC4FE52BB3), SPH_C64(0x0410040424081420),
+	SPH_C64(0x51595151E3A208B2), SPH_C64(0x995E9999252FC7BC),
+	SPH_C64(0x6DA96D6D22DAC44F), SPH_C64(0x0D340D0D651A3968),
+	SPH_C64(0xFACFFAFA79E93583), SPH_C64(0xDF5BDFDF69A384B6),
+	SPH_C64(0x7EE57E7EA9FC9BD7), SPH_C64(0x249024241948B43D),
+	SPH_C64(0x3BEC3B3BFE76D7C5), SPH_C64(0xAB96ABAB9A4B3D31),
+	SPH_C64(0xCE1FCECEF081D13E), SPH_C64(0x1144111199225588),
+	SPH_C64(0x8F068F8F8303890C), SPH_C64(0x4E254E4E049C6B4A),
+	SPH_C64(0xB7E6B7B7667351D1), SPH_C64(0xEB8BEBEBE0CB600B),
+	SPH_C64(0x3CF03C3CC178CCFD), SPH_C64(0x813E8181FD1FBF7C),
+	SPH_C64(0x946A94944035FED4), SPH_C64(0xF7FBF7F71CF30CEB),
+	SPH_C64(0xB9DEB9B9186F67A1), SPH_C64(0x134C13138B265F98),
+	SPH_C64(0x2CB02C2C51589C7D), SPH_C64(0xD36BD3D305BBB8D6),
+	SPH_C64(0xE7BBE7E78CD35C6B), SPH_C64(0x6EA56E6E39DCCB57),
+	SPH_C64(0xC437C4C4AA95F36E), SPH_C64(0x030C03031B060F18),
+	SPH_C64(0x56455656DCAC138A), SPH_C64(0x440D44445E88491A),
+	SPH_C64(0x7FE17F7FA0FE9EDF), SPH_C64(0xA99EA9A9884F3721),
+	SPH_C64(0x2AA82A2A6754824D), SPH_C64(0xBBD6BBBB0A6B6DB1),
+	SPH_C64(0xC123C1C1879FE246), SPH_C64(0x53515353F1A602A2),
+	SPH_C64(0xDC57DCDC72A58BAE), SPH_C64(0x0B2C0B0B53162758),
+	SPH_C64(0x9D4E9D9D0127D39C), SPH_C64(0x6CAD6C6C2BD8C147),
+	SPH_C64(0x31C43131A462F595), SPH_C64(0x74CD7474F3E8B987),
+	SPH_C64(0xF6FFF6F615F109E3), SPH_C64(0x460546464C8C430A),
+	SPH_C64(0xAC8AACACA5452609), SPH_C64(0x891E8989B50F973C),
+	SPH_C64(0x14501414B42844A0), SPH_C64(0xE1A3E1E1BADF425B),
+	SPH_C64(0x16581616A62C4EB0), SPH_C64(0x3AE83A3AF774D2CD),
+	SPH_C64(0x69B9696906D2D06F), SPH_C64(0x0924090941122D48),
+	SPH_C64(0x70DD7070D7E0ADA7), SPH_C64(0xB6E2B6B66F7154D9),
+	SPH_C64(0xD067D0D01EBDB7CE), SPH_C64(0xED93EDEDD6C77E3B),
+	SPH_C64(0xCC17CCCCE285DB2E), SPH_C64(0x421542426884572A),
+	SPH_C64(0x985A98982C2DC2B4), SPH_C64(0xA4AAA4A4ED550E49),
+	SPH_C64(0x28A028287550885D), SPH_C64(0x5C6D5C5C86B831DA),
+	SPH_C64(0xF8C7F8F86BED3F93), SPH_C64(0x86228686C211A444)
+};
+
+static const sph_u64 plain_T5[256] = {
+	SPH_C64(0x601818D83078C018), SPH_C64(0x8C23232646AF0523),
+	SPH_C64(0x3FC6C6B891F97EC6), SPH_C64(0x87E8E8FBCD6F13E8),
+	SPH_C64(0x268787CB13A14C87), SPH_C64(0xDAB8B8116D62A9B8),
+	SPH_C64(0x0401010902050801), SPH_C64(0x214F4F0D9E6E424F),
+	SPH_C64(0xD836369B6CEEAD36), SPH_C64(0xA2A6A6FF510459A6),
+	SPH_C64(0x6FD2D20CB9BDDED2), SPH_C64(0xF3F5F50EF706FBF5),
+	SPH_C64(0xF9797996F280EF79), SPH_C64(0xA16F6F30DECE5F6F),
+	SPH_C64(0x7E91916D3FEFFC91), SPH_C64(0x555252F8A407AA52),
+	SPH_C64(0x9D606047C0FD2760), SPH_C64(0xCABCBC35657689BC),
+	SPH_C64(0x569B9B372BCDAC9B), SPH_C64(0x028E8E8A018C048E),
+	SPH_C64(0xB6A3A3D25B1571A3), SPH_C64(0x300C0C6C183C600C),
+	SPH_C64(0xF17B7B84F68AFF7B), SPH_C64(0xD43535806AE1B535),
+	SPH_C64(0x741D1DF53A69E81D), SPH_C64(0xA7E0E0B3DD4753E0),
+	SPH_C64(0x7BD7D721B3ACF6D7), SPH_C64(0x2FC2C29C99ED5EC2),
+	SPH_C64(0xB82E2E435C966D2E), SPH_C64(0x314B4B29967A624B),
+	SPH_C64(0xDFFEFE5DE121A3FE), SPH_C64(0x415757D5AE168257),
+	SPH_C64(0x541515BD2A41A815), SPH_C64(0xC17777E8EEB69F77),
+	SPH_C64(0xDC3737926EEBA537), SPH_C64(0xB3E5E59ED7567BE5),
+	SPH_C64(0x469F9F1323D98C9F), SPH_C64(0xE7F0F023FD17D3F0),
+	SPH_C64(0x354A4A20947F6A4A), SPH_C64(0x4FDADA44A9959EDA),
+	SPH_C64(0x7D5858A2B025FA58), SPH_C64(0x03C9C9CF8FCA06C9),
+	SPH_C64(0xA429297C528D5529), SPH_C64(0x280A0A5A1422500A),
+	SPH_C64(0xFEB1B1507F4FE1B1), SPH_C64(0xBAA0A0C95D1A69A0),
+	SPH_C64(0xB16B6B14D6DA7F6B), SPH_C64(0x2E8585D917AB5C85),
+	SPH_C64(0xCEBDBD3C677381BD), SPH_C64(0x695D5D8FBA34D25D),
+	SPH_C64(0x4010109020508010), SPH_C64(0xF7F4F407F503F3F4),
+	SPH_C64(0x0BCBCBDD8BC016CB), SPH_C64(0xF83E3ED37CC6ED3E),
+	SPH_C64(0x1405052D0A112805), SPH_C64(0x81676778CEE61F67),
+	SPH_C64(0xB7E4E497D55373E4), SPH_C64(0x9C2727024EBB2527),
+	SPH_C64(0x1941417382583241), SPH_C64(0x168B8BA70B9D2C8B),
+	SPH_C64(0xA6A7A7F6530151A7), SPH_C64(0xE97D7DB2FA94CF7D),
+	SPH_C64(0x6E95954937FBDC95), SPH_C64(0x47D8D856AD9F8ED8),
+	SPH_C64(0xCBFBFB70EB308BFB), SPH_C64(0x9FEEEECDC17123EE),
+	SPH_C64(0xED7C7CBBF891C77C), SPH_C64(0x85666671CCE31766),
+	SPH_C64(0x53DDDD7BA78EA6DD), SPH_C64(0x5C1717AF2E4BB817),
+	SPH_C64(0x014747458E460247), SPH_C64(0x429E9E1A21DC849E),
+	SPH_C64(0x0FCACAD489C51ECA), SPH_C64(0xB42D2D585A99752D),
+	SPH_C64(0xC6BFBF2E637991BF), SPH_C64(0x1C07073F0E1B3807),
+	SPH_C64(0x8EADADAC472301AD), SPH_C64(0x755A5AB0B42FEA5A),
+	SPH_C64(0x368383EF1BB56C83), SPH_C64(0xCC3333B666FF8533),
+	SPH_C64(0x9163635CC6F23F63), SPH_C64(0x08020212040A1002),
+	SPH_C64(0x92AAAA93493839AA), SPH_C64(0xD97171DEE2A8AF71),
+	SPH_C64(0x07C8C8C68DCF0EC8), SPH_C64(0x641919D1327DC819),
+	SPH_C64(0x3949493B92707249), SPH_C64(0x43D9D95FAF9A86D9),
+	SPH_C64(0xEFF2F231F91DC3F2), SPH_C64(0xABE3E3A8DB484BE3),
+	SPH_C64(0x715B5BB9B62AE25B), SPH_C64(0x1A8888BC0D923488),
+	SPH_C64(0x529A9A3E29C8A49A), SPH_C64(0x9826260B4CBE2D26),
+	SPH_C64(0xC83232BF64FA8D32), SPH_C64(0xFAB0B0597D4AE9B0),
+	SPH_C64(0x83E9E9F2CF6A1BE9), SPH_C64(0x3C0F0F771E33780F),
+	SPH_C64(0x73D5D533B7A6E6D5), SPH_C64(0x3A8080F41DBA7480),
+	SPH_C64(0xC2BEBE27617C99BE), SPH_C64(0x13CDCDEB87DE26CD),
+	SPH_C64(0xD034348968E4BD34), SPH_C64(0x3D48483290757A48),
+	SPH_C64(0xDBFFFF54E324ABFF), SPH_C64(0xF57A7A8DF48FF77A),
+	SPH_C64(0x7A9090643DEAF490), SPH_C64(0x615F5F9DBE3EC25F),
+	SPH_C64(0x8020203D40A01D20), SPH_C64(0xBD68680FD0D56768),
+	SPH_C64(0x681A1ACA3472D01A), SPH_C64(0x82AEAEB7412C19AE),
+	SPH_C64(0xEAB4B47D755EC9B4), SPH_C64(0x4D5454CEA8199A54),
+	SPH_C64(0x7693937F3BE5EC93), SPH_C64(0x8822222F44AA0D22),
+	SPH_C64(0x8D646463C8E90764), SPH_C64(0xE3F1F12AFF12DBF1),
+	SPH_C64(0xD17373CCE6A2BF73), SPH_C64(0x48121282245A9012),
+	SPH_C64(0x1D40407A805D3A40), SPH_C64(0x2008084810284008),
+	SPH_C64(0x2BC3C3959BE856C3), SPH_C64(0x97ECECDFC57B33EC),
+	SPH_C64(0x4BDBDB4DAB9096DB), SPH_C64(0xBEA1A1C05F1F61A1),
+	SPH_C64(0x0E8D8D9107831C8D), SPH_C64(0xF43D3DC87AC9F53D),
+	SPH_C64(0x6697975B33F1CC97), SPH_C64(0x0000000000000000),
+	SPH_C64(0x1BCFCFF983D436CF), SPH_C64(0xAC2B2B6E5687452B),
+	SPH_C64(0xC57676E1ECB39776), SPH_C64(0x328282E619B06482),
+	SPH_C64(0x7FD6D628B1A9FED6), SPH_C64(0x6C1B1BC33677D81B),
+	SPH_C64(0xEEB5B574775BC1B5), SPH_C64(0x86AFAFBE432911AF),
+	SPH_C64(0xB56A6A1DD4DF776A), SPH_C64(0x5D5050EAA00DBA50),
+	SPH_C64(0x094545578A4C1245), SPH_C64(0xEBF3F338FB18CBF3),
+	SPH_C64(0xC03030AD60F09D30), SPH_C64(0x9BEFEFC4C3742BEF),
+	SPH_C64(0xFC3F3FDA7EC3E53F), SPH_C64(0x495555C7AA1C9255),
+	SPH_C64(0xB2A2A2DB591079A2), SPH_C64(0x8FEAEAE9C96503EA),
+	SPH_C64(0x8965656ACAEC0F65), SPH_C64(0xD2BABA036968B9BA),
+	SPH_C64(0xBC2F2F4A5E93652F), SPH_C64(0x27C0C08E9DE74EC0),
+	SPH_C64(0x5FDEDE60A181BEDE), SPH_C64(0x701C1CFC386CE01C),
+	SPH_C64(0xD3FDFD46E72EBBFD), SPH_C64(0x294D4D1F9A64524D),
+	SPH_C64(0x7292927639E0E492), SPH_C64(0xC97575FAEABC8F75),
+	SPH_C64(0x180606360C1E3006), SPH_C64(0x128A8AAE0998248A),
+	SPH_C64(0xF2B2B24B7940F9B2), SPH_C64(0xBFE6E685D15963E6),
+	SPH_C64(0x380E0E7E1C36700E), SPH_C64(0x7C1F1FE73E63F81F),
+	SPH_C64(0x95626255C4F73762), SPH_C64(0x77D4D43AB5A3EED4),
+	SPH_C64(0x9AA8A8814D3229A8), SPH_C64(0x6296965231F4C496),
+	SPH_C64(0xC3F9F962EF3A9BF9), SPH_C64(0x33C5C5A397F666C5),
+	SPH_C64(0x942525104AB13525), SPH_C64(0x795959ABB220F259),
+	SPH_C64(0x2A8484D015AE5484), SPH_C64(0xD57272C5E4A7B772),
+	SPH_C64(0xE43939EC72DDD539), SPH_C64(0x2D4C4C1698615A4C),
+	SPH_C64(0x655E5E94BC3BCA5E), SPH_C64(0xFD78789FF085E778),
+	SPH_C64(0xE03838E570D8DD38), SPH_C64(0x0A8C8C980586148C),
+	SPH_C64(0x63D1D117BFB2C6D1), SPH_C64(0xAEA5A5E4570B41A5),
+	SPH_C64(0xAFE2E2A1D94D43E2), SPH_C64(0x9961614EC2F82F61),
+	SPH_C64(0xF6B3B3427B45F1B3), SPH_C64(0x8421213442A51521),
+	SPH_C64(0x4A9C9C0825D6949C), SPH_C64(0x781E1EEE3C66F01E),
+	SPH_C64(0x1143436186522243), SPH_C64(0x3BC7C7B193FC76C7),
+	SPH_C64(0xD7FCFC4FE52BB3FC), SPH_C64(0x1004042408142004),
+	SPH_C64(0x595151E3A208B251), SPH_C64(0x5E9999252FC7BC99),
+	SPH_C64(0xA96D6D22DAC44F6D), SPH_C64(0x340D0D651A39680D),
+	SPH_C64(0xCFFAFA79E93583FA), SPH_C64(0x5BDFDF69A384B6DF),
+	SPH_C64(0xE57E7EA9FC9BD77E), SPH_C64(0x9024241948B43D24),
+	SPH_C64(0xEC3B3BFE76D7C53B), SPH_C64(0x96ABAB9A4B3D31AB),
+	SPH_C64(0x1FCECEF081D13ECE), SPH_C64(0x4411119922558811),
+	SPH_C64(0x068F8F8303890C8F), SPH_C64(0x254E4E049C6B4A4E),
+	SPH_C64(0xE6B7B7667351D1B7), SPH_C64(0x8BEBEBE0CB600BEB),
+	SPH_C64(0xF03C3CC178CCFD3C), SPH_C64(0x3E8181FD1FBF7C81),
+	SPH_C64(0x6A94944035FED494), SPH_C64(0xFBF7F71CF30CEBF7),
+	SPH_C64(0xDEB9B9186F67A1B9), SPH_C64(0x4C13138B265F9813),
+	SPH_C64(0xB02C2C51589C7D2C), SPH_C64(0x6BD3D305BBB8D6D3),
+	SPH_C64(0xBBE7E78CD35C6BE7), SPH_C64(0xA56E6E39DCCB576E),
+	SPH_C64(0x37C4C4AA95F36EC4), SPH_C64(0x0C03031B060F1803),
+	SPH_C64(0x455656DCAC138A56), SPH_C64(0x0D44445E88491A44),
+	SPH_C64(0xE17F7FA0FE9EDF7F), SPH_C64(0x9EA9A9884F3721A9),
+	SPH_C64(0xA82A2A6754824D2A), SPH_C64(0xD6BBBB0A6B6DB1BB),
+	SPH_C64(0x23C1C1879FE246C1), SPH_C64(0x515353F1A602A253),
+	SPH_C64(0x57DCDC72A58BAEDC), SPH_C64(0x2C0B0B531627580B),
+	SPH_C64(0x4E9D9D0127D39C9D), SPH_C64(0xAD6C6C2BD8C1476C),
+	SPH_C64(0xC43131A462F59531), SPH_C64(0xCD7474F3E8B98774),
+	SPH_C64(0xFFF6F615F109E3F6), SPH_C64(0x0546464C8C430A46),
+	SPH_C64(0x8AACACA5452609AC), SPH_C64(0x1E8989B50F973C89),
+	SPH_C64(0x501414B42844A014), SPH_C64(0xA3E1E1BADF425BE1),
+	SPH_C64(0x581616A62C4EB016), SPH_C64(0xE83A3AF774D2CD3A),
+	SPH_C64(0xB9696906D2D06F69), SPH_C64(0x24090941122D4809),
+	SPH_C64(0xDD7070D7E0ADA770), SPH_C64(0xE2B6B66F7154D9B6),
+	SPH_C64(0x67D0D01EBDB7CED0), SPH_C64(0x93EDEDD6C77E3BED),
+	SPH_C64(0x17CCCCE285DB2ECC), SPH_C64(0x1542426884572A42),
+	SPH_C64(0x5A98982C2DC2B498), SPH_C64(0xAAA4A4ED550E49A4),
+	SPH_C64(0xA028287550885D28), SPH_C64(0x6D5C5C86B831DA5C),
+	SPH_C64(0xC7F8F86BED3F93F8), SPH_C64(0x228686C211A44486)
+};
+
+static const sph_u64 plain_T6[256] = {
+	SPH_C64(0x1818D83078C01860), SPH_C64(0x23232646AF05238C),
+	SPH_C64(0xC6C6B891F97EC63F), SPH_C64(0xE8E8FBCD6F13E887),
+	SPH_C64(0x8787CB13A14C8726), SPH_C64(0xB8B8116D62A9B8DA),
+	SPH_C64(0x0101090205080104), SPH_C64(0x4F4F0D9E6E424F21),
+	SPH_C64(0x36369B6CEEAD36D8), SPH_C64(0xA6A6FF510459A6A2),
+	SPH_C64(0xD2D20CB9BDDED26F), SPH_C64(0xF5F50EF706FBF5F3),
+	SPH_C64(0x797996F280EF79F9), SPH_C64(0x6F6F30DECE5F6FA1),
+	SPH_C64(0x91916D3FEFFC917E), SPH_C64(0x5252F8A407AA5255),
+	SPH_C64(0x606047C0FD27609D), SPH_C64(0xBCBC35657689BCCA),
+	SPH_C64(0x9B9B372BCDAC9B56), SPH_C64(0x8E8E8A018C048E02),
+	SPH_C64(0xA3A3D25B1571A3B6), SPH_C64(0x0C0C6C183C600C30),
+	SPH_C64(0x7B7B84F68AFF7BF1), SPH_C64(0x3535806AE1B535D4),
+	SPH_C64(0x1D1DF53A69E81D74), SPH_C64(0xE0E0B3DD4753E0A7),
+	SPH_C64(0xD7D721B3ACF6D77B), SPH_C64(0xC2C29C99ED5EC22F),
+	SPH_C64(0x2E2E435C966D2EB8), SPH_C64(0x4B4B29967A624B31),
+	SPH_C64(0xFEFE5DE121A3FEDF), SPH_C64(0x5757D5AE16825741),
+	SPH_C64(0x1515BD2A41A81554), SPH_C64(0x7777E8EEB69F77C1),
+	SPH_C64(0x3737926EEBA537DC), SPH_C64(0xE5E59ED7567BE5B3),
+	SPH_C64(0x9F9F1323D98C9F46), SPH_C64(0xF0F023FD17D3F0E7),
+	SPH_C64(0x4A4A20947F6A4A35), SPH_C64(0xDADA44A9959EDA4F),
+	SPH_C64(0x5858A2B025FA587D), SPH_C64(0xC9C9CF8FCA06C903),
+	SPH_C64(0x29297C528D5529A4), SPH_C64(0x0A0A5A1422500A28),
+	SPH_C64(0xB1B1507F4FE1B1FE), SPH_C64(0xA0A0C95D1A69A0BA),
+	SPH_C64(0x6B6B14D6DA7F6BB1), SPH_C64(0x8585D917AB5C852E),
+	SPH_C64(0xBDBD3C677381BDCE), SPH_C64(0x5D5D8FBA34D25D69),
+	SPH_C64(0x1010902050801040), SPH_C64(0xF4F407F503F3F4F7),
+	SPH_C64(0xCBCBDD8BC016CB0B), SPH_C64(0x3E3ED37CC6ED3EF8),
+	SPH_C64(0x05052D0A11280514), SPH_C64(0x676778CEE61F6781),
+	SPH_C64(0xE4E497D55373E4B7), SPH_C64(0x2727024EBB25279C),
+	SPH_C64(0x4141738258324119), SPH_C64(0x8B8BA70B9D2C8B16),
+	SPH_C64(0xA7A7F6530151A7A6), SPH_C64(0x7D7DB2FA94CF7DE9),
+	SPH_C64(0x95954937FBDC956E), SPH_C64(0xD8D856AD9F8ED847),
+	SPH_C64(0xFBFB70EB308BFBCB), SPH_C64(0xEEEECDC17123EE9F),
+	SPH_C64(0x7C7CBBF891C77CED), SPH_C64(0x666671CCE3176685),
+	SPH_C64(0xDDDD7BA78EA6DD53), SPH_C64(0x1717AF2E4BB8175C),
+	SPH_C64(0x4747458E46024701), SPH_C64(0x9E9E1A21DC849E42),
+	SPH_C64(0xCACAD489C51ECA0F), SPH_C64(0x2D2D585A99752DB4),
+	SPH_C64(0xBFBF2E637991BFC6), SPH_C64(0x07073F0E1B38071C),
+	SPH_C64(0xADADAC472301AD8E), SPH_C64(0x5A5AB0B42FEA5A75),
+	SPH_C64(0x8383EF1BB56C8336), SPH_C64(0x3333B666FF8533CC),
+	SPH_C64(0x63635CC6F23F6391), SPH_C64(0x020212040A100208),
+	SPH_C64(0xAAAA93493839AA92), SPH_C64(0x7171DEE2A8AF71D9),
+	SPH_C64(0xC8C8C68DCF0EC807), SPH_C64(0x1919D1327DC81964),
+	SPH_C64(0x49493B9270724939), SPH_C64(0xD9D95FAF9A86D943),
+	SPH_C64(0xF2F231F91DC3F2EF), SPH_C64(0xE3E3A8DB484BE3AB),
+	SPH_C64(0x5B5BB9B62AE25B71), SPH_C64(0x8888BC0D9234881A),
+	SPH_C64(0x9A9A3E29C8A49A52), SPH_C64(0x26260B4CBE2D2698),
+	SPH_C64(0x3232BF64FA8D32C8), SPH_C64(0xB0B0597D4AE9B0FA),
+	SPH_C64(0xE9E9F2CF6A1BE983), SPH_C64(0x0F0F771E33780F3C),
+	SPH_C64(0xD5D533B7A6E6D573), SPH_C64(0x8080F41DBA74803A),
+	SPH_C64(0xBEBE27617C99BEC2), SPH_C64(0xCDCDEB87DE26CD13),
+	SPH_C64(0x34348968E4BD34D0), SPH_C64(0x48483290757A483D),
+	SPH_C64(0xFFFF54E324ABFFDB), SPH_C64(0x7A7A8DF48FF77AF5),
+	SPH_C64(0x9090643DEAF4907A), SPH_C64(0x5F5F9DBE3EC25F61),
+	SPH_C64(0x20203D40A01D2080), SPH_C64(0x68680FD0D56768BD),
+	SPH_C64(0x1A1ACA3472D01A68), SPH_C64(0xAEAEB7412C19AE82),
+	SPH_C64(0xB4B47D755EC9B4EA), SPH_C64(0x5454CEA8199A544D),
+	SPH_C64(0x93937F3BE5EC9376), SPH_C64(0x22222F44AA0D2288),
+	SPH_C64(0x646463C8E907648D), SPH_C64(0xF1F12AFF12DBF1E3),
+	SPH_C64(0x7373CCE6A2BF73D1), SPH_C64(0x121282245A901248),
+	SPH_C64(0x40407A805D3A401D), SPH_C64(0x0808481028400820),
+	SPH_C64(0xC3C3959BE856C32B), SPH_C64(0xECECDFC57B33EC97),
+	SPH_C64(0xDBDB4DAB9096DB4B), SPH_C64(0xA1A1C05F1F61A1BE),
+	SPH_C64(0x8D8D9107831C8D0E), SPH_C64(0x3D3DC87AC9F53DF4),
+	SPH_C64(0x97975B33F1CC9766), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCFCFF983D436CF1B), SPH_C64(0x2B2B6E5687452BAC),
+	SPH_C64(0x7676E1ECB39776C5), SPH_C64(0x8282E619B0648232),
+	SPH_C64(0xD6D628B1A9FED67F), SPH_C64(0x1B1BC33677D81B6C),
+	SPH_C64(0xB5B574775BC1B5EE), SPH_C64(0xAFAFBE432911AF86),
+	SPH_C64(0x6A6A1DD4DF776AB5), SPH_C64(0x5050EAA00DBA505D),
+	SPH_C64(0x4545578A4C124509), SPH_C64(0xF3F338FB18CBF3EB),
+	SPH_C64(0x3030AD60F09D30C0), SPH_C64(0xEFEFC4C3742BEF9B),
+	SPH_C64(0x3F3FDA7EC3E53FFC), SPH_C64(0x5555C7AA1C925549),
+	SPH_C64(0xA2A2DB591079A2B2), SPH_C64(0xEAEAE9C96503EA8F),
+	SPH_C64(0x65656ACAEC0F6589), SPH_C64(0xBABA036968B9BAD2),
+	SPH_C64(0x2F2F4A5E93652FBC), SPH_C64(0xC0C08E9DE74EC027),
+	SPH_C64(0xDEDE60A181BEDE5F), SPH_C64(0x1C1CFC386CE01C70),
+	SPH_C64(0xFDFD46E72EBBFDD3), SPH_C64(0x4D4D1F9A64524D29),
+	SPH_C64(0x92927639E0E49272), SPH_C64(0x7575FAEABC8F75C9),
+	SPH_C64(0x0606360C1E300618), SPH_C64(0x8A8AAE0998248A12),
+	SPH_C64(0xB2B24B7940F9B2F2), SPH_C64(0xE6E685D15963E6BF),
+	SPH_C64(0x0E0E7E1C36700E38), SPH_C64(0x1F1FE73E63F81F7C),
+	SPH_C64(0x626255C4F7376295), SPH_C64(0xD4D43AB5A3EED477),
+	SPH_C64(0xA8A8814D3229A89A), SPH_C64(0x96965231F4C49662),
+	SPH_C64(0xF9F962EF3A9BF9C3), SPH_C64(0xC5C5A397F666C533),
+	SPH_C64(0x2525104AB1352594), SPH_C64(0x5959ABB220F25979),
+	SPH_C64(0x8484D015AE54842A), SPH_C64(0x7272C5E4A7B772D5),
+	SPH_C64(0x3939EC72DDD539E4), SPH_C64(0x4C4C1698615A4C2D),
+	SPH_C64(0x5E5E94BC3BCA5E65), SPH_C64(0x78789FF085E778FD),
+	SPH_C64(0x3838E570D8DD38E0), SPH_C64(0x8C8C980586148C0A),
+	SPH_C64(0xD1D117BFB2C6D163), SPH_C64(0xA5A5E4570B41A5AE),
+	SPH_C64(0xE2E2A1D94D43E2AF), SPH_C64(0x61614EC2F82F6199),
+	SPH_C64(0xB3B3427B45F1B3F6), SPH_C64(0x21213442A5152184),
+	SPH_C64(0x9C9C0825D6949C4A), SPH_C64(0x1E1EEE3C66F01E78),
+	SPH_C64(0x4343618652224311), SPH_C64(0xC7C7B193FC76C73B),
+	SPH_C64(0xFCFC4FE52BB3FCD7), SPH_C64(0x0404240814200410),
+	SPH_C64(0x5151E3A208B25159), SPH_C64(0x9999252FC7BC995E),
+	SPH_C64(0x6D6D22DAC44F6DA9), SPH_C64(0x0D0D651A39680D34),
+	SPH_C64(0xFAFA79E93583FACF), SPH_C64(0xDFDF69A384B6DF5B),
+	SPH_C64(0x7E7EA9FC9BD77EE5), SPH_C64(0x24241948B43D2490),
+	SPH_C64(0x3B3BFE76D7C53BEC), SPH_C64(0xABAB9A4B3D31AB96),
+	SPH_C64(0xCECEF081D13ECE1F), SPH_C64(0x1111992255881144),
+	SPH_C64(0x8F8F8303890C8F06), SPH_C64(0x4E4E049C6B4A4E25),
+	SPH_C64(0xB7B7667351D1B7E6), SPH_C64(0xEBEBE0CB600BEB8B),
+	SPH_C64(0x3C3CC178CCFD3CF0), SPH_C64(0x8181FD1FBF7C813E),
+	SPH_C64(0x94944035FED4946A), SPH_C64(0xF7F71CF30CEBF7FB),
+	SPH_C64(0xB9B9186F67A1B9DE), SPH_C64(0x13138B265F98134C),
+	SPH_C64(0x2C2C51589C7D2CB0), SPH_C64(0xD3D305BBB8D6D36B),
+	SPH_C64(0xE7E78CD35C6BE7BB), SPH_C64(0x6E6E39DCCB576EA5),
+	SPH_C64(0xC4C4AA95F36EC437), SPH_C64(0x03031B060F18030C),
+	SPH_C64(0x5656DCAC138A5645), SPH_C64(0x44445E88491A440D),
+	SPH_C64(0x7F7FA0FE9EDF7FE1), SPH_C64(0xA9A9884F3721A99E),
+	SPH_C64(0x2A2A6754824D2AA8), SPH_C64(0xBBBB0A6B6DB1BBD6),
+	SPH_C64(0xC1C1879FE246C123), SPH_C64(0x5353F1A602A25351),
+	SPH_C64(0xDCDC72A58BAEDC57), SPH_C64(0x0B0B531627580B2C),
+	SPH_C64(0x9D9D0127D39C9D4E), SPH_C64(0x6C6C2BD8C1476CAD),
+	SPH_C64(0x3131A462F59531C4), SPH_C64(0x7474F3E8B98774CD),
+	SPH_C64(0xF6F615F109E3F6FF), SPH_C64(0x46464C8C430A4605),
+	SPH_C64(0xACACA5452609AC8A), SPH_C64(0x8989B50F973C891E),
+	SPH_C64(0x1414B42844A01450), SPH_C64(0xE1E1BADF425BE1A3),
+	SPH_C64(0x1616A62C4EB01658), SPH_C64(0x3A3AF774D2CD3AE8),
+	SPH_C64(0x696906D2D06F69B9), SPH_C64(0x090941122D480924),
+	SPH_C64(0x7070D7E0ADA770DD), SPH_C64(0xB6B66F7154D9B6E2),
+	SPH_C64(0xD0D01EBDB7CED067), SPH_C64(0xEDEDD6C77E3BED93),
+	SPH_C64(0xCCCCE285DB2ECC17), SPH_C64(0x42426884572A4215),
+	SPH_C64(0x98982C2DC2B4985A), SPH_C64(0xA4A4ED550E49A4AA),
+	SPH_C64(0x28287550885D28A0), SPH_C64(0x5C5C86B831DA5C6D),
+	SPH_C64(0xF8F86BED3F93F8C7), SPH_C64(0x8686C211A4448622)
+};
+
+static const sph_u64 plain_T7[256] = {
+	SPH_C64(0x18D83078C0186018), SPH_C64(0x232646AF05238C23),
+	SPH_C64(0xC6B891F97EC63FC6), SPH_C64(0xE8FBCD6F13E887E8),
+	SPH_C64(0x87CB13A14C872687), SPH_C64(0xB8116D62A9B8DAB8),
+	SPH_C64(0x0109020508010401), SPH_C64(0x4F0D9E6E424F214F),
+	SPH_C64(0x369B6CEEAD36D836), SPH_C64(0xA6FF510459A6A2A6),
+	SPH_C64(0xD20CB9BDDED26FD2), SPH_C64(0xF50EF706FBF5F3F5),
+	SPH_C64(0x7996F280EF79F979), SPH_C64(0x6F30DECE5F6FA16F),
+	SPH_C64(0x916D3FEFFC917E91), SPH_C64(0x52F8A407AA525552),
+	SPH_C64(0x6047C0FD27609D60), SPH_C64(0xBC35657689BCCABC),
+	SPH_C64(0x9B372BCDAC9B569B), SPH_C64(0x8E8A018C048E028E),
+	SPH_C64(0xA3D25B1571A3B6A3), SPH_C64(0x0C6C183C600C300C),
+	SPH_C64(0x7B84F68AFF7BF17B), SPH_C64(0x35806AE1B535D435),
+	SPH_C64(0x1DF53A69E81D741D), SPH_C64(0xE0B3DD4753E0A7E0),
+	SPH_C64(0xD721B3ACF6D77BD7), SPH_C64(0xC29C99ED5EC22FC2),
+	SPH_C64(0x2E435C966D2EB82E), SPH_C64(0x4B29967A624B314B),
+	SPH_C64(0xFE5DE121A3FEDFFE), SPH_C64(0x57D5AE1682574157),
+	SPH_C64(0x15BD2A41A8155415), SPH_C64(0x77E8EEB69F77C177),
+	SPH_C64(0x37926EEBA537DC37), SPH_C64(0xE59ED7567BE5B3E5),
+	SPH_C64(0x9F1323D98C9F469F), SPH_C64(0xF023FD17D3F0E7F0),
+	SPH_C64(0x4A20947F6A4A354A), SPH_C64(0xDA44A9959EDA4FDA),
+	SPH_C64(0x58A2B025FA587D58), SPH_C64(0xC9CF8FCA06C903C9),
+	SPH_C64(0x297C528D5529A429), SPH_C64(0x0A5A1422500A280A),
+	SPH_C64(0xB1507F4FE1B1FEB1), SPH_C64(0xA0C95D1A69A0BAA0),
+	SPH_C64(0x6B14D6DA7F6BB16B), SPH_C64(0x85D917AB5C852E85),
+	SPH_C64(0xBD3C677381BDCEBD), SPH_C64(0x5D8FBA34D25D695D),
+	SPH_C64(0x1090205080104010), SPH_C64(0xF407F503F3F4F7F4),
+	SPH_C64(0xCBDD8BC016CB0BCB), SPH_C64(0x3ED37CC6ED3EF83E),
+	SPH_C64(0x052D0A1128051405), SPH_C64(0x6778CEE61F678167),
+	SPH_C64(0xE497D55373E4B7E4), SPH_C64(0x27024EBB25279C27),
+	SPH_C64(0x4173825832411941), SPH_C64(0x8BA70B9D2C8B168B),
+	SPH_C64(0xA7F6530151A7A6A7), SPH_C64(0x7DB2FA94CF7DE97D),
+	SPH_C64(0x954937FBDC956E95), SPH_C64(0xD856AD9F8ED847D8),
+	SPH_C64(0xFB70EB308BFBCBFB), SPH_C64(0xEECDC17123EE9FEE),
+	SPH_C64(0x7CBBF891C77CED7C), SPH_C64(0x6671CCE317668566),
+	SPH_C64(0xDD7BA78EA6DD53DD), SPH_C64(0x17AF2E4BB8175C17),
+	SPH_C64(0x47458E4602470147), SPH_C64(0x9E1A21DC849E429E),
+	SPH_C64(0xCAD489C51ECA0FCA), SPH_C64(0x2D585A99752DB42D),
+	SPH_C64(0xBF2E637991BFC6BF), SPH_C64(0x073F0E1B38071C07),
+	SPH_C64(0xADAC472301AD8EAD), SPH_C64(0x5AB0B42FEA5A755A),
+	SPH_C64(0x83EF1BB56C833683), SPH_C64(0x33B666FF8533CC33),
+	SPH_C64(0x635CC6F23F639163), SPH_C64(0x0212040A10020802),
+	SPH_C64(0xAA93493839AA92AA), SPH_C64(0x71DEE2A8AF71D971),
+	SPH_C64(0xC8C68DCF0EC807C8), SPH_C64(0x19D1327DC8196419),
+	SPH_C64(0x493B927072493949), SPH_C64(0xD95FAF9A86D943D9),
+	SPH_C64(0xF231F91DC3F2EFF2), SPH_C64(0xE3A8DB484BE3ABE3),
+	SPH_C64(0x5BB9B62AE25B715B), SPH_C64(0x88BC0D9234881A88),
+	SPH_C64(0x9A3E29C8A49A529A), SPH_C64(0x260B4CBE2D269826),
+	SPH_C64(0x32BF64FA8D32C832), SPH_C64(0xB0597D4AE9B0FAB0),
+	SPH_C64(0xE9F2CF6A1BE983E9), SPH_C64(0x0F771E33780F3C0F),
+	SPH_C64(0xD533B7A6E6D573D5), SPH_C64(0x80F41DBA74803A80),
+	SPH_C64(0xBE27617C99BEC2BE), SPH_C64(0xCDEB87DE26CD13CD),
+	SPH_C64(0x348968E4BD34D034), SPH_C64(0x483290757A483D48),
+	SPH_C64(0xFF54E324ABFFDBFF), SPH_C64(0x7A8DF48FF77AF57A),
+	SPH_C64(0x90643DEAF4907A90), SPH_C64(0x5F9DBE3EC25F615F),
+	SPH_C64(0x203D40A01D208020), SPH_C64(0x680FD0D56768BD68),
+	SPH_C64(0x1ACA3472D01A681A), SPH_C64(0xAEB7412C19AE82AE),
+	SPH_C64(0xB47D755EC9B4EAB4), SPH_C64(0x54CEA8199A544D54),
+	SPH_C64(0x937F3BE5EC937693), SPH_C64(0x222F44AA0D228822),
+	SPH_C64(0x6463C8E907648D64), SPH_C64(0xF12AFF12DBF1E3F1),
+	SPH_C64(0x73CCE6A2BF73D173), SPH_C64(0x1282245A90124812),
+	SPH_C64(0x407A805D3A401D40), SPH_C64(0x0848102840082008),
+	SPH_C64(0xC3959BE856C32BC3), SPH_C64(0xECDFC57B33EC97EC),
+	SPH_C64(0xDB4DAB9096DB4BDB), SPH_C64(0xA1C05F1F61A1BEA1),
+	SPH_C64(0x8D9107831C8D0E8D), SPH_C64(0x3DC87AC9F53DF43D),
+	SPH_C64(0x975B33F1CC976697), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCFF983D436CF1BCF), SPH_C64(0x2B6E5687452BAC2B),
+	SPH_C64(0x76E1ECB39776C576), SPH_C64(0x82E619B064823282),
+	SPH_C64(0xD628B1A9FED67FD6), SPH_C64(0x1BC33677D81B6C1B),
+	SPH_C64(0xB574775BC1B5EEB5), SPH_C64(0xAFBE432911AF86AF),
+	SPH_C64(0x6A1DD4DF776AB56A), SPH_C64(0x50EAA00DBA505D50),
+	SPH_C64(0x45578A4C12450945), SPH_C64(0xF338FB18CBF3EBF3),
+	SPH_C64(0x30AD60F09D30C030), SPH_C64(0xEFC4C3742BEF9BEF),
+	SPH_C64(0x3FDA7EC3E53FFC3F), SPH_C64(0x55C7AA1C92554955),
+	SPH_C64(0xA2DB591079A2B2A2), SPH_C64(0xEAE9C96503EA8FEA),
+	SPH_C64(0x656ACAEC0F658965), SPH_C64(0xBA036968B9BAD2BA),
+	SPH_C64(0x2F4A5E93652FBC2F), SPH_C64(0xC08E9DE74EC027C0),
+	SPH_C64(0xDE60A181BEDE5FDE), SPH_C64(0x1CFC386CE01C701C),
+	SPH_C64(0xFD46E72EBBFDD3FD), SPH_C64(0x4D1F9A64524D294D),
+	SPH_C64(0x927639E0E4927292), SPH_C64(0x75FAEABC8F75C975),
+	SPH_C64(0x06360C1E30061806), SPH_C64(0x8AAE0998248A128A),
+	SPH_C64(0xB24B7940F9B2F2B2), SPH_C64(0xE685D15963E6BFE6),
+	SPH_C64(0x0E7E1C36700E380E), SPH_C64(0x1FE73E63F81F7C1F),
+	SPH_C64(0x6255C4F737629562), SPH_C64(0xD43AB5A3EED477D4),
+	SPH_C64(0xA8814D3229A89AA8), SPH_C64(0x965231F4C4966296),
+	SPH_C64(0xF962EF3A9BF9C3F9), SPH_C64(0xC5A397F666C533C5),
+	SPH_C64(0x25104AB135259425), SPH_C64(0x59ABB220F2597959),
+	SPH_C64(0x84D015AE54842A84), SPH_C64(0x72C5E4A7B772D572),
+	SPH_C64(0x39EC72DDD539E439), SPH_C64(0x4C1698615A4C2D4C),
+	SPH_C64(0x5E94BC3BCA5E655E), SPH_C64(0x789FF085E778FD78),
+	SPH_C64(0x38E570D8DD38E038), SPH_C64(0x8C980586148C0A8C),
+	SPH_C64(0xD117BFB2C6D163D1), SPH_C64(0xA5E4570B41A5AEA5),
+	SPH_C64(0xE2A1D94D43E2AFE2), SPH_C64(0x614EC2F82F619961),
+	SPH_C64(0xB3427B45F1B3F6B3), SPH_C64(0x213442A515218421),
+	SPH_C64(0x9C0825D6949C4A9C), SPH_C64(0x1EEE3C66F01E781E),
+	SPH_C64(0x4361865222431143), SPH_C64(0xC7B193FC76C73BC7),
+	SPH_C64(0xFC4FE52BB3FCD7FC), SPH_C64(0x0424081420041004),
+	SPH_C64(0x51E3A208B2515951), SPH_C64(0x99252FC7BC995E99),
+	SPH_C64(0x6D22DAC44F6DA96D), SPH_C64(0x0D651A39680D340D),
+	SPH_C64(0xFA79E93583FACFFA), SPH_C64(0xDF69A384B6DF5BDF),
+	SPH_C64(0x7EA9FC9BD77EE57E), SPH_C64(0x241948B43D249024),
+	SPH_C64(0x3BFE76D7C53BEC3B), SPH_C64(0xAB9A4B3D31AB96AB),
+	SPH_C64(0xCEF081D13ECE1FCE), SPH_C64(0x1199225588114411),
+	SPH_C64(0x8F8303890C8F068F), SPH_C64(0x4E049C6B4A4E254E),
+	SPH_C64(0xB7667351D1B7E6B7), SPH_C64(0xEBE0CB600BEB8BEB),
+	SPH_C64(0x3CC178CCFD3CF03C), SPH_C64(0x81FD1FBF7C813E81),
+	SPH_C64(0x944035FED4946A94), SPH_C64(0xF71CF30CEBF7FBF7),
+	SPH_C64(0xB9186F67A1B9DEB9), SPH_C64(0x138B265F98134C13),
+	SPH_C64(0x2C51589C7D2CB02C), SPH_C64(0xD305BBB8D6D36BD3),
+	SPH_C64(0xE78CD35C6BE7BBE7), SPH_C64(0x6E39DCCB576EA56E),
+	SPH_C64(0xC4AA95F36EC437C4), SPH_C64(0x031B060F18030C03),
+	SPH_C64(0x56DCAC138A564556), SPH_C64(0x445E88491A440D44),
+	SPH_C64(0x7FA0FE9EDF7FE17F), SPH_C64(0xA9884F3721A99EA9),
+	SPH_C64(0x2A6754824D2AA82A), SPH_C64(0xBB0A6B6DB1BBD6BB),
+	SPH_C64(0xC1879FE246C123C1), SPH_C64(0x53F1A602A2535153),
+	SPH_C64(0xDC72A58BAEDC57DC), SPH_C64(0x0B531627580B2C0B),
+	SPH_C64(0x9D0127D39C9D4E9D), SPH_C64(0x6C2BD8C1476CAD6C),
+	SPH_C64(0x31A462F59531C431), SPH_C64(0x74F3E8B98774CD74),
+	SPH_C64(0xF615F109E3F6FFF6), SPH_C64(0x464C8C430A460546),
+	SPH_C64(0xACA5452609AC8AAC), SPH_C64(0x89B50F973C891E89),
+	SPH_C64(0x14B42844A0145014), SPH_C64(0xE1BADF425BE1A3E1),
+	SPH_C64(0x16A62C4EB0165816), SPH_C64(0x3AF774D2CD3AE83A),
+	SPH_C64(0x6906D2D06F69B969), SPH_C64(0x0941122D48092409),
+	SPH_C64(0x70D7E0ADA770DD70), SPH_C64(0xB66F7154D9B6E2B6),
+	SPH_C64(0xD01EBDB7CED067D0), SPH_C64(0xEDD6C77E3BED93ED),
+	SPH_C64(0xCCE285DB2ECC17CC), SPH_C64(0x426884572A421542),
+	SPH_C64(0x982C2DC2B4985A98), SPH_C64(0xA4ED550E49A4AAA4),
+	SPH_C64(0x287550885D28A028), SPH_C64(0x5C86B831DA5C6D5C),
+	SPH_C64(0xF86BED3F93F8C7F8), SPH_C64(0x86C211A444862286)
+};
+
+#endif
+
+/*
+ * Round constants.
+ */
+static const sph_u64 plain_RC[10] = {
+	SPH_C64(0x4F01B887E8C62318),
+	SPH_C64(0x52916F79F5D2A636),
+	SPH_C64(0x357B0CA38E9BBC60),
+	SPH_C64(0x57FE4B2EC2D7E01D),
+	SPH_C64(0xDA4AF09FE5377715),
+	SPH_C64(0x856BA0B10A29C958),
+	SPH_C64(0x67053ECBF4105DBD),
+	SPH_C64(0xD8957DA78B4127E4),
+	SPH_C64(0x9E4717DD667CEEFB),
+	SPH_C64(0x33835AAD07BF2DCA)
+};
+
+/* ====================================================================== */
+/*
+ * Constants for plain WHIRLPOOL-0 (first version).
+ */
+
+static const sph_u64 old0_T0[256] = {
+	SPH_C64(0xD50F67D568B86868), SPH_C64(0xB71ECEB7D06DD0D0),
+	SPH_C64(0x60E00B60EB20EBEB), SPH_C64(0x876E45872B7D2B2B),
+	SPH_C64(0x75327A7548D84848), SPH_C64(0xD3019CD39DBA9D9D),
+	SPH_C64(0xDF1D77DF6ABE6A6A), SPH_C64(0x53977353E431E4E4),
+	SPH_C64(0x48A84B48E338E3E3), SPH_C64(0x15D27115A3F8A3A3),
+	SPH_C64(0x13DC8A1356FA5656), SPH_C64(0xBFFD7CBF819E8181),
+	SPH_C64(0x94B2CF947D877D7D), SPH_C64(0x122ADB12F10EF1F1),
+	SPH_C64(0xABD95CAB85928585), SPH_C64(0xDC1A84DC9EBF9E9E),
+	SPH_C64(0x9C517D9C2C742C2C), SPH_C64(0x8C8A048C8E8F8E8E),
+	SPH_C64(0x859FE78578887878), SPH_C64(0xC5D41EC5CA43CACA),
+	SPH_C64(0x4BAFB84B17391717), SPH_C64(0x37882137A9E6A9A9),
+	SPH_C64(0xF84E2FF861A36161), SPH_C64(0xA633E6A6D562D5D5),
+	SPH_C64(0x348FD2345DE75D5D), SPH_C64(0x275358270B1D0B0B),
+	SPH_C64(0x869814868C898C8C), SPH_C64(0xCCC1FDCC3C443C3C),
+	SPH_C64(0xB6E89FB677997777), SPH_C64(0x08E3B20851F35151),
+	SPH_C64(0xAA2F0DAA22662222), SPH_C64(0x57682A5742C64242),
+	SPH_C64(0xC3DAE5C33F413F3F), SPH_C64(0x19CE9A1954FC5454),
+	SPH_C64(0x5873325841C34141), SPH_C64(0xBAF474BA809D8080),
+	SPH_C64(0xDBE22EDBCC49CCCC), SPH_C64(0xA4C244A486978686),
+	SPH_C64(0x4542F145B3C8B3B3), SPH_C64(0x78D8C07818281818),
+	SPH_C64(0x96436D962E722E2E), SPH_C64(0x16D5821657F95757),
+	SPH_C64(0x1E36301E060A0606), SPH_C64(0xF75537F762A66262),
+	SPH_C64(0x0307F303F401F4F4), SPH_C64(0xEE9BADEE365A3636),
+	SPH_C64(0xB217C6B2D16ED1D1), SPH_C64(0xDA147FDA6BBD6B6B),
+	SPH_C64(0x77C3D8771B2D1B1B), SPH_C64(0xEC6A0FEC65AF6565),
+	SPH_C64(0xBCFA8FBC759F7575), SPH_C64(0x5090805010301010),
+	SPH_C64(0x95449E95DA73DADA), SPH_C64(0x703B727049DB4949),
+	SPH_C64(0xBE0B2DBE266A2626), SPH_C64(0x3A629B3AF916F9F9),
+	SPH_C64(0xC0DD16C0CB40CBCB), SPH_C64(0xE37117E366AA6666),
+	SPH_C64(0x5C8C6B5CE734E7E7), SPH_C64(0x6803B968BAD3BABA),
+	SPH_C64(0x2CB7192CAEEFAEAE), SPH_C64(0x0DEABA0D50F05050),
+	SPH_C64(0x07F8AA0752F65252), SPH_C64(0x3D9A313DABE0ABAB),
+	SPH_C64(0x112D2811050F0505), SPH_C64(0x1723D317F00DF0F0),
+	SPH_C64(0x396568390D170D0D), SPH_C64(0xA2CCBFA273957373),
+	SPH_C64(0xD7FEC5D73B4D3B3B), SPH_C64(0x14242014040C0404),
+	SPH_C64(0xA03D1DA020602020), SPH_C64(0x215DA321FE1FFEFE),
+	SPH_C64(0x8E7BA68EDD7ADDDD), SPH_C64(0x060EFB06F502F5F5),
+	SPH_C64(0x5E7DC95EB4C1B4B4), SPH_C64(0x3E9DC23E5FE15F5F),
+	SPH_C64(0x225A50220A1E0A0A), SPH_C64(0x5B74C15BB5C2B5B5),
+	SPH_C64(0xE78E4EE7C05DC0C0), SPH_C64(0x1AC9691AA0FDA0A0),
+	SPH_C64(0xA8DEAFA871937171), SPH_C64(0x0BE4410BA5F2A5A5),
+	SPH_C64(0x995875992D772D2D), SPH_C64(0xFD4727FD60A06060),
+	SPH_C64(0xA7C5B7A772967272), SPH_C64(0xE57FECE593A89393),
+	SPH_C64(0xDDECD5DD394B3939), SPH_C64(0x2848402808180808),
+	SPH_C64(0xB5EF6CB583988383), SPH_C64(0xA53415A521632121),
+	SPH_C64(0x3186DA315CE45C5C), SPH_C64(0xA1CB4CA187948787),
+	SPH_C64(0x4F50E14FB1CEB1B1), SPH_C64(0x47B35347E03DE0E0),
+	SPH_C64(0x0000000000000000), SPH_C64(0xE89556E8C358C3C3),
+	SPH_C64(0x5A82905A12361212), SPH_C64(0xEF6DFCEF91AE9191),
+	SPH_C64(0x98AE24988A838A8A), SPH_C64(0x0A12100A02060202),
+	SPH_C64(0x6CFCE06C1C241C1C), SPH_C64(0x59856359E637E6E6),
+	SPH_C64(0x4C57124C45CF4545), SPH_C64(0xED9C5EEDC25BC2C2),
+	SPH_C64(0xF3AA6EF3C451C4C4), SPH_C64(0x2E46BB2EFD1AFDFD),
+	SPH_C64(0x792E9179BFDCBFBF), SPH_C64(0x495E1A4944CC4444),
+	SPH_C64(0x1FC0611FA1FEA1A1), SPH_C64(0x61165A614CD44C4C),
+	SPH_C64(0xFFB685FF33553333), SPH_C64(0xF6A366F6C552C5C5),
+	SPH_C64(0xAED054AE84918484), SPH_C64(0xAF2605AF23652323),
+	SPH_C64(0x91BBC7917C847C7C), SPH_C64(0x4A59E94AB0CDB0B0),
+	SPH_C64(0xB11035B1256F2525), SPH_C64(0x41BDA841153F1515),
+	SPH_C64(0xE180B5E1355F3535), SPH_C64(0xD0066FD069BB6969),
+	SPH_C64(0x2454AB24FF1CFFFF), SPH_C64(0xFE40D4FE94A19494),
+	SPH_C64(0x641F52644DD74D4D), SPH_C64(0xADD7A7AD70907070),
+	SPH_C64(0x10DB7910A2FBA2A2), SPH_C64(0x29BE1129AFECAFAF),
+	SPH_C64(0xDEEB26DECD4ACDCD), SPH_C64(0xA928FEA9D667D6D6),
+	SPH_C64(0xC12B47C16CB46C6C), SPH_C64(0x5166D151B7C4B7B7),
+	SPH_C64(0x3F6B933FF815F8F8), SPH_C64(0x2D41482D091B0909),
+	SPH_C64(0x1838CB18F308F3F3), SPH_C64(0xE6781FE667A96767),
+	SPH_C64(0x0EED490EA4F1A4A4), SPH_C64(0x65E90365EA23EAEA),
+	SPH_C64(0x7BDF337BEC29ECEC), SPH_C64(0x546FD954B6C7B6B6),
+	SPH_C64(0xA33AEEA3D461D4D4), SPH_C64(0xBD0CDEBDD26BD2D2),
+	SPH_C64(0x44B4A044143C1414), SPH_C64(0x66EEF0661E221E1E),
+	SPH_C64(0x42BA5B42E13EE1E1), SPH_C64(0xB4193DB4246C2424),
+	SPH_C64(0xD8E5DDD838483838), SPH_C64(0xF9B87EF9C657C6C6),
+	SPH_C64(0x904D9690DB70DBDB), SPH_C64(0x7A29627A4BDD4B4B),
+	SPH_C64(0x8F8DF78F7A8E7A7A), SPH_C64(0xD2F7CDD23A4E3A3A),
+	SPH_C64(0x8160BE81DE7FDEDE), SPH_C64(0x3B94CA3B5EE25E5E),
+	SPH_C64(0x8469B684DF7CDFDF), SPH_C64(0xFB49DCFB95A29595),
+	SPH_C64(0x2B4FB32BFC19FCFC), SPH_C64(0x38933938AAE3AAAA),
+	SPH_C64(0xAC21F6ACD764D7D7), SPH_C64(0xD1F03ED1CE4FCECE),
+	SPH_C64(0x1B3F381B07090707), SPH_C64(0x337778330F110F0F),
+	SPH_C64(0xC9C8F5C93D473D3D), SPH_C64(0x25A2FA2558E85858),
+	SPH_C64(0xC83EA4C89AB39A9A), SPH_C64(0xC22CB4C298B59898),
+	SPH_C64(0xD60894D69CB99C9C), SPH_C64(0x1D31C31DF20BF2F2),
+	SPH_C64(0x01F65101A7F4A7A7), SPH_C64(0x5599885511331111),
+	SPH_C64(0x9BA9D79B7E827E7E), SPH_C64(0x9DA72C9D8B808B8B),
+	SPH_C64(0x5261225243C54343), SPH_C64(0x0F1B180F03050303),
+	SPH_C64(0x4DA1434DE23BE2E2), SPH_C64(0x8B72AE8BDC79DCDC),
+	SPH_C64(0x569E7B56E532E5E5), SPH_C64(0x404BF940B2CBB2B2),
+	SPH_C64(0x6B044A6B4ED24E4E), SPH_C64(0xFCB176FCC754C7C7),
+	SPH_C64(0xC4224FC46DB76D6D), SPH_C64(0x6AF21B6AE926E9E9),
+	SPH_C64(0xBB0225BB27692727), SPH_C64(0x5D7A3A5D40C04040),
+	SPH_C64(0x9F568E9FD875D8D8), SPH_C64(0xEB92A5EB37593737),
+	SPH_C64(0xE076E4E092AB9292), SPH_C64(0x89830C898F8C8F8F),
+	SPH_C64(0x0509080501030101), SPH_C64(0x69F5E8691D271D1D),
+	SPH_C64(0x02F1A20253F55353), SPH_C64(0xC6D3EDC63E423E3E),
+	SPH_C64(0x20ABF22059EB5959), SPH_C64(0xE28746E2C15EC1C1),
+	SPH_C64(0x6E0D426E4FD14F4F), SPH_C64(0xFABF8DFA32563232),
+	SPH_C64(0x4EA6B04E163A1616), SPH_C64(0x35798335FA13FAFA),
+	SPH_C64(0xB9F387B9749C7474), SPH_C64(0x30708B30FB10FBFB),
+	SPH_C64(0xF25C3FF263A56363), SPH_C64(0xD9138CD99FBC9F9F),
+	SPH_C64(0xE489BDE4345C3434), SPH_C64(0x72CAD0721A2E1A1A),
+	SPH_C64(0x82674D822A7E2A2A), SPH_C64(0x2FB0EA2F5AEE5A5A),
+	SPH_C64(0x83911C838D8A8D8D), SPH_C64(0xCACF06CAC946C9C9),
+	SPH_C64(0xD4F936D4CF4CCFCF), SPH_C64(0x0915E309F607F6F6),
+	SPH_C64(0xEA64F4EA90AD9090), SPH_C64(0x88755D8828782828),
+	SPH_C64(0x92BC349288858888), SPH_C64(0xCD37ACCD9BB09B9B),
+	SPH_C64(0xF5A495F531533131), SPH_C64(0x367E70360E120E0E),
+	SPH_C64(0x733C8173BDDABDBD), SPH_C64(0x7F206A7F4ADE4A4A),
+	SPH_C64(0x6FFB136FE825E8E8), SPH_C64(0xF452C4F496A79696),
+	SPH_C64(0x04FF5904A6F7A6A6), SPH_C64(0x3C6C603C0C140C0C),
+	SPH_C64(0xCFC60ECFC845C8C8), SPH_C64(0x8096EF80798B7979),
+	SPH_C64(0x76358976BCD9BCBC), SPH_C64(0x7C27997CBEDFBEBE),
+	SPH_C64(0x74C42B74EF2CEFEF), SPH_C64(0xCB3957CB6EB26E6E),
+	SPH_C64(0x434C0A4346CA4646), SPH_C64(0xF15BCCF197A49797),
+	SPH_C64(0x2AB9E22A5BED5B5B), SPH_C64(0x7ED63B7EED2AEDED),
+	SPH_C64(0x7DD1C87D192B1919), SPH_C64(0x9A5F869AD976D9D9),
+	SPH_C64(0x26A50926ACE9ACAC), SPH_C64(0xC725BCC799B69999),
+	SPH_C64(0x32812932A8E5A8A8), SPH_C64(0x8D7C558D297B2929),
+	SPH_C64(0xE96307E964AC6464), SPH_C64(0x63E7F8631F211F1F),
+	SPH_C64(0x23AC0123ADEAADAD), SPH_C64(0x1CC7921C55FF5555),
+	SPH_C64(0x5F8B985F13351313), SPH_C64(0x6D0AB16DBBD0BBBB),
+	SPH_C64(0x0C1CEB0CF704F7F7), SPH_C64(0xCE305FCE6FB16F6F),
+	SPH_C64(0x6718A167B9D6B9B9), SPH_C64(0x4645024647C94747),
+	SPH_C64(0x934A65932F712F2F), SPH_C64(0x71CD2371EE2FEEEE),
+	SPH_C64(0x6211A962B8D5B8B8), SPH_C64(0x8A84FF8A7B8D7B7B),
+	SPH_C64(0x97B53C9789868989), SPH_C64(0xF0AD9DF030503030),
+	SPH_C64(0xB805D6B8D368D3D3), SPH_C64(0x9EA0DF9E7F817F7F),
+	SPH_C64(0xB3E197B3769A7676), SPH_C64(0xB0E664B0829B8282)
+};
+
+#if !SPH_SMALL_FOOTPRINT_WHIRLPOOL
+
+static const sph_u64 old0_T1[256] = {
+	SPH_C64(0x0F67D568B86868D5), SPH_C64(0x1ECEB7D06DD0D0B7),
+	SPH_C64(0xE00B60EB20EBEB60), SPH_C64(0x6E45872B7D2B2B87),
+	SPH_C64(0x327A7548D8484875), SPH_C64(0x019CD39DBA9D9DD3),
+	SPH_C64(0x1D77DF6ABE6A6ADF), SPH_C64(0x977353E431E4E453),
+	SPH_C64(0xA84B48E338E3E348), SPH_C64(0xD27115A3F8A3A315),
+	SPH_C64(0xDC8A1356FA565613), SPH_C64(0xFD7CBF819E8181BF),
+	SPH_C64(0xB2CF947D877D7D94), SPH_C64(0x2ADB12F10EF1F112),
+	SPH_C64(0xD95CAB85928585AB), SPH_C64(0x1A84DC9EBF9E9EDC),
+	SPH_C64(0x517D9C2C742C2C9C), SPH_C64(0x8A048C8E8F8E8E8C),
+	SPH_C64(0x9FE7857888787885), SPH_C64(0xD41EC5CA43CACAC5),
+	SPH_C64(0xAFB84B173917174B), SPH_C64(0x882137A9E6A9A937),
+	SPH_C64(0x4E2FF861A36161F8), SPH_C64(0x33E6A6D562D5D5A6),
+	SPH_C64(0x8FD2345DE75D5D34), SPH_C64(0x5358270B1D0B0B27),
+	SPH_C64(0x9814868C898C8C86), SPH_C64(0xC1FDCC3C443C3CCC),
+	SPH_C64(0xE89FB677997777B6), SPH_C64(0xE3B20851F3515108),
+	SPH_C64(0x2F0DAA22662222AA), SPH_C64(0x682A5742C6424257),
+	SPH_C64(0xDAE5C33F413F3FC3), SPH_C64(0xCE9A1954FC545419),
+	SPH_C64(0x73325841C3414158), SPH_C64(0xF474BA809D8080BA),
+	SPH_C64(0xE22EDBCC49CCCCDB), SPH_C64(0xC244A486978686A4),
+	SPH_C64(0x42F145B3C8B3B345), SPH_C64(0xD8C0781828181878),
+	SPH_C64(0x436D962E722E2E96), SPH_C64(0xD5821657F9575716),
+	SPH_C64(0x36301E060A06061E), SPH_C64(0x5537F762A66262F7),
+	SPH_C64(0x07F303F401F4F403), SPH_C64(0x9BADEE365A3636EE),
+	SPH_C64(0x17C6B2D16ED1D1B2), SPH_C64(0x147FDA6BBD6B6BDA),
+	SPH_C64(0xC3D8771B2D1B1B77), SPH_C64(0x6A0FEC65AF6565EC),
+	SPH_C64(0xFA8FBC759F7575BC), SPH_C64(0x9080501030101050),
+	SPH_C64(0x449E95DA73DADA95), SPH_C64(0x3B727049DB494970),
+	SPH_C64(0x0B2DBE266A2626BE), SPH_C64(0x629B3AF916F9F93A),
+	SPH_C64(0xDD16C0CB40CBCBC0), SPH_C64(0x7117E366AA6666E3),
+	SPH_C64(0x8C6B5CE734E7E75C), SPH_C64(0x03B968BAD3BABA68),
+	SPH_C64(0xB7192CAEEFAEAE2C), SPH_C64(0xEABA0D50F050500D),
+	SPH_C64(0xF8AA0752F6525207), SPH_C64(0x9A313DABE0ABAB3D),
+	SPH_C64(0x2D2811050F050511), SPH_C64(0x23D317F00DF0F017),
+	SPH_C64(0x6568390D170D0D39), SPH_C64(0xCCBFA273957373A2),
+	SPH_C64(0xFEC5D73B4D3B3BD7), SPH_C64(0x242014040C040414),
+	SPH_C64(0x3D1DA020602020A0), SPH_C64(0x5DA321FE1FFEFE21),
+	SPH_C64(0x7BA68EDD7ADDDD8E), SPH_C64(0x0EFB06F502F5F506),
+	SPH_C64(0x7DC95EB4C1B4B45E), SPH_C64(0x9DC23E5FE15F5F3E),
+	SPH_C64(0x5A50220A1E0A0A22), SPH_C64(0x74C15BB5C2B5B55B),
+	SPH_C64(0x8E4EE7C05DC0C0E7), SPH_C64(0xC9691AA0FDA0A01A),
+	SPH_C64(0xDEAFA871937171A8), SPH_C64(0xE4410BA5F2A5A50B),
+	SPH_C64(0x5875992D772D2D99), SPH_C64(0x4727FD60A06060FD),
+	SPH_C64(0xC5B7A772967272A7), SPH_C64(0x7FECE593A89393E5),
+	SPH_C64(0xECD5DD394B3939DD), SPH_C64(0x4840280818080828),
+	SPH_C64(0xEF6CB583988383B5), SPH_C64(0x3415A521632121A5),
+	SPH_C64(0x86DA315CE45C5C31), SPH_C64(0xCB4CA187948787A1),
+	SPH_C64(0x50E14FB1CEB1B14F), SPH_C64(0xB35347E03DE0E047),
+	SPH_C64(0x0000000000000000), SPH_C64(0x9556E8C358C3C3E8),
+	SPH_C64(0x82905A123612125A), SPH_C64(0x6DFCEF91AE9191EF),
+	SPH_C64(0xAE24988A838A8A98), SPH_C64(0x12100A020602020A),
+	SPH_C64(0xFCE06C1C241C1C6C), SPH_C64(0x856359E637E6E659),
+	SPH_C64(0x57124C45CF45454C), SPH_C64(0x9C5EEDC25BC2C2ED),
+	SPH_C64(0xAA6EF3C451C4C4F3), SPH_C64(0x46BB2EFD1AFDFD2E),
+	SPH_C64(0x2E9179BFDCBFBF79), SPH_C64(0x5E1A4944CC444449),
+	SPH_C64(0xC0611FA1FEA1A11F), SPH_C64(0x165A614CD44C4C61),
+	SPH_C64(0xB685FF33553333FF), SPH_C64(0xA366F6C552C5C5F6),
+	SPH_C64(0xD054AE84918484AE), SPH_C64(0x2605AF23652323AF),
+	SPH_C64(0xBBC7917C847C7C91), SPH_C64(0x59E94AB0CDB0B04A),
+	SPH_C64(0x1035B1256F2525B1), SPH_C64(0xBDA841153F151541),
+	SPH_C64(0x80B5E1355F3535E1), SPH_C64(0x066FD069BB6969D0),
+	SPH_C64(0x54AB24FF1CFFFF24), SPH_C64(0x40D4FE94A19494FE),
+	SPH_C64(0x1F52644DD74D4D64), SPH_C64(0xD7A7AD70907070AD),
+	SPH_C64(0xDB7910A2FBA2A210), SPH_C64(0xBE1129AFECAFAF29),
+	SPH_C64(0xEB26DECD4ACDCDDE), SPH_C64(0x28FEA9D667D6D6A9),
+	SPH_C64(0x2B47C16CB46C6CC1), SPH_C64(0x66D151B7C4B7B751),
+	SPH_C64(0x6B933FF815F8F83F), SPH_C64(0x41482D091B09092D),
+	SPH_C64(0x38CB18F308F3F318), SPH_C64(0x781FE667A96767E6),
+	SPH_C64(0xED490EA4F1A4A40E), SPH_C64(0xE90365EA23EAEA65),
+	SPH_C64(0xDF337BEC29ECEC7B), SPH_C64(0x6FD954B6C7B6B654),
+	SPH_C64(0x3AEEA3D461D4D4A3), SPH_C64(0x0CDEBDD26BD2D2BD),
+	SPH_C64(0xB4A044143C141444), SPH_C64(0xEEF0661E221E1E66),
+	SPH_C64(0xBA5B42E13EE1E142), SPH_C64(0x193DB4246C2424B4),
+	SPH_C64(0xE5DDD838483838D8), SPH_C64(0xB87EF9C657C6C6F9),
+	SPH_C64(0x4D9690DB70DBDB90), SPH_C64(0x29627A4BDD4B4B7A),
+	SPH_C64(0x8DF78F7A8E7A7A8F), SPH_C64(0xF7CDD23A4E3A3AD2),
+	SPH_C64(0x60BE81DE7FDEDE81), SPH_C64(0x94CA3B5EE25E5E3B),
+	SPH_C64(0x69B684DF7CDFDF84), SPH_C64(0x49DCFB95A29595FB),
+	SPH_C64(0x4FB32BFC19FCFC2B), SPH_C64(0x933938AAE3AAAA38),
+	SPH_C64(0x21F6ACD764D7D7AC), SPH_C64(0xF03ED1CE4FCECED1),
+	SPH_C64(0x3F381B070907071B), SPH_C64(0x7778330F110F0F33),
+	SPH_C64(0xC8F5C93D473D3DC9), SPH_C64(0xA2FA2558E8585825),
+	SPH_C64(0x3EA4C89AB39A9AC8), SPH_C64(0x2CB4C298B59898C2),
+	SPH_C64(0x0894D69CB99C9CD6), SPH_C64(0x31C31DF20BF2F21D),
+	SPH_C64(0xF65101A7F4A7A701), SPH_C64(0x9988551133111155),
+	SPH_C64(0xA9D79B7E827E7E9B), SPH_C64(0xA72C9D8B808B8B9D),
+	SPH_C64(0x61225243C5434352), SPH_C64(0x1B180F030503030F),
+	SPH_C64(0xA1434DE23BE2E24D), SPH_C64(0x72AE8BDC79DCDC8B),
+	SPH_C64(0x9E7B56E532E5E556), SPH_C64(0x4BF940B2CBB2B240),
+	SPH_C64(0x044A6B4ED24E4E6B), SPH_C64(0xB176FCC754C7C7FC),
+	SPH_C64(0x224FC46DB76D6DC4), SPH_C64(0xF21B6AE926E9E96A),
+	SPH_C64(0x0225BB27692727BB), SPH_C64(0x7A3A5D40C040405D),
+	SPH_C64(0x568E9FD875D8D89F), SPH_C64(0x92A5EB37593737EB),
+	SPH_C64(0x76E4E092AB9292E0), SPH_C64(0x830C898F8C8F8F89),
+	SPH_C64(0x0908050103010105), SPH_C64(0xF5E8691D271D1D69),
+	SPH_C64(0xF1A20253F5535302), SPH_C64(0xD3EDC63E423E3EC6),
+	SPH_C64(0xABF22059EB595920), SPH_C64(0x8746E2C15EC1C1E2),
+	SPH_C64(0x0D426E4FD14F4F6E), SPH_C64(0xBF8DFA32563232FA),
+	SPH_C64(0xA6B04E163A16164E), SPH_C64(0x798335FA13FAFA35),
+	SPH_C64(0xF387B9749C7474B9), SPH_C64(0x708B30FB10FBFB30),
+	SPH_C64(0x5C3FF263A56363F2), SPH_C64(0x138CD99FBC9F9FD9),
+	SPH_C64(0x89BDE4345C3434E4), SPH_C64(0xCAD0721A2E1A1A72),
+	SPH_C64(0x674D822A7E2A2A82), SPH_C64(0xB0EA2F5AEE5A5A2F),
+	SPH_C64(0x911C838D8A8D8D83), SPH_C64(0xCF06CAC946C9C9CA),
+	SPH_C64(0xF936D4CF4CCFCFD4), SPH_C64(0x15E309F607F6F609),
+	SPH_C64(0x64F4EA90AD9090EA), SPH_C64(0x755D882878282888),
+	SPH_C64(0xBC34928885888892), SPH_C64(0x37ACCD9BB09B9BCD),
+	SPH_C64(0xA495F531533131F5), SPH_C64(0x7E70360E120E0E36),
+	SPH_C64(0x3C8173BDDABDBD73), SPH_C64(0x206A7F4ADE4A4A7F),
+	SPH_C64(0xFB136FE825E8E86F), SPH_C64(0x52C4F496A79696F4),
+	SPH_C64(0xFF5904A6F7A6A604), SPH_C64(0x6C603C0C140C0C3C),
+	SPH_C64(0xC60ECFC845C8C8CF), SPH_C64(0x96EF80798B797980),
+	SPH_C64(0x358976BCD9BCBC76), SPH_C64(0x27997CBEDFBEBE7C),
+	SPH_C64(0xC42B74EF2CEFEF74), SPH_C64(0x3957CB6EB26E6ECB),
+	SPH_C64(0x4C0A4346CA464643), SPH_C64(0x5BCCF197A49797F1),
+	SPH_C64(0xB9E22A5BED5B5B2A), SPH_C64(0xD63B7EED2AEDED7E),
+	SPH_C64(0xD1C87D192B19197D), SPH_C64(0x5F869AD976D9D99A),
+	SPH_C64(0xA50926ACE9ACAC26), SPH_C64(0x25BCC799B69999C7),
+	SPH_C64(0x812932A8E5A8A832), SPH_C64(0x7C558D297B29298D),
+	SPH_C64(0x6307E964AC6464E9), SPH_C64(0xE7F8631F211F1F63),
+	SPH_C64(0xAC0123ADEAADAD23), SPH_C64(0xC7921C55FF55551C),
+	SPH_C64(0x8B985F133513135F), SPH_C64(0x0AB16DBBD0BBBB6D),
+	SPH_C64(0x1CEB0CF704F7F70C), SPH_C64(0x305FCE6FB16F6FCE),
+	SPH_C64(0x18A167B9D6B9B967), SPH_C64(0x45024647C9474746),
+	SPH_C64(0x4A65932F712F2F93), SPH_C64(0xCD2371EE2FEEEE71),
+	SPH_C64(0x11A962B8D5B8B862), SPH_C64(0x84FF8A7B8D7B7B8A),
+	SPH_C64(0xB53C978986898997), SPH_C64(0xAD9DF030503030F0),
+	SPH_C64(0x05D6B8D368D3D3B8), SPH_C64(0xA0DF9E7F817F7F9E),
+	SPH_C64(0xE197B3769A7676B3), SPH_C64(0xE664B0829B8282B0)
+};
+
+static const sph_u64 old0_T2[256] = {
+	SPH_C64(0x67D568B86868D50F), SPH_C64(0xCEB7D06DD0D0B71E),
+	SPH_C64(0x0B60EB20EBEB60E0), SPH_C64(0x45872B7D2B2B876E),
+	SPH_C64(0x7A7548D848487532), SPH_C64(0x9CD39DBA9D9DD301),
+	SPH_C64(0x77DF6ABE6A6ADF1D), SPH_C64(0x7353E431E4E45397),
+	SPH_C64(0x4B48E338E3E348A8), SPH_C64(0x7115A3F8A3A315D2),
+	SPH_C64(0x8A1356FA565613DC), SPH_C64(0x7CBF819E8181BFFD),
+	SPH_C64(0xCF947D877D7D94B2), SPH_C64(0xDB12F10EF1F1122A),
+	SPH_C64(0x5CAB85928585ABD9), SPH_C64(0x84DC9EBF9E9EDC1A),
+	SPH_C64(0x7D9C2C742C2C9C51), SPH_C64(0x048C8E8F8E8E8C8A),
+	SPH_C64(0xE78578887878859F), SPH_C64(0x1EC5CA43CACAC5D4),
+	SPH_C64(0xB84B173917174BAF), SPH_C64(0x2137A9E6A9A93788),
+	SPH_C64(0x2FF861A36161F84E), SPH_C64(0xE6A6D562D5D5A633),
+	SPH_C64(0xD2345DE75D5D348F), SPH_C64(0x58270B1D0B0B2753),
+	SPH_C64(0x14868C898C8C8698), SPH_C64(0xFDCC3C443C3CCCC1),
+	SPH_C64(0x9FB677997777B6E8), SPH_C64(0xB20851F3515108E3),
+	SPH_C64(0x0DAA22662222AA2F), SPH_C64(0x2A5742C642425768),
+	SPH_C64(0xE5C33F413F3FC3DA), SPH_C64(0x9A1954FC545419CE),
+	SPH_C64(0x325841C341415873), SPH_C64(0x74BA809D8080BAF4),
+	SPH_C64(0x2EDBCC49CCCCDBE2), SPH_C64(0x44A486978686A4C2),
+	SPH_C64(0xF145B3C8B3B34542), SPH_C64(0xC0781828181878D8),
+	SPH_C64(0x6D962E722E2E9643), SPH_C64(0x821657F9575716D5),
+	SPH_C64(0x301E060A06061E36), SPH_C64(0x37F762A66262F755),
+	SPH_C64(0xF303F401F4F40307), SPH_C64(0xADEE365A3636EE9B),
+	SPH_C64(0xC6B2D16ED1D1B217), SPH_C64(0x7FDA6BBD6B6BDA14),
+	SPH_C64(0xD8771B2D1B1B77C3), SPH_C64(0x0FEC65AF6565EC6A),
+	SPH_C64(0x8FBC759F7575BCFA), SPH_C64(0x8050103010105090),
+	SPH_C64(0x9E95DA73DADA9544), SPH_C64(0x727049DB4949703B),
+	SPH_C64(0x2DBE266A2626BE0B), SPH_C64(0x9B3AF916F9F93A62),
+	SPH_C64(0x16C0CB40CBCBC0DD), SPH_C64(0x17E366AA6666E371),
+	SPH_C64(0x6B5CE734E7E75C8C), SPH_C64(0xB968BAD3BABA6803),
+	SPH_C64(0x192CAEEFAEAE2CB7), SPH_C64(0xBA0D50F050500DEA),
+	SPH_C64(0xAA0752F6525207F8), SPH_C64(0x313DABE0ABAB3D9A),
+	SPH_C64(0x2811050F0505112D), SPH_C64(0xD317F00DF0F01723),
+	SPH_C64(0x68390D170D0D3965), SPH_C64(0xBFA273957373A2CC),
+	SPH_C64(0xC5D73B4D3B3BD7FE), SPH_C64(0x2014040C04041424),
+	SPH_C64(0x1DA020602020A03D), SPH_C64(0xA321FE1FFEFE215D),
+	SPH_C64(0xA68EDD7ADDDD8E7B), SPH_C64(0xFB06F502F5F5060E),
+	SPH_C64(0xC95EB4C1B4B45E7D), SPH_C64(0xC23E5FE15F5F3E9D),
+	SPH_C64(0x50220A1E0A0A225A), SPH_C64(0xC15BB5C2B5B55B74),
+	SPH_C64(0x4EE7C05DC0C0E78E), SPH_C64(0x691AA0FDA0A01AC9),
+	SPH_C64(0xAFA871937171A8DE), SPH_C64(0x410BA5F2A5A50BE4),
+	SPH_C64(0x75992D772D2D9958), SPH_C64(0x27FD60A06060FD47),
+	SPH_C64(0xB7A772967272A7C5), SPH_C64(0xECE593A89393E57F),
+	SPH_C64(0xD5DD394B3939DDEC), SPH_C64(0x4028081808082848),
+	SPH_C64(0x6CB583988383B5EF), SPH_C64(0x15A521632121A534),
+	SPH_C64(0xDA315CE45C5C3186), SPH_C64(0x4CA187948787A1CB),
+	SPH_C64(0xE14FB1CEB1B14F50), SPH_C64(0x5347E03DE0E047B3),
+	SPH_C64(0x0000000000000000), SPH_C64(0x56E8C358C3C3E895),
+	SPH_C64(0x905A123612125A82), SPH_C64(0xFCEF91AE9191EF6D),
+	SPH_C64(0x24988A838A8A98AE), SPH_C64(0x100A020602020A12),
+	SPH_C64(0xE06C1C241C1C6CFC), SPH_C64(0x6359E637E6E65985),
+	SPH_C64(0x124C45CF45454C57), SPH_C64(0x5EEDC25BC2C2ED9C),
+	SPH_C64(0x6EF3C451C4C4F3AA), SPH_C64(0xBB2EFD1AFDFD2E46),
+	SPH_C64(0x9179BFDCBFBF792E), SPH_C64(0x1A4944CC4444495E),
+	SPH_C64(0x611FA1FEA1A11FC0), SPH_C64(0x5A614CD44C4C6116),
+	SPH_C64(0x85FF33553333FFB6), SPH_C64(0x66F6C552C5C5F6A3),
+	SPH_C64(0x54AE84918484AED0), SPH_C64(0x05AF23652323AF26),
+	SPH_C64(0xC7917C847C7C91BB), SPH_C64(0xE94AB0CDB0B04A59),
+	SPH_C64(0x35B1256F2525B110), SPH_C64(0xA841153F151541BD),
+	SPH_C64(0xB5E1355F3535E180), SPH_C64(0x6FD069BB6969D006),
+	SPH_C64(0xAB24FF1CFFFF2454), SPH_C64(0xD4FE94A19494FE40),
+	SPH_C64(0x52644DD74D4D641F), SPH_C64(0xA7AD70907070ADD7),
+	SPH_C64(0x7910A2FBA2A210DB), SPH_C64(0x1129AFECAFAF29BE),
+	SPH_C64(0x26DECD4ACDCDDEEB), SPH_C64(0xFEA9D667D6D6A928),
+	SPH_C64(0x47C16CB46C6CC12B), SPH_C64(0xD151B7C4B7B75166),
+	SPH_C64(0x933FF815F8F83F6B), SPH_C64(0x482D091B09092D41),
+	SPH_C64(0xCB18F308F3F31838), SPH_C64(0x1FE667A96767E678),
+	SPH_C64(0x490EA4F1A4A40EED), SPH_C64(0x0365EA23EAEA65E9),
+	SPH_C64(0x337BEC29ECEC7BDF), SPH_C64(0xD954B6C7B6B6546F),
+	SPH_C64(0xEEA3D461D4D4A33A), SPH_C64(0xDEBDD26BD2D2BD0C),
+	SPH_C64(0xA044143C141444B4), SPH_C64(0xF0661E221E1E66EE),
+	SPH_C64(0x5B42E13EE1E142BA), SPH_C64(0x3DB4246C2424B419),
+	SPH_C64(0xDDD838483838D8E5), SPH_C64(0x7EF9C657C6C6F9B8),
+	SPH_C64(0x9690DB70DBDB904D), SPH_C64(0x627A4BDD4B4B7A29),
+	SPH_C64(0xF78F7A8E7A7A8F8D), SPH_C64(0xCDD23A4E3A3AD2F7),
+	SPH_C64(0xBE81DE7FDEDE8160), SPH_C64(0xCA3B5EE25E5E3B94),
+	SPH_C64(0xB684DF7CDFDF8469), SPH_C64(0xDCFB95A29595FB49),
+	SPH_C64(0xB32BFC19FCFC2B4F), SPH_C64(0x3938AAE3AAAA3893),
+	SPH_C64(0xF6ACD764D7D7AC21), SPH_C64(0x3ED1CE4FCECED1F0),
+	SPH_C64(0x381B070907071B3F), SPH_C64(0x78330F110F0F3377),
+	SPH_C64(0xF5C93D473D3DC9C8), SPH_C64(0xFA2558E8585825A2),
+	SPH_C64(0xA4C89AB39A9AC83E), SPH_C64(0xB4C298B59898C22C),
+	SPH_C64(0x94D69CB99C9CD608), SPH_C64(0xC31DF20BF2F21D31),
+	SPH_C64(0x5101A7F4A7A701F6), SPH_C64(0x8855113311115599),
+	SPH_C64(0xD79B7E827E7E9BA9), SPH_C64(0x2C9D8B808B8B9DA7),
+	SPH_C64(0x225243C543435261), SPH_C64(0x180F030503030F1B),
+	SPH_C64(0x434DE23BE2E24DA1), SPH_C64(0xAE8BDC79DCDC8B72),
+	SPH_C64(0x7B56E532E5E5569E), SPH_C64(0xF940B2CBB2B2404B),
+	SPH_C64(0x4A6B4ED24E4E6B04), SPH_C64(0x76FCC754C7C7FCB1),
+	SPH_C64(0x4FC46DB76D6DC422), SPH_C64(0x1B6AE926E9E96AF2),
+	SPH_C64(0x25BB27692727BB02), SPH_C64(0x3A5D40C040405D7A),
+	SPH_C64(0x8E9FD875D8D89F56), SPH_C64(0xA5EB37593737EB92),
+	SPH_C64(0xE4E092AB9292E076), SPH_C64(0x0C898F8C8F8F8983),
+	SPH_C64(0x0805010301010509), SPH_C64(0xE8691D271D1D69F5),
+	SPH_C64(0xA20253F5535302F1), SPH_C64(0xEDC63E423E3EC6D3),
+	SPH_C64(0xF22059EB595920AB), SPH_C64(0x46E2C15EC1C1E287),
+	SPH_C64(0x426E4FD14F4F6E0D), SPH_C64(0x8DFA32563232FABF),
+	SPH_C64(0xB04E163A16164EA6), SPH_C64(0x8335FA13FAFA3579),
+	SPH_C64(0x87B9749C7474B9F3), SPH_C64(0x8B30FB10FBFB3070),
+	SPH_C64(0x3FF263A56363F25C), SPH_C64(0x8CD99FBC9F9FD913),
+	SPH_C64(0xBDE4345C3434E489), SPH_C64(0xD0721A2E1A1A72CA),
+	SPH_C64(0x4D822A7E2A2A8267), SPH_C64(0xEA2F5AEE5A5A2FB0),
+	SPH_C64(0x1C838D8A8D8D8391), SPH_C64(0x06CAC946C9C9CACF),
+	SPH_C64(0x36D4CF4CCFCFD4F9), SPH_C64(0xE309F607F6F60915),
+	SPH_C64(0xF4EA90AD9090EA64), SPH_C64(0x5D88287828288875),
+	SPH_C64(0x34928885888892BC), SPH_C64(0xACCD9BB09B9BCD37),
+	SPH_C64(0x95F531533131F5A4), SPH_C64(0x70360E120E0E367E),
+	SPH_C64(0x8173BDDABDBD733C), SPH_C64(0x6A7F4ADE4A4A7F20),
+	SPH_C64(0x136FE825E8E86FFB), SPH_C64(0xC4F496A79696F452),
+	SPH_C64(0x5904A6F7A6A604FF), SPH_C64(0x603C0C140C0C3C6C),
+	SPH_C64(0x0ECFC845C8C8CFC6), SPH_C64(0xEF80798B79798096),
+	SPH_C64(0x8976BCD9BCBC7635), SPH_C64(0x997CBEDFBEBE7C27),
+	SPH_C64(0x2B74EF2CEFEF74C4), SPH_C64(0x57CB6EB26E6ECB39),
+	SPH_C64(0x0A4346CA4646434C), SPH_C64(0xCCF197A49797F15B),
+	SPH_C64(0xE22A5BED5B5B2AB9), SPH_C64(0x3B7EED2AEDED7ED6),
+	SPH_C64(0xC87D192B19197DD1), SPH_C64(0x869AD976D9D99A5F),
+	SPH_C64(0x0926ACE9ACAC26A5), SPH_C64(0xBCC799B69999C725),
+	SPH_C64(0x2932A8E5A8A83281), SPH_C64(0x558D297B29298D7C),
+	SPH_C64(0x07E964AC6464E963), SPH_C64(0xF8631F211F1F63E7),
+	SPH_C64(0x0123ADEAADAD23AC), SPH_C64(0x921C55FF55551CC7),
+	SPH_C64(0x985F133513135F8B), SPH_C64(0xB16DBBD0BBBB6D0A),
+	SPH_C64(0xEB0CF704F7F70C1C), SPH_C64(0x5FCE6FB16F6FCE30),
+	SPH_C64(0xA167B9D6B9B96718), SPH_C64(0x024647C947474645),
+	SPH_C64(0x65932F712F2F934A), SPH_C64(0x2371EE2FEEEE71CD),
+	SPH_C64(0xA962B8D5B8B86211), SPH_C64(0xFF8A7B8D7B7B8A84),
+	SPH_C64(0x3C978986898997B5), SPH_C64(0x9DF030503030F0AD),
+	SPH_C64(0xD6B8D368D3D3B805), SPH_C64(0xDF9E7F817F7F9EA0),
+	SPH_C64(0x97B3769A7676B3E1), SPH_C64(0x64B0829B8282B0E6)
+};
+
+static const sph_u64 old0_T3[256] = {
+	SPH_C64(0xD568B86868D50F67), SPH_C64(0xB7D06DD0D0B71ECE),
+	SPH_C64(0x60EB20EBEB60E00B), SPH_C64(0x872B7D2B2B876E45),
+	SPH_C64(0x7548D8484875327A), SPH_C64(0xD39DBA9D9DD3019C),
+	SPH_C64(0xDF6ABE6A6ADF1D77), SPH_C64(0x53E431E4E4539773),
+	SPH_C64(0x48E338E3E348A84B), SPH_C64(0x15A3F8A3A315D271),
+	SPH_C64(0x1356FA565613DC8A), SPH_C64(0xBF819E8181BFFD7C),
+	SPH_C64(0x947D877D7D94B2CF), SPH_C64(0x12F10EF1F1122ADB),
+	SPH_C64(0xAB85928585ABD95C), SPH_C64(0xDC9EBF9E9EDC1A84),
+	SPH_C64(0x9C2C742C2C9C517D), SPH_C64(0x8C8E8F8E8E8C8A04),
+	SPH_C64(0x8578887878859FE7), SPH_C64(0xC5CA43CACAC5D41E),
+	SPH_C64(0x4B173917174BAFB8), SPH_C64(0x37A9E6A9A9378821),
+	SPH_C64(0xF861A36161F84E2F), SPH_C64(0xA6D562D5D5A633E6),
+	SPH_C64(0x345DE75D5D348FD2), SPH_C64(0x270B1D0B0B275358),
+	SPH_C64(0x868C898C8C869814), SPH_C64(0xCC3C443C3CCCC1FD),
+	SPH_C64(0xB677997777B6E89F), SPH_C64(0x0851F3515108E3B2),
+	SPH_C64(0xAA22662222AA2F0D), SPH_C64(0x5742C6424257682A),
+	SPH_C64(0xC33F413F3FC3DAE5), SPH_C64(0x1954FC545419CE9A),
+	SPH_C64(0x5841C34141587332), SPH_C64(0xBA809D8080BAF474),
+	SPH_C64(0xDBCC49CCCCDBE22E), SPH_C64(0xA486978686A4C244),
+	SPH_C64(0x45B3C8B3B34542F1), SPH_C64(0x781828181878D8C0),
+	SPH_C64(0x962E722E2E96436D), SPH_C64(0x1657F9575716D582),
+	SPH_C64(0x1E060A06061E3630), SPH_C64(0xF762A66262F75537),
+	SPH_C64(0x03F401F4F40307F3), SPH_C64(0xEE365A3636EE9BAD),
+	SPH_C64(0xB2D16ED1D1B217C6), SPH_C64(0xDA6BBD6B6BDA147F),
+	SPH_C64(0x771B2D1B1B77C3D8), SPH_C64(0xEC65AF6565EC6A0F),
+	SPH_C64(0xBC759F7575BCFA8F), SPH_C64(0x5010301010509080),
+	SPH_C64(0x95DA73DADA95449E), SPH_C64(0x7049DB4949703B72),
+	SPH_C64(0xBE266A2626BE0B2D), SPH_C64(0x3AF916F9F93A629B),
+	SPH_C64(0xC0CB40CBCBC0DD16), SPH_C64(0xE366AA6666E37117),
+	SPH_C64(0x5CE734E7E75C8C6B), SPH_C64(0x68BAD3BABA6803B9),
+	SPH_C64(0x2CAEEFAEAE2CB719), SPH_C64(0x0D50F050500DEABA),
+	SPH_C64(0x0752F6525207F8AA), SPH_C64(0x3DABE0ABAB3D9A31),
+	SPH_C64(0x11050F0505112D28), SPH_C64(0x17F00DF0F01723D3),
+	SPH_C64(0x390D170D0D396568), SPH_C64(0xA273957373A2CCBF),
+	SPH_C64(0xD73B4D3B3BD7FEC5), SPH_C64(0x14040C0404142420),
+	SPH_C64(0xA020602020A03D1D), SPH_C64(0x21FE1FFEFE215DA3),
+	SPH_C64(0x8EDD7ADDDD8E7BA6), SPH_C64(0x06F502F5F5060EFB),
+	SPH_C64(0x5EB4C1B4B45E7DC9), SPH_C64(0x3E5FE15F5F3E9DC2),
+	SPH_C64(0x220A1E0A0A225A50), SPH_C64(0x5BB5C2B5B55B74C1),
+	SPH_C64(0xE7C05DC0C0E78E4E), SPH_C64(0x1AA0FDA0A01AC969),
+	SPH_C64(0xA871937171A8DEAF), SPH_C64(0x0BA5F2A5A50BE441),
+	SPH_C64(0x992D772D2D995875), SPH_C64(0xFD60A06060FD4727),
+	SPH_C64(0xA772967272A7C5B7), SPH_C64(0xE593A89393E57FEC),
+	SPH_C64(0xDD394B3939DDECD5), SPH_C64(0x2808180808284840),
+	SPH_C64(0xB583988383B5EF6C), SPH_C64(0xA521632121A53415),
+	SPH_C64(0x315CE45C5C3186DA), SPH_C64(0xA187948787A1CB4C),
+	SPH_C64(0x4FB1CEB1B14F50E1), SPH_C64(0x47E03DE0E047B353),
+	SPH_C64(0x0000000000000000), SPH_C64(0xE8C358C3C3E89556),
+	SPH_C64(0x5A123612125A8290), SPH_C64(0xEF91AE9191EF6DFC),
+	SPH_C64(0x988A838A8A98AE24), SPH_C64(0x0A020602020A1210),
+	SPH_C64(0x6C1C241C1C6CFCE0), SPH_C64(0x59E637E6E6598563),
+	SPH_C64(0x4C45CF45454C5712), SPH_C64(0xEDC25BC2C2ED9C5E),
+	SPH_C64(0xF3C451C4C4F3AA6E), SPH_C64(0x2EFD1AFDFD2E46BB),
+	SPH_C64(0x79BFDCBFBF792E91), SPH_C64(0x4944CC4444495E1A),
+	SPH_C64(0x1FA1FEA1A11FC061), SPH_C64(0x614CD44C4C61165A),
+	SPH_C64(0xFF33553333FFB685), SPH_C64(0xF6C552C5C5F6A366),
+	SPH_C64(0xAE84918484AED054), SPH_C64(0xAF23652323AF2605),
+	SPH_C64(0x917C847C7C91BBC7), SPH_C64(0x4AB0CDB0B04A59E9),
+	SPH_C64(0xB1256F2525B11035), SPH_C64(0x41153F151541BDA8),
+	SPH_C64(0xE1355F3535E180B5), SPH_C64(0xD069BB6969D0066F),
+	SPH_C64(0x24FF1CFFFF2454AB), SPH_C64(0xFE94A19494FE40D4),
+	SPH_C64(0x644DD74D4D641F52), SPH_C64(0xAD70907070ADD7A7),
+	SPH_C64(0x10A2FBA2A210DB79), SPH_C64(0x29AFECAFAF29BE11),
+	SPH_C64(0xDECD4ACDCDDEEB26), SPH_C64(0xA9D667D6D6A928FE),
+	SPH_C64(0xC16CB46C6CC12B47), SPH_C64(0x51B7C4B7B75166D1),
+	SPH_C64(0x3FF815F8F83F6B93), SPH_C64(0x2D091B09092D4148),
+	SPH_C64(0x18F308F3F31838CB), SPH_C64(0xE667A96767E6781F),
+	SPH_C64(0x0EA4F1A4A40EED49), SPH_C64(0x65EA23EAEA65E903),
+	SPH_C64(0x7BEC29ECEC7BDF33), SPH_C64(0x54B6C7B6B6546FD9),
+	SPH_C64(0xA3D461D4D4A33AEE), SPH_C64(0xBDD26BD2D2BD0CDE),
+	SPH_C64(0x44143C141444B4A0), SPH_C64(0x661E221E1E66EEF0),
+	SPH_C64(0x42E13EE1E142BA5B), SPH_C64(0xB4246C2424B4193D),
+	SPH_C64(0xD838483838D8E5DD), SPH_C64(0xF9C657C6C6F9B87E),
+	SPH_C64(0x90DB70DBDB904D96), SPH_C64(0x7A4BDD4B4B7A2962),
+	SPH_C64(0x8F7A8E7A7A8F8DF7), SPH_C64(0xD23A4E3A3AD2F7CD),
+	SPH_C64(0x81DE7FDEDE8160BE), SPH_C64(0x3B5EE25E5E3B94CA),
+	SPH_C64(0x84DF7CDFDF8469B6), SPH_C64(0xFB95A29595FB49DC),
+	SPH_C64(0x2BFC19FCFC2B4FB3), SPH_C64(0x38AAE3AAAA389339),
+	SPH_C64(0xACD764D7D7AC21F6), SPH_C64(0xD1CE4FCECED1F03E),
+	SPH_C64(0x1B070907071B3F38), SPH_C64(0x330F110F0F337778),
+	SPH_C64(0xC93D473D3DC9C8F5), SPH_C64(0x2558E8585825A2FA),
+	SPH_C64(0xC89AB39A9AC83EA4), SPH_C64(0xC298B59898C22CB4),
+	SPH_C64(0xD69CB99C9CD60894), SPH_C64(0x1DF20BF2F21D31C3),
+	SPH_C64(0x01A7F4A7A701F651), SPH_C64(0x5511331111559988),
+	SPH_C64(0x9B7E827E7E9BA9D7), SPH_C64(0x9D8B808B8B9DA72C),
+	SPH_C64(0x5243C54343526122), SPH_C64(0x0F030503030F1B18),
+	SPH_C64(0x4DE23BE2E24DA143), SPH_C64(0x8BDC79DCDC8B72AE),
+	SPH_C64(0x56E532E5E5569E7B), SPH_C64(0x40B2CBB2B2404BF9),
+	SPH_C64(0x6B4ED24E4E6B044A), SPH_C64(0xFCC754C7C7FCB176),
+	SPH_C64(0xC46DB76D6DC4224F), SPH_C64(0x6AE926E9E96AF21B),
+	SPH_C64(0xBB27692727BB0225), SPH_C64(0x5D40C040405D7A3A),
+	SPH_C64(0x9FD875D8D89F568E), SPH_C64(0xEB37593737EB92A5),
+	SPH_C64(0xE092AB9292E076E4), SPH_C64(0x898F8C8F8F89830C),
+	SPH_C64(0x0501030101050908), SPH_C64(0x691D271D1D69F5E8),
+	SPH_C64(0x0253F5535302F1A2), SPH_C64(0xC63E423E3EC6D3ED),
+	SPH_C64(0x2059EB595920ABF2), SPH_C64(0xE2C15EC1C1E28746),
+	SPH_C64(0x6E4FD14F4F6E0D42), SPH_C64(0xFA32563232FABF8D),
+	SPH_C64(0x4E163A16164EA6B0), SPH_C64(0x35FA13FAFA357983),
+	SPH_C64(0xB9749C7474B9F387), SPH_C64(0x30FB10FBFB30708B),
+	SPH_C64(0xF263A56363F25C3F), SPH_C64(0xD99FBC9F9FD9138C),
+	SPH_C64(0xE4345C3434E489BD), SPH_C64(0x721A2E1A1A72CAD0),
+	SPH_C64(0x822A7E2A2A82674D), SPH_C64(0x2F5AEE5A5A2FB0EA),
+	SPH_C64(0x838D8A8D8D83911C), SPH_C64(0xCAC946C9C9CACF06),
+	SPH_C64(0xD4CF4CCFCFD4F936), SPH_C64(0x09F607F6F60915E3),
+	SPH_C64(0xEA90AD9090EA64F4), SPH_C64(0x882878282888755D),
+	SPH_C64(0x928885888892BC34), SPH_C64(0xCD9BB09B9BCD37AC),
+	SPH_C64(0xF531533131F5A495), SPH_C64(0x360E120E0E367E70),
+	SPH_C64(0x73BDDABDBD733C81), SPH_C64(0x7F4ADE4A4A7F206A),
+	SPH_C64(0x6FE825E8E86FFB13), SPH_C64(0xF496A79696F452C4),
+	SPH_C64(0x04A6F7A6A604FF59), SPH_C64(0x3C0C140C0C3C6C60),
+	SPH_C64(0xCFC845C8C8CFC60E), SPH_C64(0x80798B79798096EF),
+	SPH_C64(0x76BCD9BCBC763589), SPH_C64(0x7CBEDFBEBE7C2799),
+	SPH_C64(0x74EF2CEFEF74C42B), SPH_C64(0xCB6EB26E6ECB3957),
+	SPH_C64(0x4346CA4646434C0A), SPH_C64(0xF197A49797F15BCC),
+	SPH_C64(0x2A5BED5B5B2AB9E2), SPH_C64(0x7EED2AEDED7ED63B),
+	SPH_C64(0x7D192B19197DD1C8), SPH_C64(0x9AD976D9D99A5F86),
+	SPH_C64(0x26ACE9ACAC26A509), SPH_C64(0xC799B69999C725BC),
+	SPH_C64(0x32A8E5A8A8328129), SPH_C64(0x8D297B29298D7C55),
+	SPH_C64(0xE964AC6464E96307), SPH_C64(0x631F211F1F63E7F8),
+	SPH_C64(0x23ADEAADAD23AC01), SPH_C64(0x1C55FF55551CC792),
+	SPH_C64(0x5F133513135F8B98), SPH_C64(0x6DBBD0BBBB6D0AB1),
+	SPH_C64(0x0CF704F7F70C1CEB), SPH_C64(0xCE6FB16F6FCE305F),
+	SPH_C64(0x67B9D6B9B96718A1), SPH_C64(0x4647C94747464502),
+	SPH_C64(0x932F712F2F934A65), SPH_C64(0x71EE2FEEEE71CD23),
+	SPH_C64(0x62B8D5B8B86211A9), SPH_C64(0x8A7B8D7B7B8A84FF),
+	SPH_C64(0x978986898997B53C), SPH_C64(0xF030503030F0AD9D),
+	SPH_C64(0xB8D368D3D3B805D6), SPH_C64(0x9E7F817F7F9EA0DF),
+	SPH_C64(0xB3769A7676B3E197), SPH_C64(0xB0829B8282B0E664)
+};
+
+static const sph_u64 old0_T4[256] = {
+	SPH_C64(0x68B86868D50F67D5), SPH_C64(0xD06DD0D0B71ECEB7),
+	SPH_C64(0xEB20EBEB60E00B60), SPH_C64(0x2B7D2B2B876E4587),
+	SPH_C64(0x48D8484875327A75), SPH_C64(0x9DBA9D9DD3019CD3),
+	SPH_C64(0x6ABE6A6ADF1D77DF), SPH_C64(0xE431E4E453977353),
+	SPH_C64(0xE338E3E348A84B48), SPH_C64(0xA3F8A3A315D27115),
+	SPH_C64(0x56FA565613DC8A13), SPH_C64(0x819E8181BFFD7CBF),
+	SPH_C64(0x7D877D7D94B2CF94), SPH_C64(0xF10EF1F1122ADB12),
+	SPH_C64(0x85928585ABD95CAB), SPH_C64(0x9EBF9E9EDC1A84DC),
+	SPH_C64(0x2C742C2C9C517D9C), SPH_C64(0x8E8F8E8E8C8A048C),
+	SPH_C64(0x78887878859FE785), SPH_C64(0xCA43CACAC5D41EC5),
+	SPH_C64(0x173917174BAFB84B), SPH_C64(0xA9E6A9A937882137),
+	SPH_C64(0x61A36161F84E2FF8), SPH_C64(0xD562D5D5A633E6A6),
+	SPH_C64(0x5DE75D5D348FD234), SPH_C64(0x0B1D0B0B27535827),
+	SPH_C64(0x8C898C8C86981486), SPH_C64(0x3C443C3CCCC1FDCC),
+	SPH_C64(0x77997777B6E89FB6), SPH_C64(0x51F3515108E3B208),
+	SPH_C64(0x22662222AA2F0DAA), SPH_C64(0x42C6424257682A57),
+	SPH_C64(0x3F413F3FC3DAE5C3), SPH_C64(0x54FC545419CE9A19),
+	SPH_C64(0x41C3414158733258), SPH_C64(0x809D8080BAF474BA),
+	SPH_C64(0xCC49CCCCDBE22EDB), SPH_C64(0x86978686A4C244A4),
+	SPH_C64(0xB3C8B3B34542F145), SPH_C64(0x1828181878D8C078),
+	SPH_C64(0x2E722E2E96436D96), SPH_C64(0x57F9575716D58216),
+	SPH_C64(0x060A06061E36301E), SPH_C64(0x62A66262F75537F7),
+	SPH_C64(0xF401F4F40307F303), SPH_C64(0x365A3636EE9BADEE),
+	SPH_C64(0xD16ED1D1B217C6B2), SPH_C64(0x6BBD6B6BDA147FDA),
+	SPH_C64(0x1B2D1B1B77C3D877), SPH_C64(0x65AF6565EC6A0FEC),
+	SPH_C64(0x759F7575BCFA8FBC), SPH_C64(0x1030101050908050),
+	SPH_C64(0xDA73DADA95449E95), SPH_C64(0x49DB4949703B7270),
+	SPH_C64(0x266A2626BE0B2DBE), SPH_C64(0xF916F9F93A629B3A),
+	SPH_C64(0xCB40CBCBC0DD16C0), SPH_C64(0x66AA6666E37117E3),
+	SPH_C64(0xE734E7E75C8C6B5C), SPH_C64(0xBAD3BABA6803B968),
+	SPH_C64(0xAEEFAEAE2CB7192C), SPH_C64(0x50F050500DEABA0D),
+	SPH_C64(0x52F6525207F8AA07), SPH_C64(0xABE0ABAB3D9A313D),
+	SPH_C64(0x050F0505112D2811), SPH_C64(0xF00DF0F01723D317),
+	SPH_C64(0x0D170D0D39656839), SPH_C64(0x73957373A2CCBFA2),
+	SPH_C64(0x3B4D3B3BD7FEC5D7), SPH_C64(0x040C040414242014),
+	SPH_C64(0x20602020A03D1DA0), SPH_C64(0xFE1FFEFE215DA321),
+	SPH_C64(0xDD7ADDDD8E7BA68E), SPH_C64(0xF502F5F5060EFB06),
+	SPH_C64(0xB4C1B4B45E7DC95E), SPH_C64(0x5FE15F5F3E9DC23E),
+	SPH_C64(0x0A1E0A0A225A5022), SPH_C64(0xB5C2B5B55B74C15B),
+	SPH_C64(0xC05DC0C0E78E4EE7), SPH_C64(0xA0FDA0A01AC9691A),
+	SPH_C64(0x71937171A8DEAFA8), SPH_C64(0xA5F2A5A50BE4410B),
+	SPH_C64(0x2D772D2D99587599), SPH_C64(0x60A06060FD4727FD),
+	SPH_C64(0x72967272A7C5B7A7), SPH_C64(0x93A89393E57FECE5),
+	SPH_C64(0x394B3939DDECD5DD), SPH_C64(0x0818080828484028),
+	SPH_C64(0x83988383B5EF6CB5), SPH_C64(0x21632121A53415A5),
+	SPH_C64(0x5CE45C5C3186DA31), SPH_C64(0x87948787A1CB4CA1),
+	SPH_C64(0xB1CEB1B14F50E14F), SPH_C64(0xE03DE0E047B35347),
+	SPH_C64(0x0000000000000000), SPH_C64(0xC358C3C3E89556E8),
+	SPH_C64(0x123612125A82905A), SPH_C64(0x91AE9191EF6DFCEF),
+	SPH_C64(0x8A838A8A98AE2498), SPH_C64(0x020602020A12100A),
+	SPH_C64(0x1C241C1C6CFCE06C), SPH_C64(0xE637E6E659856359),
+	SPH_C64(0x45CF45454C57124C), SPH_C64(0xC25BC2C2ED9C5EED),
+	SPH_C64(0xC451C4C4F3AA6EF3), SPH_C64(0xFD1AFDFD2E46BB2E),
+	SPH_C64(0xBFDCBFBF792E9179), SPH_C64(0x44CC4444495E1A49),
+	SPH_C64(0xA1FEA1A11FC0611F), SPH_C64(0x4CD44C4C61165A61),
+	SPH_C64(0x33553333FFB685FF), SPH_C64(0xC552C5C5F6A366F6),
+	SPH_C64(0x84918484AED054AE), SPH_C64(0x23652323AF2605AF),
+	SPH_C64(0x7C847C7C91BBC791), SPH_C64(0xB0CDB0B04A59E94A),
+	SPH_C64(0x256F2525B11035B1), SPH_C64(0x153F151541BDA841),
+	SPH_C64(0x355F3535E180B5E1), SPH_C64(0x69BB6969D0066FD0),
+	SPH_C64(0xFF1CFFFF2454AB24), SPH_C64(0x94A19494FE40D4FE),
+	SPH_C64(0x4DD74D4D641F5264), SPH_C64(0x70907070ADD7A7AD),
+	SPH_C64(0xA2FBA2A210DB7910), SPH_C64(0xAFECAFAF29BE1129),
+	SPH_C64(0xCD4ACDCDDEEB26DE), SPH_C64(0xD667D6D6A928FEA9),
+	SPH_C64(0x6CB46C6CC12B47C1), SPH_C64(0xB7C4B7B75166D151),
+	SPH_C64(0xF815F8F83F6B933F), SPH_C64(0x091B09092D41482D),
+	SPH_C64(0xF308F3F31838CB18), SPH_C64(0x67A96767E6781FE6),
+	SPH_C64(0xA4F1A4A40EED490E), SPH_C64(0xEA23EAEA65E90365),
+	SPH_C64(0xEC29ECEC7BDF337B), SPH_C64(0xB6C7B6B6546FD954),
+	SPH_C64(0xD461D4D4A33AEEA3), SPH_C64(0xD26BD2D2BD0CDEBD),
+	SPH_C64(0x143C141444B4A044), SPH_C64(0x1E221E1E66EEF066),
+	SPH_C64(0xE13EE1E142BA5B42), SPH_C64(0x246C2424B4193DB4),
+	SPH_C64(0x38483838D8E5DDD8), SPH_C64(0xC657C6C6F9B87EF9),
+	SPH_C64(0xDB70DBDB904D9690), SPH_C64(0x4BDD4B4B7A29627A),
+	SPH_C64(0x7A8E7A7A8F8DF78F), SPH_C64(0x3A4E3A3AD2F7CDD2),
+	SPH_C64(0xDE7FDEDE8160BE81), SPH_C64(0x5EE25E5E3B94CA3B),
+	SPH_C64(0xDF7CDFDF8469B684), SPH_C64(0x95A29595FB49DCFB),
+	SPH_C64(0xFC19FCFC2B4FB32B), SPH_C64(0xAAE3AAAA38933938),
+	SPH_C64(0xD764D7D7AC21F6AC), SPH_C64(0xCE4FCECED1F03ED1),
+	SPH_C64(0x070907071B3F381B), SPH_C64(0x0F110F0F33777833),
+	SPH_C64(0x3D473D3DC9C8F5C9), SPH_C64(0x58E8585825A2FA25),
+	SPH_C64(0x9AB39A9AC83EA4C8), SPH_C64(0x98B59898C22CB4C2),
+	SPH_C64(0x9CB99C9CD60894D6), SPH_C64(0xF20BF2F21D31C31D),
+	SPH_C64(0xA7F4A7A701F65101), SPH_C64(0x1133111155998855),
+	SPH_C64(0x7E827E7E9BA9D79B), SPH_C64(0x8B808B8B9DA72C9D),
+	SPH_C64(0x43C5434352612252), SPH_C64(0x030503030F1B180F),
+	SPH_C64(0xE23BE2E24DA1434D), SPH_C64(0xDC79DCDC8B72AE8B),
+	SPH_C64(0xE532E5E5569E7B56), SPH_C64(0xB2CBB2B2404BF940),
+	SPH_C64(0x4ED24E4E6B044A6B), SPH_C64(0xC754C7C7FCB176FC),
+	SPH_C64(0x6DB76D6DC4224FC4), SPH_C64(0xE926E9E96AF21B6A),
+	SPH_C64(0x27692727BB0225BB), SPH_C64(0x40C040405D7A3A5D),
+	SPH_C64(0xD875D8D89F568E9F), SPH_C64(0x37593737EB92A5EB),
+	SPH_C64(0x92AB9292E076E4E0), SPH_C64(0x8F8C8F8F89830C89),
+	SPH_C64(0x0103010105090805), SPH_C64(0x1D271D1D69F5E869),
+	SPH_C64(0x53F5535302F1A202), SPH_C64(0x3E423E3EC6D3EDC6),
+	SPH_C64(0x59EB595920ABF220), SPH_C64(0xC15EC1C1E28746E2),
+	SPH_C64(0x4FD14F4F6E0D426E), SPH_C64(0x32563232FABF8DFA),
+	SPH_C64(0x163A16164EA6B04E), SPH_C64(0xFA13FAFA35798335),
+	SPH_C64(0x749C7474B9F387B9), SPH_C64(0xFB10FBFB30708B30),
+	SPH_C64(0x63A56363F25C3FF2), SPH_C64(0x9FBC9F9FD9138CD9),
+	SPH_C64(0x345C3434E489BDE4), SPH_C64(0x1A2E1A1A72CAD072),
+	SPH_C64(0x2A7E2A2A82674D82), SPH_C64(0x5AEE5A5A2FB0EA2F),
+	SPH_C64(0x8D8A8D8D83911C83), SPH_C64(0xC946C9C9CACF06CA),
+	SPH_C64(0xCF4CCFCFD4F936D4), SPH_C64(0xF607F6F60915E309),
+	SPH_C64(0x90AD9090EA64F4EA), SPH_C64(0x2878282888755D88),
+	SPH_C64(0x8885888892BC3492), SPH_C64(0x9BB09B9BCD37ACCD),
+	SPH_C64(0x31533131F5A495F5), SPH_C64(0x0E120E0E367E7036),
+	SPH_C64(0xBDDABDBD733C8173), SPH_C64(0x4ADE4A4A7F206A7F),
+	SPH_C64(0xE825E8E86FFB136F), SPH_C64(0x96A79696F452C4F4),
+	SPH_C64(0xA6F7A6A604FF5904), SPH_C64(0x0C140C0C3C6C603C),
+	SPH_C64(0xC845C8C8CFC60ECF), SPH_C64(0x798B79798096EF80),
+	SPH_C64(0xBCD9BCBC76358976), SPH_C64(0xBEDFBEBE7C27997C),
+	SPH_C64(0xEF2CEFEF74C42B74), SPH_C64(0x6EB26E6ECB3957CB),
+	SPH_C64(0x46CA4646434C0A43), SPH_C64(0x97A49797F15BCCF1),
+	SPH_C64(0x5BED5B5B2AB9E22A), SPH_C64(0xED2AEDED7ED63B7E),
+	SPH_C64(0x192B19197DD1C87D), SPH_C64(0xD976D9D99A5F869A),
+	SPH_C64(0xACE9ACAC26A50926), SPH_C64(0x99B69999C725BCC7),
+	SPH_C64(0xA8E5A8A832812932), SPH_C64(0x297B29298D7C558D),
+	SPH_C64(0x64AC6464E96307E9), SPH_C64(0x1F211F1F63E7F863),
+	SPH_C64(0xADEAADAD23AC0123), SPH_C64(0x55FF55551CC7921C),
+	SPH_C64(0x133513135F8B985F), SPH_C64(0xBBD0BBBB6D0AB16D),
+	SPH_C64(0xF704F7F70C1CEB0C), SPH_C64(0x6FB16F6FCE305FCE),
+	SPH_C64(0xB9D6B9B96718A167), SPH_C64(0x47C9474746450246),
+	SPH_C64(0x2F712F2F934A6593), SPH_C64(0xEE2FEEEE71CD2371),
+	SPH_C64(0xB8D5B8B86211A962), SPH_C64(0x7B8D7B7B8A84FF8A),
+	SPH_C64(0x8986898997B53C97), SPH_C64(0x30503030F0AD9DF0),
+	SPH_C64(0xD368D3D3B805D6B8), SPH_C64(0x7F817F7F9EA0DF9E),
+	SPH_C64(0x769A7676B3E197B3), SPH_C64(0x829B8282B0E664B0)
+};
+
+static const sph_u64 old0_T5[256] = {
+	SPH_C64(0xB86868D50F67D568), SPH_C64(0x6DD0D0B71ECEB7D0),
+	SPH_C64(0x20EBEB60E00B60EB), SPH_C64(0x7D2B2B876E45872B),
+	SPH_C64(0xD8484875327A7548), SPH_C64(0xBA9D9DD3019CD39D),
+	SPH_C64(0xBE6A6ADF1D77DF6A), SPH_C64(0x31E4E453977353E4),
+	SPH_C64(0x38E3E348A84B48E3), SPH_C64(0xF8A3A315D27115A3),
+	SPH_C64(0xFA565613DC8A1356), SPH_C64(0x9E8181BFFD7CBF81),
+	SPH_C64(0x877D7D94B2CF947D), SPH_C64(0x0EF1F1122ADB12F1),
+	SPH_C64(0x928585ABD95CAB85), SPH_C64(0xBF9E9EDC1A84DC9E),
+	SPH_C64(0x742C2C9C517D9C2C), SPH_C64(0x8F8E8E8C8A048C8E),
+	SPH_C64(0x887878859FE78578), SPH_C64(0x43CACAC5D41EC5CA),
+	SPH_C64(0x3917174BAFB84B17), SPH_C64(0xE6A9A937882137A9),
+	SPH_C64(0xA36161F84E2FF861), SPH_C64(0x62D5D5A633E6A6D5),
+	SPH_C64(0xE75D5D348FD2345D), SPH_C64(0x1D0B0B275358270B),
+	SPH_C64(0x898C8C869814868C), SPH_C64(0x443C3CCCC1FDCC3C),
+	SPH_C64(0x997777B6E89FB677), SPH_C64(0xF3515108E3B20851),
+	SPH_C64(0x662222AA2F0DAA22), SPH_C64(0xC6424257682A5742),
+	SPH_C64(0x413F3FC3DAE5C33F), SPH_C64(0xFC545419CE9A1954),
+	SPH_C64(0xC341415873325841), SPH_C64(0x9D8080BAF474BA80),
+	SPH_C64(0x49CCCCDBE22EDBCC), SPH_C64(0x978686A4C244A486),
+	SPH_C64(0xC8B3B34542F145B3), SPH_C64(0x28181878D8C07818),
+	SPH_C64(0x722E2E96436D962E), SPH_C64(0xF9575716D5821657),
+	SPH_C64(0x0A06061E36301E06), SPH_C64(0xA66262F75537F762),
+	SPH_C64(0x01F4F40307F303F4), SPH_C64(0x5A3636EE9BADEE36),
+	SPH_C64(0x6ED1D1B217C6B2D1), SPH_C64(0xBD6B6BDA147FDA6B),
+	SPH_C64(0x2D1B1B77C3D8771B), SPH_C64(0xAF6565EC6A0FEC65),
+	SPH_C64(0x9F7575BCFA8FBC75), SPH_C64(0x3010105090805010),
+	SPH_C64(0x73DADA95449E95DA), SPH_C64(0xDB4949703B727049),
+	SPH_C64(0x6A2626BE0B2DBE26), SPH_C64(0x16F9F93A629B3AF9),
+	SPH_C64(0x40CBCBC0DD16C0CB), SPH_C64(0xAA6666E37117E366),
+	SPH_C64(0x34E7E75C8C6B5CE7), SPH_C64(0xD3BABA6803B968BA),
+	SPH_C64(0xEFAEAE2CB7192CAE), SPH_C64(0xF050500DEABA0D50),
+	SPH_C64(0xF6525207F8AA0752), SPH_C64(0xE0ABAB3D9A313DAB),
+	SPH_C64(0x0F0505112D281105), SPH_C64(0x0DF0F01723D317F0),
+	SPH_C64(0x170D0D396568390D), SPH_C64(0x957373A2CCBFA273),
+	SPH_C64(0x4D3B3BD7FEC5D73B), SPH_C64(0x0C04041424201404),
+	SPH_C64(0x602020A03D1DA020), SPH_C64(0x1FFEFE215DA321FE),
+	SPH_C64(0x7ADDDD8E7BA68EDD), SPH_C64(0x02F5F5060EFB06F5),
+	SPH_C64(0xC1B4B45E7DC95EB4), SPH_C64(0xE15F5F3E9DC23E5F),
+	SPH_C64(0x1E0A0A225A50220A), SPH_C64(0xC2B5B55B74C15BB5),
+	SPH_C64(0x5DC0C0E78E4EE7C0), SPH_C64(0xFDA0A01AC9691AA0),
+	SPH_C64(0x937171A8DEAFA871), SPH_C64(0xF2A5A50BE4410BA5),
+	SPH_C64(0x772D2D995875992D), SPH_C64(0xA06060FD4727FD60),
+	SPH_C64(0x967272A7C5B7A772), SPH_C64(0xA89393E57FECE593),
+	SPH_C64(0x4B3939DDECD5DD39), SPH_C64(0x1808082848402808),
+	SPH_C64(0x988383B5EF6CB583), SPH_C64(0x632121A53415A521),
+	SPH_C64(0xE45C5C3186DA315C), SPH_C64(0x948787A1CB4CA187),
+	SPH_C64(0xCEB1B14F50E14FB1), SPH_C64(0x3DE0E047B35347E0),
+	SPH_C64(0x0000000000000000), SPH_C64(0x58C3C3E89556E8C3),
+	SPH_C64(0x3612125A82905A12), SPH_C64(0xAE9191EF6DFCEF91),
+	SPH_C64(0x838A8A98AE24988A), SPH_C64(0x0602020A12100A02),
+	SPH_C64(0x241C1C6CFCE06C1C), SPH_C64(0x37E6E659856359E6),
+	SPH_C64(0xCF45454C57124C45), SPH_C64(0x5BC2C2ED9C5EEDC2),
+	SPH_C64(0x51C4C4F3AA6EF3C4), SPH_C64(0x1AFDFD2E46BB2EFD),
+	SPH_C64(0xDCBFBF792E9179BF), SPH_C64(0xCC4444495E1A4944),
+	SPH_C64(0xFEA1A11FC0611FA1), SPH_C64(0xD44C4C61165A614C),
+	SPH_C64(0x553333FFB685FF33), SPH_C64(0x52C5C5F6A366F6C5),
+	SPH_C64(0x918484AED054AE84), SPH_C64(0x652323AF2605AF23),
+	SPH_C64(0x847C7C91BBC7917C), SPH_C64(0xCDB0B04A59E94AB0),
+	SPH_C64(0x6F2525B11035B125), SPH_C64(0x3F151541BDA84115),
+	SPH_C64(0x5F3535E180B5E135), SPH_C64(0xBB6969D0066FD069),
+	SPH_C64(0x1CFFFF2454AB24FF), SPH_C64(0xA19494FE40D4FE94),
+	SPH_C64(0xD74D4D641F52644D), SPH_C64(0x907070ADD7A7AD70),
+	SPH_C64(0xFBA2A210DB7910A2), SPH_C64(0xECAFAF29BE1129AF),
+	SPH_C64(0x4ACDCDDEEB26DECD), SPH_C64(0x67D6D6A928FEA9D6),
+	SPH_C64(0xB46C6CC12B47C16C), SPH_C64(0xC4B7B75166D151B7),
+	SPH_C64(0x15F8F83F6B933FF8), SPH_C64(0x1B09092D41482D09),
+	SPH_C64(0x08F3F31838CB18F3), SPH_C64(0xA96767E6781FE667),
+	SPH_C64(0xF1A4A40EED490EA4), SPH_C64(0x23EAEA65E90365EA),
+	SPH_C64(0x29ECEC7BDF337BEC), SPH_C64(0xC7B6B6546FD954B6),
+	SPH_C64(0x61D4D4A33AEEA3D4), SPH_C64(0x6BD2D2BD0CDEBDD2),
+	SPH_C64(0x3C141444B4A04414), SPH_C64(0x221E1E66EEF0661E),
+	SPH_C64(0x3EE1E142BA5B42E1), SPH_C64(0x6C2424B4193DB424),
+	SPH_C64(0x483838D8E5DDD838), SPH_C64(0x57C6C6F9B87EF9C6),
+	SPH_C64(0x70DBDB904D9690DB), SPH_C64(0xDD4B4B7A29627A4B),
+	SPH_C64(0x8E7A7A8F8DF78F7A), SPH_C64(0x4E3A3AD2F7CDD23A),
+	SPH_C64(0x7FDEDE8160BE81DE), SPH_C64(0xE25E5E3B94CA3B5E),
+	SPH_C64(0x7CDFDF8469B684DF), SPH_C64(0xA29595FB49DCFB95),
+	SPH_C64(0x19FCFC2B4FB32BFC), SPH_C64(0xE3AAAA38933938AA),
+	SPH_C64(0x64D7D7AC21F6ACD7), SPH_C64(0x4FCECED1F03ED1CE),
+	SPH_C64(0x0907071B3F381B07), SPH_C64(0x110F0F337778330F),
+	SPH_C64(0x473D3DC9C8F5C93D), SPH_C64(0xE8585825A2FA2558),
+	SPH_C64(0xB39A9AC83EA4C89A), SPH_C64(0xB59898C22CB4C298),
+	SPH_C64(0xB99C9CD60894D69C), SPH_C64(0x0BF2F21D31C31DF2),
+	SPH_C64(0xF4A7A701F65101A7), SPH_C64(0x3311115599885511),
+	SPH_C64(0x827E7E9BA9D79B7E), SPH_C64(0x808B8B9DA72C9D8B),
+	SPH_C64(0xC543435261225243), SPH_C64(0x0503030F1B180F03),
+	SPH_C64(0x3BE2E24DA1434DE2), SPH_C64(0x79DCDC8B72AE8BDC),
+	SPH_C64(0x32E5E5569E7B56E5), SPH_C64(0xCBB2B2404BF940B2),
+	SPH_C64(0xD24E4E6B044A6B4E), SPH_C64(0x54C7C7FCB176FCC7),
+	SPH_C64(0xB76D6DC4224FC46D), SPH_C64(0x26E9E96AF21B6AE9),
+	SPH_C64(0x692727BB0225BB27), SPH_C64(0xC040405D7A3A5D40),
+	SPH_C64(0x75D8D89F568E9FD8), SPH_C64(0x593737EB92A5EB37),
+	SPH_C64(0xAB9292E076E4E092), SPH_C64(0x8C8F8F89830C898F),
+	SPH_C64(0x0301010509080501), SPH_C64(0x271D1D69F5E8691D),
+	SPH_C64(0xF5535302F1A20253), SPH_C64(0x423E3EC6D3EDC63E),
+	SPH_C64(0xEB595920ABF22059), SPH_C64(0x5EC1C1E28746E2C1),
+	SPH_C64(0xD14F4F6E0D426E4F), SPH_C64(0x563232FABF8DFA32),
+	SPH_C64(0x3A16164EA6B04E16), SPH_C64(0x13FAFA35798335FA),
+	SPH_C64(0x9C7474B9F387B974), SPH_C64(0x10FBFB30708B30FB),
+	SPH_C64(0xA56363F25C3FF263), SPH_C64(0xBC9F9FD9138CD99F),
+	SPH_C64(0x5C3434E489BDE434), SPH_C64(0x2E1A1A72CAD0721A),
+	SPH_C64(0x7E2A2A82674D822A), SPH_C64(0xEE5A5A2FB0EA2F5A),
+	SPH_C64(0x8A8D8D83911C838D), SPH_C64(0x46C9C9CACF06CAC9),
+	SPH_C64(0x4CCFCFD4F936D4CF), SPH_C64(0x07F6F60915E309F6),
+	SPH_C64(0xAD9090EA64F4EA90), SPH_C64(0x78282888755D8828),
+	SPH_C64(0x85888892BC349288), SPH_C64(0xB09B9BCD37ACCD9B),
+	SPH_C64(0x533131F5A495F531), SPH_C64(0x120E0E367E70360E),
+	SPH_C64(0xDABDBD733C8173BD), SPH_C64(0xDE4A4A7F206A7F4A),
+	SPH_C64(0x25E8E86FFB136FE8), SPH_C64(0xA79696F452C4F496),
+	SPH_C64(0xF7A6A604FF5904A6), SPH_C64(0x140C0C3C6C603C0C),
+	SPH_C64(0x45C8C8CFC60ECFC8), SPH_C64(0x8B79798096EF8079),
+	SPH_C64(0xD9BCBC76358976BC), SPH_C64(0xDFBEBE7C27997CBE),
+	SPH_C64(0x2CEFEF74C42B74EF), SPH_C64(0xB26E6ECB3957CB6E),
+	SPH_C64(0xCA4646434C0A4346), SPH_C64(0xA49797F15BCCF197),
+	SPH_C64(0xED5B5B2AB9E22A5B), SPH_C64(0x2AEDED7ED63B7EED),
+	SPH_C64(0x2B19197DD1C87D19), SPH_C64(0x76D9D99A5F869AD9),
+	SPH_C64(0xE9ACAC26A50926AC), SPH_C64(0xB69999C725BCC799),
+	SPH_C64(0xE5A8A832812932A8), SPH_C64(0x7B29298D7C558D29),
+	SPH_C64(0xAC6464E96307E964), SPH_C64(0x211F1F63E7F8631F),
+	SPH_C64(0xEAADAD23AC0123AD), SPH_C64(0xFF55551CC7921C55),
+	SPH_C64(0x3513135F8B985F13), SPH_C64(0xD0BBBB6D0AB16DBB),
+	SPH_C64(0x04F7F70C1CEB0CF7), SPH_C64(0xB16F6FCE305FCE6F),
+	SPH_C64(0xD6B9B96718A167B9), SPH_C64(0xC947474645024647),
+	SPH_C64(0x712F2F934A65932F), SPH_C64(0x2FEEEE71CD2371EE),
+	SPH_C64(0xD5B8B86211A962B8), SPH_C64(0x8D7B7B8A84FF8A7B),
+	SPH_C64(0x86898997B53C9789), SPH_C64(0x503030F0AD9DF030),
+	SPH_C64(0x68D3D3B805D6B8D3), SPH_C64(0x817F7F9EA0DF9E7F),
+	SPH_C64(0x9A7676B3E197B376), SPH_C64(0x9B8282B0E664B082)
+};
+
+static const sph_u64 old0_T6[256] = {
+	SPH_C64(0x6868D50F67D568B8), SPH_C64(0xD0D0B71ECEB7D06D),
+	SPH_C64(0xEBEB60E00B60EB20), SPH_C64(0x2B2B876E45872B7D),
+	SPH_C64(0x484875327A7548D8), SPH_C64(0x9D9DD3019CD39DBA),
+	SPH_C64(0x6A6ADF1D77DF6ABE), SPH_C64(0xE4E453977353E431),
+	SPH_C64(0xE3E348A84B48E338), SPH_C64(0xA3A315D27115A3F8),
+	SPH_C64(0x565613DC8A1356FA), SPH_C64(0x8181BFFD7CBF819E),
+	SPH_C64(0x7D7D94B2CF947D87), SPH_C64(0xF1F1122ADB12F10E),
+	SPH_C64(0x8585ABD95CAB8592), SPH_C64(0x9E9EDC1A84DC9EBF),
+	SPH_C64(0x2C2C9C517D9C2C74), SPH_C64(0x8E8E8C8A048C8E8F),
+	SPH_C64(0x7878859FE7857888), SPH_C64(0xCACAC5D41EC5CA43),
+	SPH_C64(0x17174BAFB84B1739), SPH_C64(0xA9A937882137A9E6),
+	SPH_C64(0x6161F84E2FF861A3), SPH_C64(0xD5D5A633E6A6D562),
+	SPH_C64(0x5D5D348FD2345DE7), SPH_C64(0x0B0B275358270B1D),
+	SPH_C64(0x8C8C869814868C89), SPH_C64(0x3C3CCCC1FDCC3C44),
+	SPH_C64(0x7777B6E89FB67799), SPH_C64(0x515108E3B20851F3),
+	SPH_C64(0x2222AA2F0DAA2266), SPH_C64(0x424257682A5742C6),
+	SPH_C64(0x3F3FC3DAE5C33F41), SPH_C64(0x545419CE9A1954FC),
+	SPH_C64(0x41415873325841C3), SPH_C64(0x8080BAF474BA809D),
+	SPH_C64(0xCCCCDBE22EDBCC49), SPH_C64(0x8686A4C244A48697),
+	SPH_C64(0xB3B34542F145B3C8), SPH_C64(0x181878D8C0781828),
+	SPH_C64(0x2E2E96436D962E72), SPH_C64(0x575716D5821657F9),
+	SPH_C64(0x06061E36301E060A), SPH_C64(0x6262F75537F762A6),
+	SPH_C64(0xF4F40307F303F401), SPH_C64(0x3636EE9BADEE365A),
+	SPH_C64(0xD1D1B217C6B2D16E), SPH_C64(0x6B6BDA147FDA6BBD),
+	SPH_C64(0x1B1B77C3D8771B2D), SPH_C64(0x6565EC6A0FEC65AF),
+	SPH_C64(0x7575BCFA8FBC759F), SPH_C64(0x1010509080501030),
+	SPH_C64(0xDADA95449E95DA73), SPH_C64(0x4949703B727049DB),
+	SPH_C64(0x2626BE0B2DBE266A), SPH_C64(0xF9F93A629B3AF916),
+	SPH_C64(0xCBCBC0DD16C0CB40), SPH_C64(0x6666E37117E366AA),
+	SPH_C64(0xE7E75C8C6B5CE734), SPH_C64(0xBABA6803B968BAD3),
+	SPH_C64(0xAEAE2CB7192CAEEF), SPH_C64(0x50500DEABA0D50F0),
+	SPH_C64(0x525207F8AA0752F6), SPH_C64(0xABAB3D9A313DABE0),
+	SPH_C64(0x0505112D2811050F), SPH_C64(0xF0F01723D317F00D),
+	SPH_C64(0x0D0D396568390D17), SPH_C64(0x7373A2CCBFA27395),
+	SPH_C64(0x3B3BD7FEC5D73B4D), SPH_C64(0x040414242014040C),
+	SPH_C64(0x2020A03D1DA02060), SPH_C64(0xFEFE215DA321FE1F),
+	SPH_C64(0xDDDD8E7BA68EDD7A), SPH_C64(0xF5F5060EFB06F502),
+	SPH_C64(0xB4B45E7DC95EB4C1), SPH_C64(0x5F5F3E9DC23E5FE1),
+	SPH_C64(0x0A0A225A50220A1E), SPH_C64(0xB5B55B74C15BB5C2),
+	SPH_C64(0xC0C0E78E4EE7C05D), SPH_C64(0xA0A01AC9691AA0FD),
+	SPH_C64(0x7171A8DEAFA87193), SPH_C64(0xA5A50BE4410BA5F2),
+	SPH_C64(0x2D2D995875992D77), SPH_C64(0x6060FD4727FD60A0),
+	SPH_C64(0x7272A7C5B7A77296), SPH_C64(0x9393E57FECE593A8),
+	SPH_C64(0x3939DDECD5DD394B), SPH_C64(0x0808284840280818),
+	SPH_C64(0x8383B5EF6CB58398), SPH_C64(0x2121A53415A52163),
+	SPH_C64(0x5C5C3186DA315CE4), SPH_C64(0x8787A1CB4CA18794),
+	SPH_C64(0xB1B14F50E14FB1CE), SPH_C64(0xE0E047B35347E03D),
+	SPH_C64(0x0000000000000000), SPH_C64(0xC3C3E89556E8C358),
+	SPH_C64(0x12125A82905A1236), SPH_C64(0x9191EF6DFCEF91AE),
+	SPH_C64(0x8A8A98AE24988A83), SPH_C64(0x02020A12100A0206),
+	SPH_C64(0x1C1C6CFCE06C1C24), SPH_C64(0xE6E659856359E637),
+	SPH_C64(0x45454C57124C45CF), SPH_C64(0xC2C2ED9C5EEDC25B),
+	SPH_C64(0xC4C4F3AA6EF3C451), SPH_C64(0xFDFD2E46BB2EFD1A),
+	SPH_C64(0xBFBF792E9179BFDC), SPH_C64(0x4444495E1A4944CC),
+	SPH_C64(0xA1A11FC0611FA1FE), SPH_C64(0x4C4C61165A614CD4),
+	SPH_C64(0x3333FFB685FF3355), SPH_C64(0xC5C5F6A366F6C552),
+	SPH_C64(0x8484AED054AE8491), SPH_C64(0x2323AF2605AF2365),
+	SPH_C64(0x7C7C91BBC7917C84), SPH_C64(0xB0B04A59E94AB0CD),
+	SPH_C64(0x2525B11035B1256F), SPH_C64(0x151541BDA841153F),
+	SPH_C64(0x3535E180B5E1355F), SPH_C64(0x6969D0066FD069BB),
+	SPH_C64(0xFFFF2454AB24FF1C), SPH_C64(0x9494FE40D4FE94A1),
+	SPH_C64(0x4D4D641F52644DD7), SPH_C64(0x7070ADD7A7AD7090),
+	SPH_C64(0xA2A210DB7910A2FB), SPH_C64(0xAFAF29BE1129AFEC),
+	SPH_C64(0xCDCDDEEB26DECD4A), SPH_C64(0xD6D6A928FEA9D667),
+	SPH_C64(0x6C6CC12B47C16CB4), SPH_C64(0xB7B75166D151B7C4),
+	SPH_C64(0xF8F83F6B933FF815), SPH_C64(0x09092D41482D091B),
+	SPH_C64(0xF3F31838CB18F308), SPH_C64(0x6767E6781FE667A9),
+	SPH_C64(0xA4A40EED490EA4F1), SPH_C64(0xEAEA65E90365EA23),
+	SPH_C64(0xECEC7BDF337BEC29), SPH_C64(0xB6B6546FD954B6C7),
+	SPH_C64(0xD4D4A33AEEA3D461), SPH_C64(0xD2D2BD0CDEBDD26B),
+	SPH_C64(0x141444B4A044143C), SPH_C64(0x1E1E66EEF0661E22),
+	SPH_C64(0xE1E142BA5B42E13E), SPH_C64(0x2424B4193DB4246C),
+	SPH_C64(0x3838D8E5DDD83848), SPH_C64(0xC6C6F9B87EF9C657),
+	SPH_C64(0xDBDB904D9690DB70), SPH_C64(0x4B4B7A29627A4BDD),
+	SPH_C64(0x7A7A8F8DF78F7A8E), SPH_C64(0x3A3AD2F7CDD23A4E),
+	SPH_C64(0xDEDE8160BE81DE7F), SPH_C64(0x5E5E3B94CA3B5EE2),
+	SPH_C64(0xDFDF8469B684DF7C), SPH_C64(0x9595FB49DCFB95A2),
+	SPH_C64(0xFCFC2B4FB32BFC19), SPH_C64(0xAAAA38933938AAE3),
+	SPH_C64(0xD7D7AC21F6ACD764), SPH_C64(0xCECED1F03ED1CE4F),
+	SPH_C64(0x07071B3F381B0709), SPH_C64(0x0F0F337778330F11),
+	SPH_C64(0x3D3DC9C8F5C93D47), SPH_C64(0x585825A2FA2558E8),
+	SPH_C64(0x9A9AC83EA4C89AB3), SPH_C64(0x9898C22CB4C298B5),
+	SPH_C64(0x9C9CD60894D69CB9), SPH_C64(0xF2F21D31C31DF20B),
+	SPH_C64(0xA7A701F65101A7F4), SPH_C64(0x1111559988551133),
+	SPH_C64(0x7E7E9BA9D79B7E82), SPH_C64(0x8B8B9DA72C9D8B80),
+	SPH_C64(0x43435261225243C5), SPH_C64(0x03030F1B180F0305),
+	SPH_C64(0xE2E24DA1434DE23B), SPH_C64(0xDCDC8B72AE8BDC79),
+	SPH_C64(0xE5E5569E7B56E532), SPH_C64(0xB2B2404BF940B2CB),
+	SPH_C64(0x4E4E6B044A6B4ED2), SPH_C64(0xC7C7FCB176FCC754),
+	SPH_C64(0x6D6DC4224FC46DB7), SPH_C64(0xE9E96AF21B6AE926),
+	SPH_C64(0x2727BB0225BB2769), SPH_C64(0x40405D7A3A5D40C0),
+	SPH_C64(0xD8D89F568E9FD875), SPH_C64(0x3737EB92A5EB3759),
+	SPH_C64(0x9292E076E4E092AB), SPH_C64(0x8F8F89830C898F8C),
+	SPH_C64(0x0101050908050103), SPH_C64(0x1D1D69F5E8691D27),
+	SPH_C64(0x535302F1A20253F5), SPH_C64(0x3E3EC6D3EDC63E42),
+	SPH_C64(0x595920ABF22059EB), SPH_C64(0xC1C1E28746E2C15E),
+	SPH_C64(0x4F4F6E0D426E4FD1), SPH_C64(0x3232FABF8DFA3256),
+	SPH_C64(0x16164EA6B04E163A), SPH_C64(0xFAFA35798335FA13),
+	SPH_C64(0x7474B9F387B9749C), SPH_C64(0xFBFB30708B30FB10),
+	SPH_C64(0x6363F25C3FF263A5), SPH_C64(0x9F9FD9138CD99FBC),
+	SPH_C64(0x3434E489BDE4345C), SPH_C64(0x1A1A72CAD0721A2E),
+	SPH_C64(0x2A2A82674D822A7E), SPH_C64(0x5A5A2FB0EA2F5AEE),
+	SPH_C64(0x8D8D83911C838D8A), SPH_C64(0xC9C9CACF06CAC946),
+	SPH_C64(0xCFCFD4F936D4CF4C), SPH_C64(0xF6F60915E309F607),
+	SPH_C64(0x9090EA64F4EA90AD), SPH_C64(0x282888755D882878),
+	SPH_C64(0x888892BC34928885), SPH_C64(0x9B9BCD37ACCD9BB0),
+	SPH_C64(0x3131F5A495F53153), SPH_C64(0x0E0E367E70360E12),
+	SPH_C64(0xBDBD733C8173BDDA), SPH_C64(0x4A4A7F206A7F4ADE),
+	SPH_C64(0xE8E86FFB136FE825), SPH_C64(0x9696F452C4F496A7),
+	SPH_C64(0xA6A604FF5904A6F7), SPH_C64(0x0C0C3C6C603C0C14),
+	SPH_C64(0xC8C8CFC60ECFC845), SPH_C64(0x79798096EF80798B),
+	SPH_C64(0xBCBC76358976BCD9), SPH_C64(0xBEBE7C27997CBEDF),
+	SPH_C64(0xEFEF74C42B74EF2C), SPH_C64(0x6E6ECB3957CB6EB2),
+	SPH_C64(0x4646434C0A4346CA), SPH_C64(0x9797F15BCCF197A4),
+	SPH_C64(0x5B5B2AB9E22A5BED), SPH_C64(0xEDED7ED63B7EED2A),
+	SPH_C64(0x19197DD1C87D192B), SPH_C64(0xD9D99A5F869AD976),
+	SPH_C64(0xACAC26A50926ACE9), SPH_C64(0x9999C725BCC799B6),
+	SPH_C64(0xA8A832812932A8E5), SPH_C64(0x29298D7C558D297B),
+	SPH_C64(0x6464E96307E964AC), SPH_C64(0x1F1F63E7F8631F21),
+	SPH_C64(0xADAD23AC0123ADEA), SPH_C64(0x55551CC7921C55FF),
+	SPH_C64(0x13135F8B985F1335), SPH_C64(0xBBBB6D0AB16DBBD0),
+	SPH_C64(0xF7F70C1CEB0CF704), SPH_C64(0x6F6FCE305FCE6FB1),
+	SPH_C64(0xB9B96718A167B9D6), SPH_C64(0x47474645024647C9),
+	SPH_C64(0x2F2F934A65932F71), SPH_C64(0xEEEE71CD2371EE2F),
+	SPH_C64(0xB8B86211A962B8D5), SPH_C64(0x7B7B8A84FF8A7B8D),
+	SPH_C64(0x898997B53C978986), SPH_C64(0x3030F0AD9DF03050),
+	SPH_C64(0xD3D3B805D6B8D368), SPH_C64(0x7F7F9EA0DF9E7F81),
+	SPH_C64(0x7676B3E197B3769A), SPH_C64(0x8282B0E664B0829B)
+};
+
+static const sph_u64 old0_T7[256] = {
+	SPH_C64(0x68D50F67D568B868), SPH_C64(0xD0B71ECEB7D06DD0),
+	SPH_C64(0xEB60E00B60EB20EB), SPH_C64(0x2B876E45872B7D2B),
+	SPH_C64(0x4875327A7548D848), SPH_C64(0x9DD3019CD39DBA9D),
+	SPH_C64(0x6ADF1D77DF6ABE6A), SPH_C64(0xE453977353E431E4),
+	SPH_C64(0xE348A84B48E338E3), SPH_C64(0xA315D27115A3F8A3),
+	SPH_C64(0x5613DC8A1356FA56), SPH_C64(0x81BFFD7CBF819E81),
+	SPH_C64(0x7D94B2CF947D877D), SPH_C64(0xF1122ADB12F10EF1),
+	SPH_C64(0x85ABD95CAB859285), SPH_C64(0x9EDC1A84DC9EBF9E),
+	SPH_C64(0x2C9C517D9C2C742C), SPH_C64(0x8E8C8A048C8E8F8E),
+	SPH_C64(0x78859FE785788878), SPH_C64(0xCAC5D41EC5CA43CA),
+	SPH_C64(0x174BAFB84B173917), SPH_C64(0xA937882137A9E6A9),
+	SPH_C64(0x61F84E2FF861A361), SPH_C64(0xD5A633E6A6D562D5),
+	SPH_C64(0x5D348FD2345DE75D), SPH_C64(0x0B275358270B1D0B),
+	SPH_C64(0x8C869814868C898C), SPH_C64(0x3CCCC1FDCC3C443C),
+	SPH_C64(0x77B6E89FB6779977), SPH_C64(0x5108E3B20851F351),
+	SPH_C64(0x22AA2F0DAA226622), SPH_C64(0x4257682A5742C642),
+	SPH_C64(0x3FC3DAE5C33F413F), SPH_C64(0x5419CE9A1954FC54),
+	SPH_C64(0x415873325841C341), SPH_C64(0x80BAF474BA809D80),
+	SPH_C64(0xCCDBE22EDBCC49CC), SPH_C64(0x86A4C244A4869786),
+	SPH_C64(0xB34542F145B3C8B3), SPH_C64(0x1878D8C078182818),
+	SPH_C64(0x2E96436D962E722E), SPH_C64(0x5716D5821657F957),
+	SPH_C64(0x061E36301E060A06), SPH_C64(0x62F75537F762A662),
+	SPH_C64(0xF40307F303F401F4), SPH_C64(0x36EE9BADEE365A36),
+	SPH_C64(0xD1B217C6B2D16ED1), SPH_C64(0x6BDA147FDA6BBD6B),
+	SPH_C64(0x1B77C3D8771B2D1B), SPH_C64(0x65EC6A0FEC65AF65),
+	SPH_C64(0x75BCFA8FBC759F75), SPH_C64(0x1050908050103010),
+	SPH_C64(0xDA95449E95DA73DA), SPH_C64(0x49703B727049DB49),
+	SPH_C64(0x26BE0B2DBE266A26), SPH_C64(0xF93A629B3AF916F9),
+	SPH_C64(0xCBC0DD16C0CB40CB), SPH_C64(0x66E37117E366AA66),
+	SPH_C64(0xE75C8C6B5CE734E7), SPH_C64(0xBA6803B968BAD3BA),
+	SPH_C64(0xAE2CB7192CAEEFAE), SPH_C64(0x500DEABA0D50F050),
+	SPH_C64(0x5207F8AA0752F652), SPH_C64(0xAB3D9A313DABE0AB),
+	SPH_C64(0x05112D2811050F05), SPH_C64(0xF01723D317F00DF0),
+	SPH_C64(0x0D396568390D170D), SPH_C64(0x73A2CCBFA2739573),
+	SPH_C64(0x3BD7FEC5D73B4D3B), SPH_C64(0x0414242014040C04),
+	SPH_C64(0x20A03D1DA0206020), SPH_C64(0xFE215DA321FE1FFE),
+	SPH_C64(0xDD8E7BA68EDD7ADD), SPH_C64(0xF5060EFB06F502F5),
+	SPH_C64(0xB45E7DC95EB4C1B4), SPH_C64(0x5F3E9DC23E5FE15F),
+	SPH_C64(0x0A225A50220A1E0A), SPH_C64(0xB55B74C15BB5C2B5),
+	SPH_C64(0xC0E78E4EE7C05DC0), SPH_C64(0xA01AC9691AA0FDA0),
+	SPH_C64(0x71A8DEAFA8719371), SPH_C64(0xA50BE4410BA5F2A5),
+	SPH_C64(0x2D995875992D772D), SPH_C64(0x60FD4727FD60A060),
+	SPH_C64(0x72A7C5B7A7729672), SPH_C64(0x93E57FECE593A893),
+	SPH_C64(0x39DDECD5DD394B39), SPH_C64(0x0828484028081808),
+	SPH_C64(0x83B5EF6CB5839883), SPH_C64(0x21A53415A5216321),
+	SPH_C64(0x5C3186DA315CE45C), SPH_C64(0x87A1CB4CA1879487),
+	SPH_C64(0xB14F50E14FB1CEB1), SPH_C64(0xE047B35347E03DE0),
+	SPH_C64(0x0000000000000000), SPH_C64(0xC3E89556E8C358C3),
+	SPH_C64(0x125A82905A123612), SPH_C64(0x91EF6DFCEF91AE91),
+	SPH_C64(0x8A98AE24988A838A), SPH_C64(0x020A12100A020602),
+	SPH_C64(0x1C6CFCE06C1C241C), SPH_C64(0xE659856359E637E6),
+	SPH_C64(0x454C57124C45CF45), SPH_C64(0xC2ED9C5EEDC25BC2),
+	SPH_C64(0xC4F3AA6EF3C451C4), SPH_C64(0xFD2E46BB2EFD1AFD),
+	SPH_C64(0xBF792E9179BFDCBF), SPH_C64(0x44495E1A4944CC44),
+	SPH_C64(0xA11FC0611FA1FEA1), SPH_C64(0x4C61165A614CD44C),
+	SPH_C64(0x33FFB685FF335533), SPH_C64(0xC5F6A366F6C552C5),
+	SPH_C64(0x84AED054AE849184), SPH_C64(0x23AF2605AF236523),
+	SPH_C64(0x7C91BBC7917C847C), SPH_C64(0xB04A59E94AB0CDB0),
+	SPH_C64(0x25B11035B1256F25), SPH_C64(0x1541BDA841153F15),
+	SPH_C64(0x35E180B5E1355F35), SPH_C64(0x69D0066FD069BB69),
+	SPH_C64(0xFF2454AB24FF1CFF), SPH_C64(0x94FE40D4FE94A194),
+	SPH_C64(0x4D641F52644DD74D), SPH_C64(0x70ADD7A7AD709070),
+	SPH_C64(0xA210DB7910A2FBA2), SPH_C64(0xAF29BE1129AFECAF),
+	SPH_C64(0xCDDEEB26DECD4ACD), SPH_C64(0xD6A928FEA9D667D6),
+	SPH_C64(0x6CC12B47C16CB46C), SPH_C64(0xB75166D151B7C4B7),
+	SPH_C64(0xF83F6B933FF815F8), SPH_C64(0x092D41482D091B09),
+	SPH_C64(0xF31838CB18F308F3), SPH_C64(0x67E6781FE667A967),
+	SPH_C64(0xA40EED490EA4F1A4), SPH_C64(0xEA65E90365EA23EA),
+	SPH_C64(0xEC7BDF337BEC29EC), SPH_C64(0xB6546FD954B6C7B6),
+	SPH_C64(0xD4A33AEEA3D461D4), SPH_C64(0xD2BD0CDEBDD26BD2),
+	SPH_C64(0x1444B4A044143C14), SPH_C64(0x1E66EEF0661E221E),
+	SPH_C64(0xE142BA5B42E13EE1), SPH_C64(0x24B4193DB4246C24),
+	SPH_C64(0x38D8E5DDD8384838), SPH_C64(0xC6F9B87EF9C657C6),
+	SPH_C64(0xDB904D9690DB70DB), SPH_C64(0x4B7A29627A4BDD4B),
+	SPH_C64(0x7A8F8DF78F7A8E7A), SPH_C64(0x3AD2F7CDD23A4E3A),
+	SPH_C64(0xDE8160BE81DE7FDE), SPH_C64(0x5E3B94CA3B5EE25E),
+	SPH_C64(0xDF8469B684DF7CDF), SPH_C64(0x95FB49DCFB95A295),
+	SPH_C64(0xFC2B4FB32BFC19FC), SPH_C64(0xAA38933938AAE3AA),
+	SPH_C64(0xD7AC21F6ACD764D7), SPH_C64(0xCED1F03ED1CE4FCE),
+	SPH_C64(0x071B3F381B070907), SPH_C64(0x0F337778330F110F),
+	SPH_C64(0x3DC9C8F5C93D473D), SPH_C64(0x5825A2FA2558E858),
+	SPH_C64(0x9AC83EA4C89AB39A), SPH_C64(0x98C22CB4C298B598),
+	SPH_C64(0x9CD60894D69CB99C), SPH_C64(0xF21D31C31DF20BF2),
+	SPH_C64(0xA701F65101A7F4A7), SPH_C64(0x1155998855113311),
+	SPH_C64(0x7E9BA9D79B7E827E), SPH_C64(0x8B9DA72C9D8B808B),
+	SPH_C64(0x435261225243C543), SPH_C64(0x030F1B180F030503),
+	SPH_C64(0xE24DA1434DE23BE2), SPH_C64(0xDC8B72AE8BDC79DC),
+	SPH_C64(0xE5569E7B56E532E5), SPH_C64(0xB2404BF940B2CBB2),
+	SPH_C64(0x4E6B044A6B4ED24E), SPH_C64(0xC7FCB176FCC754C7),
+	SPH_C64(0x6DC4224FC46DB76D), SPH_C64(0xE96AF21B6AE926E9),
+	SPH_C64(0x27BB0225BB276927), SPH_C64(0x405D7A3A5D40C040),
+	SPH_C64(0xD89F568E9FD875D8), SPH_C64(0x37EB92A5EB375937),
+	SPH_C64(0x92E076E4E092AB92), SPH_C64(0x8F89830C898F8C8F),
+	SPH_C64(0x0105090805010301), SPH_C64(0x1D69F5E8691D271D),
+	SPH_C64(0x5302F1A20253F553), SPH_C64(0x3EC6D3EDC63E423E),
+	SPH_C64(0x5920ABF22059EB59), SPH_C64(0xC1E28746E2C15EC1),
+	SPH_C64(0x4F6E0D426E4FD14F), SPH_C64(0x32FABF8DFA325632),
+	SPH_C64(0x164EA6B04E163A16), SPH_C64(0xFA35798335FA13FA),
+	SPH_C64(0x74B9F387B9749C74), SPH_C64(0xFB30708B30FB10FB),
+	SPH_C64(0x63F25C3FF263A563), SPH_C64(0x9FD9138CD99FBC9F),
+	SPH_C64(0x34E489BDE4345C34), SPH_C64(0x1A72CAD0721A2E1A),
+	SPH_C64(0x2A82674D822A7E2A), SPH_C64(0x5A2FB0EA2F5AEE5A),
+	SPH_C64(0x8D83911C838D8A8D), SPH_C64(0xC9CACF06CAC946C9),
+	SPH_C64(0xCFD4F936D4CF4CCF), SPH_C64(0xF60915E309F607F6),
+	SPH_C64(0x90EA64F4EA90AD90), SPH_C64(0x2888755D88287828),
+	SPH_C64(0x8892BC3492888588), SPH_C64(0x9BCD37ACCD9BB09B),
+	SPH_C64(0x31F5A495F5315331), SPH_C64(0x0E367E70360E120E),
+	SPH_C64(0xBD733C8173BDDABD), SPH_C64(0x4A7F206A7F4ADE4A),
+	SPH_C64(0xE86FFB136FE825E8), SPH_C64(0x96F452C4F496A796),
+	SPH_C64(0xA604FF5904A6F7A6), SPH_C64(0x0C3C6C603C0C140C),
+	SPH_C64(0xC8CFC60ECFC845C8), SPH_C64(0x798096EF80798B79),
+	SPH_C64(0xBC76358976BCD9BC), SPH_C64(0xBE7C27997CBEDFBE),
+	SPH_C64(0xEF74C42B74EF2CEF), SPH_C64(0x6ECB3957CB6EB26E),
+	SPH_C64(0x46434C0A4346CA46), SPH_C64(0x97F15BCCF197A497),
+	SPH_C64(0x5B2AB9E22A5BED5B), SPH_C64(0xED7ED63B7EED2AED),
+	SPH_C64(0x197DD1C87D192B19), SPH_C64(0xD99A5F869AD976D9),
+	SPH_C64(0xAC26A50926ACE9AC), SPH_C64(0x99C725BCC799B699),
+	SPH_C64(0xA832812932A8E5A8), SPH_C64(0x298D7C558D297B29),
+	SPH_C64(0x64E96307E964AC64), SPH_C64(0x1F63E7F8631F211F),
+	SPH_C64(0xAD23AC0123ADEAAD), SPH_C64(0x551CC7921C55FF55),
+	SPH_C64(0x135F8B985F133513), SPH_C64(0xBB6D0AB16DBBD0BB),
+	SPH_C64(0xF70C1CEB0CF704F7), SPH_C64(0x6FCE305FCE6FB16F),
+	SPH_C64(0xB96718A167B9D6B9), SPH_C64(0x474645024647C947),
+	SPH_C64(0x2F934A65932F712F), SPH_C64(0xEE71CD2371EE2FEE),
+	SPH_C64(0xB86211A962B8D5B8), SPH_C64(0x7B8A84FF8A7B8D7B),
+	SPH_C64(0x8997B53C97898689), SPH_C64(0x30F0AD9DF0305030),
+	SPH_C64(0xD3B805D6B8D368D3), SPH_C64(0x7F9EA0DF9E7F817F),
+	SPH_C64(0x76B3E197B3769A76), SPH_C64(0x82B0E664B0829B82)
+};
+
+#endif
+
+static const sph_u64 old0_RC[10] = {
+	SPH_C64(0xE46A9D482BEBD068),
+	SPH_C64(0x9E85F17D8156A3E3),
+	SPH_C64(0xD561A917CA788E2C),
+	SPH_C64(0x422251773C8C0B5D),
+	SPH_C64(0x18B386CC8041543F),
+	SPH_C64(0x6BD136F46206572E),
+	SPH_C64(0xF92649DA1075651B),
+	SPH_C64(0xAB5250AEBAE766CB),
+	SPH_C64(0xFE20043B730DF005),
+	SPH_C64(0xA0C0B50A5FB4F5DD)
+};
+
+/* ====================================================================== */
+/*
+ * Constants for plain WHIRLPOOL-1 (second version).
+ */
+
+static const sph_u64 old1_T0[256] = {
+	SPH_C64(0x78D8C07818281818), SPH_C64(0xAF2605AF23652323),
+	SPH_C64(0xF9B87EF9C657C6C6), SPH_C64(0x6FFB136FE825E8E8),
+	SPH_C64(0xA1CB4CA187948787), SPH_C64(0x6211A962B8D5B8B8),
+	SPH_C64(0x0509080501030101), SPH_C64(0x6E0D426E4FD14F4F),
+	SPH_C64(0xEE9BADEE365A3636), SPH_C64(0x04FF5904A6F7A6A6),
+	SPH_C64(0xBD0CDEBDD26BD2D2), SPH_C64(0x060EFB06F502F5F5),
+	SPH_C64(0x8096EF80798B7979), SPH_C64(0xCE305FCE6FB16F6F),
+	SPH_C64(0xEF6DFCEF91AE9191), SPH_C64(0x07F8AA0752F65252),
+	SPH_C64(0xFD4727FD60A06060), SPH_C64(0x76358976BCD9BCBC),
+	SPH_C64(0xCD37ACCD9BB09B9B), SPH_C64(0x8C8A048C8E8F8E8E),
+	SPH_C64(0x15D27115A3F8A3A3), SPH_C64(0x3C6C603C0C140C0C),
+	SPH_C64(0x8A84FF8A7B8D7B7B), SPH_C64(0xE180B5E1355F3535),
+	SPH_C64(0x69F5E8691D271D1D), SPH_C64(0x47B35347E03DE0E0),
+	SPH_C64(0xAC21F6ACD764D7D7), SPH_C64(0xED9C5EEDC25BC2C2),
+	SPH_C64(0x96436D962E722E2E), SPH_C64(0x7A29627A4BDD4B4B),
+	SPH_C64(0x215DA321FE1FFEFE), SPH_C64(0x16D5821657F95757),
+	SPH_C64(0x41BDA841153F1515), SPH_C64(0xB6E89FB677997777),
+	SPH_C64(0xEB92A5EB37593737), SPH_C64(0x569E7B56E532E5E5),
+	SPH_C64(0xD9138CD99FBC9F9F), SPH_C64(0x1723D317F00DF0F0),
+	SPH_C64(0x7F206A7F4ADE4A4A), SPH_C64(0x95449E95DA73DADA),
+	SPH_C64(0x25A2FA2558E85858), SPH_C64(0xCACF06CAC946C9C9),
+	SPH_C64(0x8D7C558D297B2929), SPH_C64(0x225A50220A1E0A0A),
+	SPH_C64(0x4F50E14FB1CEB1B1), SPH_C64(0x1AC9691AA0FDA0A0),
+	SPH_C64(0xDA147FDA6BBD6B6B), SPH_C64(0xABD95CAB85928585),
+	SPH_C64(0x733C8173BDDABDBD), SPH_C64(0x348FD2345DE75D5D),
+	SPH_C64(0x5090805010301010), SPH_C64(0x0307F303F401F4F4),
+	SPH_C64(0xC0DD16C0CB40CBCB), SPH_C64(0xC6D3EDC63E423E3E),
+	SPH_C64(0x112D2811050F0505), SPH_C64(0xE6781FE667A96767),
+	SPH_C64(0x53977353E431E4E4), SPH_C64(0xBB0225BB27692727),
+	SPH_C64(0x5873325841C34141), SPH_C64(0x9DA72C9D8B808B8B),
+	SPH_C64(0x01F65101A7F4A7A7), SPH_C64(0x94B2CF947D877D7D),
+	SPH_C64(0xFB49DCFB95A29595), SPH_C64(0x9F568E9FD875D8D8),
+	SPH_C64(0x30708B30FB10FBFB), SPH_C64(0x71CD2371EE2FEEEE),
+	SPH_C64(0x91BBC7917C847C7C), SPH_C64(0xE37117E366AA6666),
+	SPH_C64(0x8E7BA68EDD7ADDDD), SPH_C64(0x4BAFB84B17391717),
+	SPH_C64(0x4645024647C94747), SPH_C64(0xDC1A84DC9EBF9E9E),
+	SPH_C64(0xC5D41EC5CA43CACA), SPH_C64(0x995875992D772D2D),
+	SPH_C64(0x792E9179BFDCBFBF), SPH_C64(0x1B3F381B07090707),
+	SPH_C64(0x23AC0123ADEAADAD), SPH_C64(0x2FB0EA2F5AEE5A5A),
+	SPH_C64(0xB5EF6CB583988383), SPH_C64(0xFFB685FF33553333),
+	SPH_C64(0xF25C3FF263A56363), SPH_C64(0x0A12100A02060202),
+	SPH_C64(0x38933938AAE3AAAA), SPH_C64(0xA8DEAFA871937171),
+	SPH_C64(0xCFC60ECFC845C8C8), SPH_C64(0x7DD1C87D192B1919),
+	SPH_C64(0x703B727049DB4949), SPH_C64(0x9A5F869AD976D9D9),
+	SPH_C64(0x1D31C31DF20BF2F2), SPH_C64(0x48A84B48E338E3E3),
+	SPH_C64(0x2AB9E22A5BED5B5B), SPH_C64(0x92BC349288858888),
+	SPH_C64(0xC83EA4C89AB39A9A), SPH_C64(0xBE0B2DBE266A2626),
+	SPH_C64(0xFABF8DFA32563232), SPH_C64(0x4A59E94AB0CDB0B0),
+	SPH_C64(0x6AF21B6AE926E9E9), SPH_C64(0x337778330F110F0F),
+	SPH_C64(0xA633E6A6D562D5D5), SPH_C64(0xBAF474BA809D8080),
+	SPH_C64(0x7C27997CBEDFBEBE), SPH_C64(0xDEEB26DECD4ACDCD),
+	SPH_C64(0xE489BDE4345C3434), SPH_C64(0x75327A7548D84848),
+	SPH_C64(0x2454AB24FF1CFFFF), SPH_C64(0x8F8DF78F7A8E7A7A),
+	SPH_C64(0xEA64F4EA90AD9090), SPH_C64(0x3E9DC23E5FE15F5F),
+	SPH_C64(0xA03D1DA020602020), SPH_C64(0xD50F67D568B86868),
+	SPH_C64(0x72CAD0721A2E1A1A), SPH_C64(0x2CB7192CAEEFAEAE),
+	SPH_C64(0x5E7DC95EB4C1B4B4), SPH_C64(0x19CE9A1954FC5454),
+	SPH_C64(0xE57FECE593A89393), SPH_C64(0xAA2F0DAA22662222),
+	SPH_C64(0xE96307E964AC6464), SPH_C64(0x122ADB12F10EF1F1),
+	SPH_C64(0xA2CCBFA273957373), SPH_C64(0x5A82905A12361212),
+	SPH_C64(0x5D7A3A5D40C04040), SPH_C64(0x2848402808180808),
+	SPH_C64(0xE89556E8C358C3C3), SPH_C64(0x7BDF337BEC29ECEC),
+	SPH_C64(0x904D9690DB70DBDB), SPH_C64(0x1FC0611FA1FEA1A1),
+	SPH_C64(0x83911C838D8A8D8D), SPH_C64(0xC9C8F5C93D473D3D),
+	SPH_C64(0xF15BCCF197A49797), SPH_C64(0x0000000000000000),
+	SPH_C64(0xD4F936D4CF4CCFCF), SPH_C64(0x876E45872B7D2B2B),
+	SPH_C64(0xB3E197B3769A7676), SPH_C64(0xB0E664B0829B8282),
+	SPH_C64(0xA928FEA9D667D6D6), SPH_C64(0x77C3D8771B2D1B1B),
+	SPH_C64(0x5B74C15BB5C2B5B5), SPH_C64(0x29BE1129AFECAFAF),
+	SPH_C64(0xDF1D77DF6ABE6A6A), SPH_C64(0x0DEABA0D50F05050),
+	SPH_C64(0x4C57124C45CF4545), SPH_C64(0x1838CB18F308F3F3),
+	SPH_C64(0xF0AD9DF030503030), SPH_C64(0x74C42B74EF2CEFEF),
+	SPH_C64(0xC3DAE5C33F413F3F), SPH_C64(0x1CC7921C55FF5555),
+	SPH_C64(0x10DB7910A2FBA2A2), SPH_C64(0x65E90365EA23EAEA),
+	SPH_C64(0xEC6A0FEC65AF6565), SPH_C64(0x6803B968BAD3BABA),
+	SPH_C64(0x934A65932F712F2F), SPH_C64(0xE78E4EE7C05DC0C0),
+	SPH_C64(0x8160BE81DE7FDEDE), SPH_C64(0x6CFCE06C1C241C1C),
+	SPH_C64(0x2E46BB2EFD1AFDFD), SPH_C64(0x641F52644DD74D4D),
+	SPH_C64(0xE076E4E092AB9292), SPH_C64(0xBCFA8FBC759F7575),
+	SPH_C64(0x1E36301E060A0606), SPH_C64(0x98AE24988A838A8A),
+	SPH_C64(0x404BF940B2CBB2B2), SPH_C64(0x59856359E637E6E6),
+	SPH_C64(0x367E70360E120E0E), SPH_C64(0x63E7F8631F211F1F),
+	SPH_C64(0xF75537F762A66262), SPH_C64(0xA33AEEA3D461D4D4),
+	SPH_C64(0x32812932A8E5A8A8), SPH_C64(0xF452C4F496A79696),
+	SPH_C64(0x3A629B3AF916F9F9), SPH_C64(0xF6A366F6C552C5C5),
+	SPH_C64(0xB11035B1256F2525), SPH_C64(0x20ABF22059EB5959),
+	SPH_C64(0xAED054AE84918484), SPH_C64(0xA7C5B7A772967272),
+	SPH_C64(0xDDECD5DD394B3939), SPH_C64(0x61165A614CD44C4C),
+	SPH_C64(0x3B94CA3B5EE25E5E), SPH_C64(0x859FE78578887878),
+	SPH_C64(0xD8E5DDD838483838), SPH_C64(0x869814868C898C8C),
+	SPH_C64(0xB217C6B2D16ED1D1), SPH_C64(0x0BE4410BA5F2A5A5),
+	SPH_C64(0x4DA1434DE23BE2E2), SPH_C64(0xF84E2FF861A36161),
+	SPH_C64(0x4542F145B3C8B3B3), SPH_C64(0xA53415A521632121),
+	SPH_C64(0xD60894D69CB99C9C), SPH_C64(0x66EEF0661E221E1E),
+	SPH_C64(0x5261225243C54343), SPH_C64(0xFCB176FCC754C7C7),
+	SPH_C64(0x2B4FB32BFC19FCFC), SPH_C64(0x14242014040C0404),
+	SPH_C64(0x08E3B20851F35151), SPH_C64(0xC725BCC799B69999),
+	SPH_C64(0xC4224FC46DB76D6D), SPH_C64(0x396568390D170D0D),
+	SPH_C64(0x35798335FA13FAFA), SPH_C64(0x8469B684DF7CDFDF),
+	SPH_C64(0x9BA9D79B7E827E7E), SPH_C64(0xB4193DB4246C2424),
+	SPH_C64(0xD7FEC5D73B4D3B3B), SPH_C64(0x3D9A313DABE0ABAB),
+	SPH_C64(0xD1F03ED1CE4FCECE), SPH_C64(0x5599885511331111),
+	SPH_C64(0x89830C898F8C8F8F), SPH_C64(0x6B044A6B4ED24E4E),
+	SPH_C64(0x5166D151B7C4B7B7), SPH_C64(0x60E00B60EB20EBEB),
+	SPH_C64(0xCCC1FDCC3C443C3C), SPH_C64(0xBFFD7CBF819E8181),
+	SPH_C64(0xFE40D4FE94A19494), SPH_C64(0x0C1CEB0CF704F7F7),
+	SPH_C64(0x6718A167B9D6B9B9), SPH_C64(0x5F8B985F13351313),
+	SPH_C64(0x9C517D9C2C742C2C), SPH_C64(0xB805D6B8D368D3D3),
+	SPH_C64(0x5C8C6B5CE734E7E7), SPH_C64(0xCB3957CB6EB26E6E),
+	SPH_C64(0xF3AA6EF3C451C4C4), SPH_C64(0x0F1B180F03050303),
+	SPH_C64(0x13DC8A1356FA5656), SPH_C64(0x495E1A4944CC4444),
+	SPH_C64(0x9EA0DF9E7F817F7F), SPH_C64(0x37882137A9E6A9A9),
+	SPH_C64(0x82674D822A7E2A2A), SPH_C64(0x6D0AB16DBBD0BBBB),
+	SPH_C64(0xE28746E2C15EC1C1), SPH_C64(0x02F1A20253F55353),
+	SPH_C64(0x8B72AE8BDC79DCDC), SPH_C64(0x275358270B1D0B0B),
+	SPH_C64(0xD3019CD39DBA9D9D), SPH_C64(0xC12B47C16CB46C6C),
+	SPH_C64(0xF5A495F531533131), SPH_C64(0xB9F387B9749C7474),
+	SPH_C64(0x0915E309F607F6F6), SPH_C64(0x434C0A4346CA4646),
+	SPH_C64(0x26A50926ACE9ACAC), SPH_C64(0x97B53C9789868989),
+	SPH_C64(0x44B4A044143C1414), SPH_C64(0x42BA5B42E13EE1E1),
+	SPH_C64(0x4EA6B04E163A1616), SPH_C64(0xD2F7CDD23A4E3A3A),
+	SPH_C64(0xD0066FD069BB6969), SPH_C64(0x2D41482D091B0909),
+	SPH_C64(0xADD7A7AD70907070), SPH_C64(0x546FD954B6C7B6B6),
+	SPH_C64(0xB71ECEB7D06DD0D0), SPH_C64(0x7ED63B7EED2AEDED),
+	SPH_C64(0xDBE22EDBCC49CCCC), SPH_C64(0x57682A5742C64242),
+	SPH_C64(0xC22CB4C298B59898), SPH_C64(0x0EED490EA4F1A4A4),
+	SPH_C64(0x88755D8828782828), SPH_C64(0x3186DA315CE45C5C),
+	SPH_C64(0x3F6B933FF815F8F8), SPH_C64(0xA4C244A486978686)
+};
+
+#if !SPH_SMALL_FOOTPRINT_WHIRLPOOL
+
+static const sph_u64 old1_T1[256] = {
+	SPH_C64(0xD8C0781828181878), SPH_C64(0x2605AF23652323AF),
+	SPH_C64(0xB87EF9C657C6C6F9), SPH_C64(0xFB136FE825E8E86F),
+	SPH_C64(0xCB4CA187948787A1), SPH_C64(0x11A962B8D5B8B862),
+	SPH_C64(0x0908050103010105), SPH_C64(0x0D426E4FD14F4F6E),
+	SPH_C64(0x9BADEE365A3636EE), SPH_C64(0xFF5904A6F7A6A604),
+	SPH_C64(0x0CDEBDD26BD2D2BD), SPH_C64(0x0EFB06F502F5F506),
+	SPH_C64(0x96EF80798B797980), SPH_C64(0x305FCE6FB16F6FCE),
+	SPH_C64(0x6DFCEF91AE9191EF), SPH_C64(0xF8AA0752F6525207),
+	SPH_C64(0x4727FD60A06060FD), SPH_C64(0x358976BCD9BCBC76),
+	SPH_C64(0x37ACCD9BB09B9BCD), SPH_C64(0x8A048C8E8F8E8E8C),
+	SPH_C64(0xD27115A3F8A3A315), SPH_C64(0x6C603C0C140C0C3C),
+	SPH_C64(0x84FF8A7B8D7B7B8A), SPH_C64(0x80B5E1355F3535E1),
+	SPH_C64(0xF5E8691D271D1D69), SPH_C64(0xB35347E03DE0E047),
+	SPH_C64(0x21F6ACD764D7D7AC), SPH_C64(0x9C5EEDC25BC2C2ED),
+	SPH_C64(0x436D962E722E2E96), SPH_C64(0x29627A4BDD4B4B7A),
+	SPH_C64(0x5DA321FE1FFEFE21), SPH_C64(0xD5821657F9575716),
+	SPH_C64(0xBDA841153F151541), SPH_C64(0xE89FB677997777B6),
+	SPH_C64(0x92A5EB37593737EB), SPH_C64(0x9E7B56E532E5E556),
+	SPH_C64(0x138CD99FBC9F9FD9), SPH_C64(0x23D317F00DF0F017),
+	SPH_C64(0x206A7F4ADE4A4A7F), SPH_C64(0x449E95DA73DADA95),
+	SPH_C64(0xA2FA2558E8585825), SPH_C64(0xCF06CAC946C9C9CA),
+	SPH_C64(0x7C558D297B29298D), SPH_C64(0x5A50220A1E0A0A22),
+	SPH_C64(0x50E14FB1CEB1B14F), SPH_C64(0xC9691AA0FDA0A01A),
+	SPH_C64(0x147FDA6BBD6B6BDA), SPH_C64(0xD95CAB85928585AB),
+	SPH_C64(0x3C8173BDDABDBD73), SPH_C64(0x8FD2345DE75D5D34),
+	SPH_C64(0x9080501030101050), SPH_C64(0x07F303F401F4F403),
+	SPH_C64(0xDD16C0CB40CBCBC0), SPH_C64(0xD3EDC63E423E3EC6),
+	SPH_C64(0x2D2811050F050511), SPH_C64(0x781FE667A96767E6),
+	SPH_C64(0x977353E431E4E453), SPH_C64(0x0225BB27692727BB),
+	SPH_C64(0x73325841C3414158), SPH_C64(0xA72C9D8B808B8B9D),
+	SPH_C64(0xF65101A7F4A7A701), SPH_C64(0xB2CF947D877D7D94),
+	SPH_C64(0x49DCFB95A29595FB), SPH_C64(0x568E9FD875D8D89F),
+	SPH_C64(0x708B30FB10FBFB30), SPH_C64(0xCD2371EE2FEEEE71),
+	SPH_C64(0xBBC7917C847C7C91), SPH_C64(0x7117E366AA6666E3),
+	SPH_C64(0x7BA68EDD7ADDDD8E), SPH_C64(0xAFB84B173917174B),
+	SPH_C64(0x45024647C9474746), SPH_C64(0x1A84DC9EBF9E9EDC),
+	SPH_C64(0xD41EC5CA43CACAC5), SPH_C64(0x5875992D772D2D99),
+	SPH_C64(0x2E9179BFDCBFBF79), SPH_C64(0x3F381B070907071B),
+	SPH_C64(0xAC0123ADEAADAD23), SPH_C64(0xB0EA2F5AEE5A5A2F),
+	SPH_C64(0xEF6CB583988383B5), SPH_C64(0xB685FF33553333FF),
+	SPH_C64(0x5C3FF263A56363F2), SPH_C64(0x12100A020602020A),
+	SPH_C64(0x933938AAE3AAAA38), SPH_C64(0xDEAFA871937171A8),
+	SPH_C64(0xC60ECFC845C8C8CF), SPH_C64(0xD1C87D192B19197D),
+	SPH_C64(0x3B727049DB494970), SPH_C64(0x5F869AD976D9D99A),
+	SPH_C64(0x31C31DF20BF2F21D), SPH_C64(0xA84B48E338E3E348),
+	SPH_C64(0xB9E22A5BED5B5B2A), SPH_C64(0xBC34928885888892),
+	SPH_C64(0x3EA4C89AB39A9AC8), SPH_C64(0x0B2DBE266A2626BE),
+	SPH_C64(0xBF8DFA32563232FA), SPH_C64(0x59E94AB0CDB0B04A),
+	SPH_C64(0xF21B6AE926E9E96A), SPH_C64(0x7778330F110F0F33),
+	SPH_C64(0x33E6A6D562D5D5A6), SPH_C64(0xF474BA809D8080BA),
+	SPH_C64(0x27997CBEDFBEBE7C), SPH_C64(0xEB26DECD4ACDCDDE),
+	SPH_C64(0x89BDE4345C3434E4), SPH_C64(0x327A7548D8484875),
+	SPH_C64(0x54AB24FF1CFFFF24), SPH_C64(0x8DF78F7A8E7A7A8F),
+	SPH_C64(0x64F4EA90AD9090EA), SPH_C64(0x9DC23E5FE15F5F3E),
+	SPH_C64(0x3D1DA020602020A0), SPH_C64(0x0F67D568B86868D5),
+	SPH_C64(0xCAD0721A2E1A1A72), SPH_C64(0xB7192CAEEFAEAE2C),
+	SPH_C64(0x7DC95EB4C1B4B45E), SPH_C64(0xCE9A1954FC545419),
+	SPH_C64(0x7FECE593A89393E5), SPH_C64(0x2F0DAA22662222AA),
+	SPH_C64(0x6307E964AC6464E9), SPH_C64(0x2ADB12F10EF1F112),
+	SPH_C64(0xCCBFA273957373A2), SPH_C64(0x82905A123612125A),
+	SPH_C64(0x7A3A5D40C040405D), SPH_C64(0x4840280818080828),
+	SPH_C64(0x9556E8C358C3C3E8), SPH_C64(0xDF337BEC29ECEC7B),
+	SPH_C64(0x4D9690DB70DBDB90), SPH_C64(0xC0611FA1FEA1A11F),
+	SPH_C64(0x911C838D8A8D8D83), SPH_C64(0xC8F5C93D473D3DC9),
+	SPH_C64(0x5BCCF197A49797F1), SPH_C64(0x0000000000000000),
+	SPH_C64(0xF936D4CF4CCFCFD4), SPH_C64(0x6E45872B7D2B2B87),
+	SPH_C64(0xE197B3769A7676B3), SPH_C64(0xE664B0829B8282B0),
+	SPH_C64(0x28FEA9D667D6D6A9), SPH_C64(0xC3D8771B2D1B1B77),
+	SPH_C64(0x74C15BB5C2B5B55B), SPH_C64(0xBE1129AFECAFAF29),
+	SPH_C64(0x1D77DF6ABE6A6ADF), SPH_C64(0xEABA0D50F050500D),
+	SPH_C64(0x57124C45CF45454C), SPH_C64(0x38CB18F308F3F318),
+	SPH_C64(0xAD9DF030503030F0), SPH_C64(0xC42B74EF2CEFEF74),
+	SPH_C64(0xDAE5C33F413F3FC3), SPH_C64(0xC7921C55FF55551C),
+	SPH_C64(0xDB7910A2FBA2A210), SPH_C64(0xE90365EA23EAEA65),
+	SPH_C64(0x6A0FEC65AF6565EC), SPH_C64(0x03B968BAD3BABA68),
+	SPH_C64(0x4A65932F712F2F93), SPH_C64(0x8E4EE7C05DC0C0E7),
+	SPH_C64(0x60BE81DE7FDEDE81), SPH_C64(0xFCE06C1C241C1C6C),
+	SPH_C64(0x46BB2EFD1AFDFD2E), SPH_C64(0x1F52644DD74D4D64),
+	SPH_C64(0x76E4E092AB9292E0), SPH_C64(0xFA8FBC759F7575BC),
+	SPH_C64(0x36301E060A06061E), SPH_C64(0xAE24988A838A8A98),
+	SPH_C64(0x4BF940B2CBB2B240), SPH_C64(0x856359E637E6E659),
+	SPH_C64(0x7E70360E120E0E36), SPH_C64(0xE7F8631F211F1F63),
+	SPH_C64(0x5537F762A66262F7), SPH_C64(0x3AEEA3D461D4D4A3),
+	SPH_C64(0x812932A8E5A8A832), SPH_C64(0x52C4F496A79696F4),
+	SPH_C64(0x629B3AF916F9F93A), SPH_C64(0xA366F6C552C5C5F6),
+	SPH_C64(0x1035B1256F2525B1), SPH_C64(0xABF22059EB595920),
+	SPH_C64(0xD054AE84918484AE), SPH_C64(0xC5B7A772967272A7),
+	SPH_C64(0xECD5DD394B3939DD), SPH_C64(0x165A614CD44C4C61),
+	SPH_C64(0x94CA3B5EE25E5E3B), SPH_C64(0x9FE7857888787885),
+	SPH_C64(0xE5DDD838483838D8), SPH_C64(0x9814868C898C8C86),
+	SPH_C64(0x17C6B2D16ED1D1B2), SPH_C64(0xE4410BA5F2A5A50B),
+	SPH_C64(0xA1434DE23BE2E24D), SPH_C64(0x4E2FF861A36161F8),
+	SPH_C64(0x42F145B3C8B3B345), SPH_C64(0x3415A521632121A5),
+	SPH_C64(0x0894D69CB99C9CD6), SPH_C64(0xEEF0661E221E1E66),
+	SPH_C64(0x61225243C5434352), SPH_C64(0xB176FCC754C7C7FC),
+	SPH_C64(0x4FB32BFC19FCFC2B), SPH_C64(0x242014040C040414),
+	SPH_C64(0xE3B20851F3515108), SPH_C64(0x25BCC799B69999C7),
+	SPH_C64(0x224FC46DB76D6DC4), SPH_C64(0x6568390D170D0D39),
+	SPH_C64(0x798335FA13FAFA35), SPH_C64(0x69B684DF7CDFDF84),
+	SPH_C64(0xA9D79B7E827E7E9B), SPH_C64(0x193DB4246C2424B4),
+	SPH_C64(0xFEC5D73B4D3B3BD7), SPH_C64(0x9A313DABE0ABAB3D),
+	SPH_C64(0xF03ED1CE4FCECED1), SPH_C64(0x9988551133111155),
+	SPH_C64(0x830C898F8C8F8F89), SPH_C64(0x044A6B4ED24E4E6B),
+	SPH_C64(0x66D151B7C4B7B751), SPH_C64(0xE00B60EB20EBEB60),
+	SPH_C64(0xC1FDCC3C443C3CCC), SPH_C64(0xFD7CBF819E8181BF),
+	SPH_C64(0x40D4FE94A19494FE), SPH_C64(0x1CEB0CF704F7F70C),
+	SPH_C64(0x18A167B9D6B9B967), SPH_C64(0x8B985F133513135F),
+	SPH_C64(0x517D9C2C742C2C9C), SPH_C64(0x05D6B8D368D3D3B8),
+	SPH_C64(0x8C6B5CE734E7E75C), SPH_C64(0x3957CB6EB26E6ECB),
+	SPH_C64(0xAA6EF3C451C4C4F3), SPH_C64(0x1B180F030503030F),
+	SPH_C64(0xDC8A1356FA565613), SPH_C64(0x5E1A4944CC444449),
+	SPH_C64(0xA0DF9E7F817F7F9E), SPH_C64(0x882137A9E6A9A937),
+	SPH_C64(0x674D822A7E2A2A82), SPH_C64(0x0AB16DBBD0BBBB6D),
+	SPH_C64(0x8746E2C15EC1C1E2), SPH_C64(0xF1A20253F5535302),
+	SPH_C64(0x72AE8BDC79DCDC8B), SPH_C64(0x5358270B1D0B0B27),
+	SPH_C64(0x019CD39DBA9D9DD3), SPH_C64(0x2B47C16CB46C6CC1),
+	SPH_C64(0xA495F531533131F5), SPH_C64(0xF387B9749C7474B9),
+	SPH_C64(0x15E309F607F6F609), SPH_C64(0x4C0A4346CA464643),
+	SPH_C64(0xA50926ACE9ACAC26), SPH_C64(0xB53C978986898997),
+	SPH_C64(0xB4A044143C141444), SPH_C64(0xBA5B42E13EE1E142),
+	SPH_C64(0xA6B04E163A16164E), SPH_C64(0xF7CDD23A4E3A3AD2),
+	SPH_C64(0x066FD069BB6969D0), SPH_C64(0x41482D091B09092D),
+	SPH_C64(0xD7A7AD70907070AD), SPH_C64(0x6FD954B6C7B6B654),
+	SPH_C64(0x1ECEB7D06DD0D0B7), SPH_C64(0xD63B7EED2AEDED7E),
+	SPH_C64(0xE22EDBCC49CCCCDB), SPH_C64(0x682A5742C6424257),
+	SPH_C64(0x2CB4C298B59898C2), SPH_C64(0xED490EA4F1A4A40E),
+	SPH_C64(0x755D882878282888), SPH_C64(0x86DA315CE45C5C31),
+	SPH_C64(0x6B933FF815F8F83F), SPH_C64(0xC244A486978686A4)
+};
+
+static const sph_u64 old1_T2[256] = {
+	SPH_C64(0xC0781828181878D8), SPH_C64(0x05AF23652323AF26),
+	SPH_C64(0x7EF9C657C6C6F9B8), SPH_C64(0x136FE825E8E86FFB),
+	SPH_C64(0x4CA187948787A1CB), SPH_C64(0xA962B8D5B8B86211),
+	SPH_C64(0x0805010301010509), SPH_C64(0x426E4FD14F4F6E0D),
+	SPH_C64(0xADEE365A3636EE9B), SPH_C64(0x5904A6F7A6A604FF),
+	SPH_C64(0xDEBDD26BD2D2BD0C), SPH_C64(0xFB06F502F5F5060E),
+	SPH_C64(0xEF80798B79798096), SPH_C64(0x5FCE6FB16F6FCE30),
+	SPH_C64(0xFCEF91AE9191EF6D), SPH_C64(0xAA0752F6525207F8),
+	SPH_C64(0x27FD60A06060FD47), SPH_C64(0x8976BCD9BCBC7635),
+	SPH_C64(0xACCD9BB09B9BCD37), SPH_C64(0x048C8E8F8E8E8C8A),
+	SPH_C64(0x7115A3F8A3A315D2), SPH_C64(0x603C0C140C0C3C6C),
+	SPH_C64(0xFF8A7B8D7B7B8A84), SPH_C64(0xB5E1355F3535E180),
+	SPH_C64(0xE8691D271D1D69F5), SPH_C64(0x5347E03DE0E047B3),
+	SPH_C64(0xF6ACD764D7D7AC21), SPH_C64(0x5EEDC25BC2C2ED9C),
+	SPH_C64(0x6D962E722E2E9643), SPH_C64(0x627A4BDD4B4B7A29),
+	SPH_C64(0xA321FE1FFEFE215D), SPH_C64(0x821657F9575716D5),
+	SPH_C64(0xA841153F151541BD), SPH_C64(0x9FB677997777B6E8),
+	SPH_C64(0xA5EB37593737EB92), SPH_C64(0x7B56E532E5E5569E),
+	SPH_C64(0x8CD99FBC9F9FD913), SPH_C64(0xD317F00DF0F01723),
+	SPH_C64(0x6A7F4ADE4A4A7F20), SPH_C64(0x9E95DA73DADA9544),
+	SPH_C64(0xFA2558E8585825A2), SPH_C64(0x06CAC946C9C9CACF),
+	SPH_C64(0x558D297B29298D7C), SPH_C64(0x50220A1E0A0A225A),
+	SPH_C64(0xE14FB1CEB1B14F50), SPH_C64(0x691AA0FDA0A01AC9),
+	SPH_C64(0x7FDA6BBD6B6BDA14), SPH_C64(0x5CAB85928585ABD9),
+	SPH_C64(0x8173BDDABDBD733C), SPH_C64(0xD2345DE75D5D348F),
+	SPH_C64(0x8050103010105090), SPH_C64(0xF303F401F4F40307),
+	SPH_C64(0x16C0CB40CBCBC0DD), SPH_C64(0xEDC63E423E3EC6D3),
+	SPH_C64(0x2811050F0505112D), SPH_C64(0x1FE667A96767E678),
+	SPH_C64(0x7353E431E4E45397), SPH_C64(0x25BB27692727BB02),
+	SPH_C64(0x325841C341415873), SPH_C64(0x2C9D8B808B8B9DA7),
+	SPH_C64(0x5101A7F4A7A701F6), SPH_C64(0xCF947D877D7D94B2),
+	SPH_C64(0xDCFB95A29595FB49), SPH_C64(0x8E9FD875D8D89F56),
+	SPH_C64(0x8B30FB10FBFB3070), SPH_C64(0x2371EE2FEEEE71CD),
+	SPH_C64(0xC7917C847C7C91BB), SPH_C64(0x17E366AA6666E371),
+	SPH_C64(0xA68EDD7ADDDD8E7B), SPH_C64(0xB84B173917174BAF),
+	SPH_C64(0x024647C947474645), SPH_C64(0x84DC9EBF9E9EDC1A),
+	SPH_C64(0x1EC5CA43CACAC5D4), SPH_C64(0x75992D772D2D9958),
+	SPH_C64(0x9179BFDCBFBF792E), SPH_C64(0x381B070907071B3F),
+	SPH_C64(0x0123ADEAADAD23AC), SPH_C64(0xEA2F5AEE5A5A2FB0),
+	SPH_C64(0x6CB583988383B5EF), SPH_C64(0x85FF33553333FFB6),
+	SPH_C64(0x3FF263A56363F25C), SPH_C64(0x100A020602020A12),
+	SPH_C64(0x3938AAE3AAAA3893), SPH_C64(0xAFA871937171A8DE),
+	SPH_C64(0x0ECFC845C8C8CFC6), SPH_C64(0xC87D192B19197DD1),
+	SPH_C64(0x727049DB4949703B), SPH_C64(0x869AD976D9D99A5F),
+	SPH_C64(0xC31DF20BF2F21D31), SPH_C64(0x4B48E338E3E348A8),
+	SPH_C64(0xE22A5BED5B5B2AB9), SPH_C64(0x34928885888892BC),
+	SPH_C64(0xA4C89AB39A9AC83E), SPH_C64(0x2DBE266A2626BE0B),
+	SPH_C64(0x8DFA32563232FABF), SPH_C64(0xE94AB0CDB0B04A59),
+	SPH_C64(0x1B6AE926E9E96AF2), SPH_C64(0x78330F110F0F3377),
+	SPH_C64(0xE6A6D562D5D5A633), SPH_C64(0x74BA809D8080BAF4),
+	SPH_C64(0x997CBEDFBEBE7C27), SPH_C64(0x26DECD4ACDCDDEEB),
+	SPH_C64(0xBDE4345C3434E489), SPH_C64(0x7A7548D848487532),
+	SPH_C64(0xAB24FF1CFFFF2454), SPH_C64(0xF78F7A8E7A7A8F8D),
+	SPH_C64(0xF4EA90AD9090EA64), SPH_C64(0xC23E5FE15F5F3E9D),
+	SPH_C64(0x1DA020602020A03D), SPH_C64(0x67D568B86868D50F),
+	SPH_C64(0xD0721A2E1A1A72CA), SPH_C64(0x192CAEEFAEAE2CB7),
+	SPH_C64(0xC95EB4C1B4B45E7D), SPH_C64(0x9A1954FC545419CE),
+	SPH_C64(0xECE593A89393E57F), SPH_C64(0x0DAA22662222AA2F),
+	SPH_C64(0x07E964AC6464E963), SPH_C64(0xDB12F10EF1F1122A),
+	SPH_C64(0xBFA273957373A2CC), SPH_C64(0x905A123612125A82),
+	SPH_C64(0x3A5D40C040405D7A), SPH_C64(0x4028081808082848),
+	SPH_C64(0x56E8C358C3C3E895), SPH_C64(0x337BEC29ECEC7BDF),
+	SPH_C64(0x9690DB70DBDB904D), SPH_C64(0x611FA1FEA1A11FC0),
+	SPH_C64(0x1C838D8A8D8D8391), SPH_C64(0xF5C93D473D3DC9C8),
+	SPH_C64(0xCCF197A49797F15B), SPH_C64(0x0000000000000000),
+	SPH_C64(0x36D4CF4CCFCFD4F9), SPH_C64(0x45872B7D2B2B876E),
+	SPH_C64(0x97B3769A7676B3E1), SPH_C64(0x64B0829B8282B0E6),
+	SPH_C64(0xFEA9D667D6D6A928), SPH_C64(0xD8771B2D1B1B77C3),
+	SPH_C64(0xC15BB5C2B5B55B74), SPH_C64(0x1129AFECAFAF29BE),
+	SPH_C64(0x77DF6ABE6A6ADF1D), SPH_C64(0xBA0D50F050500DEA),
+	SPH_C64(0x124C45CF45454C57), SPH_C64(0xCB18F308F3F31838),
+	SPH_C64(0x9DF030503030F0AD), SPH_C64(0x2B74EF2CEFEF74C4),
+	SPH_C64(0xE5C33F413F3FC3DA), SPH_C64(0x921C55FF55551CC7),
+	SPH_C64(0x7910A2FBA2A210DB), SPH_C64(0x0365EA23EAEA65E9),
+	SPH_C64(0x0FEC65AF6565EC6A), SPH_C64(0xB968BAD3BABA6803),
+	SPH_C64(0x65932F712F2F934A), SPH_C64(0x4EE7C05DC0C0E78E),
+	SPH_C64(0xBE81DE7FDEDE8160), SPH_C64(0xE06C1C241C1C6CFC),
+	SPH_C64(0xBB2EFD1AFDFD2E46), SPH_C64(0x52644DD74D4D641F),
+	SPH_C64(0xE4E092AB9292E076), SPH_C64(0x8FBC759F7575BCFA),
+	SPH_C64(0x301E060A06061E36), SPH_C64(0x24988A838A8A98AE),
+	SPH_C64(0xF940B2CBB2B2404B), SPH_C64(0x6359E637E6E65985),
+	SPH_C64(0x70360E120E0E367E), SPH_C64(0xF8631F211F1F63E7),
+	SPH_C64(0x37F762A66262F755), SPH_C64(0xEEA3D461D4D4A33A),
+	SPH_C64(0x2932A8E5A8A83281), SPH_C64(0xC4F496A79696F452),
+	SPH_C64(0x9B3AF916F9F93A62), SPH_C64(0x66F6C552C5C5F6A3),
+	SPH_C64(0x35B1256F2525B110), SPH_C64(0xF22059EB595920AB),
+	SPH_C64(0x54AE84918484AED0), SPH_C64(0xB7A772967272A7C5),
+	SPH_C64(0xD5DD394B3939DDEC), SPH_C64(0x5A614CD44C4C6116),
+	SPH_C64(0xCA3B5EE25E5E3B94), SPH_C64(0xE78578887878859F),
+	SPH_C64(0xDDD838483838D8E5), SPH_C64(0x14868C898C8C8698),
+	SPH_C64(0xC6B2D16ED1D1B217), SPH_C64(0x410BA5F2A5A50BE4),
+	SPH_C64(0x434DE23BE2E24DA1), SPH_C64(0x2FF861A36161F84E),
+	SPH_C64(0xF145B3C8B3B34542), SPH_C64(0x15A521632121A534),
+	SPH_C64(0x94D69CB99C9CD608), SPH_C64(0xF0661E221E1E66EE),
+	SPH_C64(0x225243C543435261), SPH_C64(0x76FCC754C7C7FCB1),
+	SPH_C64(0xB32BFC19FCFC2B4F), SPH_C64(0x2014040C04041424),
+	SPH_C64(0xB20851F3515108E3), SPH_C64(0xBCC799B69999C725),
+	SPH_C64(0x4FC46DB76D6DC422), SPH_C64(0x68390D170D0D3965),
+	SPH_C64(0x8335FA13FAFA3579), SPH_C64(0xB684DF7CDFDF8469),
+	SPH_C64(0xD79B7E827E7E9BA9), SPH_C64(0x3DB4246C2424B419),
+	SPH_C64(0xC5D73B4D3B3BD7FE), SPH_C64(0x313DABE0ABAB3D9A),
+	SPH_C64(0x3ED1CE4FCECED1F0), SPH_C64(0x8855113311115599),
+	SPH_C64(0x0C898F8C8F8F8983), SPH_C64(0x4A6B4ED24E4E6B04),
+	SPH_C64(0xD151B7C4B7B75166), SPH_C64(0x0B60EB20EBEB60E0),
+	SPH_C64(0xFDCC3C443C3CCCC1), SPH_C64(0x7CBF819E8181BFFD),
+	SPH_C64(0xD4FE94A19494FE40), SPH_C64(0xEB0CF704F7F70C1C),
+	SPH_C64(0xA167B9D6B9B96718), SPH_C64(0x985F133513135F8B),
+	SPH_C64(0x7D9C2C742C2C9C51), SPH_C64(0xD6B8D368D3D3B805),
+	SPH_C64(0x6B5CE734E7E75C8C), SPH_C64(0x57CB6EB26E6ECB39),
+	SPH_C64(0x6EF3C451C4C4F3AA), SPH_C64(0x180F030503030F1B),
+	SPH_C64(0x8A1356FA565613DC), SPH_C64(0x1A4944CC4444495E),
+	SPH_C64(0xDF9E7F817F7F9EA0), SPH_C64(0x2137A9E6A9A93788),
+	SPH_C64(0x4D822A7E2A2A8267), SPH_C64(0xB16DBBD0BBBB6D0A),
+	SPH_C64(0x46E2C15EC1C1E287), SPH_C64(0xA20253F5535302F1),
+	SPH_C64(0xAE8BDC79DCDC8B72), SPH_C64(0x58270B1D0B0B2753),
+	SPH_C64(0x9CD39DBA9D9DD301), SPH_C64(0x47C16CB46C6CC12B),
+	SPH_C64(0x95F531533131F5A4), SPH_C64(0x87B9749C7474B9F3),
+	SPH_C64(0xE309F607F6F60915), SPH_C64(0x0A4346CA4646434C),
+	SPH_C64(0x0926ACE9ACAC26A5), SPH_C64(0x3C978986898997B5),
+	SPH_C64(0xA044143C141444B4), SPH_C64(0x5B42E13EE1E142BA),
+	SPH_C64(0xB04E163A16164EA6), SPH_C64(0xCDD23A4E3A3AD2F7),
+	SPH_C64(0x6FD069BB6969D006), SPH_C64(0x482D091B09092D41),
+	SPH_C64(0xA7AD70907070ADD7), SPH_C64(0xD954B6C7B6B6546F),
+	SPH_C64(0xCEB7D06DD0D0B71E), SPH_C64(0x3B7EED2AEDED7ED6),
+	SPH_C64(0x2EDBCC49CCCCDBE2), SPH_C64(0x2A5742C642425768),
+	SPH_C64(0xB4C298B59898C22C), SPH_C64(0x490EA4F1A4A40EED),
+	SPH_C64(0x5D88287828288875), SPH_C64(0xDA315CE45C5C3186),
+	SPH_C64(0x933FF815F8F83F6B), SPH_C64(0x44A486978686A4C2)
+};
+
+static const sph_u64 old1_T3[256] = {
+	SPH_C64(0x781828181878D8C0), SPH_C64(0xAF23652323AF2605),
+	SPH_C64(0xF9C657C6C6F9B87E), SPH_C64(0x6FE825E8E86FFB13),
+	SPH_C64(0xA187948787A1CB4C), SPH_C64(0x62B8D5B8B86211A9),
+	SPH_C64(0x0501030101050908), SPH_C64(0x6E4FD14F4F6E0D42),
+	SPH_C64(0xEE365A3636EE9BAD), SPH_C64(0x04A6F7A6A604FF59),
+	SPH_C64(0xBDD26BD2D2BD0CDE), SPH_C64(0x06F502F5F5060EFB),
+	SPH_C64(0x80798B79798096EF), SPH_C64(0xCE6FB16F6FCE305F),
+	SPH_C64(0xEF91AE9191EF6DFC), SPH_C64(0x0752F6525207F8AA),
+	SPH_C64(0xFD60A06060FD4727), SPH_C64(0x76BCD9BCBC763589),
+	SPH_C64(0xCD9BB09B9BCD37AC), SPH_C64(0x8C8E8F8E8E8C8A04),
+	SPH_C64(0x15A3F8A3A315D271), SPH_C64(0x3C0C140C0C3C6C60),
+	SPH_C64(0x8A7B8D7B7B8A84FF), SPH_C64(0xE1355F3535E180B5),
+	SPH_C64(0x691D271D1D69F5E8), SPH_C64(0x47E03DE0E047B353),
+	SPH_C64(0xACD764D7D7AC21F6), SPH_C64(0xEDC25BC2C2ED9C5E),
+	SPH_C64(0x962E722E2E96436D), SPH_C64(0x7A4BDD4B4B7A2962),
+	SPH_C64(0x21FE1FFEFE215DA3), SPH_C64(0x1657F9575716D582),
+	SPH_C64(0x41153F151541BDA8), SPH_C64(0xB677997777B6E89F),
+	SPH_C64(0xEB37593737EB92A5), SPH_C64(0x56E532E5E5569E7B),
+	SPH_C64(0xD99FBC9F9FD9138C), SPH_C64(0x17F00DF0F01723D3),
+	SPH_C64(0x7F4ADE4A4A7F206A), SPH_C64(0x95DA73DADA95449E),
+	SPH_C64(0x2558E8585825A2FA), SPH_C64(0xCAC946C9C9CACF06),
+	SPH_C64(0x8D297B29298D7C55), SPH_C64(0x220A1E0A0A225A50),
+	SPH_C64(0x4FB1CEB1B14F50E1), SPH_C64(0x1AA0FDA0A01AC969),
+	SPH_C64(0xDA6BBD6B6BDA147F), SPH_C64(0xAB85928585ABD95C),
+	SPH_C64(0x73BDDABDBD733C81), SPH_C64(0x345DE75D5D348FD2),
+	SPH_C64(0x5010301010509080), SPH_C64(0x03F401F4F40307F3),
+	SPH_C64(0xC0CB40CBCBC0DD16), SPH_C64(0xC63E423E3EC6D3ED),
+	SPH_C64(0x11050F0505112D28), SPH_C64(0xE667A96767E6781F),
+	SPH_C64(0x53E431E4E4539773), SPH_C64(0xBB27692727BB0225),
+	SPH_C64(0x5841C34141587332), SPH_C64(0x9D8B808B8B9DA72C),
+	SPH_C64(0x01A7F4A7A701F651), SPH_C64(0x947D877D7D94B2CF),
+	SPH_C64(0xFB95A29595FB49DC), SPH_C64(0x9FD875D8D89F568E),
+	SPH_C64(0x30FB10FBFB30708B), SPH_C64(0x71EE2FEEEE71CD23),
+	SPH_C64(0x917C847C7C91BBC7), SPH_C64(0xE366AA6666E37117),
+	SPH_C64(0x8EDD7ADDDD8E7BA6), SPH_C64(0x4B173917174BAFB8),
+	SPH_C64(0x4647C94747464502), SPH_C64(0xDC9EBF9E9EDC1A84),
+	SPH_C64(0xC5CA43CACAC5D41E), SPH_C64(0x992D772D2D995875),
+	SPH_C64(0x79BFDCBFBF792E91), SPH_C64(0x1B070907071B3F38),
+	SPH_C64(0x23ADEAADAD23AC01), SPH_C64(0x2F5AEE5A5A2FB0EA),
+	SPH_C64(0xB583988383B5EF6C), SPH_C64(0xFF33553333FFB685),
+	SPH_C64(0xF263A56363F25C3F), SPH_C64(0x0A020602020A1210),
+	SPH_C64(0x38AAE3AAAA389339), SPH_C64(0xA871937171A8DEAF),
+	SPH_C64(0xCFC845C8C8CFC60E), SPH_C64(0x7D192B19197DD1C8),
+	SPH_C64(0x7049DB4949703B72), SPH_C64(0x9AD976D9D99A5F86),
+	SPH_C64(0x1DF20BF2F21D31C3), SPH_C64(0x48E338E3E348A84B),
+	SPH_C64(0x2A5BED5B5B2AB9E2), SPH_C64(0x928885888892BC34),
+	SPH_C64(0xC89AB39A9AC83EA4), SPH_C64(0xBE266A2626BE0B2D),
+	SPH_C64(0xFA32563232FABF8D), SPH_C64(0x4AB0CDB0B04A59E9),
+	SPH_C64(0x6AE926E9E96AF21B), SPH_C64(0x330F110F0F337778),
+	SPH_C64(0xA6D562D5D5A633E6), SPH_C64(0xBA809D8080BAF474),
+	SPH_C64(0x7CBEDFBEBE7C2799), SPH_C64(0xDECD4ACDCDDEEB26),
+	SPH_C64(0xE4345C3434E489BD), SPH_C64(0x7548D8484875327A),
+	SPH_C64(0x24FF1CFFFF2454AB), SPH_C64(0x8F7A8E7A7A8F8DF7),
+	SPH_C64(0xEA90AD9090EA64F4), SPH_C64(0x3E5FE15F5F3E9DC2),
+	SPH_C64(0xA020602020A03D1D), SPH_C64(0xD568B86868D50F67),
+	SPH_C64(0x721A2E1A1A72CAD0), SPH_C64(0x2CAEEFAEAE2CB719),
+	SPH_C64(0x5EB4C1B4B45E7DC9), SPH_C64(0x1954FC545419CE9A),
+	SPH_C64(0xE593A89393E57FEC), SPH_C64(0xAA22662222AA2F0D),
+	SPH_C64(0xE964AC6464E96307), SPH_C64(0x12F10EF1F1122ADB),
+	SPH_C64(0xA273957373A2CCBF), SPH_C64(0x5A123612125A8290),
+	SPH_C64(0x5D40C040405D7A3A), SPH_C64(0x2808180808284840),
+	SPH_C64(0xE8C358C3C3E89556), SPH_C64(0x7BEC29ECEC7BDF33),
+	SPH_C64(0x90DB70DBDB904D96), SPH_C64(0x1FA1FEA1A11FC061),
+	SPH_C64(0x838D8A8D8D83911C), SPH_C64(0xC93D473D3DC9C8F5),
+	SPH_C64(0xF197A49797F15BCC), SPH_C64(0x0000000000000000),
+	SPH_C64(0xD4CF4CCFCFD4F936), SPH_C64(0x872B7D2B2B876E45),
+	SPH_C64(0xB3769A7676B3E197), SPH_C64(0xB0829B8282B0E664),
+	SPH_C64(0xA9D667D6D6A928FE), SPH_C64(0x771B2D1B1B77C3D8),
+	SPH_C64(0x5BB5C2B5B55B74C1), SPH_C64(0x29AFECAFAF29BE11),
+	SPH_C64(0xDF6ABE6A6ADF1D77), SPH_C64(0x0D50F050500DEABA),
+	SPH_C64(0x4C45CF45454C5712), SPH_C64(0x18F308F3F31838CB),
+	SPH_C64(0xF030503030F0AD9D), SPH_C64(0x74EF2CEFEF74C42B),
+	SPH_C64(0xC33F413F3FC3DAE5), SPH_C64(0x1C55FF55551CC792),
+	SPH_C64(0x10A2FBA2A210DB79), SPH_C64(0x65EA23EAEA65E903),
+	SPH_C64(0xEC65AF6565EC6A0F), SPH_C64(0x68BAD3BABA6803B9),
+	SPH_C64(0x932F712F2F934A65), SPH_C64(0xE7C05DC0C0E78E4E),
+	SPH_C64(0x81DE7FDEDE8160BE), SPH_C64(0x6C1C241C1C6CFCE0),
+	SPH_C64(0x2EFD1AFDFD2E46BB), SPH_C64(0x644DD74D4D641F52),
+	SPH_C64(0xE092AB9292E076E4), SPH_C64(0xBC759F7575BCFA8F),
+	SPH_C64(0x1E060A06061E3630), SPH_C64(0x988A838A8A98AE24),
+	SPH_C64(0x40B2CBB2B2404BF9), SPH_C64(0x59E637E6E6598563),
+	SPH_C64(0x360E120E0E367E70), SPH_C64(0x631F211F1F63E7F8),
+	SPH_C64(0xF762A66262F75537), SPH_C64(0xA3D461D4D4A33AEE),
+	SPH_C64(0x32A8E5A8A8328129), SPH_C64(0xF496A79696F452C4),
+	SPH_C64(0x3AF916F9F93A629B), SPH_C64(0xF6C552C5C5F6A366),
+	SPH_C64(0xB1256F2525B11035), SPH_C64(0x2059EB595920ABF2),
+	SPH_C64(0xAE84918484AED054), SPH_C64(0xA772967272A7C5B7),
+	SPH_C64(0xDD394B3939DDECD5), SPH_C64(0x614CD44C4C61165A),
+	SPH_C64(0x3B5EE25E5E3B94CA), SPH_C64(0x8578887878859FE7),
+	SPH_C64(0xD838483838D8E5DD), SPH_C64(0x868C898C8C869814),
+	SPH_C64(0xB2D16ED1D1B217C6), SPH_C64(0x0BA5F2A5A50BE441),
+	SPH_C64(0x4DE23BE2E24DA143), SPH_C64(0xF861A36161F84E2F),
+	SPH_C64(0x45B3C8B3B34542F1), SPH_C64(0xA521632121A53415),
+	SPH_C64(0xD69CB99C9CD60894), SPH_C64(0x661E221E1E66EEF0),
+	SPH_C64(0x5243C54343526122), SPH_C64(0xFCC754C7C7FCB176),
+	SPH_C64(0x2BFC19FCFC2B4FB3), SPH_C64(0x14040C0404142420),
+	SPH_C64(0x0851F3515108E3B2), SPH_C64(0xC799B69999C725BC),
+	SPH_C64(0xC46DB76D6DC4224F), SPH_C64(0x390D170D0D396568),
+	SPH_C64(0x35FA13FAFA357983), SPH_C64(0x84DF7CDFDF8469B6),
+	SPH_C64(0x9B7E827E7E9BA9D7), SPH_C64(0xB4246C2424B4193D),
+	SPH_C64(0xD73B4D3B3BD7FEC5), SPH_C64(0x3DABE0ABAB3D9A31),
+	SPH_C64(0xD1CE4FCECED1F03E), SPH_C64(0x5511331111559988),
+	SPH_C64(0x898F8C8F8F89830C), SPH_C64(0x6B4ED24E4E6B044A),
+	SPH_C64(0x51B7C4B7B75166D1), SPH_C64(0x60EB20EBEB60E00B),
+	SPH_C64(0xCC3C443C3CCCC1FD), SPH_C64(0xBF819E8181BFFD7C),
+	SPH_C64(0xFE94A19494FE40D4), SPH_C64(0x0CF704F7F70C1CEB),
+	SPH_C64(0x67B9D6B9B96718A1), SPH_C64(0x5F133513135F8B98),
+	SPH_C64(0x9C2C742C2C9C517D), SPH_C64(0xB8D368D3D3B805D6),
+	SPH_C64(0x5CE734E7E75C8C6B), SPH_C64(0xCB6EB26E6ECB3957),
+	SPH_C64(0xF3C451C4C4F3AA6E), SPH_C64(0x0F030503030F1B18),
+	SPH_C64(0x1356FA565613DC8A), SPH_C64(0x4944CC4444495E1A),
+	SPH_C64(0x9E7F817F7F9EA0DF), SPH_C64(0x37A9E6A9A9378821),
+	SPH_C64(0x822A7E2A2A82674D), SPH_C64(0x6DBBD0BBBB6D0AB1),
+	SPH_C64(0xE2C15EC1C1E28746), SPH_C64(0x0253F5535302F1A2),
+	SPH_C64(0x8BDC79DCDC8B72AE), SPH_C64(0x270B1D0B0B275358),
+	SPH_C64(0xD39DBA9D9DD3019C), SPH_C64(0xC16CB46C6CC12B47),
+	SPH_C64(0xF531533131F5A495), SPH_C64(0xB9749C7474B9F387),
+	SPH_C64(0x09F607F6F60915E3), SPH_C64(0x4346CA4646434C0A),
+	SPH_C64(0x26ACE9ACAC26A509), SPH_C64(0x978986898997B53C),
+	SPH_C64(0x44143C141444B4A0), SPH_C64(0x42E13EE1E142BA5B),
+	SPH_C64(0x4E163A16164EA6B0), SPH_C64(0xD23A4E3A3AD2F7CD),
+	SPH_C64(0xD069BB6969D0066F), SPH_C64(0x2D091B09092D4148),
+	SPH_C64(0xAD70907070ADD7A7), SPH_C64(0x54B6C7B6B6546FD9),
+	SPH_C64(0xB7D06DD0D0B71ECE), SPH_C64(0x7EED2AEDED7ED63B),
+	SPH_C64(0xDBCC49CCCCDBE22E), SPH_C64(0x5742C6424257682A),
+	SPH_C64(0xC298B59898C22CB4), SPH_C64(0x0EA4F1A4A40EED49),
+	SPH_C64(0x882878282888755D), SPH_C64(0x315CE45C5C3186DA),
+	SPH_C64(0x3FF815F8F83F6B93), SPH_C64(0xA486978686A4C244)
+};
+
+static const sph_u64 old1_T4[256] = {
+	SPH_C64(0x1828181878D8C078), SPH_C64(0x23652323AF2605AF),
+	SPH_C64(0xC657C6C6F9B87EF9), SPH_C64(0xE825E8E86FFB136F),
+	SPH_C64(0x87948787A1CB4CA1), SPH_C64(0xB8D5B8B86211A962),
+	SPH_C64(0x0103010105090805), SPH_C64(0x4FD14F4F6E0D426E),
+	SPH_C64(0x365A3636EE9BADEE), SPH_C64(0xA6F7A6A604FF5904),
+	SPH_C64(0xD26BD2D2BD0CDEBD), SPH_C64(0xF502F5F5060EFB06),
+	SPH_C64(0x798B79798096EF80), SPH_C64(0x6FB16F6FCE305FCE),
+	SPH_C64(0x91AE9191EF6DFCEF), SPH_C64(0x52F6525207F8AA07),
+	SPH_C64(0x60A06060FD4727FD), SPH_C64(0xBCD9BCBC76358976),
+	SPH_C64(0x9BB09B9BCD37ACCD), SPH_C64(0x8E8F8E8E8C8A048C),
+	SPH_C64(0xA3F8A3A315D27115), SPH_C64(0x0C140C0C3C6C603C),
+	SPH_C64(0x7B8D7B7B8A84FF8A), SPH_C64(0x355F3535E180B5E1),
+	SPH_C64(0x1D271D1D69F5E869), SPH_C64(0xE03DE0E047B35347),
+	SPH_C64(0xD764D7D7AC21F6AC), SPH_C64(0xC25BC2C2ED9C5EED),
+	SPH_C64(0x2E722E2E96436D96), SPH_C64(0x4BDD4B4B7A29627A),
+	SPH_C64(0xFE1FFEFE215DA321), SPH_C64(0x57F9575716D58216),
+	SPH_C64(0x153F151541BDA841), SPH_C64(0x77997777B6E89FB6),
+	SPH_C64(0x37593737EB92A5EB), SPH_C64(0xE532E5E5569E7B56),
+	SPH_C64(0x9FBC9F9FD9138CD9), SPH_C64(0xF00DF0F01723D317),
+	SPH_C64(0x4ADE4A4A7F206A7F), SPH_C64(0xDA73DADA95449E95),
+	SPH_C64(0x58E8585825A2FA25), SPH_C64(0xC946C9C9CACF06CA),
+	SPH_C64(0x297B29298D7C558D), SPH_C64(0x0A1E0A0A225A5022),
+	SPH_C64(0xB1CEB1B14F50E14F), SPH_C64(0xA0FDA0A01AC9691A),
+	SPH_C64(0x6BBD6B6BDA147FDA), SPH_C64(0x85928585ABD95CAB),
+	SPH_C64(0xBDDABDBD733C8173), SPH_C64(0x5DE75D5D348FD234),
+	SPH_C64(0x1030101050908050), SPH_C64(0xF401F4F40307F303),
+	SPH_C64(0xCB40CBCBC0DD16C0), SPH_C64(0x3E423E3EC6D3EDC6),
+	SPH_C64(0x050F0505112D2811), SPH_C64(0x67A96767E6781FE6),
+	SPH_C64(0xE431E4E453977353), SPH_C64(0x27692727BB0225BB),
+	SPH_C64(0x41C3414158733258), SPH_C64(0x8B808B8B9DA72C9D),
+	SPH_C64(0xA7F4A7A701F65101), SPH_C64(0x7D877D7D94B2CF94),
+	SPH_C64(0x95A29595FB49DCFB), SPH_C64(0xD875D8D89F568E9F),
+	SPH_C64(0xFB10FBFB30708B30), SPH_C64(0xEE2FEEEE71CD2371),
+	SPH_C64(0x7C847C7C91BBC791), SPH_C64(0x66AA6666E37117E3),
+	SPH_C64(0xDD7ADDDD8E7BA68E), SPH_C64(0x173917174BAFB84B),
+	SPH_C64(0x47C9474746450246), SPH_C64(0x9EBF9E9EDC1A84DC),
+	SPH_C64(0xCA43CACAC5D41EC5), SPH_C64(0x2D772D2D99587599),
+	SPH_C64(0xBFDCBFBF792E9179), SPH_C64(0x070907071B3F381B),
+	SPH_C64(0xADEAADAD23AC0123), SPH_C64(0x5AEE5A5A2FB0EA2F),
+	SPH_C64(0x83988383B5EF6CB5), SPH_C64(0x33553333FFB685FF),
+	SPH_C64(0x63A56363F25C3FF2), SPH_C64(0x020602020A12100A),
+	SPH_C64(0xAAE3AAAA38933938), SPH_C64(0x71937171A8DEAFA8),
+	SPH_C64(0xC845C8C8CFC60ECF), SPH_C64(0x192B19197DD1C87D),
+	SPH_C64(0x49DB4949703B7270), SPH_C64(0xD976D9D99A5F869A),
+	SPH_C64(0xF20BF2F21D31C31D), SPH_C64(0xE338E3E348A84B48),
+	SPH_C64(0x5BED5B5B2AB9E22A), SPH_C64(0x8885888892BC3492),
+	SPH_C64(0x9AB39A9AC83EA4C8), SPH_C64(0x266A2626BE0B2DBE),
+	SPH_C64(0x32563232FABF8DFA), SPH_C64(0xB0CDB0B04A59E94A),
+	SPH_C64(0xE926E9E96AF21B6A), SPH_C64(0x0F110F0F33777833),
+	SPH_C64(0xD562D5D5A633E6A6), SPH_C64(0x809D8080BAF474BA),
+	SPH_C64(0xBEDFBEBE7C27997C), SPH_C64(0xCD4ACDCDDEEB26DE),
+	SPH_C64(0x345C3434E489BDE4), SPH_C64(0x48D8484875327A75),
+	SPH_C64(0xFF1CFFFF2454AB24), SPH_C64(0x7A8E7A7A8F8DF78F),
+	SPH_C64(0x90AD9090EA64F4EA), SPH_C64(0x5FE15F5F3E9DC23E),
+	SPH_C64(0x20602020A03D1DA0), SPH_C64(0x68B86868D50F67D5),
+	SPH_C64(0x1A2E1A1A72CAD072), SPH_C64(0xAEEFAEAE2CB7192C),
+	SPH_C64(0xB4C1B4B45E7DC95E), SPH_C64(0x54FC545419CE9A19),
+	SPH_C64(0x93A89393E57FECE5), SPH_C64(0x22662222AA2F0DAA),
+	SPH_C64(0x64AC6464E96307E9), SPH_C64(0xF10EF1F1122ADB12),
+	SPH_C64(0x73957373A2CCBFA2), SPH_C64(0x123612125A82905A),
+	SPH_C64(0x40C040405D7A3A5D), SPH_C64(0x0818080828484028),
+	SPH_C64(0xC358C3C3E89556E8), SPH_C64(0xEC29ECEC7BDF337B),
+	SPH_C64(0xDB70DBDB904D9690), SPH_C64(0xA1FEA1A11FC0611F),
+	SPH_C64(0x8D8A8D8D83911C83), SPH_C64(0x3D473D3DC9C8F5C9),
+	SPH_C64(0x97A49797F15BCCF1), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCF4CCFCFD4F936D4), SPH_C64(0x2B7D2B2B876E4587),
+	SPH_C64(0x769A7676B3E197B3), SPH_C64(0x829B8282B0E664B0),
+	SPH_C64(0xD667D6D6A928FEA9), SPH_C64(0x1B2D1B1B77C3D877),
+	SPH_C64(0xB5C2B5B55B74C15B), SPH_C64(0xAFECAFAF29BE1129),
+	SPH_C64(0x6ABE6A6ADF1D77DF), SPH_C64(0x50F050500DEABA0D),
+	SPH_C64(0x45CF45454C57124C), SPH_C64(0xF308F3F31838CB18),
+	SPH_C64(0x30503030F0AD9DF0), SPH_C64(0xEF2CEFEF74C42B74),
+	SPH_C64(0x3F413F3FC3DAE5C3), SPH_C64(0x55FF55551CC7921C),
+	SPH_C64(0xA2FBA2A210DB7910), SPH_C64(0xEA23EAEA65E90365),
+	SPH_C64(0x65AF6565EC6A0FEC), SPH_C64(0xBAD3BABA6803B968),
+	SPH_C64(0x2F712F2F934A6593), SPH_C64(0xC05DC0C0E78E4EE7),
+	SPH_C64(0xDE7FDEDE8160BE81), SPH_C64(0x1C241C1C6CFCE06C),
+	SPH_C64(0xFD1AFDFD2E46BB2E), SPH_C64(0x4DD74D4D641F5264),
+	SPH_C64(0x92AB9292E076E4E0), SPH_C64(0x759F7575BCFA8FBC),
+	SPH_C64(0x060A06061E36301E), SPH_C64(0x8A838A8A98AE2498),
+	SPH_C64(0xB2CBB2B2404BF940), SPH_C64(0xE637E6E659856359),
+	SPH_C64(0x0E120E0E367E7036), SPH_C64(0x1F211F1F63E7F863),
+	SPH_C64(0x62A66262F75537F7), SPH_C64(0xD461D4D4A33AEEA3),
+	SPH_C64(0xA8E5A8A832812932), SPH_C64(0x96A79696F452C4F4),
+	SPH_C64(0xF916F9F93A629B3A), SPH_C64(0xC552C5C5F6A366F6),
+	SPH_C64(0x256F2525B11035B1), SPH_C64(0x59EB595920ABF220),
+	SPH_C64(0x84918484AED054AE), SPH_C64(0x72967272A7C5B7A7),
+	SPH_C64(0x394B3939DDECD5DD), SPH_C64(0x4CD44C4C61165A61),
+	SPH_C64(0x5EE25E5E3B94CA3B), SPH_C64(0x78887878859FE785),
+	SPH_C64(0x38483838D8E5DDD8), SPH_C64(0x8C898C8C86981486),
+	SPH_C64(0xD16ED1D1B217C6B2), SPH_C64(0xA5F2A5A50BE4410B),
+	SPH_C64(0xE23BE2E24DA1434D), SPH_C64(0x61A36161F84E2FF8),
+	SPH_C64(0xB3C8B3B34542F145), SPH_C64(0x21632121A53415A5),
+	SPH_C64(0x9CB99C9CD60894D6), SPH_C64(0x1E221E1E66EEF066),
+	SPH_C64(0x43C5434352612252), SPH_C64(0xC754C7C7FCB176FC),
+	SPH_C64(0xFC19FCFC2B4FB32B), SPH_C64(0x040C040414242014),
+	SPH_C64(0x51F3515108E3B208), SPH_C64(0x99B69999C725BCC7),
+	SPH_C64(0x6DB76D6DC4224FC4), SPH_C64(0x0D170D0D39656839),
+	SPH_C64(0xFA13FAFA35798335), SPH_C64(0xDF7CDFDF8469B684),
+	SPH_C64(0x7E827E7E9BA9D79B), SPH_C64(0x246C2424B4193DB4),
+	SPH_C64(0x3B4D3B3BD7FEC5D7), SPH_C64(0xABE0ABAB3D9A313D),
+	SPH_C64(0xCE4FCECED1F03ED1), SPH_C64(0x1133111155998855),
+	SPH_C64(0x8F8C8F8F89830C89), SPH_C64(0x4ED24E4E6B044A6B),
+	SPH_C64(0xB7C4B7B75166D151), SPH_C64(0xEB20EBEB60E00B60),
+	SPH_C64(0x3C443C3CCCC1FDCC), SPH_C64(0x819E8181BFFD7CBF),
+	SPH_C64(0x94A19494FE40D4FE), SPH_C64(0xF704F7F70C1CEB0C),
+	SPH_C64(0xB9D6B9B96718A167), SPH_C64(0x133513135F8B985F),
+	SPH_C64(0x2C742C2C9C517D9C), SPH_C64(0xD368D3D3B805D6B8),
+	SPH_C64(0xE734E7E75C8C6B5C), SPH_C64(0x6EB26E6ECB3957CB),
+	SPH_C64(0xC451C4C4F3AA6EF3), SPH_C64(0x030503030F1B180F),
+	SPH_C64(0x56FA565613DC8A13), SPH_C64(0x44CC4444495E1A49),
+	SPH_C64(0x7F817F7F9EA0DF9E), SPH_C64(0xA9E6A9A937882137),
+	SPH_C64(0x2A7E2A2A82674D82), SPH_C64(0xBBD0BBBB6D0AB16D),
+	SPH_C64(0xC15EC1C1E28746E2), SPH_C64(0x53F5535302F1A202),
+	SPH_C64(0xDC79DCDC8B72AE8B), SPH_C64(0x0B1D0B0B27535827),
+	SPH_C64(0x9DBA9D9DD3019CD3), SPH_C64(0x6CB46C6CC12B47C1),
+	SPH_C64(0x31533131F5A495F5), SPH_C64(0x749C7474B9F387B9),
+	SPH_C64(0xF607F6F60915E309), SPH_C64(0x46CA4646434C0A43),
+	SPH_C64(0xACE9ACAC26A50926), SPH_C64(0x8986898997B53C97),
+	SPH_C64(0x143C141444B4A044), SPH_C64(0xE13EE1E142BA5B42),
+	SPH_C64(0x163A16164EA6B04E), SPH_C64(0x3A4E3A3AD2F7CDD2),
+	SPH_C64(0x69BB6969D0066FD0), SPH_C64(0x091B09092D41482D),
+	SPH_C64(0x70907070ADD7A7AD), SPH_C64(0xB6C7B6B6546FD954),
+	SPH_C64(0xD06DD0D0B71ECEB7), SPH_C64(0xED2AEDED7ED63B7E),
+	SPH_C64(0xCC49CCCCDBE22EDB), SPH_C64(0x42C6424257682A57),
+	SPH_C64(0x98B59898C22CB4C2), SPH_C64(0xA4F1A4A40EED490E),
+	SPH_C64(0x2878282888755D88), SPH_C64(0x5CE45C5C3186DA31),
+	SPH_C64(0xF815F8F83F6B933F), SPH_C64(0x86978686A4C244A4)
+};
+
+static const sph_u64 old1_T5[256] = {
+	SPH_C64(0x28181878D8C07818), SPH_C64(0x652323AF2605AF23),
+	SPH_C64(0x57C6C6F9B87EF9C6), SPH_C64(0x25E8E86FFB136FE8),
+	SPH_C64(0x948787A1CB4CA187), SPH_C64(0xD5B8B86211A962B8),
+	SPH_C64(0x0301010509080501), SPH_C64(0xD14F4F6E0D426E4F),
+	SPH_C64(0x5A3636EE9BADEE36), SPH_C64(0xF7A6A604FF5904A6),
+	SPH_C64(0x6BD2D2BD0CDEBDD2), SPH_C64(0x02F5F5060EFB06F5),
+	SPH_C64(0x8B79798096EF8079), SPH_C64(0xB16F6FCE305FCE6F),
+	SPH_C64(0xAE9191EF6DFCEF91), SPH_C64(0xF6525207F8AA0752),
+	SPH_C64(0xA06060FD4727FD60), SPH_C64(0xD9BCBC76358976BC),
+	SPH_C64(0xB09B9BCD37ACCD9B), SPH_C64(0x8F8E8E8C8A048C8E),
+	SPH_C64(0xF8A3A315D27115A3), SPH_C64(0x140C0C3C6C603C0C),
+	SPH_C64(0x8D7B7B8A84FF8A7B), SPH_C64(0x5F3535E180B5E135),
+	SPH_C64(0x271D1D69F5E8691D), SPH_C64(0x3DE0E047B35347E0),
+	SPH_C64(0x64D7D7AC21F6ACD7), SPH_C64(0x5BC2C2ED9C5EEDC2),
+	SPH_C64(0x722E2E96436D962E), SPH_C64(0xDD4B4B7A29627A4B),
+	SPH_C64(0x1FFEFE215DA321FE), SPH_C64(0xF9575716D5821657),
+	SPH_C64(0x3F151541BDA84115), SPH_C64(0x997777B6E89FB677),
+	SPH_C64(0x593737EB92A5EB37), SPH_C64(0x32E5E5569E7B56E5),
+	SPH_C64(0xBC9F9FD9138CD99F), SPH_C64(0x0DF0F01723D317F0),
+	SPH_C64(0xDE4A4A7F206A7F4A), SPH_C64(0x73DADA95449E95DA),
+	SPH_C64(0xE8585825A2FA2558), SPH_C64(0x46C9C9CACF06CAC9),
+	SPH_C64(0x7B29298D7C558D29), SPH_C64(0x1E0A0A225A50220A),
+	SPH_C64(0xCEB1B14F50E14FB1), SPH_C64(0xFDA0A01AC9691AA0),
+	SPH_C64(0xBD6B6BDA147FDA6B), SPH_C64(0x928585ABD95CAB85),
+	SPH_C64(0xDABDBD733C8173BD), SPH_C64(0xE75D5D348FD2345D),
+	SPH_C64(0x3010105090805010), SPH_C64(0x01F4F40307F303F4),
+	SPH_C64(0x40CBCBC0DD16C0CB), SPH_C64(0x423E3EC6D3EDC63E),
+	SPH_C64(0x0F0505112D281105), SPH_C64(0xA96767E6781FE667),
+	SPH_C64(0x31E4E453977353E4), SPH_C64(0x692727BB0225BB27),
+	SPH_C64(0xC341415873325841), SPH_C64(0x808B8B9DA72C9D8B),
+	SPH_C64(0xF4A7A701F65101A7), SPH_C64(0x877D7D94B2CF947D),
+	SPH_C64(0xA29595FB49DCFB95), SPH_C64(0x75D8D89F568E9FD8),
+	SPH_C64(0x10FBFB30708B30FB), SPH_C64(0x2FEEEE71CD2371EE),
+	SPH_C64(0x847C7C91BBC7917C), SPH_C64(0xAA6666E37117E366),
+	SPH_C64(0x7ADDDD8E7BA68EDD), SPH_C64(0x3917174BAFB84B17),
+	SPH_C64(0xC947474645024647), SPH_C64(0xBF9E9EDC1A84DC9E),
+	SPH_C64(0x43CACAC5D41EC5CA), SPH_C64(0x772D2D995875992D),
+	SPH_C64(0xDCBFBF792E9179BF), SPH_C64(0x0907071B3F381B07),
+	SPH_C64(0xEAADAD23AC0123AD), SPH_C64(0xEE5A5A2FB0EA2F5A),
+	SPH_C64(0x988383B5EF6CB583), SPH_C64(0x553333FFB685FF33),
+	SPH_C64(0xA56363F25C3FF263), SPH_C64(0x0602020A12100A02),
+	SPH_C64(0xE3AAAA38933938AA), SPH_C64(0x937171A8DEAFA871),
+	SPH_C64(0x45C8C8CFC60ECFC8), SPH_C64(0x2B19197DD1C87D19),
+	SPH_C64(0xDB4949703B727049), SPH_C64(0x76D9D99A5F869AD9),
+	SPH_C64(0x0BF2F21D31C31DF2), SPH_C64(0x38E3E348A84B48E3),
+	SPH_C64(0xED5B5B2AB9E22A5B), SPH_C64(0x85888892BC349288),
+	SPH_C64(0xB39A9AC83EA4C89A), SPH_C64(0x6A2626BE0B2DBE26),
+	SPH_C64(0x563232FABF8DFA32), SPH_C64(0xCDB0B04A59E94AB0),
+	SPH_C64(0x26E9E96AF21B6AE9), SPH_C64(0x110F0F337778330F),
+	SPH_C64(0x62D5D5A633E6A6D5), SPH_C64(0x9D8080BAF474BA80),
+	SPH_C64(0xDFBEBE7C27997CBE), SPH_C64(0x4ACDCDDEEB26DECD),
+	SPH_C64(0x5C3434E489BDE434), SPH_C64(0xD8484875327A7548),
+	SPH_C64(0x1CFFFF2454AB24FF), SPH_C64(0x8E7A7A8F8DF78F7A),
+	SPH_C64(0xAD9090EA64F4EA90), SPH_C64(0xE15F5F3E9DC23E5F),
+	SPH_C64(0x602020A03D1DA020), SPH_C64(0xB86868D50F67D568),
+	SPH_C64(0x2E1A1A72CAD0721A), SPH_C64(0xEFAEAE2CB7192CAE),
+	SPH_C64(0xC1B4B45E7DC95EB4), SPH_C64(0xFC545419CE9A1954),
+	SPH_C64(0xA89393E57FECE593), SPH_C64(0x662222AA2F0DAA22),
+	SPH_C64(0xAC6464E96307E964), SPH_C64(0x0EF1F1122ADB12F1),
+	SPH_C64(0x957373A2CCBFA273), SPH_C64(0x3612125A82905A12),
+	SPH_C64(0xC040405D7A3A5D40), SPH_C64(0x1808082848402808),
+	SPH_C64(0x58C3C3E89556E8C3), SPH_C64(0x29ECEC7BDF337BEC),
+	SPH_C64(0x70DBDB904D9690DB), SPH_C64(0xFEA1A11FC0611FA1),
+	SPH_C64(0x8A8D8D83911C838D), SPH_C64(0x473D3DC9C8F5C93D),
+	SPH_C64(0xA49797F15BCCF197), SPH_C64(0x0000000000000000),
+	SPH_C64(0x4CCFCFD4F936D4CF), SPH_C64(0x7D2B2B876E45872B),
+	SPH_C64(0x9A7676B3E197B376), SPH_C64(0x9B8282B0E664B082),
+	SPH_C64(0x67D6D6A928FEA9D6), SPH_C64(0x2D1B1B77C3D8771B),
+	SPH_C64(0xC2B5B55B74C15BB5), SPH_C64(0xECAFAF29BE1129AF),
+	SPH_C64(0xBE6A6ADF1D77DF6A), SPH_C64(0xF050500DEABA0D50),
+	SPH_C64(0xCF45454C57124C45), SPH_C64(0x08F3F31838CB18F3),
+	SPH_C64(0x503030F0AD9DF030), SPH_C64(0x2CEFEF74C42B74EF),
+	SPH_C64(0x413F3FC3DAE5C33F), SPH_C64(0xFF55551CC7921C55),
+	SPH_C64(0xFBA2A210DB7910A2), SPH_C64(0x23EAEA65E90365EA),
+	SPH_C64(0xAF6565EC6A0FEC65), SPH_C64(0xD3BABA6803B968BA),
+	SPH_C64(0x712F2F934A65932F), SPH_C64(0x5DC0C0E78E4EE7C0),
+	SPH_C64(0x7FDEDE8160BE81DE), SPH_C64(0x241C1C6CFCE06C1C),
+	SPH_C64(0x1AFDFD2E46BB2EFD), SPH_C64(0xD74D4D641F52644D),
+	SPH_C64(0xAB9292E076E4E092), SPH_C64(0x9F7575BCFA8FBC75),
+	SPH_C64(0x0A06061E36301E06), SPH_C64(0x838A8A98AE24988A),
+	SPH_C64(0xCBB2B2404BF940B2), SPH_C64(0x37E6E659856359E6),
+	SPH_C64(0x120E0E367E70360E), SPH_C64(0x211F1F63E7F8631F),
+	SPH_C64(0xA66262F75537F762), SPH_C64(0x61D4D4A33AEEA3D4),
+	SPH_C64(0xE5A8A832812932A8), SPH_C64(0xA79696F452C4F496),
+	SPH_C64(0x16F9F93A629B3AF9), SPH_C64(0x52C5C5F6A366F6C5),
+	SPH_C64(0x6F2525B11035B125), SPH_C64(0xEB595920ABF22059),
+	SPH_C64(0x918484AED054AE84), SPH_C64(0x967272A7C5B7A772),
+	SPH_C64(0x4B3939DDECD5DD39), SPH_C64(0xD44C4C61165A614C),
+	SPH_C64(0xE25E5E3B94CA3B5E), SPH_C64(0x887878859FE78578),
+	SPH_C64(0x483838D8E5DDD838), SPH_C64(0x898C8C869814868C),
+	SPH_C64(0x6ED1D1B217C6B2D1), SPH_C64(0xF2A5A50BE4410BA5),
+	SPH_C64(0x3BE2E24DA1434DE2), SPH_C64(0xA36161F84E2FF861),
+	SPH_C64(0xC8B3B34542F145B3), SPH_C64(0x632121A53415A521),
+	SPH_C64(0xB99C9CD60894D69C), SPH_C64(0x221E1E66EEF0661E),
+	SPH_C64(0xC543435261225243), SPH_C64(0x54C7C7FCB176FCC7),
+	SPH_C64(0x19FCFC2B4FB32BFC), SPH_C64(0x0C04041424201404),
+	SPH_C64(0xF3515108E3B20851), SPH_C64(0xB69999C725BCC799),
+	SPH_C64(0xB76D6DC4224FC46D), SPH_C64(0x170D0D396568390D),
+	SPH_C64(0x13FAFA35798335FA), SPH_C64(0x7CDFDF8469B684DF),
+	SPH_C64(0x827E7E9BA9D79B7E), SPH_C64(0x6C2424B4193DB424),
+	SPH_C64(0x4D3B3BD7FEC5D73B), SPH_C64(0xE0ABAB3D9A313DAB),
+	SPH_C64(0x4FCECED1F03ED1CE), SPH_C64(0x3311115599885511),
+	SPH_C64(0x8C8F8F89830C898F), SPH_C64(0xD24E4E6B044A6B4E),
+	SPH_C64(0xC4B7B75166D151B7), SPH_C64(0x20EBEB60E00B60EB),
+	SPH_C64(0x443C3CCCC1FDCC3C), SPH_C64(0x9E8181BFFD7CBF81),
+	SPH_C64(0xA19494FE40D4FE94), SPH_C64(0x04F7F70C1CEB0CF7),
+	SPH_C64(0xD6B9B96718A167B9), SPH_C64(0x3513135F8B985F13),
+	SPH_C64(0x742C2C9C517D9C2C), SPH_C64(0x68D3D3B805D6B8D3),
+	SPH_C64(0x34E7E75C8C6B5CE7), SPH_C64(0xB26E6ECB3957CB6E),
+	SPH_C64(0x51C4C4F3AA6EF3C4), SPH_C64(0x0503030F1B180F03),
+	SPH_C64(0xFA565613DC8A1356), SPH_C64(0xCC4444495E1A4944),
+	SPH_C64(0x817F7F9EA0DF9E7F), SPH_C64(0xE6A9A937882137A9),
+	SPH_C64(0x7E2A2A82674D822A), SPH_C64(0xD0BBBB6D0AB16DBB),
+	SPH_C64(0x5EC1C1E28746E2C1), SPH_C64(0xF5535302F1A20253),
+	SPH_C64(0x79DCDC8B72AE8BDC), SPH_C64(0x1D0B0B275358270B),
+	SPH_C64(0xBA9D9DD3019CD39D), SPH_C64(0xB46C6CC12B47C16C),
+	SPH_C64(0x533131F5A495F531), SPH_C64(0x9C7474B9F387B974),
+	SPH_C64(0x07F6F60915E309F6), SPH_C64(0xCA4646434C0A4346),
+	SPH_C64(0xE9ACAC26A50926AC), SPH_C64(0x86898997B53C9789),
+	SPH_C64(0x3C141444B4A04414), SPH_C64(0x3EE1E142BA5B42E1),
+	SPH_C64(0x3A16164EA6B04E16), SPH_C64(0x4E3A3AD2F7CDD23A),
+	SPH_C64(0xBB6969D0066FD069), SPH_C64(0x1B09092D41482D09),
+	SPH_C64(0x907070ADD7A7AD70), SPH_C64(0xC7B6B6546FD954B6),
+	SPH_C64(0x6DD0D0B71ECEB7D0), SPH_C64(0x2AEDED7ED63B7EED),
+	SPH_C64(0x49CCCCDBE22EDBCC), SPH_C64(0xC6424257682A5742),
+	SPH_C64(0xB59898C22CB4C298), SPH_C64(0xF1A4A40EED490EA4),
+	SPH_C64(0x78282888755D8828), SPH_C64(0xE45C5C3186DA315C),
+	SPH_C64(0x15F8F83F6B933FF8), SPH_C64(0x978686A4C244A486)
+};
+
+static const sph_u64 old1_T6[256] = {
+	SPH_C64(0x181878D8C0781828), SPH_C64(0x2323AF2605AF2365),
+	SPH_C64(0xC6C6F9B87EF9C657), SPH_C64(0xE8E86FFB136FE825),
+	SPH_C64(0x8787A1CB4CA18794), SPH_C64(0xB8B86211A962B8D5),
+	SPH_C64(0x0101050908050103), SPH_C64(0x4F4F6E0D426E4FD1),
+	SPH_C64(0x3636EE9BADEE365A), SPH_C64(0xA6A604FF5904A6F7),
+	SPH_C64(0xD2D2BD0CDEBDD26B), SPH_C64(0xF5F5060EFB06F502),
+	SPH_C64(0x79798096EF80798B), SPH_C64(0x6F6FCE305FCE6FB1),
+	SPH_C64(0x9191EF6DFCEF91AE), SPH_C64(0x525207F8AA0752F6),
+	SPH_C64(0x6060FD4727FD60A0), SPH_C64(0xBCBC76358976BCD9),
+	SPH_C64(0x9B9BCD37ACCD9BB0), SPH_C64(0x8E8E8C8A048C8E8F),
+	SPH_C64(0xA3A315D27115A3F8), SPH_C64(0x0C0C3C6C603C0C14),
+	SPH_C64(0x7B7B8A84FF8A7B8D), SPH_C64(0x3535E180B5E1355F),
+	SPH_C64(0x1D1D69F5E8691D27), SPH_C64(0xE0E047B35347E03D),
+	SPH_C64(0xD7D7AC21F6ACD764), SPH_C64(0xC2C2ED9C5EEDC25B),
+	SPH_C64(0x2E2E96436D962E72), SPH_C64(0x4B4B7A29627A4BDD),
+	SPH_C64(0xFEFE215DA321FE1F), SPH_C64(0x575716D5821657F9),
+	SPH_C64(0x151541BDA841153F), SPH_C64(0x7777B6E89FB67799),
+	SPH_C64(0x3737EB92A5EB3759), SPH_C64(0xE5E5569E7B56E532),
+	SPH_C64(0x9F9FD9138CD99FBC), SPH_C64(0xF0F01723D317F00D),
+	SPH_C64(0x4A4A7F206A7F4ADE), SPH_C64(0xDADA95449E95DA73),
+	SPH_C64(0x585825A2FA2558E8), SPH_C64(0xC9C9CACF06CAC946),
+	SPH_C64(0x29298D7C558D297B), SPH_C64(0x0A0A225A50220A1E),
+	SPH_C64(0xB1B14F50E14FB1CE), SPH_C64(0xA0A01AC9691AA0FD),
+	SPH_C64(0x6B6BDA147FDA6BBD), SPH_C64(0x8585ABD95CAB8592),
+	SPH_C64(0xBDBD733C8173BDDA), SPH_C64(0x5D5D348FD2345DE7),
+	SPH_C64(0x1010509080501030), SPH_C64(0xF4F40307F303F401),
+	SPH_C64(0xCBCBC0DD16C0CB40), SPH_C64(0x3E3EC6D3EDC63E42),
+	SPH_C64(0x0505112D2811050F), SPH_C64(0x6767E6781FE667A9),
+	SPH_C64(0xE4E453977353E431), SPH_C64(0x2727BB0225BB2769),
+	SPH_C64(0x41415873325841C3), SPH_C64(0x8B8B9DA72C9D8B80),
+	SPH_C64(0xA7A701F65101A7F4), SPH_C64(0x7D7D94B2CF947D87),
+	SPH_C64(0x9595FB49DCFB95A2), SPH_C64(0xD8D89F568E9FD875),
+	SPH_C64(0xFBFB30708B30FB10), SPH_C64(0xEEEE71CD2371EE2F),
+	SPH_C64(0x7C7C91BBC7917C84), SPH_C64(0x6666E37117E366AA),
+	SPH_C64(0xDDDD8E7BA68EDD7A), SPH_C64(0x17174BAFB84B1739),
+	SPH_C64(0x47474645024647C9), SPH_C64(0x9E9EDC1A84DC9EBF),
+	SPH_C64(0xCACAC5D41EC5CA43), SPH_C64(0x2D2D995875992D77),
+	SPH_C64(0xBFBF792E9179BFDC), SPH_C64(0x07071B3F381B0709),
+	SPH_C64(0xADAD23AC0123ADEA), SPH_C64(0x5A5A2FB0EA2F5AEE),
+	SPH_C64(0x8383B5EF6CB58398), SPH_C64(0x3333FFB685FF3355),
+	SPH_C64(0x6363F25C3FF263A5), SPH_C64(0x02020A12100A0206),
+	SPH_C64(0xAAAA38933938AAE3), SPH_C64(0x7171A8DEAFA87193),
+	SPH_C64(0xC8C8CFC60ECFC845), SPH_C64(0x19197DD1C87D192B),
+	SPH_C64(0x4949703B727049DB), SPH_C64(0xD9D99A5F869AD976),
+	SPH_C64(0xF2F21D31C31DF20B), SPH_C64(0xE3E348A84B48E338),
+	SPH_C64(0x5B5B2AB9E22A5BED), SPH_C64(0x888892BC34928885),
+	SPH_C64(0x9A9AC83EA4C89AB3), SPH_C64(0x2626BE0B2DBE266A),
+	SPH_C64(0x3232FABF8DFA3256), SPH_C64(0xB0B04A59E94AB0CD),
+	SPH_C64(0xE9E96AF21B6AE926), SPH_C64(0x0F0F337778330F11),
+	SPH_C64(0xD5D5A633E6A6D562), SPH_C64(0x8080BAF474BA809D),
+	SPH_C64(0xBEBE7C27997CBEDF), SPH_C64(0xCDCDDEEB26DECD4A),
+	SPH_C64(0x3434E489BDE4345C), SPH_C64(0x484875327A7548D8),
+	SPH_C64(0xFFFF2454AB24FF1C), SPH_C64(0x7A7A8F8DF78F7A8E),
+	SPH_C64(0x9090EA64F4EA90AD), SPH_C64(0x5F5F3E9DC23E5FE1),
+	SPH_C64(0x2020A03D1DA02060), SPH_C64(0x6868D50F67D568B8),
+	SPH_C64(0x1A1A72CAD0721A2E), SPH_C64(0xAEAE2CB7192CAEEF),
+	SPH_C64(0xB4B45E7DC95EB4C1), SPH_C64(0x545419CE9A1954FC),
+	SPH_C64(0x9393E57FECE593A8), SPH_C64(0x2222AA2F0DAA2266),
+	SPH_C64(0x6464E96307E964AC), SPH_C64(0xF1F1122ADB12F10E),
+	SPH_C64(0x7373A2CCBFA27395), SPH_C64(0x12125A82905A1236),
+	SPH_C64(0x40405D7A3A5D40C0), SPH_C64(0x0808284840280818),
+	SPH_C64(0xC3C3E89556E8C358), SPH_C64(0xECEC7BDF337BEC29),
+	SPH_C64(0xDBDB904D9690DB70), SPH_C64(0xA1A11FC0611FA1FE),
+	SPH_C64(0x8D8D83911C838D8A), SPH_C64(0x3D3DC9C8F5C93D47),
+	SPH_C64(0x9797F15BCCF197A4), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCFCFD4F936D4CF4C), SPH_C64(0x2B2B876E45872B7D),
+	SPH_C64(0x7676B3E197B3769A), SPH_C64(0x8282B0E664B0829B),
+	SPH_C64(0xD6D6A928FEA9D667), SPH_C64(0x1B1B77C3D8771B2D),
+	SPH_C64(0xB5B55B74C15BB5C2), SPH_C64(0xAFAF29BE1129AFEC),
+	SPH_C64(0x6A6ADF1D77DF6ABE), SPH_C64(0x50500DEABA0D50F0),
+	SPH_C64(0x45454C57124C45CF), SPH_C64(0xF3F31838CB18F308),
+	SPH_C64(0x3030F0AD9DF03050), SPH_C64(0xEFEF74C42B74EF2C),
+	SPH_C64(0x3F3FC3DAE5C33F41), SPH_C64(0x55551CC7921C55FF),
+	SPH_C64(0xA2A210DB7910A2FB), SPH_C64(0xEAEA65E90365EA23),
+	SPH_C64(0x6565EC6A0FEC65AF), SPH_C64(0xBABA6803B968BAD3),
+	SPH_C64(0x2F2F934A65932F71), SPH_C64(0xC0C0E78E4EE7C05D),
+	SPH_C64(0xDEDE8160BE81DE7F), SPH_C64(0x1C1C6CFCE06C1C24),
+	SPH_C64(0xFDFD2E46BB2EFD1A), SPH_C64(0x4D4D641F52644DD7),
+	SPH_C64(0x9292E076E4E092AB), SPH_C64(0x7575BCFA8FBC759F),
+	SPH_C64(0x06061E36301E060A), SPH_C64(0x8A8A98AE24988A83),
+	SPH_C64(0xB2B2404BF940B2CB), SPH_C64(0xE6E659856359E637),
+	SPH_C64(0x0E0E367E70360E12), SPH_C64(0x1F1F63E7F8631F21),
+	SPH_C64(0x6262F75537F762A6), SPH_C64(0xD4D4A33AEEA3D461),
+	SPH_C64(0xA8A832812932A8E5), SPH_C64(0x9696F452C4F496A7),
+	SPH_C64(0xF9F93A629B3AF916), SPH_C64(0xC5C5F6A366F6C552),
+	SPH_C64(0x2525B11035B1256F), SPH_C64(0x595920ABF22059EB),
+	SPH_C64(0x8484AED054AE8491), SPH_C64(0x7272A7C5B7A77296),
+	SPH_C64(0x3939DDECD5DD394B), SPH_C64(0x4C4C61165A614CD4),
+	SPH_C64(0x5E5E3B94CA3B5EE2), SPH_C64(0x7878859FE7857888),
+	SPH_C64(0x3838D8E5DDD83848), SPH_C64(0x8C8C869814868C89),
+	SPH_C64(0xD1D1B217C6B2D16E), SPH_C64(0xA5A50BE4410BA5F2),
+	SPH_C64(0xE2E24DA1434DE23B), SPH_C64(0x6161F84E2FF861A3),
+	SPH_C64(0xB3B34542F145B3C8), SPH_C64(0x2121A53415A52163),
+	SPH_C64(0x9C9CD60894D69CB9), SPH_C64(0x1E1E66EEF0661E22),
+	SPH_C64(0x43435261225243C5), SPH_C64(0xC7C7FCB176FCC754),
+	SPH_C64(0xFCFC2B4FB32BFC19), SPH_C64(0x040414242014040C),
+	SPH_C64(0x515108E3B20851F3), SPH_C64(0x9999C725BCC799B6),
+	SPH_C64(0x6D6DC4224FC46DB7), SPH_C64(0x0D0D396568390D17),
+	SPH_C64(0xFAFA35798335FA13), SPH_C64(0xDFDF8469B684DF7C),
+	SPH_C64(0x7E7E9BA9D79B7E82), SPH_C64(0x2424B4193DB4246C),
+	SPH_C64(0x3B3BD7FEC5D73B4D), SPH_C64(0xABAB3D9A313DABE0),
+	SPH_C64(0xCECED1F03ED1CE4F), SPH_C64(0x1111559988551133),
+	SPH_C64(0x8F8F89830C898F8C), SPH_C64(0x4E4E6B044A6B4ED2),
+	SPH_C64(0xB7B75166D151B7C4), SPH_C64(0xEBEB60E00B60EB20),
+	SPH_C64(0x3C3CCCC1FDCC3C44), SPH_C64(0x8181BFFD7CBF819E),
+	SPH_C64(0x9494FE40D4FE94A1), SPH_C64(0xF7F70C1CEB0CF704),
+	SPH_C64(0xB9B96718A167B9D6), SPH_C64(0x13135F8B985F1335),
+	SPH_C64(0x2C2C9C517D9C2C74), SPH_C64(0xD3D3B805D6B8D368),
+	SPH_C64(0xE7E75C8C6B5CE734), SPH_C64(0x6E6ECB3957CB6EB2),
+	SPH_C64(0xC4C4F3AA6EF3C451), SPH_C64(0x03030F1B180F0305),
+	SPH_C64(0x565613DC8A1356FA), SPH_C64(0x4444495E1A4944CC),
+	SPH_C64(0x7F7F9EA0DF9E7F81), SPH_C64(0xA9A937882137A9E6),
+	SPH_C64(0x2A2A82674D822A7E), SPH_C64(0xBBBB6D0AB16DBBD0),
+	SPH_C64(0xC1C1E28746E2C15E), SPH_C64(0x535302F1A20253F5),
+	SPH_C64(0xDCDC8B72AE8BDC79), SPH_C64(0x0B0B275358270B1D),
+	SPH_C64(0x9D9DD3019CD39DBA), SPH_C64(0x6C6CC12B47C16CB4),
+	SPH_C64(0x3131F5A495F53153), SPH_C64(0x7474B9F387B9749C),
+	SPH_C64(0xF6F60915E309F607), SPH_C64(0x4646434C0A4346CA),
+	SPH_C64(0xACAC26A50926ACE9), SPH_C64(0x898997B53C978986),
+	SPH_C64(0x141444B4A044143C), SPH_C64(0xE1E142BA5B42E13E),
+	SPH_C64(0x16164EA6B04E163A), SPH_C64(0x3A3AD2F7CDD23A4E),
+	SPH_C64(0x6969D0066FD069BB), SPH_C64(0x09092D41482D091B),
+	SPH_C64(0x7070ADD7A7AD7090), SPH_C64(0xB6B6546FD954B6C7),
+	SPH_C64(0xD0D0B71ECEB7D06D), SPH_C64(0xEDED7ED63B7EED2A),
+	SPH_C64(0xCCCCDBE22EDBCC49), SPH_C64(0x424257682A5742C6),
+	SPH_C64(0x9898C22CB4C298B5), SPH_C64(0xA4A40EED490EA4F1),
+	SPH_C64(0x282888755D882878), SPH_C64(0x5C5C3186DA315CE4),
+	SPH_C64(0xF8F83F6B933FF815), SPH_C64(0x8686A4C244A48697)
+};
+
+static const sph_u64 old1_T7[256] = {
+	SPH_C64(0x1878D8C078182818), SPH_C64(0x23AF2605AF236523),
+	SPH_C64(0xC6F9B87EF9C657C6), SPH_C64(0xE86FFB136FE825E8),
+	SPH_C64(0x87A1CB4CA1879487), SPH_C64(0xB86211A962B8D5B8),
+	SPH_C64(0x0105090805010301), SPH_C64(0x4F6E0D426E4FD14F),
+	SPH_C64(0x36EE9BADEE365A36), SPH_C64(0xA604FF5904A6F7A6),
+	SPH_C64(0xD2BD0CDEBDD26BD2), SPH_C64(0xF5060EFB06F502F5),
+	SPH_C64(0x798096EF80798B79), SPH_C64(0x6FCE305FCE6FB16F),
+	SPH_C64(0x91EF6DFCEF91AE91), SPH_C64(0x5207F8AA0752F652),
+	SPH_C64(0x60FD4727FD60A060), SPH_C64(0xBC76358976BCD9BC),
+	SPH_C64(0x9BCD37ACCD9BB09B), SPH_C64(0x8E8C8A048C8E8F8E),
+	SPH_C64(0xA315D27115A3F8A3), SPH_C64(0x0C3C6C603C0C140C),
+	SPH_C64(0x7B8A84FF8A7B8D7B), SPH_C64(0x35E180B5E1355F35),
+	SPH_C64(0x1D69F5E8691D271D), SPH_C64(0xE047B35347E03DE0),
+	SPH_C64(0xD7AC21F6ACD764D7), SPH_C64(0xC2ED9C5EEDC25BC2),
+	SPH_C64(0x2E96436D962E722E), SPH_C64(0x4B7A29627A4BDD4B),
+	SPH_C64(0xFE215DA321FE1FFE), SPH_C64(0x5716D5821657F957),
+	SPH_C64(0x1541BDA841153F15), SPH_C64(0x77B6E89FB6779977),
+	SPH_C64(0x37EB92A5EB375937), SPH_C64(0xE5569E7B56E532E5),
+	SPH_C64(0x9FD9138CD99FBC9F), SPH_C64(0xF01723D317F00DF0),
+	SPH_C64(0x4A7F206A7F4ADE4A), SPH_C64(0xDA95449E95DA73DA),
+	SPH_C64(0x5825A2FA2558E858), SPH_C64(0xC9CACF06CAC946C9),
+	SPH_C64(0x298D7C558D297B29), SPH_C64(0x0A225A50220A1E0A),
+	SPH_C64(0xB14F50E14FB1CEB1), SPH_C64(0xA01AC9691AA0FDA0),
+	SPH_C64(0x6BDA147FDA6BBD6B), SPH_C64(0x85ABD95CAB859285),
+	SPH_C64(0xBD733C8173BDDABD), SPH_C64(0x5D348FD2345DE75D),
+	SPH_C64(0x1050908050103010), SPH_C64(0xF40307F303F401F4),
+	SPH_C64(0xCBC0DD16C0CB40CB), SPH_C64(0x3EC6D3EDC63E423E),
+	SPH_C64(0x05112D2811050F05), SPH_C64(0x67E6781FE667A967),
+	SPH_C64(0xE453977353E431E4), SPH_C64(0x27BB0225BB276927),
+	SPH_C64(0x415873325841C341), SPH_C64(0x8B9DA72C9D8B808B),
+	SPH_C64(0xA701F65101A7F4A7), SPH_C64(0x7D94B2CF947D877D),
+	SPH_C64(0x95FB49DCFB95A295), SPH_C64(0xD89F568E9FD875D8),
+	SPH_C64(0xFB30708B30FB10FB), SPH_C64(0xEE71CD2371EE2FEE),
+	SPH_C64(0x7C91BBC7917C847C), SPH_C64(0x66E37117E366AA66),
+	SPH_C64(0xDD8E7BA68EDD7ADD), SPH_C64(0x174BAFB84B173917),
+	SPH_C64(0x474645024647C947), SPH_C64(0x9EDC1A84DC9EBF9E),
+	SPH_C64(0xCAC5D41EC5CA43CA), SPH_C64(0x2D995875992D772D),
+	SPH_C64(0xBF792E9179BFDCBF), SPH_C64(0x071B3F381B070907),
+	SPH_C64(0xAD23AC0123ADEAAD), SPH_C64(0x5A2FB0EA2F5AEE5A),
+	SPH_C64(0x83B5EF6CB5839883), SPH_C64(0x33FFB685FF335533),
+	SPH_C64(0x63F25C3FF263A563), SPH_C64(0x020A12100A020602),
+	SPH_C64(0xAA38933938AAE3AA), SPH_C64(0x71A8DEAFA8719371),
+	SPH_C64(0xC8CFC60ECFC845C8), SPH_C64(0x197DD1C87D192B19),
+	SPH_C64(0x49703B727049DB49), SPH_C64(0xD99A5F869AD976D9),
+	SPH_C64(0xF21D31C31DF20BF2), SPH_C64(0xE348A84B48E338E3),
+	SPH_C64(0x5B2AB9E22A5BED5B), SPH_C64(0x8892BC3492888588),
+	SPH_C64(0x9AC83EA4C89AB39A), SPH_C64(0x26BE0B2DBE266A26),
+	SPH_C64(0x32FABF8DFA325632), SPH_C64(0xB04A59E94AB0CDB0),
+	SPH_C64(0xE96AF21B6AE926E9), SPH_C64(0x0F337778330F110F),
+	SPH_C64(0xD5A633E6A6D562D5), SPH_C64(0x80BAF474BA809D80),
+	SPH_C64(0xBE7C27997CBEDFBE), SPH_C64(0xCDDEEB26DECD4ACD),
+	SPH_C64(0x34E489BDE4345C34), SPH_C64(0x4875327A7548D848),
+	SPH_C64(0xFF2454AB24FF1CFF), SPH_C64(0x7A8F8DF78F7A8E7A),
+	SPH_C64(0x90EA64F4EA90AD90), SPH_C64(0x5F3E9DC23E5FE15F),
+	SPH_C64(0x20A03D1DA0206020), SPH_C64(0x68D50F67D568B868),
+	SPH_C64(0x1A72CAD0721A2E1A), SPH_C64(0xAE2CB7192CAEEFAE),
+	SPH_C64(0xB45E7DC95EB4C1B4), SPH_C64(0x5419CE9A1954FC54),
+	SPH_C64(0x93E57FECE593A893), SPH_C64(0x22AA2F0DAA226622),
+	SPH_C64(0x64E96307E964AC64), SPH_C64(0xF1122ADB12F10EF1),
+	SPH_C64(0x73A2CCBFA2739573), SPH_C64(0x125A82905A123612),
+	SPH_C64(0x405D7A3A5D40C040), SPH_C64(0x0828484028081808),
+	SPH_C64(0xC3E89556E8C358C3), SPH_C64(0xEC7BDF337BEC29EC),
+	SPH_C64(0xDB904D9690DB70DB), SPH_C64(0xA11FC0611FA1FEA1),
+	SPH_C64(0x8D83911C838D8A8D), SPH_C64(0x3DC9C8F5C93D473D),
+	SPH_C64(0x97F15BCCF197A497), SPH_C64(0x0000000000000000),
+	SPH_C64(0xCFD4F936D4CF4CCF), SPH_C64(0x2B876E45872B7D2B),
+	SPH_C64(0x76B3E197B3769A76), SPH_C64(0x82B0E664B0829B82),
+	SPH_C64(0xD6A928FEA9D667D6), SPH_C64(0x1B77C3D8771B2D1B),
+	SPH_C64(0xB55B74C15BB5C2B5), SPH_C64(0xAF29BE1129AFECAF),
+	SPH_C64(0x6ADF1D77DF6ABE6A), SPH_C64(0x500DEABA0D50F050),
+	SPH_C64(0x454C57124C45CF45), SPH_C64(0xF31838CB18F308F3),
+	SPH_C64(0x30F0AD9DF0305030), SPH_C64(0xEF74C42B74EF2CEF),
+	SPH_C64(0x3FC3DAE5C33F413F), SPH_C64(0x551CC7921C55FF55),
+	SPH_C64(0xA210DB7910A2FBA2), SPH_C64(0xEA65E90365EA23EA),
+	SPH_C64(0x65EC6A0FEC65AF65), SPH_C64(0xBA6803B968BAD3BA),
+	SPH_C64(0x2F934A65932F712F), SPH_C64(0xC0E78E4EE7C05DC0),
+	SPH_C64(0xDE8160BE81DE7FDE), SPH_C64(0x1C6CFCE06C1C241C),
+	SPH_C64(0xFD2E46BB2EFD1AFD), SPH_C64(0x4D641F52644DD74D),
+	SPH_C64(0x92E076E4E092AB92), SPH_C64(0x75BCFA8FBC759F75),
+	SPH_C64(0x061E36301E060A06), SPH_C64(0x8A98AE24988A838A),
+	SPH_C64(0xB2404BF940B2CBB2), SPH_C64(0xE659856359E637E6),
+	SPH_C64(0x0E367E70360E120E), SPH_C64(0x1F63E7F8631F211F),
+	SPH_C64(0x62F75537F762A662), SPH_C64(0xD4A33AEEA3D461D4),
+	SPH_C64(0xA832812932A8E5A8), SPH_C64(0x96F452C4F496A796),
+	SPH_C64(0xF93A629B3AF916F9), SPH_C64(0xC5F6A366F6C552C5),
+	SPH_C64(0x25B11035B1256F25), SPH_C64(0x5920ABF22059EB59),
+	SPH_C64(0x84AED054AE849184), SPH_C64(0x72A7C5B7A7729672),
+	SPH_C64(0x39DDECD5DD394B39), SPH_C64(0x4C61165A614CD44C),
+	SPH_C64(0x5E3B94CA3B5EE25E), SPH_C64(0x78859FE785788878),
+	SPH_C64(0x38D8E5DDD8384838), SPH_C64(0x8C869814868C898C),
+	SPH_C64(0xD1B217C6B2D16ED1), SPH_C64(0xA50BE4410BA5F2A5),
+	SPH_C64(0xE24DA1434DE23BE2), SPH_C64(0x61F84E2FF861A361),
+	SPH_C64(0xB34542F145B3C8B3), SPH_C64(0x21A53415A5216321),
+	SPH_C64(0x9CD60894D69CB99C), SPH_C64(0x1E66EEF0661E221E),
+	SPH_C64(0x435261225243C543), SPH_C64(0xC7FCB176FCC754C7),
+	SPH_C64(0xFC2B4FB32BFC19FC), SPH_C64(0x0414242014040C04),
+	SPH_C64(0x5108E3B20851F351), SPH_C64(0x99C725BCC799B699),
+	SPH_C64(0x6DC4224FC46DB76D), SPH_C64(0x0D396568390D170D),
+	SPH_C64(0xFA35798335FA13FA), SPH_C64(0xDF8469B684DF7CDF),
+	SPH_C64(0x7E9BA9D79B7E827E), SPH_C64(0x24B4193DB4246C24),
+	SPH_C64(0x3BD7FEC5D73B4D3B), SPH_C64(0xAB3D9A313DABE0AB),
+	SPH_C64(0xCED1F03ED1CE4FCE), SPH_C64(0x1155998855113311),
+	SPH_C64(0x8F89830C898F8C8F), SPH_C64(0x4E6B044A6B4ED24E),
+	SPH_C64(0xB75166D151B7C4B7), SPH_C64(0xEB60E00B60EB20EB),
+	SPH_C64(0x3CCCC1FDCC3C443C), SPH_C64(0x81BFFD7CBF819E81),
+	SPH_C64(0x94FE40D4FE94A194), SPH_C64(0xF70C1CEB0CF704F7),
+	SPH_C64(0xB96718A167B9D6B9), SPH_C64(0x135F8B985F133513),
+	SPH_C64(0x2C9C517D9C2C742C), SPH_C64(0xD3B805D6B8D368D3),
+	SPH_C64(0xE75C8C6B5CE734E7), SPH_C64(0x6ECB3957CB6EB26E),
+	SPH_C64(0xC4F3AA6EF3C451C4), SPH_C64(0x030F1B180F030503),
+	SPH_C64(0x5613DC8A1356FA56), SPH_C64(0x44495E1A4944CC44),
+	SPH_C64(0x7F9EA0DF9E7F817F), SPH_C64(0xA937882137A9E6A9),
+	SPH_C64(0x2A82674D822A7E2A), SPH_C64(0xBB6D0AB16DBBD0BB),
+	SPH_C64(0xC1E28746E2C15EC1), SPH_C64(0x5302F1A20253F553),
+	SPH_C64(0xDC8B72AE8BDC79DC), SPH_C64(0x0B275358270B1D0B),
+	SPH_C64(0x9DD3019CD39DBA9D), SPH_C64(0x6CC12B47C16CB46C),
+	SPH_C64(0x31F5A495F5315331), SPH_C64(0x74B9F387B9749C74),
+	SPH_C64(0xF60915E309F607F6), SPH_C64(0x46434C0A4346CA46),
+	SPH_C64(0xAC26A50926ACE9AC), SPH_C64(0x8997B53C97898689),
+	SPH_C64(0x1444B4A044143C14), SPH_C64(0xE142BA5B42E13EE1),
+	SPH_C64(0x164EA6B04E163A16), SPH_C64(0x3AD2F7CDD23A4E3A),
+	SPH_C64(0x69D0066FD069BB69), SPH_C64(0x092D41482D091B09),
+	SPH_C64(0x70ADD7A7AD709070), SPH_C64(0xB6546FD954B6C7B6),
+	SPH_C64(0xD0B71ECEB7D06DD0), SPH_C64(0xED7ED63B7EED2AED),
+	SPH_C64(0xCCDBE22EDBCC49CC), SPH_C64(0x4257682A5742C642),
+	SPH_C64(0x98C22CB4C298B598), SPH_C64(0xA40EED490EA4F1A4),
+	SPH_C64(0x2888755D88287828), SPH_C64(0x5C3186DA315CE45C),
+	SPH_C64(0xF83F6B933FF815F8), SPH_C64(0x86A4C244A4869786)
+};
+
+#endif
+
+static const sph_u64 old1_RC[10] = {
+	SPH_C64(0x4F01B887E8C62318),
+	SPH_C64(0x52916F79F5D2A636),
+	SPH_C64(0x357B0CA38E9BBC60),
+	SPH_C64(0x57FE4B2EC2D7E01D),
+	SPH_C64(0xDA4AF09FE5377715),
+	SPH_C64(0x856BA0B10A29C958),
+	SPH_C64(0x67053ECBF4105DBD),
+	SPH_C64(0xD8957DA78B4127E4),
+	SPH_C64(0x9E4717DD667CEEFB),
+	SPH_C64(0x33835AAD07BF2DCA)
+};
+
+/* ====================================================================== */
+
+#define DECL8(z)   sph_u64 z ## 0, z ## 1, z ## 2, z ## 3, \
+                   z ## 4, z ## 5, z ## 6, z ## 7
+
+#if SPH_LITTLE_FAST
+#define READ_DATA_W(x)   do { \
+		n ## x = sph_dec64le_aligned( \
+			(const unsigned char *)src + 8 * (x)); \
+	} while (0)
+#define UPDATE_STATE_W(x)   do { \
+		state[x] ^= n ## x ^ sph_dec64le_aligned( \
+			(const unsigned char *)src + 8 * (x)); \
+	} while (0)
+#define LVARS   DECL8(n); DECL8(h);
+#else
+#define READ_DATA_W(x)   do { \
+		sn ## x = n ## x = sph_dec64le_aligned( \
+			(const unsigned char *)src + 8 * (x)); \
+	} while (0)
+#define UPDATE_STATE_W(x)   do { \
+		state[x] ^= n ## x ^ sn ## x; \
+	} while (0)
+#define LVARS   DECL8(n); DECL8(sn); DECL8(h);
+#endif
+
+#define READ_STATE_W(x)   do { h ## x = state[x]; } while (0)
+
+#define MUL8(FUN)   do { \
+		FUN(0); \
+		FUN(1); \
+		FUN(2); \
+		FUN(3); \
+		FUN(4); \
+		FUN(5); \
+		FUN(6); \
+		FUN(7); \
+	} while (0)
+
+/*
+ * First operation: XOR the input data with the first round key.
+ */
+#define ROUND0_W(x)   do { \
+		n ## x ^= h ## x; \
+	} while (0)
+
+#define READ_DATA      MUL8(READ_DATA_W)
+#define READ_STATE     MUL8(READ_STATE_W)
+#define ROUND0         MUL8(ROUND0_W)
+#define UPDATE_STATE   MUL8(UPDATE_STATE_W)
+
+#define BYTE(x, n)     ((unsigned)((x) >> (8 * (n))) & 0xFF)
+
+#if SPH_SMALL_FOOTPRINT_WHIRLPOOL
+
+static SPH_INLINE sph_u64
+table_skew(sph_u64 val, int num)
+{
+	return SPH_ROTL64(val, 8 * num);
+}
+
+#define ROUND_ELT(table, in, i0, i1, i2, i3, i4, i5, i6, i7) \
+	(table ## 0[BYTE(in ## i0, 0)] \
+	^ table_skew(table ## 0[BYTE(in ## i1, 1)], 1) \
+	^ table_skew(table ## 0[BYTE(in ## i2, 2)], 2) \
+	^ table_skew(table ## 0[BYTE(in ## i3, 3)], 3) \
+	^ table_skew(table ## 0[BYTE(in ## i4, 4)], 4) \
+	^ table_skew(table ## 0[BYTE(in ## i5, 5)], 5) \
+	^ table_skew(table ## 0[BYTE(in ## i6, 6)], 6) \
+	^ table_skew(table ## 0[BYTE(in ## i7, 7)], 7))
+#else
+#define ROUND_ELT(table, in, i0, i1, i2, i3, i4, i5, i6, i7) \
+	(table ## 0[BYTE(in ## i0, 0)] \
+	^ table ## 1[BYTE(in ## i1, 1)] \
+	^ table ## 2[BYTE(in ## i2, 2)] \
+	^ table ## 3[BYTE(in ## i3, 3)] \
+	^ table ## 4[BYTE(in ## i4, 4)] \
+	^ table ## 5[BYTE(in ## i5, 5)] \
+	^ table ## 6[BYTE(in ## i6, 6)] \
+	^ table ## 7[BYTE(in ## i7, 7)])
+#endif
+
+#define ROUND(table, in, out, c0, c1, c2, c3, c4, c5, c6, c7)   do { \
+		out ## 0 = ROUND_ELT(table, in, 0, 7, 6, 5, 4, 3, 2, 1) ^ c0; \
+		out ## 1 = ROUND_ELT(table, in, 1, 0, 7, 6, 5, 4, 3, 2) ^ c1; \
+		out ## 2 = ROUND_ELT(table, in, 2, 1, 0, 7, 6, 5, 4, 3) ^ c2; \
+		out ## 3 = ROUND_ELT(table, in, 3, 2, 1, 0, 7, 6, 5, 4) ^ c3; \
+		out ## 4 = ROUND_ELT(table, in, 4, 3, 2, 1, 0, 7, 6, 5) ^ c4; \
+		out ## 5 = ROUND_ELT(table, in, 5, 4, 3, 2, 1, 0, 7, 6) ^ c5; \
+		out ## 6 = ROUND_ELT(table, in, 6, 5, 4, 3, 2, 1, 0, 7) ^ c6; \
+		out ## 7 = ROUND_ELT(table, in, 7, 6, 5, 4, 3, 2, 1, 0) ^ c7; \
+	} while (0)
+
+#define ROUND_KSCHED(table, in, out, c) \
+	ROUND(table, in, out, c, 0, 0, 0, 0, 0, 0, 0)
+
+#define ROUND_WENC(table, in, key, out) \
+	ROUND(table, in, out, key ## 0, key ## 1, key ## 2, \
+		key ## 3, key ## 4, key ## 5, key ## 6, key ## 7)
+
+#define TRANSFER(dst, src)   do { \
+		dst ## 0 = src ## 0; \
+		dst ## 1 = src ## 1; \
+		dst ## 2 = src ## 2; \
+		dst ## 3 = src ## 3; \
+		dst ## 4 = src ## 4; \
+		dst ## 5 = src ## 5; \
+		dst ## 6 = src ## 6; \
+		dst ## 7 = src ## 7; \
+	} while (0)
+
+/* see sph_whirlpool.h */
+void
+sph_whirlpool_init(void *cc)
+{
+	sph_whirlpool_context *sc;
+
+	sc = cc;
+	/*
+	 * We want to set all eight 64-bit words to 0. A "memset()"
+	 * is not, theoretically, fully standard, but in practice it
+	 * will work everywhere.
+	 */
+	memset(sc->state, 0, sizeof sc->state);
+#if SPH_64
+	sc->count = 0;
+#else
+	sc->count_high = sc->count_low = 0;
+#endif
+}
+
+#define ROUND_FUN(name, type) \
+static void \
+name ## _round(const void *src, sph_u64 *state) \
+{ \
+	LVARS \
+	int r; \
+ \
+	READ_DATA; \
+	READ_STATE; \
+	ROUND0; \
+	for (r = 0; r < 10; r ++) { \
+		DECL8(tmp); \
+ \
+		ROUND_KSCHED(type ## _T, h, tmp, type ## _RC[r]); \
+		TRANSFER(h, tmp); \
+		ROUND_WENC(type ## _T, n, h, tmp); \
+		TRANSFER(n, tmp); \
+	} \
+	UPDATE_STATE; \
+}
+
+ROUND_FUN(whirlpool, plain)
+ROUND_FUN(whirlpool0, old0)
+ROUND_FUN(whirlpool1, old1)
+
+/*
+ * We want big-endian encoding of the message length, over 256 bits. BE64
+ * triggers that. However, our block length is 512 bits, not 1024 bits.
+ * Internally, our encoding/decoding is little-endian, which is not a
+ * problem here since we also deactivate output in md_helper.c.
+ */
+#define BE64   1
+#define SVAL   sc->state
+#define BLEN   64U
+#define PLW4   1
+
+#define RFUN   whirlpool_round
+#define HASH   whirlpool
+#include "md_helper.c"
+#undef RFUN
+#undef HASH
+
+#define RFUN   whirlpool0_round
+#define HASH   whirlpool0
+#include "md_helper.c"
+#undef RFUN
+#undef HASH
+
+#define RFUN   whirlpool1_round
+#define HASH   whirlpool1
+#include "md_helper.c"
+#undef RFUN
+#undef HASH
+
+#define MAKE_CLOSE(name) \
+void \
+sph_ ## name ## _close(void *cc, void *dst) \
+{ \
+	sph_ ## name ## _context *sc; \
+	int i; \
+	name ## _close(cc, dst, 0); \
+	sc = cc; \
+	for (i = 0; i < 8; i ++) \
+		sph_enc64le((unsigned char *)dst + 8 * i, sc->state[i]); \
+}
+/*
+	sph_ ## name ## _init(cc); \
+}
+*/
+MAKE_CLOSE(whirlpool)
+MAKE_CLOSE(whirlpool0)
+MAKE_CLOSE(whirlpool1)
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/crypto/ghostrider/sph_whirlpool.h b/src/crypto/ghostrider/sph_whirlpool.h
new file mode 100644
index 000000000..211590b35
--- /dev/null
+++ b/src/crypto/ghostrider/sph_whirlpool.h
@@ -0,0 +1,224 @@
+/* $Id: sph_whirlpool.h 216 2010-06-08 09:46:57Z tp $ */
+/**
+ * WHIRLPOOL interface.
+ *
+ * WHIRLPOOL knows three variants, dubbed "WHIRLPOOL-0" (original
+ * version, published in 2000, studied by NESSIE), "WHIRLPOOL-1"
+ * (first revision, 2001, with a new S-box) and "WHIRLPOOL" (current
+ * version, 2003, with a new diffusion matrix, also described as "plain
+ * WHIRLPOOL"). All three variants are implemented here.
+ *
+ * The original WHIRLPOOL (i.e. WHIRLPOOL-0) was published in: P. S. L.
+ * M. Barreto, V. Rijmen, "The Whirlpool Hashing Function", First open
+ * NESSIE Workshop, Leuven, Belgium, November 13--14, 2000.
+ *
+ * The current WHIRLPOOL specification and a reference implementation
+ * can be found on the WHIRLPOOL web page:
+ * http://paginas.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html
+ *
+ * ==========================(LICENSE BEGIN)============================
+ *
+ * Copyright (c) 2007-2010  Projet RNRT SAPHIR
+ *
+ * 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, sublicense, 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 above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * 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 NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * ===========================(LICENSE END)=============================
+ *
+ * @file     sph_whirlpool.h
+ * @author   Thomas Pornin <thomas.pornin@cryptolog.com>
+ */
+
+#ifndef SPH_WHIRLPOOL_H__
+#define SPH_WHIRLPOOL_H__
+
+#include "sph_types.h"
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if SPH_64
+
+/**
+ * Output size (in bits) for WHIRLPOOL.
+ */
+#define SPH_SIZE_whirlpool 512
+
+/**
+ * Output size (in bits) for WHIRLPOOL-0.
+ */
+#define SPH_SIZE_whirlpool0 512
+
+/**
+ * Output size (in bits) for WHIRLPOOL-1.
+ */
+#define SPH_SIZE_whirlpool1 512
+
+/**
+ * This structure is a context for WHIRLPOOL computations: it contains the
+ * intermediate values and some data from the last entered block. Once
+ * a WHIRLPOOL computation has been performed, the context can be reused for
+ * another computation.
+ *
+ * The contents of this structure are private. A running WHIRLPOOL computation
+ * can be cloned by copying the context (e.g. with a simple
+ * <code>memcpy()</code>).
+ */
+typedef struct {
+#ifndef DOXYGEN_IGNORE
+  unsigned char buf[64]; /* first field, for alignment */
+  sph_u64 state[8];
+#if SPH_64
+  sph_u64 count;
+#else
+  sph_u32 count_high, count_low;
+#endif
+#endif
+} sph_whirlpool_context;
+
+/**
+ * Initialize a WHIRLPOOL context. This process performs no memory allocation.
+ *
+ * @param cc   the WHIRLPOOL context (pointer to a
+ *             <code>sph_whirlpool_context</code>)
+ */
+void sph_whirlpool_init(void *cc);
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing). This function applies the
+ * plain WHIRLPOOL algorithm.
+ *
+ * @param cc     the WHIRLPOOL context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_whirlpool(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current WHIRLPOOL computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the WHIRLPOOL context
+ * @param dst   the destination buffer
+ */
+void sph_whirlpool_close(void *cc, void *dst);
+
+#define sph_whirlpool512_full(cc, dst, data, len)                              \
+  do {                                                                         \
+    sph_whirlpool_init(cc);                                                    \
+    sph_whirlpool(cc, data, len);                                              \
+    sph_whirlpool_close(cc, dst);                                              \
+  } while (0)
+
+/**
+ * WHIRLPOOL-0 uses the same structure than plain WHIRLPOOL.
+ */
+typedef sph_whirlpool_context sph_whirlpool0_context;
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Initialize a WHIRLPOOL-0 context. This function is identical to
+ * <code>sph_whirlpool_init()</code>.
+ *
+ * @param cc   the WHIRLPOOL context (pointer to a
+ *             <code>sph_whirlpool0_context</code>)
+ */
+void sph_whirlpool0_init(void *cc);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_whirlpool0_init sph_whirlpool_init
+#endif
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing). This function applies the
+ * WHIRLPOOL-0 algorithm.
+ *
+ * @param cc     the WHIRLPOOL context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_whirlpool0(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current WHIRLPOOL-0 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the WHIRLPOOL-0 context
+ * @param dst   the destination buffer
+ */
+void sph_whirlpool0_close(void *cc, void *dst);
+
+/**
+ * WHIRLPOOL-1 uses the same structure than plain WHIRLPOOL.
+ */
+typedef sph_whirlpool_context sph_whirlpool1_context;
+
+#ifdef DOXYGEN_IGNORE
+/**
+ * Initialize a WHIRLPOOL-1 context. This function is identical to
+ * <code>sph_whirlpool_init()</code>.
+ *
+ * @param cc   the WHIRLPOOL context (pointer to a
+ *             <code>sph_whirlpool1_context</code>)
+ */
+void sph_whirlpool1_init(void *cc);
+#endif
+
+#ifndef DOXYGEN_IGNORE
+#define sph_whirlpool1_init sph_whirlpool_init
+#endif
+
+/**
+ * Process some data bytes. It is acceptable that <code>len</code> is zero
+ * (in which case this function does nothing). This function applies the
+ * WHIRLPOOL-1 algorithm.
+ *
+ * @param cc     the WHIRLPOOL context
+ * @param data   the input data
+ * @param len    the input data length (in bytes)
+ */
+void sph_whirlpool1(void *cc, const void *data, size_t len);
+
+/**
+ * Terminate the current WHIRLPOOL-1 computation and output the result into the
+ * provided buffer. The destination buffer must be wide enough to
+ * accomodate the result (64 bytes). The context is automatically
+ * reinitialized.
+ *
+ * @param cc    the WHIRLPOOL-1 context
+ * @param dst   the destination buffer
+ */
+void sph_whirlpool1_close(void *cc, void *dst);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/crypto/rx/Rx.cpp b/src/crypto/rx/Rx.cpp
index e1455dba7..dae49655e 100644
--- a/src/crypto/rx/Rx.cpp
+++ b/src/crypto/rx/Rx.cpp
@@ -91,6 +91,9 @@ bool xmrig::Rx::init(const T &seed, const RxConfig &config, const CpuConfig &cpu
     if ((f != Algorithm::RANDOM_X)
 #       ifdef XMRIG_ALGO_CN_HEAVY
         && (f != Algorithm::CN_HEAVY)
+#       endif
+#       ifdef XMRIG_ALGO_GHOSTRIDER
+        && (f != Algorithm::GHOSTRIDER)
 #       endif
         ) {
 #       ifdef XMRIG_FEATURE_MSR
@@ -112,6 +115,12 @@ bool xmrig::Rx::init(const T &seed, const RxConfig &config, const CpuConfig &cpu
     }
 #   endif
 
+#   ifdef XMRIG_ALGO_GHOSTRIDER
+    if (f == Algorithm::GHOSTRIDER) {
+        return true;
+    }
+#   endif
+
     randomx_set_scratchpad_prefetch_mode(config.scratchpadPrefetchMode());
     randomx_set_huge_pages_jit(cpu.isHugePagesJit());
     randomx_set_optimized_dataset_init(config.initDatasetAVX2());
diff --git a/src/net/Network.cpp b/src/net/Network.cpp
index 3bf5d76b9..5b743d5d6 100644
--- a/src/net/Network.cpp
+++ b/src/net/Network.cpp
@@ -282,8 +282,13 @@ void xmrig::Network::setJob(IClient *client, const Job &job, bool donate)
             snprintf(tx_buf, sizeof(tx_buf), " (%u tx)", num_transactions);
         }
 
-        LOG_INFO("%s " MAGENTA_BOLD("new job") " from " WHITE_BOLD("%s:%d%s") " diff " WHITE_BOLD("%" PRIu64 "%s") " algo " WHITE_BOLD("%s") " height " WHITE_BOLD("%" PRIu64) "%s",
-                 Tags::network(), client->pool().host().data(), client->pool().port(), zmq_buf, diff, scale, job.algorithm().name(), job.height(), tx_buf);
+        char height_buf[64] = {};
+        if (job.height() > 0) {
+            snprintf(height_buf, sizeof(height_buf), " height " WHITE_BOLD("%" PRIu64), job.height());
+        }
+
+        LOG_INFO("%s " MAGENTA_BOLD("new job") " from " WHITE_BOLD("%s:%d%s") " diff " WHITE_BOLD("%" PRIu64 "%s") " algo " WHITE_BOLD("%s") "%s%s",
+                 Tags::network(), client->pool().host().data(), client->pool().port(), zmq_buf, diff, scale, job.algorithm().name(), height_buf, tx_buf);
     }
 
     if (!donate && m_donate) {